gosa-core-2.7.4/0000755000175000017500000000000012372424235012043 5ustar mikemikegosa-core-2.7.4/AUTHORS0000644000175000017500000000433411436655162013124 0ustar mikemikeGOsa AUTHORS ============ This is the alphabetical list of all people that have contributed to the GOsa project, beeing code, translations, documentation and additional help. * Markus Amersdorfer Wiki setup, Testing, hints, proposals * Alessandro Amici Italian translation * Holger Burbach Kerberos PHP module * Craig Chang Fixes for magic_quotes_qpc * Guillaume Delecourt Setup fixes, nagios tab plugin, xls addons ldapmanager pptp connectivity option, phpscheduleit connectivity option * Dan Ellis Sieve lib is taken from him * Alejandro Escanero Blanco Fixes, improvements, translation, Guide and some extensions * Fabian Hickert Improvements for setup, various fixes and plugins * Eric Kilfoil ldap.inc is taken from him * Niels Klomp Dutch translation * Steve Moitozo Password checker * Benoit Mortier Butracking, QA, French translation * Igor Muratov Various fixes and speed enhancements * Michael Pasdziernik Documentation for GOsa and safe-mode, fixes * Cajus Pollmeier Virtually everyting which is GOsa related * Piotr Rybicki Polish translation * Henning Schmiedehausen Various fixes, support for user defined people/group base * Alfred Schrder German translation * Thomas Schler debuglib.inc is taken from him * Jan Wenzel Implementation and research for samba munged dial support, fixing of "Fiptehlers"(TM) in the german translations. * Leila El Hitori French online documentation English online documentation * Vincent Seynhaeve Xls export plugin * Wouter Verhelst accept-to-gettext code that helps for language conversation * pChart has been created by Jean-Damien POGOLOTTI Graph rendering classes pChart. http://www.sunyday.net gosa-core-2.7.4/html/0000755000175000017500000000000011752422547013014 5ustar mikemikegosa-core-2.7.4/html/robots.txt0000644000175000017500000000003211311373431015044 0ustar mikemikeUser-agent: * Disallow: / gosa-core-2.7.4/html/password.php0000644000175000017500000002545011442161313015360 0ustar mikemikeassign ("logo", image(get_template_path("images/logo.png"))); $smarty->assign ("date", date("l, dS F Y H:i:s O")); $smarty->display(get_template_path('password.tpl')); exit(); } /* Load required includes */ require_once "../include/php_setup.inc"; require_once "functions.inc"; if (!class_exists("log")) { require_once("class_log.inc"); } header("Content-type: text/html; charset=UTF-8"); session::start(); /* Destroy old session if exists. Else you will get your old session back, if you not logged out correctly. */ if (is_array(session::get_all()) && count(session::get_all())) { session::destroy(); session::start(); } /* Reset errors */ session::global_set('js', true); session::set('errors', ""); session::set('errorsAlreadyPosted', array()); session::set('LastError', ""); /* Check if CONFIG_FILE is accessible */ if (!is_readable(CONFIG_DIR."/".CONFIG_FILE)) { msg_dialog::display( _("Fatal error"), sprintf( _("GOsa configuration %s/%s is not readable. Aborted."), CONFIG_DIR, CONFIG_FILE ), FATAL_ERROR_DIALOG ); exit; } /* Parse configuration file */ $config= new config(CONFIG_DIR."/".CONFIG_FILE, $BASE_DIR); /* Generate server list */ $servers= array(); foreach ($config->data['LOCATIONS'] as $key => $ignored) { $servers[$key]= $key; } if (isset($_POST['server'])) { $directory= get_post('server'); }elseif (isset($_GET['directory'])) { $directory= $_GET['directory']; } else { $directory= $config->data['MAIN']['DEFAULT']; if (!isset($servers[$directory])) { $directory = key($servers); } } // Set location and reload the configRegistry - we've now access to the ldap. if(isset($servers[$directory])){ $config->set_current($directory); $config->check_and_reload(); $config->configRegistry->reload(TRUE); } session::global_set('plist', new pluglist($config, $ui)); session::global_set('debugLevel', $config->get_cfg_value("core","debugLevel")); if ($_SERVER["REQUEST_METHOD"] != "POST") { @DEBUG( DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, "config" ); } /* Set template compile directory */ $smarty->compile_dir= $config->get_cfg_value("core", "templateCompileDirectory"); /* Check for compile directory */ if (!(is_dir($smarty->compile_dir) && is_writable($smarty->compile_dir))) { msg_dialog::display( _("Configuration error"), sprintf( _("Compile directory %s is not accessible!"), bold($smarty->compile_dir) ), FATAL_ERROR_DIALOG ); exit; } /* Check for old files in compile directory */ clean_smarty_compile_dir($smarty->compile_dir); /* Language setup */ if ($config->get_cfg_value("core","language") == "") { $lang= get_browser_language(); } else { $lang= $config->get_cfg_value("core","language"); } $lang.=".UTF-8"; putenv("LANGUAGE="); putenv("LANG=$lang"); setlocale(LC_ALL, $lang); $GLOBALS['t_language']= $lang; $GLOBALS['t_gettext_message_dir'] = $BASE_DIR.'/locale/'; /* Set the text domain as 'messages' */ $domain = 'messages'; bindtextdomain($domain, LOCALE_DIR); textdomain($domain); $smarty->assign ("title","GOsa"); if (isset($_GET['directory']) && isset($servers[$_GET['directory']])) { $smarty->assign("show_directory_chooser", false); $directory= validate($_GET['directory']); } else { $smarty->assign("server_options", $servers); $smarty->assign("server_id", $directory); $smarty->assign("show_directory_chooser", true); } /* Set config to selected one */ $config->set_current($directory); session::global_set('config', $config); if ($_SERVER["REQUEST_METHOD"] != "POST") { @DEBUG( DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $lang, "Setting language to" ); } /* Check for SSL connection */ $ssl= ""; if (!isset($_SERVER['HTTPS']) || !stristr($_SERVER['HTTPS'], "on")) { if (empty($_SERVER['REQUEST_URI'])) { $ssl= "https://".$_SERVER['HTTP_HOST']. $_SERVER['PATH_INFO']; } else { $ssl= "https://".$_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']; } } /* If SSL is forced, just forward to the SSL enabled site */ if ($config->get_cfg_value("core","forceSSL") == 'true' && $ssl != '') { header("Location: $ssl"); exit; } /* Check for selected password method */ $method= $config->get_cfg_value("core","passwordDefaultHash"); if (isset($_GET['method'])) { $method= validate($_GET['method']); $tmp = new passwordMethod($config, "dummy"); $available = $tmp->get_available_methods(); if (!isset($available[$method])) { msg_dialog::display( _("Password method"), _("Error: Password method not available!"), FATAL_ERROR_DIALOG ); exit; } } /* Check for selected user... */ if (isset($_GET['uid']) && $_GET['uid'] != "") { $uid= validate($_GET['uid']); $smarty->assign('display_username', false); } elseif (isset($_POST['uid'])) { $uid= get_post('uid'); $smarty->assign('display_username', true); } else { $uid= ""; $smarty->assign('display_username', true); } $current_password= ""; $smarty->assign("changed", false); /* Got a formular answer, validate and try to log in */ if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['apply'])) { /* Destroy old sessions, they cause a successfull login to relog again ...*/ if (session::global_is_set('_LAST_PAGE_REQUEST')) { session::global_set('_LAST_PAGE_REQUEST', time()); } // Get posted values $current_password = get_post('current_password'); $new_password = get_post('new_password'); $repeated_password = get_post('new_password_repeated'); // Get configuration flags for further input checks. $check_differ = $config->get_cfg_value("core","passwordMinDiffer") != ""; $differ = $config->get_cfg_value("core","passwordMinDiffer"); $check_length = $config->get_cfg_value("core","passwordMinLength") != ""; $length = $config->get_cfg_value("core","passwordMinLength"); // Once an error has occured it is stored here. $message = array(); // Perform GOsa password policy checks if(!tests::is_uid($uid)) { $message[]= msgPool::invalid(_("Login")); }elseif(empty($current_password)){ $message[] = _("You need to specify your current password in order to proceed."); }elseif($new_password != $repeated_password){ $message[] = _("The passwords you've entered as 'New password' and 'Repeated new password' do not match."); }elseif($new_password == ""){ $message[] = _("The password you've entered as 'New password' is empty."); }elseif($check_differ && (substr($current_password, 0, $differ) == substr($new_password, 0, $differ))){ $message[] = _("The password used as new and current are too similar."); }elseif($check_length && (strlen($new_password) < $length)){ $message[] = _("The password used as new is to short."); }elseif(!passwordMethod::is_harmless($new_password)){ $message[] = _("The password contains possibly problematic Unicode characters!"); } // Connect as the given user and load its ACLs if(!count($message)){ $ui= ldap_login_user($uid, $current_password); if ($ui === NULL) { $message[]= _("Please check the username/password combination!"); } else { $tmp= new acl($config, NULL, $ui->dn); $ui->ocMapping= $tmp->ocMapping; $ui->loadACL(); $acls = $ui->get_permissions($ui->dn, "users/password"); if (!preg_match("/w/i", $acls)) { $message[]= _("You have no permissions to change your password!"); } } } // Call external check hook to validate the password change if(!count($message)){ $attrs = array(); $attrs['current_password'] = ($current_password); $attrs['new_password'] = ($new_password); $checkRes = password::callCheckHook($config,$ui->dn,$attrs); if(count($checkRes)){ $message[] = sprintf(_("Check-hook reported a problem: %s. Password change canceled!"),implode($checkRes)); } } // Display error messages if (count($message) != 0) { msg_dialog::displayChecks($message); } else // Try to change the password if(!change_password($ui->dn, $_POST['new_password'], FALSE, $method,get_post('current_password'),$msg)){ msg_dialog::displayChecks(array($msg)); } else { gosa_log("User/password has been changed"); $smarty->assign("changed", true); } } /* Parameter fill up */ $params= ""; foreach (array('uid', 'method', 'directory') as $index) { $params.= "&$index=".urlencode($$index); } $params= preg_replace('/^&/', '?', $params); $smarty->assign('params', $params); /* Fill template with required values */ $smarty->assign('date', gmdate("D, d M Y H:i:s")); $smarty->assign('uid', $uid); $smarty->assign('password_img', get_template_path('images/password.png')); /* Displasy SSL mode warning? */ if ($ssl != "" && $config->get_cfg_value("core","warnSSL") == 'true') { $smarty->assign( "ssl", ""._("Warning").": "._("Session will not be encrypted."). " ". _("Enter SSL session")."!" ); } else { $smarty->assign("ssl", ""); } /* show login screen */ $smarty->assign("JS", session::global_get('js')); $smarty->assign("PHPSESSID", session_id()); if (session::is_set('errors')) { $smarty->assign("errors", session::get('errors'));; } if ($error_collector != "") { $smarty->assign("php_errors", $error_collector.""); } else { $smarty->assign("php_errors", ""); } $smarty->assign("msg_dialogs", msg_dialog::get_dialogs()); displayPWchanger(); ?> // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: gosa-core-2.7.4/html/helpviewer.php0000644000175000017500000002344611424325206015676 0ustar mikemikeget_cfg_value("core","language"); if ($lang == ""){ $lang= get_browser_language(); } $lang.=".UTF-8"; putenv("LANGUAGE="); putenv("LANG=$lang"); setlocale(LC_ALL, $lang); $GLOBALS['t_language']= $lang; $GLOBALS['t_gettext_message_dir'] = $BASE_DIR.'/locale/'; $domain = 'messages'; bindtextdomain($domain, LOCALE_DIR); textdomain($domain); @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $lang, "Setting language to"); $smarty->compile_dir= $config->get_cfg_value("core","templateCompileDirectory"); $smarty->assign("title", "GOsa - "._("Help browser")); /* HELP management starts here ... */ /* Generate helpobject */ if(session::global_is_set('helpobject')){ $helpobject = session::global_get('helpobject'); }else{ $plist = session::global_get('plist'); $helpobject['lang'] = $lang; $helpobject['helpconf'] = array(); $helpobject['currentplug'] = ""; $helpobject['file'] = "index.html"; $helpobject['helpconf'] = $plist->gen_headlines(); } $lang = $lang[0].$lang[1]; $helpobject['lang'] = $lang; $defaultpage = "index.html"; // alternative file, shown on error, or on first call $prefix = "node"; // Prefix of the generated help files $suffix = ".html"; // Suffix of the generated helpfiles $maxresults = 10; // max number of results shown in result list $minwordlength = 3; // Word less than 3 chars will be dropped in search $allowed_chars_in_searchword = "'[^a-z0-9 %_-]'i"; // Remove all chars that would disturb our search like < or > ... /* Default pages */ $backward =$defaultpage; $index =$defaultpage; $forward ="node1.html"; $helpdir =""; /* Every class which is called within a tab, stores its name in the Session. * If session::global_is_set('current_class_for_help') is true, * get the helpfile specified in the xml file and display it. * Unset this Session entry, to avoid displaying it again. */ if(session::global_is_set('current_class_for_help')){ /* Create new XML parser with the path to the Xml file */ $xml = new parseXml("../doc/guide.xml"); /* Generate help array */ $str = $xml->parse(); /* __LANG__ is used as placeholder for the used language*/ $helpdir= @preg_replace("/__LANG__/i",$lang,$str[(session::global_get('current_class_for_help'))]['PATH']); /* If there is no entry in the xml file for this class, display an error message */ if($helpdir == ""){ $smarty->assign("help_contents","

"._("There is no help file specified for this class"))."

"; $header= "".$smarty->fetch(get_template_path('headers.tpl')); $display= ( $header.$smarty->fetch(get_template_path('help.tpl'))); echo $display; session::global_un_set('current_class_for_help'); exit(); } /* Save filename */ $helpobject['file']= $str[(session::global_get('current_class_for_help'))]['FILE']; /* Save path to the file */ $helpobject['currentplug'] = $helpdir; /* Avoid displaying the same help every time */ if(isset($_GET['pg'])){ session::global_un_set('current_class_for_help'); } }elseif(isset($_GET['plug'])){ /* This displays helpfiles depending on the current $_GET[plug] */ $ui= get_userinfo(); $tmp = new pluglist($config, $ui); $path = $tmp->get_path($_GET['plug']); $helpobject['currentplug'] = $path; $helpobject['file'] = "index.html"; $helpdir = "../doc/core/".$helpobject['lang']."/html/".preg_replace("/^.*\//i","",$helpobject['currentplug']); if(empty($helpobject['currentplug'])){ $helpdir= ""; } } /* this Post var is set if another page is requested */ if(isset($_GET['pg'])){ if(preg_match("/\//",$_GET['pg'])){ $arr = explode("/", $_GET['pg']); $helpobject['currentplug'] = "../doc/core/".$helpobject['lang']."/html/".$arr[0]; $helpdir = $helpobject['currentplug']; $helpobject['file']= $arr[1]; }else{ /* PG should contain a filename */ $helpobject['file'] = $_GET['pg']; /* If empty, force displaying the index */ if(empty($_GET['pg'])){ $helpobject['currentplug'] = ""; $helpobject['file'] = "index.html"; } /* Create new helpdir (The path where the requested page is located)*/ $helpdir = "../doc/core/".$helpobject['lang']."/html/".preg_replace("/^.*\//i","",$helpobject['currentplug']); /* If helpdir is empty, force index */ if(empty($helpobject['currentplug'])){ $helpdir= ""; } } } $helpdir.="/"; /* Save current settings */ session::global_set('helpobject',$helpobject); /* * Display management */ $files = array(); $f = opendir($helpdir); while($file = readdir($f)){ $files[$file]=$file; } /* Some replacements */ $backwardlink = " \""._("previous")."\" "; $forwardlink = " \""._("next")."\" "; $back = $for =""; if($helpobject['file'] == "index.html"){ $back = " "; $for = sprintf($forwardlink, $prefix."1".$suffix); }else{ $current = preg_replace("/^".$prefix."/","",$helpobject['file']); $current = preg_replace("/\.html$/","",$current); if(isset($files[$prefix.($current+1).$suffix])) { $for = sprintf($forwardlink, $prefix.($current+1).$suffix); } if(isset($files[$prefix.($current-1).$suffix])) { $back = sprintf($backwardlink, $prefix.($current-1).$suffix); } if(($current-1) == 0){ $back = sprintf($backwardlink, "index.html"); } } /* If there is no helpdir or file defined, display the index */ if(isset($_POST['search'])){ $helpdir = "../doc/core/".$helpobject['lang']."/html/"; /* read all available directories */ $index = readfiles($helpdir,$prefix,$suffix,false,false); $smarty->assign("help_contents",((searchlist($index,search($index,$_POST['search_string']),10)))); $header= "".$smarty->fetch(get_template_path('headers.tpl')); /* I don't know why, but we must use utf8_encode to avoid dispplay errors */ $display= ( $header.$smarty->fetch(get_template_path('help.tpl'))); echo $display; }elseif(((empty($helpdir)))||($helpdir=="/")){ /* Generate Index and display it */ $smarty->assign("help_contents",genIndex()); $header= "".$smarty->fetch(get_template_path('headers.tpl')); /* I don't know why, but we must use utf8_encode to avoid dispplay errors */ $display= utf8_encode( $header.$smarty->fetch(get_template_path('help.tpl'))); echo $display; }elseif((is_dir($helpdir))&&($fp = opendir($helpdir))){ /* Readfile gets the content of the requested file, * parse it, rework links images and so on */ $index = readfiles($helpdir,$prefix,$suffix,false,$helpobject['file']); $lastresults = session::global_get('lastresults'); /* if this page is result from a search, mark the search strings */ if(isset($_GET['mark'])){ $matches = $lastresults[preg_replace("/^.*\//i","",$helpobject['currentplug'])][$helpobject['file']]; $index[$helpobject['file']]['content'] = markup_page($index[$helpobject['file']]['content'],$matches); } /* Display the help contents */ $smarty->assign("help_contents",$index[$helpobject['file']]['content']); $header= "".$smarty->fetch(get_template_path('headers.tpl')); /* I don't know why, but we must use utf8_encode to avoid dispplay errors */ $smarty->assign("backward",$back); $smarty->assign("forward" ,$for); $display= utf8_encode( $header.$smarty->fetch(get_template_path('help.tpl'))); echo $display; }else{ /* There was a file requested which actually doesn't exists */ $smarty->assign("help_contents","

".sprintf(_("Help directory '%s' is not accessible, can't read any help files."),$helpdir))."


"; $header= "".$smarty->fetch(get_template_path('headers.tpl')); $display= ( $header.$smarty->fetch(get_template_path('help.tpl'))); echo $display; } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/html/plugins/0000755000175000017500000000000011752422547014475 5ustar mikemikegosa-core-2.7.4/html/plugins/propertyEditor/0000755000175000017500000000000011752422547017530 5ustar mikemikegosa-core-2.7.4/html/plugins/propertyEditor/images/0000755000175000017500000000000011752422547020775 5ustar mikemikegosa-core-2.7.4/html/plugins/propertyEditor/images/file.png0000644000175000017500000000212711370027602022411 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbe;_ L  VV|İ_o~002 cP95WG]\ϟ 2" &~.& )~m 䳀ˑ嬨c+&Xci +l*&ҕl @1kK112|pW32Y@L?疠/ -$x e@ ""),#k %bdצ㷿 _4dy%DExAWd`raz ׭xAS]D _ b *B "Pf  K=z;߿޼ ?2|AH \ z ~;3|@Le`ӗV}gs=Ý4А <@WAEVAAEǛ_&b~ƛ>ū@@?w?89X$E9dxT% @/VGO>3 r2<}_@W}AA}).+  3#'Ý$>o8, @,j $ OGNM^>v``22|ș /dx× Wog FC tTtěfax o1po[~ܺv?- F&M/`?C~E'3 ~39痟6wL`%JgXؙT4EsEݓm d}L; KK|UjIENDB`gosa-core-2.7.4/html/plugins/propertyEditor/images/ldap.png0000644000175000017500000000147311370027602022415 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbd@<( @ߡ@78 @202} 302d3300g`d28 O Zp@L 5jg`baPs#ji6l Ff@ v@w~_h0/+r"@vG6 a@88A^:_P o%u@А@I!dhc$P9@Eu@ ̠a<4فx80]Űa( 6q5@o&FfV  *:Ȗ`ϸ( R@LИ(Já ,@1Nff0SO@. 47 x (O 5|@C>#x%P5@! XB?o&O !@ @I]`@*b`+O:XYZrrJt PP Z[d*4I? | J< i&g͜@EM@/@m( x#@`I\7.@C6X~| { G ]2R_?gl` d٬Ă'! I 0ʿ8 $ΥDIENDB`gosa-core-2.7.4/html/plugins/propertyEditor/images/plugin.png0000644000175000017500000001014711370005614022770 0ustar mikemikePNG  IHDR00WsRGB pHYspMBtIME 3bKGDIDATxYTUWFLę(XNNgbwQ;R, "P, bE#"`K,`cr|aL|ǷYkZ:s>gg1l0#___ŋt!ϟߓDI9{lyƿ, ZAAA[ ޽{=̞=woT?Wϯ3<|?sy)fΜhܸQ=j以߽{:::vժUxQ5DEE]6+VPW466~{֭껯 ~߾}5Flݑ#GGO?V;wWK6ӍL YfMJII9u%Ǐq*nݺV5o 7ܺu~| b~%sNR&#l'Æ ioܸƔ)S̋1 J9~xerrr );wL6`fG-gg}6|}}@%]7w!/?!W̬߃:uj'g`#͗gΜ 7n͛7]$ y" Z޻o/bbQ~\~#Dضm+]{BC1pcܸq *++\~BD#h5vO~/j")v=pY{xH8_S$}ɩKBii)`|2***~E#55IIIHJNDJZ"ғPR^$4J!b}Pܻ' ` iDdžm ,YD/"HhDŋQ2ҋeR8ؔ;opJ\zU3k>V\yQ ߢ"(y7k׮NJ rӧOĉ^II 0>\\THHbpVҪWudbLnL!!VPSՆa?ˮF~_`jZB͊FE2}FFE(|&6%W \"-ŵ*u._lHLJwW=7LL"G'%'󎟇pꭟڥӭXiPpB5ťXJ* yy()$QD:(G^~ROơK#!16ǘ.$QƘt˗/5y=[/%#X \JY~}&4w2mrrrdG R."l*l늝\-v+2P'|D!9:} q1YҏH\ lME/D3SHPǡC> ^|LUv7osm۶5۷owfn"@ff&3 犑G`X\(ۍQV]E$ΕaS"mƋL_B3̏k 8S8i #mun\s8TZl! uIY[+ n_$.Ƅ ׬YTlذG\H %i$H ؆AV b[`Vq lb Ǡ'Ffۡß: LFZ1()1 Z=}2F t577sСgǎ Ҋ''5Vj.5GL G2%Ʈ{E qc46n cn0 ^ WWR–u˘:hG7ډȋ{/̑DS4%.(yVisBJn88Nƴع`.xUDűKCt|$bcXl\ Kڵ+:w鬂֤Js%Ok*7ns?w 83dU"qq:G |8gF~j$oև55HiAZF +k+L4=] #F Qu+HzR壣꾲ҧ \ jhll8ϛCG8rw#F ce3Հ Z^ 6=|pGc) ZmDa#†dna)Z~ }=a3ZD'",!ܸ;j%{ǁԺ#Џ95$@wQ}||h"}n.ʵXxDFFCt%!` xA.LbqҤIA,јf}J7o;vӯ[2Θ̌4WY\PZR X)ԪXE=Ǝ3fOuBkHD,ykt!8pUQn߱`ffk0nf;(wdLx, $)W|^2>}hنtܰj:iliolٲWG땺 [&0y$|7; b9Vr?U&Ld޽W wvvImh${4z#hA.~aCeνMn sЕؤX!`Rxq]vj|Q.C)),,&nʿ`=[o50hZ(#cu!w3eъܒA)b 2zlG!+Y*z8D߷' ,SJƥ?x{ . A)e9@Z _{qLŜww2f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/html/plugins/users/images/list_password.png0000644000175000017500000000126511042015645022477 0ustar mikemikePNG  IHDRagAMA7lIDATxAHSqǿmo:ޞ{\c)<]ޡ( (v6A%!V/^6kn鞋|ӗ'Т`8~ZV]55M[^^~);\g<\X,?::B@4}y xF?0#OlfV{{^7a  wE9o&)-,, Zx<. :I(|p8X[[KD"~V:66v$ N'rBPnέ`4; 0 z{{A4@Ql6dY>RU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]Vjw?Ҋԇ2J "l1p.̟nbL9.4}@]2M@0dlOU}öL@( F`G|}>#K-)p+ªY%RoaJ1W*`,0bR4w`ee fJK r}Z*JTYC k9hXIENDB`gosa-core-2.7.4/html/plugins/users/images/wizard.png0000644000175000017500000000107311042041367021077 0ustar mikemikePNG  IHDRasBIT|dtEXtSoftwarewww.inkscape.org<IDAT8?hA?uiX%RAA'ũqBJ@!:' *u1"JR)ͤSZC7p;޽{D==b8?nɃWctT }W}l(P}sYVQ*d_{[p4wP둫ױi.{?0ԓ5`AM#$a]b{M{1gV$dK2hPTVu8%џw tfpecFF1h=/Yvx?/+"_LGώE"y ڴ@=p8<`-R߿/ c6 q5&B,l@6*J]Phnځ$^x<صܡf_ x t, N iorIENDB`gosa-core-2.7.4/html/plugins/users/images/default.jpg0000644000175000017500000000470611041606710021223 0ustar mikemikeJFIFHHCreated with The GIMPC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222";!1V"7AQuaq#2RbBDr ?;.˵j[z\2I%Nsܱ5UUU5LC,N-JP? `| `|? `| `|? `| `|? `| `|? `| `|? `| `|? `| `|? `| `|mkҩ}TJ0 bwymzU/Ҁ;*i@N-JP'wץRM(6TJ~_izHs~ʦ")FO$r+ՌWET?qLɠd^ÚE_#ǖ#TcE1|E<-EOW&Ϧ@ҢZ*)VDW.ܕQW/#_Y;kgki2XG$xJ_FUkbȏV}\)#d.lzf7WBڨ`5XTVyZW8M4q Z拽>Gc2btyj%{Y2VŸǢw#6\үcUաVUn#Uw*mfp?}4X*J5w(H?<Ɍɣ 1*m)?5zu}kZ9Iv^ Z%lrQ3I5*f?O竩M7g o؝[^K4'N-JP!J$tRG,w|JX￁r@t FIQIV2|*f'%*ȮkZ潨LݒT8V¡å{WUSffTc.3`jQ\צye6 ^L"5舺^K8Q͇4U 51۴TΆ'7fECu5_#$beO0te972F}8ԏsj5vC߱;*i@O؝[^K4'wץRM( kҩ}`~_i?bwymzU/Ҁ awKb. a̒9+k䉨fGyv|kݟx1kݟx1g^ag^aWzWzv|v|kݟx1kݟx1g^ag^aWzWzv|v|?gosa-core-2.7.4/html/plugins/users/images/user.png0000644000175000017500000000455011362006411020554 0ustar mikemikePNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org<IDATxZ]]UokEZKjLI/h4E“`;J|0D,F DE0$QkV uҙ)3sw=:H@ˌw\wڧZ{=Ì16~4{neq3<|9t6?M#'mu_ƋRs?i(}a=&}6{ێ{ڝI`#(K%A  IլQ4rŮC ?8$<$q8G Ԏ%@6K>E, R)L:p 8*^Iig^fS}xo]G|FZ6ZQ!K\_8|"HD܉TŊ`6wM@;ϡ6Џ}7bN;_FREĕa\Ą@ȡ.\}[w Dp]0i8DןVJE81L:\/@Ż;ٕ (G!$x ԑb5lJt-̠"fø0KQghS#67Ե]QZ愭euN or NTW~`?:S}UK2'.V;?`/ٰ+$޳aFV V6IX輍>6:N )9qQ2yg-~h|J&o2'&#_;B.@f2K<Oumk5ME hK8 ũW`Hж/'/il|tOŝ%.g\ & dfvsv8TbAvǀNrm 4 Qikva/E!B!'Id2ytռ+,ai-T#V !8d'Re;0n9Dڎ@:VDBDbb~puՑIaYZotTmaYNd9x΁S1_Yd9 ~' E qn`_B Oɒ'pjsV,4aEL8M,p=S+Ueκ,iN.|('CkCWѿ&N쯆` ]c Ί`}>G^Nd~mR  :dv,}cv\;<(>8uz*IV)c.N 4;~H"2a`r}3p7no AHGbJ \d7 =L~RQk%J¬Vd@<;} g`jB)F} !(RIv4S#Gf~yamXJVzEb e8;׸W۷o'&f_hHץKXT6xEK`ן+ySL=.4>޿ }ˆiR̓-&zzJclOqNEf$DX{Q 'qڵk=oV+*(|8]Y^xy~⬭}Y:S@\ ^X^^2a"<<h|JucѸ~wccFYH)QJJ<Pַ?yZ?0AO }FÔa2L =zݔVK;$I{eee!I8&5os5 O'Gєxï *EQda~gKw-`c}3⽆4osKweYҚ0#5eY9BH9;Th+(Z#,'(Za! }JkvVc ZYӪƘ+5ƘAcDQhcRR@V}/.BW>RJ<ϋn{>;;f-Ӕ`~?PoV8pΡ4r||L$ςv4w=s,c'b| 4#=2c(˒_i8澨z8?~*ty~\qůTi9j2 C0R\ 9GV#"Ӹwd2) ^K/b{IENDB`gosa-core-2.7.4/html/plugins/users/images/select_template.png0000644000175000017500000000100011042034367022741 0ustar mikemikePNG  IHDRabKGD pHYs  tIME+IDAT8˝jTQsF$I'2wP, | *A` ̝sI8Y7{\fNf2i|&K4wQosWw0-L'V ];@ 2B]rΘp60!=J)*ç/#ek C1wcx*#-BpV)59Y%eEEZX "U@ {߲"jʰD Mc@Dz|"P.AE`-Xk n}!FC z+]l0|CGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/html/plugins/groups/0000755000175000017500000000000011752422547016014 5ustar mikemikegosa-core-2.7.4/html/plugins/groups/images/0000755000175000017500000000000011752422547017261 5ustar mikemikegosa-core-2.7.4/html/plugins/groups/images/mail.png0000644000175000017500000000117311002122253020666 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8(IDAT8œAKTQ׹yXf-f˚SF#J ČV>F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/html/plugins/groups/images/samba.png0000644000175000017500000000124311002121753021031 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME &(2*0IDATx=Lq]+M TzmTbR`(!!02982888Hd1܌F ba)QN g%'%(GG-*s څ˳cn&8K+1%6(*+Pzd߾8_yߧ G}dX,L=\Ja2RZ!nu_?(z+b4[O ԿouJ]q:1e– |'hw=`v)#24LaT\A2e ?T:ُVJA*]C8M;C޸vhxUάlHf vwi湔!w!atNs7/Ab:V H@!ݼIsQOdw` Z,ּDQ[¾p3xZg= $cj!]L~UM4wynL 0?Fh&VP|6_t&)[9Y.:{7:?=e aOIENDB`gosa-core-2.7.4/html/plugins/groups/images/new.png0000644000175000017500000000161711002120005020531 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 S'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/html/plugins/groups/images/environment.png0000644000175000017500000000133511002121753022314 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/html/plugins/groups/images/plugin.png0000644000175000017500000000621011362006411021245 0ustar mikemikePNG  IHDR00WbKGD pHYs^tIMEB IDATxXy]U9w{K/tmnI6P  gAQ#UTUhUZ0Sj(0L,DEB NNzKo{_{ۗRs}緝88 DI7b%}x50GQ4ұܓx 8#'R3A;DN<Q~HFH倂 :.EDW ,9K{z!֛|?ze'T:& R)N~fnY8 雷W(saϲpUdUl3YsLaal~P{9`Kp#ɠi^+Z淋T:.Y ~qٻ 4AzifMA>. ^ B Q۰d&X@J i 7ZCf?C "K_X 3m-tbB8W $]MMgA8.Nő& 15C\B䦧1qb)p!*z뷥[UtwBRA0YH%dbn Uwc97jT<01~4bǎ-I]`f&?pͺ2` j UcIH뮹?w^/<ϳV^U0&Pw~Hd!ހ~Gvw} $X)) IMssl6Sqt !%r#sAW2|-Hi8d+3kL\<+$D\*w3R0 Ӡ~(Y 3.V0Mn]ݝ-#PTd Ss5!Rp\w'^^:AģC17 Lnc>[BԂT!#I!Cx N@89bChfGq N$Q])XdlHЕ"O?Ӄs9҈'&XoF0k _WY3"?]N|%'Nږ/1-&߅{k Dః;G`!WV N UqBy7ضm[C&Ybhm !Ƞɳݗ4%kOMM"M9;diGW\{cגN{%`L8ʢCUid*ޫ`t'/%Jȉ{{לƶ('[:o޼yb'A!L|4Ӕ Qsa[}tx?VR,}LI/LC&@[B*+է0>'e޲(7WJ,mo/u#cEqEI0sO#=VBjW-X|Z8:r=ıơgw✋T&2RuQOgLś6nJm|R7pxC[ )  9I8xÌ_|h S Q(,Ka:3Ɇ176-KCS 孁؃YF61[Ɔ1·"  g}qSK رc ݥvcJʏ9J^$ہX @_aZ*EG2FŰذ|%!cƔJ8W`tl=g[=$AF.X1v{ndVJ@ 1504P[KyYk mՌ8]>Zkm`,=F3 P0JF_ ω8* ktˇrGM=:^^[?p <+ qs1XCۄ}iҏ!@Pl(q4Љ~;3:esS6ll&èK@scLJ'~784+oT}PSp睄L/V X²t_xN7%e5!E8D=J+):f)^R9~'pd ͛q 6CмH"+􏈴惘TVD"k!ǒX~tD^K8+)}IENDB`gosa-core-2.7.4/html/plugins/groups/images/menu.png0000644000175000017500000000167711002121753020725 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/html/plugins/groups/images/select_group.png0000644000175000017500000000154411347630613022461 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EIg k^;@/ZԪ~̲^"[ ;~6Eo"J^4IENDB`gosa-core-2.7.4/html/plugins/generic/0000755000175000017500000000000011752422547016111 5ustar mikemikegosa-core-2.7.4/html/plugins/generic/images/0000755000175000017500000000000011752422547017356 5ustar mikemikegosa-core-2.7.4/html/plugins/generic/images/head.png0000644000175000017500000000136111001315337020747 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUew3w<4 ^@ʉ93qT Uwv}/|.?Zg >%x]l~%T*7/ԉ' Iwe"R ጲe gGo >#1|@UPw;wg-]ZiX\\l>~U>Sݳ'b8졬8z*`k쎌-ay~hmڿ F =mBȥtrYOo0=ƽ;2hZ"(๮ r תX"@6*؝XZ PE i8(oaQڀ{Lg]éoܨ|vq&v1`2uñh!TUnU] l]ZZ[onqVo±"\:Y]G`h* dja g#jMAo+[iT Q eГY} +U >Zo]zm*^b@ Slt&tb>G~d*Ke'bX۴oR HAď؆+캦P? dngpqaSAWdS4?S!jX]Y ?s'Tk6 |tGfD^!"P /b?}߅]>90! 1& <Ëgt`Y&324&#*& |W30q?<Ň Y$R'*t@VuwN7!M+W&G%pJ wNM()qy3 !{cد6ڸXFRM⡐K@"7:PBNJ]ࡏ@h@Z I.f&wҪ;Wu oi @(ӝt k nX,A5,d71?@6czd:ù,(;6 >$1qg%xֹYQ7$ 5bץˉ$-^w{ _p}I: t:%`!\A@#2  H$$GTLyݨ~,B?5k1| ld>w>L#SN`;`jn,;GF]֪o-K16>j0V*e9٫t^KlVVVEsg!p%Ij?뜩4g_΀n./EnQɚ<}Yy@B/ÃNŃ͠$ېB#c!^4<% PTW TCjzkQ7*td_SHqlmm9 r'|! MW*Ҧ*}* ήIl:r>o˗"}L Qn|p 68#Wު4o&qxBy9?vC%m"r4rNF7 ε6ȵ 3*鋀B &@$ $mĬåb%%eF-,AY^j g> ,i KF\0H];z'b)XBibh(q&#՜ Ki0=n [A,B*}=WAF!u%R˴ / & 7- 횬v[" gL av<86 @3H۶IqE|ȇ${_xzmmmq3 "nH#CEܩ7 s7J\=7Q:k\( B& L+ɢ+o}_uJ QRIOwrrw46F[ <>+g}TpQi?'YNgj.0ScOx[9-cGPσ(?~_mڋ/sk4m `cGy`|O~/76jfTʝA u7rzz-P([2X=u8FxW Cş=>:v>:u-:81Ck=H'#q%`zB=q_=}W_җxT*5r'G?i4ĕd#E'-Lvįs$^8_!>c ?'x~x 'V ՐMw5)w'bqcl-D/ςj ~L&}_>ICҬ8^ |gLo)K_hW UV>:AIENDB`gosa-core-2.7.4/html/plugins/generic/images/house.png0000644000175000017500000000131111002123015021153 0ustar mikemikePNG  IHDRagAMA7IDATxOHTQ9oftxhcZ´MaI`.QF(*jD\D5AEAEd"mtt|#M?;-rj6s=/:O{{z|iGZ)SrE p&-v̞b,%3~%в֯eC\hqWQH$ vMp vU小'up$Aaz}~VzJíCICt-{b7 a՗d7dGecy=/&$P($sss,@@drW|Kl;Nx!08mcDq +@!谉$I,"e-1EM+FtXJA“Gڲt]GDQe9AWW$^\&/*#a&~?4AW~5/45IENDB`gosa-core-2.7.4/html/plugins/welcome/0000755000175000017500000000000011752422547016130 5ustar mikemikegosa-core-2.7.4/html/plugins/welcome/images/0000755000175000017500000000000011752422547017375 5ustar mikemikegosa-core-2.7.4/html/plugins/welcome/images/home.png0000644000175000017500000000046511412374067021034 0ustar mikemikePNG  IHDR'sRGBbKGD pHYs  tIME15MIDAT8˭10 E :t)HlAb9])LRe'c%|Qb 4V/3z0u~{sثC^@+[y&+j MNF'}?H. 7nF56U& `V!IENDB`gosa-core-2.7.4/html/plugins/posix/0000755000175000017500000000000011752422547015637 5ustar mikemikegosa-core-2.7.4/html/plugins/posix/images/0000755000175000017500000000000011752422547017104 5ustar mikemikegosa-core-2.7.4/html/plugins/posix/images/members.png0000644000175000017500000000154411131316721021233 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^E$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `|:bE!įe(]v-[Kohmm0$DcA)V 2> Rg_W(BNOo/#9;;=V* m{ĉ$aÆ ._wajj|>(fhhصk9ʕ+B?=|l[|7om;<<̹s7 ya}Y45y(CR뮻vhMh{1[i~pp\cWNRGƒ%hZsǝwR*pu%e嚫aEkCP xߕW+djj$!9ҵޒB׬^n[JI ":I( cR5 qDu[k~7B(ڀ$Nc!~=Bg@ŧon~ov B$q&u"NbqZgq?ƙ9Lwb 80P,#AkMRazzog8 RgnnJµ^Gے6ٯ.M5"!!!^Yh!w|ypb'0N emiu8!6m#c&''z(==bqRv.޼},6#Ȭ-Qi,0h=$IS;044mۆ*Z.|+]Ind,ֺtLkf&sDǡⷩ߇3tukRTyͬCے%[n}7K.ܸq׬7=S:u =q)B8i6s{fR&-Lq,M|j݁PE15QSٲ2^;r{rɫꪫ+9:::YR^Q,c ð\.#lYJyr>9?{y y$cfggQZ܌LXe8( k-?ݻ?) "Jcssspέj7ϧL'k,Z oFOPJQ*16Sэ5Ӛɣs"pП<ιI૞8HI5 fBJ;oJpx$IZJEggWc\.$IКgι.!p:!mYĹa3MP:$I+V6dBz54jT+լtH뙺]&|]peVZD?-hhC5:$:!N(&NIr, tJѬV7YRl#cPY!WzgydO(>ND76ivgq&58X,0FyJY!H TϴYrN'l4gJy[BI iɬ` &*ҩi)T)co ^TJ{SSSLչ)-PFK0f QZgQ)2' toaLJfǚi&+ZEy2pp䉆16v'|~Qff+XPŇ~2V1)IVtRUiie'u !|56?%뎱/Rh{l abb# ʟ >`_𱏽Ξ1|;}Ǡq4Cqa!aa5 €0 Q@?!߼رe>vEힵ־rܿBlV/! W% d(=B/0!pAx_ B@ $ kĵtKϺ@5\N-Xkmѷ[Peע->TÛ^qp h bp5PKx_5CNJU|@1NKt7{=`+ JrWS=fb1lN2=+k"2sb$us "r)Z2MYŏue)J,$]D`t`]S{|?.¼/RB{UŲ[SZ 4̓6VRjb. jaJgG(3/u z*-\0XB)5bJOLF' nYDNB6&6eh+w/> F#,WYݦHƀ2dk`,ħZV$@0'2" )N5)Gmw^M3ؿ׫p4e%t M_+Zj.k;UT $UH:0t#S/-B B_!XT.'aDJSo#42ο"lFB{˳uPRo)ה͖e֩Vr$5/>_jʒT@zx O_lWgda|I#/;:VR?;r;2:jJYk-{?w(/=B>o_}׶|u9:o9/9unbOX#+;yQ˄˲PR]xA?v9bbhlGWϾCG'^r3fUI%RimȺmB*奤$h5+6LUt2ZsdlfdtR*@U(N]-.'sM+gkB*BԄsRjZYkV;44ޒBǏ$I\^J,M"nRr%VJp0~G2uHq9'@t/]SROxNV!B 󍓥ɦ"7לj:W pB$I\WW)dt+\U q~w ՞ r%]< @ĂB bk5E4K|,Ჳ)qؚNjl-&:)K|׶=pM[s)Z_S8Q,@R(HC(RLOϛ9K8'31 OkB$S"2HѱA b0B!Z.si$DRxy$(!i% <=-"se j!lӰiLsBEtXܴEN;V&|?K"[j)_;d#&A ~ SԢQ#ZN@Qqy(5d"{8qmJG|lQg?};pIENDB`gosa-core-2.7.4/html/plugins/password/0000755000175000017500000000000011752422547016337 5ustar mikemikegosa-core-2.7.4/html/plugins/password/images/0000755000175000017500000000000011752422547017604 5ustar mikemikegosa-core-2.7.4/html/plugins/password/images/plugin.png0000644000175000017500000000636411035060224021601 0ustar mikemikePNG  IHDR00WgAMA7 IDATxZ{l[U߉c'N&4!%I4:TΪBVHZXUbhW V,J)1,mC m]6:IS7vc;~_?an2+_|;w)?{z/+++dX8#tZYXXv?|n Y\P+mڴ驶_vttU__bYth<ED?xM`v8q055E~9X܏h4ѩ)o***~o^ Y ̧~J^/ٽ{m iZKggClN*|7Bp}вZ7Zl \'<99y%p+++7ηp[ Xj5Dǽ«](JdYFh_/l6 V jE#@eU۹033s- eDQp;: 3s3nK(\zlKKή6r;r6UY0;; ߏD"ՊbX,=}l0bI~X,֭[a4f QA4!p:jx<;v"f3 "N' hF9q]qƟKEQ $IlF8F<""XEKK F#Rnܸ T EidYPF; k"@SeeaC)B.C>(`Y:V|l,aiȲ Iqb!y,+WC(Å8X!K|_Qyr9($9˲KsX]}x2 h+W$ %dP(HEQ0\.R @e $Lh4l6JKQL&\.BZ j,_^YKg"lou dYp8d2 a0 (»;:99y 9PV~(ķ|>EQٌxMe2\*X MMMz8vcXmL,~_T*ݻ( x,cf80K@`hhs=Nk\SQW_ut)f2, e199GE~K)`0kϟ?pM)K岱,QUUU5Mr(*144PVd2sy|| Cף6l `=wvc{d`r|hfffb9pȑ#oZjVwttfvD"0)vu[odzik]],0͘&Y0 v ! ͂0??2Bهxƍqa"(P(@R!Jh4[7C1Fb)PTKlJ9O|b4j<'b),AlH/uzzz!L/]"! v8NH$.7?~ǝ<(s%t…wDW#sydYgff8rJ%2̬,LKK.QAQÇ]|;Aw^z)rN[uXyQI('BcIENDB`gosa-core-2.7.4/html/plugins/statistics/0000755000175000017500000000000011752422547016667 5ustar mikemikegosa-core-2.7.4/html/plugins/statistics/getGraph.php0000644000175000017500000000135711430727621021141 0ustar mikemike gosa-core-2.7.4/html/plugins/statistics/images/0000755000175000017500000000000011752422547020134 5ustar mikemikegosa-core-2.7.4/html/plugins/statistics/images/statistics.png0000644000175000017500000000042611426477024023034 0ustar mikemikePNG  IHDR'sRGBbKGD pHYs  tIME ,fIDAT8ӿ @"a֖N%\!L8` !4BǽowLQ ., wF!} Pe6 s)o>Ig k^;@/ZԪ~̲^"[ ;~6Eo"J^4IENDB`gosa-core-2.7.4/html/plugins/bugsubmitter/0000755000175000017500000000000011752422547017211 5ustar mikemikegosa-core-2.7.4/html/plugins/bugsubmitter/images/0000755000175000017500000000000011752422547020456 5ustar mikemikegosa-core-2.7.4/html/plugins/bugsubmitter/images/bugsubmitter.png0000644000175000017500000001004711042051706023665 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y#1~ofpq!ɓ^?"ogxǁ +nF18@_.ߟĐ13=@xcEV{ @/Tp? '`'/PΠ  _?`(2gXibA|X ɰ `P8ĞPE6   xEf9 T'h \ +dg'^l/IJ@ H}d` ,qyP0u> xa" /0Bbe CO @Ē@,7"íG +0$ưC!75=@ppU@tq|I`'!#4s9`Ѓ w2ibH <@HG@[1+@|GdbV' #t @!X1L1 DEj #qx AC9Č@3~b`}bhC p)a0C,a|5fsn.I1`g:A)ģeѷ ?^|dE Xc0,op 2h= P ԥ [w0Xu&4'1So9,^|ߜ_}Z@1,UPBt,, ay]ޟ'OPRzTB31ЬL-9:1F ~%1}`z9Y 2bf)#oQ/T M(!@11D1F0h2/ch BM4S0#޻ό҅#̑b`V̐-,6v^`a3 7>3? F@ fhX~[ | 8dy;6Eh`.uG[2|Wb~#C>`!,DYiBV x9ؙ~A#}>6~}˫W(<#ZN oߟxs2U %C.UL,BC-TZ|@|ZWY `i ?{ǷI1v6f`e?~exlw+2<5bkVx`ڶ:J3A;'(N@;P31<0$jh\zjD$+?;fa+&ܝ@K ^c}vfhs!k[/"úWݥ(^<ݾ< yAIAʟ@10z"\>q`H}6?ll NhHb@lژY%v@?(vh{4b[o^ld& f65`EЃW pz^  ?iesex%A;VN`ee X< ȃ<4L_B=L w5 ȭϿ)B",@G-HG /tW1|dga8`%>O?0\va+yPA-Pi4ݼмˆAGK`,aUdxZ^akܞ?NIC5kWz~xgn W? b]]B~mNbd/m?![_ A ń&+[2`Xn?G9?I~"]q/?GPa%,Ĩ)/GV`=wa>ⓦjRK m0J3s׵ \m?߶6l\&Ŀm}z=h @^&(& w^0|zS=~rk~\Ytx{X ڂ?X&2V<>2gb~=|˥io.-`^|-w6e#gCaL~{12 ū5Ќ J_{B~ƌG8Fn7ЀxZ(A MhJx *J^d2oض=G)?O8~|~~YX]]ݹ#JJm"Z- C1}yG+++wY>|~~5F 0PJR !Bq"f...~l۾a&(J)(`!H@!(B*RJL8X^^F@`0@A`A)8FE6E<|LӜme<B0== 4{1f/c0qlbbކiqBGYo[7v\EZkA BvaZR q`Y.Q_G?L&1155e0(}UJAJ krP;a nyLBֺt"L"c>d(@ߊP kr<;? 50yɘaQfgg1 ΐIރ+]@CO:)EP\.˲8~ǝ;p#{"gA dDW+zUnmm5딅#bq(6xV_X5{W?w/ f3sss\. |s7;%N8ýNwW?ڵ9N}yх0M?PQҸKC9IENDB`gosa-core-2.7.4/html/plugins/departments/images/department_alias.png0000644000175000017500000000071711024414256024305 0ustar mikemikePNG  IHDR&N:sBIT|dtEXtSoftwarewww.inkscape.org<aIDAT(mϋQ6%!)cG1KX(,d%XNl(;+KV6lc1=ssVqd'i7)\SvbxZU`ulk=jp3hXUE\!ɾ$J2T]/Ml"vij.apgڝ ީwURU} >pG6Q;ػz Ȁ/l$ZGJ9>kI槈UKxi,4= I<`ÿ@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/html/plugins/departments/images/locality.png0000644000175000017500000000071111362006411022576 0ustar mikemikePNG  IHDR(-SsBITO pHYs B(xtEXtSoftwarewww.inkscape.org<PLTEAIBDۆBAABDFHJLOQSUiouꂱ틶펺}L tRNS "=@ IDATJBa)W.3QjP+sf5x [?oTQ_4ST|,CmNr-I'M$ ѢI:̈́tN Ɯ$dVIENDB`gosa-core-2.7.4/html/plugins/departments/images/dc.png0000644000175000017500000000075311362006411021352 0ustar mikemikePNG  IHDRasBIT|d pHYs:tEXtSoftwarewww.inkscape.org<hIDATxڕK@_.3BB/uRE vJłi]r9D*^! &MUEcRt*l,Ou,3 (u=K9He Bk> ϡ҈YQ@5( ("bFRv@8%T 8V}d1P[@mA!eaBd,IQaeE}wpAۅZX Hia û] hW3Fg}Uq|4≠hA'Gw}>nퟯ0cJwﷷ+u:r}<?$)mVQ;z{=28NԞX |>r;'i(9a.% LMM%ܩg`uu!;@Lws 'N;~qr@x."˗K'sD>'#={) 3=ka;6>$kɼ}2CR"x%tLtGV 5*eYH37iXn'9 #O1ܲnvmwUQOyjeG2 ,Jz.8pR_@XOۦfxKYJhxQ\Pfa06j?oGrZԮB2w hP9;!C 2d\IENDB`gosa-core-2.7.4/html/plugins/departments/images/department.png0000644000175000017500000000060211362006411023120 0ustar mikemikePNG  IHDR(-SsBITO pHYs B(xtEXtSoftwarewww.inkscape.org<xPLTEfy{ob画VIg7z>h2w3wfpuz1WtRNS<|R^IDATxڅG@@YJ!A_J)?'&rGg$'9EIAU*h xBFمq`mhI . 0IENDB`gosa-core-2.7.4/html/plugins/departments/images/plugin.png0000644000175000017500000000215411362006411022257 0ustar mikemikePNG  IHDR00WsRGBbKGD pHYs a aJ%tIME9/.pIDATxOUgj/ r_\ q0E"AjծEpV>( "ZBM{ޙ9s}͛.,~90`w*㿾[)n?{xvA'W8chl^GB'"JŦ[wU8v{/E,Z^|Gb9zW)0ΑVY(T|U,o5pTO U<:K tr=MksdG@e.Eȭ:,Ā øk5LmS"XR6 ,)] F"]N8 evo3O;{)^|fytjb'6o @ +EZGtjg3LNF4:șHrP} 4\ Z٪ ]=f良 zЎӏoC^SQECe&1gAfNMY].{zC[&>j3܍nOn}&YFBf`rә J$yyLO_4?Ɗ8 \<6tlJ q?Y0yF$8EiV!Op 8Nyx۔ng$v mԲGLeW`tS{ZJvfGM"|HTb R]{MO Hj[O@>xl= ]|K^`k#p`P$"[ImUPt .' C(_,$sHh|#a PoQeEft-M ,b5 ySۅt.un.@'Ț zIdQuL7.*.Tjs*vfԆ!z)Zl! 0`>YWuIENDB`gosa-core-2.7.4/html/plugins/departments/images/domain.png0000644000175000017500000000717311261120743022241 0ustar mikemikePNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATxDoLesܵ뵽?+€ uW8s^ i3 3M% AʐRZ^{G{/Z!2k #.Kd+?9YߩK;᫗0̺ 8 D=udd@l>44ΌO/(@ YH)o 5([Y sP#bAwW8z1w fW څV٫j*\zAF7@檎_%Qxs?L3V೫WlFi7+(xØ_7oX,#(2, :R<{ogpgOO.|-<' WX aFYAd6ԟصReۼM# f8Bx?M .^IX܏Dʐ&K!w[mC`:y|3CKHAsHF&a.,f y#mv$% -FbۛXhP""~ >%EL>Щ _Wn,B[؍8Ҫba2LIJ_:nBhOGdXsATJ9ҐJbץ"Lh߾Oh33;wrrXTEKBqDɕ=dzmKsc_mBlh6?y>AȊ s u3.3Dkխ} 1 HA-mJ^pNuRXݜ6{313k 7 OfwVB DyӲD&3(AEvfN*g7r9٤g:o p MM9"cڎι%Idwsp?}IIENDB`gosa-core-2.7.4/html/plugins/acl/0000755000175000017500000000000011752422547015234 5ustar mikemikegosa-core-2.7.4/html/plugins/acl/images/0000755000175000017500000000000011752422547016501 5ustar mikemikegosa-core-2.7.4/html/plugins/acl/images/role.png0000644000175000017500000000154411001115416020131 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^E>R|_f/777;::Z++++\5gϞCCCoLLL|hkkkOwwr9KKK*+PZҥKE=uJ`rr]]]ȭ[dqqQokkc =cPZ<(ǎ))=ztrr]tvvJEDZ $( 2==-:͙8Pn$7x|>/o=Çn .Gr~fiQH*A_mllEyD;|<6T(222B/ >ߧNŋ(9jyܹs|/ssskkk}G e n0$>9332B̙3 ijjAia$ i`TUKK˛ڊ+<ǃӟ6Z(HJGWO8qG;x{ݻwO ա ,$On}k"7b޴ J Ua5' A:& aϡmX,@ #Pq=vb_E.mBm<}kS#}m6`0 ǯq/8-f]"% α.@9U<>% Ar%g\Y7fv,m&g&R(MeecV66EJM뤤% 4'/ [4tdŴ=/ŹbzUe3RIJL eDCXXށCXkVlsK.ě tP("q392J`ܢtD#ƀFs0%>L> 8k4t8DW#2@B h֦ߜĀa`eW.CTZc\/:qM2 h<èȐ xD@X&c_ĨS_kQ@F!DLh@<5tI\[c(!O) &]ЖQQBXTU,=J!l .Ѓ<}5yk<80HS 8Zq(*# ɟZ&hVBuEέJyi3 iLuNWs$uUxv `57 'ՑPc(p"D$ nXAT)y {ˆP_ <J܋mǀP- qŝ;_~ʀ@1Džڐ8ʅfps0 * Kpp!93@`5 *VEXp@5lLl4m-(``X12I#2l0ٴ̦:pg*V7mp)āݹ[IENDB`gosa-core-2.7.4/html/plugins/ogroups/0000755000175000017500000000000011752422547016173 5ustar mikemikegosa-core-2.7.4/html/plugins/ogroups/images/0000755000175000017500000000000011752422547017440 5ustar mikemikegosa-core-2.7.4/html/plugins/ogroups/images/mail.png0000644000175000017500000000117311002130510021040 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8(IDAT8œAKTQ׹yXf-f˚SF#J ČV>F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/html/plugins/ogroups/images/select_ogroup.png0000644000175000017500000000143211042032110022767 0ustar mikemikePNG  IHDRagAMA7IDATx}OhS?O$vMԦSF;"<(Q"xcTe`yA=̓ )JT1$%/y<I~/,Ɗ'5ظyAn)2;v]=,"n}]惵3Zujqg}|h n^*e<`}HHxHiH$:,ʟfֹ~@L-8X H`ija,pXSs`kXdU@ͽƺ0b_6nh]sBPP+o>Iں1@ی=vO[OxC3ӯQtoZNs`MCX=<{;{.7'^LO2|Ζ[:hM-`pC0YHO[hݫBo~{Ǎ|UWI匕&BfDaJa'J|b5 ,?f4Y/e0T\MSVsU+kG<%(M|V_m*Y'[X1ugW? S fӵPQ-2qGm^P"^q;7imKVn1P.;HEAq޵wAD`hkvѣGz$:yX:s73.hIENDB`gosa-core-2.7.4/html/plugins/ogroups/images/asterisk.png0000644000175000017500000000142011002130510021736 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/html/plugins/ogroups/images/printer.png0000644000175000017500000000124611002130510021602 0ustar mikemikePNG  IHDRagAMA7]IDATxRMOQ=o aB3M)mb V t¿nK Y!a 4b hCie>ޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/html/plugins/ogroups/images/terminal.png0000644000175000017500000000141211002130510021725 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/html/plugins/ogroups/images/generic.png0000644000175000017500000000141211042060420021534 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `Iں1@ی=vO[OxC3ӯQtoZNs`MCX=<{;{.7'^LO2|Ζ[:hM-`pC0YHO[hݫBo~{Ǎ|UWI匕&BfDaJa'J|b5 ,?f4Y/e0T\MSVsU+kG<%(M|V_m*Y'[X1ugW? S fӵPQ-2qGm^P"^q;7imKVn1P.;HEAq޵wAD`hkvѣGz$:yX:s73.hIENDB`gosa-core-2.7.4/html/plugins/ogroups/images/list_ogroup.png0000644000175000017500000000133011042050271022470 0ustar mikemikePNG  IHDRagAMA7IDATxKHTqG䌖dRJHH*-,UԮ "jS+-4^ԦD( 4jftr^[DPQA9|Skn]}E#xg=9&\ĞznB3Q!*/&!3)NY+!*ۅX^eBdnD $ MxAl=gd5lɿ9]Dy!J}kXpUvT)+LG}{dY`WaЀ0hC6jWyGn;k7*D,%m׷k|]^ ,}2XKc "q<#] j2{Eb6ҫ|K}᳊2EXzK!^%-3Vm[?v"H.SRwꦃq@\{`31aFc"$=i*n}#}IvkyWIR6r `uKa'b,La 5ԋ2 )Y(F48@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/html/plugins/ogroups/images/plugin.png0000644000175000017500000001023711002130510021415 0ustar mikemikePNG  IHDR00WfIDATh՚keQUk}^ѷ3=<>=PZ4&zRJ^-"}I*9骴rdFrVSʟwRZ߻\:7{YDb.w-Nq Q+5APC%1T:\>8h(9ń{3h)-W~(f""A$imU jWlږmqI5yQ(f^V:_/L=u$>O$Bqt!Bt!P:๨^rRKËĭ|)X77+uDOMѾ$ ѕ`\JV_@e _Ŀ;ߋ{iW48ny?$*dCK%᥈,V KK1/y/g;/=X$II~Us]zv?1UM9hqbr*7"9s傗e΁?ywfw̭QdA>~m\~l%z#P;/'즕zUṸ[v_c28cJȃA`}}ϯA *q/kuu?U=^򓷚\I)sܙbf{6ܹ%wr.mוdr"GGw$N xNsk 8>7ߧPZALY)z8xጦ얳Y2peM3]۟xGa淧>mX韡 V=I ,%+e6gfCUzAmc%X:q/o_d.}Y8AhëjCk:gxSP2N+mʜ7|2pAT'>BJsn݈|7Gcy>^zrxJK)"nhɩg9\*:#XG,TEpEv3bIѨ]lOl|&^rԽbVxż0yI7s秗.A  C~xU2v ~Ů;[&ܢ=>u/ ~r:-|.]i{J @2<ߡ:W8>7 65B;k|c \f1/\n@lPz"!4Jtu9ub%Cr}l|W?̟f 6v!y7̎qiXOn`kn cܥxFqH91a%ɔu>~crl_}bSHu({*mҍFX+>ϐ9>FOq~u_`*ݞSU*'ޑSUCS~{z\_R4SgC  fiEq~\9˓j7oͿHQؠ w7䝻On~H8Y>-Ot2ظՃDy[n[69Wnvifང[ >7r/(3h fUɫ!NUE":VfةU'U`jz\Y?AW 1gr4ʌVdU?]4G3d:Vp-ggF߹Ï( g>4|?TMuЩy 2 Okե=hgӐ:WnJƻ{Ϸʼn9j"V OMϨH HJMǀfq3xV2X2/{nA5R|3}.n`( d7VjRz~qߜr, 2$T⋣zZB,; ы|Rz=){@H@ `ʞ b#Z{+ ˼5bd %T!}zqVn2fE]♊D-WsGByaff-n O8 G $ƒԵHG?m}T׹u'17$EmXx3KYzΓ<;j{ݢm.h,:"O6/goD%s bQfg㏋4cb7yxܝѼ̻d.ِo>%OhC[5 "]4LЄYBR k&TeZ̋(wo\H4ԥ9Hʝ8cCvПʞjah(4Ip* }K{OѰ_#V{x,{'K+% >rqzUOU"D3"L=C_lANC$cS]X\i. tÑkH*SQK$q<.On%SȈ$BuG!T5_ aj1Y$ke8/ P*ogҍ{T>P:X~'ɰ2D p7Eɸgܝ eȢ~Cu}Rw|plBB;l!΄ z"=y.yFi(#Qġy!29.0<,V.)uj#% uݟt݉)=ݶctG!8ft|R'Om9O%=QIQw+!gF' %p;fA3n`У|bt"k޺p8̖9^{akt O 7"<;lwP[kҫimmhE $HUiB^3c7@39q͆\њudBh4a ʺnʬA]V73:nOYzPyjxk f29"ѪhVY-rkTU*R5 u`SE_Ŀ6Mntg'M҆0(Cx;uUfg}K}$|5 4p9þ'SH48,w8:ϫJ7u:\*^\#`ǧMA%jTü[<9TIM_2"::Y(⌗QcGۨRBhwq>cN&}jyArFVk6ZyRBF\.tC$8 PU:,o.ZKoY 1_y@O]N>L8(H 嵨*;?S}Op)Zdo͸C{ P(eaw_"8&N(bL2h$vwI,Ye=0Xo}~ùֻ({lv (EE˨1\A|D01KCZz)BwxEO^5r;'eG Kz_Wj~Qxb|Ip}E_flmIENDB`gosa-core-2.7.4/html/plugins/ogroups/images/phone.png0000644000175000017500000000142011042273435021244 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/html/plugins/ogroups/images/select_terminal.png0000644000175000017500000000141211042035364023303 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `F`>512Ό~Ƨkkk8^7)d(# SnϮ›o\\WN̝c?}cS(J1DaQH؋compile_dir= "/var/spool/gosa/"; if (!(is_dir($smarty->compile_dir) && is_writable($smarty->compile_dir))){ if(isset($_SERVER['SCRIPT_FILENAME'])){ $smarty->compile_dir= preg_replace("#/html/.*$#","",$_SERVER['SCRIPT_FILENAME']); } } /* Check for compile directory */ if (!(is_dir($smarty->compile_dir) && is_writable($smarty->compile_dir))){ msg_dialog::display(_("Smarty"),sprintf( _("Compile directory %s is not accessible!"), bold('/var/spool/gosa/')),FATAL_ERROR_DIALOG); exit(); } /* Get posted language */ if(!session::global_is_set('lang')){ session::global_set('lang',get_browser_language()); } if(isset($_POST['lang_selected'])){ if($_POST['lang_selected'] != ""){ session::global_set('lang',$_POST['lang_selected']); }else{ session::global_set('lang',get_browser_language()); } } /* Check for js */ if (!isset($_GET['js']) && !session::global_is_set('js')){ echo ''; session::global_set('js',FALSE); } elseif(isset($_GET['js'])) { session::global_set('js',TRUE); } $lang = session::global_get('lang'); /* Append .UTF-8 to language string if necessary */ if(!preg_match("/utf(-)8$/i",$lang)){ $lang .= ".UTF-8"; } putenv("LANGUAGE="); putenv("LANG=$lang"); setlocale(LC_ALL, $lang); $GLOBALS['t_language']= $lang; $GLOBALS['t_gettext_message_dir'] = $BASE_DIR.'/locale/'; /* Set the text domain as 'messages' */ $domain = 'messages'; bindtextdomain($domain, LOCALE_DIR); textdomain($domain); /* Call setup */ $display = ""; require_once("../setup/main.inc"); $smarty->assign ("title","GOsa"); $smarty->assign("date", date("l, dS F Y H:i:s O")); $header= "".$smarty->fetch(get_template_path('setup_headers.tpl')); /* Set focus to the error button if we've an error message */ $focus= ""; if (session::is_set('errors') && session::get('errors') != ""){ $focus= ''; } $focus= ''; /* show web frontend */ $setup = session::global_get('setup'); $smarty->assign("contents" , $display); $smarty->assign("navigation", $setup->get_navigation_html()); $smarty->assign("header", $setup->get_header_html()); $smarty->assign("bottom", $focus.$setup->get_bottom_html()); $smarty->assign("msg_dialogs", msg_dialog::get_dialogs()); if ($error_collector != ""){ $smarty->assign("php_errors", preg_replace("/%BUGBODY%/",$error_collector_mailto,$error_collector).""); } else { $smarty->assign("php_errors", ""); } if(function_exists("get_gosa_version")){ $smarty->assign("version",get_gosa_version()); }else{ $smarty->assign("version",""); } echo $header.$smarty->fetch("../setup/setup_frame.tpl"); // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/html/getbin.php0000644000175000017500000000367111340457662015003 0ustar mikemike gosa-core-2.7.4/html/images/0000755000175000017500000000000011752422547014261 5ustar mikemikegosa-core-2.7.4/html/images/status_start.png0000644000175000017500000000161710741643555017535 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME5WpIDAT8]=oUs寤绩҄0 T!*!SՁ!R,lQO,ЉUC* CHPV$4!I;~aH(l} u 740,B1L\&uS.O9NyWb.8JR~ynw fm駛F'BL[H╷sqKrKAӇ.?.7%gy~wHsx_7ɥ}%zy+a l)L: a U{CM!^WNzT`=ߋz`q\pcbeQ. `nn@Vy?gƵF(ny @\.`OIENDB`gosa-core-2.7.4/html/images/forward.png0000644000175000017500000000132610230726066016426 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<hIDATxb?% (R7oX>>zxgQ)W'i P] '+; ,--mv/.@! e< lL3ncPf@ 022(/nf&@'J}ΘyS#x\l@1T pS]ڝ7 ?~c7 p#s >냅@1*C??2J~j 4 KzDka. o)_m5!.'×@X_@`Wp22oo}f߿32ܹ ;$bf_W]H_ /rOb/W՞0 eb b V x~ђ=vcҜsb~@ Xwt"we` YzJ o߾1xzzfg D=T3 @` 455@,q Vf@F!ϟ?G5 p`/ *IENDB`gosa-core-2.7.4/html/images/status_start_all.png0000644000175000017500000000161710741643555020365 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME5WpIDAT8]=oUs寤绩҄0 T!*!SՁ!R,lQO,ЉUC* CHPV$4!I;~aH(l} u 740,B1L\&uS.O9NyWb.8JR~ynw fm駛F'BL[H╷sqKrKAӇ.?.7%gy~wHsx_7ɥ}%zy+a l)L: a U{CM!^WNzT`=ߋz`q\pcbeQ. `nn@Vy?gƵF(ny @\.`OIENDB`gosa-core-2.7.4/html/images/dtree.png0000644000175000017500000000126611042050437016062 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<HIDATxb?-@XM{69 ~ 4 R? ~}Z@, Cݍ~b`O ߡ ~= 4?ĥ'а_ 47? FbC(@,|%@ FfFпȂ@/,^@, r gϞ͐J0r@ 1}GTP Xgr)VC!|bt s- _8 lA gd-q0  6y\BL90ATM#>CA F. E@ dM`_Ѵ%!f` ,@l YJgj;@1Ҫ &;QL! <IENDB`gosa-core-2.7.4/html/images/back.png0000644000175000017500000000133510230726066015662 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<oIDATxb?% (cdb``bd``@Gn\|dFl(P ȩT~93|;W @X]UTR@2HXLNjd;+\-@1a "){ 5`~Z'1Xne`bac7\=@ k9a8f 20;[g/i[1p2 @,H6s_")'?×~`'.[7/ ?|dcg8O3"7a_k?@ԝo ߾a/ç/LYYZ ao,/3~/k~%&&sA \^jb;w34?Ç7޽oϟ~1|?@y6F@sie̱ed0y?|N ll=zZ $@]#_.ͼS@1; bu( Ġ@ f1j4 ڸ2@4-QJf@8Ļ RAΕ  mxlUVV1#@ѓƱIENDB`gosa-core-2.7.4/html/images/small_error.png0000644000175000017500000000157210611414401017274 0ustar mikemikePNG  IHDRabKGD pHYs  @AtIME ",ᢂIDATxm[hufg/&K.hR)mjԂ-TA` VWT)*QV+} ڠ^&-6YldRsٰl6dgƇhM?9ps>6sy[q>\\q]pv+Vn!y\RƝ4|,%)ׄJ}AD|sv u8Ͽ`>;Ux̩M%rwfу6(~v/NCNhm;L>+ǩ0qx G}><ݷZEFтAT k5_Yoڄ .B3e&ߦ}a&B y#t_~?~ɧWp2;+՝:Х"iG&cx;1&X:O]Z, -7b 07ov G/7W#\weSY"W|i@(dCuH^UtmleA4{}g |xu~l,_4 gk5Ȭ*8>utS8TڞAfя0?-;vt-ѵs E2R)X8w.S[Ӊzݙp:}ݍdׅ$dL&S [SqW65P/~-;NĮd2ʆo6:+՝.GDEs `1X_&јIENDB`gosa-core-2.7.4/html/images/label-busy.png0000644000175000017500000000057211366543403017026 0ustar mikemikePNG  IHDRsRGBbKGD pHYs  tIME =2IDAT=n0ώ͏DHQ%.L ]2CJ=AեKf(l .}N'hlZ^PJPJcp8F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/html/images/false.png0000644000175000017500000000135110230726066016052 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/html/images/error.png0000644000175000017500000000444311362006411016106 0ustar mikemikePNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org<IDATxZ[U̙saC"6m5b111iiB&CԈ> bp9s=}o>=3g8}0,_{70 \,qN9e(.q~j98 H=1Z4։33Fm 7/0PD~^q+M/L<,D~- ׇpj g-B헐ٻ,Pۗ?ok}}eຨRZaoSXr/7%2<Ҽy|=r.;9ùz=CIW3m  |\}Ƥmʐ_m ;u*` 4tCEO6,S:2}|m&A ` thgy93xS]<پUК$dZHF\K_~ g!!HAz$̣]~}vwGCabl Ii3 .292Қ5`h[|5([Z}F'iv T.;\8y'&l ,?e Fz %`6[U+p,"Ae-E9~R%'0w/d1|Դ4 Ox0ߟm0gzr9tpTmSYEkP5L9faa=b 7ލK"Gis>I=۲/Mѕ$ }09vRБ) W( _,Ff>VKBE Fl=_va…((&G;1u=zB2+ҌQf$FPm4oGi:X[9'Z1qԿ3g~};bT)Dپ|ikoir YQVdĊ3nPb$2w"1nV?$>g&J:JUm!0DkrzjO_}uϗ"rm O^O%@sz|_lK,*pxm?M>KDs9YQ"BF_-efFTe+qW%zfⴵpٷt y"a%,[`>jfy"&eH}&5f<- u6GeJG%g}$w#v87iqf\)3'|1RG:#!#_ H{1h\#|/$$ߑXRhQA1,Q <h$< ;xIoHOI? }&$?DQ Y5Pcm(*""’[o,`:ey.wk)^{,R1Od}ژx#0Ijbؙ-|J=ӞiYD"&2Dp50.\OG14Y#J=6iF {:D.=`mTw 'ڗpJ7Q2Ӿ5UUQjk@"NfF}~σIvÖt=V2$b MN!N׺#Na3o[bg3mg'yMQ(MZ$&$ W59Un 91 ~dH4]?8:rU i$TGܟ qe7|72- fq\lWU'M0{  &Hj`"î 4 $?8% 7]' IENDB`gosa-core-2.7.4/html/images/status_stop_all.png0000644000175000017500000000153010741643555020207 0ustar mikemikePNG  IHDRabKGD pHYs mtIME41voIDAT8mk\Uǿ43cf!5iN뢔,*B[T.\??ugʥ.EąPHBmfdR0?22uФ88/UW6QZ:kjaI=29uxΚ. >; .~TW6 vf»ruaƠG`B< y8v.XK9L|ջXŵ[<&L ,HƾZ 3a^C|b_I N39".ͱZi#[ h=k[fuֲrhdi Ni bP)f*Y\=МӞO1Ldp-v@m-"brAxٖp8@@ !aMmhAڡabGY?dވe3] 4tvDR  R`D ,Cìߔ_L%ud~ٌt{vav*Opz|oGAÕ9玑a0˽֦m; .~TW6 vf»ruaƠG`B< y8v.XK9L|ջXŵ[<&L ,HƾZ 3a^C|b_I N39".ͱZi#[ h=k[fuֲrhdi Ni bP)f*Y\=МӞO1Ldp-v@m-"brAxٖp8@@ !aMmhAڡabGY?dވe3] 4tvDR  R`D ,Cìߔ_L%ud~ٌt{vav*Opz|oGAÕ9玑a0˽֦m򀡡!I L',\ ]m6e)x9GӓME鍳O(*;Q&myoz!e^h `+)!<bFcϕ{i)SG5f`F`I'.U"hп Gwerȭ lKM8PBx7Ս owYz!8 *+ϯY ԂqInk ǟ41TSu.¶/cbV zpV&ƗS{ۻT\a!iŁJt@ߌ/'݇7n\(EӰOo/HwUtFDiwaW)SbcAjEIENDB`gosa-core-2.7.4/html/images/empty.png0000644000175000017500000000025611042050437016113 0ustar mikemikePNG  IHDRabKGD pHYs  tIME ( "ytEXtCommentCreated with The GIMPd%nIDATxc``E,IENDB`gosa-core-2.7.4/html/images/warning.png0000644000175000017500000000441011362006411016414 0ustar mikemikePNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org<IDATx\U?9ٙٝm}ۥ-m [Զ`BJxA#S$ M+E~11|ƈb(J[s3{޴ Os~9ϝ͈sPG|8/!³ښvB8wxhFF۬1saQp^bW=#}ߛU 17rf LNo-}ۚ1b#iY s1vN-ӓEV~R&K8)7QۀD3cgՍ7u^b"p춱Fnת>&eD.Q[N7B ƨ" 9siE&1I7r/ش<&*rzoa\.8}LtHoR˶,Lkb y^oN`hFYyĆW&}$}2@>N 8 iJ$U$:Hˮ`Ƚ8^jޜnQqYB$^v.x*H>qyW{D1Xr2GOˁo3޷AQ*CzMꌂ^%i`'_7Oɲ5ۈ@-uqm , 0;7s\8_1?g+hah /r2E.;*Vg&$޵uCn?`M.R0b75N4t`zpjk0=0cyկL`e^2ϋT7cBv- 0^gp+ wU+/+Df[EerքV BKROA8)GwfSʔbwiKuݿWYe=$5;K+4HhB;H9pȩv"c( 0G| -C؋T?cƌ@@eX &HJJ9߿eXh=Û?xãXXXT@ R@,HDܹs FF ߾`w u Ve Ei]]]_W cױ| / Ni 7$@8''ׯ_ oV~)3 (#߾}@ ͹@2 ?5Bo߾ "" ((y0aUȀ&%r@04߾ b_ ğ^lٺ?cW çO>~+3Öm;?^ze5PM>VVFSfݼyYAJWa?TAH>ÏO^?^I`p| 33==v[,exnfg N* ٘AA %# Ƣ36&!-gE,@pA7@|+ ܫl_}0IENDB`gosa-core-2.7.4/html/images/info.png0000644000175000017500000000526611362006411015714 0ustar mikemikePNG  IHDR00WsBIT|d pHYs11(RtEXtSoftwarewww.inkscape.org< 3IDATxY{lffwo۱$HSА ?xU*jE[@@[!RچQ Zhy6J*JK* JIgn9J{9w>F7]" (FIQ!h3$dZNrIilH%!cC-JZ!Plddݿ8<㺳73ڑ8m[ޅL(+CrKEWC 5݇pг++P2χHg= g$ Kf׽p]NLd$(4@$YXՒw=%;&ollA3Z뫤hő<PtPE"Nut‘QzՊC#`aG!z| X'\cWAS^8őKW-fܴiSAx:9̢Ge54jcɭmH(ۼvRY.<b*` =^ϰ+ל.-/y4r&X@ =\ [~<#Ml9<<e|Uvo!Qi@'m8V<7  C=" W-oVZy:>IŻBG!w5Mؾ$EQ͓r<=Pw6X`z"QCr^z 僻RJD{al=ہZյP&n@͹p+Me}{kkn٧x-`'d#6"B#NnR6Ip4.jڎCb>ӮoAՍ D&Š(;Bշ$$(D w@O @*s@q![0eČ*EYAq<u]/Nu7cȒ ը }|i!ys ?$xs8ҩf#ȂoP\`jn"S4܏󠯚{c`o'wY|'kRF P5LbUhY,b3 Q׷l # I|^g8O3MŚk:%' T$ x &`$`*Cש1;_#yIyLzհtVhXJspI.NwgbN_mO@~y]Oa% J @AK Tz$+5YgPF^IENDB`gosa-core-2.7.4/html/images/datepicker_ro.gif0000644000175000017500000000174211364063662017565 0ustar mikemikeGIF89aT % |3f̴-pppk5Icz`/woP|םzXYX[; :rq஽ԊZ JwՃx׺4:kR㚨Dsr@ 8KetfffeWEyK~x?oѡԔi匥蜫?tpa]!T,HWXBdž Rb@qE52fc .\" D(V 5Vb͙\DSG}"H+2B8D+2^5u!,/T|uAń(f 9[fu E,|Ug ;32 @"$ hg @=B;gosa-core-2.7.4/html/images/label-error.png0000644000175000017500000000061211343440361017162 0ustar mikemikePNG  IHDRsRGBbKGD pHYs  tIME 9'tEXtCommentCreated with GIMPWIDAT51Ka-7qQ.&'nQ?- ^j(Sp8 7fժ]zy2o}ZR8űrm] c'I C0$i4rehP{?ݮ +䥿4(B 81V$\6zӑV+`MEөyʲ{>]8*w2?<%|i/4b!Zжlz;uTIi%s29sfcIJ{iL?pxYG*΅ߛ.sb$[_QME t\"f*&1 e~s! Yٜsz4`Okd</-- 4IɥJUܠz~'x[XgD4#Tѻx͡Թ=΀V(?LJhJ;@[gJ}lCrf1`41H)‰1Sı'5sݕ"IDATch`@TkIENDB`gosa-core-2.7.4/html/images/lists/search.png0000644000175000017500000000177711002121753017365 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/html/images/lists/back.png0000644000175000017500000000153611000631773017017 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb勏 w>f``cCL@auv&7àk00?dx9++éGjb`y? _c`*b`ݻ-Vfff6B-;~`Wo2Nb`߻Som3&1i` #\ @$c`9Q;wXd->YDԓ@,0& .O3دnf`xᷖû 5|a&&p4@0YX8b`xo;P3#,! B/œ;+^dkd[ aWm@qrAmG rdo~E&3|^k,| ̯^120z ^0sb`tc/+~2|Xkz?^abknA>`)V ï^ +J OuN>dj6?4gs531|LP`^nJxIENDB`gosa-core-2.7.4/html/images/lists/submit.png0000644000175000017500000000114611001315337017413 0ustar mikemikePNG  IHDRabKGD pHYs ,1tIME 6\0tEXtCommentCreated with The GIMPd%nIDAT8˅S=oA}AB@i( )ХкB!reSq!q@3;);8vg{og j<Zsz3puwwmP?K%ṁsz9"x|b 3(ل1aj0}GZ) "0<8Xka=%!`880Ll6y^T&ҰTqc8b6z6{TQAʮJc>Z(3>y4rN~nFv]HYj2$"Vz(ۚYCZ&Ä3>%>^^~%̷=1WubIENDB`gosa-core-2.7.4/html/images/lists/up.png0000644000175000017500000000153611000631773016543 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HA 22|_=-!***#-1ÌY5>߻3j/bɳ\~a3 }.NG^maggg3>Z 3.}#&"-f!` r;Ý _f! ▒ __{MMk?302g ?10l# ~52e[kTmbandʣ@,>f?_kS1|ĠÅAAA0~a` k d AZ/G{YMJZ(yݢ3x%ɔ{oP668ZG=W|  ׂ h /JDt "4ϟ _?2 tg߁  `fafL l Ϟb@l̓)vqd~D*>bl)Tlכ2 b ܧ|Ob X i .߁^gbbf _VL̄_ i hD1>ba ⿿0g'. p{\? 0m`2""( CgԄH03% fgg_L@|P00 P. #C>0vУj^$B|0Ao4IENDB`gosa-core-2.7.4/html/images/lists/sort-up.png0000644000175000017500000000026011001116314017507 0ustar mikemikePNG  IHDRB%}bKGD pHYs  ~tIME (DK=IDATxm1 !'yLj /Y9n Q}l2iD1:/RW&IENDB`gosa-core-2.7.4/html/images/lists/cut.png0000644000175000017500000000056011362006411016702 0ustar mikemikePNG  IHDR7sBITUF pHYs B(xtEXtSoftwarewww.inkscape.org<IDATxm1jQE@M. 2L Hkeq@H3CAH5AEs/ݏC/3ZZFQ6Uc¤+aRi~ev4[ [Jaf33%\dG="FRh̊b-ik`eM.0ʛ[_m=Wn†xㅎюߡzN|(!Xsr 䋰(IENDB`gosa-core-2.7.4/html/images/lists/edit.png0000644000175000017500000000132611362006411017035 0ustar mikemikePNG  IHDRasRGBbKGD pHYsu85tIME 6}VIDATxڍ]HSqsfR20001/ыO L`AA`EEaa(YJ]sLt;X[PxH`P[^y{cA#!DH/hxzxyNF{30pe(Ic _Ky2,SZG$D`2SLWōxvnvsjɒA#HK7Ƿ7YoVj*jiӑJ}2 >VHj.YH@_aJ!\a^Q.QRP`1悐$s~<5yAfyXV%c' Зyvt-rb F`.'~6OPR!7'_GHNN!33am5S4IQ" y1)5IʜUz%A+{wQ~X8#ߩ/HFUU.b?g:?IFQ6ٓ9eXzخN>":jkĵDŽcS" /:::(|'`+!QͲD`QH`dcрN`(~ IENDB`gosa-core-2.7.4/html/images/lists/invalid.png0000644000175000017500000000135111002130510017521 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/html/images/lists/root.png0000644000175000017500000000152411000631773017077 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/html/images/lists/search-user.png0000644000175000017500000000170211002121753020325 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  &yAIOIDAT8]ou7ϝ]>:ŶTmb1hc1c@@Ap@艃áDF#814Jj_Ȳm!g}t3; |M_._ʈ.,/޶lyOW"> }wĕ.\sS<o T%MU=WCg؏Οli/X.npӅ, !h(̎^K~Zx IoLsGMjrV ({Q2 /B vCM@{b+!l<ϰ0pAb>S H"*!tX; >i5ȜJXp`kjyT/55s 8І Dnm*v]  T`S MC~[ؤaA`#F&Shr2zynj;u[ktAx=ƎdD*[Pܭs@Tڒ ',N/ +,X0( 5X ]H[b C@nc̦?PkR*«TXOn1<= L*Lfiv3SJƷ,!?gUhi|b=>mod,z3 Mlh9!n_a;d[NEՓ 0G &EVv4pKw< x$.Y Pcѩ ?kxOPWgQrVM>Z[5tcQ7?|M#<'5i}yIENDB`gosa-core-2.7.4/html/images/lists/locked.png0000644000175000017500000000106111362006411017345 0ustar mikemikePNG  IHDRasBIT|d pHYs:tEXtSoftwarewww.inkscape.org<IDATxڵOkpǿOLlR%NBKKbf!"3}4MSz^׉ȲpTV},{n6Wa_ Jt:}\nbL&Sfo*qevZ-?L'bt:󥳾GA"'t +fY϶ퟞKg͏$8Ό)0 w> Du4M'>;ct5p2 ȩkhv `)=|' UHF&r  Z(?U]`#@ a29'kTS%ܻDeKIHK%~Wyq=IENDB`gosa-core-2.7.4/html/images/lists/off.png0000644000175000017500000000071311001315337016661 0ustar mikemikePNG  IHDR7bKGD̿ pHYs  tIME#x0;\IDAT(UKq?w߯yjpȥ9(h/hj%%֦hphjKh ¡MHD "*~xOB𩻕湸qHBG-/?.-jى'b=PB3bbacca269d`1&btUBk߃ | 9I>SEHS;ʷ,"FCLd*kAG'm(սHc`{ˮٲVPw[f{"QĤUJF~PzoԨHߩ|ߘ^oڗ?WIENDB`gosa-core-2.7.4/html/images/lists/csv.png0000644000175000017500000000604711330340047016711 0ustar mikemikePNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FBIDATxڜNP9F&'&; k +I 'pc ^i,Τr*J?}qrN 9uwD*qҾ8ӷt&HqQ5y0`ӭk1&sg AҷW6IItY kA1 &f xSdA@{\R9FV Enf3',=Ue0ҷeT,ܶjA83/M!Hu h}' gZ7tXC;1W ߵk WX5TIENDB`gosa-core-2.7.4/html/images/lists/import.png0000644000175000017500000000161011020743510017415 0ustar mikemikePNG  IHDRasBIT|dtEXtSoftwarewww.inkscape.org<IDATxOh#Uǿo{yM33iHu D]h.J/"{=+i= 6Ԯ.ņm6餓m2I2yܮ^>*J^d2oض=G)?O8~|~~YX]]ݹ#JJm"Z- C1}yG+++wY>|~~5F 0PJR !Bq"f...~l۾a&(J)(`!H@!(B*RJL8X^^F@`0@A`A)8FE6E<|LӜme<B0== 4{1f/c0qlbbކiqBGYo[7v\EZkA BvaZR q`Y.Q_G?L&1155e0(}UJAJ krP;a nyLBֺt"L"c>d(@ߊP kr<;? 50yɘaQfgg1 ΐIރ+]@CO:)EP\.˲8~ǝ;p#{"gA dDW+zUnmm5딅#bq(6xV_X5{W?w/ f3sss\. |s7;%N8ýNwW?ڵ9N}yх0M?PQҸKC9IENDB`gosa-core-2.7.4/html/images/lists/element.png0000644000175000017500000000100011343435170017535 0ustar mikemikePNG  IHDRabKGD pHYs  tIME+IDAT8˝jTQsF$I'2wP, | *A` ̝sI8Y7{\fNf2i|&K4wQosWw0-L'V ];@ 2B]rΘp60!=J)*ç/#ek C1wcx*#-BpV)59Y%eEEZX "U@ {߲"jʰD Mc@Dz|"P.AE`-Xk n}!FC z+]l0|CGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/html/images/lists/on.png0000644000175000017500000000147511001315337016531 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?\IcQ32D 1sq|۫/~bX°>ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/html/images/lists/home.png0000644000175000017500000000154111000631773017043 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/html/images/lists/unlocked.png0000644000175000017500000000103511362006411017711 0ustar mikemikePNG  IHDRasBIT|d pHYs:tEXtSoftwarewww.inkscape.org<IDATxڵJa?،AfDmm3=A[}U+nZ)&-܈ ` hedN9;46bt;g2 "@4=f|&N˺P(嚍FUVQX|w;3 Xr*L&o#Q8>B@LhgflT*>=Res%Rjgg$LjE4oV3L&f3mF8 t]D"O2(NMTU?~;{<;hL<=!@-c- lǧi/Ml`}$FJ8c) SeanN`4` Ȳ!kw$W͌Ȳ?8Dvh?yz1 #,RU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]h2w3wfpuz1WtRNS<|R^IDATxڅG@@YJ!A_J)?'&rGg$'9EIAU*h xBFمq`mhI . 0IENDB`gosa-core-2.7.4/html/images/lists/trash.png0000644000175000017500000000134611362006411017233 0ustar mikemikePNG  IHDRasBIT|d pHYs:tEXtSoftwarewww.inkscape.org<cIDATx}KQ|df2&`"т X1F\[]pڅB۝ĝ R+. (:5Itf>N!~ǝ\^&&rJ&.NiQH1.a9κ/Ȣ* @$Ĉn[V? ye )H@рOuNģQ״?-?'##wU9jt!PUKZ,6^T*H2BY\*ߏ ԡ!dĎ`''p@j_iB.}0˂E0ƚ Jă| QB6 ee:!jD  ji.хp-_^ۋNgEtp2xa*C#C䃑o3ITh|}$ߐ#%7ugXR8e|pEpLr܎wҭI I{@;e{`48fp5b԰eOeS.`'Iz$eEFUa=0 ކ*Қ4+dR}1Gn ?jH=uG@@ym +5@32k! Us DU,' `Oib@JIP5hM:3S9Pދ'СT}oju5&~ah{=vD+!@]B"5T/ez&elK_&6v#>x  ֑A&x'N3_hگi`p{ n_`'(x nC(Z͍WUow_qZ;A)趲{uk38yg<߃j)= Xr` lpLp/{~o1>dIENDB`gosa-core-2.7.4/html/images/lists/node.png0000644000175000017500000000022111330071574017035 0ustar mikemikePNG  IHDR(PLTEؐvtRNS@f pHYs  tIME%ZlIDATch`@0ғ NBIENDB`gosa-core-2.7.4/html/images/lists/pdf.png0000644000175000017500000000635211330340047016666 0ustar mikemikePNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATxtKa?]' Z&iP̡ҖMQ0! nAe׿AixzC={899P$*\g\2 EQ@CZ!^C1z&Đ 8cf.䑐A 4" 8#CnrOZ!8m8<|htD>p4sB1c97!9P.܉y"[[.kh8"lo({F;y 60Q0=xM7gq7ppc;;07(.0̥!i!;`xAUh14jph~(gQݽ%" hPE7.ţb'd!@@UU׏53~CF]Z[$0䌺 |Xìh̯saYIENDB`gosa-core-2.7.4/html/images/lists/export.png0000644000175000017500000000664211330340047017440 0ustar mikemikePNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATxڜMHao/YM9M%`h jBSK= Xޔ,=k (i@*&ͲYAgN< 3--YpT*`00 0l6`Z!ֶܸ6|PHPUUZ;#N w]5B0 XPU$cccӏjkkQpvv(yh4\ AGgfX,h4 NW8 1ZZ,n띭D"5|?==o܌peKz=^jjjw9Ѩ͂ |4*8($ ,EQ@(E@)󘟟G__$f2ibii)j{m& j , Y100(B׋T /uuusOR++fa~P ˲|xxz3pFq3 m&ɉ2xr4 666pttJ)TUX^^^d4!" z=xPJK?CƏO) #3aIENDB`gosa-core-2.7.4/html/images/lists/upload.png0000644000175000017500000000102011014756515017376 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?.,#.52fHl-2 ѽr6 . `x P i?E$ĤŨVee> KoB4[(@1a*T >Ah\@,b?g_!n Ӏ?@}g WB@1nf򟑁)?,vO6Ċ1z c򜡍Oƍ b3~?~Ui@|k{~,W&@MRk>f`b``f`* 0/1 ^@p "ɁiFWDPcPѰHjh$IENDB`gosa-core-2.7.4/html/images/lists/sort-down.png0000644000175000017500000000025611001116314020037 0ustar mikemikePNG  IHDRB%}bKGD pHYs  ~tIME (8s;IDATxu |? !X$W-< dϐeh7fȥ=f"aIENDB`gosa-core-2.7.4/html/images/lists/folder-full.png0000644000175000017500000000111311000651103020306 0ustar mikemikePNG  IHDRagAMA7IDATx?hAs3g!(F8 ڤT L!_aB.XXXV\"1] [E"^uKw heݹ}gr o̼}3o"ƕ'D)@x~G?̮K`E#;6#_sc2JT+(P(br߶3Rpc/hkPoQA~cXgZG6ynz;[Bpő(\{z;YҬǮguZ<8.ؙvwQO-5 4m&&&bLMo h-H *rRDwH k~A\}0Rf)TUrw<  Ww2V*\ץ x=,~C2VaTC]-1hIRd26fP?,//7 "KKVVVwrqD"UCw!R2t=+33/ikv H61]RIENDB`gosa-core-2.7.4/html/images/lists/expand.png0000644000175000017500000000026711001116517017371 0ustar mikemikePNG  IHDR/ebKGD pHYs  ~tIME  DIDATxU 0Ü.Ӡ^%DiГˊ-чl3=)̷଻WGGYDZh)7IENDB`gosa-core-2.7.4/html/images/lists/seperator.png0000644000175000017500000000026111000663047020114 0ustar mikemikePNG  IHDR03bKGD{# pHYs  tIME'tEXtCommentCreated with The GIMPd%nIDATcp&A\a/8*IENDB`gosa-core-2.7.4/html/images/lists/search-subtree.png0000644000175000017500000000157611002122253021025 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbmKXϯ a/o@_3? `~b3Pb'_>OF210~2Do !ߪ< A y>30g`Hߠ4 4&). 5 z _e8+fM￿ g`ge`fb VX2 ,o00|{ 4Ῐ?.?@X50g  h 33 26`f/k tv2 XB33ܻwaҥ ?d00a0f03K jz/0&Ac  ...@ \ np10p 4?ff@|?!N}|@, :k  Q @glf1 a`ߜ0p^pWH蒯`/0V@0ϟ0zׯ B o2z@  `aXŠo`Lt ` v?8P7c&'P#01eD`+3#@>ϓ`noP_o߁n njR@0*k2IENDB`gosa-core-2.7.4/html/images/lists/reload.png0000644000175000017500000000165511000631773017367 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME4EaK6:IDAT8]k\u3sof2yL;iM.X(m . ??@FIܺpQ.&!Řfb;dw>~s! Yٜsz4`Okd</-- 4IɥJUܠz~'x[XgD4#Tѻx͡Թ=΀V(?LJhJ;@[gJ}lCrf1`41H)‰1Sı'5sݕ"a2XW?eC䩛q})P1o[gtEn `1;wxyW mmr ;Z 騄bR Ĭ(`٤cƟy~hyϤ@+K55Xf4DDހB4QՈ|Oоy<VTJ%w:l蚐||owV|FpXH~!CMW71`5U7 A)8٦s&q  - v9Nȩ5+/FHl61sH VV^# =y" 1L{U3gHS`@l6`> hBD( :z=u]Qݬv+7ggZ?&ߐo$ fY /_ TJa8Q)hȀ4M1sj'w&65*%~.W8}/}>45 "[hf +0h q{+}IENDB`gosa-core-2.7.4/html/images/rocket.png0000644000175000017500000000147410230726066016255 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/html/images/checked.png0000644000175000017500000000040211345763376016357 0ustar mikemikePNG  IHDRasRGBbKGD pHYs+tIME Qi&IDAT8c` ?8🁁KR5!i Of421쇦Yl844g``ǦYI,Άa1|~4ARň (c4s6!CP\閫*_]IENDB`gosa-core-2.7.4/html/images/label-info.png0000644000175000017500000000067011343440361016770 0ustar mikemikePNG  IHDRsRGBbKGD pHYs  tIME 93)tEXtCommentCreated with GIMPWIDAT b. Cvd c.TW~'.=iAA+* Ͼ" FT/ FS*# F]/. Y.. F޺vRxjHIENDB`gosa-core-2.7.4/html/images/head.png0000644000175000017500000000136110230726066015662 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe4  5D]]A7:;<[͠|xsh puN /()yW066hBak^l7\0s##$-]#:Z#je 8-X:!x,"hwuKԁV0p, a"ذ)~- &oK4i^G <,-ƥ (X[Bcw Xg1,:P/ pRT8{Ɵ84fS0KQQ4p#Lݯ:d2 $@RZ]j EQ;C5tv_'zjǢD@,et"5Fg@@-!V')n&DhimV9](/4;tA a{5|%*x9Ӕ52@)9G^4۝r3 e o&T! } p$^34F0>4u9],`׀A6;;{FU!l_?G˲UEem_i+}7g%MhxEpM*r-=!D +B4GG/Ζ<1H{kTuĘ)vàQiEzvhJuL7y04 ksDח*IENDB`gosa-core-2.7.4/html/images/setup/migrate.png0000644000175000017500000001130411042022323017532 0ustar mikemikePNG  IHDR00WIDATxŚieus}uY !EIT 2,%r "ɏGJ$~X@A ۑ%ŴbARPYHp}y޽ɏzR quUTY'jOO6=}`Æ]7ۘtzy?y,/Z-v'ç+/<5"'"y 8n wIo>?wyw?;b8 WRz}z'nolHN|?ވnIˠH.;R1m;;C8.9^H29Hk o&F&\2w}3OWGgϾ>222>M)."済p' 7( n[H<^$TL@[UuwɁuh |%؅;oO'fXZZ,\pWA{A%1`-13aqpob.T|-ܡr!SVMz.2NSN~+_8:=L*(+7+PKހ+aPs,s#hRw)q+|/b> JUJ!Jwd n*KN*۵㟮ezR-W1QE +,o kI;nk.f&o4嵟a>IR:1uKW;vkL5Nl IAJb KTErKeګBܸ[ƚ tr`<8lXQ$F'5y˂fecF^#9uw>ŠpwqWK]b?##P'mbiSzusG{)K\rUeTU[-ʹj,us<7=B3;3zMDOМ o{WyC80I,//\Yopw-WL*06(dQqw:{K9WWF蕁T9UAJ6}щw&0:¸K[jZX6ԇAD#BuBSӇnPgOr7&_IzEhA:E){7@P<}cvj&?v~ۿg_W۷MD w|'߱ёraނVJTd;cTUܵo͉؅k_}V^Qd4_ͷv!DS5Rόȋ/hϟ׭;6հ7'um~ÒFu/SO9rľoh@0_ 22l"YbTz=,J @駟98qZ,1 ?_%9@@4 ܝ, ܭN?zݙ@T< .WV]1+HRNAWݙN֙HY@LUe>۸K;!ݶյ 1S3q vNo~͟iUn!q͂x5b< <^.]!s?{Kk n[q"dQ~.-CO7nB*EeW6SdA>b^].vNRVzװ]*ȂxE'# ?Lސ+U k]h޶fEVȶ:] ݁V_༼L`dxD-^!IVHdYɂX#L͞-=o3\uTw 6eIu]A10 \}[zWv*n*0~_g{.*<MXPUa\kkw.ҍa`Ԏç>or15*Rq2%R 1s,p̷yll'&V.pȂP'S!]xD`}cEY]]1:Y&Ј+~+<>՟|jkߧB(g}ʝ BOIv^~5H=!dK j\j˔׳N ^A$W>sADEE =~J~ 204fuX记ݨQ,1eܾubuvvUe 6>_;`eSGeVsBJPtqi۷nY2ӵ5RnY׀T({("dYmY1u[_@d+eݶS2??oH bs$"7nsT"YB$,r\c &,f.--"̒$?X1;toW98ZK Cb>NE:̂%Asa`ybbǷi ȯs+^Ǟ'{j]Ǒ#G03$PωR!3{m j *hP3~Sl  J:ovቻ+]^Wh6Pw.8?TѣG)˂:Q)j;uAH j*y) ةȟوv,S I贴4[<ד"k3mV=>b/~_l MbfUĖSC~{3/a:C۟#ϐ`~ 㫉l.bFS<䴙6-F,5_|q:oVkVf/jz۶oiUw/v -t`k\$7(*i#sT@w١c!(=J{hg+AwgSdZms7C<_ӓIV{/"f͜2huh5pDDdl:es[=w=g1)sȥ+WlixV%̮.dסG kog NȁG|r!]\~qtW/ga!֕EQga}BwSSO=uKF̿?26t\<A.~ֶ ynϋϾA.M%*E;GK᷀-?G==596je[rصyrW$f疺W_q嗀sIiu2S jX%un孷;ԯ| d/y7o~{ a:aIENDB`gosa-core-2.7.4/html/images/setup/fai.png0000644000175000017500000001165511041617417016667 0ustar mikemikePNG  IHDR00WtIDAThygWu?޷FagՌ rjLHDX*/e2`*\Ap AXH&Z,bE@3̌fzzzoޯ{$duuw|Ϲ?%"lΝcuuɷ=w[ܻuKvuo8{R[RM,1hQJB;N~5R7:u0O\yĞ{9t=hZNk*VuT֌g1s6?O):zX}RGVWW,i463M4(˒NIEزD񛈩,M5N%V^Һg+Z^q` 8 <0SA)E0ʳ1) #QHV 5"_mFD w+~ROe)A V q$1JARmCmlQh]K$B)A)MV x(=~,R /r<]BΩ*|Mrp⩶Dm^ZY<"P 1EzPf!T/{)G].6'Q({J=(xACy/~wT!`kE#VV˷RbScV)9shq8‹R,RtMǦP3 5{\rP-D*-+7!HYD;mHD_Ћ**dlh@#`4Q`"О(>FP:̒SpJcWr⯵!xڊA|%Jogg'wsv8Vā&PB`,.ВbHIKD:5y..Cp^5x+@)) /l R ZAG0:}x SLǓ; ZW"j;3W'K;ܶu^aTDȋ8zۺraNjRfjb=Gi;f/< Mƒ|Yt O=n|=Z XKyIĮE`ZUlK%IXk 0rd&KZh64yQ!ԥ.|o{B)i ur`W2x P=RҘ:t1&ȇnϿޏ*v4-U=rgn 򹯾@Za(WP:WV Z0I F(Qp *@鱺;/ cgs|-,LL|gE'}ݻpn1w>0!"z$Rhc0Ơtn~ۍ$q ={ =ΊYk9FT8ʬwY678(S Gt+ ߸9N]#R)E/3L֞ O` QH~wEFk4fEv='x7-*0"듏z="h%U6ePZY$O-:(S I a6~8Nc̆F pCG{8\~>–b@Q4C+:jl1[~}f>w3-ZkGvg77^?K1ץ|>]Q@iر]vG>|S<_桵yO uAyx *&ϸZ~|=Pn|.Sl9>*%O<͍ol҈3A\d)A : akn-O~;W31ւvTj<&g+/>+7I_=I=V$KK Ɇ9>"4pγg?/FoiaA{'lN=ι rskh>yOcp~>Md8,x$LxuYGQ( J_0Wছn?7犢芸M&9,&,K4^yvLǟx;Y[w<;o݁4<+ @qe%0Zaej.fݝ'xp8JՉRh*fs621ݑfzR1/mpZŒu/rIb6a%6O#jq睟?BY0ƄYuU {,=h lm01*H(7ͰҘ3 N -3͂}37s93;;ðG4=:=5 &se_7ONN~M;tA$\OfWs 7YuFEAi-EY`}_жlnDk]8)nkֻ}JZ6 fLLx:B }^COr!uݍ i63nZy).篪PՉV4:ɘ)_7k=k_|:/25=If&( ! $&:۷<1~Zk~xVڶJj=3 / ˜,Q:"rRLOOh DFK*"R%vYsF;~Ȫ~?3gʠ!5VHCgIDx`uϹe֤ÌgԡC%Iak4yQnhDXkFv{.h7[uȪKK{8qbu\5EU5A䴮:F!* P5ɪp@ ,9aHކ[k@QQC4U-o} m0谨Wȋ)l҂A]]vn\e`ήql("[:tEIywA:xX?j ZS}seBF!|`(ruJ1Zk3X?HJfxu7Ѹ$ M7h44Mʲdrrnъp`fzp977wo?u[bt>Ë#KMIp`0.O=$o7@Pm{UɛvS%\%w*({ɉQDAEز$c' a"ok~`ƨQ?{ K^81BgN)Q[{+yĀCh4Ҵ1&#j_>-'Ok.RQD433ӌF)痖H0 AkV@iwxhz\+'d*-#G?ʫ_8  5WڬBm\z_B48{>3lZ&ÐnC#ȧt'=2QAedmA[h7D'l9M0ƴE)z9yQbŋCdaww. Dg=JGu㲴lgaݵ.Q1YB] :(P:T}PWHeIl9 dVrn'#9uG s$-˂Brdҙ5Cz'6t h8I.;SW\ueSS:x˯<>_{omL~5,/TUI׳ܷo/˲pQH'2594֖!Z߳Gm`jzDQ|@(Z(N>ߺws=?UƬG CFiJdaʲė%)U#o߽wX꛻[^l5[gVʲ,,K)Bsɲ)iJV|( Øv_uUw|s'IM89MHXo}p/q i%} :n.m^Tmc U;>[PVKNKo٫ffv7y7N=sߞFaPERȋ^jl)7Z9 (Xkw:}Y t vbk@k9/wjj%%~IENDB`gosa-core-2.7.4/html/images/setup/locale.png0000644000175000017500000000766211042016316017362 0ustar mikemikePNG  IHDR00WgAMA7iIDATxi\y{{g4Ѿ@X` Kfq(2qbp%xvʸTcdH$0"P`$ f4.'? "x{wNG|mbPOZ0ɟ4{JR۰m7m;u>SF9:#9'/M]4{' xr8=ϭ>*/|<>1rs'~Q1k7o1&5]}kLgɀɃG5@Ӭ@0Ώ+/s)E;_̧e='ql u>6'J?׫V.`j`J` B)ov㏍yPLnvwHʹUal:cK$]l6z|1I&hǚ6_-0PRqw7?F\c`}$nJ**yTfԩVo_lH$ZKJ#,&B 7 |DgUH00FSJ2&s]#-7]?o]?+{?9ʒE- P ٍiq[鱗h)R)ԡk5A0 EtN%q SUso%Q8ڲyfC?ã5.i創˹]?z=3y KޝxmG}yĜ9͂R@ lzpQ&Ĵfy(0t4Ʀdd}$,7F85 F)MLya{.PRyId ڲ{f <##X $"NHn?!섶-BA2M6F m`&q8qhmH Bf΄fm@`*ՓwFEKA)ed~I4I>X='$b S-^¹gu3u[syvMsh[A@*mp]042Ǜh-ƽVO?zPR4rL&yGfL#p0NrxBg8zK,WN`py$|9 p]ŋ/%Yȶj㔮W.yפs+Z ra fB@c9J 35F.˝oTwTtnLoىx_H'Z0,T C5xV3w>4xV7~yd{\%#S(`"˯[1H!B+9( x\J*f.}ϥT*#gpH@9om0cbR}V;""*݇yM02"X V6B _D㶭8?д{5O UL>OptDu3i7ܾ10, JL7k޲ex]aF^U,j&ԦMȧݻ9)CA@,݆r5yt7ϝO*W{džRFeDW;C!p,+,ĨHoc֭#v];CZec1CD 3#~nrmLB*OP(9H.Fjb4Ή=Ok>3T?<(ƍ0MM` >x~4RH!Wts'n~z'u` 6oaaW2Ũj@-yyyף(;I]~=2 7t:ܬAb`]Zd jH¢l{_l!qZ[-]@^@)# +\/F7:=|9䕘c%ꂖrt58Eك,0d8k PUW*RTO 06%JFFZ}+KW4K"ʉ\,$X6Biԥ.d7@E@iIQyyOt X$DaimQU% 8v\+1|lIqdvs>JfƠ'9m^8;'(C)rO;ET bFؑ01/iv RG*VR!6" 11%R:,n 69`cXWM,a9-XFB0E2^1ƉP'Lc'o,Frdj1ZHe)Z -]6GvFl;X4 H&aҵ8Pedď"@7#{q N (m.ڶ1N lZόUvo - 8}+ƻSP |_` S<cHwMѹX9NwH v8GCH1aw;£Ca8˺iWL*%*A3r`,B 9)TA4$,M"@e Hz^i 5mE- D(Eop<873T7I 1|Drd@3%jm% fwrBTH\[` #8H7GWv8D@6J'S"s:\>L>6)kdM-THDP @B0k1mB#vyE9G}?DGoL6!a(u&Da*b6e+P5dDznߧ%8_bi5I*܁qFh>1!C ,vFR<)Kӿ~żoZx` 4c'3Uk΋/D@SG`F;3 MyLWC>`+nRyׇAr~k>O_ӊC?`;;&cV$h 1 {_}O чcnޝ-0X4ڬ\Yz)F[]7`G$LͯX[~-xCxǹӟ >h9b~YJzŒWr3{GxC2~ o$ 4 q0?t9>8:lZ-IENDB`gosa-core-2.7.4/html/images/setup/server.png0000644000175000017500000000631411041626501017424 0ustar mikemikePNG  IHDR00WbKGD IDATx{pT}?ݽ+$$@@ 6j .-űIe:t8P4k;qch`@& ST $xEd]c}OglzZfٳqvƾo8prՅz]~𩲶6=$QTT|=3rr\rs?:u^TVF.QywǏNgtxYUmA[K^^,/˯@uE]O3h=ᰆz7DNNyyl{55p] PyfS\bتU'.jl|i&CߙDbNĆ,FeE5k^bmtimmwSl<)0cѥ& "x:e95fL1/Sd[O.^?]O<1b1M=&xh39TK @ Dxo[젠p+}kIw:OtsT?(%ݜ2\4%I I2 -(W WƎSihltֶ}Us<&)>?i&F)"HR,K45!@BD!ƌTT4ow jvW̙q824X2JęfrdH,AsYe())m*(..YqK?#@]ݵuuuoBOСCq;U%'CJeG65nmٰ= 3s{}1ƎMAA.DH$MBEE" ;#rXt-99 6g ܾ>JZ%~F$b+#)sa"HܫiZN.vފ5q6XaDgLPIqQEG؋Mp+p\/0 {$T aTɓRS)@$ I:0[oBQ"Yn5MH[ژ=sIdԩBM%~?b!Q Eii9D6͛EP$0nܷx o5MC5B#`zTE0"E^n>41u=[b&Q2Y1XI~c& Ə/G0 0Pr^?/5w'd˸pVTO!%I2ha,GϘ`?bnRh-(E9#4y}l@HP_Bii'/fK$==;0>n %IbҤInbD= 7n-!'']ځ,!%u]'6vc!HE.]jDQ$ewW4933c֭;TQ2p`$e0~fdd8HD(0N l۷DSSVk)FpŒK ]GL8.W;7@v$KСSt:+|rի.$ضH9 h,\8Cfy9rgrpر٢efaZcckblZldf3rpNf͏q8uޯn~WHXCFTlgϡ/o9a/dXBYh63ػ8 ## U%JժQ͊ZZ8vJKv*+W҇'O^}-[ ^@U˻L/x`tidY4۬iMgE[tunWoiMjQJYH #esZy]a倭&P,X`VwusH{%`0HRTi2X,ɱH,2lX׿)Nd٫_hiqvmdB~3(/{׿htCÕ+xgٹso LHS< CB;# s0wv%kZZڧ.Wʺ ͠BfBUv;,Y2[.||`NZ(FJY4c}$279wh Z[۬޻캺^Yp;ke˞-()!֯+$=N0"ŅQU; "=ڋP\{ag4^IѵfǗYwߓEB*٥eZ%r%K̹4rǁ/ϬnήMw1pqʋE\X"vyhG>RR:w|0\-j{سZaY|ϭY@* ,L#=q TXۇ2xf,5lbU8ṿ{uŽo ? DbaD F`?'TS/.srNqK;:Vtcփw$D( NxiƀZ̯ZWyϽy޺p8QPàE:'3_8p|'=&0⠆"je~z$(珽žp(>PSXfV7f7&pfP P@׈3Wx韟y?^/ٮX0"Z0葥`č8 %@sY8ѿzSc8@Ez h$h0z,؈E-p?䫯 `,57 N|n#hSljH pYz''9;u)ʼvqT}<ȖF79anca{ !B HAbI\HY遯k}U^,ke _:/v>8J[JW4'wnr#nj ?\H[n!%f@$!kktLN36tvޱs֖0(. A 0"Wpb/=l9* 4 8k̤Eڱ}`h?MJ{g=Pm-*DBIssr)a5 TjZ)wW?zm|:`A E^|l̺}H)>wu +Źta/@C͏XC u=>ؙ9^{7C="&y]_BłD]J1{~|͎ڸ.mڳ9ՈTög04`[gf\Y׹z0 C~07@[ƍwr9\E{kl $JX[cw7M `h pYP  eޝ_)Lm5+=дa`n&MasE|װWϞUJG֯ eh:CX6BEP*g0k۫ m{v]0 ҽ*~uɅT5p-Rq89i^;RBwO#ql!HWkOOx"CȄ\fSiT[, CP'7 5eѦ;;V B0vbi*Q.Z&2-A~Jf /!TPh|_ TҸΧ#TA:]drbyudH]ʕ{r1^B!J+ޚ6ܲ\R Qu!7tGAU|]= |{ߟu첝~~|J%pYZ-ai}mi\Agg1 UYZI>Y1>>ٳs:u>57w]STqĬ NEId!cx4놩iu)},7o*PT/yo{/UZk<7rJ)S ȔH҇h62)sLqϮyB>O333455E)ݻty(X:A@Z*m^tJmoo\{a͹/qLΞ=Kn*)m͕xi`Er=|29sz>azZYasbbVWWinnz"B"#B$- 6`8drfQހ['OL@AWxQ?3toDt.wW9nqqGU ,}v[~D1x&NJ^'D<.ر$vFlq%j Rb<9k-X֊IqOx:q^IQY/%FU,<ˆ $M0x$`#C=Ysg=9*L@++o11l ?@lނՉ+c^B$V֏^@+9?BcFZBVHf̒cJ%317AE_[_ ,2-QI {Nqʒƚ2:zz'kfg aa q +'VkcjqC!XYU(nralPnfJ&|Pڑ 6qx68'FkL zN dN`9q!LC=Bjc r>zq =GҠ LV۽ q1k~St\FjyFdfU̺XO<%D׎ckY W!dVt+:ㅤIHaV 'l:fj'xģĊI";Vei]AXJ=%p<دPP_XXMX НX1*e;%BHKKK4;;Kf=0-lmrܧAw=X~Au˨Z]d%p듬l@#>% T! g4:^jT"PrB2U)Fw^Zߡvsdz kd7O>}vK1N(y}VBBGHe!zd&i2o$O#a_>ipmg>c;2e%=I&ޢ~ا?x=ױ ݹsOH.^:Sod;wæ8Ud=#* z =ܲ =Ы wyYALn+CZG4Gn݊q 䄍-Z,\:n΅ ƞR -..!f@NBC (= ۷ơfRS$p׸k*LQ(r ?q cs,|J̇j7o|v}cc=}![eލv?Q^W---ƹ w^gJ׾Uyk׾KV6V9u¼?WS33!?:еjv[GF75:A7@ܯժwW&`$|-H b&C0/9B@d^ZWVVʈs[[_Z_XM_OyW=٩&”[icGłԄHyoU2p٦EȂ58%pJs }C28IENDB`gosa-core-2.7.4/html/images/setup/ldap.png0000644000175000017500000000760411042024753017043 0ustar mikemikePNG  IHDR00WgAMAܲ;IDATx՚{UՕsM?4 b 1 qB IfbUfTy8N&)'q'S+1:qhDE| 44iow߾s{HLUVժ}}oo9 &.*[*Z`M}22U an&W{ƲW첳$ه! y^zo&cģbXLduz&ƳƑS}T$oy=h^J)ybZbҴY,P2dlʊaIuRf ʫnStmP#w|n%?WoHlϓ؎KY7Awn"4 EG2[/ض̞{i/vPjQ` rXh8@hlMaYZ}(BbQ'#<7U@h7V1mGtњ䕃SU*M&cZ#<(iaZRmne p\!B(hJb1ѱMH]xir*.Uuq2m1:S714eެFR2L*4Yē*hRlQ+B\W"%a;.⸒,᠟MS지ީP.8ߧ1Oh(A8g׫N,#K^|dA'[L5)RypH e,Sbp4m(b*k%hPUL,jbf>?Ou3RJ LJ eâXXh&Ou%Vڎ^I@ %}G)L#й%*\`"["Xb.iGX&v\TE%"r9tC=wh:uLnU>篁p^I( .EKs+ܐ+o (HϟAMHʥ* 3Y膅2kHEUi>F""Hg0 INdODPT \py.HE㺞.t: TUwpRyyo/Az̿=l^G(M2s5:[t̜M]2B"D[!}L~7Uo6 \՞t.'[goZNpl G<hI2ζDb W!Ky|{چKF [ \s}&::86RE@4@QJ(9y*DOz4GloX>r02| k?\E<93 MXDimX0 EO4WHg0+^;8+/RS\aґߝ 6]vb}. -1$cA0 *b` z UqIЯP& hdeloj.\hf0dxx#7o?)*[è.F0aKq,Ye˯k8ѐF/baD-qaKd06i\GvGONf |>eY^ ה$t&8W¡̘aZ6xԏĠؖm[HY=؎"&=;^g kZ(T%@vs-w(KW_WP$2wv~M%_2)M %n Se,s{^}z!`&iiiِL&<4R?3Y}fwFO~WfglUfuSuHJD,B8"J^yqׁ<?\ }W޲q>L&(^AmTuMDd&k5벥/5f8Q,޷{wN W?UVEǡ0;oعs;^hs>Ɋʻ F6mڴᮻڴtRy:Kvzu.T}>50:PZՈjb5BjpW\q-[>~9X ۶\.311M5Cbcۢ3Sm}>UVC9<Rf*֡Tiޭ[^&ʤRpVCnJ|t\YT޷Ŏ#h+ey 1` 0/[~] F9ܙ 9kyɧyN& qyj?GKF` ҟYvw~<7m齥z3k?*FCFV͙OQqjÓvfǣO<ܶ|/tމ}?۽} &[Wn]T %t ~ǻΣýfdjYvTem'#[Z,az'3P`ȁ[~5/TK \$ŧ1E[.?m?"e?IENDB`gosa-core-2.7.4/html/images/setup/welcome.png0000644000175000017500000000747311041625510017557 0ustar mikemikePNG  IHDR00W pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?.y-# B30AhFF8 IJ \eP?my o @W@k2F_̀4  @K33hg;?>g =@ѣ@%@KX @zLC,XL~\A7#33@0< V[1yb(fHfbrۀ: YTX\3|309iL3 ۀ OͰ/@ ,fNC l"@?@G?c1ÿg`FǙ$3Zf&, 9Yppedlaǰh4) R=vfdRcO g 5# L32CP/+ 7nV,Lh R<  81 +ÿ? d`:_  A`1b`v,(c! 6&K'!Q0/a]X??AqA(30S30>0!1~1ac;'X`E+.@x=/0cfp0b`5B=~u{'`~t +.8ـ@63C -1 y z?0VAΔMw` _c`2``G(C VXFxg: &P̰0&v/?@oܿLBJ٠jAΙXXڨKK paA1+#0P-+$#TbxRE wD( 533/}Ÿ@_|6  } 6D3#bHU|, 7$.7~a0l+9a`00Z ;%8f  )}I3@1.ŀ0FŸ0810sǻe@`- j@ v<06ȿW` |A⌿a!X`Tx ul ڸ@Q`ÏW} _kۇPip ?Pw<$_hiLXlfP^Dۘz4j%ge7E%D0! ?C`{pX n?3Cw JZ:%X6q zX|<@33. T#>!i@r- : % ?8]dx@r#@Ꮑ  C(0I1Dc蠿o;@M!b Q1n206*` 1YI \wb!Pn-$ ՚t;Ҝ@ @5ePƙ`$m7 `/3*<JoPa y *֌ LL ßor*$Af{AM!h4$Al~3~|cTT3F"ԔkQH)f4xB+!VDD*#`5L@ F3w>2Пp ny߿@D- Ab75*+ϙ+3mSH!@3WZ`{ˉD-ao M-Hh)֮ Ì jZt  Ml@0|=ۿn?羂 ,B& y\X2038\`_L8E{2|:r؀? τzdD° kُ6=b`{A~fb&1`vi$zQ.FA4L?bpl7# 6fnDj#+s̏W&\M6#hD@π*3^TJb gwv.`<Ëu?fOIq@p??-| MF҅UҠZ( @9?:xOWkD'`D u hdaا~~s4gEpÍ? ODž1 y6A.0O?Eƫ[o|QKhy`:?b`YÕ ?CG ֯~O1O @3Y@@89,gs6u32B5>^3@ XFn~m(;o`) t808A^p0+g^0~BI 9*Y28-e/_?}gwo2|:@O쉯[ `/Û߼He~@x= ǀOVJJɕ:4w10|s0|zӧ |d2weF68f@///.3 Ua&5+0afxXZ ??0/sp0d zcd8F03`:nl}DsG2prr2pqq1n߾pc?~.޼yN B"^,&z*@谀< qPr&%g NS͔x z }V#`@ַoTJbAr@@@?4^F〡+A r$(|V\ b`Ʀ Rff:)A!s0 JJ?%Myd@&!X}ŋ?y  $# v8yd&0  Bhs$ǡ*`YlIENDB`gosa-core-2.7.4/html/images/select_proxy.png0000644000175000017500000000157610230726066017511 0ustar mikemikePNG  IHDRagAMA75IDATxmKL\u1s;S`Z"2 QIdhPCMWMh\ǢIƸָ11q4i1M`AR3j@[#S@ {;s.os|'H<+w_=7jۅ0gn;at1̉b,*eS!D,Dt$>1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/html/images/configure.png0000644000175000017500000000712011362006411016731 0ustar mikemikePNG  IHDRa pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FkIDATxlmLu?w#|ZV"Dk Ѩ̡67l5zࠉRmwO cD;ûEz]a޽*N~R:\e8Z](U;& LO?ի:=<#5K=H)4 j쩬nެ|Cf B74ΉϽSUu_/.-$5 d}:;;Ԅn,5%%k7wtUN7Okq8 XܙqCfsv㤤gxeDCϜR[,.)EF}>瓖JlS f}~$ @t;v"{%[FNш3=eMіO0垞H@(=GVQᢀ?-z|nMsYkBd{,o G0Nk~#N}u"fI]jfM2%#v5@w==2)J{Um, skLJu>[ m|eHwQ, z0:<+LH1/2'F_|2s}=/T`fROZ[6ċkL.i P[ %L>hF0!]{b[ l\꽲&n}9r #?y ڴ@=p8<`-R߿/ c6 q5&B,l@6*J]Phnځ$^x<صܡf_ x t, N iorIENDB`gosa-core-2.7.4/html/images/forward-arrow.png0000644000175000017500000000024211241033002017532 0ustar mikemikePNG  IHDR~PLTEU~tRNS@fbKGDH pHYs  d_tIME B IDATxch`8`h$^1PIENDB`gosa-core-2.7.4/html/images/launch.png0000644000175000017500000000235710230726066016241 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb`xPsq/d?fc@xAԪnX?@kYJ00100"PC #r 20c 3| 4t?dzo?o6b004I.uf^&ß[1s1|3` z0 p!H) d`7=@04ӷ ?~d`|}˗ b9  K˪r%2*2`pf)2#?8xNc`ysŧ ?k >0pd@axP=#!Y>qA3c+c`&?rcL@C@1#:hXC"C] w1 l¬ '^K1 В~IENDB`gosa-core-2.7.4/html/images/opacity_black.png0000644000175000017500000000025110640154362017561 0ustar mikemikePNG  IHDRĉbKGD pHYs  tIME@"tEXtCommentCreated with The GIMPd%n IDATc```0B-IENDB`gosa-core-2.7.4/html/images/filter.png0000644000175000017500000000065511344746456016267 0ustar mikemikePNG  IHDR7sBITUF pHYs:tEXtSoftwarewww.inkscape.org<,IDAT(cI4`yRwzTXfjǸ@-_{_=w{kRF?CƲ5?&~FӋce &g6h>{7ں1(g}pu0Ag TYn|+{& ]* 1˞]+I?rd1T9_ޞYnSWgVY$VT2Oά­`u NV//i ,xE;/:IENDB`gosa-core-2.7.4/html/images/action.png0000644000175000017500000000061510230726066016237 0ustar mikemikePNG  IHDRw=TIDATx1NP_"@D마"qV$ DGJ$.Q(S,mN"E/&vT湗.@vb9B|k-݆hkj b .1dyZM@:`wF֔ _)UgULC7ϓ|b;hiBP:Oo R.u>,U}X^`Q=/Mb· |!d(5 8gG\[_EuϞ| N3#v~pw rdbU,. ٜ! bœhr93n9 eTrVM[s}5Ѻ*,:[*eK)D89xǓ! @zo/\xO&!` |Q fsRX[s, Y(׳BfŰ1C/kpJ&S"RI yyC%Q8tT*EX~Ϳ{=U(XK췢UI^ @c %QZkFGG˩u6x"EڱFwQIENDB`gosa-core-2.7.4/html/images/label-locked.png0000644000175000017500000000064611343440361017301 0ustar mikemikePNG  IHDR Sm.sRGBbKGD pHYs  tIME 9" _tEXtCommentCreated with GIMPWIDAT5ûJPēPKܜAҡ/eoѡJ6@EQS$@m"%$ms!A^69UaiԪK \>(jtG]P4g۷# 0}-fQk4] @ޜO΋b!@M"x @Әυ)'(JA`?b$!J`Y@"!=_ 5T ! /&Bx-IENDB`gosa-core-2.7.4/html/images/datepicker.gif0000644000175000017500000000173711364063662017071 0ustar mikemikeGIF89aT % |3f̴-pppk5Icz`/woP|םzXYX[; :rq஽ԊZ JwՃx׺4:kR㚨Dsr@ 8KetfffeWEyK~x?oѡԔi匥蜫?tpa]!T,HAȍ?pƑ#0؈  SܐQ!QH!H(P` q M5`AH&F B B NPpa pɵBH`bP jXxB ٦ROִ0"Î$xH0"#x@$%?1!Ca@;gosa-core-2.7.4/html/images/rightarrow.png0000644000175000017500000000153710230726066017156 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME ;SKIDATx}Ou?R EWk&r=[^DIFMBUX6,;㼏%7y9<<;:ae5ع}VX۬hxE(̣Y.iD`}w"83{&f8BK"J+WeyTyXLX^@ȹc otTn.GLM4i7ڹ`iA%t6Hx<ཉ^yɑ}&Cl_kJTb[vx~GHGI#s$z٪ySl(/LٍzWeepOTBXY jR}z^.P*xhyݟ77݂ ivcQ2N_$@bꐩRDRV5,-k@pwȅJVR@IENDB`gosa-core-2.7.4/html/images/date_active.gif0000644000175000017500000000006611364063662017220 0ustar mikemikeGIF89a.!, k @I);gosa-core-2.7.4/html/images/status_pause.png0000644000175000017500000000135610763253073017511 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME '9fN{IDATxڅSKSq=ݺnm6b!DBBQP\҇{ zo=ҋD102GfkNo}Zl<9|>!8` `wñC{ggrIP#p=ޣ> n$f@gjfA|p!Bǃ8Lve{vybAL<xpEB?2XvN6&o~t;Ao0Fnj )rf$pR֥Ei_ {԰m@}~uEI\ ټ]r6_;ɘmpdD2EV/#3(T@(㰙 p vO'p(ثA*|`%ԉ9M<+&/PPK`x{OV Œajfѫȱ  kfB9;7Q>&4%ƚ#~ ~JZʦ vNַm2HM# -&򤪪zVC86vÍ&3]F婧AnmQUU@QKdX"=QHYj.olȩZdiIENDB`gosa-core-2.7.4/html/images/info_small.png0000644000175000017500000000165010230726066017105 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME %9tEXtCommentCreated with The GIMPd%n IDATxeMh\eΝ;3ɤI̤FMZSVP'J PӅ.EnE•l "]KR`6`(EZCM:!3M&sHZ=r8G|12~ܖ@-J+կݱ7}{^l7n}׏va.j$8e& _>nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R 9 0Cuu Ri)Ó˗/d8LB1n x #PGׯ] 5d&@ j1TQ@A[U߿QMC r%22 @E 3030HJBh "c +4 3l00=<a9  u b r @=.]b0ZMIIn [`āki ዊ20DD Pw:uu a'X*@`APFcOCV3/%̿,`4@2TS/Q" @~ JQU ffF>`&?( @ L23ʊ""_{oA?@ > ?P#27>pj0@ > cb :oBj. @`20? +(2DqH H-T|;Ќ.Y 34(psAT00̝HNf`X`ǫW ~<2` x!X 20UP PwC !B)61* BC/R@aK.W363oS =B1f0@a  ^-!WMbx} iUM̽IENDB`gosa-core-2.7.4/html/images/small_warning.png0000644000175000017500000000107310611414401017604 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?% qI fRP .@ÕOAbCk'00 j1l  \b .g`APA$ 4+|Vpq6'03"j!2 BR  5 9TqЂ?c?cw0/9@ =ุep30 (@1! U>0p  r8=A@N/ 7=v!B \j8 @.- Ý@| ~π"' PpȀM?H hǷY%]}D.3&(?@ QOffl FJ3@SͶAuIENDB`gosa-core-2.7.4/html/images/label-new.png0000644000175000017500000000050411343434640016625 0ustar mikemikePNG  IHDR nsRGBbKGD pHYs  tIME/IDATӕnEc`8>CRf S( ȉ LI? 79,! SO"\wkQRߖ@ l U:옔SAWP0'X;6VEl=Gʺ#^1% )KKR||ƨĽJ擀~/bW?GAL QL*Ni:zIENDB`gosa-core-2.7.4/html/images/save.png0000644000175000017500000000106311362006411015706 0ustar mikemikePNG  IHDRasBIT|d pHYs:tEXtSoftwarewww.inkscape.org<IDATxڥ?H@_t:UAЭE$ M謸Ag7BRA5x_"B }|=\0VICRU Pܧ'EhZTi%&RXX\'( Aۛ+T*Du]h1 .^)B#H.^ݮ+Ӵ>LB=rY' W>3Gkӛ62d&VtIrpA=F"D4h:Lja|:$_t:ڃiA*˸8;e[8( +59G>!y$qc0Ma@uѓ$ުH42mJ 0mf[@|5 VA^Q<@R 4 PO\IENDB`gosa-core-2.7.4/html/images/logout.png0000644000175000017500000000246211042061013016257 0ustar mikemikePNG  IHDRĴl;bKGD pHYs mtIME -1tIDATxڅoTE?3޽-DP)BA1"D#!!)ϼ !6IG4(,"T vnwvaP,xo&|9sbk,ujDUp2/x^Z eA CW yΦkkGx%1k̞h!A$B ꟿFU5V:[}-:Nik:J@Otr[zKX5~H-jǎS&,g/yM-lc,ZazC:00ڰ,5 =8&cLgL&`' !z7ڃњz*vit#L  _ol\Zz-eVfB)WkD-sҶQ:z̟?oN+{ _a셯_1|:?>6V~c߿b7?116 s QTŘ!߽RĘ=*rǎ5C!Z @C!;++#3#';!^.W@O?  @; 4Xr`G(a= .]@@^ tf`|i ' Y_?>'v?A O80‚ hׯ ?;Û7؁3 LL@W`@~@Ac0?Pd 4ϟpb/^axSEׯO@ Z`F_??#Çׯ} @_7778l (Iׯ3 `2  IENDB`gosa-core-2.7.4/html/images/status_restarting.png0000644000175000017500000000071710441622602020545 0ustar mikemikePNG  IHDR&N:sBIT|dtEXtSoftwarewww.inkscape.org<aIDAT(mϋQ6%!)cG1KX(,d%XNl(;+KV6lc1=ssVqd'i7)\SvbxZU`ulk=jp3hXUE\!ɾ$J2T]/Ml"vij.apgڝ ީwURU} >pG6Q;ػz Ȁ/l$ZGJ9>kI槈UKxi,4= I<`ÿRBs9gK _w[klv333o*XYYPJ}gbbbrhhH1s""G}Q~KD(!k:uG?|0DD… P͛7,//Kgt|ffsN9 XKhoo,aș3g>vy366x[vH[ǵ$If099W;JsZ0Io;{XdYVSJ!"(dl9qyɋ(, pT3Gb_Casּ4cJ ^kz1^UӶqk]t(kC- AEoCJwrе~#$z BP@s#6Aaut6af[CL8\AV܏(wBjKheD!n|f6wSw]%2MR JaPjh Ie,-au ?Dz~͙W=-`grsȋرűEz$_ݘzu# ‹{ág#_ȵ'ӞBU*p Jpu F1  F " @aC/Gpr000r10 0`^1a8ph:P"A %^`` S @@14%$@ xjPM3 g 0f6Or n5]ex4ؿU |i X?=L ^5S(\ `N~` /, {b,HIflb47Ź QU!6IENDB`gosa-core-2.7.4/html/images/find.png0000644000175000017500000000116311344746456015715 0ustar mikemikePNG  IHDR(-SsBITO pHYsu85tEXtSoftwarewww.inkscape.org<PLTE  ###$$$&%#'''(((+++,,,---2224216(6(6*$6668(9,%<0(EB@H!JJJMMMN) NNNS3USRVVVYH=hXMhhhiWFiiijjjrposssvbRxxx~}@W4C [;I a=b?rTz{: tRNS $&)GbPIIDATЗl-"#Nt/J( E Pz,YHLTC^Kl@Wju+4x;5i7odS)q{i4ny?ՐC}x(U>C;O,7I٘# |\WIENDB`gosa-core-2.7.4/html/images/filesaveas.png0000644000175000017500000000234510230726066017106 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<wIDATxb?Cnl  >C`1A$D _4-O'H X@:X(3yyYi{g0s*y"w=kd!H?ͅM`5 _;+Q rd1 ȯePn|?_?N0/eaZ[ #/## R_20u0ػ1y_1} X@q+D3dȾ ߿chG\ba9;/J\x X@./X?Ah1P?'718پerG 7s/|rRY<@B?4C O *͟3?``sa 95 @ @噶3a(2a`-.J|ſ@1 Iv LA"q fEg.a'~ @,4r)eI&JV, t-38ܿ#KF،aa, Y 3 J:? &! dCAAb/ axAݱ >b`A 1D\ Q_'ph ] "C r >`=8 0 9?4c00H]7(#LK203>fPq%,[X> 21᳗`PÔ~?8 3~D@ Pj i@C>WV ܌ CeA  `C`"ۏ? ?˃ߠH4!,(`DH \278wF,@>;A`bܹ?j@287H=@3 〦?NPb1j08y#8200C1c/@@<5@+[4IENDB`gosa-core-2.7.4/html/themes/0000755000175000017500000000000011752422547014301 5ustar mikemikegosa-core-2.7.4/html/themes/default/0000755000175000017500000000000011752422547015725 5ustar mikemikegosa-core-2.7.4/html/themes/default/printer.css0000644000175000017500000000043211341512277020113 0ustar mikemike/* Disable header and menu block, for printers. */ td#menucell { display:none; } div.plugtop { display:none; } p.plugbottom { display:none; } table.framework { width:100%; } div.setup_header { display:none; } div.setup_menu { display:none; } div.setup_bottom { display:none; }gosa-core-2.7.4/html/themes/default/images/0000755000175000017500000000000011752422547017172 5ustar mikemikegosa-core-2.7.4/html/themes/default/images/logo.png0000644000175000017500000001011411341526551020627 0ustar mikemikePNG  IHDR}&ɔsRGBbKGD pHYsaa?itIME4 ` IDATx[k\uNݫa hXVel$! qa^R1`"\ vD!6Py)0!A1.x^!%c푼}(·sfzHqq鏶ܝcH[H1ϒܵ+$S1 ] P(;(F?DrS$?Ř#ENe'Hp8I,#' |jX[Mt"|Npch&)x\D6{X!yjG-lPDw-"R=d!CƫVxdQk2k+D͏PB٬pYoٶ4ɫ۸p <(?Gr9ɡxD>I6bnS\r3'/kX@&ب_*o|׼fOEI,02$WuZ!yg_w22HW$- 7w,H>lx|[jl}7$g׷Z-F!]KC ;]r?XA4aq`̚q{I#<3< Niu8@r8ǭHԦLژ'9ɓ-̸c Wc$RI-X^MZLr!)(ߌYh$y:tpzR ZkP& ;L)5VO:S< D)%J`qp6f*Ma~qc,R aJ,H ˇjw7|"|8)s^ȶiEkM_v5Bk-^#7{8#n,3Oqs }y]&#Hmq"9ɵ ^CriAr6a3f6L_Mkzilljmc:7oxZFڟ ZMye4J>9Vr $% űqG,O\hY7+6Z:S7ETlD6|l.VJqlbN& lQ' 0,Oa:ZRp]*XHjceXK< l6wtD+SBga8#IZ8H{Fapo8En$)7nֺ37n\qcZ+@yJctǩ;6E6tM6U|ߟmRF9?)}C:^N]@5[ tZkd28Nv  ð"y|^\^bܾ8uM`pc&PV(P,:HN_ 2GD~HH7r;/uWv{]D"rQFcv&Ɋ[$ViݨU~b{"4I/QE".xR`aT)jzɻm/"5/0663[:Lzv^^fqu<\Z/o4Q:V\?E׆_o `75|6c8ιccc\aa*7\Lv^-=1Q1)&rﴁdOZ]fBpֺA@F);|àMexxN 7Iix M$$" BDUh (H$ɻlvM^g,ބH>ށƲB%3Φ6 Rd/'G$-MSϊHp^Z. NS Jg0k]Sʹ=$"Eds8κd29ҭ'UzMRFGGfxۖMaOaByJ $op~HrǔJ#霸k`{ZWi[Kkx7 Z[V5sJrE2\l6= )A& Ìg2iU:ސH$HFjFSJ!JDy"rZVv>fs>9fZ82nTn:!%{lZ=dJ^#Y1nF1V+#GIܻ:ɳ~RTFH~ONEU tDd ɿ-Ja3֝fy_b"R"yua\ ާT*mqr6~$gaxoRYsz"pX^TNZQAp<3YA .vw?"|sEr ;)=ͮuZwGVb[1i!Ak뺛Rx"nl{0O)Bq^pOö;[mʗ3zO+_sma.gſKSjQ^XI4ݳ)X='N,_|ߤ#[œv+6`l4DyqfsE,H4Gڑr]4aCIe'K# ?NDSh,5 |K(>7}J۟TОtKi@I擕tL{gcEs{XL|HYymFGu~:$vmˆԥ!- Q]v1ف_ُeU INguIENDB`gosa-core-2.7.4/html/themes/default/images/title-bar.png0000644000175000017500000000546111341526551021563 0ustar mikemikePNG  IHDR(agAMA a DiCCPICC ProfilexwTl/]"e齷.H& KYe7D"V$(bh(+X "J F;'Nw>}w(!a@P"f'0D6p(h@_63u_ -Z[3C+K;?r!YLD)c#c1 ʪ2N|bO h{yIHD.VV>RV:|{ [RF ”"MF1L1[Te'Jx%C%_%RJ#4GcӸu:(G73%Ie%e{SC add1T4UT*TTTUzUUUoScemUkS{Q7UPWߣ~A}b}9Հ5L5"5iјi<9Ъ:5MvhWh~Tfz1U.椎NTgNΌ|ݵͺHz,T NI}mPw ,tӆF -5j4oL50^l\k|g24mr6u0M713fͱBZA EEŰ%2res+}VV(٬Ԗk[c{Îjgʮ=~mCNNb&q'}d]N,:+Uʺuv^|o]5˟[7wM׍mȝ}CǃQSϓY9eu빷ػ{^>*}7l6 8`k`f 7!p2)hEPW0%8*:Qi8# z<ἶ0-AQ#p5#m"GvGѢG.7xt~g|LbLCtOlyPU܊|BLB}&:$%Zh`EꋲJO$O&&N~ rRSvLrgIsKۖ6^>!` /22fLge̜͊j&d'g* 3]9Z99"3Qhh'\(wanLHyy5yoc( z.ٴdloaqu.Yf WB+SVv[UjtCkHk2zmWbuj.Y￾HH\4uލ6W|ĺ})76T}39usocٞ---zl=TX|d[ fEqūI/WWA!1TRվS疝ӫox4صin={j-n`[k k+x\S-ۆzEjpjh8qn6Ik:8w7ޜw[nn?uݼ3V/~ڟM~nr:53(ѽȳ_ry?ZrL{퓓~מ.x:LlfW_w=7~oLM˃_uNO=|zfڛCoYož_CgggI) pHYs  IDATH !Xn=r^P[kGgc -b`Iղ✣ G?ޱ":P>tԬ &/xMCjg҃pV 9PTKbs~95 }AJĒIENDB`gosa-core-2.7.4/html/themes/default/style.css0000644000175000017500000010266411511573666017612 0ustar mikemike@font-face { font-family: 'LiberationSans'; src: local('LiberationSans Regular'), local('LiberationSans-Regular'), url('fonts/LiberationSans-Regular.ttf') format('truetype'); } @font-face { font-family: 'LiberationSans'; src: local('LiberationSans Italic'), local('LiberationSans-Italic'), url('fonts/LiberationSans-Italic.ttf') format('truetype'); font-style: italic; } @font-face { font-family: 'LiberationSans'; src: local('LiberationSans Bold'), local('LiberationSans-Bold'), url('fonts/LiberationSans-Bold.ttf') format('truetype'); font-weight: bold; } @font-face { font-family: 'LiberationSans'; src: local('LiberationSans Bold Italic'), local('LiberationSans-BoldItalic'), url('fonts/LiberationSans-BoldItalic.ttf') format('truetype'); font-weight: bold; font-style: italic; } body, html { border:0; margin:0; background-color:#FFF; color:#000; font-size:13px; font-family:"LiberationSans",Arial,Verdana,sans-serif; height:100%; min-width:1000px; min-height:700px; } span.highlight { font-weight:bold; } .left{ float:left; } .right{ float:right; } .v-spacer{ height:8px; } hr { border:0; border-bottom:1px solid #CCC; } a:link { text-decoration:none; color:#000; } a:visited { text-decoration:none; color:#000; } input[type=checkbox]{ border:1px solid #CCC; } input[type=text], input[type=password]{ border:1px solid #CCC; padding:3px; } input[type=text]:active, input[type=text]:focus, input[type=password]:active, input[type=password]:focus, textarea:focus, textarea:active, select:focus, select:active{ border:1px solid #777; } input[type=text]:hover, input[type=password]:hover, textarea:hover, select:hover{ border-color:#777; } input[type=password]{ background-repeat:no-repeat; background-position:right center; } textarea, select { border:1px solid #DDD; margin-bottom:2px; background-color:white; } textarea[disabled], select:disabled, select[size="1"]:disabled { color:#666; background-color:#F0F0F0; border-color:#CCC; } input[disabled] { background-color:#F0F0F0; color:#666; } select[size="1"]{ padding:2px; border:1px solid #CCC; margin:0; background-color:#FFF; } select[size="1"]:hover{ border:1px solid #777; } input[disabled]:hover, select[disabled]:hover, textarea[disabled]:hover { border:1px solid #CCC; } h1, h2, h3 { margin-top:2px; } h1, h3 { font-size:13px; font-weight:bold; } .required{ font-size:xx-small; vertical-align:top; color:red; } /* Error collector */ #errorbox { width:100%; } .error-collector { border-bottom:1px solid black; width:100%; z-index:150; padding:2px; height:32px; background-color:#FFA; -webkit-animation-name:error-collector; -webkit-animation-duration:0.5s; -webkit-animation-iteration-count:2; -webkit-animation-direction:alternate } @-webkit-keyframes error-collector{ from{background-color:#FFA;} to{background-color:red;} } .error-collector span { font-size:13px; font-weight:bold; } .error-collector td { vertical-align:middle; } div.scrollContainer { border:1px solid #CCC; padding:1px; overflow-x:hidden; overflow-y:auto; } /* Image with migration color */ input[type=submit].img{ border:0; padding:0; margin:0; margin-top:-2px; display:inline-block; display:-moz-inline-block; background-color:transparent; background-repeat:no-repeat; position:relative; cursor:pointer; } div.tooltip{ padding: 5px; width: 500px; border: 1px solid #000; background-color: #F0F0F0; } div.img{ display:inline-block; display:-moz-inline-block; background-color:transparent; background-repeat:no-repeat; position:relative; } div.img div { background-color:transparent; background-repeat:no-repeat; bottom:0; right:0; position:absolute; } /* Title bar definitions */ div.title-bar{ padding:0px; height:40px; border-top:1px solid #111; border-bottom:1px solid #222; background-color:#000; background:url('images/title-bar.png') repeat-x; color:#FFF; cursor:default; } div.title-bar ul, div.title-bar ul li{ list-style:none; display:inline; margin:0; padding:0; } div.logged-in-label span{ font-weight:bold; } li.table-wrapper { display:table; } div.logged-in-label { display:table-cell; height:40px; vertical-align:middle; padding:0 5px 0 5px; } div.logout-label { display:table-cell; height:40px; vertical-align:middle; padding:0 5px 0 5px; } /* Screen areas */ div.navigation { float:left; position:absolute; width:150px; min-height:600px; padding-left:6px; } div.plugin-area { position:relative; margin-left:164px; padding-right:6px; min-height:600px; min-width:700px; cursor:default; } div.plugin-area-noMenu { position:relative; margin-left:6px; padding-right:6px; min-height:600px; min-width:700px; cursor:default; } /* Plugin decorations */ .plugin { clear:both; padding:5px 8px; position:relative; border:1px solid #CCC; border-radius:5px; box-shadow: 0 1px 0 rgba(0,0,0,0.1); -webkit-border-radius:5px; -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); -moz-border-radius:5px; -moz-box-shadow: 0 1px 0px rgba(0,0,0,0.1); } .plugin-actions { padding-top:5px; text-align:right; } .plugin-disable-header { border-bottom:1px solid #DDD; } .plugin-enable-header { } /* Plugin navigation bar */ .plugin-path { margin-top:8px; margin-bottom:8px; height:32px; background-color:#F8F8F8; border:1px solid #CCC; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#EEEEEE')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#EEE)); background: -moz-linear-gradient(top, #F8F8F8, #EEE); } ul.path-navigation { list-style:none; cursor:pointer; padding:0; margin:0; color:#666; } ul.path-navigation li { display:inline; padding:5px; padding-top:9px; height:18px; } ul.path-navigation li.path-element { cursor:default; border-left:1px solid #C2C2C2; } ul.path-navigation li.path-element:hover { background:transparent; -ms-filter: "progid:DXImageTransform.Microsoft.gradient()"; background: -webkit-gradient(); background: -moz-linear-gradient(); } ul.path-navigation li.path-element[title]:hover { background-color: #E0E0E0; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#EEEEEE', endColorstr='#E0E0E0')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#EEE), to(#E0E0E0)); background: -moz-linear-gradient(top, #EEE, #E0E0E0); } ul.path-navigation li:hover { background-color: #E0E0E0; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#EEEEEE', endColorstr='#E0E0E0')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#EEE), to(#E0E0E0)); background: -moz-linear-gradient(top, #EEE, #E0E0E0); } .right-border { border-right:1px solid #C2C2C2; } .left-border { border-left:1px solid #C2C2C2; } /* Side menu */ div.menu { -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#F5F5F5')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFF), to(#F5F5F5)); background: -moz-linear-gradient(top, #FFF, #F5F5F5); } div.menu div { margin-top:-1px; height:3px; border-right:1px solid #C2C2C2; border-left:1px solid #C2C2C2; border-bottom:1px solid #C2C2C2; border-bottom-left-radius:5px; border-bottom-right-radius:5px; box-shadow: 0 1px 0 rgba(0,0,0,0.1); -webkit-border-bottom-left-radius:5px; -webkit-border-bottom-right-radius:5px; -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); -moz-border-radius:5px; -moz-box-shadow: 0 1px 0px rgba(0,0,0,0.1); } div.menu ul { list-style:none; margin:0; padding:0; } div.menu ul li { padding:5px; cursor:pointer; border-left:1px solid #C2C2C2; border-right:1px solid #C2C2C2; } div.menu ul li.current { padding:5px; cursor:pointer; background-color: rgba(0,0,0,0.1); border-left:1px solid #C2C2C2; border-right:1px solid #C2C2C2; } div.menu ul li:hover { background-color: #E0E0E0; } div.menu ul li.menu-header { cursor:default; text-align:center; font-weight:bold; color:#FFF; border:0; background-color: #415A84; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#5B6B8E', endColorstr='#2A4A79')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#5B6B8E), to(#2A4A79)); background: -moz-linear-gradient(top, #5B6B8E, #2A4A79); border-top-left-radius:5px; border-top-right-radius:5px; -moz-border-radius-topleft:5px; -moz-border-radius-topright:5px; -webkit-border-top-left-radius:5px; -webkit-border-top-right-radius:5px; } /* Buttons */ button { padding:2px 6px; margin:0; margin-bottom:6px; background-color:#F8F8F8; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#BBBBBB')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFF), to(#BBB)); background: -moz-linear-gradient(top, #FFF, #BBB); border:1px solid #BBB; border-radius:2px; -webkit-border-radius:2px; -moz-border-radius:2px; outline:none; min-width:60px; } button:active { background-color:#CCC; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#BBBBBB', endColorstr='#FFFFFF')"; background: -webkit-gradient(linear, 0 100%, 0 0, from(#FFF), to(#BBB)); background: -moz-linear-gradient(top, #BBB, #FFF); } button:hover { cursor:pointer; border-color:#777 !important; } button:focus, .button:active { border-color:#777; } /* Tabs */ .tabs { width:100%; height:25px; } .tab-content { padding:5px 8px; z-index:0; margin-top:-2px; position:relative; border:1px solid #CCC; border-top-right-radius:5px; border-bottom-right-radius:5px; border-bottom-left-radius:5px; box-shadow: 0 1px 0 rgba(0,0,0,0.1); -webkit-border-top-right-radius:5px; -webkit-border-bottom-right-radius:5px; -webkit-border-bottom-left-radius:5px; -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1); -moz-border-radius-topright:5px; -moz-border-radius-bottomright:5px; -moz-border-radius-bottomleft:5px; -moz-box-shadow: 0 1px 0 rgba(0,0,0,0.1); } .tabs ul { margin:0; padding:0; list-style:none; } .tabs li { float:left; margin:0; padding:4px 8px; border-top:1px solid #C8C8C8; border-left:1px solid #C8C8C8; border-right:1px solid #C8C8C8; border-top-right-radius:5px; border-top-left-radius:5px; -webkit-border-top-right-radius:5px; -webkit-border-top-left-radius:5px; -moz-border-radius-topleft:5px; -moz-border-radius-topright:5px; background-color:#E8E8E8; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#EEEEEE', endColorstr='#DDDDDD')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#EEE), to(#DDD)); background: -moz-linear-gradient(top, #EEE, #DDD); color:#333; cursor:pointer; } .tabs li:hover { background-color:#FFF; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#FFFFFF')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#FFF)); background: -moz-linear-gradient(top, #F8F8F8, #FFF); } .tabs li.current { background-color:#FFF; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#FFFFFF')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#FFF)); background: -moz-linear-gradient(top, #F8F8F8, #FFF); margin-top:-2px; max-height:14px; padding-bottom:6px; border-bottom:1px solid #FFF; position:relative; z-index:1; color:#222; cursor:pointer; } /* Cleaner */ .clear-left{ clear:left; } .clear{ clear:both; } /* Icon menu */ .icon-menu-item{ float:left; padding-top:10px; padding-bottom:10px; min-height:70px; min-width:150px; cursor:pointer; } .icon-menu-item div.img{ float:left; } .icon-menu-item div.dsc{ margin-left:55px } .icon-menu-item:hover{ background-color: #E0E0E0; } .icon-menu-item h1{ font-size:13px; font-weight:bold; margin:0; color:#333; } h3.icon-menu-title{ font-size:15px; font-weight:bold; margin-top:8px; color:#333; } .icon-menu-item p{ margin:0; color:#777; } /* Errors */ .error { border-color:red ! important; } /* Date picker*/ div.datepicker { position:absolute; text-align:center; border:1px #CCC solid; font-family:"LiberationSans",Arial,Verdana,sans-serif; background:#FFF; font-size:11px; padding:0; box-shadow: 2px 2px 0 rgba(0,0,0,0.1); -webkit-box-shadow: 2px 2px 1px rgba(0,0,0,0.1); -moz-box-shadow: 2px 2px 0px rgba(0,0,0,0.1); } div.datepicker-calendar table { font-size:11px; border:1px solid #FFF; margin:0; padding:0; text-align:center; } div.datepicker div.datepicker-header { font-size:12px; font-weight:bold; background:#F0F0F0; border-bottom:1px solid #CCC; padding:2px; text-align:center; } div.datepicker table.header { width:175px; border:0; padding:0; text-align:center; } td { vertical-align:top; } td.prev,td.prev_year,td.next,td.next_year { width:8%; cursor:pointer; font-weight:bold; line-height:16px; } td.prev:hover,td.prev_year:hover,td.next:hover,td.next_year:hover { background-color:#DDD; } td.header { text-align:center; width:68%; font-weight:bold; line-height:16px; } div.datepicker-header { height:16px; } div.datepicker-calendar table tbody tr { border:1px solid #FFF; margin:0; padding:0; } div.datepicker-calendar table tbody tr td { border:1px #EEE solid; margin:0; padding:0; text-align:center; height:16px; line-height:16px; width:21px; cursor:pointer; } div.datepicker-calendar table tbody tr td:hover,div.datepicker-calendar table tbody tr td.outbound:hover,div.datepicker-calendar table tbody tr td.today:hover { border:1px #CCE9FF solid; background:#E9F5FF; cursor:pointer; } div.datepicker-calendar table tbody tr td.wday { border:1px #AAA solid; background:#CCC; cursor:text; width:21px; height:16px; line-height:16px; font-weight:bold; } div.datepicker-calendar table tbody tr td.outbound { background:#F3F3F3; } div.datepicker-calendar table tbody tr td.today { border:1px #CCE9FF solid; background:#E9F5FF; background-image:url(../../images/date_active.gif); background-repeat:no-repeat; position:top left; width:21px; height:16px; line-height:16px; } div.datepicker-calendar table tbody tr td.today:hover { border:1px #CCE9FF solid; background:#E9F5FF; background-image:url(../../images/date_active.gif); background-repeat:no-repeat; position:top left; } div.datepicker-calendar table tbody tr td.nclick,div.datepicker-calendar table tbody tr td.nclick_outbound { cursor:default; color:#aaa; width:21px; height:16px; line-height:16px; } div.datepicker-calendar table tbody tr td.nclick_outbound { background:#E8E4E4; width:21px; height:16px; line-height:16px; } div.datepicker-calendar table tbody tr td.nclick:hover,div.datepicker-calendar table tbody tr td.nclick_outbound:hover { border:1px #EAEAEA solid; background:#FFF; } div.datepicker-calendar table tbody tr td.nclick_outbound:hover { background:#E8E4E4; } div.datepicker div.datepicker-footer { font-size:11px; background:#F0F0F0; border-top:1px solid #AAA; cursor:pointer; text-align:center; padding:2px; } .date { float:left; } .datepicker-opener-table { border:1px solid transparent; padding:0; border-spacing:0; margin:0 0 0 3px; background:transparent url(../../images/datepicker.gif) no-repeat 0 0; width:18px; height:18px; cursor:pointer; } .Opera .datepicker-opener-table { float:right; } .IE7 .datepicker-opener-table { position:relative; top:0; left:3px; } .datepicker-opener-table:hover { background:transparent url(../../images/datepicker_ro.gif) no-repeat 0 0; } .datepicker-opener { width:16px; height:16px; margin:0 0 0 3px; cursor:pointer; } /* Lists */ div.listContainer { width:100%; border-top:1px solid #CCC; border-bottom:1px solid #CCC; border-left:1px solid #CCC; border-right:1px solid #CCC; border-top-left-radius:2px; border-top-right-radius:2px; -moz-border-radius-topleft:2px; -moz-border-radius-topright:2px; -webkit-border-top-left-radius:2px; -webkit-border-top-right-radius:2px; } .fixedListHeader tr { position:relative; height:auto; font-weight:bold; } .fixedListHeader a { color:#444; } .listHeaderFormat { margin:3px; padding:1px; white-space:nowrap; } .listHeaderFormat tr td { padding:4px; background-color:#F5F5F5; color:#444; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#FFFFFF')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#EEE)); background: -moz-linear-gradient(top, #F8F8F8, #EEE); border-right:1px solid #CCC; border-bottom:1px solid #CCC; } .listScrollContent { height:100%; overflow-x:hidden; overflow-y:auto; } .listScrollContent tr { height:auto; white-space:nowrap; } .listScrollContent tr:nth-child(odd) { background-color:#FFF; } .listScrollContent tr:nth-child(even) { background-color:#F5F5F5; } .listScrollContent tr.entry-locked:nth-child(odd) { background-color:#FFC; } .listScrollContent tr.entry-locked:nth-child(even) { background-color:#F5F5CC; } .listScrollContent tr.entry-error:nth-child(odd) { background-color:#FCC; } .listScrollContent tr.entry-error:nth-child(even) { background-color:#F5C5C5; } .listScrollContent tr.entry-warning:nth-child(odd) { background-color:#FEC; } .listScrollContent tr.entry-warning:nth-child(even) { background-color:#F5E5C5; } .listScrollContent tr:last-child { background-color:#FFF; } .listScrollContent tr td:last-child { padding-right:20px; } .listScrollContent td div.img { margin-right:1px; } .listScrollContent td input[type=submit].img { margin-right:1px; } .listBodyFormat tr td { color:#000; margin:3px; padding:2px; border-right:1px solid #CCC; word-wrap:break-word; white-space:normal; max-width:500px; } .listScrollContent tr:hover { background-color:#DDD; } .listScrollContent tr:last-child:hover { background-color:#FFF; } div.nlistFooter { background-color:#F5F5F5; color:#444; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#FFFFFF')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#EEE)); background: -moz-linear-gradient(top, #F8F8F8, #EEE); border-left:1px solid #CCC; border-right:1px solid #CCC; border-bottom:1px solid #CCC; border-bottom-left-radius:2px; border-bottom-right-radius:2px; -moz-border-radius-bottomleft:2px; -moz-border-radius-bottomright:2px; -webkit-border-bottom-left-radius:2px; -webkit-border-bottom-right-radius:2px; padding:0; width:100%; } /* List header, Filter, misc. */ #mainlist { height:100%; padding-right:3px; } .mainlist-header { background-color:#F8F8F8; border:1px solid #CCC; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#FFFFFF')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#EEE)); background: -moz-linear-gradient(top, #F8F8F8, #EEE); margin-bottom:4px; margin-right:-2px; } .mainlist-header p{ color:#444; font-weight:bold; font-size:15px; margin:4px; } .mainlist-header div.mainlist-nav{ border-top:1px solid #CCC; background-color:white; } div.mainlist-nav table{ border-collapse:collapse; } div.mainlist-nav td div.img{ margin-top:-2px; } div.mainlist-nav td{ padding:3px 5px; vertical-align:middle; } div.mainlist-nav td.left-border{ padding-left:5px; } /* Sortable Lists */ div.sortableListContainer { border:1px solid #CCC; overflow:auto; margin-bottom:2px; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; } .sortableListContainer th { background-color:#F5F5F5; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#FFFFFF')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#EEE)); background: -moz-linear-gradient(top, #F8F8F8, #EEE); padding:4px; text-align:left; border-left:1px solid #CCC; border-bottom:1px solid #CCC; } .sortableListContainer td { padding:3px; text-align:left; border-left:1px solid #CCC; } .sortableListContainer tr:nth-child(odd) { background-color:#FFF; } .sortableListContainer tr:nth-child(even) { background-color:#F5F5F5; } .sortableListContainer tr:last-child { background-color:#FFF; } .sortableListContainer tr td:last-child { padding-right:20px; } tr.sortableListItem { background-color:#FFF; cursor:move; color:#000; } tr.sortableListItemFill { background-color:#FFF; cursor:default; } tr.sortableListItemOdd ::-moz-selection,tr.sortableListItem ::-moz-selection { background:transparent; } tr.sortableListItemOdd ::selection,tr.sortableListItem ::selection { background:transparent; } tr.sortableListItemOdd code::-moz-selection,tr.sortableListItem code::-moz-selection { background:transparent; } tr.sortableListItemOdd code::selection,tr.sortableListItem code::selection { background:transparent; } tr.sortableListItemOdd { background-color:#F5F5F5; cursor:move; color:#000; } tr.sortableListItem:hover,tr.sortableListItemOdd:hover { background-color:#EEE; } tr.sortableListItemDisabled { cursor:default; color:#CCC; } table.sortableListTable { border:0; } tr.sortableListItemMarked { background-color:#FFD; } /* Tree List */ ul.treeList,ul.treeList ul { list-style-type:none; background:url(../../images/lists/vline.png) repeat-y; margin:0; padding:0; } ul.treeList ul { margin-left:10px; } ul.treeList a:hover { background-color:#DDD; } a.treeList { padding:2px; cursor:pointer; } a.treeListSelected { font-weight:bold; color:#1010AF; background-color:#DDD; padding:2px; cursor:pointer; } a.treeList:hover,a.treeListSelected:hover { background-color:#DDD; padding:2px; } ul.treeList a { padding:2px; cursor:pointer; } ul.treeList li { margin:0; padding:0 12px; line-height:20px; background:url(../../images/lists/node.png) no-repeat; } li.treeListSelected a { font-weight:bold; color:#1010AF; padding:2px; } ul.treeList li.last { background:#fff url(../../images/lists/lastnode.png) no-repeat; } ul.treeList li:last-child { background:#fff url(../../images/lists/lastnode.png) no-repeat; } div.treeList { background-color:#FFF; border:1px solid #AAA; padding:5px; position:absolute; z-index:500; overflow-y:auto; float:left; margin-top:-1px; margin-left:1px; } span.informal { color:#444; font-style:italic; } /* Max height for IE */ * html div.treeList { height: expression( this.scrollHeight > 500 ? "500px" : "auto" ); } span.mark { color:#B22; } /* Message dialog */ div.errorMsgTitle { width:100%; font-size:1.4em; padding-bottom:.3em; padding-top:.3em; font-weight:bold; background-color:#F0F0F0; } div.errorMsgDialog { width:60%; background-color:#FFF; border:4px solid red; z-index:150; display:none; position:absolute; } div.infoMsgDialog { width:60%; background-color:#FFF; border:2px solid #000; z-index:150; display:none; position:absolute; } /* Autocompleter */ div.autocomplete { position:absolute; background-color:#FFF; border:1px solid #AAA; margin:0; padding:0; z-index:600; overflow:hidden; word-wrap:break-word; } div.autocomplete ul { list-style-type:none; margin:0; padding:0; } div.autocomplete ul li { list-style-type:none; display:block; margin:0; padding:2px; padding-left:4px; cursor:pointer; } div.autocomplete li:hover { background-color:#F0F0F0; } div.autocomplete ul li.selected { background-color:#F0F0F0; } /* Pulldown menu */ #pulldown { display:inline-block; background-color:#FFF; height:23px; border:1px solid #CCC; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#FFFFFF')"; background:-webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#EEE)); background:-moz-linear-gradient(top, #F8F8F8, #EEE); } #pulldown ul { display:block; margin:0; padding:0; line-height:1em; list-style:none; z-index:90; } #pulldown ul li { float:left; margin:0 3px 0 0; padding:0; font-size:13px; line-height:1 5em; list-style-type:none; } #pulldown ul li a { float:left; display:block; width:auto; font-weight:normal; background:transparent; text-decoration:none; margin:0; padding:5px; } #pulldown ul li a:hover { text-decoration:none; } #pulldown ul li.sep { color:#AAA; padding:.8em 0 .5em; } /* Commented Backslash Hack hides rule from IE5-Mac \*/ #pulldown ul li a { float:none; } /* End IE5-Mac hack */ #pulldown ul.level2,#pulldown ul.level3 { position:absolute; top:0; left:0; visibility:hidden; border:1px #CCC solid; background:#FFF; box-shadow: 2px 2px 0 rgba(0,0,0,0.1); -webkit-box-shadow: 2px 2px 1px rgba(0,0,0,0.1); -moz-box-shadow: 2px 2px 0px rgba(0,0,0,0.1); } #pulldown ul.level2 li,#pulldown ul.level3 li { border-bottom:1px solid #fff; float:none; margin:0; padding:0; width:200px; } #pulldown ul.level2 li a,#pulldown ul.level3 li a { padding:5px 9px 5px 5px; } #pulldown ul.level2 li a:hover,#pulldown ul.level3 li a:hover { font-weight:normal; background-color:#418DD4; background-image:none; } /* Filter */ div.search-filter { border:1px solid #CCC; border-left:0; background-color:white; text-align:middle; padding:0; margin:0; float:left; } div.search-filter input[type=text]{ border:0; padding:3px; margin:0; height:17px; } button.search-filter { padding:4px 2px 3px 2px;; margin:0; text-align:middle; height:25px; } /* Filter menu */ table.filter-wrapper { border-collapse:collapse; padding:0; margin:0; } table.filter-wrapper tr, table.filter-wrapper td{ padding:0; margin:0; vertical-align:top; } #filtermenu { border:1px solid #CCC; border-right:0; display:inline-block; background-color:#EEE; height:23px; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#FFFFFF')"; background:-webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#EEE)); background:-moz-linear-gradient(top, #F8F8F8, #EEE); } #filtermenu ul { display:block; margin:0; padding:0; line-height:1em; list-style:none; z-index:90; } #filtermenu ul li { float:left; margin:0 3px 0 0; padding:0; font-size:13px; line-height:1 5em; list-style-type:none; } #filtermenu ul li a { float:left; display:block; /*width:auto; */ font-weight:normal; background:transparent; text-decoration:none; margin:0; padding:5px; } #filtermenu ul li a:hover { text-decoration:none; } #filtermenu ul li.sep { color:#AAA; padding:.8em 0 .5em; } /* Commented Backslash Hack hides rule from IE5-Mac \*/ #filtermenu ul li a { float:none; } /* End IE5-Mac hack */ #filtermenu ul.level2 { margin-top:-4px; position:absolute; top:0; left:0; visibility:hidden; border:1px #CCC solid; background:#FFF; box-shadow: 2px 2px 0 rgba(0,0,0,0.1); -webkit-box-shadow: 2px 2px 1px rgba(0,0,0,0.1); -moz-box-shadow: 2px 2px 0px rgba(0,0,0,0.1); } #filtermenu ul.level2 li{ border-bottom:1px solid #fff; float:none; margin:0; padding:0; width:200px; } #filtermenu ul.level2 li a { padding:5px 9px 5px 5px; } #filtermenu ul.level2 li a:hover { font-weight:normal; background-color:#418DD4; background-image:none; } /* Misc */ .copynotice, .copynotice a { color:#777; text-align:right; } .object-list li span { color:#666; font-style:italic; } .inline-warning { font-size:19px; text-align:bottom; } .inline-warning-text { display:inline-block; padding-top:13px; } /* Progress */ div.progress { text-align:center; display: block; color: rgba(255,255,255,0.9); padding:1px; border: 1px solid rgba(0,0,0,0.6); -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; } .progress-low { background-color:#32CD32; } .progress-mid { background-color:#FFFF00; } .progress-high { background-color:#FFA500; } .progress-full { background-color:#FF0000; } /* Login */ .login-box-header { padding:8px 13px; font-size:20px; background-color:#EEE; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#F8F8F8', endColorstr='#FFFFFF')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#F8F8F8), to(#EEE)); background: -moz-linear-gradient(top, #F8F8F8, #EEE); border-top-left-radius:5px; border-top-right-radius:5px; -moz-border-radius-topleft:5px; -moz-border-radius-topright:5px; -webkit-border-top-left-radius:5px; -webkit-border-top-right-radius:5px; border-bottom:1px solid #CCC; } .login-box-container { padding:5% 10% 3% 10%; } .login-box { position:absolute; top:25%; left:30%; right:30%; background-color:#FFF; border:1px solid #CCC; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#F8F8F8')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFF), to(#F8F8F8)); background: -moz-linear-gradient(top, #FFF, #F8F8F8); } .login-element-container { padding:5px 8px; position:relative; height:30px; } .login-warning { } .login-warning a{ font-weight: bold; } .login-label { position:absolute; left:8px; width:10em; } .login-input { position:absolute; left:10em; right:30px } .login-input input{ position:absolute; width:100%; } .login-inline-message { padding:0 5px; color:red; text-align:center; } .login-warning { border:2px solid #F00; background-color:#FCC; padding:10px; margin:0 10px 10px 10px; text-align:center; } /* Logout */ .logout-box { position:absolute; top:25%; left:20%; right:20%; padding:10px; background-color:#F8F8F8; border:2px solid red; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#F0F0F0')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFF), to(#F0F0F0)); background: -moz-linear-gradient(top, #FFF, #F0F0F0); } h2 { font-size:14px; font-weight:bold; } /* ACL viewer */ div.acl-viewer-container { border:1px solid #CCC; padding:1px; height:100%; min-height:480px; overflow-x:hidden; overflow-y:auto; } .acl-viewer span { color:red; } table.acl-viewer{ width:100%; } .acl-viewer td { padding-top:5px; } tr.acl-viewer-head{ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#EEEEEE', endColorstr='#DDDDDD')"; background: -webkit-gradient(linear, 0 0, 0 100%, from(#EEE), to(#DDD)); background: -moz-linear-gradient(top, #EEE, #DDD); } tr.acl-viewer-head td{ padding:6px; margin:0; } td.acl-viewer-blocked{ background:#FAA; } ul.acl-viewer-items, ul.acl-viewer-items li { list-style:none; display:inline; margin:0; padding:0; } ul.acl-list, ul.acl-list li { list-style:none; display:inline; margin:0; padding:0; } ul.acl-viewer-items li ul.acl-category-list { list-style:none; margin:0; padding-left:20px; } ul.acl-category-list { padding-bottom:10px; } ul.acl-list li { color:#777; } ul.acl-list li:after { content: ", "; } ul.acl-list li:last-child:after { content: ""; } /* Reference tab */ table.reference-tab { width:100%; } gosa-core-2.7.4/html/themes/default/fonts/0000755000175000017500000000000012372424235017051 5ustar mikemikegosa-core-2.7.4/html/index.php0000644000175000017500000003653611602021272014631 0ustar mikemikeget_cfg_value("core",'theme'); if (file_exists("$BASE_DIR/ihtml/themes/$theme/blacklist")) { $blocks= file("$BASE_DIR/ihtml/themes/$theme/blacklist"); foreach ($blocks as $block) { if (preg_match('/'.preg_quote($block).'/', $_SERVER['HTTP_USER_AGENT'])) { die(sprintf(_("Your browser (%s) is blacklisted for the current theme!"), $block)); } } } /* Fill template with required values */ $username = ""; if(isset($_POST["username"])) { $username= get_post("username"); } $smarty->assign ("title","GOsa"); $smarty->assign("logo", image(get_template_path("images/logo.png"))); $smarty->assign('date', gmdate("D, d M Y H:i:s")); $smarty->assign('username', $username); $smarty->assign('personal_img', get_template_path('images/login-head.png')); $smarty->assign('password_img', get_template_path('images/password.png')); $smarty->assign('directory_img', get_template_path('images/ldapserver.png')); /* Some error to display? */ if (!isset($message)) { $message= ""; } $smarty->assign("message", $message); /* Displasy SSL mode warning? */ if ($ssl != "" && $config->get_cfg_value("core",'warnSSL') == 'true') { $smarty->assign("ssl", sprintf(_("This session is not encrypted. Click %s to enter an encrypted session."), "".bold(_("here"))."")); } else { $smarty->assign("ssl", ""); } if(!$config->check_session_lifetime()) { $smarty->assign ("lifetime", _("The configured session lifetime will be overridden by php.ini settings!")); } else { $smarty->assign ("lifetime", ""); } /* Generate server list */ $servers= array(); if (isset($_POST['server'])) { $selected= get_post('server'); } else { $selected= $config->data['MAIN']['DEFAULT']; } foreach ($config->data['LOCATIONS'] as $key => $ignored) { $servers[$key]= $key; } $smarty->assign ("server_options", $servers); $smarty->assign ("server_id", $selected); /* show login screen */ $smarty->assign ("PHPSESSID", session_id()); if (session::is_set('errors')) { $smarty->assign("errors", session::get('errors')); } if ($error_collector != "") { $smarty->assign("php_errors", $error_collector.""); } else { $smarty->assign("php_errors", ""); } $smarty->assign("msg_dialogs", msg_dialog::get_dialogs()); $smarty->display (get_template_path('headers.tpl')); $smarty->assign("version",get_gosa_version()); $smarty->display(get_template_path('login.tpl')); exit(); } /***************************************************************************** * M A I N * *****************************************************************************/ /* Set error handler to own one, initialize time calculation and start session. */ session::start(); session::set('errorsAlreadyPosted',array()); /* Destroy old session if exists. Else you will get your old session back, if you not logged out correctly. */ if(is_array(session::get_all()) && count(session::get_all())) { session::destroy(); session::start(); } $username= ""; /* Reset errors */ session::set('errors',""); session::set('errorsAlreadyPosted',""); session::set('LastError',""); /* Check if we need to run setup */ if (!file_exists(CONFIG_DIR."/".CONFIG_FILE)) { header("location:setup.php"); exit(); } /* Reset errors */ session::set('errors',""); /* Check for java script */ if(isset($_POST['javascript']) && $_POST['javascript'] == "true") { session::global_set('js',TRUE); }elseif(isset($_POST['javascript'])) { session::global_set('js',FALSE); } /* Check if gosa.conf (.CONFIG_FILE) is accessible */ if (!is_readable(CONFIG_DIR."/".CONFIG_FILE)) { msg_dialog::display(_("Configuration error"),sprintf(_("GOsa configuration %s/%s is not readable. Aborted."), CONFIG_DIR,CONFIG_FILE),FATAL_ERROR_DIALOG); exit(); } /* Parse configuration file */ $config= new config(CONFIG_DIR."/".CONFIG_FILE, $BASE_DIR); session::global_set('debugLevel',$config->get_cfg_value("core",'debugLevel')); if ($_SERVER["REQUEST_METHOD"] != "POST") { @DEBUG (DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, "config"); } /* Enable compressed output */ if ($config->get_cfg_value("core","sendCompressedOutput") != "") { ob_start("ob_gzhandler"); } /* Set template compile directory */ $smarty->compile_dir= $config->get_cfg_value("core","templateCompileDirectory"); $smarty->error_unassigned= true; /* Check for compile directory */ if (!(is_dir($smarty->compile_dir) && is_writable($smarty->compile_dir))) { msg_dialog::display(_("Smarty error"),sprintf(_("Compile directory %s is not accessible!"), $smarty->compile_dir),FATAL_ERROR_DIALOG); exit(); } /* Check for old files in compile directory */ clean_smarty_compile_dir($smarty->compile_dir); /* Language setup */ $lang= get_browser_language(); putenv("LANGUAGE="); putenv("LANG=$lang"); setlocale(LC_ALL, $lang); $GLOBALS['t_language']= $lang; $GLOBALS['t_gettext_message_dir'] = $BASE_DIR.'/locale/'; /* Set the text domain as 'messages' */ $domain = 'messages'; bindtextdomain($domain, LOCALE_DIR); textdomain($domain); $smarty->assign ('nextfield', 'username'); /* Translation of cookie-warning. Whether to display it, is determined by JavaScript */ $smarty->assign ("cookies", _("Your browser has cookies disabled: please enable cookies and reload this page before logging in!")); if ($_SERVER["REQUEST_METHOD"] != "POST") { @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $lang, "Setting language to"); } /* Check for SSL connection */ $ssl= ""; if (!isset($_SERVER['HTTPS']) || !stristr($_SERVER['HTTPS'], "on")) { if (empty($_SERVER['REQUEST_URI'])) { $ssl= "https://".$_SERVER['HTTP_HOST']. $_SERVER['PATH_INFO']; } else { $ssl= "https://".$_SERVER['HTTP_HOST']. $_SERVER['REQUEST_URI']; } } /* If SSL is forced, just forward to the SSL enabled site */ if ($config->get_cfg_value("core","forceSSL") == 'true' && $ssl != '') { header ("Location: $ssl"); exit; } /* Do we have htaccess authentification enabled? */ $htaccess_authenticated= FALSE; if ($config->get_cfg_value("core","htaccessAuthentication") == "true" ) { if (!isset($_SERVER['REMOTE_USER'])) { msg_dialog::display(_("Configuration error"), _("Broken HTTP authentication setup!"), FATAL_ERROR_DIALOG); exit; } $tmp= process_htaccess($_SERVER['REMOTE_USER'], isset($_SERVER['KRB5CCNAME'])); $username= $tmp['username']; $server= $tmp['server']; if ($username == "") { msg_dialog::display(_("Error"), _("Cannot find a valid user for the current HTTP authentication!"), FATAL_ERROR_DIALOG); exit; } if ($server == "") { msg_dialog::display(_("Error"), _("Cannot find a unique user for the current HTTP authentication!"), FATAL_ERROR_DIALOG); exit; } $htaccess_authenticated= TRUE; } /* Got a formular answer, validate and try to log in */ if (($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['login'])) || $htaccess_authenticated) { /* Reset error messages */ $message= ""; /* Destroy old sessions, they cause a successfull login to relog again ...*/ if(session::global_is_set('_LAST_PAGE_REQUEST')) { session::global_set('_LAST_PAGE_REQUEST',time()); } if (!$htaccess_authenticated) { $server= get_post("server"); } $config->set_current($server); /* Admin-logon and verify */ $ldap = $config->get_ldap_link(); if (is_null($ldap) || (is_int($ldap) && $ldap == 0)) { msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); displayLogin(); exit(); } /* Check for locking area */ $ldap->cat($config->get_cfg_value("core","config"), array("dn")); $attrs= $ldap->fetch(); if (!count ($attrs)) { $ldap->cd($config->current['BASE']); $ldap->create_missing_trees($config->get_cfg_value("core","config")); } /* Check for valid input */ $ok= true; if (!$htaccess_authenticated) { $username= get_post("username"); if (!preg_match("/^[@A-Za-z0-9_.-]+$/", $username)) { $message= _("Please specify a valid user name!"); $ok= false; } elseif (mb_strlen(get_post("password"), 'UTF-8') == 0) { $message= _("Please specify your password!"); $smarty->assign ('nextfield', 'password'); $ok= false; } } if ($ok) { /* Login as user, initialize user ACL's */ if ($htaccess_authenticated) { $ui= ldap_login_user_htaccess($username); if ($ui === NULL || !$ui) { msg_dialog::display(_("Authentication error"), _("Cannot retrieve user information for HTTP authentication!"), FATAL_ERROR_DIALOG); exit; } } else { $ui= ldap_login_user($username, get_post("password")); } if ($ui === NULL || !$ui) { $message= _("Please check the username/password combination!"); $smarty->assign ('nextfield', 'password'); session::global_set('config',$config); if(isset($_SERVER['REMOTE_ADDR'])){ $ip= $_SERVER['REMOTE_ADDR']; new log("security","login","",array(),"Authentication failed for user \"$username\" [from $ip]"); }else{ new log("security","login","",array(),"Authentication failed for user \"$username\""); } } else { /* Remove all locks of this user */ del_user_locks($ui->dn); /* Save userinfo and plugin structure */ session::global_set('ui',$ui); session::global_set('session_cnt',0); /* Let GOsa trigger a new connection for each POST, save config to session. */ $config->get_departments(); $config->make_idepartments(); session::global_set('config',$config); /* Restore filter settings from cookie, if available */ if($config->get_cfg_value("core","storeFilterSettings") == "true") { if(isset($_COOKIE['GOsa_Filter_Settings']) || isset($HTTP_COOKIE_VARS['GOsa_Filter_Settings'])) { if(isset($_COOKIE['GOsa_Filter_Settings'])) { $cookie_all = unserialize(base64_decode($_COOKIE['GOsa_Filter_Settings'])); }else{ $cookie_all = unserialize(base64_decode($HTTP_COOKIE_VARS['GOsa_Filter_Settings'])); } if(isset($cookie_all[$ui->dn])) { $cookie = $cookie_all[$ui->dn]; $cookie_vars= array("MultiDialogFilters","CurrentMainBase","plug"); foreach($cookie_vars as $var) { if(isset($cookie[$var])) { session::global_set($var,$cookie[$var]); } } if(isset($cookie['plug'])) { $plug =$cookie['plug']; } } } } /* are we using accountexpiration */ if ($config->boolValueIsTrue("core","handleExpiredAccounts")) { $expired= ldap_expired_account($config, $ui->dn, $ui->username); if ($expired == POSIX_ACCOUNT_EXPIRED) { $message= _("Account locked. Please contact your system administrator!"); $smarty->assign ('nextfield', 'password'); new log("security","login","",array(),"Account for user \"$username\" has expired") ; displayLogin(); exit(); } } /* Not account expired or password forced change go to main page */ new log("security","login","",array(),"User \"$username\" logged in successfully") ; $plist= new pluglist($config, $ui); stats::log('global', 'global', array(), $action = 'login', $amount = 1, 0); if(isset($plug) && isset($plist->dirlist[$plug])) { header ("Location: main.php?plug=".$plug."&global_check=1"); }else{ header ("Location: main.php?global_check=1"); } exit; } } } /* Fill template with required values */ $smarty->assign ('date', gmdate("D, d M Y H:i:s")); $smarty->assign ('username', $username); $smarty->assign ('personal_img', get_template_path('images/login-head.png')); $smarty->assign ('password_img', get_template_path('images/password.png')); $smarty->assign ('directory_img', get_template_path('images/ldapserver.png')); /* Some error to display? */ if (!isset($message)) { $message= ""; } $smarty->assign ("message", $message); /* Generate server list */ $servers= array(); if (isset($_POST['server'])){ $selected= get_post('server'); } else { $selected= $config->data['MAIN']['DEFAULT']; } foreach ($config->data['LOCATIONS'] as $key => $ignored) { $servers[$key]= $key; } $smarty->assign ("server_options", $servers); $smarty->assign ("server_id", $selected); /* show login screen */ $smarty->assign ("PHPSESSID", session_id()); if (session::is_set('errors')) { $smarty->assign("errors", session::get('errors')); } if ($error_collector != "") { $smarty->assign("php_errors", preg_replace("/%BUGBODY%/",$error_collector_mailto,$error_collector).""); } else { $smarty->assign("php_errors", ""); } /* Set focus to the error button if we've an error message */ $focus= ""; if (session::is_set('errors') && session::get('errors') != "") { $focus= ''; } $smarty->assign("focus", $focus); displayLogin(); // vim:tabstop=2:expandtab:shiftwidth=2:softtabstop=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/html/main.php0000644000175000017500000004137011655726174014463 0ustar mikemikeip){ new log("security","login","",array(),"main.php called with session which has a changed IP address.") ; header ("Location: logout.php"); exit; } $config= session::global_get('config'); $config->check_and_reload(); $config->configRegistry->reload(); /* Enable compressed output */ if ($config->get_cfg_value("core","sendCompressedOutput") == "true"){ ob_start("ob_gzhandler"); } /* Check for invalid sessions */ if(session::global_get('_LAST_PAGE_REQUEST') == ""){ session::global_set('_LAST_PAGE_REQUEST',time()); }else{ /* check GOsa.conf for defined session lifetime */ $max_life= $config->get_cfg_value("core","sessionLifetime"); /* get time difference between last page reload */ $request_time = (time()- session::global_get('_LAST_PAGE_REQUEST')); /* If page wasn't reloaded for more than max_life seconds * kill session */ if($request_time > $max_life){ session::destroy(); new log("security","login","",array(),"main.php called without session - logging out") ; header ("Location: logout.php"); exit; } session::global_set('_LAST_PAGE_REQUEST',time()); } @DEBUG (DEBUG_CONFIG, __LINE__, __FUNCTION__, __FILE__, $config->data, "config"); /* Set template compile directory */ $smarty->compile_dir= $config->get_cfg_value("core","templateCompileDirectory"); $smarty->error_unassigned= true; /* Set default */ $reload_navigation = false; /* Set last initialised language to current, browser settings */ if(!session::global_is_set('Last_init_lang')){ $reload_navigation = true; session::global_set('Last_init_lang',get_browser_language()); } /* If last language != current force navi reload */ $lang= get_browser_language(); if(session::global_get('Last_init_lang') != $lang){ $reload_navigation = true; } /* Language setup */ session::global_set('Last_init_lang',$lang); /* Preset current main base */ if(!session::global_is_set('CurrentMainBase')){ session::global_set('CurrentMainBase',get_base_from_people($ui->dn)); } putenv("LANGUAGE="); putenv("LANG=$lang"); setlocale(LC_ALL, $lang); $GLOBALS['t_language']= $lang; $GLOBALS['t_gettext_message_dir'] = $BASE_DIR.'/locale/'; // Validate LDAP schema if not done already if( $config->boolValueIsTrue('core','schemaCheck') && !$config->configRegistry->schemaCheckFinished() && !$config->configRegistry->validateSchemata($force=FALSE,$disableIncompatiblePlugins=TRUE)){ $config->configRegistry->displayRequirementErrors(); } /* Check if the config is up to date */ $config->check_config_version(); /* Set the text domain as 'messages' */ $domain = 'messages'; bindtextdomain($domain, LOCALE_DIR); textdomain($domain); @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $lang, "Setting language to"); /* Prepare plugin list */ if (!session::global_is_set('plist')){ /* Initially load all classes */ $class_list= get_declared_classes(); foreach ($class_mapping as $class => $path){ if (!in_array_strict($class, $class_list)){ if (is_readable("$BASE_DIR/$path")){ require_once("$BASE_DIR/$path"); } else { msg_dialog::display(_("Fatal error"), sprintf(_("Cannot locate file %s - please run %s to fix this"), bold("$BASE_DIR/$path"), bold("update-gosa")), FATAL_ERROR_DIALOG); exit; } } } session::global_set('plist', new pluglist($config, $ui)); /* Load ocMapping into userinfo */ $tmp= new acl($config, NULL, $ui->dn); $ui->ocMapping= $tmp->ocMapping; session::global_set('ui',$ui); } $plist= session::global_get('plist'); /* Check for register globals */ if (isset($global_check) && $config->boolValueIsTrue("core","forceGlobals")){ msg_dialog::display( _("PHP configuration"), _("Fatal error: Register globals is active. Please fix this in order to continue."), FATAL_ERROR_DIALOG); new log("security","login","",array(),"Register globals is on. For security reasons, this should be turned off.") ; session::destroy (); exit; } /* Check Plugin variable */ if (session::global_is_set('plugin_dir')){ $old_plugin_dir= session::global_get('plugin_dir'); } else { $old_plugin_dir= ""; } // Generate menus $plist->gen_headlines(); $plist->gen_menu(); $plist->genPathMenu(); /* check if we are using account expiration */ $smarty->assign("hideMenus", FALSE); if ($config->boolValueIsTrue("core","handleExpiredAccounts")){ $expired= ldap_expired_account($config, $ui->dn, $ui->username); if ($expired == POSIX_WARN_ABOUT_EXPIRATION && !session::is_set('POSIX_WARN_ABOUT_EXPIRATION__DONE')){ // The users password is about to xpire soon, display a warning message. new log("security","gosa","",array(),"password for user \"$ui->username\" is about to expire") ; msg_dialog::display(_("Password change"), _("Your password is about to expire, please change your password!"), INFO_DIALOG); session::set('POSIX_WARN_ABOUT_EXPIRATION__DONE', TRUE); } elseif ($expired == POSIX_FORCE_PASSWORD_CHANGE){ // The password is expired, we are now going to enforce a new one from the user. // Hide the GOsa menus to avoid leaving the enforced password change dialog. $smarty->assign("hideMenus", TRUE); $plug = (isset($_GET['plug'])) ? $_GET['plug'] : null; // Detect password plugin id: $passId = array_search('password', $plist->pluginList); if($passId !== FALSE){ $_GET['plug'] = $passId; } } } $smarty->assign("noMenuMode", count($plist->getRegisteredMenuEntries()) == 0); if (isset($_GET['plug']) && $plist->plugin_access_allowed($_GET['plug'])){ $plug= validate($_GET['plug']); $plugin_dir= $plist->get_path($plug); $plugin= $plist->get_class($plug); session::global_set('currentPlugin',$plugin); session::global_set('plugin_dir',$plugin_dir); if ($plugin_dir == ""){ new log("security","gosa","",array(),"main.php called with invalid plug parameter \"$plug\"") ; header ("Location: logout.php"); exit; } } else { session::global_set('plugin_dir',"welcome"); session::global_set('currentPlugin','welcome'); $plugin_dir= "$BASE_DIR/plugins/generic/welcome"; } // Display the welcome page for admins (iconmenu) and an info page for those // who are not allowed to adminstrate anything (user) if(count($plist->getRegisteredMenuEntries()) == 0 && session::global_get('currentPlugin') == "welcome"){ session::global_set('plugin_dir',"infoPage"); session::global_set('currentPlugin','welcome'); $plugin_dir= "$BASE_DIR/plugins/generic/infoPage"; } /* Handle plugin locks. - Remove the plugin from session if we switched to another. (cleanup) - Remove all created locks if "reset" was posted. - Remove all created locks if we switched to another plugin. */ $cleanup = FALSE; $remove_lock= FALSE; /* Check if we have changed the selected plugin */ if(($old_plugin_dir != $plugin_dir && $old_plugin_dir != "") || (isset($_GET['reset']) && $_GET['reset'] == 1)){ if (is_file("$old_plugin_dir/main.inc")){ $cleanup = $remove_lock = TRUE; require ("$old_plugin_dir/main.inc"); $cleanup = $remove_lock = FALSE; } }else // elseif /* Reset was posted, remove all created locks for the current plugin */ if((isset($_GET['reset']) && $_GET['reset'] == 1) || isset($_POST['delete_lock'])){ $remove_lock = TRUE; } /* Check for sizelimits */ eval_sizelimit(); /* Check for memory */ if (function_exists("memory_get_usage")){ if (memory_get_usage() > (to_byte(ini_get('memory_limit')) - 2048000 )){ msg_dialog::display(_("Configuration error"), _("Running out of memory!"), WARNING_DIALOG); } } /* Redirect on back event */ if ($_SERVER["REQUEST_METHOD"] == "POST"){ /* Look for button events that match /^back[0-9]+$/, extract the number and step the correct plugin. */ foreach ($_POST as $key => $value){ if (preg_match("/^back[0-9]+$/", $key)){ $back= substr($key, 4); header ("Location: main.php?plug=$back"); exit; } } } /* Redirect on password back event */ if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['password_back'])){ header ("Location: main.php"); exit; } /* Check for multiple windows logout */ if ($_SERVER["REQUEST_METHOD"] == "POST"){ if (isset($_POST['reset_session'])){ header ("Location: logout.php"); exit; } } /* Load department list when plugin has changed. That is some kind of compromise between speed and beeing up to date */ if (isset($_GET['reset'])){ set_object_info(); } /* show web frontend */ $smarty->assign ("title","GOsa"); $smarty->assign ("logo", image(get_template_path("images/logo.png"))); $smarty->assign ("logoutimage", get_template_path("images/btn-logout.png")); $smarty->assign ("date", date("l, dS F Y H:i:s O")); $smarty->assign ("lang", preg_replace('/_.*$/', '', $lang)); $smarty->assign ("must", "*"); if (isset($plug)){ $plug= "?plug=$plug"; } else { $plug= ""; } if (session::global_get('js')==FALSE){ $smarty->assign("javascript", "false"); $smarty->assign("help_method", "href='helpviewer.php$plug' target='_blank'"); } else { $smarty->assign("javascript", "true"); $smarty->assign("help_method"," onclick=\"return popup('helpviewer.php$plug','GOsa help');\""); } $loggedin = sprintf(_("You're logged in as %s"), "".$ui->cn." [".$ui->username."] / ".$config->current['NAME']."  "); if($ui->ignore_acl_for_current_user()){ $loggedin = ""._("ACLs are disabled")." ".$loggedin; } $smarty->assign ("loggedin", $loggedin); $smarty->assign ("go_logo", get_template_path('images/go_logo.png')); $smarty->assign ("go_base", get_template_path('images/dtree.png')); $smarty->assign ("go_home", get_template_path('images/gohome.png')); $smarty->assign ("go_out", get_template_path('images/logout.png')); $smarty->assign ("go_top", get_template_path('images/go_top.png')); $smarty->assign ("go_corner", get_template_path('images/go_corner.png')); $smarty->assign ("go_left", get_template_path('images/go_left.png')); $smarty->assign ("go_help", get_template_path('images/help.png')); /* reload navigation if language changed*/ if($reload_navigation){ $plist->menu=""; } $smarty->assign ("menu", $plist->gen_menu()); $smarty->assign ("plug", "$plug"); /* React on clicks */ if ($_SERVER["REQUEST_METHOD"] == "POST"){ if (isset($_POST['delete_lock']) || isset($_POST['open_readonly'])){ /* Set old Post data */ if(session::global_is_set('LOCK_VARS_USED_GET')){ foreach(session::global_get('LOCK_VARS_USED_GET') as $name => $value){ $_GET[$name] = $value; } } if(session::global_is_set('LOCK_VARS_USED_POST')){ foreach(session::global_get('LOCK_VARS_USED_POST') as $name => $value){ $_POST[$name] = $value; } } if(session::global_is_set('LOCK_VARS_USED_REQUEST')){ foreach(session::global_get('LOCK_VARS_USED_REQUEST') as $name => $value){ $_REQUEST[$name] = $value; } } } } /* Load plugin */ if (is_file("$plugin_dir/main.inc")){ $display =""; require ("$plugin_dir/main.inc"); } else { msg_dialog::display( _("Plug-in"), sprintf(_("Fatal error: Cannot find any plugin definitions for plugin %s!"), bold($plug)), FATAL_ERROR_DIALOG); exit(); } /* Print_out last ErrorMessage repeated string. */ $smarty->assign("msg_dialogs", msg_dialog::get_dialogs()); $smarty->assign ("pathMenu", $plist->genPathMenu()); $smarty->assign("contents", $display); $smarty->assign("sessionLifetime", $config->get_cfg_value('core','sessionLifetime')); /* If there's some post, take a look if everything is there... */ if (isset($_POST) && count($_POST)){ if (!isset($_POST['php_c_check'])){ msg_dialog::display( _("Configuration Error"), sprintf(_("Fatal error: not all POST variables have been transfered by PHP - please inform your administrator!")), FATAL_ERROR_DIALOG); exit(); } } /* Assign erros to smarty */ if (session::is_set('errors')){ $smarty->assign("errors", session::get('errors')); } if ($error_collector != ""){ $smarty->assign("php_errors", preg_replace("/%BUGBODY%/",$error_collector_mailto,$error_collector).""); } else { $smarty->assign("php_errors", ""); } /* Set focus to the error button if we've an error message */ $focus= ""; if (session::is_set('errors') && session::get('errors') != ""){ $focus= ''; } $focus= ''; $smarty->assign("focus", $focus); /* Set channel if needed */ #TODO: * move all global session calls to global_ # * create a new channel where needed (mostly management dialogues) # * remove regulary created channels when not needed anymore # * take a look at external php calls (i.e. get fax, ldif, etc.) # * handle aborted sessions (by pressing anachors i.e. Main, Menu, etc.) # * check lock removals, is "dn" global or not in this case? # * last page request -> global or not? # * check that filters are still global # * maxC global? if (isset($_POST['_channel_'])){ echo "DEBUG - current channel: ".$_POST['_channel_']; $smarty->assign("channel", $_POST['_channel_']); } else { $smarty->assign("channel", ""); } $display= "".$smarty->fetch(get_template_path('headers.tpl')). $smarty->fetch(get_template_path('framework.tpl')); /* Save dialog filters and selected base in a cookie. So we may be able to restore the filter an base settings on reload. */ $cookie = array(); if(isset($_COOKIE['GOsa_Filter_Settings'])){ $cookie = unserialize(base64_decode($_COOKIE['GOsa_Filter_Settings'])); }elseif(isset($HTTP_COOKIE_VARS['GOsa_Filter_Settings'])){ $cookie = unserialize(base64_decode($HTTP_COOKIE_VARS['GOsa_Filter_Settings'])); } /* Save filters? */ if($config->get_cfg_value("core","storeFilterSettings") == "true"){ $cookie_vars = array("MultiDialogFilters","CurrentMainBase"); foreach($cookie_vars as $var){ if(session::global_is_set($var)){ $cookie[$ui->dn][$var] = session::global_get($var); } } if(isset($_GET['plug'])){ $cookie[$ui->dn]['plug'] = $_GET['plug']; } @setcookie("GOsa_Filter_Settings",base64_encode(serialize($cookie)),time() + (60*60*24)); } /* Show page... */ echo $display; /* Save plist and config */ session::global_set('plist',$plist); session::global_set('config',$config); session::set('errorsAlreadyPosted',array()); // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/html/favicon.ico0000644000175000017500000000257610230726066015140 0ustar mikemikeh( @gosa-core-2.7.4/html/logout.php0000644000175000017500000000701211425521764015034 0ustar mikemikedn); /* Write something to log */ new log("security","logout","",array(),"User \"".$ui->username."\" logged out") ; } /* Language setup */ if ((!isset($config)) || $config->get_cfg_value("core","language") == ""){ $lang= get_browser_language(); } else { $lang= $config->get_cfg_value("core","language"); } // Try to keep track of logouts, this will fail if our session has already expired. // Nothing will be logged if config isn't present anymore. stats::log('global', 'global', array(), $action = 'logout', $amount = 1, 0); putenv("LANGUAGE="); putenv("LANG=$lang"); setlocale(LC_ALL, $lang); $GLOBALS['t_language']= $lang; $GLOBALS['t_gettext_message_dir'] = $BASE_DIR.'/locale/'; /* Set the text domain as 'messages' */ $domain = 'messages'; bindtextdomain($domain, LOCALE_DIR); textdomain($domain); /* Create smarty & Set template compile directory */ $smarty= new smarty(); if (isset($config)){ $smarty->compile_dir= $config->get_cfg_value("core","templateCompileDirectory"); } else { $smarty->compile_dir= '/var/spool/gosa/'; } if(!is_writeable($smarty->compile_dir)){ header('location: index.php'); exit(); } $smarty->assign ("title","GOsa"); /* If GET request is posted, the logout was forced by pressing the link */ if (isset($_POST['forcedlogout']) || isset($_GET['forcedlogout'])){ /* destroy old session */ session::destroy (); /* If we're not using htaccess authentication, just redirect... */ if (isset($config) && $config->get_cfg_value("core","htaccessAuthentication") == "true"){ /* Else notice that the user has to close the browser... */ $smarty->display (get_template_path('headers.tpl')); $smarty->display (get_template_path('logout-close.tpl')); exit; } header ("Location: index.php"); exit(); }else{ // The logout wasn't forced, so the session is invalid $smarty->display (get_template_path('headers.tpl')); $smarty->display (get_template_path('logout.tpl')); exit; } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/html/include/0000755000175000017500000000000012372424235014432 5ustar mikemikegosa-core-2.7.4/html/include/effects.js0000644000175000017500000011310711325266624016415 0ustar mikemike// script.aculo.us effects.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 // Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // Contributors: // Justin Palmer (http://encytemedia.com/) // Mark Pilgrim (http://diveintomark.org/) // Martin Bialasinki // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // converts rgb() and #xxx to #xxxxxx format, // returns self (or first argument) if not convertable String.prototype.parseColor = function() { var color = '#'; if (this.slice(0,4) == 'rgb(') { var cols = this.slice(4,this.length-1).split(','); var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); } else { if (this.slice(0,1) == '#') { if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); if (this.length==7) color = this.toLowerCase(); } } return (color.length==7 ? color : (arguments[0] || this)); }; /*--------------------------------------------------------------------------*/ Element.collectTextNodes = function(element) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); }).flatten().join(''); }; Element.collectTextNodesIgnoreClass = function(element, className) { return $A($(element).childNodes).collect( function(node) { return (node.nodeType==3 ? node.nodeValue : ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? Element.collectTextNodesIgnoreClass(node, className) : '')); }).flatten().join(''); }; Element.setContentZoom = function(element, percent) { element = $(element); element.setStyle({fontSize: (percent/100) + 'em'}); if (Prototype.Browser.WebKit) window.scrollBy(0,0); return element; }; Element.getInlineOpacity = function(element){ return $(element).style.opacity || ''; }; Element.forceRerendering = function(element) { try { element = $(element); var n = document.createTextNode(' '); element.appendChild(n); element.removeChild(n); } catch(e) { } }; /*--------------------------------------------------------------------------*/ var Effect = { _elementDoesNotExistError: { name: 'ElementDoesNotExistError', message: 'The specified DOM element does not exist, but is required for this effect to operate' }, Transitions: { linear: Prototype.K, sinoidal: function(pos) { return (-Math.cos(pos*Math.PI)/2) + .5; }, reverse: function(pos) { return 1-pos; }, flicker: function(pos) { var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4; return pos > 1 ? 1 : pos; }, wobble: function(pos) { return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5; }, pulse: function(pos, pulses) { return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5; }, spring: function(pos) { return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); }, none: function(pos) { return 0; }, full: function(pos) { return 1; } }, DefaultOptions: { duration: 1.0, // seconds fps: 100, // 100= assume 66fps max. sync: false, // true for combining from: 0.0, to: 1.0, delay: 0.0, queue: 'parallel' }, tagifyText: function(element) { var tagifyStyle = 'position:relative'; if (Prototype.Browser.IE) tagifyStyle += ';zoom:1'; element = $(element); $A(element.childNodes).each( function(child) { if (child.nodeType==3) { child.nodeValue.toArray().each( function(character) { element.insertBefore( new Element('span', {style: tagifyStyle}).update( character == ' ' ? String.fromCharCode(160) : character), child); }); Element.remove(child); } }); }, multiple: function(element, effect) { var elements; if (((typeof element == 'object') || Object.isFunction(element)) && (element.length)) elements = element; else elements = $(element).childNodes; var options = Object.extend({ speed: 0.1, delay: 0.0 }, arguments[2] || { }); var masterDelay = options.delay; $A(elements).each( function(element, index) { new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); }); }, PAIRS: { 'slide': ['SlideDown','SlideUp'], 'blind': ['BlindDown','BlindUp'], 'appear': ['Appear','Fade'] }, toggle: function(element, effect, options) { element = $(element); effect = (effect || 'appear').toLowerCase(); return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] ](element, Object.extend({ queue: { position:'end', scope:(element.id || 'global'), limit: 1 } }, options || {})); } }; Effect.DefaultOptions.transition = Effect.Transitions.sinoidal; /* ------------- core effects ------------- */ Effect.ScopedQueue = Class.create(Enumerable, { initialize: function() { this.effects = []; this.interval = null; }, _each: function(iterator) { this.effects._each(iterator); }, add: function(effect) { var timestamp = new Date().getTime(); var position = Object.isString(effect.options.queue) ? effect.options.queue : effect.options.queue.position; switch(position) { case 'front': // move unstarted effects after this effect this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { e.startOn += effect.finishOn; e.finishOn += effect.finishOn; }); break; case 'with-last': timestamp = this.effects.pluck('startOn').max() || timestamp; break; case 'end': // start effect after last queued effect has finished timestamp = this.effects.pluck('finishOn').max() || timestamp; break; } effect.startOn += timestamp; effect.finishOn += timestamp; if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) this.effects.push(effect); if (!this.interval) this.interval = setInterval(this.loop.bind(this), 15); }, remove: function(effect) { this.effects = this.effects.reject(function(e) { return e==effect }); if (this.effects.length == 0) { clearInterval(this.interval); this.interval = null; } }, loop: function() { var timePos = new Date().getTime(); for(var i=0, len=this.effects.length;i= this.startOn) { if (timePos >= this.finishOn) { this.render(1.0); this.cancel(); this.event('beforeFinish'); if (this.finish) this.finish(); this.event('afterFinish'); return; } var pos = (timePos - this.startOn) / this.totalTime, frame = (pos * this.totalFrames).round(); if (frame > this.currentFrame) { this.render(pos); this.currentFrame = frame; } } }, cancel: function() { if (!this.options.sync) Effect.Queues.get(Object.isString(this.options.queue) ? 'global' : this.options.queue.scope).remove(this); this.state = 'finished'; }, event: function(eventName) { if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); if (this.options[eventName]) this.options[eventName](this); }, inspect: function() { var data = $H(); for(property in this) if (!Object.isFunction(this[property])) data.set(property, this[property]); return '#'; } }); Effect.Parallel = Class.create(Effect.Base, { initialize: function(effects) { this.effects = effects || []; this.start(arguments[1]); }, update: function(position) { this.effects.invoke('render', position); }, finish: function(position) { this.effects.each( function(effect) { effect.render(1.0); effect.cancel(); effect.event('beforeFinish'); if (effect.finish) effect.finish(position); effect.event('afterFinish'); }); } }); Effect.Tween = Class.create(Effect.Base, { initialize: function(object, from, to) { object = Object.isString(object) ? $(object) : object; var args = $A(arguments), method = args.last(), options = args.length == 5 ? args[3] : null; this.method = Object.isFunction(method) ? method.bind(object) : Object.isFunction(object[method]) ? object[method].bind(object) : function(value) { object[method] = value }; this.start(Object.extend({ from: from, to: to }, options || { })); }, update: function(position) { this.method(position); } }); Effect.Event = Class.create(Effect.Base, { initialize: function() { this.start(Object.extend({ duration: 0 }, arguments[0] || { })); }, update: Prototype.emptyFunction }); Effect.Opacity = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); // make this work on IE on elements without 'layout' if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); var options = Object.extend({ from: this.element.getOpacity() || 0.0, to: 1.0 }, arguments[1] || { }); this.start(options); }, update: function(position) { this.element.setOpacity(position); } }); Effect.Move = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ x: 0, y: 0, mode: 'relative' }, arguments[1] || { }); this.start(options); }, setup: function() { this.element.makePositioned(); this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); this.originalTop = parseFloat(this.element.getStyle('top') || '0'); if (this.options.mode == 'absolute') { this.options.x = this.options.x - this.originalLeft; this.options.y = this.options.y - this.originalTop; } }, update: function(position) { this.element.setStyle({ left: (this.options.x * position + this.originalLeft).round() + 'px', top: (this.options.y * position + this.originalTop).round() + 'px' }); } }); // for backwards compatibility Effect.MoveBy = function(element, toTop, toLeft) { return new Effect.Move(element, Object.extend({ x: toLeft, y: toTop }, arguments[3] || { })); }; Effect.Scale = Class.create(Effect.Base, { initialize: function(element, percent) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ scaleX: true, scaleY: true, scaleContent: true, scaleFromCenter: false, scaleMode: 'box', // 'box' or 'contents' or { } with provided values scaleFrom: 100.0, scaleTo: percent }, arguments[2] || { }); this.start(options); }, setup: function() { this.restoreAfterFinish = this.options.restoreAfterFinish || false; this.elementPositioning = this.element.getStyle('position'); this.originalStyle = { }; ['top','left','width','height','fontSize'].each( function(k) { this.originalStyle[k] = this.element.style[k]; }.bind(this)); this.originalTop = this.element.offsetTop; this.originalLeft = this.element.offsetLeft; var fontSize = this.element.getStyle('font-size') || '100%'; ['em','px','%','pt'].each( function(fontSizeType) { if (fontSize.indexOf(fontSizeType)>0) { this.fontSize = parseFloat(fontSize); this.fontSizeType = fontSizeType; } }.bind(this)); this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; this.dims = null; if (this.options.scaleMode=='box') this.dims = [this.element.offsetHeight, this.element.offsetWidth]; if (/^content/.test(this.options.scaleMode)) this.dims = [this.element.scrollHeight, this.element.scrollWidth]; if (!this.dims) this.dims = [this.options.scaleMode.originalHeight, this.options.scaleMode.originalWidth]; }, update: function(position) { var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); if (this.options.scaleContent && this.fontSize) this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); }, finish: function(position) { if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle); }, setDimensions: function(height, width) { var d = { }; if (this.options.scaleX) d.width = width.round() + 'px'; if (this.options.scaleY) d.height = height.round() + 'px'; if (this.options.scaleFromCenter) { var topd = (height - this.dims[0])/2; var leftd = (width - this.dims[1])/2; if (this.elementPositioning == 'absolute') { if (this.options.scaleY) d.top = this.originalTop-topd + 'px'; if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; } else { if (this.options.scaleY) d.top = -topd + 'px'; if (this.options.scaleX) d.left = -leftd + 'px'; } } this.element.setStyle(d); } }); Effect.Highlight = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { }); this.start(options); }, setup: function() { // Prevent executing on elements not in the layout flow if (this.element.getStyle('display')=='none') { this.cancel(); return; } // Disable background image during the effect this.oldStyle = { }; if (!this.options.keepBackgroundImage) { this.oldStyle.backgroundImage = this.element.getStyle('background-image'); this.element.setStyle({backgroundImage: 'none'}); } if (!this.options.endcolor) this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); if (!this.options.restorecolor) this.options.restorecolor = this.element.getStyle('background-color'); // init color calculations this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); }, update: function(position) { this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) }); }, finish: function() { this.element.setStyle(Object.extend(this.oldStyle, { backgroundColor: this.options.restorecolor })); } }); Effect.ScrollTo = function(element) { var options = arguments[1] || { }, scrollOffsets = document.viewport.getScrollOffsets(), elementOffsets = $(element).cumulativeOffset(); if (options.offset) elementOffsets[1] += options.offset; return new Effect.Tween(null, scrollOffsets.top, elementOffsets[1], options, function(p){ scrollTo(scrollOffsets.left, p.round()); } ); }; /* ------------- combination effects ------------- */ Effect.Fade = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); var options = Object.extend({ from: element.getOpacity() || 1.0, to: 0.0, afterFinishInternal: function(effect) { if (effect.options.to!=0) return; effect.element.hide().setStyle({opacity: oldOpacity}); } }, arguments[1] || { }); return new Effect.Opacity(element,options); }; Effect.Appear = function(element) { element = $(element); var options = Object.extend({ from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), to: 1.0, // force Safari to render floated elements properly afterFinishInternal: function(effect) { effect.element.forceRerendering(); }, beforeSetup: function(effect) { effect.element.setOpacity(effect.options.from).show(); }}, arguments[1] || { }); return new Effect.Opacity(element,options); }; Effect.Puff = function(element) { element = $(element); var oldStyle = { opacity: element.getInlineOpacity(), position: element.getStyle('position'), top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; return new Effect.Parallel( [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], Object.extend({ duration: 1.0, beforeSetupInternal: function(effect) { Position.absolutize(effect.effects[0].element); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().setStyle(oldStyle); } }, arguments[1] || { }) ); }; Effect.BlindUp = function(element) { element = $(element); element.makeClipping(); return new Effect.Scale(element, 0, Object.extend({ scaleContent: false, scaleX: false, restoreAfterFinish: true, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }, arguments[1] || { }) ); }; Effect.BlindDown = function(element) { element = $(element); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: 0, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.element.undoClipping(); } }, arguments[1] || { })); }; Effect.SwitchOff = function(element) { element = $(element); var oldOpacity = element.getInlineOpacity(); return new Effect.Appear(element, Object.extend({ duration: 0.4, from: 0, transition: Effect.Transitions.flicker, afterFinishInternal: function(effect) { new Effect.Scale(effect.element, 1, { duration: 0.3, scaleFromCenter: true, scaleX: false, scaleContent: false, restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); } }); } }, arguments[1] || { })); }; Effect.DropOut = function(element) { element = $(element); var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left'), opacity: element.getInlineOpacity() }; return new Effect.Parallel( [ new Effect.Move(element, {x: 0, y: 100, sync: true }), new Effect.Opacity(element, { sync: true, to: 0.0 }) ], Object.extend( { duration: 0.5, beforeSetup: function(effect) { effect.effects[0].element.makePositioned(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); } }, arguments[1] || { })); }; Effect.Shake = function(element) { element = $(element); var options = Object.extend({ distance: 20, duration: 0.5 }, arguments[1] || {}); var distance = parseFloat(options.distance); var split = parseFloat(options.duration) / 10.0; var oldStyle = { top: element.getStyle('top'), left: element.getStyle('left') }; return new Effect.Move(element, { x: distance, y: 0, duration: split, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: distance*2, y: 0, duration: split*2, afterFinishInternal: function(effect) { new Effect.Move(effect.element, { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) { effect.element.undoPositioned().setStyle(oldStyle); }}); }}); }}); }}); }}); }}); }; Effect.SlideDown = function(element) { element = $(element).cleanWhitespace(); // SlideDown need to have the content of the element wrapped in a container element with fixed height! var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, 100, Object.extend({ scaleContent: false, scaleX: false, scaleFrom: window.opera ? 0 : 1, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if (window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().setStyle({height: '0px'}).show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.undoClipping().undoPositioned(); effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } }, arguments[1] || { }) ); }; Effect.SlideUp = function(element) { element = $(element).cleanWhitespace(); var oldInnerBottom = element.down().getStyle('bottom'); var elementDimensions = element.getDimensions(); return new Effect.Scale(element, window.opera ? 0 : 1, Object.extend({ scaleContent: false, scaleX: false, scaleMode: 'box', scaleFrom: 100, scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, restoreAfterFinish: true, afterSetup: function(effect) { effect.element.makePositioned(); effect.element.down().makePositioned(); if (window.opera) effect.element.setStyle({top: ''}); effect.element.makeClipping().show(); }, afterUpdateInternal: function(effect) { effect.element.down().setStyle({bottom: (effect.dims[0] - effect.element.clientHeight) + 'px' }); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().undoPositioned(); effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } }, arguments[1] || { }) ); }; // Bug in opera makes the TD containing this element expand for a instance after finish Effect.Squish = function(element) { return new Effect.Scale(element, window.opera ? 1 : 0, { restoreAfterFinish: true, beforeSetup: function(effect) { effect.element.makeClipping(); }, afterFinishInternal: function(effect) { effect.element.hide().undoClipping(); } }); }; Effect.Grow = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.full }, arguments[1] || { }); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var initialMoveX, initialMoveY; var moveX, moveY; switch (options.direction) { case 'top-left': initialMoveX = initialMoveY = moveX = moveY = 0; break; case 'top-right': initialMoveX = dims.width; initialMoveY = moveY = 0; moveX = -dims.width; break; case 'bottom-left': initialMoveX = moveX = 0; initialMoveY = dims.height; moveY = -dims.height; break; case 'bottom-right': initialMoveX = dims.width; initialMoveY = dims.height; moveX = -dims.width; moveY = -dims.height; break; case 'center': initialMoveX = dims.width / 2; initialMoveY = dims.height / 2; moveX = -dims.width / 2; moveY = -dims.height / 2; break; } return new Effect.Move(element, { x: initialMoveX, y: initialMoveY, duration: 0.01, beforeSetup: function(effect) { effect.element.hide().makeClipping().makePositioned(); }, afterFinishInternal: function(effect) { new Effect.Parallel( [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), new Effect.Scale(effect.element, 100, { scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) ], Object.extend({ beforeSetup: function(effect) { effect.effects[0].element.setStyle({height: '0px'}).show(); }, afterFinishInternal: function(effect) { effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ); } }); }; Effect.Shrink = function(element) { element = $(element); var options = Object.extend({ direction: 'center', moveTransition: Effect.Transitions.sinoidal, scaleTransition: Effect.Transitions.sinoidal, opacityTransition: Effect.Transitions.none }, arguments[1] || { }); var oldStyle = { top: element.style.top, left: element.style.left, height: element.style.height, width: element.style.width, opacity: element.getInlineOpacity() }; var dims = element.getDimensions(); var moveX, moveY; switch (options.direction) { case 'top-left': moveX = moveY = 0; break; case 'top-right': moveX = dims.width; moveY = 0; break; case 'bottom-left': moveX = 0; moveY = dims.height; break; case 'bottom-right': moveX = dims.width; moveY = dims.height; break; case 'center': moveX = dims.width / 2; moveY = dims.height / 2; break; } return new Effect.Parallel( [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) ], Object.extend({ beforeStartInternal: function(effect) { effect.effects[0].element.makePositioned().makeClipping(); }, afterFinishInternal: function(effect) { effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } }, options) ); }; Effect.Pulsate = function(element) { element = $(element); var options = arguments[1] || { }, oldOpacity = element.getInlineOpacity(), transition = options.transition || Effect.Transitions.linear, reverser = function(pos){ return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5); }; return new Effect.Opacity(element, Object.extend(Object.extend({ duration: 2.0, from: 0, afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } }, options), {transition: reverser})); }; Effect.Fold = function(element) { element = $(element); var oldStyle = { top: element.style.top, left: element.style.left, width: element.style.width, height: element.style.height }; element.makeClipping(); return new Effect.Scale(element, 5, Object.extend({ scaleContent: false, scaleX: false, afterFinishInternal: function(effect) { new Effect.Scale(element, 1, { scaleContent: false, scaleY: false, afterFinishInternal: function(effect) { effect.element.hide().undoClipping().setStyle(oldStyle); } }); }}, arguments[1] || { })); }; Effect.Morph = Class.create(Effect.Base, { initialize: function(element) { this.element = $(element); if (!this.element) throw(Effect._elementDoesNotExistError); var options = Object.extend({ style: { } }, arguments[1] || { }); if (!Object.isString(options.style)) this.style = $H(options.style); else { if (options.style.include(':')) this.style = options.style.parseStyle(); else { this.element.addClassName(options.style); this.style = $H(this.element.getStyles()); this.element.removeClassName(options.style); var css = this.element.getStyles(); this.style = this.style.reject(function(style) { return style.value == css[style.key]; }); options.afterFinishInternal = function(effect) { effect.element.addClassName(effect.options.style); effect.transforms.each(function(transform) { effect.element.style[transform.style] = ''; }); }; } } this.start(options); }, setup: function(){ function parseColor(color){ if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; color = color.parseColor(); return $R(0,2).map(function(i){ return parseInt( color.slice(i*2+1,i*2+3), 16 ); }); } this.transforms = this.style.map(function(pair){ var property = pair[0], value = pair[1], unit = null; if (value.parseColor('#zzzzzz') != '#zzzzzz') { value = value.parseColor(); unit = 'color'; } else if (property == 'opacity') { value = parseFloat(value); if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) this.element.setStyle({zoom: 1}); } else if (Element.CSS_LENGTH.test(value)) { var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/); value = parseFloat(components[1]); unit = (components.length == 3) ? components[2] : null; } var originalValue = this.element.getStyle(property); return { style: property.camelize(), originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), targetValue: unit=='color' ? parseColor(value) : value, unit: unit }; }.bind(this)).reject(function(transform){ return ( (transform.originalValue == transform.targetValue) || ( transform.unit != 'color' && (isNaN(transform.originalValue) || isNaN(transform.targetValue)) ) ); }); }, update: function(position) { var style = { }, transform, i = this.transforms.length; while(i--) style[(transform = this.transforms[i]).style] = transform.unit=='color' ? '#'+ (Math.round(transform.originalValue[0]+ (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() + (Math.round(transform.originalValue[1]+ (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() + (Math.round(transform.originalValue[2]+ (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() : (transform.originalValue + (transform.targetValue - transform.originalValue) * position).toFixed(3) + (transform.unit === null ? '' : transform.unit); this.element.setStyle(style, true); } }); Effect.Transform = Class.create({ initialize: function(tracks){ this.tracks = []; this.options = arguments[1] || { }; this.addTracks(tracks); }, addTracks: function(tracks){ tracks.each(function(track){ track = $H(track); var data = track.values().first(); this.tracks.push($H({ ids: track.keys().first(), effect: Effect.Morph, options: { style: data } })); }.bind(this)); return this; }, play: function(){ return new Effect.Parallel( this.tracks.map(function(track){ var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options'); var elements = [$(ids) || $$(ids)].flatten(); return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) }); }).flatten(), this.options ); } }); Element.CSS_PROPERTIES = $w( 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + 'fontSize fontWeight height left letterSpacing lineHeight ' + 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + 'right textIndent top width wordSpacing zIndex'); Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; String.__parseStyleElement = document.createElement('div'); String.prototype.parseStyle = function(){ var style, styleRules = $H(); if (Prototype.Browser.WebKit) style = new Element('div',{style:this}).style; else { String.__parseStyleElement.innerHTML = '
'; style = String.__parseStyleElement.childNodes[0].style; } Element.CSS_PROPERTIES.each(function(property){ if (style[property]) styleRules.set(property, style[property]); }); if (Prototype.Browser.IE && this.include('opacity')) styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]); return styleRules; }; if (document.defaultView && document.defaultView.getComputedStyle) { Element.getStyles = function(element) { var css = document.defaultView.getComputedStyle($(element), null); return Element.CSS_PROPERTIES.inject({ }, function(styles, property) { styles[property] = css[property]; return styles; }); }; } else { Element.getStyles = function(element) { element = $(element); var css = element.currentStyle, styles; styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) { results[property] = css[property]; return results; }); if (!styles.opacity) styles.opacity = element.getOpacity(); return styles; }; } Effect.Methods = { morph: function(element, style) { element = $(element); new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { })); return element; }, visualEffect: function(element, effect, options) { element = $(element); var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1); new Effect[klass](element, options); return element; }, highlight: function(element, options) { element = $(element); new Effect.Highlight(element, options); return element; } }; $w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+ 'pulsate shake puff squish switchOff dropOut').each( function(effect) { Effect.Methods[effect] = function(element, options){ element = $(element); Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options); return element; }; } ); $w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each( function(f) { Effect.Methods[f] = Element[f]; } ); Element.addMethods(Effect.Methods);gosa-core-2.7.4/html/include/tooltip.js0000644000175000017500000001603711370303656016471 0ustar mikemike/* * Copyright (c) 2006 Jonathan Weiss * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* tooltip-0.2.js - Small tooltip library on top of Prototype * by Jonathan Weiss distributed under the BSD license. * * This tooltip library works in two modes. If it gets a valid DOM element * or DOM id as an argument it uses this element as the tooltip. This * element will be placed (and shown) near the mouse pointer when a trigger- * element is moused-over. * If it gets only a text as an argument instead of a DOM id or DOM element * it will create a div with the classname 'tooltip' that holds the given text. * This newly created div will be used as the tooltip. This is usefull if you * want to use tooltip.js to create popups out of title attributes. * * * Usage: * * * * * Now whenever you trigger a mouseOver on the `trigger` element, the tooltip element will * be shown. On o mouseOut the tooltip disappears. * * Example: * * * * * * * *
* This is product 1 *
* * * * You can use my_tooltip.destroy() to remove the event observers and thereby the tooltip. */ var Tooltip = Class.create(); Tooltip.prototype = { initialize: function(element, tool_tip) { var options = Object.extend({ default_css: false, margin: "0px", padding: "5px", backgroundColor: "#d6d6fc", min_distance_x: 5, min_distance_y: 5, delta_x: 0, delta_y: 0, zindex: 1000 }, arguments[2] || {}); this.element = $(element); this.options = options; // use the supplied tooltip element or create our own div if($(tool_tip)) { this.tool_tip = $(tool_tip); } else { this.tool_tip = $(document.createElement("div")); document.body.appendChild(this.tool_tip); this.tool_tip.addClassName("tooltip"); this.tool_tip.appendChild(document.createTextNode(tool_tip)); } // hide the tool-tip by default this.tool_tip.hide(); this.eventMouseOver = this.showTooltip.bindAsEventListener(this); this.eventMouseOut = this.hideTooltip.bindAsEventListener(this); this.eventMouseMove = this.moveTooltip.bindAsEventListener(this); this.registerEvents(); }, destroy: function() { Event.stopObserving(this.element, "mouseover", this.eventMouseOver); Event.stopObserving(this.element, "mouseout", this.eventMouseOut); Event.stopObserving(this.element, "mousemove", this.eventMouseMove); }, registerEvents: function() { Event.observe(this.element, "mouseover", this.eventMouseOver); Event.observe(this.element, "mouseout", this.eventMouseOut); Event.observe(this.element, "mousemove", this.eventMouseMove); }, moveTooltip: function(event){ Event.stop(event); // get Mouse position var mouse_x = Event.pointerX(event); var mouse_y = Event.pointerY(event); // decide if wee need to switch sides for the tooltip var dimensions = Element.getDimensions( this.tool_tip ); var element_width = dimensions.width; var element_height = dimensions.height; if ( (element_width + mouse_x) >= ( this.getWindowWidth() - this.options.min_distance_x) ){ // too big for X mouse_x = mouse_x - element_width; // apply min_distance to make sure that the mouse is not on the tool-tip mouse_x = mouse_x - this.options.min_distance_x; } else { mouse_x = mouse_x + this.options.min_distance_x; } if ( (element_height + mouse_y) >= ( this.getWindowHeight() - this.options.min_distance_y) ){ // too big for Y mouse_y = mouse_y - element_height; // apply min_distance to make sure that the mouse is not on the tool-tip mouse_y = mouse_y - this.options.min_distance_y; } else { mouse_y = mouse_y + this.options.min_distance_y; } // now set the right styles this.setStyles(mouse_x, mouse_y); }, showTooltip: function(event) { Event.stop(event); this.moveTooltip(event); new Element.show(this.tool_tip); }, setStyles: function(x, y){ // set the right styles to position the tool tip Element.setStyle(this.tool_tip, { position:'absolute', top:y + this.options.delta_y + "px", left:x + this.options.delta_x + "px", zindex:this.options.zindex }); // apply default theme if wanted if (this.options.default_css){ Element.setStyle(this.tool_tip, { margin:this.options.margin, padding:this.options.padding, backgroundColor:this.options.backgroundColor, zindex:this.options.zindex }); } }, hideTooltip: function(event){ new Element.hide(this.tool_tip); }, getWindowHeight: function(){ var innerHeight; if (navigator.appVersion.indexOf('MSIE')>0) { innerHeight = document.body.clientHeight; } else { innerHeight = window.innerHeight; } return innerHeight; }, getWindowWidth: function(){ var innerWidth; if (navigator.appVersion.indexOf('MSIE')>0) { innerWidth = document.body.clientWidth; } else { innerWidth = window.innerWidth; } return innerWidth; } } gosa-core-2.7.4/html/include/builder.js0000644000175000017500000001121011325266624016414 0ustar mikemike// script.aculo.us builder.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 // Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ var Builder = { NODEMAP: { AREA: 'map', CAPTION: 'table', COL: 'table', COLGROUP: 'table', LEGEND: 'fieldset', OPTGROUP: 'select', OPTION: 'select', PARAM: 'object', TBODY: 'table', TD: 'table', TFOOT: 'table', TH: 'table', THEAD: 'table', TR: 'table' }, // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken, // due to a Firefox bug node: function(elementName) { elementName = elementName.toUpperCase(); // try innerHTML approach var parentTag = this.NODEMAP[elementName] || 'div'; var parentElement = document.createElement(parentTag); try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707 parentElement.innerHTML = "<" + elementName + ">"; } catch(e) {} var element = parentElement.firstChild || null; // see if browser added wrapping tags if(element && (element.tagName.toUpperCase() != elementName)) element = element.getElementsByTagName(elementName)[0]; // fallback to createElement approach if(!element) element = document.createElement(elementName); // abort if nothing could be created if(!element) return; // attributes (or text) if(arguments[1]) if(this._isStringOrNumber(arguments[1]) || (arguments[1] instanceof Array) || arguments[1].tagName) { this._children(element, arguments[1]); } else { var attrs = this._attributes(arguments[1]); if(attrs.length) { try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707 parentElement.innerHTML = "<" +elementName + " " + attrs + ">"; } catch(e) {} element = parentElement.firstChild || null; // workaround firefox 1.0.X bug if(!element) { element = document.createElement(elementName); for(attr in arguments[1]) element[attr == 'class' ? 'className' : attr] = arguments[1][attr]; } if(element.tagName.toUpperCase() != elementName) element = parentElement.getElementsByTagName(elementName)[0]; } } // text, or array of children if(arguments[2]) this._children(element, arguments[2]); return $(element); }, _text: function(text) { return document.createTextNode(text); }, ATTR_MAP: { 'className': 'class', 'htmlFor': 'for' }, _attributes: function(attributes) { var attrs = []; for(attribute in attributes) attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) + '="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'"') + '"'); return attrs.join(" "); }, _children: function(element, children) { if(children.tagName) { element.appendChild(children); return; } if(typeof children=='object') { // array can hold nodes and text children.flatten().each( function(e) { if(typeof e=='object') element.appendChild(e); else if(Builder._isStringOrNumber(e)) element.appendChild(Builder._text(e)); }); } else if(Builder._isStringOrNumber(children)) element.appendChild(Builder._text(children)); }, _isStringOrNumber: function(param) { return(typeof param=='string' || typeof param=='number'); }, build: function(html) { var element = this.node('div'); $(element).update(html.strip()); return element.down(); }, dump: function(scope) { if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " + "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " + "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+ "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+ "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+ "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/); tags.each( function(tag){ scope[tag] = function() { return Builder.node.apply(Builder, [tag].concat($A(arguments))); }; }); } };gosa-core-2.7.4/html/include/controls.js0000644000175000017500000010374311325266624016646 0ustar mikemike// script.aculo.us controls.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 // Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // (c) 2005-2009 Ivan Krstic (http://blogs.law.harvard.edu/ivan) // (c) 2005-2009 Jon Tirsen (http://www.tirsen.com) // Contributors: // Richard Livsey // Rahul Bhargava // Rob Wills // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ // Autocompleter.Base handles all the autocompletion functionality // that's independent of the data source for autocompletion. This // includes drawing the autocompletion menu, observing keyboard // and mouse events, and similar. // // Specific autocompleters need to provide, at the very least, // a getUpdatedChoices function that will be invoked every time // the text inside the monitored textbox changes. This method // should get the text for which to provide autocompletion by // invoking this.getToken(), NOT by directly accessing // this.element.value. This is to allow incremental tokenized // autocompletion. Specific auto-completion logic (AJAX, etc) // belongs in getUpdatedChoices. // // Tokenized incremental autocompletion is enabled automatically // when an autocompleter is instantiated with the 'tokens' option // in the options parameter, e.g.: // new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' }); // will incrementally autocomplete with a comma as the token. // Additionally, ',' in the above example can be replaced with // a token array, e.g. { tokens: [',', '\n'] } which // enables autocompletion on multiple tokens. This is most // useful when one of the tokens is \n (a newline), as it // allows smart autocompletion after linebreaks. if(typeof Effect == 'undefined') throw("controls.js requires including script.aculo.us' effects.js library"); var Autocompleter = { }; Autocompleter.Base = Class.create({ baseInitialize: function(element, update, options) { element = $(element); this.element = element; this.update = $(update); this.hasFocus = false; this.changed = false; this.active = false; this.index = 0; this.entryCount = 0; this.oldElementValue = this.element.value; if(this.setOptions) this.setOptions(options); else this.options = options || { }; this.options.paramName = this.options.paramName || this.element.name; this.options.tokens = this.options.tokens || []; this.options.frequency = this.options.frequency || 0.4; this.options.minChars = this.options.minChars || 1; this.options.onShow = this.options.onShow || function(element, update){ if(!update.style.position || update.style.position=='absolute') { update.style.position = 'absolute'; Position.clone(element, update, { setHeight: false, offsetTop: element.offsetHeight }); } Effect.Appear(update,{duration:0.15}); }; this.options.onHide = this.options.onHide || function(element, update){ new Effect.Fade(update,{duration:0.15}) }; if(typeof(this.options.tokens) == 'string') this.options.tokens = new Array(this.options.tokens); // Force carriage returns as token delimiters anyway if (!this.options.tokens.include('\n')) this.options.tokens.push('\n'); this.observer = null; this.element.setAttribute('autocomplete','off'); Element.hide(this.update); Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this)); Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this)); }, show: function() { if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update); if(!this.iefix && (Prototype.Browser.IE) && (Element.getStyle(this.update, 'position')=='absolute')) { new Insertion.After(this.update, ''); this.iefix = $(this.update.id+'_iefix'); } if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50); }, fixIEOverlapping: function() { Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)}); this.iefix.style.zIndex = 1; this.update.style.zIndex = 2; Element.show(this.iefix); }, hide: function() { this.stopIndicator(); if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update); if(this.iefix) Element.hide(this.iefix); }, startIndicator: function() { if(this.options.indicator) Element.show(this.options.indicator); }, stopIndicator: function() { if(this.options.indicator) Element.hide(this.options.indicator); }, onKeyPress: function(event) { if(this.active) switch(event.keyCode) { case Event.KEY_TAB: case Event.KEY_RETURN: this.selectEntry(); Event.stop(event); case Event.KEY_ESC: this.hide(); this.active = false; Event.stop(event); return; case Event.KEY_LEFT: case Event.KEY_RIGHT: return; case Event.KEY_UP: this.markPrevious(); this.render(); Event.stop(event); return; case Event.KEY_DOWN: this.markNext(); this.render(); Event.stop(event); return; } else if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN || (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return; this.changed = true; this.hasFocus = true; if(this.observer) clearTimeout(this.observer); this.observer = setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000); }, activate: function() { this.changed = false; this.hasFocus = true; this.getUpdatedChoices(); }, onHover: function(event) { var element = Event.findElement(event, 'LI'); if(this.index != element.autocompleteIndex) { this.index = element.autocompleteIndex; this.render(); } Event.stop(event); }, onClick: function(event) { var element = Event.findElement(event, 'LI'); this.index = element.autocompleteIndex; this.selectEntry(); this.hide(); }, onBlur: function(event) { // needed to make click events working setTimeout(this.hide.bind(this), 250); this.hasFocus = false; this.active = false; }, render: function() { if(this.entryCount > 0) { for (var i = 0; i < this.entryCount; i++) this.index==i ? Element.addClassName(this.getEntry(i),"selected") : Element.removeClassName(this.getEntry(i),"selected"); if(this.hasFocus) { this.show(); this.active = true; } } else { this.active = false; this.hide(); } }, markPrevious: function() { if(this.index > 0) this.index--; else this.index = this.entryCount-1; this.getEntry(this.index).scrollIntoView(true); }, markNext: function() { if(this.index < this.entryCount-1) this.index++; else this.index = 0; this.getEntry(this.index).scrollIntoView(false); }, getEntry: function(index) { return this.update.firstChild.childNodes[index]; }, getCurrentEntry: function() { return this.getEntry(this.index); }, selectEntry: function() { this.active = false; this.updateElement(this.getCurrentEntry()); }, updateElement: function(selectedElement) { if (this.options.updateElement) { this.options.updateElement(selectedElement); return; } var value = ''; if (this.options.select) { var nodes = $(selectedElement).select('.' + this.options.select) || []; if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select); } else value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal'); var bounds = this.getTokenBounds(); if (bounds[0] != -1) { var newValue = this.element.value.substr(0, bounds[0]); var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/); if (whitespace) newValue += whitespace[0]; this.element.value = newValue + value + this.element.value.substr(bounds[1]); } else { this.element.value = value; } this.oldElementValue = this.element.value; this.element.focus(); if (this.options.afterUpdateElement) this.options.afterUpdateElement(this.element, selectedElement); }, updateChoices: function(choices) { if(!this.changed && this.hasFocus) { this.update.innerHTML = choices; Element.cleanWhitespace(this.update); Element.cleanWhitespace(this.update.down()); if(this.update.firstChild && this.update.down().childNodes) { this.entryCount = this.update.down().childNodes.length; for (var i = 0; i < this.entryCount; i++) { var entry = this.getEntry(i); entry.autocompleteIndex = i; this.addObservers(entry); } } else { this.entryCount = 0; } this.stopIndicator(); this.index = 0; if(this.entryCount==1 && this.options.autoSelect) { this.selectEntry(); this.hide(); } else { this.render(); } } }, addObservers: function(element) { Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this)); Event.observe(element, "click", this.onClick.bindAsEventListener(this)); }, onObserverEvent: function() { this.changed = false; this.tokenBounds = null; if(this.getToken().length>=this.options.minChars) { this.getUpdatedChoices(); } else { this.active = false; this.hide(); } this.oldElementValue = this.element.value; }, getToken: function() { var bounds = this.getTokenBounds(); return this.element.value.substring(bounds[0], bounds[1]).strip(); }, getTokenBounds: function() { if (null != this.tokenBounds) return this.tokenBounds; var value = this.element.value; if (value.strip().empty()) return [-1, 0]; var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue); var offset = (diff == this.oldElementValue.length ? 1 : 0); var prevTokenPos = -1, nextTokenPos = value.length; var tp; for (var index = 0, l = this.options.tokens.length; index < l; ++index) { tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1); if (tp > prevTokenPos) prevTokenPos = tp; tp = value.indexOf(this.options.tokens[index], diff + offset); if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp; } return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]); } }); Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) { var boundary = Math.min(newS.length, oldS.length); for (var index = 0; index < boundary; ++index) if (newS[index] != oldS[index]) return index; return boundary; }; Ajax.Autocompleter = Class.create(Autocompleter.Base, { initialize: function(element, update, url, options) { this.baseInitialize(element, update, options); this.options.asynchronous = true; this.options.onComplete = this.onComplete.bind(this); this.options.defaultParams = this.options.parameters || null; this.url = url; }, getUpdatedChoices: function() { this.startIndicator(); var entry = encodeURIComponent(this.options.paramName) + '=' + encodeURIComponent(this.getToken()); this.options.parameters = this.options.callback ? this.options.callback(this.element, entry) : entry; if(this.options.defaultParams) this.options.parameters += '&' + this.options.defaultParams; new Ajax.Request(this.url, this.options); }, onComplete: function(request) { this.updateChoices(request.responseText); } }); // The local array autocompleter. Used when you'd prefer to // inject an array of autocompletion options into the page, rather // than sending out Ajax queries, which can be quite slow sometimes. // // The constructor takes four parameters. The first two are, as usual, // the id of the monitored textbox, and id of the autocompletion menu. // The third is the array you want to autocomplete from, and the fourth // is the options block. // // Extra local autocompletion options: // - choices - How many autocompletion choices to offer // // - partialSearch - If false, the autocompleter will match entered // text only at the beginning of strings in the // autocomplete array. Defaults to true, which will // match text at the beginning of any *word* in the // strings in the autocomplete array. If you want to // search anywhere in the string, additionally set // the option fullSearch to true (default: off). // // - fullSsearch - Search anywhere in autocomplete array strings. // // - partialChars - How many characters to enter before triggering // a partial match (unlike minChars, which defines // how many characters are required to do any match // at all). Defaults to 2. // // - ignoreCase - Whether to ignore case when autocompleting. // Defaults to true. // // It's possible to pass in a custom function as the 'selector' // option, if you prefer to write your own autocompletion logic. // In that case, the other options above will not apply unless // you support them. Autocompleter.Local = Class.create(Autocompleter.Base, { initialize: function(element, update, array, options) { this.baseInitialize(element, update, options); this.options.array = array; }, getUpdatedChoices: function() { this.updateChoices(this.options.selector(this)); }, setOptions: function(options) { this.options = Object.extend({ choices: 10, partialSearch: true, partialChars: 2, ignoreCase: true, fullSearch: false, selector: function(instance) { var ret = []; // Beginning matches var partial = []; // Inside matches var entry = instance.getToken(); var count = 0; for (var i = 0; i < instance.options.array.length && ret.length < instance.options.choices ; i++) { var elem = instance.options.array[i]; var foundPos = instance.options.ignoreCase ? elem.toLowerCase().indexOf(entry.toLowerCase()) : elem.indexOf(entry); while (foundPos != -1) { if (foundPos == 0 && elem.length != entry.length) { ret.push("
  • " + elem.substr(0, entry.length) + "" + elem.substr(entry.length) + "
  • "); break; } else if (entry.length >= instance.options.partialChars && instance.options.partialSearch && foundPos != -1) { if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) { partial.push("
  • " + elem.substr(0, foundPos) + "" + elem.substr(foundPos, entry.length) + "" + elem.substr( foundPos + entry.length) + "
  • "); break; } } foundPos = instance.options.ignoreCase ? elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) : elem.indexOf(entry, foundPos + 1); } } if (partial.length) ret = ret.concat(partial.slice(0, instance.options.choices - ret.length)); return "
      " + ret.join('') + "
    "; } }, options || { }); } }); // AJAX in-place editor and collection editor // Full rewrite by Christophe Porteneuve (April 2007). // Use this if you notice weird scrolling problems on some browsers, // the DOM might be a bit confused when this gets called so do this // waits 1 ms (with setTimeout) until it does the activation Field.scrollFreeActivate = function(field) { setTimeout(function() { Field.activate(field); }, 1); }; Ajax.InPlaceEditor = Class.create({ initialize: function(element, url, options) { this.url = url; this.element = element = $(element); this.prepareOptions(); this._controls = { }; arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!! Object.extend(this.options, options || { }); if (!this.options.formId && this.element.id) { this.options.formId = this.element.id + '-inplaceeditor'; if ($(this.options.formId)) this.options.formId = ''; } if (this.options.externalControl) this.options.externalControl = $(this.options.externalControl); if (!this.options.externalControl) this.options.externalControlOnly = false; this._originalBackground = this.element.getStyle('background-color') || 'transparent'; this.element.title = this.options.clickToEditText; this._boundCancelHandler = this.handleFormCancellation.bind(this); this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this); this._boundFailureHandler = this.handleAJAXFailure.bind(this); this._boundSubmitHandler = this.handleFormSubmission.bind(this); this._boundWrapperHandler = this.wrapUp.bind(this); this.registerListeners(); }, checkForEscapeOrReturn: function(e) { if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return; if (Event.KEY_ESC == e.keyCode) this.handleFormCancellation(e); else if (Event.KEY_RETURN == e.keyCode) this.handleFormSubmission(e); }, createControl: function(mode, handler, extraClasses) { var control = this.options[mode + 'Control']; var text = this.options[mode + 'Text']; if ('button' == control) { var btn = document.createElement('input'); btn.type = 'submit'; btn.value = text; btn.className = 'editor_' + mode + '_button'; if ('cancel' == mode) btn.onclick = this._boundCancelHandler; this._form.appendChild(btn); this._controls[mode] = btn; } else if ('link' == control) { var link = document.createElement('a'); link.href = '#'; link.appendChild(document.createTextNode(text)); link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler; link.className = 'editor_' + mode + '_link'; if (extraClasses) link.className += ' ' + extraClasses; this._form.appendChild(link); this._controls[mode] = link; } }, createEditField: function() { var text = (this.options.loadTextURL ? this.options.loadingText : this.getText()); var fld; if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) { fld = document.createElement('input'); fld.type = 'text'; var size = this.options.size || this.options.cols || 0; if (0 < size) fld.size = size; } else { fld = document.createElement('textarea'); fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows); fld.cols = this.options.cols || 40; } fld.name = this.options.paramName; fld.value = text; // No HTML breaks conversion anymore fld.className = 'editor_field'; if (this.options.submitOnBlur) fld.onblur = this._boundSubmitHandler; this._controls.editor = fld; if (this.options.loadTextURL) this.loadExternalText(); this._form.appendChild(this._controls.editor); }, createForm: function() { var ipe = this; function addText(mode, condition) { var text = ipe.options['text' + mode + 'Controls']; if (!text || condition === false) return; ipe._form.appendChild(document.createTextNode(text)); }; this._form = $(document.createElement('form')); this._form.id = this.options.formId; this._form.addClassName(this.options.formClassName); this._form.onsubmit = this._boundSubmitHandler; this.createEditField(); if ('textarea' == this._controls.editor.tagName.toLowerCase()) this._form.appendChild(document.createElement('br')); if (this.options.onFormCustomization) this.options.onFormCustomization(this, this._form); addText('Before', this.options.okControl || this.options.cancelControl); this.createControl('ok', this._boundSubmitHandler); addText('Between', this.options.okControl && this.options.cancelControl); this.createControl('cancel', this._boundCancelHandler, 'editor_cancel'); addText('After', this.options.okControl || this.options.cancelControl); }, destroy: function() { if (this._oldInnerHTML) this.element.innerHTML = this._oldInnerHTML; this.leaveEditMode(); this.unregisterListeners(); }, enterEditMode: function(e) { if (this._saving || this._editing) return; this._editing = true; this.triggerCallback('onEnterEditMode'); if (this.options.externalControl) this.options.externalControl.hide(); this.element.hide(); this.createForm(); this.element.parentNode.insertBefore(this._form, this.element); if (!this.options.loadTextURL) this.postProcessEditField(); if (e) Event.stop(e); }, enterHover: function(e) { if (this.options.hoverClassName) this.element.addClassName(this.options.hoverClassName); if (this._saving) return; this.triggerCallback('onEnterHover'); }, getText: function() { return this.element.innerHTML.unescapeHTML(); }, handleAJAXFailure: function(transport) { this.triggerCallback('onFailure', transport); if (this._oldInnerHTML) { this.element.innerHTML = this._oldInnerHTML; this._oldInnerHTML = null; } }, handleFormCancellation: function(e) { this.wrapUp(); if (e) Event.stop(e); }, handleFormSubmission: function(e) { var form = this._form; var value = $F(this._controls.editor); this.prepareSubmission(); var params = this.options.callback(form, value) || ''; if (Object.isString(params)) params = params.toQueryParams(); params.editorId = this.element.id; if (this.options.htmlResponse) { var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions); Object.extend(options, { parameters: params, onComplete: this._boundWrapperHandler, onFailure: this._boundFailureHandler }); new Ajax.Updater({ success: this.element }, this.url, options); } else { var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: params, onComplete: this._boundWrapperHandler, onFailure: this._boundFailureHandler }); new Ajax.Request(this.url, options); } if (e) Event.stop(e); }, leaveEditMode: function() { this.element.removeClassName(this.options.savingClassName); this.removeForm(); this.leaveHover(); this.element.style.backgroundColor = this._originalBackground; this.element.show(); if (this.options.externalControl) this.options.externalControl.show(); this._saving = false; this._editing = false; this._oldInnerHTML = null; this.triggerCallback('onLeaveEditMode'); }, leaveHover: function(e) { if (this.options.hoverClassName) this.element.removeClassName(this.options.hoverClassName); if (this._saving) return; this.triggerCallback('onLeaveHover'); }, loadExternalText: function() { this._form.addClassName(this.options.loadingClassName); this._controls.editor.disabled = true; var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: 'editorId=' + encodeURIComponent(this.element.id), onComplete: Prototype.emptyFunction, onSuccess: function(transport) { this._form.removeClassName(this.options.loadingClassName); var text = transport.responseText; if (this.options.stripLoadedTextTags) text = text.stripTags(); this._controls.editor.value = text; this._controls.editor.disabled = false; this.postProcessEditField(); }.bind(this), onFailure: this._boundFailureHandler }); new Ajax.Request(this.options.loadTextURL, options); }, postProcessEditField: function() { var fpc = this.options.fieldPostCreation; if (fpc) $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate'](); }, prepareOptions: function() { this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions); Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks); [this._extraDefaultOptions].flatten().compact().each(function(defs) { Object.extend(this.options, defs); }.bind(this)); }, prepareSubmission: function() { this._saving = true; this.removeForm(); this.leaveHover(); this.showSaving(); }, registerListeners: function() { this._listeners = { }; var listener; $H(Ajax.InPlaceEditor.Listeners).each(function(pair) { listener = this[pair.value].bind(this); this._listeners[pair.key] = listener; if (!this.options.externalControlOnly) this.element.observe(pair.key, listener); if (this.options.externalControl) this.options.externalControl.observe(pair.key, listener); }.bind(this)); }, removeForm: function() { if (!this._form) return; this._form.remove(); this._form = null; this._controls = { }; }, showSaving: function() { this._oldInnerHTML = this.element.innerHTML; this.element.innerHTML = this.options.savingText; this.element.addClassName(this.options.savingClassName); this.element.style.backgroundColor = this._originalBackground; this.element.show(); }, triggerCallback: function(cbName, arg) { if ('function' == typeof this.options[cbName]) { this.options[cbName](this, arg); } }, unregisterListeners: function() { $H(this._listeners).each(function(pair) { if (!this.options.externalControlOnly) this.element.stopObserving(pair.key, pair.value); if (this.options.externalControl) this.options.externalControl.stopObserving(pair.key, pair.value); }.bind(this)); }, wrapUp: function(transport) { this.leaveEditMode(); // Can't use triggerCallback due to backward compatibility: requires // binding + direct element this._boundComplete(transport, this.element); } }); Object.extend(Ajax.InPlaceEditor.prototype, { dispose: Ajax.InPlaceEditor.prototype.destroy }); Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, { initialize: function($super, element, url, options) { this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions; $super(element, url, options); }, createEditField: function() { var list = document.createElement('select'); list.name = this.options.paramName; list.size = 1; this._controls.editor = list; this._collection = this.options.collection || []; if (this.options.loadCollectionURL) this.loadCollection(); else this.checkForExternalText(); this._form.appendChild(this._controls.editor); }, loadCollection: function() { this._form.addClassName(this.options.loadingClassName); this.showLoadingText(this.options.loadingCollectionText); var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: 'editorId=' + encodeURIComponent(this.element.id), onComplete: Prototype.emptyFunction, onSuccess: function(transport) { var js = transport.responseText.strip(); if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check throw('Server returned an invalid collection representation.'); this._collection = eval(js); this.checkForExternalText(); }.bind(this), onFailure: this.onFailure }); new Ajax.Request(this.options.loadCollectionURL, options); }, showLoadingText: function(text) { this._controls.editor.disabled = true; var tempOption = this._controls.editor.firstChild; if (!tempOption) { tempOption = document.createElement('option'); tempOption.value = ''; this._controls.editor.appendChild(tempOption); tempOption.selected = true; } tempOption.update((text || '').stripScripts().stripTags()); }, checkForExternalText: function() { this._text = this.getText(); if (this.options.loadTextURL) this.loadExternalText(); else this.buildOptionList(); }, loadExternalText: function() { this.showLoadingText(this.options.loadingText); var options = Object.extend({ method: 'get' }, this.options.ajaxOptions); Object.extend(options, { parameters: 'editorId=' + encodeURIComponent(this.element.id), onComplete: Prototype.emptyFunction, onSuccess: function(transport) { this._text = transport.responseText.strip(); this.buildOptionList(); }.bind(this), onFailure: this.onFailure }); new Ajax.Request(this.options.loadTextURL, options); }, buildOptionList: function() { this._form.removeClassName(this.options.loadingClassName); this._collection = this._collection.map(function(entry) { return 2 === entry.length ? entry : [entry, entry].flatten(); }); var marker = ('value' in this.options) ? this.options.value : this._text; var textFound = this._collection.any(function(entry) { return entry[0] == marker; }.bind(this)); this._controls.editor.update(''); var option; this._collection.each(function(entry, index) { option = document.createElement('option'); option.value = entry[0]; option.selected = textFound ? entry[0] == marker : 0 == index; option.appendChild(document.createTextNode(entry[1])); this._controls.editor.appendChild(option); }.bind(this)); this._controls.editor.disabled = false; Field.scrollFreeActivate(this._controls.editor); } }); //**** DEPRECATION LAYER FOR InPlace[Collection]Editor! **** //**** This only exists for a while, in order to let **** //**** users adapt to the new API. Read up on the new **** //**** API and convert your code to it ASAP! **** Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) { if (!options) return; function fallback(name, expr) { if (name in options || expr === undefined) return; options[name] = expr; }; fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' : options.cancelLink == options.cancelButton == false ? false : undefined))); fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' : options.okLink == options.okButton == false ? false : undefined))); fallback('highlightColor', options.highlightcolor); fallback('highlightEndColor', options.highlightendcolor); }; Object.extend(Ajax.InPlaceEditor, { DefaultOptions: { ajaxOptions: { }, autoRows: 3, // Use when multi-line w/ rows == 1 cancelControl: 'link', // 'link'|'button'|false cancelText: 'cancel', clickToEditText: 'Click to edit', externalControl: null, // id|elt externalControlOnly: false, fieldPostCreation: 'activate', // 'activate'|'focus'|false formClassName: 'inplaceeditor-form', formId: null, // id|elt highlightColor: '#ffff99', highlightEndColor: '#ffffff', hoverClassName: '', htmlResponse: true, loadingClassName: 'inplaceeditor-loading', loadingText: 'Loading...', okControl: 'button', // 'link'|'button'|false okText: 'ok', paramName: 'value', rows: 1, // If 1 and multi-line, uses autoRows savingClassName: 'inplaceeditor-saving', savingText: 'Saving...', size: 0, stripLoadedTextTags: false, submitOnBlur: false, textAfterControls: '', textBeforeControls: '', textBetweenControls: '' }, DefaultCallbacks: { callback: function(form) { return Form.serialize(form); }, onComplete: function(transport, element) { // For backward compatibility, this one is bound to the IPE, and passes // the element directly. It was too often customized, so we don't break it. new Effect.Highlight(element, { startcolor: this.options.highlightColor, keepBackgroundImage: true }); }, onEnterEditMode: null, onEnterHover: function(ipe) { ipe.element.style.backgroundColor = ipe.options.highlightColor; if (ipe._effect) ipe._effect.cancel(); }, onFailure: function(transport, ipe) { alert('Error communication with the server: ' + transport.responseText.stripTags()); }, onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls. onLeaveEditMode: null, onLeaveHover: function(ipe) { ipe._effect = new Effect.Highlight(ipe.element, { startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor, restorecolor: ipe._originalBackground, keepBackgroundImage: true }); } }, Listeners: { click: 'enterEditMode', keydown: 'checkForEscapeOrReturn', mouseover: 'enterHover', mouseout: 'leaveHover' } }); Ajax.InPlaceCollectionEditor.DefaultOptions = { loadingCollectionText: 'Loading options...' }; // Delayed observer, like Form.Element.Observer, // but waits for delay after last key input // Ideal for live-search fields Form.Element.DelayedObserver = Class.create({ initialize: function(element, delay, callback) { this.delay = delay || 0.5; this.element = $(element); this.callback = callback; this.timer = null; this.lastValue = $F(this.element); Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this)); }, delayedListener: function(event) { if(this.lastValue == $F(this.element)) return; if(this.timer) clearTimeout(this.timer); this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000); this.lastValue = $F(this.element); }, onTimerEvent: function() { this.timer = null; this.callback(this.element, $F(this.element)); } });gosa-core-2.7.4/html/include/pwdStrength.js0000644000175000017500000001250111331520666017277 0ustar mikemike/************************************************************* Created: 20060120 Author: Steve Moitozo Description: This is a quick and dirty password quality meter written in JavaScript License: MIT License (see below) ================================= Revision Author: Dick Ervasti (dick dot ervasti at quty dot com) Revision Description: Exchanged text based prompts for a graphic thermometer ================================= Revision Author: Jay Bigam jayb tearupyourlawn com Revision Date: Feb. 26, 2007 Revision Description: Changed D. Ervasti's table based "thermometer" to CSS. Revision Notes: - Verified to work in FF2, IE7 and Safari2 - Modified messages to reflect Minimum strength requirement - Added formSubmit button disabled until minimum requirement met ================================= Modified: 20061111 - Steve Moitozo corrected regex for letters and numbers Thanks to Zack Smith -- zacksmithdesign.com and put MIT License back in Modified: 20100201 - Cajus Pollmeier stripped parts unnessesary for GOsa and moved to prototype. Stripped comments. --------------------------------------------------------------- Copyright (c) 2006 Steve Moitozo Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------------------- ************************************************************ */ function testPasswordCss(passwd) { var intScore = 0 // PASSWORD LENGTH if (passwd.length==0 || !passwd.length) // length 0 { intScore = -1 } else if (passwd.length>0 && passwd.length<5) // length between 1 and 4 { intScore = (intScore+3) } else if (passwd.length>4 && passwd.length<8) // length between 5 and 7 { intScore = (intScore+6) } else if (passwd.length>7 && passwd.length<12)// length between 8 and 15 { intScore = (intScore+12) } else if (passwd.length>11) // length 16 or more { intScore = (intScore+18) } // LETTERS (Not exactly implemented as dictacted above because of my limited understanding of Regex) if (passwd.match(/[a-z]/)) // [verified] at least one lower case letter { intScore = (intScore+1) } if (passwd.match(/[A-Z]/)) // [verified] at least one upper case letter { intScore = (intScore+5) } // NUMBERS if (passwd.match(/\d+/)) // [verified] at least one number { intScore = (intScore+5) } if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/)) // [verified] at least three numbers { intScore = (intScore+5) } // SPECIAL CHAR if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) // [verified] at least one special character { intScore = (intScore+5) } // [verified] at least two special characters if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) { intScore = (intScore+5) } // COMBOS if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) // [verified] both upper and lower case { intScore = (intScore+2) } if (passwd.match(/([a-zA-Z])/) && passwd.match(/([0-9])/)) // [verified] both letters and numbers { intScore = (intScore+2) } // [verified] letters, numbers, and special characters if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)) { intScore = (intScore+2) } if(intScore == -1) { $('meterEmpty').setStyle({width: '100%'}); $('meterFull').setStyle({width: '0%'}); } else if(intScore > -1 && intScore < 16) { $('meterEmpty').setStyle({width: '100%'}); $('meterFull').setStyle({width: '0%'}); } else if (intScore > 15 && intScore < 25) { $('meterEmpty').setStyle({width: '100%'}); $('meterFull').setStyle({width: '25%'}); } else if (intScore > 24 && intScore < 35) { $('meterEmpty').setStyle({width: '100%'}); $('meterFull').setStyle({width: '50%'}); } else if (intScore > 34 && intScore < 45) { $('meterEmpty').setStyle({width: '100%'}); $('meterFull').setStyle({width: '75%'}); } else { $('meterEmpty').setStyle({width: '100%'}); $('meterFull').setStyle({width: '100%'}); } } gosa-core-2.7.4/html/include/datepicker.js0000644000175000017500000006646111340757577017134 0ustar mikemike/** * DatePicker widget using Prototype and Scriptaculous. * (c) 2007 Mathieu Jondet * Eulerian Technologies * * DatePicker is freely distributable under the same terms as Prototype. * * Modified 10.06.2008 * by Manu * */ /** * DatePickerFormatter class for matching and stringifying dates. * * By Arturas Slajus . */ var DatePickerFormatter = Class.create(); DatePickerFormatter.prototype = { /** * Create a DatePickerFormatter. * * format: specify a format by passing 3 value array consisting of * "yyyy", "mm", "dd". Default: ["yyyy", "mm", "dd"]. * * separator: string for splitting the values. Default: "-". * * Use it like this: * var df = new DatePickerFormatter(["dd", "mm", "yyyy"], "/"); * df.current_date(); * df.match("7/7/2007"); */ initialize: function(format, separator) { if (Object.isUndefined(format)) format = ["yyyy", "mm", "dd"]; if (Object.isUndefined(separator)) separator = "-"; this._format = format; this.separator = separator; this._format_year_index = format.indexOf("yyyy"); this._format_month_index= format.indexOf("mm"); this._format_day_index = format.indexOf("dd"); this._year_regexp = /^\d{4}$/; this._month_regexp = /^0\d|1[012]|\d$/; this._day_regexp = /^0\d|[12]\d|3[01]|\d$/; }, /** * Match a string against date format. * Returns: [year, month, day] */ match: function(str) { var d = str.split(this.separator); if (d.length < 3) { return false; } var year = d[this._format_year_index].match(this._year_regexp); if (year) { year = year[0] } else { return false } var month = d[this._format_month_index].match(this._month_regexp); if (month) { month = month[0] } else { return false } var day = d[this._format_day_index].match(this._day_regexp); if (day) { day = day[0] } else { return false } return [year, month, day]; }, /** * Return current date according to format. */ current_date: function() { var d = new Date; return this.date_to_string ( d.getFullYear(), d.getMonth() + 1, d.getDate() ); }, /** * Return a stringified date accordint to format. */ date_to_string: function(year, month, day, separator) { if (Object.isUndefined(separator)) separator = this.separator; var a = [0, 0, 0]; a[this._format_year_index] = year; a[this._format_month_index]= month.toPaddedString(2); a[this._format_day_index] = day.toPaddedString(2); return a.join(separator); } }; /** * DatePicker */ var datepickers = $H(); var DatePicker = Class.create(); DatePicker.prototype = { Version : '0.9.4', _relative : null, _div : null, _zindex : 1, _keepFieldEmpty : false, _daysInMonth : [31,28,31,30,31,30,31,31,30,31,30,31], _dateFormat : [ ["dd", "mm", "yyyy"], "." ], /* language */ _language : 'de', _language_month : $H({ 'fr' : [ 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Aout', 'Septembre', 'Octobre', 'Novembre', 'Décembre' ], 'en' : [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], 'es' : [ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre' ], 'it' : [ 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre' ], 'de' : [ 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember' ], 'pt' : [ 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro' ], 'hu' : [ 'Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December' ], 'lt' : [ 'Sausis', 'Vasaris', 'Kovas', 'Balandis', 'Gegužė', 'Birželis', 'Liepa', 'Rugjūtis', 'Rusėjis', 'Spalis', 'Lapkritis', 'Gruodis' ], 'nl' : [ 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december' ], 'dk' : [ 'Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December' ], 'no' : [ 'Januar', 'Februar', 'Mars', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Desember' ], 'lv' : [ 'Janvāris', 'Februāris', 'Marts', 'Aprīlis', 'Maijs', 'Jūnijs', 'Jūlijs', 'Augusts', 'Septembris', 'Oktobris', 'Novembris', 'Decemberis' ], 'ja' : [ '1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月' ], 'fi' : [ 'Tammikuu', 'Helmikuu', 'Maaliskuu', 'Huhtikuu', 'Toukokuu', 'Kesäkuu', 'Heinäkuu', 'Elokuu', 'Syyskuu', 'Lokakuu', 'Marraskuu', 'Joulukuu' ], 'ro' : [ 'Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Junie', 'Julie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie' ], 'zh' : [ '1 月', '2 月', '3 月', '4 月', '5 月', '6 月', '7 月', '8 月', '9 月', '10月', '11月', '12月'], 'sv' : [ 'Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December' ] }), _language_day : $H({ 'fr' : [ 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim' ], 'en' : [ 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' ], 'es' : [ 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sàb', 'Dom' ], 'it' : [ 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab', 'Dom' ], 'de' : [ 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So' ], 'pt' : [ 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sá', 'Dom' ], 'hu' : [ 'Hé', 'Ke', 'Sze', 'Csü', 'Pé', 'Szo', 'Vas' ], 'lt' : [ 'Pir', 'Ant', 'Tre', 'Ket', 'Pen', 'Šeš', 'Sek' ], 'nl' : [ 'ma', 'di', 'wo', 'do', 'vr', 'za', 'zo' ], 'dk' : [ 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør', 'Søn' ], 'no' : [ 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør', 'Sun' ], 'lv' : [ 'P', 'O', 'T', 'C', 'Pk', 'S', 'Sv' ], 'ja' : [ '月', '火', '水', '木', '金', '土', '日' ], 'fi' : [ 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La', 'Su' ], 'ro' : [ 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sam', 'Dum' ], 'zh' : [ '周一', '周二', '周三', '周四', '周五', '周六', '周日' ], 'sv' : [ 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör', 'Sön' ] }), _language_close : $H({ 'fr' : 'fermer', 'en' : 'close', 'es' : 'cierre', 'it' : 'fine', 'de' : 'schliessen', 'pt' : 'fim', 'hu' : 'bezár', 'lt' : 'udaryti', 'nl' : 'sluiten', 'dk' : 'luk', 'no' : 'lukk', 'lv' : 'aizvērt', 'ja' : '閉じる', 'fi' : 'sulje', 'ro' : 'inchide', 'zh' : '关 闭', 'sv' : 'stäng' }), /* date manipulation */ _todayDate : new Date(), _current_date : null, _clickCallback : Prototype.emptyFunction, _cellCallback : Prototype.emptyFunction, _id_datepicker : null, _disablePastDate : false, _disableFutureDate : false, _oneDayInMs : 24 * 3600 * 1000, /* positionning */ _topOffset : 20, _leftOffset : 0, _isPositionned : false, _relativePosition : true, _setPositionTop : 0, _setPositionLeft : 0, _bodyAppend : false, /* Effects Adjustment */ _showEffect : "appear", _showDuration : 1, _enableShowEffect : true, _closeEffect : "fade", _closeEffectDuration : 0.3, _enableCloseEffect : true, _closeTimer : null, _enableCloseOnBlur : false, /* afterClose : called when the close function is executed */ _afterClose : Prototype.emptyFunction, /* return the name of current month in appropriate language */ getMonthLocale : function ( month ) { return this._language_month.get(this._language)[month]; }, getLocaleClose : function () { return this._language_close.get(this._language); }, _initCurrentDate : function () { /* Create the DateFormatter */ this._df = new DatePickerFormatter(this._dateFormat[0], this._dateFormat[1]); /* check if value in field is proper, if not set to today */ this._current_date = $F(this._relative); if (! this._df.match(this._current_date)) { this._current_date = this._df.current_date(); /* set the field value ? */ if (!this._keepFieldEmpty) $(this._relative).value = this._current_date; } var a_date = this._df.match(this._current_date); this._current_year = Number(a_date[0]); this._current_mon = Number(a_date[1]) - 1; this._current_day = Number(a_date[2]); }, /* init */ initialize : function ( h_p ) { /* arguments */ this._relative= h_p["relative"]; if (h_p["language"]) this._language = h_p["language"]; this._zindex = ( h_p["zindex"] ) ? parseInt(Number(h_p["zindex"])) : 999; if (!Object.isUndefined(h_p["keepFieldEmpty"])) this._keepFieldEmpty = h_p["keepFieldEmpty"]; if (Object.isFunction(h_p["clickCallback"])) this._clickCallback = h_p["clickCallback"]; if (!Object.isUndefined(h_p["leftOffset"])) this._leftOffset = parseInt(h_p["leftOffset"]); if (!Object.isUndefined(h_p["topOffset"])) this._topOffset = parseInt(h_p["topOffset"]); if (!Object.isUndefined(h_p["relativePosition"])) this._relativePosition = h_p["relativePosition"]; if (!Object.isUndefined(h_p["showEffect"])) this._showEffect = h_p["showEffect"]; if (!Object.isUndefined(h_p["enableShowEffect"])) this._enableShowEffect = h_p["enableShowEffect"]; if (!Object.isUndefined(h_p["showDuration"])) this._showDuration = h_p["showDuration"]; if (!Object.isUndefined(h_p["closeEffect"])) this._closeEffect = h_p["closeEffect"]; if (!Object.isUndefined(h_p["enableCloseEffect"])) this._enableCloseEffect = h_p["enableCloseEffect"]; if (!Object.isUndefined(h_p["closeEffectDuration"])) this._closeEffectDuration = h_p["closeEffectDuration"]; if (Object.isFunction(h_p["afterClose"])) this._afterClose = h_p["afterClose"]; if (!Object.isUndefined(h_p["externalControl"])) this._externalControl = h_p["externalControl"]; if (!Object.isUndefined(h_p["dateFormat"])) this._dateFormat = h_p["dateFormat"]; if (Object.isFunction(h_p["cellCallback"])) this._cellCallback = h_p["cellCallback"]; this._setPositionTop = ( h_p["setPositionTop"] ) ? parseInt(Number(h_p["setPositionTop"])) : 0; this._setPositionLeft = ( h_p["setPositionLeft"] ) ? parseInt(Number(h_p["setPositionLeft"])) : 0; if (!Object.isUndefined(h_p["enableCloseOnBlur"]) && h_p["enableCloseOnBlur"]) this._enableCloseOnBlur = true; if (!Object.isUndefined(h_p["disablePastDate"]) && h_p["disablePastDate"]) this._disablePastDate = true; if (!Object.isUndefined(h_p["disableFutureDate"]) && !h_p["disableFutureDate"]) this._disableFutureDate = false; this._id_datepicker = 'datepicker-'+ this._relative; this._id_datepicker_prev = this._id_datepicker +'-prev'; this._id_datepicker_prev_year = this._id_datepicker +'-prev-year'; this._id_datepicker_next = this._id_datepicker +'-next'; this._id_datepicker_next_year = this._id_datepicker +'-next-year'; this._id_datepicker_hdr = this._id_datepicker +'-header'; this._id_datepicker_ftr = this._id_datepicker +'-footer'; /* build up calendar skel */ this._div = new Element('div', { id : this._id_datepicker, className : 'datepicker', style : 'display: none; z-index:'+ this._zindex }); // this._div.innerHTML = '
     <<  >> 
    '; this._div.innerHTML = '
    << < > >>
    '; /* Build the datepicker icon */ var datepickeropener = Builder.node('table',{className : "datepicker-opener-table", id: this._id_datepicker + '_image'}); var con = Builder.node('tr',{},[ Builder.node('td',{className : "datepicker-opener", id : "datepicker-opener-"+ this._relative}) ]); // insert into TBODY if (datepickeropener.childNodes[0] != undefined) { datepickeropener.childNodes[0].appendChild(con); } else { datepickeropener.appendChild(con); } Event.observe(datepickeropener,'click', this.click.bindAsEventListener(this), false); this.insertAfter($(this._relative).parentNode,datepickeropener,$(this._relative)); /* End Build the datepicker icon */ /* finally declare the event listener on input field */ //Event.observe(this._relative, 'click', this.click.bindAsEventListener(this), false); /* need to append on body when doc is loaded for IE */ document.observe('dom:loaded', this.load.bindAsEventListener(this), false); /* automatically close when blur event is triggered */ if ( this._enableCloseOnBlur ) { Event.observe(this._relative, 'blur', function (e) { this._closeTimer = this.close.bind(this).delay(1); }.bindAsEventListener(this)); Event.observe(this._div, 'click', function (e) { if (this._closeTimer) { window.clearTimeout(this._closeTimer); this._closeTimer = null; } }); } }, /** * load : called when document is fully-loaded to append datepicker * to main object. */ load : function () { /* if externalControl defined set the observer on it */ if (this._externalControl) Event.observe(this._externalControl, 'click', this.click.bindAsEventListener(this), false); /* append to page */ if (this._relativeAppend) { /* append to parent node */ if ($(this._relative).parentNode) { this._div.innerHTML = this._wrap_in_iframe(this._div.innerHTML); $(this._relative).parentNode.appendChild( this._div ); } } else { /* append to body */ var body = document.getElementsByTagName("body").item(0); if (body) { this._div.innerHTML = this._wrap_in_iframe(this._div.innerHTML); body.appendChild(this._div); } if ( this._relativePosition ) { var a_pos = Element.cumulativeOffset($(this._relative)); this.setPosition(a_pos[1], a_pos[0]); } else { if (this._setPositionTop || this._setPositionLeft) this.setPosition(this._setPositionTop, this._setPositionLeft); } } /* init the date in field if needed */ this._initCurrentDate(); /* set the close locale content */ $(this._id_datepicker_ftr).innerHTML = this.getLocaleClose(); /* declare the observers for UI control */ Event.observe($(this._id_datepicker_prev), 'click', this.prevMonth.bindAsEventListener(this), false); Event.observe($(this._id_datepicker_prev_year), 'click', this.prevYear.bindAsEventListener(this), false); Event.observe($(this._id_datepicker_next), 'click', this.nextMonth.bindAsEventListener(this), false); Event.observe($(this._id_datepicker_next_year), 'click', this.nextYear.bindAsEventListener(this), false); Event.observe($(this._id_datepicker_ftr), 'click', this.close.bindAsEventListener(this), false); }, insertAfter : function(parent, node, referenceNode) { parent.insertBefore(node, referenceNode.nextSibling); }, /* hack for buggy form elements layering in IE */ _wrap_in_iframe : function ( content ) { return ( Prototype.Browser.IE && msieversion() < 8 ) ? "
    " + content + "
    " : content; }, /** * visible : return the visibility status of the datepicker. */ visible : function () { return $(this._id_datepicker).visible(); }, /** * click : called when input element is clicked */ click : function () { /* init the datepicker if it doesn't exists */ if ( $(this._id_datepicker) == null ) this.load(); var a_pos = Element.cumulativeOffset($(this._relative)); this.setPosition(a_pos[1], a_pos[0]); if (!this._isPositionned && this._relativePosition) { /* position the datepicker relatively to element */ var a_lt = Element.positionedOffset($(this._relative)); $(this._id_datepicker).setStyle({ 'left' : Number(a_lt[0]+this._leftOffset)+'px', 'top' : Number(a_lt[1]+this._topOffset)+'px' }); this._isPositionned = true; } if (!this.visible()) { this._initCurrentDate(); this._redrawCalendar(); } /* eval the clickCallback function */ eval(this._clickCallback()); /* Effect toggle to fade-in / fade-out the datepicker */ if ( this._enableShowEffect ) { new Effect.toggle(this._id_datepicker, this._showEffect, { duration: this._showDuration }); } else { $(this._id_datepicker).show(); } }, /** * close : called when the datepicker is closed */ close : function () { if ( this._enableCloseEffect ) { switch(this._closeEffect) { case 'puff': new Effect.Puff(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'blindUp': new Effect.BlindUp(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'dropOut': new Effect.DropOut(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'switchOff': new Effect.SwitchOff(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'squish': new Effect.Squish(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'fold': new Effect.Fold(this._id_datepicker, { duration : this._closeEffectDuration }); break; case 'shrink': new Effect.Shrink(this._id_datepicker, { duration : this._closeEffectDuration }); break; default: new Effect.Fade(this._id_datepicker, { duration : this._closeEffectDuration }); break; }; } else { $(this._id_datepicker).hide(); } eval(this._afterClose()); }, /** * setDateFormat */ setDateFormat : function ( format, separator ) { if (Object.isUndefined(format)) format = this._dateFormat[0]; if (Object.isUndefined(separator)) separator = this._dateFormat[1]; this._dateFormat = [ format, separator ]; }, /** * setPosition : set the position of the datepicker. * param : t=top | l=left */ setPosition : function ( t, l ) { var h_pos = { 'top' : '0px', 'left' : '0px' }; if (!Object.isUndefined(t)) h_pos['top'] = Number(t) + this._topOffset +'px'; if (!Object.isUndefined(l)) h_pos['left']= Number(l) + this._leftOffset +'px'; $(this._id_datepicker).setStyle(h_pos); this._isPositionned = true; }, /** * _getMonthDays : given the year and month find the number of days. */ _getMonthDays : function ( year, month ) { if (((0 == (year%4)) && ((0 != (year%100)) || (0 == (year%400)))) && (month == 1)) return 29; return this._daysInMonth[month]; }, /** * _buildCalendar : draw the days array for current date */ _buildCalendar : function () { var _self = this; var tbody = $(this._id_datepicker +'-tbody'); try { while ( tbody.hasChildNodes() ) tbody.removeChild(tbody.childNodes[0]); } catch ( e ) {}; /* generate day headers */ var trDay = new Element('tr'); this._language_day.get(this._language).each( function ( item ) { var td = new Element('td'); td.innerHTML = item; td.className = 'wday'; trDay.appendChild( td ); }); tbody.appendChild( trDay ); /* generate the content of days */ /* build-up days matrix */ var a_d = [ [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 0, 0 ] ]; /* set date at beginning of month to display */ var d = new Date(this._current_year, this._current_mon, 1, 12); /* start the day list on monday */ var startIndex = ( !d.getDay() ) ? 6 : d.getDay() - 1; var nbDaysInMonth = this._getMonthDays( this._current_year, this._current_mon); var daysIndex = 1; for ( var j = startIndex; j < 7; j++ ) { a_d[0][j] = { d : daysIndex, m : this._current_mon, y : this._current_year }; daysIndex++; } var a_prevMY = this._prevMonthYear(); var nbDaysInMonthPrev = this._getMonthDays(a_prevMY[1], a_prevMY[0]); for ( var j = 0; j < startIndex; j++ ) { a_d[0][j] = { d : Number(nbDaysInMonthPrev - startIndex + j + 1), m : Number(a_prevMY[0]), y : a_prevMY[1], c : 'outbound' }; } var switchNextMonth = false; var currentMonth = this._current_mon; var currentYear = this._current_year; for ( var i = 1; i < 6; i++ ) { for ( var j = 0; j < 7; j++ ) { a_d[i][j] = { d : daysIndex, m : currentMonth, y : currentYear, c : ( switchNextMonth ) ? 'outbound' : (((daysIndex == this._todayDate.getDate()) && (this._current_mon == this._todayDate.getMonth()) && (this._current_year == this._todayDate.getFullYear())) ? 'today' : null) }; daysIndex++; /* if at the end of the month : reset counter */ if (daysIndex > nbDaysInMonth ) { daysIndex = 1; switchNextMonth = true; if (this._current_mon + 1 > 11 ) { currentMonth = 0; currentYear += 1; } else { currentMonth += 1; } } } } /* generate days for current date */ for ( var i = 0; i < 6; i++ ) { var tr = new Element('tr'); for ( var j = 0; j < 7; j++ ) { var h_ij = a_d[i][j]; var td = new Element('td'); /* id is : datepicker-day-mon-year or depending on language other way */ /* don't forget to add 1 on month for proper formmatting */ var id = $A([ this._relative, this._df.date_to_string(h_ij["y"], h_ij["m"]+1, h_ij["d"], '-') ]).join('-'); /* set id and classname for cell if exists */ td.setAttribute('id', id); if (h_ij["c"]) td.className = h_ij["c"]; /* on onclick : rebuild date value from id of current cell */ var _curDate = new Date(); _curDate.setFullYear(h_ij["y"], h_ij["m"], h_ij["d"]); if ( this._disablePastDate || this._disableFutureDate ) { if ( this._disablePastDate ) { var _res = ( _curDate >= this._todayDate ) ? true : false; this._bindCellOnClick( td, true, _res, h_ij["c"] ); } if ( this._disableFutureDate ) { var _res = ( this._todayDate.getTime() + this._oneDayInMs > _curDate.getTime() ) ? true : false; this._bindCellOnClick( td, true, _res, h_ij["c"] ); } } else { this._bindCellOnClick( td, false ); } td.innerHTML= h_ij["d"]; tr.appendChild( td ); } tbody.appendChild( tr ); } return tbody; }, /** * _bindCellOnClick : bind the cell onclick depending on status. */ _bindCellOnClick : function ( td, wcompare, compareresult, h_ij_c ) { var doBind = false; if ( wcompare ) { if ( compareresult ) { doBind = true; } else { td.className= ( h_ij_c ) ? 'nclick_outbound' : 'nclick'; } } else { doBind = true; } if ( doBind ) { var _self = this; td.onclick = function () { $(_self._relative).value = String($(this).readAttribute('id')).replace(_self._relative+'-','').replace(/-/g, _self._df.separator); /* if we have a cellCallback defined call it and pass it the cell */ if (_self._cellCallback) _self._cellCallback(this); _self.close(); }; } }, /** * nextMonth : redraw the calendar content for next month. */ _nextMonthYear : function () { var c_mon = this._current_mon; var c_year = this._current_year; if (c_mon + 1 > 11) { c_mon = 0; c_year += 1; } else { c_mon += 1; } return [ c_mon, c_year ]; }, nextMonth : function () { var a_next = this._nextMonthYear(); var _nextMon = a_next[0]; var _nextYear = a_next[1]; var _curDate = new Date(); _curDate.setFullYear(_nextYear, _nextMon, 1); var _res = ( this._todayDate.getTime() + this._oneDayInMs > _curDate.getTime() ) ? true : false; if ( this._disableFutureDate && !_res ) return; this._current_mon = _nextMon; this._current_year = _nextYear; this._redrawCalendar(); }, _nextYear : function () { var c_mon = this._current_mon; var c_year = this._current_year; c_year += 1; return [ c_mon, c_year ]; }, nextYear : function () { var a_next = this._nextYear(); this._current_mon = a_next[0]; this._current_year = a_next[1]; this._redrawCalendar(); }, /** * prevMonth : redraw the calendar content for previous month. */ _prevMonthYear : function () { var c_mon = this._current_mon; var c_year = this._current_year; if (c_mon - 1 < 0) { c_mon = 11; c_year -= 1; } else { c_mon -= 1; } return [ c_mon, c_year ]; }, prevMonth : function () { var a_prev = this._prevMonthYear(); var _prevMon = a_prev[0]; var _prevYear = a_prev[1]; var _curDate = new Date(); _curDate.setFullYear(_prevYear, _prevMon, 1); var _res = ( _curDate >= this._todayDate ) ? true : false; if ( this._disablePastDate && !_res ) return; this._current_mon = _prevMon; this._current_year = _prevYear; this._redrawCalendar(); }, _prevYear : function () { var c_mon = this._current_mon; var c_year = this._current_year; c_year -= 1; return [ c_mon, c_year ]; }, prevYear : function () { var a_prev = this._prevYear(); this._current_mon = a_prev[0]; this._current_year = a_prev[1]; this._redrawCalendar(); }, _redrawCalendar : function () { this._setLocaleHdr(); this._buildCalendar(); }, _setLocaleHdr : function () { /* prev year link */ var a_prevy = this._prevYear(); $(this._id_datepicker_prev_year).setAttribute('title', this.getMonthLocale(a_prevy[0]) +' '+ a_prevy[1]); /* prev link */ var a_prev = this._prevMonthYear(); $(this._id_datepicker_prev).setAttribute('title', this.getMonthLocale(a_prev[0]) +' '+ a_prev[1]); /* next link */ var a_next = this._nextMonthYear(); $(this._id_datepicker_next).setAttribute('title', this.getMonthLocale(a_next[0]) +' '+ a_next[1]); /* next year link */ var a_nexty = this._nextYear(); $(this._id_datepicker_next_year).setAttribute('title', this.getMonthLocale(a_nexty[0]) +' '+ a_nexty[1]); /* header */ $(this._id_datepicker_hdr).update('   '+ this.getMonthLocale(this._current_mon) +' '+ this._current_year +'   '); } }; function msieversion() { var ua = window.navigator.userAgent var msie = ua.indexOf ( "MSIE " ) if ( msie > 0 ) // If Internet Explorer, return version number return parseInt (ua.substring (msie+5, ua.indexOf (".", msie ))) else // If another browser, return 0 return 0 } gosa-core-2.7.4/html/include/gosa.js0000644000175000017500000004227711557560321015736 0ustar mikemike/* * This code is part of GOsa (http://www.gosa-project.org) * Copyright (C) 2003-2010 GONICUS GmbH * * ID: $$Id: index.php 15301 2010-01-26 09:40:08Z cajus $$ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* Install event handlers */ Event.observe(window, 'resize', resizeHandler); Event.observe(window, 'load', resizeHandler); Event.observe(window, 'load', initProgressPie); Event.observe(window, 'keypress', keyHandler); /* Ask before switching a plugin with this function */ function question(text, url) { if(document.mainform.ignore || $('pluginModified') == null || $('pluginModified').value == 0){ location.href= url; return true; } if(confirm(text)){ location.href= url; return true; } return false; } /* Toggle checkbox that matches regex */ function chk_set_all(regex,value) { for (var i = 0; i < document.mainform.elements.length; i++) { var _id=document.mainform.elements[i].id; if(_id.match(regex)) { document.getElementById(_id).checked= value; } } } function toggle_all_(regex,state_object) { state = document.getElementById(state_object).checked; chk_set_all(regex, state); } /* Scroll down the body frame */ function scrollDown2() { document.body.scrollTop = document.body.scrollHeight - document.body.clientHeight; } /* Toggle checkbox that matches regex */ function acl_set_all(regex,value) { for (var i = 0; i < document.mainform.elements.length; i++) { var _id=document.mainform.elements[i].id; if(_id.match(regex)) { document.getElementById(_id).checked= value; } } } /* Toggle checkbox that matches regex */ function acl_toggle_all(regex) { for (var i = 0; i < document.mainform.elements.length; i++) { var _id=document.mainform.elements[i].id; if(_id.match(regex)) { if (document.getElementById(_id).checked == true){ document.getElementById(_id).checked= false; } else { document.getElementById(_id).checked= true; } } } } /* Global key handler to estimate which element gets the next focus if enter is pressed */ function keyHandler(DnEvents) { var element = Event.element(DnEvents); // determines whether Netscape or Internet Explorer k = (Prototype.Browser.Gecko) ? DnEvents.keyCode : window.event.keyCode; if (k == 13 && element.type!='textarea') { // enter key pressed // Stop 'Enter' key-press from beeing processed internally Event.stop(DnEvents); // No nextfield explicitly specified var next_element = null; if(typeof(nextfield)!='undefined') { next_element = $(nextfield); } // nextfield not given or invalid if(!next_element || typeof(nextfield)=='undefined'){ next_element = getNextInputElement(element); } if(element != null && element.type == 'submit'){ // If the current element is of type submit, then submit the button else set focus element.click(); return(false); }else if(next_element!=null && next_element.type == 'submit'){ // If next element is of type submit, then submit the button else set focus next_element.click(); return(false); }else if(next_element){ next_element.focus(); return; } } else if (k==9 && element.type=='textarea') { Event.stop(DnEvents); element.value += "\t"; return false; } } function getNextInputElement(element) { var found = false; for (var e=0;e< document.forms.length; e++){ for (var i = 0; i < document.forms[e].elements.length; i++) { var el = document.forms[e].elements[i] if(found && !el.disabled && el.type!='hidden' && !el.name.match(/^submit_tree_base/) && !el.name.match(/^bs_rebase/)){ return(el); } if((el.id != "" && el.id==element.id) || (el.name != "" && el.name==element.name)){ found =true; } } } } function changeState() { for (var i = 0; i < arguments.length; i++) { var element = $(arguments[i]); if (element.hasAttribute('disabled')) { element.removeAttribute('disabled'); } else { element.setAttribute('disabled', 'disabled'); } } } function changeSelectState(triggerField, myField) { if (document.getElementById(triggerField).value != 2){ document.getElementById(myField).disabled= true; } else { document.getElementById(myField).disabled= false; } } function changeSubselectState(triggerField, myField) { if (document.getElementById(triggerField).checked == true){ document.getElementById(myField).disabled= false; } else { document.getElementById(myField).disabled= true; } } function changeTripleSelectState(firstTriggerField, secondTriggerField, myField) { if ( document.getElementById(firstTriggerField).checked == true && document.getElementById(secondTriggerField).checked == true){ document.getElementById(myField).disabled= false; } else { document.getElementById(myField).disabled= true; } } function changeTripleSelectState_2nd_neg(firstTriggerField, secondTriggerField, myField) { if ( document.getElementById(firstTriggerField).checked == true && document.getElementById(secondTriggerField).checked == false){ document.getElementById(myField).disabled= false; } else { document.getElementById(myField).disabled= true; } } function popup(target, name) { var mypopup= window.open( target, name, "width=600,height=700,location=no,toolbar=no,directories=no,menubar=no,status=no,scrollbars=yes" ); mypopup.focus(); return false; } function js_check(form) { form.javascript.value = 'true'; } function divGOsa_toggle(element) { var cell; var cellname="tr_"+(element); if (Prototype.Browser.Gecko) { document.poppedLayer = document.getElementById(element); cell= document.getElementById(cellname); if (document.poppedLayer.style.visibility == "visible") { $(element).hide(); cell.style.height="0px"; document.poppedLayer.style.height="0px"; } else { $(element).show(); document.poppedLayer.style.height=""; if(document.defaultView) { cell.style.height=document.defaultView.getComputedStyle(document.poppedLayer,"").getPropertyValue('height'); } } } else if (Prototype.Browser.IE) { document.poppedLayer = document.getElementById(element); cell= document.getElementById(cellname); if (document.poppedLayer.style.visibility == "visible") { $(element).hide(); cell.style.height="0px"; document.poppedLayer.style.height="0px"; document.poppedLayer.style.position="absolute"; } else { $(element).show(); cell.style.height=""; document.poppedLayer.style.height=""; document.poppedLayer.style.position="relative"; } } } function resizeHandler (e) { if (!e) e= window.event; // This works with FF / IE9. If Apples resolves a bug in webkit, // it works with Safari/Chrome, too. if ($("d_scrollbody") && $("t_nscrollbody")) { var contentHeight= document.viewport.getHeight() - 216; if ($$('div.plugin-actions').length != 0) { var height= 0; $$('div.plugin-actions').each(function(s) { height+= s.getHeight(); }); contentHeight-= height + 25; } if (Prototype.Browser.IE) { document.getElementById('d_scrollbody').style.height = contentHeight+23+'px'; document.getElementById('t_nscrollbody').style.height = contentHeight+'px'; } else { document.getElementById('d_scrollbody').style.minHeight = contentHeight+23+'px'; document.getElementById('t_nscrollbody').style.minHeight = contentHeight+'px'; } } return true; } function absTop(e) { return (e.offsetParent)?e.offsetTop+absTop(e.offsetParent) : e.offsetTop; } /* Set focus to first valid input field avoid IExplorer warning about hidding or disabled fields */ function focus_field() { var i = 0; var e = 0; var found = false; var element_name = ""; var element =null; while(focus_field.arguments[i] && !found){ var tmp = document.getElementsByName(focus_field.arguments[i]); for(e = 0 ; e < tmp.length ; e ++ ){ if(isVisible(tmp[e])){ found = true; element = tmp[e]; break; } } i++; } if(element && found){ element.blur(); element.focus(); } } /* This function pops up messages from message queue All messages are hidden in html output (style='display:none;'). This function makes single messages visible till there are no more dialogs queued. hidden inputs: current_msg_dialogs - Currently visible dialog closed_msg_dialogs - IDs of already closed dialogs pending_msg_dialogs - Queued dialog IDs. */ function next_msg_dialog() { var s_pending = ""; var a_pending = new Array(); var i_id = 0; var i = 0; var tmp = ""; var ele = null; var ele2 = null; var cur_id = ""; if(document.getElementById('current_msg_dialogs')){ cur_id = document.getElementById('current_msg_dialogs').value; if(cur_id != ""){ ele = document.getElementById('e_layer' + cur_id); ele.onmousemove = ""; $('e_layer' + cur_id).hide(); document.getElementById('closed_msg_dialogs').value += "," + cur_id; document.getElementById('current_msg_dialogs').value= ""; } } if(document.getElementById('pending_msg_dialogs')){ s_pending = document.getElementById('pending_msg_dialogs').value; a_pending = s_pending.split(","); if(a_pending.length){ i_id = a_pending.pop(); for (i = 0 ; i < a_pending.length; ++i){ tmp = tmp + a_pending[i] + ','; } tmp = tmp.replace(/,$/g,""); if(i_id != ""){ ele = document.getElementById('e_layer' + i_id); ele3 = document.getElementById('e_layerTitle' + i_id); ele.style.display= 'block' ; document.getElementById('pending_msg_dialogs').value= tmp; document.getElementById('current_msg_dialogs').value= i_id; ele2 = document.getElementById('e_layer2') ; ele3.onmousedown = start_move_div_by_cursor; ele2.onmouseup = stop_move_div_by_cursor; ele2.onmousemove = move_div_by_cursor; }else{ ele2 = document.getElementById('e_layer2') ; ele2.style.display ="none"; } } } } /* Drag & drop for message dialogs */ var enable_move_div_by_cursor = false; // Indicates wheter the div movement is enabled or not var mouse_x_on_div = 0; // var mouse_y_on_div = 0; var div_offset_x = 0; var div_offset_y = 0; /* Activates msg_dialog drag & drop * This function is called when clicking on a displayed msg_dialog */ function start_move_div_by_cursor(e) { var x = 0; var y = 0; var cur_id = 0; var dialog = null; var event = null; /* Get current msg_dialog position */ cur_id = document.getElementById('current_msg_dialogs').value; if(cur_id != ""){ dialog = document.getElementById('e_layer' + cur_id); x = dialog.style.left; y = dialog.style.top; x = x.replace(/[^0-9]/g,""); y = y.replace(/[^0-9]/g,""); if(!y) y = 1; if(!x) x = 1; } /* Get mouse position within msg_dialog */ if(window.event){ event = window.event; if(event.offsetX){ div_offset_x = event.clientX -x; div_offset_y = event.clientY -y; enable_move_div_by_cursor = true; } }else if(e){ event = e; if(event.layerX){ div_offset_x = event.screenX -x; div_offset_y = event.screenY -y; enable_move_div_by_cursor = true; } } } /* Deactivate msg_dialog movement */ function stop_move_div_by_cursor() { mouse_x_on_div = 0; mouse_y_on_div = 0; div_offset_x = 0; div_offset_y = 0; enable_move_div_by_cursor = false; } /* Move msg_dialog with cursor */ function move_div_by_cursor(e) { var event = false; var mouse_pos_x = 0; var mouse_pos_y = 0; var cur_div_x = 0; var cur_div_y = 0; var cur_id = 0; var dialog = null; if(undefined !== enable_move_div_by_cursor && enable_move_div_by_cursor == true){ if(document.getElementById('current_msg_dialogs')){ /* Get mouse position on screen */ if(window.event){ event = window.event; mouse_pos_x =event.clientX; mouse_pos_y =event.clientY; }else if (e){ event = e; mouse_pos_x =event.screenX; mouse_pos_y =event.screenY; }else{ return; } /* Get id of current msg_dialog */ cur_id = document.getElementById('current_msg_dialogs').value; if(cur_id != ""){ dialog = document.getElementById('e_layer' + cur_id); /* Calculate new position */ cur_div_x = mouse_pos_x - div_offset_x; cur_div_y = mouse_pos_y - div_offset_y; /* Ensure that dialog can't be moved out of screen */ if(cur_div_x < 0 ) cur_div_x = 0 if(cur_div_y < 0 ) cur_div_y = 0 /* Assign new values */ dialog.style.left = (cur_div_x ) + "px"; dialog.style.top = (cur_div_y ) + "px"; } } } } function isVisible(obj) { if (obj == document) return true if (!obj) return false if (!obj.parentNode) return false if (obj.style) { if (obj.style.display == 'none') return false if (obj.style.visibility == 'hidden') return false } //Try the computed style in a standard way if (window.getComputedStyle) { var style = window.getComputedStyle(obj, "") if (style.display == 'none') return false if (style.visibility == 'hidden') return false } //Or get the computed style using IE's silly proprietary way var style = obj.currentStyle if (style) { if (style['display'] == 'none') return false if (style['visibility'] == 'hidden') return false } return isVisible(obj.parentNode) } /* Check if capslock is enabled */ function capslock(e) { e = (e) ? e : window.event; var charCode = false; if (e.which) { charCode = e.which; } else if (e.keyCode) { charCode = e.keyCode; } var shifton = false; if (e.shiftKey) { shifton = e.shiftKey; } else if (e.modifiers) { shifton = !!(e.modifiers & 4); } if (charCode >= 97 && charCode <= 122 && shifton) { return true; } if (charCode >= 65 && charCode <= 90 && !shifton) { return true; } return false; } function setProgressPie(context, percent) { context.clearRect(0, 0, 22, 22); var r = "FF"; var g = "FF"; var b = "FF"; // Fade yellow if (percent > 50) { d = 255 - parseInt((percent-50) * 255 / 50) b = d.toString(16); } // Fade red if (percent > 75) { d = 255 - parseInt((percent-75) * 255 / 25) g = d.toString(16); } context.strokeStyle = "#" + r + g + b context.fillStyle = context.strokeStyle; context.beginPath(); context.moveTo(11,11) context.arc(11,11,8,-Math.PI/2,-Math.PI/2 + Math.PI*percent/50,true); context.closePath(); context.fill(); context.moveTo(11,11) context.beginPath(); context.arc(11,11,8,0,Math.PI*2,false); context.closePath(); context.stroke(); } function initProgressPie(){ var canvas = $('sTimeout'); // Check the element is in the DOM and the browser supports canvas if(canvas && canvas.getContext) { var percent = 0.01; var context = canvas.getContext('2d'); setProgressPie(context, percent); // Extract timeout and title string out out canvas.title var data = canvas.title; var timeout = data.replace(/\|.*$/,''); var title = data.replace(/^.*\|/,''); var interval = 1; var time = 0; setInterval(function() { // Calculate percentage percent+= (interval / timeout) * 100; // Increase current time by interval time += interval; // Generate title var minutes = parseInt((timeout-time) / 60 ); var seconds = '' + parseInt((timeout-time) % 60); if(seconds.length == 1) seconds = '0' + seconds ; minutes = minutes + ':' + seconds; // Set new canval title canvas.title= title.replace(/%d/ ,minutes); setProgressPie(context, percent); if (percent>99) percent= 99; }, (interval * 1000)); } } /* Scroll down the body frame */ function scrollDown2() { document.body.scrollTop = document.body.scrollHeight - document.body.clientHeight; } // Global storage for baseSelector timer var rtimer; // vim:ts=2:syntax gosa-core-2.7.4/html/include/pulldown.js0000644000175000017500000001554211320625460016636 0ustar mikemike/** * dropDownMenu v0.5 sw edition * An easy to implement dropDown Menu for Websites, that may be based on styled list tags * * Works for IE 5.5+ PC, Mozilla 1+ all Plattforms, Opera 7+ * * Copyright (c) 2004 Knallgrau New Medias Solutions GmbH, Vienna - Austria * * Original written by Matthias Platzer at http://knallgrau.at * * Modified by Sven Wappler http://www.wappler.eu * * Use it as you need it * It is distributed under a BSD style license */ /** * Container Class (Prototype) for the dropDownMenu * * @param idOrElement String|HTMLElement root Node of the menu (ul) * @param name String name of the variable that stores the result * of this constructor function * @param customConfigFunction Function optional config function to override the default settings * for an example see Menu.prototype.config */ var Menu = Class.create(); Menu.prototype = { initialize: function(idOrElement, name, customConfigFunction) { this.name = name; this.type = "menu"; this.closeDelayTimer = null; this.closingMenuItem = null; this.config(); if (typeof customConfigFunction == "function") { this.customConfig = customConfigFunction; this.customConfig(); } this.rootContainer = new MenuContainer(idOrElement, this); }, config: function() { this.collapseBorders = true; this.quickCollapse = true; this.closeDelayTime = 500; } } var MenuContainer = Class.create(); MenuContainer.prototype = { initialize: function(idOrElement, parent) { this.type = "menuContainer"; this.menuItems = []; this.init(idOrElement, parent); }, init: function(idOrElement, parent) { this.element = $(idOrElement); if (!this.element) return; this.parent = parent; this.parentMenu = (this.type == "menuContainer") ? ((parent) ? parent.parent : null) : parent; this.root = parent instanceof Menu ? parent : parent.root; this.id = this.element.id; if (this.type == "menuContainer") { if (this.element.hasClassName("level1")) this.menuType = "horizontal"; else if (this.element.hasClassName("level2")) this.menuType = "dropdown"; else this.menuType = "flyout"; if (this.menuType == "flyout" || this.menuType == "dropdown") { this.isOpen = false; Element.setStyle(this.element,{ position: "absolute", top: "0px", left: "0px", visibility: "hidden"}); } else { this.isOpen = true; } } else { this.isOpen = this.parentMenu.isOpen; } var childNodes = this.element.childNodes; if (childNodes == null) return; for (var i = 0; i < childNodes.length; i++) { var node = childNodes[i]; if (node.nodeType == 1) { if (this.type == "menuContainer") { if (node.tagName.toLowerCase() == "li") { this.menuItems.push(new MenuItem(node, this)); } } else { if (node.tagName.toLowerCase() == "ul") { this.subMenu = new MenuContainer(node, this); } } } } }, getBorders: function(element) { var ltrb = ["Left","Top","Right","Bottom"]; var result = {}; for (var i = 0; i < ltrb.length; ++i) { if (this.element.currentStyle) var value = parseInt(this.element.currentStyle["border"+ltrb[i]+"Width"]); else if (window.getComputedStyle) var value = parseInt(window.getComputedStyle(this.element, "").getPropertyValue("border-"+ltrb[i].toLowerCase()+"-width")); else var value = parseInt(this.element.style["border"+ltrb[i]]); result[ltrb[i].toLowerCase()] = isNaN(value) ? 0 : value; } return result; }, open: function() { if (this.root.closeDelayTimer) window.clearTimeout(this.root.closeDelayTimer); this.parentMenu.closeAll(this); this.isOpen = true; if (this.menuType == "dropdown") { Element.setStyle(this.element,{ left: (Position.positionedOffset(this.parent.element)[0]) + "px", top: (Position.positionedOffset(this.parent.element)[1] + Element.getHeight(this.parent.element)) + "px" }); } else if (this.menuType == "flyout") { var parentMenuBorders = this.parentMenu ? this.parentMenu.getBorders() : new Object(); var thisBorders = this.getBorders(); if ( (Position.positionedOffset(this.parentMenu.element)[0] + this.parentMenu.element.offsetWidth + this.element.offsetWidth + 20) > (window.innerWidth ? window.innerWidth : document.body.offsetWidth) ) { Element.setStyle(this.element,{ left: (- this.element.offsetWidth - (this.root.collapseBorders ? 0 : parentMenuBorders["left"])) + "px" }); } else { Element.setStyle(this.element,{ left: (this.parentMenu.element.offsetWidth - parentMenuBorders["left"] - (this.root.collapseBorders ? Math.min(parentMenuBorders["right"], thisBorders["left"]) : 0)) + "px" }); } Element.setStyle(this.element,{ top: (this.parent.element.offsetTop - parentMenuBorders["top"] - this.menuItems[0].element.offsetTop) + "px" }); } Element.setStyle(this.element,{visibility: "visible"}); }, close: function() { Element.setStyle(this.element,{visibility: "hidden"}); this.isOpen = false; this.closeAll(); }, closeAll: function(trigger) { for (var i = 0; i < this.menuItems.length; ++i) { this.menuItems[i].closeItem(trigger); } } } var MenuItem = Class.create(); Object.extend(Object.extend(MenuItem.prototype, MenuContainer.prototype), { initialize: function(idOrElement, parent) { var menuItem = this; this.type = "menuItem"; this.subMenu; this.init(idOrElement, parent); if (this.subMenu) { this.element.onmouseover = function() { menuItem.subMenu.open(); } } else { if (this.root.quickCollapse) { this.element.onmouseover = function() { menuItem.parentMenu.closeAll(); } } } var linkTag = this.element.getElementsByTagName("A")[0]; if (linkTag) { linkTag.onfocus = this.element.onmouseover; this.link = linkTag; this.text = linkTag.text; } if (this.subMenu) { this.element.onmouseout = function() { if (menuItem.root.openDelayTimer) window.clearTimeout(menuItem.root.openDelayTimer); if (menuItem.root.closeDelayTimer) window.clearTimeout(menuItem.root.closeDelayTimer); eval(menuItem.root.name + ".closingMenuItem = menuItem"); menuItem.root.closeDelayTimer = window.setTimeout(menuItem.root.name + ".closingMenuItem.subMenu.close()", menuItem.root.closeDelayTime); } } }, openItem: function() { this.isOpen = true; if (this.subMenu) { this.subMenu.open(); } }, closeItem: function(trigger) { this.isOpen = false; if (this.subMenu) { if (this.subMenu != trigger) this.subMenu.close(); } } }); var menu; function configMenu() { this.closeDelayTime = 300; } function initMenu() { menu = new Menu('root', 'menu', configMenu); } Event.observe(window, 'load', initMenu, false); gosa-core-2.7.4/html/include/dragdrop.js0000644000175000017500000007452011325266624016605 0ustar mikemike// script.aculo.us dragdrop.js v1.8.3, Thu Oct 08 11:23:33 +0200 2009 // Copyright (c) 2005-2009 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) // // script.aculo.us is freely distributable under the terms of an MIT-style license. // For details, see the script.aculo.us web site: http://script.aculo.us/ if(Object.isUndefined(Effect)) throw("dragdrop.js requires including script.aculo.us' effects.js library"); var Droppables = { drops: [], remove: function(element) { this.drops = this.drops.reject(function(d) { return d.element==$(element) }); }, add: function(element) { element = $(element); var options = Object.extend({ greedy: true, hoverclass: null, tree: false }, arguments[1] || { }); // cache containers if(options.containment) { options._containers = []; var containment = options.containment; if(Object.isArray(containment)) { containment.each( function(c) { options._containers.push($(c)) }); } else { options._containers.push($(containment)); } } if(options.accept) options.accept = [options.accept].flatten(); Element.makePositioned(element); // fix IE options.element = element; this.drops.push(options); }, findDeepestChild: function(drops) { deepest = drops[0]; for (i = 1; i < drops.length; ++i) if (Element.isParent(drops[i].element, deepest.element)) deepest = drops[i]; return deepest; }, isContained: function(element, drop) { var containmentNode; if(drop.tree) { containmentNode = element.treeNode; } else { containmentNode = element.parentNode; } return drop._containers.detect(function(c) { return containmentNode == c }); }, isAffected: function(point, element, drop) { return ( (drop.element!=element) && ((!drop._containers) || this.isContained(element, drop)) && ((!drop.accept) || (Element.classNames(element).detect( function(v) { return drop.accept.include(v) } ) )) && Position.within(drop.element, point[0], point[1]) ); }, deactivate: function(drop) { if(drop.hoverclass) Element.removeClassName(drop.element, drop.hoverclass); this.last_active = null; }, activate: function(drop) { if(drop.hoverclass) Element.addClassName(drop.element, drop.hoverclass); this.last_active = drop; }, show: function(point, element) { if(!this.drops.length) return; var drop, affected = []; this.drops.each( function(drop) { if(Droppables.isAffected(point, element, drop)) affected.push(drop); }); if(affected.length>0) drop = Droppables.findDeepestChild(affected); if(this.last_active && this.last_active != drop) this.deactivate(this.last_active); if (drop) { Position.within(drop.element, point[0], point[1]); if(drop.onHover) drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element)); if (drop != this.last_active) Droppables.activate(drop); } }, fire: function(event, element) { if(!this.last_active) return; Position.prepare(); if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active)) if (this.last_active.onDrop) { this.last_active.onDrop(element, this.last_active.element, event); return true; } }, reset: function() { if(this.last_active) this.deactivate(this.last_active); } }; var Draggables = { drags: [], observers: [], register: function(draggable) { if(this.drags.length == 0) { this.eventMouseUp = this.endDrag.bindAsEventListener(this); this.eventMouseMove = this.updateDrag.bindAsEventListener(this); this.eventKeypress = this.keyPress.bindAsEventListener(this); Event.observe(document, "mouseup", this.eventMouseUp); Event.observe(document, "mousemove", this.eventMouseMove); Event.observe(document, "keypress", this.eventKeypress); } this.drags.push(draggable); }, unregister: function(draggable) { this.drags = this.drags.reject(function(d) { return d==draggable }); if(this.drags.length == 0) { Event.stopObserving(document, "mouseup", this.eventMouseUp); Event.stopObserving(document, "mousemove", this.eventMouseMove); Event.stopObserving(document, "keypress", this.eventKeypress); } }, activate: function(draggable) { if(draggable.options.delay) { this._timeout = setTimeout(function() { Draggables._timeout = null; window.focus(); Draggables.activeDraggable = draggable; }.bind(this), draggable.options.delay); } else { window.focus(); // allows keypress events if window isn't currently focused, fails for Safari this.activeDraggable = draggable; } }, deactivate: function() { this.activeDraggable = null; }, updateDrag: function(event) { if(!this.activeDraggable) return; var pointer = [Event.pointerX(event), Event.pointerY(event)]; // Mozilla-based browsers fire successive mousemove events with // the same coordinates, prevent needless redrawing (moz bug?) if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return; this._lastPointer = pointer; this.activeDraggable.updateDrag(event, pointer); }, endDrag: function(event) { if(this._timeout) { clearTimeout(this._timeout); this._timeout = null; } if(!this.activeDraggable) return; this._lastPointer = null; this.activeDraggable.endDrag(event); this.activeDraggable = null; }, keyPress: function(event) { if(this.activeDraggable) this.activeDraggable.keyPress(event); }, addObserver: function(observer) { this.observers.push(observer); this._cacheObserverCallbacks(); }, removeObserver: function(element) { // element instead of observer fixes mem leaks this.observers = this.observers.reject( function(o) { return o.element==element }); this._cacheObserverCallbacks(); }, notify: function(eventName, draggable, event) { // 'onStart', 'onEnd', 'onDrag' if(this[eventName+'Count'] > 0) this.observers.each( function(o) { if(o[eventName]) o[eventName](eventName, draggable, event); }); if(draggable.options[eventName]) draggable.options[eventName](draggable, event); }, _cacheObserverCallbacks: function() { ['onStart','onEnd','onDrag'].each( function(eventName) { Draggables[eventName+'Count'] = Draggables.observers.select( function(o) { return o[eventName]; } ).length; }); } }; /*--------------------------------------------------------------------------*/ var Draggable = Class.create({ initialize: function(element) { var defaults = { handle: false, reverteffect: function(element, top_offset, left_offset) { var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02; new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur, queue: {scope:'_draggable', position:'end'} }); }, endeffect: function(element) { var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0; new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity, queue: {scope:'_draggable', position:'end'}, afterFinish: function(){ Draggable._dragging[element] = false } }); }, zindex: 1000, revert: false, quiet: false, scroll: false, scrollSensitivity: 20, scrollSpeed: 15, snap: false, // false, or xy or [x,y] or function(x,y){ return [x,y] } delay: 0 }; if(!arguments[1] || Object.isUndefined(arguments[1].endeffect)) Object.extend(defaults, { starteffect: function(element) { element._opacity = Element.getOpacity(element); Draggable._dragging[element] = true; new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7}); } }); var options = Object.extend(defaults, arguments[1] || { }); this.element = $(element); if(options.handle && Object.isString(options.handle)) this.handle = this.element.down('.'+options.handle, 0); if(!this.handle) this.handle = $(options.handle); if(!this.handle) this.handle = this.element; if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) { options.scroll = $(options.scroll); this._isScrollChild = Element.childOf(this.element, options.scroll); } Element.makePositioned(this.element); // fix IE this.options = options; this.dragging = false; this.eventMouseDown = this.initDrag.bindAsEventListener(this); Event.observe(this.handle, "mousedown", this.eventMouseDown); Draggables.register(this); }, destroy: function() { Event.stopObserving(this.handle, "mousedown", this.eventMouseDown); Draggables.unregister(this); }, currentDelta: function() { return([ parseInt(Element.getStyle(this.element,'left') || '0'), parseInt(Element.getStyle(this.element,'top') || '0')]); }, initDrag: function(event) { if(!Object.isUndefined(Draggable._dragging[this.element]) && Draggable._dragging[this.element]) return; if(Event.isLeftClick(event)) { // abort on form elements, fixes a Firefox issue var src = Event.element(event); if((tag_name = src.tagName.toUpperCase()) && ( tag_name=='INPUT' || tag_name=='SELECT' || tag_name=='OPTION' || tag_name=='BUTTON' || tag_name=='TEXTAREA')) return; var pointer = [Event.pointerX(event), Event.pointerY(event)]; var pos = this.element.cumulativeOffset(); this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) }); Draggables.activate(this); Event.stop(event); } }, startDrag: function(event) { this.dragging = true; if(!this.delta) this.delta = this.currentDelta(); if(this.options.zindex) { this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0); this.element.style.zIndex = this.options.zindex; } if(this.options.ghosting) { this._clone = this.element.cloneNode(true); this._originallyAbsolute = (this.element.getStyle('position') == 'absolute'); if (!this._originallyAbsolute) Position.absolutize(this.element); this.element.parentNode.insertBefore(this._clone, this.element); } if(this.options.scroll) { if (this.options.scroll == window) { var where = this._getWindowScroll(this.options.scroll); this.originalScrollLeft = where.left; this.originalScrollTop = where.top; } else { this.originalScrollLeft = this.options.scroll.scrollLeft; this.originalScrollTop = this.options.scroll.scrollTop; } } Draggables.notify('onStart', this, event); if(this.options.starteffect) this.options.starteffect(this.element); }, updateDrag: function(event, pointer) { if(!this.dragging) this.startDrag(event); if(!this.options.quiet){ Position.prepare(); Droppables.show(pointer, this.element); } Draggables.notify('onDrag', this, event); this.draw(pointer); if(this.options.change) this.options.change(this); if(this.options.scroll) { this.stopScrolling(); var p; if (this.options.scroll == window) { with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; } } else { p = Position.page(this.options.scroll); p[0] += this.options.scroll.scrollLeft + Position.deltaX; p[1] += this.options.scroll.scrollTop + Position.deltaY; p.push(p[0]+this.options.scroll.offsetWidth); p.push(p[1]+this.options.scroll.offsetHeight); } var speed = [0,0]; if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity); if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity); if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity); if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity); this.startScrolling(speed); } // fix AppleWebKit rendering if(Prototype.Browser.WebKit) window.scrollBy(0,0); Event.stop(event); }, finishDrag: function(event, success) { this.dragging = false; if(this.options.quiet){ Position.prepare(); var pointer = [Event.pointerX(event), Event.pointerY(event)]; Droppables.show(pointer, this.element); } if(this.options.ghosting) { if (!this._originallyAbsolute) Position.relativize(this.element); delete this._originallyAbsolute; Element.remove(this._clone); this._clone = null; } var dropped = false; if(success) { dropped = Droppables.fire(event, this.element); if (!dropped) dropped = false; } if(dropped && this.options.onDropped) this.options.onDropped(this.element); Draggables.notify('onEnd', this, event); var revert = this.options.revert; if(revert && Object.isFunction(revert)) revert = revert(this.element); var d = this.currentDelta(); if(revert && this.options.reverteffect) { if (dropped == 0 || revert != 'failure') this.options.reverteffect(this.element, d[1]-this.delta[1], d[0]-this.delta[0]); } else { this.delta = d; } if(this.options.zindex) this.element.style.zIndex = this.originalZ; if(this.options.endeffect) this.options.endeffect(this.element); Draggables.deactivate(this); Droppables.reset(); }, keyPress: function(event) { if(event.keyCode!=Event.KEY_ESC) return; this.finishDrag(event, false); Event.stop(event); }, endDrag: function(event) { if(!this.dragging) return; this.stopScrolling(); this.finishDrag(event, true); Event.stop(event); }, draw: function(point) { var pos = this.element.cumulativeOffset(); if(this.options.ghosting) { var r = Position.realOffset(this.element); pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY; } var d = this.currentDelta(); pos[0] -= d[0]; pos[1] -= d[1]; if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) { pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft; pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop; } var p = [0,1].map(function(i){ return (point[i]-pos[i]-this.offset[i]) }.bind(this)); if(this.options.snap) { if(Object.isFunction(this.options.snap)) { p = this.options.snap(p[0],p[1],this); } else { if(Object.isArray(this.options.snap)) { p = p.map( function(v, i) { return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this)); } else { p = p.map( function(v) { return (v/this.options.snap).round()*this.options.snap }.bind(this)); } }} var style = this.element.style; if((!this.options.constraint) || (this.options.constraint=='horizontal')) style.left = p[0] + "px"; if((!this.options.constraint) || (this.options.constraint=='vertical')) style.top = p[1] + "px"; if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering }, stopScrolling: function() { if(this.scrollInterval) { clearInterval(this.scrollInterval); this.scrollInterval = null; Draggables._lastScrollPointer = null; } }, startScrolling: function(speed) { if(!(speed[0] || speed[1])) return; this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed]; this.lastScrolled = new Date(); this.scrollInterval = setInterval(this.scroll.bind(this), 10); }, scroll: function() { var current = new Date(); var delta = current - this.lastScrolled; this.lastScrolled = current; if(this.options.scroll == window) { with (this._getWindowScroll(this.options.scroll)) { if (this.scrollSpeed[0] || this.scrollSpeed[1]) { var d = delta / 1000; this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] ); } } } else { this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; } Position.prepare(); Droppables.show(Draggables._lastPointer, this.element); Draggables.notify('onDrag', this); if (this._isScrollChild) { Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer); Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000; Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000; if (Draggables._lastScrollPointer[0] < 0) Draggables._lastScrollPointer[0] = 0; if (Draggables._lastScrollPointer[1] < 0) Draggables._lastScrollPointer[1] = 0; this.draw(Draggables._lastScrollPointer); } if(this.options.change) this.options.change(this); }, _getWindowScroll: function(w) { var T, L, W, H; with (w.document) { if (w.document.documentElement && documentElement.scrollTop) { T = documentElement.scrollTop; L = documentElement.scrollLeft; } else if (w.document.body) { T = body.scrollTop; L = body.scrollLeft; } if (w.innerWidth) { W = w.innerWidth; H = w.innerHeight; } else if (w.document.documentElement && documentElement.clientWidth) { W = documentElement.clientWidth; H = documentElement.clientHeight; } else { W = body.offsetWidth; H = body.offsetHeight; } } return { top: T, left: L, width: W, height: H }; } }); Draggable._dragging = { }; /*--------------------------------------------------------------------------*/ var SortableObserver = Class.create({ initialize: function(element, observer) { this.element = $(element); this.observer = observer; this.lastValue = Sortable.serialize(this.element); }, onStart: function() { this.lastValue = Sortable.serialize(this.element); }, onEnd: function() { Sortable.unmark(); if(this.lastValue != Sortable.serialize(this.element)) this.observer(this.element) } }); var Sortable = { SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/, sortables: { }, _findRootElement: function(element) { while (element.tagName.toUpperCase() != "BODY") { if(element.id && Sortable.sortables[element.id]) return element; element = element.parentNode; } }, options: function(element) { element = Sortable._findRootElement($(element)); if(!element) return; return Sortable.sortables[element.id]; }, destroy: function(element){ element = $(element); var s = Sortable.sortables[element.id]; if(s) { Draggables.removeObserver(s.element); s.droppables.each(function(d){ Droppables.remove(d) }); s.draggables.invoke('destroy'); delete Sortable.sortables[s.element.id]; } }, create: function(element) { element = $(element); var options = Object.extend({ element: element, tag: 'li', // assumes li children, override with tag: 'tagname' dropOnEmpty: false, tree: false, treeTag: 'ul', overlap: 'vertical', // one of 'vertical', 'horizontal' constraint: 'vertical', // one of 'vertical', 'horizontal', false containment: element, // also takes array of elements (or id's); or false handle: false, // or a CSS class only: false, delay: 0, hoverclass: null, ghosting: false, quiet: false, scroll: false, scrollSensitivity: 20, scrollSpeed: 15, format: this.SERIALIZE_RULE, // these take arrays of elements or ids and can be // used for better initialization performance elements: false, handles: false, onChange: Prototype.emptyFunction, onUpdate: Prototype.emptyFunction }, arguments[1] || { }); // clear any old sortable with same element this.destroy(element); // build options for the draggables var options_for_draggable = { revert: true, quiet: options.quiet, scroll: options.scroll, scrollSpeed: options.scrollSpeed, scrollSensitivity: options.scrollSensitivity, delay: options.delay, ghosting: options.ghosting, constraint: options.constraint, handle: options.handle }; if(options.starteffect) options_for_draggable.starteffect = options.starteffect; if(options.reverteffect) options_for_draggable.reverteffect = options.reverteffect; else if(options.ghosting) options_for_draggable.reverteffect = function(element) { element.style.top = 0; element.style.left = 0; }; if(options.endeffect) options_for_draggable.endeffect = options.endeffect; if(options.zindex) options_for_draggable.zindex = options.zindex; // build options for the droppables var options_for_droppable = { overlap: options.overlap, containment: options.containment, tree: options.tree, hoverclass: options.hoverclass, onHover: Sortable.onHover }; var options_for_tree = { onHover: Sortable.onEmptyHover, overlap: options.overlap, containment: options.containment, hoverclass: options.hoverclass }; // fix for gecko engine Element.cleanWhitespace(element); options.draggables = []; options.droppables = []; // drop on empty handling if(options.dropOnEmpty || options.tree) { Droppables.add(element, options_for_tree); options.droppables.push(element); } (options.elements || this.findElements(element, options) || []).each( function(e,i) { var handle = options.handles ? $(options.handles[i]) : (options.handle ? $(e).select('.' + options.handle)[0] : e); options.draggables.push( new Draggable(e, Object.extend(options_for_draggable, { handle: handle }))); Droppables.add(e, options_for_droppable); if(options.tree) e.treeNode = element; options.droppables.push(e); }); if(options.tree) { (Sortable.findTreeElements(element, options) || []).each( function(e) { Droppables.add(e, options_for_tree); e.treeNode = element; options.droppables.push(e); }); } // keep reference this.sortables[element.identify()] = options; // for onupdate Draggables.addObserver(new SortableObserver(element, options.onUpdate)); }, // return all suitable-for-sortable elements in a guaranteed order findElements: function(element, options) { return Element.findChildren( element, options.only, options.tree ? true : false, options.tag); }, findTreeElements: function(element, options) { return Element.findChildren( element, options.only, options.tree ? true : false, options.treeTag); }, onHover: function(element, dropon, overlap) { if(Element.isParent(dropon, element)) return; if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) { return; } else if(overlap>0.5) { Sortable.mark(dropon, 'before'); if(dropon.previousSibling != element) { var oldParentNode = element.parentNode; element.style.visibility = "hidden"; // fix gecko rendering dropon.parentNode.insertBefore(element, dropon); if(dropon.parentNode!=oldParentNode) Sortable.options(oldParentNode).onChange(element); Sortable.options(dropon.parentNode).onChange(element); } } else { Sortable.mark(dropon, 'after'); var nextElement = dropon.nextSibling || null; if(nextElement != element) { var oldParentNode = element.parentNode; element.style.visibility = "hidden"; // fix gecko rendering dropon.parentNode.insertBefore(element, nextElement); if(dropon.parentNode!=oldParentNode) Sortable.options(oldParentNode).onChange(element); Sortable.options(dropon.parentNode).onChange(element); } } }, onEmptyHover: function(element, dropon, overlap) { var oldParentNode = element.parentNode; var droponOptions = Sortable.options(dropon); if(!Element.isParent(dropon, element)) { var index; var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only}); var child = null; if(children) { var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap); for (index = 0; index < children.length; index += 1) { if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) { offset -= Element.offsetSize (children[index], droponOptions.overlap); } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) { child = index + 1 < children.length ? children[index + 1] : null; break; } else { child = children[index]; break; } } } dropon.insertBefore(element, child); Sortable.options(oldParentNode).onChange(element); droponOptions.onChange(element); } }, unmark: function() { if(Sortable._marker) Sortable._marker.hide(); }, mark: function(dropon, position) { // mark on ghosting only var sortable = Sortable.options(dropon.parentNode); if(sortable && !sortable.ghosting) return; if(!Sortable._marker) { Sortable._marker = ($('dropmarker') || Element.extend(document.createElement('DIV'))). hide().addClassName('dropmarker').setStyle({position:'absolute'}); document.getElementsByTagName("body").item(0).appendChild(Sortable._marker); } var offsets = dropon.cumulativeOffset(); Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'}); if(position=='after') if(sortable.overlap == 'horizontal') Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'}); else Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'}); Sortable._marker.show(); }, _tree: function(element, options, parent) { var children = Sortable.findElements(element, options) || []; for (var i = 0; i < children.length; ++i) { var match = children[i].id.match(options.format); if (!match) continue; var child = { id: encodeURIComponent(match ? match[1] : null), element: element, parent: parent, children: [], position: parent.children.length, container: $(children[i]).down(options.treeTag) }; /* Get the element containing the children and recurse over it */ if (child.container) this._tree(child.container, options, child); parent.children.push (child); } return parent; }, tree: function(element) { element = $(element); var sortableOptions = this.options(element); var options = Object.extend({ tag: sortableOptions.tag, treeTag: sortableOptions.treeTag, only: sortableOptions.only, name: element.id, format: sortableOptions.format }, arguments[1] || { }); var root = { id: null, parent: null, children: [], container: element, position: 0 }; return Sortable._tree(element, options, root); }, /* Construct a [i] index for a particular node */ _constructIndex: function(node) { var index = ''; do { if (node.id) index = '[' + node.position + ']' + index; } while ((node = node.parent) != null); return index; }, sequence: function(element) { element = $(element); var options = Object.extend(this.options(element), arguments[1] || { }); return $(this.findElements(element, options) || []).map( function(item) { return item.id.match(options.format) ? item.id.match(options.format)[1] : ''; }); }, setSequence: function(element, new_sequence) { element = $(element); var options = Object.extend(this.options(element), arguments[2] || { }); var nodeMap = { }; this.findElements(element, options).each( function(n) { if (n.id.match(options.format)) nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode]; n.parentNode.removeChild(n); }); new_sequence.each(function(ident) { var n = nodeMap[ident]; if (n) { n[1].appendChild(n[0]); delete nodeMap[ident]; } }); }, serialize: function(element) { element = $(element); var options = Object.extend(Sortable.options(element), arguments[1] || { }); var name = encodeURIComponent( (arguments[1] && arguments[1].name) ? arguments[1].name : element.id); if (options.tree) { return Sortable.tree(element, arguments[1]).children.map( function (item) { return [name + Sortable._constructIndex(item) + "[id]=" + encodeURIComponent(item.id)].concat(item.children.map(arguments.callee)); }).flatten().join('&'); } else { return Sortable.sequence(element, arguments[1]).map( function(item) { return name + "[]=" + encodeURIComponent(item); }).join('&'); } } }; // Returns true if child is contained within element Element.isParent = function(child, element) { if (!child.parentNode || child == element) return false; if (child.parentNode == element) return true; return Element.isParent(child.parentNode, element); }; Element.findChildren = function(element, only, recursive, tagName) { if(!element.hasChildNodes()) return null; tagName = tagName.toUpperCase(); if(only) only = [only].flatten(); var elements = []; $A(element.childNodes).each( function(e) { if(e.tagName && e.tagName.toUpperCase()==tagName && (!only || (Element.classNames(e).detect(function(v) { return only.include(v) })))) elements.push(e); if(recursive) { var grandchildren = Element.findChildren(e, only, recursive, tagName); if(grandchildren) elements.push(grandchildren); } }); return (elements.length>0 ? elements.flatten() : []); }; Element.offsetSize = function (element, type) { return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')]; };gosa-core-2.7.4/html/getFAIstatus.php0000644000175000017500000000337011663707407016075 0ustar mikemikeget_entries_by_mac(explode(",", $_GET['mac'])); foreach($res as $entry){ echo $entry['MACADDRESS']."|".$entry['PROGRESS']."\n"; } ?> gosa-core-2.7.4/html/autocomplete.php0000644000175000017500000000631411475146440016227 0ustar mikemike $info) { if (!isset($pathMapping[$dn])) { continue; } if (mb_stristr($info['name'], $search) !== false) { $res.= "
  • ".mark($search, $pathMapping[$dn]).($info['description']==''?"" :" [".mark($search, $info['description'])."]")."
  • "; continue; } if (mb_stristr($info['description'], $search) !== false) { $res.= "
  • ".mark($search, $pathMapping[$dn]).($info['description']==''?"" :" [".mark($search, $info['description'])."]")."
  • "; continue; } if (mb_stristr($pathMapping[$dn], $search) !== false) { $res.= "
  • ".mark($search, $pathMapping[$dn]).($info['description']==''?"" :" [".mark($search, $info['description'])."]")."
  • "; continue; } } /* Return results */ if (!empty($res)) { echo "
      $res
    "; } } } else { $ui = session::global_get('ui'); $config = session::global_get('config'); /* Is there a filter object arround? */ if (session::is_set("autocomplete")){ $filter= session::get("autocomplete"); $filter->processAutocomplete(); } } ?> gosa-core-2.7.4/update-locale.10000644000175000017500000001155011254446346014653 0ustar mikemike.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "UPDATE-LOCALE 1" .TH UPDATE-LOCALE 1 "2009-09-17" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" update\-locale \- update localization files .SH "SYNOPSIS" .IX Header "SYNOPSIS" update-locale [\-h] [\-g] [\-y] .SH "DESCRIPTION" .IX Header "DESCRIPTION" update-locale is a script that update/generate the .po files for GOsa .IP "\fB\-g\fR extract strings from GOsa and generate po files" 3 .IX Item "-g extract strings from GOsa and generate po files" .PD 0 .IP "\fB\-y\fR assume yes" 3 .IX Item "-y assume yes" .IP "\fB\-h\fR help" 3 .IX Item "-h help" .PD .SH "BUGS" .IX Header "BUGS" Please report any bugs, or post any suggestions, to the GOsa mailing list or to .SH "LICENCE AND COPYRIGHT" .IX Header "LICENCE AND COPYRIGHT" This code is part of GOsa () .PP Copyright (C) 2003\-2009 \s-1GONICUS\s0 GmbH .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of \&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \&\s-1GNU\s0 General Public License for more details. gosa-core-2.7.4/update-locale.pod0000644000175000017500000000153611254446346015300 0ustar mikemike =head1 NAME update-locale - update localization files =head1 SYNOPSIS update-locale [-h] [-g] [-y] =head1 DESCRIPTION update-locale is a script that update/generate the .po files for GOsa =over 3 =item B<-g> extract strings from GOsa and generate po files =item B<-y> assume yes =item B<-h> help =back =head1 BUGS Please report any bugs, or post any suggestions, to the GOsa mailing list or to =head1 LICENCE AND COPYRIGHT This code is part of GOsa (L) Copyright (C) 2003-2009 GONICUS GmbH This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. =cut gosa-core-2.7.4/update-pdf-help.pod0000644000175000017500000000140411254446346015532 0ustar mikemike =head1 NAME update-pdf-help - Create pdf documentation from online documentation =head1 SYNOPSIS update-pdf-help =head1 DESCRIPTION update-pdf-help is a script that create pdf docomentation for offline reading from online documentation. =head1 BUGS Please report any bugs, or post any suggestions, to the GOsa mailing list or to =head1 LICENCE AND COPYRIGHT This code is part of GOsa (L) Copyright (C) 2003-2009 GONICUS GmbH This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. =cut gosa-core-2.7.4/update-gosa0000755000175000017500000005003111477113114014175 0ustar mikemike#!/usr/bin/php update-gosa - class cache updated and plugin manager for GOsa Usage: update-gosa install dsc Install the plugin using the dsc information placed in the plugin source directory. update-gosa remove plugin Remove the plugin named "plugin" from the current configuration. update-gosa list Lists installed plugins update-gosa rescan-i18n Rebuilds the translations update-gosa rescan-images Rebuilds the themes master image update-gosa rescan-classes Rebuilds the class list update-gosa Shortcut for rescan-classes and rescan-i18n read())) { if ($entry[0] != '.') { $themes[]= basename($entry); } } $d->close(); return $themes; } /* Function to include all class_ files starting at a given directory base */ function get_classes($folder= ".") { static $base_dir= ""; static $result= array(); if ($base_dir == ""){ if ($folder == "."){ $base_dir= getcwd(); } else { $base_dir= $folder; } } $currdir=getcwd(); if ($folder){ chdir("$folder"); } $dh = opendir("."); while(is_resource($dh) && false !== ($file = readdir($dh))){ if (preg_match("/.*\.svn.*/", $file) || preg_match("/.*smarty.*/i",$file) || preg_match("/.*\.tpl.*/",$file) || ($file==".") ||($file =="..")){ continue; } /* Recurse through all "common" directories */ if (is_dir($file) && !file_exists("{$file}/excludeFromAutoLoad")){ get_classes($file); continue; } /* Only take care about .inc and .php files... */ if (!(preg_match('/\.php$/', $file) || preg_match('/\.inc$/', $file))){ continue; } /* Include existing class_ files */ $contents= file($file); foreach($contents as $line){ $line= chop($line); if (preg_match('/^\s*class\s*\w.*$/', $line)){ $class= preg_replace('/^\s*class\s*(\w+).*$/', '\1', $line); $result[$class]= preg_replace("%$base_dir/%", "", "$currdir/$folder/$file"); } } } @closedir($dh); chdir($currdir); return ($result); } function rescan_classes() { echo "Updating class cache...\n"; $class_mapping= get_classes(); $filename= GOSA_HOME."/include/class_location.inc"; /* Sanity checks */ if (!file_exists($filename) || is_writable($filename)) { if (!$handle= fopen($filename, 'w')) { echo "Cannot open file \"$filename\" - aborted\n"; exit (1); } } else { echo "File \"$filename\" is not writable - aborted\n"; exit (2); } fwrite ($handle, " $value){ fwrite ($handle, " \"$key\" => \"$value\",\n"); } fwrite ($handle, " );\n"); fclose($handle); } function rescan_i18n() { echo "Updating internationalization...\n"; $languages= array(); $size= strlen(LOCALE_DIR); /* Get all available messages.po files, sort them for languages */ $dir= new RecursiveDirectoryIterator(LOCALE_DIR); $all= new RecursiveIteratorIterator($dir); foreach ( $all as $element ){ if ($element->isFile() && preg_match('/\/LC_MESSAGES\/messages.po$/', $element->getPathname())){ $lang= preg_replace('/^.*\/([^\/]+)\/LC_MESSAGES\/.*$/', '\1', $element); if (!isset($languages[$lang])){ $languages[$lang]= array(); } $languages[$lang][]= substr($element->getPathName(), $size+1); } } /* For each language, merge the target .mo to the compiled directory. */ foreach ($languages as $language => $po_files){ if (!is_dir(LOCALE_DIR."/compiled/${language}/LC_MESSAGES")){ if (!mkdir (LOCALE_DIR."/compiled/${language}/LC_MESSAGES", 0755, TRUE)){ echo "Failed to create '".LOCALE_DIR."/compiled/${language}/LC_MESSAGES'- aborted"; exit (3); } } /* Cat all these po files into one single file */ system ("(cd ".LOCALE_DIR." && msgcat --use-first ".implode(" ", $po_files)." > compiled/${language}/LC_MESSAGES/messages.po)", $val); if ($val != 0){ echo "Merging of message files failed - aborted"; exit (4); } system ("(cd ".LOCALE_DIR."/compiled/${language}/LC_MESSAGES && msgfmt -o messages.mo messages.po && rm messages.po)", $val); if ($val != 0){ echo "Compiling of message files failed - aborted"; exit (5); } } echo "! Warning: you may need to reload your webservice!\n"; } function parse_ini($file) { global $description, $provides, $depends, $versions, $conflicts; $res= ""; if (file_exists($file)){ $tmp= parse_ini_file($file, TRUE); if (isset($tmp['gosa-plugin'])){ $plugin= &$tmp['gosa-plugin']; if (isset($plugin['name'])&& isset($plugin['description'])){ $res= $plugin['name']; $description[$res]= $plugin['description']; $versions[$res]= $plugin['version']; $provides[$res]= $res; if (isset($plugin['depends'])){ $depends[$res]= explode(',', preg_replace('/\s+/', '', $plugin['depends'])); } if (isset($plugin['conflicts'])){ $conflicts[$res]= explode(',', preg_replace('/\s+/', '', $plugin['conflicts'])); } } } } return $res; } function dependency_check() { global $description, $provides, $depends; foreach ($depends as $name => $pl_depends){ foreach ($pl_depends as $pl){ if (!in_array($pl, $provides)){ echo "! Error: plugin '$name' depends on '$pl' which is not provided by any plugin\n\n"; exit (1); } } } } function load_plugins() { if (!is_dir(PLUGSTATE_DIR)){ if (!mkdir (PLUGSTATE_DIR, 0755, TRUE)){ echo "Cannot create plugstate dir '".PLUGSTATE_DIR."' - aborted\n"; exit (2); } } $dir= new DirectoryIterator(PLUGSTATE_DIR); foreach ($dir as $entry){ if ($dir->isDir() && !preg_match('/^\./', $dir->__toString())){ $file= $dir->getPathName()."/plugin.dsc"; if (parse_ini($file) == ""){ echo "! Warning: plugin ".$dir->getPathName()." is missing declarations\n"; } } } } function list_plugins() { global $description, $versions; $count= 0; /* Load plugin list */ load_plugins(); /* Show plugins */ foreach ($description as $name => $dsc){ if ($count == 0){ echo "Plugin\t\t|Version |Description\n"; echo "----------------------------------------------------------------------------\n"; } $ver= $versions[$name]; echo "$name\t\t|$ver\t |$dsc\n"; $count++; } /* Yell about non existing plugins... */ if ($count == 0){ echo "No plugins found...\n\n"; } else { # Check for dependencies dependency_check(); echo "\n"; } } function install_plugin($file) { global $description, $provides, $depends, $conflicts; /* Load plugin list */ load_plugins(); /* Load .dsc file */ if (file_exists($file)){ $tmp= parse_ini_file($file, TRUE); if (isset($tmp['gosa-plugin'])){ $plugin= &$tmp['gosa-plugin']; if (isset($plugin['name'])&& isset($plugin['description'])){ $name= $plugin['name']; $description= $plugin['description']; $depends= array(); if (isset($plugin['depends'])){ $depends= explode(',', preg_replace('/\s+/', '', $plugin['depends'])); } /* Already installed? */ if (isset($provides[$name])){ echo "! Error: plugin already installed\n\n"; exit (3); } /* Check if dependencies are fullfilled */ foreach ($depends as $dep){ $found= false; foreach ($provides as $provide => $dummy){ if ($dep == $provide){ $found= true; break; } } if (!$found){ echo "! Error: plugin depends on '$dep', but this is not installed\n\n"; exit (3); } } /* Check for conflicts */ foreach ($conflicts as $conf){ if (!in_array($conf, $provides)){ echo "! Warning: plugin conflicts with '$conf'\n\n"; } } /* Create plugstate directory and touch plugin.lst */ if (!mkdir (PLUGSTATE_DIR."/$name", 0755, TRUE)){ echo "Failed to create '".PLUGSTATE_DIR."/$name - aborted"; exit (3); } if (!$handle= fopen(PLUGSTATE_DIR."/$name/plugin.lst", 'w')) { echo "Cannot open file '$filename' - aborted\n"; exit (1); } echo "Installing plugin '$name'...\n"; /* Copy and fill plugin.lst */ $path= dirname($file); $dir= new RecursiveDirectoryIterator($path); $all= new RecursiveIteratorIterator($dir); foreach ( $all as $entry ){ $source= $path."/".substr($entry->getPathName(), strlen($path) + 1); /* Skip description - it belongs to the state dir */ if (preg_match('/\/plugin.dsc$/', $source)){ copy ($source, PLUGSTATE_DIR."/$name/plugin.dsc"); continue; } /* Skip well known directories */ if (preg_match('/^\.+$/', $source) || preg_match('/\/\.svn\//', $source)) { continue; } /* Calculate destination */ if (preg_match("%^.*locale/%", $source)){ $dest= GOSA_HOME."/locale/plugins/$name/".preg_replace("%^.*locale/%", "", $source); } elseif (preg_match("%^.*help/%", $source)) { $dest= GOSA_HOME."/doc/plugins/$name/".preg_replace("%^.*help/%", "", $source); } elseif (preg_match("%^.*html/%", $source)) { $dest= GOSA_HOME."/html/plugins/$name/".preg_replace("%^.*html/%", "", $source); } else { $dest= GOSA_HOME."/plugins/".substr($entry->getPathName(), strlen($path) + 1); } /* Destination exists in case of directories? */ if ($entry->isDir()){ if (!is_dir($dest)){ mkdir($dest, 0755, TRUE); fwrite ($handle, "$dest\n"); } } else { if (!is_dir(dirname($dest))){ mkdir(dirname($dest), 0755, TRUE); fwrite ($handle, dirname($dest)."\n"); } } /* Copy files */ if ($entry->isFile()){ copy ($source, $dest); } /* Note what we did... */ fwrite ($handle, "$dest\n"); } fclose($handle); } } } /* Update caches */ rescan_classes(); rescan_i18n(); } function remove_plugin($name) { global $description, $depends; /* Load plugin list */ load_plugins(); /* Present? */ if (!isset($description[$name])){ echo "! Error: cannot find a plugin named '$name'\n\n"; exit (1); } /* Depends? */ foreach ($depends as $sname => $pl_depends){ if (in_array($name, $pl_depends)){ echo "! Error: plugin '$sname' depends on '$name' - cannot remove it\n\n"; exit (1); } } /* Load information */ if (!file_exists(PLUGSTATE_DIR."/$name/plugin.lst")){ echo "! Error: cannot remove plugin '$name' - no install history found\n\n"; exit (1); } echo "Removing plugin '$name'...\n"; $contents= file(PLUGSTATE_DIR."/$name/plugin.lst"); $cnv= array(); foreach($contents as $line){ $entry= chop($line); $cnv[strlen($entry).":$entry"]= $entry; } krsort($cnv); /* Remove files first */ clearstatcache(); foreach ($cnv as $entry){ if (is_dir($entry)){ rmdir($entry); continue; } if (file_exists($entry)){ unlink($entry); } } /* Remove state directory for plugin */ rmdirRecursive(PLUGSTATE_DIR."/$name"); /* Update caches */ rescan_classes(); rescan_i18n(); } function rescan_images($path, $theme) { $widths= array(); $heights= array(); $paths= array(); $posX= array(); $posY= array(); $baseLength= strlen($path); $heightStats= array(); $warnings= array(); $checksums= array(); $styles= array(); $duplicates= array(); echo "Updating master image for theme '$theme'..."; // Check for image magick convert if (!function_exists("imageFilter")){ exec("which convert", $res, $ret); if ($ret != 0) { die("Your system has no bundled gd support for imageFilter function. Please install imagemagick in order to use an external command.\n"); } } // Scan for images in the given path flush(); foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $fileInfo) { // We're only interested in png files $indexPath= substr($fileInfo->getPathname(), $baseLength + 1); $path= $fileInfo->getPathname(); if (preg_match('/\.png$/', $indexPath) && !preg_match('/\.svn/', $path) && !preg_match('/themes\/[^\/]+\/images\/img.png$/', $path)){ // Grey image if it is not already one if (preg_match('/grey/', $indexPath)) { echo "!"; $warnings[]= "! Warning: skipped possible *grey* image $path"; flush(); continue; } // New image if it is not already one if (preg_match('/new/', $indexPath) && !preg_match('/new\.png$/', $indexPath)) { echo "!"; $warnings[]= "! Warning: skipped possible *new* image $path"; flush(); continue; } // Catch available themes if (preg_match('/themes\//', $indexPath) && !preg_match('/themes\/'.$theme.'\//', $indexPath)) { continue; } // Load image $img= imageCreateFromPng($path); $width= imageSX($img); $height= imageSY($img); imageDestroy($img); $greyIndexPath= preg_replace('/\.png$/', '-grey.png', $indexPath); // Is this image already there? $checksum= md5_file($path); if (in_array($checksum, $checksums)) { $warnings[]= "! Warning: images $indexPath seems to be a duplicate of ".array_search($checksum, $checksums); $duplicates[$indexPath]= array_search($checksum, $checksums); $duplicates[$greyIndexPath]= preg_replace('/\.png$/', '-grey.png', array_search($checksum, $checksums)); continue; } else { $checksums[$indexPath]= $checksum; } // Ordinary image $widths[$indexPath]= $width; $heights[$indexPath]= $height; $paths[$indexPath]= $path; // Grey image $widths[$greyIndexPath]= $width; $heights[$greyIndexPath]= $height; $paths[$greyIndexPath]= $path; // Feed height statistics if (!isset($heightStats[$height])) { $heightStats[$height]= 1; } else { $heightStats[$height]++; } } echo "."; flush(); } echo "\n"; // Do some stupid height calculation arsort($heightStats, SORT_NUMERIC); reset($heightStats); $popular= current($heightStats); krsort($heightStats); reset($heightStats); $max= current($heightStats); $maxHeight= (floor($max / $popular) + 1) * $popular * 6; // Sort to get biggest values arsort($widths, SORT_NUMERIC); reset($widths); echo "Calculating master image dimensions: "; flush(); // Build container image $cursorX= 0; $cursorY= 0; $colWidth= 0; $rowHeight= 0; $colX= 0; $colY= 0; $maxY= 0; $maxX= 0; // Walk thru width sorted images foreach ($widths as $imagePath => $imageWidth) { $imageHeight= $heights[$imagePath]; // First element in this column if ($colWidth == 0) { $colWidth= $imageWidth; } // First element in this row if ($rowHeight < $imageHeight) { $rowHeight= $imageHeight; } // Does the image match here? if ($cursorX + $imageWidth > $colX + $colWidth) { if ($cursorY + $imageHeight >= $maxHeight) { // Reached max height, move to the next column $colX+= $colWidth; $cursorX= $colX; $colWidth= $imageWidth; $rowHeight= $imageHeight; $colY= $cursorY= 0; } else { // Next row $colY+= $rowHeight; $cursorY= $colY; $cursorX= $colX; $rowHeight= $imageHeight; } $maxY=($colY + $imageHeight > $maxY)?$colY+$imageHeight:$maxY; } // Save calculated position $posX[$imagePath]= $cursorX; $posY[$imagePath]= $cursorY; // Move X cursor to the next position $cursorX+= $imageWidth; $maxX=($colX+$imageWidth > $maxX)?$colX+$imageWidth:$maxX; } // Print maximum dimensions echo $maxY."x".$maxX."\n"; echo "Processing"; flush(); // Create result image $dst= imageCreateTrueColor($maxX, $maxY); imageAlphaBlending($dst, true); $transparent = imagecolorallocatealpha($dst, 0, 0, 0, 127); imageFill($dst, 0, 0, $transparent); imageSaveAlpha($dst, true); // Finally assemble picture foreach ($heights as $imagePath => $imageHeight) { $imageWidth= $widths[$imagePath]; $x= $posX[$imagePath]; $y= $posY[$imagePath]; // Insert source image... // Eventually convert it to grey before if (preg_match('/-grey\.png$/', $imagePath)) { if (!function_exists("imageFilter")){ exec("convert ".$paths[$imagePath]." -colorspace Gray /tmp/grey-converted.png"); $src= imageCreateFromPng("/tmp/grey-converted.png"); } else { $src= imageCreateFromPng($paths[$imagePath]); imageFilter($src, IMG_FILTER_GRAYSCALE); } } else { $src= imageCreateFromPng($paths[$imagePath]); } // Merge image imageCopyResampled($dst, $src, $x, $y, 0, 0, $imageWidth, $imageHeight, $imageWidth, $imageHeight); imageDestroy($src); // Store style $styles[$imagePath]= "background-position:-".$x."px -".$y."px;width:".$imageWidth."px;height:".$imageHeight."px"; echo "."; flush(); } /* Add duplicates */ foreach ($duplicates as $imagePath => $realPath) { $styles[$imagePath]= $styles[$realPath]; } imagePNG($dst, GOSA_HOME."/html/themes/$theme/images/img.png", 9); imageDestroy($dst); // Show warnings images foreach ($warnings as $warn) { echo "$warn\n"; } // Write styles echo "Writing styles..."; $fp = fopen(GOSA_HOME."/ihtml/themes/$theme/img.styles", 'w'); fwrite($fp, serialize($styles)); fclose($fp); echo "\n"; } /* Fill global values */ $description= $provides= $depends= $versions= $conflicts= array(); /* Action specified? */ if ($argc < 2){ rescan_classes(); rescan_i18n(); foreach (get_themes() as $theme) { rescan_images(GOSA_HOME."/html", $theme); } exit (0); } switch ($argv[1]){ case 'install': if (isset($argv[2])){ install_plugin($argv[2]); } else { echo "Usage: update-gosa install dsc-file\n\n"; exit (1); } break; case 'list': list_plugins(); break; case 'remove': if (isset($argv[2])){ remove_plugin($argv[2]); } else { echo "Usage: update-gosa remove plugin-name\n\n"; exit (1); } break; case 'rescan-i18n': rescan_i18n(); break; case 'rescan-classes': rescan_classes(); break; case 'rescan-images': foreach (get_themes() as $theme) { rescan_images("html", $theme); } break; default: echo "Error: Supplied command not known\n\n"; print_usage(); break; } ?> gosa-core-2.7.4/plugins/0000755000175000017500000000000011752422552013525 5ustar mikemikegosa-core-2.7.4/plugins/admin/0000755000175000017500000000000011752422552014615 5ustar mikemikegosa-core-2.7.4/plugins/admin/users/0000755000175000017500000000000011752422552015756 5ustar mikemikegosa-core-2.7.4/plugins/admin/users/user-filter.xml0000644000175000017500000000434111347675132020747 0ustar mikemike users true default auto dn objectClass givenName sn uid userPassword default LDAP (&(objectClass=gosaAccount)(|(cn=$)(sn=$)(uid=$))) cn 0.5 3 template LDAP (&(objectClass=gosaUserTemplate)(|(cn=$)(sn=$)(uid=$))) mail 0.5 3 posix LDAP (&(objectClass=gosaAccount)(objectClass=posixAccount)(|(cn=$)(sn=$)(uid=$))) cn 0.5 3 samba LDAP (&(objectClass=gosaAccount)(objectClass=sambaSamAccount)(|(cn=$)(sn=$)(uid=$))) cn 0.5 3 mail LDAP (&(objectClass=gosaAccount)(objectClass=gosaMailAccount)(|(cn=$)(sn=$)(uid=$)(mail=$))) mail 0.5 3 gosa-core-2.7.4/plugins/admin/users/user-list.tpl0000644000175000017500000000102611354313461020421 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/admin/users/tabs_user.inc0000644000175000017500000001204611245166051020437 0ustar mikemikebase= $this->by_object['user']->base; $this->uid = &$this->by_object['user']->uid; $this->sn = &$this->by_object['user']->sn; $this->givenName = &$this->by_object['user']->givenName; /* Add references/acls/snapshots */ $this->addSpecialTabs(); } function save_object($save_current= FALSE) { tabs::save_object($save_current); /* Update reference, transfer variables */ $baseobject= $this->by_object['user']; foreach ($this->by_object as $name => $obj){ /* Adding uid to sub plugins of connectivity */ if($name == "connectivity"){ foreach ($obj->plugin_name as $plg_name){ if(isset($obj->plugin[$plg_name]->uid)){ $obj->plugin[$plg_name]->uid = $baseobject->uid; } } } /* Don't touch base object */ if ($name != 'user'){ $obj->parent= &$this; $obj->uid= $baseobject->uid; $obj->sn= $baseobject->uid; $obj->givenName= $baseobject->uid; } /* Copy mail if needed */ if ($name == "gofaxAccount"){ if (isset($this->by_object['mailAccount']) && $this->by_object['mailAccount']->is_account){ $obj->mail= $this->by_object['mailAccount']->mail; } } $this->by_object[$name]= $obj; /* Update parent in base object */ $this->by_object['user']->parent= &$this; } /* Move facsimile / phone number if nessecary */ if ($this->last == "user" && isset($this->by_object['gofaxAccount'])){ /* Move number to fax plugin */ $this->by_object['gofaxAccount']->facsimileTelephoneNumber= $this->by_object['user']->facsimileTelephoneNumber; /* Move phone number if plugin exists */ if (isset($this->by_object['phoneAccount']) && !$this->by_object['phoneAccount']->is_account){ $this->by_object['phoneAccount']->phoneNumbers= array(); if ($this->by_object['user']->telephoneNumber != ""){ $this->by_object['phoneAccount']->phoneNumbers[$this->by_object['user']->telephoneNumber]= $this->by_object['user']->telephoneNumber; } } } /* Move number from fax plugin */ if ($this->last == "gofaxAccount"){ $this->by_object['user']->facsimileTelephoneNumber= $this->by_object['gofaxAccount']->facsimileTelephoneNumber; } /* Move number from fax plugin */ if ($this->last == "phoneAccount" && $this->by_object['phoneAccount']->is_account){ reset($this->by_object['phoneAccount']->phoneNumbers); $number= key($this->by_object['phoneAccount']->phoneNumbers); /* Only the first phoneAccount number, if it is not empty */ if(!empty($number)){ $this->by_object['user']->telephoneNumber= $number; } } /* Possibly change acl base */ $this->set_acl_base(); } function save($ignore_account= FALSE) { /* Check for new 'dn', in order to propagate the 'dn' to all plugins */ $baseobject= $this->by_object['user']; $baseobject->update_new_dn(); if ($this->dn != 'new'){ $new_dn= $baseobject->new_dn; if ($this->dn != $new_dn){ /* Udpate acls */ $baseobject->update_acls($this->dn,$new_dn); $baseobject->move($this->dn, $new_dn); $this->by_object['user']= $baseobject; /* Did we change ourselves? Update ui object. */ change_ui_dn($this->dn, $new_dn); } } $this->dn= $baseobject->new_dn; return tabs::save(); } function set_template_mode() { foreach ($this->by_object as $key => $obj){ $this->by_object[$key]->is_template= TRUE; } } function saveCopyDialog() { tabs::saveCopyDialog(); $baseobject= $this->by_object['user']; $uid = $baseobject->uid; foreach($this->by_object as $name => $obj){ $this->by_object[$name]->uid = $uid; } } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/users/password.tpl0000644000175000017500000001170111455625256020347 0ustar mikemike

    {t}To change the user password use the fields below. The changes take effect immediately. Please memorize the new password, because the user wouldn't be able to login without it.{/t}


    {if !$proposalEnabled}
    {factory type='password' id='new_password' name='new_password' onfocus="nextfield='repeated_password';" onkeyup="testPasswordCss(\$('new_password').value);"}
    {factory type='password' id='repeated_password' name='repeated_password' onfocus="nextfield='password_finish';"}
    {t}Strength{/t}
    {else}
     
    {$proposal}
    {image path='images/lists/reload.png' action='refreshProposal'}
     
    {factory type='password' id='new_password' name='new_password' onfocus="nextfield='repeated_password';" onkeyup="testPasswordCss(\$('new_password').value);"}
    {factory type='password' id='repeated_password' name='repeated_password' onfocus="nextfield='password_finish';"}
    {t}Strength{/t}
    {/if} {if $passwordChangeForceable}
      {/if}

    gosa-core-2.7.4/plugins/admin/users/class_userManagement.inc0000644000175000017500000011355411750770340022621 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array(get_ou("core", "userRDN")); // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("user-filter.xml", true)); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("user-list.xml", true)); $headpage->registerElementFilter("lockLabel", "userManagement::filterLockLabel"); $headpage->registerElementFilter("lockImage", "userManagement::filterLockImage"); $headpage->registerElementFilter("filterProperties", "userManagement::filterProperties"); $headpage->setFilter($filter); // Add copy&paste and snapshot handler. if ($this->config->boolValueIsTrue("core", "copyPaste")){ $this->cpHandler = new CopyPasteHandler($this->config); } if($this->config->get_cfg_value("core","enableSnapshots") == "true"){ $this->snapHandler = new SnapshotHandler($this->config); } parent::__construct($config, $ui, "users", $headpage); // Register special user actions $this->registerAction("lock", "lockEntry"); $this->registerAction("lockUsers", "lockUsers"); $this->registerAction("unlockUsers", "lockUsers"); $this->registerAction("new_template", "newTemplate"); $this->registerAction("newfromtpl", "newUserFromTemplate"); $this->registerAction("templateContinue", "templateContinue"); $this->registerAction("templatize", "templatizeUsers"); $this->registerAction("templatizeContinue", "templatizeContinue"); $this->registerAction("password", "changePassword"); $this->registerAction("passwordQueue", "handlePasswordQueue"); $this->registerAction("passwordCancel", "closeDialogs"); $this->registerAction("sendMessage", "sendMessage"); $this->registerAction("saveEventDialog", "saveEventDialog"); $this->registerAction("abortEventDialog", "closeDialogs"); // Register shortcut icon actions $this->registerAction("edit_user","editEntry"); $this->registerAction("edit_posixAccount","editEntry"); $this->registerAction("edit_mailAccount","editEntry"); $this->registerAction("edit_sambaAccount","editEntry"); $this->registerAction("edit_netatalk","editEntry"); $this->registerAction("edit_environment","editEntry"); $this->registerAction("edit_gofaxAccount","editEntry"); $this->registerAction("edit_phoneAccount","editEntry"); } // Inject user actions function detectPostActions() { $action = management::detectPostActions(); if(isset($_POST['template_continue'])) $action['action'] = "templateContinue"; if(isset($_POST['templatize_continue'])) $action['action'] = "templatizeContinue"; if(isset($_POST['save_event_dialog'])) $action['action'] = "saveEventDialog"; if(isset($_POST['abort_event_dialog'])) $action['action'] = "abortEventDialog"; if(isset($_POST['password_cancel'])){ $action['action'] = "passwordCancel"; }elseif((count($this->pwd_change_queue) || isset($_POST['password_finish']) || isset($_POST['refreshProposal']))){ $action['action'] = "passwordQueue"; } return($action); } function editEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { $str = management::editEntry($action,$target); if($str) return($str); if(preg_match("/^edit_/",$action)){ $tab = preg_replace("/^edit_/","",$action); if(isset($this->tabObject->by_object[$tab])){ $this->tabObject->current = $tab; }else{ trigger_error("Unknown tab: ".$tab); } } // Enable template mode if this is a gosaUserTemplate $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); if($ldap->object_match_filter($this->tabObject->dn, "(objectClass=gosaUserTemplate)")){ $this->tabObject->set_template_mode (); } } function closeDialogs() { management::closeDialogs(); $this->pwd_change_queue = array(); } /*! \brief Sends a message to a set of users using gosa-si events. */ function sendMessage($action="",$target=array(),$all=array()) { if(class_available("DaemonEvent")){ $uids = array(); $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); foreach($target as $dn){ $ldap->cat($dn,array('uid')); $attrs = $ldap->fetch(); if(isset($attrs['uid'][0])){ $uids[] = $attrs['uid'][0]; } } if(count($uids)){ $events = DaemonEvent::get_event_types(USER_EVENT); $event = "DaemonEvent_notify"; if(isset($events['BY_CLASS'][$event])){ $type = $events['BY_CLASS'][$event]; $this->dialogObject = new $type['CLASS_NAME']($this->config); $this->dialogObject->add_users($uids); $this->dialogObject->set_type(SCHEDULED_EVENT); } } } } /*! \brief Sends a message to a set of users using gosa-si events. */ function saveEventDialog() { $this->dialogObject->save_object(); $msgs = $this->dialogObject->check(); if(count($msgs)){ msg_dialog::displayChecks($msgs); }else{ $o_queue = new gosaSupportDaemon(); $o_queue->append($this->dialogObject); if($o_queue->is_error()){ msg_dialog::display(_("Infrastructure error"), msgPool::siError($o_queue->get_error()),ERROR_DIALOG); } $this->closeDialogs(); } } /*! \brief Intiates template creation. */ function newTemplate($action,$entry) { $this->newEntry(); $this->tabObject->set_template_mode (); } /*! \brief Queues a set of users for password changes */ function changePassword($action="",$target=array(),$all=array()) { $this->dn =""; $this->pwd_change_queue = $target; // Check permisions $disallowed = array(); $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); foreach($this->pwd_change_queue as $key => $dn){ if(!preg_match("/w/",$this->ui->get_permissions($dn,$this->aclCategory."/password"))){ unset($this->pwd_change_queue[$key]); $disallowed[] = $dn; } } if(count($disallowed)){ msg_dialog::display(_("Permission"),msgPool::permModify($disallowed),INFO_DIALOG); } // Now display change dialog. return($this->handlePasswordQueue()); } function refreshProposal() { $this->proposal = passwordMethod::getPasswordProposal($this->config); $this->proposalEnabled = (!empty($this->proposal)); } function handlePasswordQueue() { // skip if nothing is to do if(empty($this->dn) && !count($this->pwd_change_queue)) return; // Refresh proposal if requested if(isset($_POST['refreshProposal'])) $this->refreshProposal(); if(isset($_POST['proposalSelected'])) $this->proposalSelected = get_post('proposalSelected') == 1; $this->enforcePasswordChange = isset($_POST['new_password']) && isset($_POST['enforcePasswordChange']); $smarty = get_smarty(); $smarty->assign("proposal" , set_post($this->proposal)); $smarty->assign("proposalEnabled" , $this->proposalEnabled); $smarty->assign("proposalSelected" , $this->proposalSelected); $smarty->assign("passwordChangeForceable" , $this->passwordChangeForceable); $smarty->assign("enforcePasswordChange" , $this->enforcePasswordChange); // Get next entry from queue. if(empty($this->dn) && count($this->pwd_change_queue)){ // Generate new proposal $this->refreshProposal(); $this->proposalSelected = ($this->proposal != ""); $this->dn = array_pop($this->pwd_change_queue); // Do not allow to modify SASL passwords for this customer $ldap = $this->config->get_ldap_link(); $ldap->cat($this->dn, array('uid', 'userPassword')); $attrs = $ldap->fetch(); $hasSasl = isset($attrs['userPassword'][0]) && preg_match("/^{SASL}/i", $attrs['userPassword'][0]); $getsSasl= !isset($this->force_hash_type[$this->dn]) || $this->force_hash_type[$this->dn] == "sasl"; if($getsSasl && $hasSasl){ $this->dn = ""; $this->handlePasswordQueue(); return; } // Check if we are able to enforce a password change $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->cat($this->dn); $attrs = $ldap->fetch(); $this->passwordChangeForceable = in_array_strict('sambaAccount', $attrs['objectClass']) || (in_array_strict('posixAccount', $attrs['objectClass']) && isset($attrs['shadowMax'])); $smarty->assign("passwordChangeForceable" , $this->passwordChangeForceable); $smarty->assign("enforcePasswordChange" , $this->enforcePasswordChange); // Assign proposal variables $smarty->assign("proposal" , set_post($this->proposal)); $smarty->assign("proposalEnabled" , $this->proposalEnabled); $smarty->assign("proposalSelected" , $this->proposalSelected); set_object_info($this->dn); return ($smarty->fetch(get_template_path('password.tpl', TRUE))); }elseif(!count($this->pwd_change_queue) && empty($this->dn)){ return; } // If we've just refreshed the proposal then do not check the password for validity. if(isset($_POST['refreshProposal'])){ return ($smarty->fetch(get_template_path('password.tpl', TRUE))); } // Check permissions if(isset($_POST['password_finish'])){ $dn = $this->dn; $acl = $this->ui->get_permissions($dn, "users/password"); $cacl= $this->ui->get_permissions($dn, "users/user"); if (preg_match('/w/', $acl) || preg_match('/c/', $cacl)){ // Get posted passwords if($this->proposalSelected){ $new_password = $this->proposal; $repeated_password = $this->proposal; }else{ $new_password = get_post('new_password'); $repeated_password = get_post('repeated_password'); } // Check posted passwords now. $message= array(); if ($new_password != $repeated_password){ $message[]= _("The passwords you've entered as 'New password' and 'Repeated new password' do not match."); } else { if ($new_password == ""){ $message[] = msgPool::required(_("New password")); } } // Call external check hook to validate the password change if(!count($message)){ $attrs = array(); $attrs['current_password'] = ''; $attrs['new_password'] = $new_password; $checkRes = password::callCheckHook($this->config,$this->dn,$attrs); if(count($checkRes)){ $message[] = sprintf(_("Check-hook reported a problem: %s. Password change canceled!"), implode($checkRes)); } } // Display errors if (count($message) != 0){ msg_dialog::displayChecks($message); return($smarty->fetch(get_template_path('password.tpl', TRUE))); } // Change password if(isset($this->force_hash_type[$this->dn])){ if(!change_password ($this->dn, $new_password,0,$this->force_hash_type[$this->dn],'', $message)){ msg_dialog::displayChecks(array($message)); return($smarty->fetch(get_template_path('password.tpl', TRUE))); } }else{ if(!change_password ($this->dn, $new_password,0,'','',$message)){ msg_dialog::displayChecks(array($message)); return($smarty->fetch(get_template_path('password.tpl', TRUE))); } } // The user has to change his password on next login // - We are going to update samba and posix attributes here, to enforce // such a password change. if($this->passwordChangeForceable && $this->enforcePasswordChange){ // Check if we are able to enforce a password change $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->cat($this->dn); $attrs = $ldap->fetch(); $samba = in_array_strict('sambaSamAccount', $attrs['objectClass']); $posix = in_array_strict('posixAccount', $attrs['objectClass']); // Update the posix shadow flag... if($posix){ $current= floor(date("U") /60 /60 /24); $enforceDate = $current - $attrs['shadowMax'][0]; $new_attrs = array(); $new_attrs['shadowLastChange'] = $enforceDate; $ldap->cd($this->dn); $ldap->modify($new_attrs); # $posixAccount = new posixAccount($this->config, $this->dn); # $posixAccount->is_modified=TRUE; # $posixAccount->activate_shadowExpire=1; # $posixAccount->shadowExpire = date('d.m.Y', time() - (1 * 24 * 60 *60)); # $posixAccount->save(); } // Update the samba kickoff flag... if($samba){ $sambaAccount = new sambaAccount($this->config, $this->dn); $sambaAccount->is_modified=TRUE; $sambaAccount->flag_enforcePasswordChange = TRUE; $sambaAccount->flag_cannotChangePassword = FALSE; $sambaAccount->save(); } } new log("modify","users/".get_class($this),$this->dn,array(),"Password has been changed"); $this->dn =""; } else { msg_dialog::display(_("Password change"), _("You have no permission to change this users password!"), WARNING_DIALOG); } } // Cleanup if(!count($this->pwd_change_queue) && $this->dn=""){ $this->remove_lock(); $this->closeDialogs(); }else{ return($this->handlePasswordQueue()); } } /*! \brief Save user modifications. * Whenever we save a 'new' user, request a password change for him. */ function saveChanges() { $str = management::saveChanges(); if(!empty($str)) return($str); if($this->last_tabObject instanceOf multi_plug){ foreach($this->last_tabObject->a_handles as $user){ if($user->password_change_needed()){ $this->force_hash_type[$user->dn] = $user->by_object['user']->pw_storage; $this->pwd_change_queue[] = $user->dn; } } return($this->handlePasswordQueue()); } if(isset($this->last_tabObject->by_object['user']) && $this->last_tabObject->by_object['user']->password_change_needed()){ $this->force_hash_type[$this->last_tabObject->dn] = $this->last_tabObject->by_object['user']->pw_storage; $this->pwd_change_queue[] = $this->last_tabObject->dn; return($this->handlePasswordQueue()); } } function cancelEdit() { $str = management::cancelEdit(); if(!empty($str)) return($str); if(isset($this->last_tabObject->by_object['user']) && $this->last_tabObject->by_object['user']->dn != "new" && $this->last_tabObject->by_object['user']->password_change_needed()){ $this->force_hash_type[$this->last_tabObject->dn] = $this->last_tabObject->by_object['user']->pw_storage; $this->pwd_change_queue[] = $this->last_tabObject->dn; return($this->handlePasswordQueue()); } } /*! \brief Intiates user creation. * If we've user templates, then the user will be asked to use to use one. * -> See 'templateContinue' for further handling. */ function newUserFromTemplate($action="",$target=array(),$all=array()) { // Call parent method, it knows whats to do, locking and so on ... $str = management::newEntry($action,$target,$all); if(!empty($str)) return($str); // Reset uid selection. $this->got_uid= ""; // Use template if there are any of them $templates = array(); $templates['none']= _("none"); $templates = array_merge($templates,$this->get_templates()); // We've templates, so preset the current template and display the input dialog. if (count($templates)){ $smarty = get_smarty(); foreach(array("sn", "givenName", "uid", "got_uid") as $attr){ $smarty->assign("$attr", ""); } $smarty->assign("template", array_pop($target)); $smarty->assign("templates", $templates); $smarty->assign("edit_uid", ""); $smarty->assign("allowUidProposalModification", $this->config->get_cfg_value("core","allowUidProposalModification")); return($smarty->fetch(get_template_path('template.tpl', TRUE))); // -> See 'templateContinue' for further handling! } } /*! \brief Intiates user creation. * If we've user templates, then the user will be asked * if he wants to use one. * -> See 'templateContinue' for further handling. */ function newEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { // Call parent method, it manages everything, locking, object creation... $str = management::newEntry($action,$target,$all); if(!empty($str)) return($str); // If we've at least one template, then ask the user if he wants to use one? $templates = array(); $templates['none']= _("none"); $templates = array_merge($templates,$this->get_templates()); // Display template selection if (count($templates) > 1){ $smarty = get_smarty(); // Set default variables, normally empty. foreach(array("sn", "givenName", "uid", "got_uid") as $attr){ $smarty->assign($attr, ""); } $smarty->assign("template", "none"); $smarty->assign("templates", $templates); $smarty->assign("edit_uid", ""); $smarty->assign("allowUidProposalModification", $this->config->get_cfg_value("core","allowUidProposalModification")); return($smarty->fetch(get_template_path('template.tpl', TRUE))); // -> See 'templateContinue' for further handling! } } /* !\brief This method is called whenever a template selection was displayed. * Here we act on the use selection. * - Does the user want to create a user from template? * - Create user without template? * - Input correct, every value given and valid? */ function templateContinue() { // Get the list of available templates. $templates = array(); $templates['none']= _("none"); $templates = array_merge($templates,$this->get_templates()); // Input validation, if someone wants to create a user from a template // then validate the given values. $message = array(); if(!isset($_POST['template']) || (empty($_POST['template']))){ $message[]= msgPool::invalid(_("Template")); } if(!isset($_POST['sn']) || (empty($_POST['sn']))){ $message[]= msgPool::required(_("Name")); } if(!isset($_POST['givenName']) || (empty($_POST['givenName']))){ $message[]= msgPool::required(_("Given name")); } /******************** * 1 We've had input errors - Display errors and show input dialog again. ********************/ if (count($message) > 0){ msg_dialog::displayChecks($message); // Preset input fields with user input. $smarty = get_smarty(); foreach(array("sn", "givenName", "uid", "template") as $attr){ if(isset($_POST[$attr])){ $smarty->assign("$attr", set_post(get_post($attr))); }else{ $smarty->assign("$attr", ""); } } $smarty->assign("templates",$templates); $smarty->assign("got_uid", $this->got_uid); $smarty->assign("edit_uid",false); $smarty->assign("allowUidProposalModification", $this->config->get_cfg_value("core","allowUidProposalModification")); return($smarty->fetch(get_template_path('template.tpl', TRUE))); } /******************** * 2 There was a template selected, now ask for the uid. ********************/ if ($_POST['template'] != 'none' && !isset($_POST['uid'])){ // Remember user input. $smarty = get_smarty(); $this->sn = get_post('sn'); $this->givenName = get_post('givenName'); // Avoid duplicate entries, check if such a user already exists. $dn= preg_replace("/^[^,]+,/i", "", get_post('template')); $ldap= $this->config->get_ldap_link(); $ldap->cd ($dn); $ldap->search ("(&(sn=".normalizeLdap($this->sn).")(givenName=".normalizeLdap($this->givenName)."))", array("givenName")); if ($ldap->count () != 0){ msg_dialog::displayChecks(array(msgPool::duplicated(_("Name")))); $smarty->assign("edit_uid", ""); }else{ // Preset uid field by using the idGenerator $attributes= array('sn' => $this->sn, 'givenName' => $this->givenName); if ($this->config->get_cfg_value("core","idGenerator") != ""){ $genStr = $this->config->get_cfg_value("core","idGenerator"); $smarty->assign("edit_uid", ""); if(!empty($genStr)){ $uids= gen_uids($genStr, $attributes); if (count($uids)){ $smarty->assign("edit_uid", "false"); $smarty->assign("uids", $uids); $this->uid= current($uids); }else{ msg_dialog::displayChecks(array(_("Cannot generate a unique id, please specify it manually!"))); } } } else { $smarty->assign("edit_uid", ""); $this->uid= ""; } $this->got_uid= true; } // Assign user input foreach(array("sn", "givenName", "uid", "got_uid") as $attr){ $smarty->assign("$attr", set_post($this->$attr)); } if (isset($_POST['template'])){ $smarty->assign("template", get_post('template')); } $smarty->assign("templates",$templates); $smarty->assign("allowUidProposalModification", $this->config->get_cfg_value("core","allowUidProposalModification")); return($smarty->fetch(get_template_path('template.tpl', TRUE))); } /******************** * 3 No template - Ok. Lets fill the data into the user object and skip templating here. ********************/ if (get_post('template') == 'none'){ foreach(array("sn", "givenName", "uid") as $attr){ if (isset($_POST[$attr])){ $this->tabObject->by_object['user']->$attr= get_post($attr); } } // The user Tab object is already instantiated, so just go back and let the // management class do the rest. return(""); } /******************** * 4 Template selected and uid given - Ok, then lets adapt tempalte values. ********************/ if(isset($_POST['uid'])){ // Move user supplied data to sub plugins foreach(array("uid","sn","givenName") as $attr){ $this->$attr = get_post($attr); $this->tabObject->$attr = $this->$attr; $this->tabObject->by_object['user']->$attr = $this->$attr; } // Adapt template values. $template_dn = get_post('template'); $this->tabObject->adapt_from_template($template_dn, array("uid","cn","givenName","sn")); $template_base = preg_replace("/^[^,]+,".preg_quote(get_people_ou(), '/i')."/", '', $template_dn); $this->tabObject->by_object['user']->base= $template_base; // The user Tab object is already instantiated, so just go back and let the // management class do the rest. return(""); } } /* !\brief This method applies a template to a set of users. */ function templatizeUsers($action="",$target=array(),$all=array()) { $this->dns = array(); if(count($target)){ // Get the list of available templates. $templates = $this->get_templates(); // Check entry locking foreach($target as $dn){ if (($user= get_lock($dn)) != ""){ $this->dn = $dn; return(gen_locked_message ($user, $dn)); } $this->dns[] = $dn; } // Display template $smarty = get_smarty(); $smarty->assign("templates", $templates); return($smarty->fetch(get_template_path('templatize.tpl', TRUE))); } } /* !\brief This method is called whenever the templatize dialog was used. */ function templatizeContinue() { // Template readable? $template= get_post('template'); $acl = $this->ui->get_permissions($template, $this->aclCategory."/".$this->aclPlugin); if (preg_match('/r/', $acl)){ $tab = $this->tabClass; foreach ($this->dns as $dn){ // User writeable $acl = $this->ui->get_permissions($dn, $this->aclCategory."/".$this->aclPlugin); if (preg_match('/w/', $acl)){ $this->tabObject= new $tab($this->config, $this->config->data['TABS'][$this->tabType], $dn, $this->aclCategory); $this->tabObject->adapt_from_template($template, array("sn", "givenName", "uid")); $this->tabObject->save(); } else { msg_dialog::display(_("Permission error"), msgPool::permModify($dn), ERROR_DIALOG); } } } else { msg_dialog::display(_("Permission error"), msgPool::permView($template), ERROR_DIALOG); } // Cleanup! $this->remove_lock(); $this->closeDialogs(); } /* !\brief Lock/unlock multiple users. */ function lockUsers($action,$target,$all) { if(!count($target)) return; if($action == "lockUsers"){ $this->lockEntry($action,$target, $all, "lock"); }else{ $this->lockEntry($action,$target, $all, "unlock"); } } /* !\brief Locks/unlocks the given user(s). */ function lockEntry($action,$entry, $all, $type = "toggle") { // Filter out entries we are not allowed to modify $disallowed = array(); $dns = array(); foreach($entry as $dn){ if (!preg_match("/w/",$this->ui->get_permissions($dn,"users/password"))){ $disallowed[] = $dn; }else{ $allowed[] = $dn; } } if(count($disallowed)){ msg_dialog::display(_("Permission"),msgPool::permDelete($disallowed),INFO_DIALOG); } // Try to lock/unlock the rest of the entries. $ldap = $this->config->get_ldap_link(); foreach($allowed as $dn){ $ldap->cat($dn, array('userPassword')); if($ldap->count() == 1){ // We can't lock empty passwords. $val = $ldap->fetch(); if(!isset($val['userPassword'])){ continue; } // Detect the password method and try to lock/unlock. $pwd = $val['userPassword'][0]; $method = passwordMethod::get_method($pwd,$val['dn']); $success= true; if($method instanceOf passwordMethod){ if($type == "toggle"){ if($method->is_locked($this->config,$val['dn'])){ $success= $method->unlock_account($this->config,$val['dn']); }else{ $success= $method->lock_account($this->config,$val['dn']); } }elseif($type == "lock" && !$method->is_locked($this->config,$val['dn'])){ $success= $method->lock_account($this->config,$val['dn']); }elseif($type == "unlock" && $method->is_locked($this->config,$val['dn'])){ $success= $method->unlock_account($this->config,$val['dn']); } // Check if everything went fine. if (!$success){ $hn= $method->get_hash_name(); if (is_array($hn)){ $hn= $hn[0]; } msg_dialog::display(_("Account locking"), sprintf(_("Password method '%s' does not support locking. Account (%s) has not been locked!"), $hn,$dn),WARNING_DIALOG); } }else{ // Can't lock unknown methods. } } } } /* !\brief This method returns a list of all available templates. */ function get_templates() { $templates= array(); $ldap= $this->config->get_ldap_link(); foreach ($this->config->departments as $key => $value){ $acl = $this->ui->get_permissions($value,$this->aclCategory."/".$this->aclPlugin); if (preg_match("/c/",$acl)){ // Search all templates from the current dn. $ldap->cd (get_people_ou().$value); $ldap->search ("(objectClass=gosaUserTemplate)", array("uid")); if ($ldap->count() != 0){ while ($attrs= $ldap->fetch()){ $templates[$ldap->getDN()]= $attrs['uid'][0]." - ".LDAP::fix($key); } } } } natcasesort ($templates); reset ($templates); return($templates); } function copyPasteHandler($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="",$altAclPlugin="") { if ($this->config->boolValueIsTrue("core", "copyPaste")){ $this->cpHandler->lastdn = ""; $str = management::copyPasteHandler($action,$target,$all); if($this->cpHandler->lastdn != "" && isset($_POST['passwordTodo']) && $_POST['passwordTodo'] == "new"){ $this->pwd_change_queue[] = $this->cpHandler->lastdn; return($this->handlePasswordQueue()); } return($str); } return ""; } static function filterLockImage($userPassword) { $image= "images/empty.png"; if(isset($userPassword[0]) && preg_match("/^\{[^\}]/",$userPassword[0])){ if(preg_match("/^[^\}]*+\}!/",$userPassword[0])){ $image= "images/lists/locked.png"; }else{ $image= "images/lists/unlocked.png"; } } return $image; } static function filterLockLabel($userPassword) { $label= ""; if(isset($userPassword[0]) && preg_match("/^\{[^\}]/",$userPassword[0])){ if(preg_match("/^[^\}]*+\}!/",$userPassword[0])){ $label= _("Unlock account").""; }else{ $label= _("Lock account"); } } return $label; } static function filterProperties($row, $classes) { $result= ""; $map= array( "gosaAccount" => array( "image" => "plugins/users/images/select_user.png", "plugin" => "user", "alt" => _("Generic"), "title" => _("Edit generic properties")), "posixAccount" => array("image" => "images/penguin.png", "plugin" => "posixAccount", "alt" => _("POSIX"), "title" => _("Edit POSIX properties")), "gosaMailAccount" => array("image" => "images/mailto.png", "alt" => _("Mail"), "plugin" => "mailAccount", "title" => _("Edit mail properties")), "sambaSamAccount" => array("image" => "plugins/systems/images/select_winstation.png", "plugin" => "sambaAccount", "alt" => _("Samba"), "title" => _("Edit samba properties")), "apple-user" => array("image" => "plugins/netatalk/images/select_netatalk.png", "plugin" => "netatalk", "alt" => _("Netatalk"), "title" => _("Edit Netatalk properties")), "gotoEnvironment" => array("image" => "plugins/users/images/small_environment.png", "plugin" => "environment", "alt" => _("Environment"), "title" => _("Edit environment properties")), "goFaxAccount" => array("image" => "plugins/users/images/fax_small.png", "plugin" => "gofaxAccount", "alt" => _("FAX"), "title" => _("Edit FAX properties")), "goFonAccount" => array("image" => "plugins/gofon/images/select_phone.png", "plugin" => "phoneAccount", "alt" => _("Phone"), "title" => _("Edit phone properties"))); // Walk thru map foreach ($map as $oc => $properties) { if (in_array_ics($oc, $classes)) { $result.= image($properties['image'], "listing_edit_".$properties['plugin']."_$row", $properties['title']); } else { $result.= image('images/empty.png'); } } return $result; } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/users/user-list.xml0000644000175000017500000001331411344220453020422 0ustar mikemike true false true true users 1 gosaUserTemplate users user plugins/users/images/select_template.png gosaAccount users user plugins/users/images/select_user.png |20px;c||||150px|185px;r| %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 3 %{filter:objectType(dn,objectClass)} sn string %{filter:link(row,dn,"%s",sn)} true givenName string %{filter:link(row,dn,"%s",givenName)} true uid string %{filter:link(row,dn,"%s",uid)} true %{filter:filterProperties(row,objectClass)} %{filter:actions(dn,row,objectClass)}
    sub images/lists/element.png[new] new entry plugins/users/images/select_user.png[new] new_template entry plugins/users/images/select_template.png[new] separator edit entry images/lists/edit.png remove entry images/lists/trash.png password entry plugins/users/images/list_password.png separator lockUsers entry images/lists/locked.png users/password[w] unlockUsers entry images/lists/unlocked.png users/password[w] sendMessage entry DaemonEvent_notify plugins/goto/images/notify.png separator templatize entry plugins/users/images/wizard.png separator exporter separator copypaste snapshot newfromtpl entry images/lists/new.png gosaUserTemplate cp !gosaUserTemplate copypaste edit entry gosaAccount images/lists/edit.png lock entry !gosaUserTemplate %{filter:lockImage(userPassword)} users/password[w] password entry !gosaUserTemplate plugins/users/images/list_password.png snapshot snapshot !gosaUserTemplate remove entry images/lists/trash.png gosaAccount users/user[d]
    gosa-core-2.7.4/plugins/admin/users/template.tpl0000644000175000017500000000435711603022660020312 0ustar mikemike
    {t}Creating a new user using templates{/t}

    {t}Creating a new user can be assisted by using templates. Many database records will be filled automatically. Choose 'none' to skip the usage of templates.{/t}



    {if $got_uid eq "true"} {/if}
    {t}Login{/t} {if $edit_uid eq "false"} {if $allowUidProposalModification == "true"} {else} {/if} {else} {/if}

    gosa-core-2.7.4/plugins/admin/users/main.inc0000644000175000017500000000337511450302251017371 0ustar mikemikeremove_lock(); } } /* Remove this plugin from session */ if ( $cleanup ){ session::un_set('userManagement'); }else{ /* Create usermanagement object on demand */ if (!session::is_set('userManagement')){ $userManagement= new userManagement ($config, $ui); session::set('userManagement',$userManagement); } $userManagement = session::get('userManagement'); $display= $userManagement->execute(); /* Reset requested? */ if (isset($_GET['reset']) && $_GET['reset'] == 1){ session::un_set ('userManagement'); } /* Show and save dialog */ session::set('userManagement',$userManagement); } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/users/migration/0000755000175000017500000000000011752422552017747 5ustar mikemikegosa-core-2.7.4/plugins/admin/users/migration/class_migrate_userRDN.inc0000644000175000017500000000027111376746643024675 0ustar mikemike gosa-core-2.7.4/plugins/admin/users/templatize.tpl0000644000175000017500000000201711352435353020654 0ustar mikemike
    {t}Applying a template{/t}

    {t}Applying a template to several users will replace all user attributes defined in the template.{/t}



    {if $templates}

    {else} {t}No templates available!{/t}
    {/if} gosa-core-2.7.4/plugins/admin/groups/0000755000175000017500000000000011752422552016134 5ustar mikemikegosa-core-2.7.4/plugins/admin/groups/paste_generic.tpl0000644000175000017500000000143011424325206021455 0ustar mikemike

    {t}Group settings{/t}

    {t}Group name{/t}
    gosa-core-2.7.4/plugins/admin/groups/tabs_group.inc0000644000175000017500000000622411424304043020766 0ustar mikemikeaddSpecialTabs(); } function save_object($save_current= FALSE) { tabs::save_object($save_current); /* Update reference, transfer variables */ $baseobject= $this->by_object['group']; foreach ($this->by_object as $name => $obj){ /* Don't touch base object */ if ($name != 'group'){ $obj->parent= &$this; $obj->cn= $baseobject->cn; $this->by_object[$name]= $obj; } } } function delete() { /* Put baseobjects 'cn' to mailobjects 'uid' */ $baseobject= $this->by_object['group']; if (isset($this->by_object['mailgroup'])){ $this->by_object['mailgroup']->uid= $baseobject->cn; } tabs::delete(); } function save($ignore_account= FALSE) { $baseobject= $this->by_object['group']; /* Check for new 'dn', in order to propagate the 'dn' to all plugins */ $cn = preg_replace('/,/', '\,', $baseobject->cn); $cn = preg_replace('/"/', '\"', $cn); $new_dn= 'cn='.$cn.','.get_groups_ou().$baseobject->base; /* Put baseobjects 'cn' to mailobjects 'uid' */ if (isset($this->by_object['mailgroup'])){ $this->by_object['mailgroup']->uid= $baseobject->cn; } /* Update reference, transfer variables */ foreach ($this->by_object as $name => $obj){ /* Transfer attributes for mailgroup account */ if ($name == 'mailgroup'){ $this->by_object['mailgroup']->members= $baseobject->memberUid;; } } /* Move group? */ if ($this->dn != $new_dn){ /* Write entry on new 'dn' */ if ($this->dn != "new"){ $baseobject->update_acls($this->dn,$new_dn); $baseobject->move($this->dn, $new_dn); $this->by_object['group']= $baseobject; } /* Happen to use the new one */ $this->dn= $new_dn; } $ret= tabs::save(); return $ret; } function saveCopyDialog() { tabs::saveCopyDialog(); /* Update reference, transfer variables */ $baseobject= $this->by_object['group']; foreach ($this->by_object as $name => $obj){ /* Don't touch base object */ if ($name != 'group'){ $obj->parent= &$this; $obj->cn= $baseobject->cn; $this->by_object[$name]= $obj; } } } } ?> gosa-core-2.7.4/plugins/admin/groups/userSelect/0000755000175000017500000000000011752422552020252 5ustar mikemikegosa-core-2.7.4/plugins/admin/groups/userSelect/user-filter.xml0000644000175000017500000000142711461537231023237 0ustar mikemike users true default auto dn objectClass cn sn givenName uid description default LDAPBlacklist (&(objectClass=gosaAccount)(cn=$)) cn 0.5 3 gosa-core-2.7.4/plugins/admin/groups/userSelect/user-list.tpl0000644000175000017500000000127311363330666022727 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/admin/groups/userSelect/class_userSelect.inc0000644000175000017500000000356611424252335024256 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array(get_ou("core", "userRDN")); // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("user-filter.xml", true, dirname(__FILE__))); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("user-list.xml", true, dirname(__FILE__))); $headpage->setFilter($filter); parent::__construct($config, $ui, "users", $headpage); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/groups/userSelect/user-list.xml0000644000175000017500000000324011332552652022721 0ustar mikemike true false true true 1 gosaAccount users user plugins/users/images/select_user.png |20px;c|||| %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 1 %{filter:objectType(dn,objectClass)} givenName string %{givenName} true sn string %{sn} true uid string %{uid} true
    gosa-core-2.7.4/plugins/admin/groups/group-list.tpl0000644000175000017500000000102511352410437020753 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/admin/groups/class_group.inc0000644000175000017500000014207611613731145021157 0ustar mikemikeget_cfg_value("core","rfc2307bis") == "true"){ $this->rfc2307bis= TRUE; $this->attributes[]= "member"; $this->objectclasses[]= "groupOfNames"; } plugin::plugin ($config, $dn); $this->trustModeDialog = new trustModeDialog($this->config, $this->dn,NULL); $this->trustModeDialog->setAcl('groups/group'); /* Load attributes depending on the samba version */ $this->orig_dn= $dn; $this->orig_cn= $this->cn; /* Get member list */ if (isset($this->attrs['memberUid'][0])){ $tmp= array(); for ($i= 0; $i<$this->attrs['memberUid']['count']; $i++){ $tmp[$this->attrs['memberUid'][$i]]= $this->attrs['memberUid'][$i]; } $this->memberUid= $tmp; ksort ($this->memberUid); } /* Save gidNumber for later use */ if (isset($this->attrs['gidNumber'])){ $this->saved_gidNumber= $this->attrs['gidNumber'][0]; } /* Is a samba group? */ if (isset($this->attrs['objectClass'])){ if (array_search ('sambaGroupMapping', $this->attrs['objectClass']) == FALSE ){ $this->smbgroup= FALSE; } else { $this->smbgroup= TRUE; if (isset($this->attrs['sambaSID'])){ $this->sambaSID= $this->attrs['sambaSID'][0]; } } if (array_search ('goFonPickupGroup', $this->attrs['objectClass']) == FALSE ){ $this->fon_group= FALSE; } else { $this->fon_group= TRUE; } if (array_search ('nagiosContactGroup', $this->attrs['objectClass']) == FALSE ){ $this->nagios_group= FALSE; } else { $this->nagios_group= TRUE; } } /* Set mail flag */ if (isset($this->attrs['objectClass']) && in_array_strict('gosaMailAccount', $this->attrs['objectClass'])){ $this->has_mailAccount= TRUE; } /* Get samba Domain in case of samba 3 */ if ($this->sambaSID != ""){ $this->SID= preg_replace ("/-[^-]+$/", "", $this->sambaSID); $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search ("(&(objectClass=sambaDomain)(sambaSID=$this->SID))",array("sambaAlgorithmicRidBase")); if ($ldap->count() != 0){ $attrs= $ldap->fetch(); if(isset($attrs['sambaAlgorithmicRidBase'])){ $this->ridBase= $attrs['sambaAlgorithmicRidBase'][0]; } else { $this->ridBase= $this->config->get_cfg_value("core","sambaRidBase"); } /* Get domain name for SID */ $this->sambaDomainName= "DEFAULT"; foreach ($this->config->data['SERVERS']['SAMBA'] as $key => $val){ if ($val['SID'] == $this->SID){ $this->sambaDomainName= $key; break; } } } else { if ($this->config->get_cfg_value("core","sambaRidBase") != ""){ $this->sambaDomainName= "DEFAULT"; $this->ridBase= $this->config->get_cfg_value("core","sambaRidBase"); $this->SID= $this->config->get_cfg_value("core","sambaSID"); } else { msg_dialog::display(_("Configuration error"), _("Cannot find group SID in your configuration!"), ERROR_DIALOG); } } /* Get group type */ $this->groupType= (int)substr(strrchr($this->sambaSID, "-"), 1); if ($this->groupType < 500 || $this->groupType > 553){ $this->groupType= 0; } $this->oldgroupType= $this->groupType; } if ($this->dn == "new"){ if(session::is_set('CurrentMainBase')){ $this->base = session::get('CurrentMainBase'); }else{ $ui= get_userinfo(); $this->base= dn2base($ui->dn); } } else { /* Get object base */ $this->base =preg_replace ("/^[^,]+,".preg_quote(get_groups_ou(), '/')."/i","",$this->dn); } $this->orig_base = $this->base; /* This is always an account */ $this->is_account= TRUE; /* Instanciate base selector */ $this->baseSelector= new baseSelector($this->get_allowed_bases(), $this->base); $this->baseSelector->setSubmitButton(false); $this->baseSelector->setHeight(300); $this->baseSelector->update(true); // Prepare lists $this->memberList = new sortableListing(); $this->memberList->setDeleteable(true); $this->memberList->setInstantDelete(false); $this->memberList->setEditable(false); $this->memberList->setWidth("100%"); $this->memberList->setHeight("300px"); $this->memberList->setHeader(array('~',_("Given name"),_("Surname"),_("UID"))); $this->memberList->setColspecs(array('20px','*','*','*','20px')); $this->memberList->setDefaultSortColumn(1); $this->reload(TRUE); } function execute() { /* Call parent execute */ plugin::execute(); /* Log view */ if($this->is_account && !$this->view_logged){ $this->view_logged = TRUE; new log("view","groups/".get_class($this),$this->dn); } /* Do we represent a valid group? */ if (!$this->is_account && $this->parent === NULL){ $display= "\"\" ".msgPool::noValidExtension().""; return ($display); } // Act on list events foreach(array('memberList','commonList','partialList') as $list){ // Check if list is available, depends on multi- or sinlge- group editing. if($this->$list){ $this->$list->save_object(); $action = $this->$list->getAction(); if($action['action'] == 'delete' && preg_match("/w/",$this->getacl("memberUid"))){ foreach ($action['targets'] as $id){ $value = $this->$list->getKey($id); unset ($this->members["$value"]); $this->removeUser($value); } $this->reload(); } } } /* Add objects? */ if (isset($_POST["edit_membership"]) && preg_match("/w/",$this->getacl("memberUid"))){ $this->userSelect= new userSelect($this->config, get_userinfo()); } /* Add objects finished? */ if (isset($_POST["add_users_cancel"])){ $this->userSelect= NULL; } /* Add user to group */ if (isset($_POST['add_users_finish']) && $this->userSelect){ $users = $this->userSelect->detectPostActions(); if(isset($users['targets'])){ $headpage = $this->userSelect->getHeadpage(); foreach($users['targets'] as $dn){ $attrs = $headpage->getEntry($dn); $value = $attrs['uid'][0]; $this->addUser($value); $this->members["$value"]= $this->allusers[$value]; $this->reload(); } } $this->userSelect= NULL; } $smarty= get_smarty(); // Handle trust mode dialog $this->dialog = FALSE; $trustModeDialog = $this->trustModeDialog->execute(); if($this->trustModeDialog->trustSelect){ $this->dialog = TRUE; return($trustModeDialog); } $smarty->assign("trustModeDialog" , $trustModeDialog); $smarty->assign("nagios", $this->config->pluginEnabled("nagiosAccount") && class_available("nagiosAccount")); $smarty->assign("pickupGroup", $this->config->pluginEnabled("phoneAccount") && class_available("phoneAccount")); /* Manage object add dialog */ if ($this->userSelect){ $this->dialog = TRUE; return($this->userSelect->execute()); } /* Create base acls */ $smarty->assign("base", $this->baseSelector->render()); $domains= array(); foreach($this->config->data['SERVERS']['SAMBA'] as $name => $content){ $domains[$name]= $name; } $smarty->assign("sambaDomains", set_post($domains)); $smarty->assign("sambaDomainName", set_post($this->sambaDomainName)); $groupTypes= array(0 => _("Samba group"), 512 => _("Domain administrators"), 513 => _("Domain users"), 514 => _("Domain guests")); /* Don't loose special groups! If not key'ed above, add it to the combo box... */ if ($this->groupType >= 500 && $this->groupType <= 553 && !isset($groupTypes[$this->groupType])){ $groupTypes[$this->groupType]= sprintf(_("Special group (%d)"), $this->groupType); } $smarty->assign("groupTypes", set_post($groupTypes)); $smarty->assign("groupType", set_post($this->groupType)); /* Members and users */ if(!$this->multiple_support_active){ $this->memberList->setAcl($this->getacl("memberUid")); $data = $lData = array(); foreach($this->members as $uid => $member){ $data[$uid] = $member; $givenName = $sn = _("Unknown"); if(isset($member['sn']) && isset($member['sn'][0])) $sn = $member['sn'][0]; if(isset($member['givenName']) && isset($member['givenName'][0])) $givenName = $member['givenName'][0]; $image = image('images/false.png'); if(isset($member['sn'])){ $image = image('plugins/users/images/select_user.png'); } $lData[$uid] = array('data' => array($image,$sn, $givenName, $uid)); } $this->memberList->setListData($data,$lData); $bool = $this->isRestrictedByDynGroup(); $this->memberList->setDeleteable(!$bool); $this->memberList->update(); $smarty->assign("memberList", $this->memberList->render()); }else{ $this->commonList->setAcl($this->getacl("memberUid")); $this->partialList->setAcl($this->getacl("memberUid")); $data = $lData = array(); foreach($this->memberUid as $uid => $member){ $member = $this->members[$member]; $data[$uid] = $member; $givenName = $sn = _("Unknown"); if(isset($member['sn'][0])) $sn = $member['sn'][0]; if(isset($member['givenName'][0])) $givenName = $member['givenName'][0]; $image = image('images/false.png'); if(isset($member['sn'])){ $image = image('plugins/users/images/select_user.png'); } $lData[$uid] = array('data' => array($image,$sn, $givenName, $uid)); } $this->commonList->setListData($data,$lData); $this->commonList->update(); $smarty->assign("commonList", $this->commonList->render()); $data = $lData = array(); foreach($this->memberUid_used_by_some as $uid => $member){ $member = (isset($this->members[$member])) ? $this->members[$member] : NULL; $data[$uid] = $member; $givenName = $sn = _("Unknown"); if(isset($member['sn']) && isset($member['sn'][0])) $sn = $member['sn'][0]; if(isset($member['givenName'][0]) && isset($member['givenName'][0])) $givenName = $member['givenName'][0]; $image = image('images/false.png'); if(isset($member['sn'])){ $image = image('plugins/users/images/select_user.png'); } $lData[$uid] = array('data' => array($image,$sn, $givenName, $uid)); } $this->partialList->setListData($data,$lData); $this->partialList->update(); $smarty->assign("partialList", $this->partialList->render()); } /* Checkboxes */ foreach (array("force_gid", "smbgroup") as $val){ if ($this->$val == "1"){ $smarty->assign("$val", "checked"); } else { $smarty->assign("$val", ""); } } if ($this->force_gid != "1"){ $smarty->assign("forceMode", "disabled"); }else{ $smarty->assign("forceMode", ""); } if ($this->fon_group){ $smarty->assign("fon_group", "checked"); } else { $smarty->assign("fon_group", ""); } if ($this->nagios_group){ $smarty->assign("nagios_group", "checked"); } else { $smarty->assign("nagios_group", ""); } /* Fields */ foreach (array("cn", "description", "gidNumber") as $val){ $smarty->assign("$val", set_post($this->$val)); } $tmp = $this->plInfo(); foreach($tmp['plProvidedAcls'] as $name => $translation){ $smarty->assign($name."ACL",$this->getacl($name)); } if($this->acl_is_writeable("base")){ $smarty->assign("baseSelect",true); }else{ $smarty->assign("baseSelect",false); } /* Multiple edit handling */ $smarty->assign("multiple_support",$this->multiple_support_active); foreach($this->attributes as $val){ if(in_array_strict($val,$this->multi_boxes)){ $smarty->assign("use_".$val,TRUE); }else{ $smarty->assign("use_".$val,FALSE); } } foreach(array("base","smbgroup","groupType","sambaDomainName","fon_group","nagios_group") as $val){ if(in_array_strict($val,$this->multi_boxes)){ $smarty->assign("use_".$val,TRUE); }else{ $smarty->assign("use_".$val,FALSE); } } $bool = $this->isRestrictedByDynGroup(); $smarty->assign("restrictedByDynGroup", $bool); if($bool){ $smarty->assign("memberUidACL", preg_replace("/[^r]/","",$this->getacl('memberUid'))); } return($smarty->fetch (get_template_path('generic.tpl', TRUE))); } function isRestrictedByDynGroup() { $bool = FALSE; if(isset($this->parent->by_object['DynamicLdapGroup'])){ $bool = $this->parent->by_object['DynamicLdapGroup']->isAttributeDynamic('memberUid') || $this->parent->by_object['DynamicLdapGroup']->isAttributeDynamic('member'); } return($bool); } function addUser($uid) { /* In mutliple edit we have to handle two arrays. * memberUid : Containing users used in all groups * memberUid_used_by_some : Those which are not used in all groups * So we have to remove the given $uid from the ..used_by_some array first. */ if($this->multiple_support_active){ if(isset($this->memberUid_used_by_some[$uid])){ unset($this->memberUid_used_by_some[$uid]); } } /* Ensure that the requested object is known to the group class */ if(!isset($this->dnMapping[$uid])){ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=gosaAccount)(uid=".$uid."))",array("dn", "uid","sn","givenName")); if($ldap->count() == 0 ){ msg_dialog::display(_("Error"), sprintf(_("Adding UID '%s' to group '%s' failed: cannot find user object!"), $uid,$this->cn), ERROR_DIALOG); return; }elseif($ldap->count() >= 2){ msg_dialog::display(_("Error"), sprintf(_("Add UID '%s' to group '%s' failed: UID is used more than once!"), $uid,$this->cn), ERROR_DIALOG); return; }else{ while($attrs = $ldap->fetch()){ $this->dnMapping[$attrs['uid'][0]] = $attrs['dn']; $this->members[$attrs['uid'][0]] = $attrs; $this->allusers[$attrs['uid'][0]]= $attrs; } } } $this->memberUid[$uid]= $uid; $this->reload(); } function removeUser($uid) { $temp= array(); if(isset($this->memberUid[$uid])){ unset($this->memberUid[$uid]); } /* We have two array contianing group members in multiple edit. * this->memberUid : Groups used by all currently edited groups * this->memberUid_used_by_some: Used by some * So we have to remove the specified uid from both arrays. */ if($this->multiple_support_active){ if(isset($this->memberUid_used_by_some[$uid])){ unset($this->memberUid_used_by_some[$uid]); } } } /* Reload data */ function reload($silent = FALSE) { /* Prepare ldap link */ $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); /* Resolve still unresolved memberuids to fill the list with sn/giveName attributes (Store gathered sn/givenName informations in $this->allusers too, to be prepared when adding/deleting users) */ $filter = ""; // Merge in partial uids in multiple edit $allUids = array_keys($this->memberUid); if($this->multiple_support_active) { $allUids = array_merge($allUids, array_keys($this->memberUid_used_by_some)); } // Do not request data for users we've already fetched before. foreach($allUids as $key => $uid){ if(isset($this->dnMapping[$uid])) unset($allUids[$key]); } $allUids = array_values($allUids); // To resolve the usernames out of the 'uid' we've to perform ldap queries. // To keep the amount of queries as short as possible, we combine the query // for 'sn','givenName','..' for serveral users in one single query: // (|(uid=hans)(uid=peter)(uid=hubert)(..)) // // Unfortunately there is a filter length limit which causes the query to be invalid, // we've to split these huge query again into shorter query strings. // // maxPerRound specifies the amount of queries we can combine into a // single query. $maxPerRound = $this->config->get_cfg_value("core","ldapFilterNestingLimit"); if( $maxPerRound == "" ) { $maxPerRound = count($allUids); } for ( $added = 0; $added < count($allUids); $added += $maxPerRound ) { // First build the query.... $start = $added; $end = $added + $maxPerRound; $filter = ""; for ( $done = $start; $done < $end; $done++ ) { if(!isset($allUids[$done])) break; $value = $allUids[$done]; $filter .= "(uid=".normalizeLdap($value).")"; } // Retrieve the data to LDAP $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=gosaAccount)(|".$filter."))",array("dn", "uid","sn","givenName")); while( $attrs = $ldap->fetch() ) { $this->dnMapping[$attrs['uid'][0]] = $attrs['dn']; $this->members[$attrs['uid'][0]] = $attrs; $this->allusers[$attrs['uid'][0]]= $attrs; } } /* check if all uids are resolved */ foreach ($this->memberUid as $value){ if(!isset($this->members[$value])){ $this->members[$value] = ""; } } } /* Create display name, this was used so often that it is excluded into a seperate function */ function createResultName($attrs) { if (isset($attrs["givenName"][0]) && isset($attrs["sn"][0])){ $ret = $attrs["sn"][0].", ".$attrs["givenName"][0]." [".$attrs["uid"][0]."]"; } else { $ret= $attrs['uid'][0]; } return($ret); } function remove_from_parent() { plugin::remove_from_parent(); $ldap= $this->config->get_ldap_link(); $ldap->rmdir($this->dn); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); } new log("remove","groups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); /* Delete references to object groups */ $ldap->cd ($this->config->current['BASE']); $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); while ($ldap->fetch()){ $og= new ogroup($this->config, $ldap->getDN()); unset($og->member[$this->dn]); $og->save (); } /* Remove ACL dependencies too, */ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=gosaAcl)(gosaAclEntry=*".base64_encode($this->dn)."*))",array("gosaAclEntry","dn")); while($attrs = $ldap->fetch()){ $acl = new acl($this->config,$this->parent,$attrs['dn']); foreach($acl->gosaAclEntry as $id => $entry){ foreach($entry['members'] as $m_id => $member){ if($m_id == "G:".$this->dn || $m_id == "U:".$this->dn){ unset($acl->gosaAclEntry[$id]['members'][$m_id]); gosa_log("modify","groups/acl",$attrs['dn'],array(),sprintf("Removed acl for %s on object %s.",$this->dn,$attrs['dn'])); } } } $acl->save(); } /* Remove ACL dependencies, too */ acl::remove_acl_for($this->dn); /* Send signal to the world that we've done */ $this->handle_post_events("remove"); } /* Save data to object */ function save_object() { /* Save additional values for possible next step */ if (isset($_POST['groupedit'])){ /* Create a base backup and reset the base directly after calling plugin::save_object(); Base will be set seperatly a few lines below */ $base_tmp = $this->base; plugin::save_object(); $this->trustModeDialog->save_object(); $this->base = $base_tmp; /* Refresh base */ if ($this->acl_is_moveable($this->base)){ if (!$this->baseSelector->update()) { msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); } if ($this->base != $this->baseSelector->getBase()) { $this->base= $this->baseSelector->getBase(); $this->is_modified= TRUE; } } $this->force_gid= 0; /* Only reset sambagroup flag if we are able to write this flag */ if($this->acl_is_writeable("sambaGroupType")){ $this->smbgroup = 0; } foreach (array( "force_gid" => "gidNumber", "smbgroup" => "sambaGroupType") as $val => $aclname) { if ($this->acl_is_writeable($aclname) && isset($_POST["$val"])){ $this->$val= get_post($val); } } /* Save sambaDomain attribute */ if ($this->acl_is_writeable("sambaDomainName") && isset ($_POST['sambaDomainName'])){ $this->sambaDomainName= get_post('sambaDomainName'); $this->groupType= get_post('groupType'); } /* Save fon attribute */ if ($this->acl_is_writeable("fonGroup")){ if (isset ($_POST['fon_group'])){ $this->fon_group= TRUE; } else { $this->fon_group= FALSE; } } if ($this->acl_is_writeable("nagiosGroup")){ if (isset ($_POST['nagios_group'])){ $this->nagios_group= TRUE; } else { $this->nagios_group= FALSE; } } } } /* Save to LDAP */ function save() { /* ID handling */ if ($this->force_gid == 0){ if ($this->saved_gidNumber != ""){ $this->gidNumber= $this->saved_gidNumber; } else { /* Calculate new, lock uids */ $wait= 10; while (get_lock("gidnumber") != ""){ sleep (1); /* timed out? */ if ($wait-- == 0){ break; } } add_lock ("gidnumber", "gosa"); $this->gidNumber= get_next_id("gidNumber", $this->dn); } } plugin::save(); /* Remove objectClass for samba/phone support */ $tmp= array(); for ($i= 0; $iattrs["objectClass"]); $i++){ if ($this->attrs['objectClass'][$i] != 'sambaGroupMapping' && $this->attrs['objectClass'][$i] != 'sambaIdmapEntry' && $this->attrs['objectClass'][$i] != 'goFonPickupGroup' && $this->attrs['objectClass'][$i] != 'nagiosContactGroup'){ $tmp[]= $this->attrs['objectClass'][$i]; } } $this->attrs['objectClass']= $tmp; $ldap= $this->config->get_ldap_link(); /* Add samba group functionality */ if ($this->smbgroup){ /* Fixed undefined index ... */ $this->SID = $this->ridBase = ""; if(isset($this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName]['SID'])){ $this->SID = $this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName]['SID']; }else{ msg_dialog::display(_("Error"), sprintf(_("Cannot find any SID for '%s'!"), $this->sambaDomainName), ERROR_DIALOG); } if(isset($this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName]['RIDBASE'])){ $this->ridBase= $this->config->data['SERVERS']['SAMBA'][$this->sambaDomainName]['RIDBASE']; }else{ msg_dialog::display(_("Error"), sprintf(_("Cannot find any RIDBASE for '%s'!"), $this->sambaDomainName), ERROR_DIALOG); } $this->attrs['objectClass'][]= 'sambaGroupMapping'; $this->attrs['sambaGroupType']= "2"; /* Check if we need to create a special entry */ if ($this->groupType == 0){ if ($this->sambaSID == "" || $this->oldgroupType != $this->groupType){ $sid = $this->getSambaSID(); $this->attrs['sambaSID']= $sid; $this->sambaSID= $sid; } } else { $this->attrs['sambaSID']=$this->SID."-".$this->groupType; } /* User wants me to fake the idMappings? This is useful for making winbind resolve the group names in a reasonable amount of time in combination with larger databases. */ if ($this->config->boolValueIsTrue("core","sambaIdMapping")){ $this->attrs['objectClass'][]= "sambaIdmapEntry"; } } /* Add phone functionality */ if ($this->fon_group){ $this->attrs['objectClass'][]= "goFonPickupGroup"; } /* Add nagios functionality */ if ($this->nagios_group){ $this->attrs['objectClass'][]= "nagiosContactGroup"; } /* Take members array */ if (!$this->isRestrictedByDynGroup() && count ($this->memberUid)){ $this->attrs['memberUid']= array_values(array_unique($this->memberUid)); } /* New accounts need proper 'dn', propagate it to remaining objects */ if ($this->dn == 'new'){ $this->dn= 'cn='.$this->cn.','.get_groups_ou().$this->base; } /* Add member dn's for RFC2307bis Support */ if ($this->rfc2307bis){ $this->attrs['member'] = array(); if (count($this->memberUid)){ foreach($this->attrs['memberUid'] as $uid) { if(isset($this->dnMapping[$uid])){ $this->attrs['member'][]= $this->dnMapping[$uid]; } } } else { $this->attrs['member'][]= $this->dn; } } /* Save data. Using 'modify' implies that the entry is already present, use 'add' for new entries. So do a check first... */ $ldap->cat ($this->dn, array('dn')); if ($ldap->fetch()){ /* Modify needs array() to remove values :-( */ if (!count ($this->memberUid)){ $this->attrs['memberUid']= array(); } if (!$this->smbgroup){ $this->attrs['sambaGroupType']= array(); $this->attrs['sambaSID']= array(); } $mode= "modify"; } else { $mode= "add"; $ldap->cd($this->config->current['BASE']); $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); } /* Check generated gidNumber, it may be used by another group. */ if($this->gidNumber != ""){ $ldap->cd($this->config->current['BASE']); $ldap->search("(&(!(cn=".$this->orig_cn."))(objectClass=posixGroup)(gidNumber=".$this->gidNumber."))",array("cn")); if($ldap->count()){ $cns = ""; while($attrs = $ldap->fetch()){ $cns .= $attrs['cn'][0].", "; } $cns = rtrim($cns,", "); msg_dialog::display(_("Warning"),sprintf(_("The gidNumber '%s' is already in use by %s!"),$this->gidNumber,$cns) , WARNING_DIALOG ); } } /* Write back to ldap */ $ldap->cd($this->dn); $this->cleanup(); $ldap->$mode($this->attrs); /* Remove ACL dependencies too, */ if($this->dn != $this->orig_dn && $this->orig_dn != "new"){ $tmp = new acl($this->config,$this->parent,$this->dn); $tmp->update_acl_membership($this->orig_dn,$this->dn); } if($this->initially_was_account){ new log("modify","groups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); }else{ new log("create","groups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); } $ret= 0; if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); $ret= 1; } $this->trustModeDialog->dn = $this->dn; $this->trustModeDialog->save(); /* Remove uid lock */ del_lock ("gidnumber"); /* Post that we've done*/ $this->handle_post_events($mode); return ($ret); } function check() { /* Call common method to give check the hook */ $message= plugin::check(); /* Permissions for that base? */ if ($this->base != ""){ $new_dn= 'cn='.$this->cn.','.get_groups_ou().$this->base; } else { $new_dn= $this->dn; } /* must: cn */ if ($this->cn == "" && $this->acl_is_writeable("cn")){ $message[]= msgPool::required(_("Name")); } // Check if a wrong base was supplied if(!$this->baseSelector->checkLastBaseUpdate()){ $message[]= msgPool::check_base();; } /* Check for valid input */ if (!tests::is_uid($this->cn)){ if (strict_uid_mode()){ $message[]= msgPool::invalid(_("Name"), $this->cn, "/[a-z0-9_-]/"); } else { $message[]= msgPool::invalid(_("Name"), $this->cn, "/[a-z0-9 _.-]/i"); } } // Check if a wrong base was supplied if(!$this->baseSelector->checkLastBaseUpdate()){ $message[]= msgPool::check_base();; } if($this->allowGroupsWithSameNameInOtherSubtrees == true){ /* Check for used 'cn' */ $ldap= $this->config->get_ldap_link(); if(($this->cn != $this->orig_cn) || ($this->orig_dn == "new")){ $ldap->cd(get_groups_ou().$this->base); $ldap->ls("(&(|(objectClass=gosaGroupOfNames)(objectClass=posixGroup))(cn=$this->cn))",get_groups_ou().$this->base,array("cn")); if ($ldap->count() != 0){ $message[]= msgPool::duplicated(_("Name")); } } }else{ /* Check for used 'cn' */ $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search("(&(|(objectClass=gosaGroupOfNames)(objectClass=posixGroup))(cn=$this->cn))",array("cn")); if ($ldap->count() != 0){ /* New entry? */ if ($this->dn == 'new'){ $message[]= msgPool::duplicated(_("Name")); } /* Moved? */ elseif ($new_dn != $this->orig_dn){ $ldap->fetch(); if ($ldap->getDN() != $this->orig_dn){ $message[]= msgPool::duplicated(_("Name")); } } } } /* Check ID */ if ($this->force_gid == "1"){ if (!tests::is_id($this->gidNumber)){ $message[]= msgPool::invalid(_("GID"), $this->gidNumber, "/[0-9]/"); } else { if ($this->gidNumber < $this->config->get_cfg_value("core","minId")){ $message[]= msgPool::toosmall(_("GID"), $this->config->get_cfg_value("core","minId")); } } } /* Check if we are allowed to create or move this object */ if(!$this->orig_dn == "new" || $this->orig_base != $this->base || $this->cn != $this->orig_cn){ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[] = msgPool::permCreate(); }elseif($this->orig_dn != "new" && !$this->acl_is_moveable($this->base)){ $message[] = msgPool::permMove(); } } return ($message); } function getCopyDialog() { $vars = array("cn"); if($this ->force_gid){ $used = " checked "; $dis = ""; }else{ $used = ""; $dis = " disabled "; } $smarty = get_smarty(); $smarty->assign("used", set_post($used)); $smarty->assign("dis" , set_post($dis)); $smarty->assign("cn" , set_post($this->cn)); $smarty->assign("gidNumber",set_post($this->gidNumber)); $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE)); $ret = array(); $ret['string'] = $str; $ret['status'] = ""; return($ret); } function saveCopyDialog() { if(isset($_POST['cn'])){ $this->cn = get_post('cn'); } if(isset($_POST['force_gid'])){ $this->force_gid = 1; $this->gidNumber= get_post('gidNumber'); }else{ $this->force_gid = 0; $this->gidNumber = false; } } /* Return plugin informations for acl handling */ static function plInfo() { return (array( "plShortName" => _("Generic"), "plDescription" => _("Generic group settings"), "plSelfModify" => FALSE, "plDepends" => array(), "plPriority" => 0, "plSection" => array("administration"), "plCategory" => array("groups" => array("objectClass" => "posixGroup", "description" => _("Groups"))), "plProperties" => array( array( "name" => "ogroupRDN", "type" => "rdn", "default" => "ou=groups,", "description" => _("RDN for object group storage."), "check" => "gosaProperty::isRdn", "migrate" => "migrate_ogroupRDN", "group" => "plugin", "mandatory" => FALSE)), "plProvidedAcls" => array( "cn" => _("Name"), "description" => _("Description"), "base" => _("Base"), "gidNumber" => _("GID"), "sambaGroupType" => _("Samba group type"), "sambaDomainName" => _("Samba domain name"), "accessTo" => _("System trust"), "fonGroup" => _("Phone pickup group"), "nagiosGroup" => _("Nagios group"), "memberUid" => _("Group member")) )); } function multiple_save_object() { if(isset($_POST['group_mulitple_edit'])){ /* Create a base backup and reset the base directly after calling plugin::save_object(); Base will be set seperatly a few lines below */ $base_tmp = $this->base; plugin::multiple_save_object(); plugin::save_object(); $this->trustModeDialog->multiple_save_object(); $this->base = $base_tmp; foreach(array("base","smbgroup","groupType","sambaDomainName","fon_group","nagios_group") as $attr){ if(isset($_POST['use_'.$attr])){ $this->multi_boxes[] = $attr; } } /* Refresh base */ if ($this->acl_is_moveable($this->base)){ if (!$this->baseSelector->update()) { msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); } if ($this->base != $this->baseSelector->getBase()) { $this->base= $this->baseSelector->getBase(); $this->is_modified= TRUE; } } foreach (array( "smbgroup" => "sambaGroupType" ,"nagios_group" => "nagiosGroup") as $val => $aclname) { if ($this->acl_is_writeable($aclname)){ if(isset($_POST["$val"])){ $this->$val= TRUE; }else{ $this->$val= FALSE; } } } /* Save sambaDomain attribute */ if ($this->acl_is_writeable("sambaDomainName") && isset ($_POST['sambaDomainName'])){ $this->sambaDomainName= get_post('sambaDomainName'); $this->groupType= get_post('groupType'); } /* Save fon attribute */ if ($this->acl_is_writeable("fonGroup")){ if (isset ($_POST['fon_group'])){ $this->fon_group= TRUE; } else { $this->fon_group= FALSE; } } } } function get_multi_edit_values() { $ret = plugin::get_multi_edit_values(); $ret = array_merge($ret,$this->trustModeDialog->get_multi_edit_values()); foreach(array("base","smbgroup","groupType","sambaDomainName","fon_group","nagios_group") as $attr){ if(in_array_strict($attr,$this->multi_boxes)){ $ret[$attr] = $this->$attr; } } $ret['memberUid'] = $this->memberUid; $ret['memberUid_used_by_some'] = $this->memberUid_used_by_some; return($ret); } function multiple_execute() { return($this->execute()); } /* Initialize plugin with given atribute arrays */ function init_multiple_support($attrs,$all) { plugin::init_multiple_support($attrs,$all); $this->trustModeDialog->init_multiple_support($attrs,$all); $this->memberUid = array(); $this->memberUid_used_by_some = array(); if (isset($attrs['memberUid'])){ for ($i= 0; $i<$attrs['memberUid']['count']; $i++){ $this->memberUid[$attrs['memberUid'][$i]]= $attrs['memberUid'][$i]; } ksort($this->memberUid); } if (isset($all['memberUid'])){ for ($i= 0; $i<$all['memberUid']['count']; $i++){ if(!in_array_strict($all['memberUid'][$i],$this->memberUid)){ $this->memberUid_used_by_some[$all['memberUid'][$i]]= $all['memberUid'][$i]; } } ksort($this->memberUid_used_by_some); } $this->reload(TRUE); // We've two lists in mutliple support // - one which represents those users which are part of ALL groups. // - ond one which represents those users which are only part of SOME groups. $this->commonList = new sortableListing(); $this->commonList->setDeleteable(true); $this->commonList->setInstantDelete(false); $this->commonList->setEditable(false); $this->commonList->setWidth("100%"); $this->commonList->setHeight("120px"); $this->commonList->setHeader(array('~',_("Given name"),_("Surname"),_("UID"))); $this->commonList->setColspecs(array('20px','*','*','*','20px')); $this->commonList->setDefaultSortColumn(1); $this->partialList = new sortableListing(); $this->partialList->setDeleteable(true); $this->partialList->setInstantDelete(false); $this->partialList->setEditable(false); $this->partialList->setWidth("100%"); $this->partialList->setHeight("120px"); $this->partialList->setHeader(array('~',_("Given name"),_("Surname"),_("UID"))); $this->partialList->setColspecs(array('20px','*','*','*','20px')); $this->partialList->setDefaultSortColumn(1); } function PrepareForCopyPaste($source) { plugin::PrepareForCopyPaste($source); $this->trustModeDialog->PrepareForCopyPaste($source); /* Get samba Domain in case of samba 3 */ if ($this->sambaSID != ""){ $this->SID= preg_replace ("/-[^-]+$/", "", $this->sambaSID); $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search ("(&(objectClass=sambaDomain)(sambaSID=$this->SID))",array("sambaAlgorithmicRidBase")); if ($ldap->count() != 0){ $attrs= $ldap->fetch(); if(isset($attrs['sambaAlgorithmicRidBase'])){ $this->ridBase= $attrs['sambaAlgorithmicRidBase'][0]; } else { $this->ridBase= $this->config->get_cfg_value("core","sambaRidBase"); } /* Get domain name for SID */ $this->sambaDomainName= "DEFAULT"; foreach ($this->config->data['SERVERS']['SAMBA'] as $key => $val){ if ($val['SID'] == $this->SID){ $this->sambaDomainName= $key; break; } } } else { if ($this->config->get_cfg_value("core","sambaRidBase") != ""){ $this->sambaDomainName= "DEFAULT"; $this->ridBase= $this->config->get_cfg_value("core","sambaRidBase"); $this->SID= $this->config->get_cfg_value("core","sambaSID"); } else { msg_dialog::display(_("Configuration error"), _("Cannot find group SID in your configuration!"), ERROR_DIALOG); } } /* Get group type */ $this->groupType= (int)substr(strrchr($this->sambaSID, "-"), 1); if ($this->groupType < 500 || $this->groupType > 553){ $this->groupType= 0; } $this->oldgroupType= $this->groupType; } // Detect samba groups and adapt its values. $this->smbgroup = in_array_strict('sambaGroupMapping', $source['objectClass']); if ($this->smbgroup) { $this->sambaSID = $this->getSambaSID(); } $this->memberUid = array(); if(isset($source['memberUid'])){ for($i = 0 ; $i < $source['memberUid']['count']; $i ++){ $this->memberUid[] = $source['memberUid'][$i]; } } } function set_acl_base($base) { plugin::set_acl_base($base); $this->trustModeDialog->set_acl_base($base); } /*! \brief Enables multiple support for this plugin */ function enable_multiple_support() { plugin::enable_multiple_support(); $this->trustModeDialog->enable_multiple_support(); } function set_multi_edit_values($attrs) { $users = array(); /* Update groupMembership, keep optinal group */ foreach($attrs['memberUid_used_by_some'] as $uid){ if(in_array_strict($uid,$this->memberUid)){ $users[$uid] = $uid; } } /* Update groupMembership, add forced groups */ foreach($attrs['memberUid'] as $uid){ $users[$uid] = $uid; } plugin::set_multi_edit_values($attrs); $this->trustModeDialog->set_multi_edit_values($attrs); $this->memberUid = $users; } /*! \brief Get a new SambaSID for a group */ function getSambaSID() { $ldap = $this->config->get_ldap_link(); $gidNumber= $this->gidNumber; while(TRUE){ $sid= $this->SID."-".($gidNumber*2 + $this->ridBase+1); $ldap->cd($this->config->current['BASE']); $ldap->search("(sambaSID=$sid)",array("sambaSID")); if ($ldap->count() == 0){ break; } $gidNumber++; } return $sid; } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/groups/singleUserSelect/0000755000175000017500000000000011752422552021414 5ustar mikemikegosa-core-2.7.4/plugins/admin/groups/singleUserSelect/singleUser-filter.xml0000644000175000017500000000141711363325037025542 0ustar mikemike groups true default auto dn objectClass cn sn givenName uid description default LDAP (&(objectClass=gosaAccount)(cn=$)) cn 0.5 3 gosa-core-2.7.4/plugins/admin/groups/singleUserSelect/singleUser-list.tpl0000644000175000017500000000127111362777033025233 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/admin/groups/singleUserSelect/class_singleUserSelect.inc0000644000175000017500000000415411424252327026555 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array(get_ou("core", "userRDN")); // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("singleUser-filter.xml", true, dirname(__FILE__))); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("singleUser-list.xml", true, dirname(__FILE__))); $headpage->setFilter($filter); parent::__construct($config, $ui, "users", $headpage); } // Inject user actions function detectPostActions() { $action = management::detectPostActions(); if(isset($_POST['add_users_save'])) $action['action'] = "userSelected"; return($action);; } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/groups/singleUserSelect/singleUser-list.xml0000644000175000017500000000325611362777033025241 0ustar mikemike true false true true 1 gosaAccount users user plugins/users/images/select_user.png |20px;c|||| %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 1 %{filter:objectType(dn,objectClass)} givenName string %{givenName} true sn string %{sn} true uid string %{uid} true
    gosa-core-2.7.4/plugins/admin/groups/main.inc0000644000175000017500000000341411450302224017541 0ustar mikemikeremove_lock(); } } /* Remove this plugin from session */ if ( $cleanup ){ session::un_set('groupManagement'); }else{ /* Create groupmanagement object on demand */ if (!session::is_set('groupManagement')){ $groupManagement= new groupManagement ($config, $ui); session::set('groupManagement',$groupManagement); } $groupManagement = session::get('groupManagement'); $display= $groupManagement->execute(); /* Reset requested? */ if (isset($_GET['reset']) && $_GET['reset'] == 1){ session::un_set ('groupManagement'); } /* Show and save dialog */ session::set('groupManagement',$groupManagement); } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/groups/group-filter.xml0000644000175000017500000000200611347632511021271 0ustar mikemike groups true auto default dn objectClass cn description default GroupLDAP (&(objectClass=posixGroup)(cn=$)) cn 0.5 3 default2 GroupLDAP (&(objectClass=posixGroup)(cn=$)) cn 0.5 3 gosa-core-2.7.4/plugins/admin/groups/migration/0000755000175000017500000000000011752422552020125 5ustar mikemikegosa-core-2.7.4/plugins/admin/groups/migration/class_migrate_groupRDN.inc0000644000175000017500000000021611424252323025205 0ustar mikemike gosa-core-2.7.4/plugins/admin/groups/class_groupManagement.inc0000644000175000017500000001754711424325206023155 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array(get_ou("core", "groupRDN")); // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("group-filter.xml", true)); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("group-list.xml", true)); $headpage->registerElementFilter("filterProperties", "groupManagement::filterProperties"); $headpage->setFilter($filter); // Add copy&paste and snapshot handler. if ($this->config->boolValueIsTrue("core", "copyPaste")){ $this->cpHandler = new CopyPasteHandler($this->config); } if($this->config->get_cfg_value("core","enableSnapshots") == "true"){ $this->snapHandler = new SnapshotHandler($this->config); } parent::__construct($config, $ui, "groups", $headpage); $this->registerAction("edit_group","editEntry"); $this->registerAction("edit_group_","editEntry"); $this->registerAction("edit_group__","editEntry"); $this->registerAction("edit_environment","editEntry"); $this->registerAction("edit_appgroup","editEntry"); $this->registerAction("edit_mailgroup","editEntry"); $this->registerAction("sendMessage", "sendMessage"); $this->registerAction("saveEventDialog", "saveEventDialog"); $this->registerAction("abortEventDialog", "closeDialogs"); } // Inject user actions function detectPostActions() { $action = management::detectPostActions(); if(isset($_POST['save_event_dialog'])) $action['action'] = "saveEventDialog"; if(isset($_POST['abort_event_dialog'])) $action['action'] = "abortEventDialog"; return($action); } /*! \brief Sends a message to a set of users using gosa-si events. */ function saveEventDialog() { $this->dialogObject->save_object(); $msgs = $this->dialogObject->check(); if(count($msgs)){ msg_dialog::displayChecks($msgs); }else{ $o_queue = new gosaSupportDaemon(); $o_queue->append($this->dialogObject); if($o_queue->is_error()){ msg_dialog::display(_("Infrastructure error"), msgPool::siError($o_queue->get_error()),ERROR_DIALOG); } $this->closeDialogs(); } } /*! \brief Sends a message to a set of users using gosa-si events. */ function sendMessage($action="",$target=array(),$all=array()) { $uids = array(); $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); foreach($target as $dn){ $ldap->cat($dn,array('cn')); if($ldap->count()){ $attrs = $ldap->fetch(); $uids[] = $attrs['cn'][0]; } } if(count($uids)){ $events = DaemonEvent::get_event_types(USER_EVENT); $event = "DaemonEvent_notify"; if(isset($events['BY_CLASS'][$event])){ $type = $events['BY_CLASS'][$event]; $this->dialogObject = new $type['CLASS_NAME']($this->config); $this->dialogObject->add_groups($uids); $this->dialogObject->set_type(SCHEDULED_EVENT); } } } function editEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { $str = management::editEntry($action,$target); if(preg_match("/^edit_/",$action)){ $tab = preg_replace("/^edit_([^_]*).*$/","\\1",$action); if(isset($this->tabObject->by_object[$tab])){ $this->tabObject->current = $tab; }else{ trigger_error("Unknown tab: ".$tab); } } if(!empty($str)) return($str); } static function filterProperties($row, $classes) { $result= ""; $map = array( "posixGroup" => array( "image" => "plugins/groups/images/select_group.png", "plugin" => "group", "alt" => _("POSIX"), "title" => _("Edit POSIX properties") ), "gosaMailAccount" => array( "image" => "plugins/groups/images/mail.png", "plugin" => "mailgroup", "alt" => _("Mail"), "title" => _("Edit mail properties") ), "sambaGroupMapping" => array( "image" => "plugins/groups/images/samba.png", "plugin" => "group_", "alt" => _("Samba"), "title" => _("Edit samba properties") ), "goFonPickupGroup" => array( "image" => "plugins/groups/images/asterisk.png", "plugin" => "group__", "alt" => _("Phone"), "title" => _("Edit phone properties") ), "gotoMenuGroup" => array( "image" => "plugins/groups/images/menu.png", "plugin" => "appgroup", "alt" => _("Menu"), "title" => _("Edit start menu properties") ), "gotoEnvironment" => array( "image" => "plugins/groups/images/environment.png", "plugin" => "environment", "alt" => _("Environment"), "title" => _("Edit environment properties") ) ); // Walk thru map foreach ($map as $oc => $properties) { if (in_array_ics($oc, $classes)) { $result.= image($properties['image'], 'listing_edit_'.$properties['plugin'].'_'.$row, $properties['title']); } else { $result.= image('images/empty.png'); } } return $result; } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/groups/class_filterGroupLDAP.inc0000644000175000017500000000337211424252310022751 0ustar mikemikeget_ldap_link(TRUE); $flag= ($scope == "sub")?GL_SUBSEARCH:0; $tmp= filterGroupLDAP::get_list($base, $filter, $attributes, $category, $objectStorage, $flag | GL_SIZELIMIT); // Sort out menu entries, but save info $index= 0; foreach ($tmp as $entry) { if (in_array_ics("posixGroup", $entry['objectClass'])) { $result[$index]= $entry; $dn2index[$entry['dn']]= $index; $index++; } else { foreach ($objectStorage as $storage) { $group= preg_replace("/^.*,([^,]+),".preg_quote("$storage$base")."$/", '$1', $entry['dn']); $group= "$group,$storage$base"; // The current group implementation has no multiple storage settings - so break here break; } $menu[$group]= true; } } // Move menu information to menu foreach ($menu as $dn => $dummy) { if(isset($dn2index[$dn])){ $result[$dn2index[$dn]]["objectClass"][]= "gotoMenuGroup"; } } return $result; } static function get_list($base, $filter, $attributes, $category, $objectStorage, $flags= GL_SUBSEARCH) { $filter= "(|(|(objectClass=gotoMenuEntry)(objectClass=gotoSubmenuEntry))$filter)"; return filterLDAP::get_list($base, $filter, $attributes, $category, $objectStorage, $flags); } } ?> gosa-core-2.7.4/plugins/admin/groups/userGroupSelect/0000755000175000017500000000000011752422552021267 5ustar mikemikegosa-core-2.7.4/plugins/admin/groups/userGroupSelect/selectUserGroup-list.tpl0000644000175000017500000000130511361070522026103 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/admin/groups/userGroupSelect/class_userGroupSelect.inc0000644000175000017500000000440311424252333026275 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array(get_ou("core", "userRDN"), get_ou("core", "groupRDN")); // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("selectUserGroup-filter.xml", true, dirname(__FILE__))); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("selectUserGroup-list.xml", true, dirname(__FILE__))); $headpage->setFilter($filter); parent::__construct($config, $ui, "object", $headpage); } function save() { $act = $this->detectPostActions(); $headpage = $this->getHeadpage(); if(!isset($act['targets'])) return(array()); $ret = array(); foreach($act['targets'] as $dn){ $ret[] = $headpage->getEntry($dn); } return($ret); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/groups/userGroupSelect/selectUserGroup-filter.xml0000644000175000017500000000153211473743053026432 0ustar mikemike users true default auto dn objectClass cn sn uid givenName description userPassword default LDAPBlacklist (&(|(objectClass=gosaAccount)(objectClass=posixGroup))(cn=$)) cn 0.5 3 gosa-core-2.7.4/plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml0000644000175000017500000000416311347630555026125 0ustar mikemike true false true true users 1 gosaAccount users user plugins/users/images/select_user.png posixGroup groups group plugins/groups/images/select_group.png |20px;c|||[200px] %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 1 %{filter:objectType(dn,objectClass)} cn string %{cn} true description string %{description} true uid string %{uid} true
    edit entry gosaAccount images/lists/edit.png
    gosa-core-2.7.4/plugins/admin/groups/group-list.xml0000644000175000017500000000647711347643463021007 0ustar mikemike true false true true groups 1 posixGroup groups group plugins/groups/images/select_group.png |20px;c|||120px|150px;r| %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 2 %{filter:objectType(dn,objectClass)} cn string %{filter:link(row,dn,"%s",cn)} true description string %{filter:link(row,dn,"%s",description)} true %{filter:filterProperties(row,objectClass)} %{filter:actions(dn,row,objectClass)}
    sub images/lists/element.png[new] new entry plugins/groups/images/select_group.png[new] separator edit entry images/lists/edit.png remove entry images/lists/trash.png sendMessage entry DaemonEvent_notify plugins/goto/images/notify.png exporter separator copypaste snapshot cp copypaste edit entry images/lists/edit.png snapshot snapshot remove entry images/lists/trash.png groups/group[d]
    gosa-core-2.7.4/plugins/admin/groups/generic.tpl0000644000175000017500000001404711604257055020277 0ustar mikemike{if $multiple_support} {/if}
    {if $multiple_support} {else} {/if} {if $multiple_support} {else} {/if} {if $pickupGroup == "true"} {/if} {if $nagios == "true"} {/if}
    {$must} {if $multiple_support} {else} {render acl=$cnACL} {/render} {/if}
    {render acl=$descriptionACL checkbox=$multiple_support checked=$use_description} {/render}
    {$must} {render acl=$baseACL checkbox=$multiple_support checked=$use_base} {$base} {/render}

    {render acl=$gidNumberACL} {/render}   {render acl=$gidNumberACL} {/render}
    {render acl=$sambaGroupTypeACL checkbox=$multiple_support checked=$use_smbgroup} {t}Select to create a samba conform group{/t} {/render}
    {render acl=$sambaGroupTypeACL checkbox=$multiple_support checked=$use_groupType} {/render}     {render acl=$sambaDomainNameACL checkbox=$multiple_support checked=$use_sambaDomainName} {/render}
    {render acl=$sambaGroupTypeACL} {/render} {render acl=$sambaGroupTypeACL} {/render}     {render acl=$sambaDomainNameACL} {/render}

    {render acl=$fonGroupACL checkbox=$multiple_support checked=$use_fon_group} {t}Members are in a phone pickup group{/t} {/render}

    {render acl=$nagiosGroupACL checkbox=$multiple_support checked=$use_nagios_group} {t}Members are in a Nagios group{/t} {/render}

    {$trustModeDialog}
     
    {if $restrictedByDynGroup} {t}The group members are part of a dyn-group and cannot be managed!{/t} {if $multiple_support} {render acl=$memberUidACL} {$commonList} {/render} {else} {render acl=$memberUidACL} {$memberList} {/render} {/if} {else} {if $multiple_support}

    {t}Common group members{/t}

    {render acl=$memberUidACL} {$commonList} {/render} {render acl=$memberUidACL} {/render}

    {t}Partial group members{/t}

    {render acl=$memberUidACL} {$partialList} {/render} {else}

    {t}Group members{/t}

    {render acl=$memberUidACL} {$memberList} {/render} {render acl=$memberUidACL} {/render} {/if} {/if}
    gosa-core-2.7.4/plugins/admin/departments/0000755000175000017500000000000011752422552017143 5ustar mikemikegosa-core-2.7.4/plugins/admin/departments/class_domain.inc0000644000175000017500000000733511471522016022274 0ustar mikemikeconfig->get_ldap_link(); $ldap->ls ("(&(dc=".$this->dc.")(objectClass=domain))", $this->base, array('dn')); if ($this->orig_dc == "new" && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } elseif ($this->orig_dn != $this->dn && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } /* All required fields are set? */ if ($this->dc == ""){ $message[]= msgPool::required(_("Name")); }elseif(tests::is_department_name_reserved($this->dc,$this->base)){ $message[]= msgPool::reserved(_("Name")); }elseif(preg_match ('/[^a-z0-9 \.,\-_]/i', $this->dc)){ $message[]= msgPool::invalid(_("Name"), $this->dc, "/[a-z0-9 \.,\-_]/i"); } /* Check description */ if ($this->description == ""){ $message[]= msgPool::required(_("Description")); } /* Check if we are allowed to create or move this object */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[] = msgPool::permCreate(); }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ $message[] = msgPool::permMove(); } return($message); } /* Return plugin informations for acl handling */ static function plInfo() { return (array("plShortName" => _("Domain Component"), "plDescription" => _("Domain Component"), "plSelfModify" => FALSE, "plPriority" => 4, "plDepends" => array(), "plSection" => array("administration"), "plCategory" => array("department"), "plProvidedAcls" => array( "dc" => _("Name"), "description" => _("Description"), "base" => _("Base"), "manager" => _("Manager"), "gosaUnitTag" => _("Administrative settings")) )); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/departments/dep-list.tpl0000644000175000017500000000102611352410421021370 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/admin/departments/class_filterDEPARTMENT.inc0000644000175000017500000000105111350165644023671 0ustar mikemikeget_ldap_link(TRUE); $result = array(); $flag= ($scope == "sub")?GL_SUBSEARCH:0; if(!($flag & GL_SUBSEARCH)){ $ldap->cat($base); $result[] = $ldap->fetch(); } $result= array_merge($result,filterLDAP::get_list($base, $filter, $attributes, $category, $objectStorage, $flag | GL_SIZELIMIT)); return $result; } } ?> gosa-core-2.7.4/plugins/admin/departments/class_dcObject.inc0000644000175000017500000000734711471522016022545 0ustar mikemikeconfig->get_ldap_link(); $ldap->ls ("(&(dc=".$this->dc.")(objectClass=dcObject))", $this->base, array('dn')); if ($this->orig_dc == "new" && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } elseif ($this->orig_dn != $this->dn && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } /* All required fields are set? */ if ($this->dc == ""){ $message[]= msgPool::required(_("Name")); }elseif(tests::is_department_name_reserved($this->dc,$this->base)){ $message[]= msgPool::reserved(_("Name")); }elseif(preg_match ('/[^a-z0-9 \.,\-_]/i', $this->dc)){ $message[]= msgPool::invalid(_("Name"), $this->dc, "/[a-z0-9 \.,\-_]/i"); } /* Check description */ if ($this->description == ""){ $message[]= msgPool::required(_("Description")); } /* Check if we are allowed to create or move this object */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[] = msgPool::permCreate(); }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ $message[] = msgPool::permMove(); } return($message); } /* Return plugin informations for acl handling */ static function plInfo() { return (array("plShortName" => _("Domain Component"), "plDescription" => _("Domain Component"), "plSelfModify" => FALSE, "plPriority" => 4, "plDepends" => array(), "plSection" => array("administration"), "plCategory" => array("department"), "plProvidedAcls" => array( "dc" => _("Name"), "description" => _("Description"), "manager" => _("Manager"), "base" => _("Base"), "gosaUnitTag" => _("Administrative settings")) )); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/departments/class_localityGeneric.inc0000644000175000017500000000733211471521471024143 0ustar mikemikeconfig->get_ldap_link(); $ldap->ls ("(&(l=".$this->l.")(objectClass=locality))", $this->base, array('dn')); if ($this->orig_l == "new" && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } elseif ($this->orig_dn != $this->dn && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } /* All required fields are set? */ if ($this->l == ""){ $message[]= msgPool::required(_("Name")); }elseif(tests::is_department_name_reserved($this->l,$this->base)){ $message[]= msgPool::reserved(_("Name")); }elseif(preg_match ('/[#+:=>\\\\\/]/', $this->l)){ $message[]= msgPool::invalid(_("Name"), $this->l, "/[^#+:=>\\\\\/]/"); } /* Check description */ if ($this->description == ""){ $message[]= msgPool::required(_("Description")); } /* Check if we are allowed to create or move this object */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[] = msgPool::permCreate(); }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ $message[] = msgPool::permMove(); } return($message); } /* Return plugin informations for acl handling */ static function plInfo() { return (array("plShortName" => _("Locality"), "plDescription" => _("Locality"), "plSelfModify" => FALSE, "plPriority" => 3, "plDepends" => array(), "plSection" => array("administration"), "plCategory" => array("department"), "plProvidedAcls" => array( "l" => _("Location"), "description" => _("Description"), "manager" => _("Manager"), "base" => _("Base"), "gosaUnitTag" => _("Administrative settings")) )); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/departments/dcObject.tpl0000644000175000017500000000400111362020733021364 0ustar mikemike

    {t}Properties{/t}

    {if !$is_root_dse} {/if} {if $manager_enabled} {/if}
    {$must} {render acl=$dcACL} {/render}
    {$must} {render acl=$descriptionACL} {/render}
    {$must} {render acl=$baseACL} {$base} {/render}
    {render acl=$managerACL} {/render} {render acl=$managerACL} {image path="images/lists/edit.png" action="editManager"} {/render} {if $manager!=""} {render acl=$managerACL} {image path="images/info_small.png" title="{$manager}"} {/render} {render acl=$managerACL} {image path="images/lists/trash.png" action="removeManager"} {/render} {/if}

    {t}Administrative settings{/t}

    {render acl=$gosaUnitTagACL} {/render} gosa-core-2.7.4/plugins/admin/departments/dep-filter.xml0000644000175000017500000000567211362020733021722 0ustar mikemike department true default auto dn objectClass ou description default DEPARTMENT (&(objectClass=gosaDepartment)(|(dc=$)(ou=$)(o=$)(l=$)(c=$))) 0.5 3 ou dc c l o ou DEPARTMENT (&(objectClass=gosaDepartment)(objectClass=organizationalUnit)(ou=$)) 0.5 3 ou c DEPARTMENT (&(objectClass=gosaDepartment)(objectClass=country)(c=$)) 0.5 3 c l DEPARTMENT (&(objectClass=gosaDepartment)(objectClass=locality)(l=$)) 0.5 3 l dc DEPARTMENT (&(objectClass=gosaDepartment)(objectClass=dcObject)(dc=$)) 0.5 3 dc o DEPARTMENT (&(objectClass=gosaDepartment)(objectClass=organization)(o=$)) 0.5 3 o domain DEPARTMENT (&(objectClass=gosaDepartment)(objectClass=domain)(dc=$)) 0.5 3 dc gosa-core-2.7.4/plugins/admin/departments/organization.tpl0000644000175000017500000001032711352435323022367 0ustar mikemike

    {t}Properties{/t}

    {if !$is_root_dse} {/if} {if $manager_enabled} {/if}
    {$must} {render acl=$oACL} {/render}
    {$must} {render acl=$descriptionACL} {/render}
    {render acl=$businessCategoryACL} {/render}

    {$must} {render acl=$baseACL} {$base} {/render}
    {render acl=$managerACL} {/render} {render acl=$managerACL} {image path="images/lists/edit.png" action="editManager"} {/render} {if $manager!=""} {render acl=$managerACL} {image path="images/info_small.png" title="{$manager}"} {/render} {render acl=$managerACL} {image path="images/lists/trash.png" action="removeManager"} {/render} {/if}
     

    {t}Location{/t}

    {render acl=$stACL} {/render}
    {render acl=$lACL} {/render}
    {render acl=$postalAddressACL} {/render}
    {render acl=$telephoneNumberACL} {/render}
    {render acl=$facsimileTelephoneNumberACL} {/render}

    {t}Administrative settings{/t}

    {render acl=$gosaUnitTagACL} {/render} gosa-core-2.7.4/plugins/admin/departments/class_countryGeneric.inc0000644000175000017500000000730411471521471024025 0ustar mikemikeconfig->get_ldap_link(); $ldap->ls ("(&(c=".$this->c.")(objectClass=country))", $this->base, array('dn')); if ($this->orig_c == "new" && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } elseif ($this->orig_dn != $this->dn && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } /* All required fields are set? */ if ($this->c == ""){ $message[]= msgPool::required(_("Name")); }elseif(tests::is_department_name_reserved($this->c,$this->base)){ $message[]= msgPool::reserved(_("Name")); }elseif(preg_match ('/[#+:=>\\\\\/]/', $this->c)){ $message[]= msgPool::invalid(_("Name"), $this->c, "/[^#+:=>\\\\\/]/"); } /* Check description */ if ($this->description == ""){ $message[]= msgPool::required(_("Description")); } /* Check if we are allowed to create or move this object */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[] = msgPool::permCreate(); }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ $message[] = msgPool::permMove(); } return($message); } /* Return plugin informations for acl handling */ static function plInfo() { return (array( "plShortName" => _("Country"), "plDescription" => _("Country"), "plSelfModify" => FALSE, "plPriority" => 2, "plDepends" => array(), "plSection" => array("administration"), "plCategory" => array("department"), "plProvidedAcls" => array( "c" => _("Country name"), "description" => _("Description"), "manager" => _("Manager"), "base" => _("Base"), "gosaUnitTag" => _("Administrative settings")) )); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/departments/dep-list.xml0000644000175000017500000001101411446061301021372 0ustar mikemike false false true true departments 1 domain department domain plugins/departments/images/domain.png dcObject department dcObject plugins/departments/images/dc.png country department country plugins/departments/images/country.png locality department locality plugins/departments/images/locality.png organization department organization plugins/departments/images/organization.png organizationalUnit department department images/lists/folder.png |20px;c|||70px;r| %{filter:objectType(dn,objectClass)} ou string %{filter:depLabel(row,dn,"%s",ou,pid,base)} true description string %{filter:depLabel(row,dn,"%s",description,pid,base)} true %{filter:actions(dn,row,objectClass)}
    sub images/lists/folder.png[new] new_domain entry plugins/departments/images/domain.png[new] new_dcObject entry plugins/departments/images/dc.png[new] new_country entry plugins/departments/images/country.png[new] new_locality entry plugins/departments/images/locality.png[new] new_organization entry plugins/departments/images/organization.png[new] new_organizationalUnit entry images/lists/folder.png[new] separator exporter separator remove entry images/lists/trash.png edit entry images/lists/edit.png remove entry images/lists/trash.png department[d]
    gosa-core-2.7.4/plugins/admin/departments/locality.tpl0000644000175000017500000000376411352435321021510 0ustar mikemike

    {t}Properties{/t}

    {if !$is_root_dse} {/if} {if $manager_enabled} {/if}
    {$must} {render acl=$lACL} {/render}
    {$must} {render acl=$descriptionACL} {/render}
    {$must} {render acl=$baseACL} {$base} {/render}
    {render acl=$managerACL} {/render} {render acl=$managerACL} {image path="images/lists/edit.png" action="editManager"} {/render} {if $manager!=""} {render acl=$managerACL} {image path="images/info_small.png" title="{$manager}"} {/render} {render acl=$managerACL} {image path="images/lists/trash.png" action="removeManager"} {/render} {/if}

    {t}Administrative settings{/t}

    {render acl=$gosaUnitTagACL} {/render} gosa-core-2.7.4/plugins/admin/departments/country.tpl0000644000175000017500000000376111352435306021373 0ustar mikemike

    {t}Properties{/t}

    {if !$is_root_dse} {/if} {if $manager_enabled} {/if}
    {$must} {render acl=$cACL} {/render}
    {$must} {render acl=$descriptionACL} {/render}
    {$must} {render acl=$baseACL} {$base} {/render}
    {render acl=$managerACL} {/render} {render acl=$managerACL} {image path="images/lists/edit.png" action="editManager"} {/render} {if $manager!=""} {render acl=$managerACL} {image path="images/info_small.png" title="{$manager}"} {/render} {render acl=$managerACL} {image path="images/lists/trash.png" action="removeManager"} {/render} {/if}

    {t}Administrative settings{/t}

    {render acl=$gosaUnitTagACL} {/render} gosa-core-2.7.4/plugins/admin/departments/class_organizationGeneric.inc0000644000175000017500000001266011471521471025027 0ustar mikemikeconfig->get_ldap_link(); $ldap->ls ("(&(o=".$this->o.")(objectClass=organization))", $this->base, array('dn')); if ($this->orig_o == "new" && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } elseif ($this->orig_dn != $this->dn && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } /* All required fields are set? */ if ($this->o == ""){ $message[]= msgPool::required(_("Name")); }elseif(tests::is_department_name_reserved($this->o,$this->base)){ $message[]= msgPool::reserved(_("Name")); }elseif(preg_match ('/[#+:=>\\\\\/]/', $this->o)){ $message[]= msgPool::invalid(_("Name"), $this->o, "/[^#+:=>\\\\\/]/"); } /* Check description */ if ($this->description == ""){ $message[]= msgPool::required(_("Description")); } /* Check if we are allowed to create or move this object */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[] = msgPool::permCreate(); }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ $message[] = msgPool::permMove(); } return($message); } /* Return plugin informations for acl handling */ static function plInfo() { return (array("plShortName" => _("Organization"), "plDescription" => _("Organization"), "plSelfModify" => FALSE, "plPriority" => 1, "plDepends" => array(), "plSection" => array("administration"), "plCategory" => array("department"), "plProvidedAcls" => array( "o" => _("Organization name"), "description" => _("Description"), "businessCategory" => _("Category"), "base" => _("Base"), "manager" => _("Manager"), "st" => _("State"), "l" => _("Location"), "postalAddress" => _("Postal address"), "telephoneNumber" => _("Phone number"), "facsimileTelephoneNumber"=> _("Fax"), "gosaUnitTag" => _("Administrative settings")) )); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/departments/dep_iframe.tpl0000644000175000017500000000105011424326337021753 0ustar mikemike

    {t}Processing the requested operation{/t}

    {$message}

    gosa-core-2.7.4/plugins/admin/departments/main.inc0000644000175000017500000000352111450302214020546 0ustar mikemikeremove_lock(); } } /* Remove this plugin from session */ if ( $cleanup ){ session::un_set('departmentManagement'); }else{ /* Create usermanagement object on demand */ if (!session::is_set('departmentManagement')){ $departmentManagement= new departmentManagement ($config, $ui); session::set('departmentManagement',$departmentManagement); } $departmentManagement = session::get('departmentManagement'); $display= $departmentManagement->execute(); /* Reset requested? */ if (isset($_GET['reset']) && $_GET['reset'] == 1){ session::un_set ('departmentManagement'); } /* Show and save dialog */ session::set('departmentManagement',$departmentManagement); } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/departments/class_departmentManagement.inc0000644000175000017500000002427311370507352025171 0ustar mikemikeconfig = $config; $this->ui = $ui; // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("dep-filter.xml", true)); } $filter->setObjectStorage(array('')); // Build headpage $headpage = new listing(get_template_path("dep-list.xml", true)); $headpage->registerElementFilter("depLabel", "departmentManagement::filterDepLabel"); $headpage->setFilter($filter); $this->setFilter($filter); // Add copy&paste and snapshot handler. if ($this->config->boolValueIsTrue("core", "copyPaste")){ $this->cpHandler = new CopyPasteHandler($this->config); } if($this->config->get_cfg_value("core","enableSnapshots") == "true"){ $this->snapHandler = new SnapshotHandler($this->config); } parent::__construct($config, $ui, "departments", $headpage); $this->registerAction("open","openEntry"); $this->registerAction("new_domain","newEntry"); $this->registerAction("new_country","newEntry"); $this->registerAction("new_locality","newEntry"); $this->registerAction("new_dcObject","newEntry"); $this->registerAction("new_organization","newEntry"); $this->registerAction("new_organizationalUnit","newEntry"); $this->registerAction("performRecMove","performRecMove"); $this->registerAction("tagDepartment","tagDepartment"); } // Inject additional actions here. function detectPostActions() { $actions = management::detectPostActions(); if(isset($_GET['PerformRecMove'])) $actions['action'] = "performRecMove"; if(isset($_GET['TagDepartment'])) $actions['action'] = "tagDepartment"; return($actions); } // Action handler which allows department tagging - Creates the iframe contents. function tagDepartment() { $plugname = $this->last_tabObject->base_name; $this->last_tabObject->by_object[$plugname]->tag_objects(); exit(); } // Overridden new handler - We've different types of departments to create! function newEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { $types= $this->get_support_departments(); $type = preg_replace("/^new_/","",$action); return(management::newEntry($action,$target,$all,$this->tabClass,$types[$type]['TAB'],$this->aclCategory)); } // Overridden edit handler - We've different types of departments to edit! function editEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { $types= $this->get_support_departments(); $headpage = $this->getHeadpage(); $type = $headpage->getType($target[0]); return(management::editEntry($action,$target,$all,$this->tabClass,$types[$type]['TAB'],$this->aclCategory)); } // Overriden save handler - We've to take care about the department tagging here. protected function saveChanges() { $str = management::saveChanges(); if(!empty($str)) return($str); $plugname = (isset($this->last_tabObject->base_name))? $this->last_tabObject->base_name : ''; $this->refreshDeps(); if(isset($this->last_tabObject->by_object[$plugname]) && is_object($this->last_tabObject->by_object[$plugname]) && $this->last_tabObject->by_object[$plugname]->must_be_tagged()){ $smarty = get_smarty(); $smarty->assign("src","?plug=".$_GET['plug']."&TagDepartment&no_output_compression"); $smarty->assign("message",_("As soon as the tag operation has finished, you can scroll down to end of the page and press the 'Continue' button to continue with the department management dialog.")); return($smarty->fetch(get_template_path("dep_iframe.tpl",TRUE))); } } function refreshDeps() { global $config; $config->get_departments(); $config->make_idepartments(); $this->config = $config; $headpage = $this->getHeadpage(); $headpage->refreshBasesList(); } // An action handler which enables to switch into deparmtment by clicking the names. function openEntry($action,$entry) { $headpage = $this->getHeadpage(); $headpage->setBase(array_pop($entry)); } // Overridden remove request method - Avoid removal of the ldap base. protected function removeEntryRequested($action="",$target=array(),$all=array()) { $target = array_remove_entries(array($this->config->current['BASE']),$target); return(management::removeEntryRequested($action,$target,$all)); } // A filter which allows to open a department by clicking on the departments name. static function filterDepLabel($row,$dn,$params,$ou,$pid,$base) { $ou = $ou[0]; if(LDAP::convert($dn) == $base){ $ou ="."; } $dn= LDAP::fix(func_get_arg(1)); return("$ou"); } // Finally remove departments and update departmnet browsers function removeEntryConfirmed($action="",$target=array(),$all=array(),$altTabClass="", $altTabType="",$altAclCategory="", $aclPlugin="") { management::removeEntryConfirmed($action,$target,$all, $altTabClass,$altTabType,$altAclCategory); $this->refreshDeps(); } /*! \brief Returns information about all container types that GOsa con handle. @return Array Informations about departments supported by GOsa. */ public static function get_support_departments() { /* Domain */ $types = array(); $types['domain']['ACL'] = "domain"; $types['domain']['CLASS'] = "domain"; $types['domain']['ATTR'] = "dc"; $types['domain']['TAB'] = "DOMAIN_TABS"; $types['domain']['OC'] = "domain"; $types['domain']['IMG'] = "plugins/departments/images/domain.png"; $types['domain']['IMG_FULL']= "plugins/departments/images/domain.png"; $types['domain']['TITLE'] = _("Domain"); $types['domain']['TPL'] = "domain.tpl"; /* Domain component */ $types['dcObject']['ACL'] = "dcObject"; $types['dcObject']['CLASS'] = "dcObject"; $types['dcObject']['ATTR'] = "dc"; $types['dcObject']['TAB'] = "DCOBJECT_TABS"; $types['dcObject']['OC'] = "dcObject"; $types['dcObject']['IMG'] = "plugins/departments/images/dc.png"; $types['dcObject']['IMG_FULL']= "plugins/departments/images/dc.png"; $types['dcObject']['TITLE'] = _("Domain Component"); $types['dcObject']['TPL'] = "dcObject.tpl"; /* Country object */ $types['country']['ACL'] = "country"; $types['country']['CLASS'] = "country"; $types['country']['TAB'] = "COUNTRY_TABS"; $types['country']['ATTR'] = "c"; $types['country']['OC'] = "country"; $types['country']['IMG'] = "plugins/departments/images/country.png"; $types['country']['IMG_FULL']= "plugins/departments/images/country.png"; $types['country']['TITLE'] = _("Country"); $types['country']['TPL'] = "country.tpl"; /* Locality object */ $types['locality']['ACL'] = "locality"; $types['locality']['CLASS'] = "locality"; $types['locality']['TAB'] = "LOCALITY_TABS"; $types['locality']['ATTR'] = "l"; $types['locality']['OC'] = "locality"; $types['locality']['IMG'] = "plugins/departments/images/locality.png"; $types['locality']['IMG_FULL']= "plugins/departments/images/locality.png"; $types['locality']['TITLE'] = _("Locality"); $types['locality']['TPL'] = "locality.tpl"; /* Organization */ $types['organization']['ACL'] = "organization"; $types['organization']['CLASS'] = "organization"; $types['organization']['TAB'] = "ORGANIZATION_TABS"; $types['organization']['ATTR'] = "o"; $types['organization']['OC'] = "organization"; $types['organization']['IMG'] = "plugins/departments/images/organization.png"; $types['organization']['IMG_FULL']= "plugins/departments/images/organization.png"; $types['organization']['TITLE'] = _("Organization"); $types['organization']['TPL'] = "organization.tpl"; /* Department */ $types['organizationalUnit']['ACL'] = "department"; $types['organizationalUnit']['CLASS'] = "department"; $types['organizationalUnit']['TAB'] = "DEPTABS"; $types['organizationalUnit']['ATTR'] = "ou"; $types['organizationalUnit']['OC'] = "organizationalUnit"; $types['organizationalUnit']['IMG'] = "images/lists/folder.png";//plugins/departments/images/department.png"; $types['organizationalUnit']['IMG_FULL']= "images/lists/folder-full.png";//:wplugins/departments/images/department.png"; $types['organizationalUnit']['TITLE'] = _("Department"); $types['organizationalUnit']['TPL'] = "generic.tpl"; return($types); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/departments/class_department.inc0000644000175000017500000007250111613731145023170 0ustar mikemikeget_ldap_link(); $ldap->cd($config->current['BASE']); if($dn == "" || $dn == "new" || !$ldap->dn_exists($dn)){ $this->objectclasses = array_merge($this->structuralOC,$this->objectclasses); }else{ $ldap->cat($dn, array("structuralObjectClass")); $attrs= $ldap->fetch(); if(isset($attrs['structuralObjectClass']['count'])){ for($i = 0 ; $i < $attrs['structuralObjectClass']['count'] ; $i++){ $this->objectclasses[] = $attrs['structuralObjectClass'][$i]; } }else{ /* Could not detect structural object class for this object, fall back to the default 'locality' */ $this->objectclasses = array_merge($this->structuralOC,$this->objectclasses); } } $this->objectclasses = array_unique($this->objectclasses); plugin::plugin($config, $dn); $this->is_account= TRUE; $this->ui= get_userinfo(); $this->dn= $dn; $this->orig_dn= $dn; /* Save current naming attribuet */ $nA = $this->namingAttr; $orig_nA = "orig_".$nA; $this->$orig_nA = $this->$nA; $this->config= $config; /* Set base */ if ($this->dn == "new"){ $ui= get_userinfo(); if(session::is_set('CurrentMainBase')){ $this->base = session::get('CurrentMainBase'); }else{ $this->base= dn2base($ui->dn); } } else { $this->base= preg_replace ("/^[^,]+,/", "", $this->dn); } // Special handling for the rootDSE if($this->dn == $this->config->current['BASE']){ $this->base = $this->dn; $this->is_root_dse = TRUE; } $this->orig_base = $this->base; /* Is administrational Unit? */ if ($dn != "new" && in_array_ics('gosaAdministrativeUnit', $this->attrs['objectClass'])){ $this->is_administrational_unit= true; $this->initially_was_tagged = true; } /* Instanciate base selector */ $this->baseSelector= new baseSelector($this->get_allowed_bases(), $this->base); $this->baseSelector->setSubmitButton(false); $this->baseSelector->setHeight(300); $this->baseSelector->update(true); // If the 'manager' attribute is present in gosaDepartment allow to manage it. $ldap = $this->config->get_ldap_link(); $ocs = $ldap->get_objectclasses(); if(isset($ocs['gosaDepartment']['MAY']) && in_array_strict('manager', $ocs['gosaDepartment']['MAY'])){ $this->manager_enabled = TRUE; // Detect the managers name $this->manager_name = ""; $ldap = $this->config->get_ldap_link(); if(!empty($this->manager)){ $ldap->cat($this->manager, array('cn')); if($ldap->count()){ $attrs = $ldap->fetch(); $this->manager_name = $attrs['cn'][0]; }else{ $this->manager_name = "("._("Unknown")."!): ".$this->manager; } } } } function execute() { /* Call parent execute */ plugin::execute(); /* Log view */ if($this->is_account && !$this->view_logged){ $this->view_logged = TRUE; new log("view","department/".get_class($this),$this->dn); } /* Reload departments */ $this->config->get_departments(); $this->config->make_idepartments(); $smarty= get_smarty(); // Clear manager attribute if requested if(preg_match("/ removeManager/i", " ".implode(array_keys($_POST),' ')." ")){ $this->manager = ""; $this->manager_name = ""; } // Allow to manager manager attribute if($this->manager_enabled){ // Allow to select a new inetOrgPersion:manager if(preg_match("/ editManager/i", " ".implode(array_keys($_POST),' ')." ")){ $this->dialog = new singleUserSelect($this->config, get_userinfo()); } if($this->dialog && count($this->dialog->detectPostActions())){ $users = $this->dialog->detectPostActions(); if(isset($users['action']) && $users['action'] =='userSelected' && isset($users['targets']) && count($users['targets'])){ $headpage = $this->dialog->getHeadpage(); $dn = $users['targets'][0]; $attrs = $headpage->getEntry($dn); $this->manager = $dn; $this->manager_name = $attrs['cn'][0]; $this->dialog = NULL; } } if(isset($_POST['add_users_cancel'])){ $this->dialog = NULL; } if($this->dialog) return($this->dialog->execute()); } $smarty->assign("manager",$this->manager); $smarty->assign("manager_name", set_post($this->manager_name)); $smarty->assign("manager_enabled",$this->manager_enabled); $tmp = $this->plInfo(); foreach($tmp['plProvidedAcls'] as $name => $translation){ $smarty->assign($name."ACL",$this->getacl($name)); } /* Hide base selector, if this object represents the base itself */ $smarty->assign("is_root_dse", $this->is_root_dse); if($this->is_root_dse){ $nA = $this->namingAttr."ACL"; $smarty->assign($nA,$this->getacl($this->namingAttr,TRUE)); } /* Hide all departments, that are subtrees of this department */ $bases = $this->get_allowed_bases(); if(($this->dn == "new")||($this->dn == "")){ $tmp = $bases; }else{ $tmp = array(); foreach($bases as $dn=>$base){ /* Only attach departments which are not a subtree of this one */ if(!preg_match("/".preg_quote($this->dn)."/",$dn)){ $tmp[$dn]=$base; } } } $this->baseSelector->setBases($tmp); $this->baseSelector->update(TRUE); foreach ($this->attributes as $val){ $smarty->assign("$val", set_post($this->$val)); } $smarty->assign("base", $this->baseSelector->render()); /* Set admin unit flag */ if ($this->is_administrational_unit) { $smarty->assign("gosaUnitTag", "checked"); } else { $smarty->assign("gosaUnitTag", ""); } $smarty->assign("dep_type",$this->type); $dep_types = departmentManagement::get_support_departments(); $tpl =""; foreach($dep_types as $key => $data){ if($data['OC'] == $this->type){ $tpl = $data['TPL']; break; } } if($tpl == "") { trigger_error("No template specified for container type '".$this->type."', please update epartmentManagement::get_support_departments()."); $tpl = "generic.tpl"; } return($smarty->fetch (get_template_path($tpl, TRUE))); } function clear_fields() { $this->dn = ""; $this->base = ""; foreach ($this->attributes as $val){ $this->$val= ""; } } function remove_from_parent() { $ldap= $this->config->get_ldap_link(); $ldap->cd ($this->dn); $ldap->rmdir_recursive($this->dn); new log("remove","department/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); } /* Optionally execute a command after we're done */ $this->handle_post_events('remove'); } function must_be_tagged() { return $this->must_be_tagged; } /* Save data to object */ function save_object() { if (isset($_POST['dep_generic_posted'])){ $nA = $this->namingAttr; $old_nA = $this->$nA; /* Create a base backup and reset the base directly after calling plugin::save_object(); Base will be set seperatly a few lines below */ $base_tmp = $this->base; plugin::save_object(); $this->base = $base_tmp; /* Refresh base */ if ($this->acl_is_moveable($this->base)){ if (!$this->baseSelector->update()) { msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); } if ($this->base != $this->baseSelector->getBase()) { $this->base= $this->baseSelector->getBase(); $this->is_modified= TRUE; } } /* Save tagging flag */ if ($this->acl_is_writeable("gosaUnitTag")){ if (isset($_POST['is_administrational_unit'])){ $this->is_administrational_unit= true; } else { $this->is_administrational_unit= false; } } /* If this is the root directory service entry then avoid changing the naming attribute of this entry. */ if($this->dn == $this->config->current['BASE']){ $this->$nA = $old_nA; } } } /* Check values */ function check() { /* Call common method to give check the hook */ $message= plugin::check(); /* Check for presence of this department */ $ldap= $this->config->get_ldap_link(); $ldap->ls ("(&(ou=".$this->ou.")(objectClass=organizationalUnit))", $this->base, array('dn')); if ($this->orig_dn == "new" && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } elseif ($this->orig_dn != $this->dn && $ldap->count()){ $message[]= msgPool::duplicated(_("Name")); } /* All required fields are set? */ if ($this->ou == ""){ $message[]= msgPool::required(_("Name")); } if ($this->description == ""){ $message[]= msgPool::required(_("Description")); } if(tests::is_department_name_reserved($this->ou,$this->base)){ $message[]= msgPool::reserved(_("Name")); } if (preg_match ('/[#+:=>\\\\\/]/', $this->ou)){ $message[]= msgPool::invalid(_("Name"), $this->ou, "/[^#+:=>\\\\\/]/"); } if (!tests::is_phone_nr($this->telephoneNumber)){ $message[]= msgPool::invalid(_("Phone"), $this->telephoneNumber, "/[\/0-9 ()+*-]/"); } if (!tests::is_phone_nr($this->facsimileTelephoneNumber)){ $message[]= msgPool::invalid(_("Fax"), $this->facsimileTelephoneNumber, "/[\/0-9 ()+*-]/"); } // Check if a wrong base was supplied if(!$this->baseSelector->checkLastBaseUpdate()){ $message[]= msgPool::check_base();; } /* Check if we are allowed to create or move this object */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[] = msgPool::permCreate(); }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ $message[] = msgPool::permMove(); } return $message; } /* Save to LDAP */ function save() { $ldap= $this->config->get_ldap_link(); /* Ensure that ou is saved too, it is required by objectClass gosaDepartment */ $nA = $this->namingAttr; $this->ou = $this->$nA; /* Add tag objects if needed */ if ($this->is_administrational_unit){ /* If this wasn't tagged before add oc an reset unit tag */ if(!$this->initially_was_tagged){ $this->objectclasses[]= "gosaAdministrativeUnit"; $this->gosaUnitTag= ""; /* It seams that this method is called twice, set this to true. to avoid adding this oc twice */ $this->initially_was_tagged = true; } if ($this->gosaUnitTag == ""){ /* It's unlikely, but check if already used... */ $try= 5; $ldap->cd($this->config->current['BASE']); while ($try--){ /* Generate microtime stamp as tag */ list($usec, $sec)= explode(" ", microtime()); $time_stamp= preg_replace("/\./", "", $sec.$usec); $ldap->search("(&(objectClass=gosaAdministrativeUnit)(gosaUnitTag=$time_stamp))",array("gosaUnitTag")); if ($ldap->count() == 0){ break; } } if($try == 0) { msg_dialog::display(_("Fatal error"), _("Cannot find an unused tag for this administrative unit!"), WARNING_DIALOG); return; } $this->gosaUnitTag= preg_replace("/\./", "", $sec.$usec); } } $this->skipTagging = TRUE; plugin::save(); /* Remove tag information if needed */ if (!$this->is_administrational_unit && $this->initially_was_tagged){ $tmp= array(); /* Remove gosaAdministrativeUnit from this plugin */ foreach($this->attrs['objectClass'] as $oc){ if (preg_match("/^gosaAdministrativeUnitTag$/i", $oc)){ continue; } if (!preg_match("/^gosaAdministrativeUnit$/i", $oc)){ $tmp[]= $oc; } } $this->attrs['objectClass']= $tmp; $this->attrs['gosaUnitTag']= array(); $this->gosaUnitTag = ""; } /* Write back to ldap */ $ldap->cat($this->dn, array('dn')); $ldap->cd($this->dn); if ($ldap->count()){ $this->cleanup(); $ldap->modify ($this->attrs); new log("modify","department/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); $this->handle_post_events('modify'); } else { $ldap->add($this->attrs); $this->handle_post_events('add'); new log("create","department/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); } if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); } /* The parameter forces only to set must_be_tagged, and don't touch any objects This will be done later */ $this->tag_objects(true); return(false); } /* Tag objects to have the gosaAdministrativeUnitTag */ function tag_objects($OnlySetTagFlag = false) { if(!$OnlySetTagFlag){ $smarty= get_smarty(); /* Print out html introduction */ echo ' '; echo "

    ".sprintf(_("Tagging '%s'."),"".LDAP::fix($this->dn)."")."

    "; } $add= $this->is_administrational_unit; $len= strlen($this->dn); $ldap= $this->config->get_ldap_link(); $ldap->cd($this->dn); if ($add){ $ldap->search('(!(&(objectClass=gosaAdministrativeUnitTag)(gosaUnitTag='. $this->gosaUnitTag.')))', array('dn')); } else { $ldap->search('objectClass=gosaAdministrativeUnitTag', array('dn')); } $objects = array(); while ($attrs= $ldap->fetch()){ $objects[] = $attrs; } foreach($objects as $attrs){ /* Skip self */ if ($attrs['dn'] == $this->dn){ continue; } /* Check for confilicting administrative units */ $fix= true; foreach ($this->config->adepartments as $key => $tag){ /* This one is shorter than our dn, its not relevant... */ if ($len >= strlen($key)){ continue; } /* This one matches with the latter part. Break and don't fix this entry */ if (preg_match('/(^|,)'.preg_quote($key, '/').'$/', $attrs['dn'])){ $fix= false; break; } } /* Fix entry if needed */ if ($fix){ if($OnlySetTagFlag){ $this->must_be_tagged =true; return; } $this->handle_object_tagging($attrs['dn'], $this->gosaUnitTag, TRUE ); echo "" ; } } if(!$OnlySetTagFlag){ $this->must_be_tagged = FALSE; echo '
    '; echo "
    ". "
    ". "
    ". "". "". "
    ". "
    "; echo "" ; } } /* Move/Rename complete trees */ function recursive_move($src_dn, $dst_dn,$force = false) { /* Print header to have styles included */ $smarty= get_smarty(); echo ' '; echo "

    ".sprintf(_("Moving '%s' to '%s'"),"".LDAP::fix($src_dn)."","".LDAP::fix($dst_dn)."")."

    "; /* Check if the destination entry exists */ $ldap= $this->config->get_ldap_link(); /* Check if destination exists - abort */ $ldap->cat($dst_dn, array('dn')); if ($ldap->fetch()){ trigger_error("Recursive_move ".LDAP::fix($dst_dn)." already exists.", E_USER_WARNING); echo sprintf("Recursive_move: '%s' already exists", LDAP::fix($dst_dn))."
    "; return (FALSE); } /* Perform a search for all objects to be moved */ $objects= array(); $ldap->cd($src_dn); $ldap->search("(objectClass=*)", array("dn")); while($attrs= $ldap->fetch()){ $dn= $attrs['dn']; $objects[$dn]= strlen($dn); } /* Sort objects by indent level */ asort($objects); reset($objects); /* Copy objects from small to big indent levels by replacing src_dn by dst_dn */ foreach ($objects as $object => $len){ $src= str_replace("\\","\\\\",$object); $dst= preg_replace("/".str_replace("\\","\\\\",$src_dn)."$/", "$dst_dn", $object); $dst= str_replace($src_dn,$dst_dn,$object); echo ""._("Object").": ".LDAP::fix($src)."
    "; $this->update_acls($object, $dst,TRUE); if (!$this->copy($src, $dst)){ echo "
    ".sprintf(_("FAILED to copy %s, aborting operation"),LDAP::fix($src))."
    "; return (FALSE); } echo "" ; flush(); } /* Remove src_dn */ $ldap->cd($src_dn); $ldap->recursive_remove(); $this->orig_dn = $this->dn = $dst_dn; $this->orig_base= $this->base; $this->entryCSN = getEntryCSN($this->dn); echo '
    '; echo "

    "; echo "" ; echo ""; return (TRUE); } /* Return plugin informations for acl handling */ static function plInfo() { return (array("plShortName" => _("Generic"), "plDescription" => _("Departments"), "plSelfModify" => FALSE, "plPriority" => 0, "plDepends" => array(), "plSection" => array("administration"), "plRequirements"=> array( 'ldapSchema' => array('gosaDepartment' => '>=2.7'), 'onFailureDisablePlugin' => array(get_class(),'departmentManagement', 'country','dcObject','domain','locality','organization') ), "plCategory" => array("department" => array("objectClass" => "gosaDepartment", "description" => _("Departments"))), "plProvidedAcls" => array( "ou" => _("Department name"), "description" => _("Description"), "businessCategory" => _("Category"), "base" => _("Base"), "st" => _("State"), "l" => _("Location"), "postalAddress" => _("Address"), "telephoneNumber" => _("Telephone"), "facsimileTelephoneNumber" => _("Fax"), "manager" => _("Manager"), "gosaUnitTag" => _("Administrative settings")) )); } function handle_object_tagging($dn= "", $tag= "", $show= false) { /* No dn? Self-operation... */ if ($dn == ""){ $dn= $this->dn; /* No tag? Find it yourself... */ if ($tag == ""){ $len= strlen($dn); @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "No tag for $dn - looking for one...", "Tagging"); $relevant= array(); foreach ($this->config->adepartments as $key => $ntag){ /* This one is bigger than our dn, its not relevant... */ if ($len <= strlen($key)){ continue; } /* This one matches with the latter part. Break and don't fix this entry */ if (preg_match('/(^|,)'.preg_quote($key, '/').'$/', $dn)){ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "DEBUG: Possibly relevant: $key", "Tagging"); $relevant[strlen($key)]= $ntag; continue; } } /* If we've some relevant tags to set, just get the longest one */ if (count($relevant)){ ksort($relevant); $tmp= array_keys($relevant); $idx= end($tmp); $tag= $relevant[$idx]; $this->gosaUnitTag= $tag; } } } /* Set tag? */ if ($tag != ""){ /* Set objectclass and attribute */ $ldap= $this->config->get_ldap_link(); $ldap->cat($dn, array('gosaUnitTag', 'objectClass')); $attrs= $ldap->fetch(); if(isset($attrs['gosaUnitTag'][0]) && $attrs['gosaUnitTag'][0] == $tag){ if ($show) { echo sprintf(_("Object '%s' is already tagged"), LDAP::fix($dn))."
    "; flush(); } return; } if (count($attrs)){ if ($show){ echo sprintf(_("Adding tag (%s) to object '%s'"), $tag, LDAP::fix($dn))."
    "; flush(); } $nattrs= array("gosaUnitTag" => $tag); $nattrs['objectClass']= array(); for ($i= 0; $i<$attrs['objectClass']['count']; $i++){ $oc= $attrs['objectClass'][$i]; if ($oc != "gosaAdministrativeUnitTag"){ $nattrs['objectClass'][]= $oc; } } $nattrs['objectClass'][]= "gosaAdministrativeUnitTag"; $ldap->cd($dn); $ldap->modify($nattrs); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD, get_class())); } } else { @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "Not tagging ($tag) $dn - seems to have moved away", "Tagging"); } } else { /* Remove objectclass and attribute */ $ldap= $this->config->get_ldap_link(); $ldap->cat($dn, array('gosaUnitTag', 'objectClass')); $attrs= $ldap->fetch(); if (isset($attrs['objectClass']) && !in_array_ics("gosaAdministrativeUnitTag", $attrs['objectClass'])){ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "$dn is not tagged", "Tagging"); return; } if (count($attrs)){ if ($show){ echo sprintf(_("Removing tag from object '%s'"), LDAP::fix($dn))."
    "; flush(); } $nattrs= array("gosaUnitTag" => array()); $nattrs['objectClass']= array(); for ($i= 0; $i<$attrs['objectClass']['count']; $i++){ $oc= $attrs['objectClass'][$i]; if ($oc != "gosaAdministrativeUnitTag"){ $nattrs['objectClass'][]= $oc; } } $ldap->cd($dn); $ldap->modify($nattrs); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD, get_class())); } } else { @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "Not removing tag ($tag) $dn - seems to have moved away", "Tagging"); } } } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/departments/dep_move_confirm.tpl0000644000175000017500000000125711424325206023176 0ustar mikemike
    {image path="images/warning.png" align="top"} {t}Warning{/t} - {t}You are currently moving/renaming this department.{/t}

    {t}Modifying a departments naming attribute 'ou' or base may corrupt ACLs and snapshot entries for all entire objects.{/t}

    {t}GOsa can NOT fix this for you, yet.{/t}

    {t}Before you confirm this action, ensure that everything will be as expected, possibly the best solution is a backup.{/t}


    gosa-core-2.7.4/plugins/admin/departments/generic.tpl0000644000175000017500000001026411352435316021301 0ustar mikemike

    {t}Properties{/t}

    {if !$is_root_dse} {/if} {if $manager_enabled} {/if}
    {$must} {render acl=$ouACL} {/render}
    {$must} {render acl=$descriptionACL} {/render}
    {render acl=$businessCategoryACL} {/render}

    {$must} {render acl=$baseACL} {$base} {/render}
    {render acl=$managerACL} {/render} {render acl=$managerACL} {image path="images/lists/edit.png" action="editManager"} {/render} {if $manager!=""} {render acl=$managerACL} {image path="images/info_small.png" title="{$manager}"} {/render} {render acl=$managerACL} {image path="images/lists/trash.png" action="removeManager"} {/render} {/if}
     

    {t}Location{/t}

    {render acl=$stACL} {/render}
    {render acl=$lACL} {/render}
    {render acl=$postalAddressACL} {/render}
    {render acl=$telephoneNumberACL} {/render}
    {render acl=$facsimileTelephoneNumberACL} {/render}

    {t}Administrative settings{/t}

    {render acl=$gosaUnitTagACL} {/render} gosa-core-2.7.4/plugins/admin/departments/domain.tpl0000644000175000017500000000376311352435314021140 0ustar mikemike

    {t}Properties{/t}

    {if !$is_root_dse} {/if} {if $manager_enabled} {/if}
    {$must} {render acl=$dcACL} {/render}
    {$must} {render acl=$descriptionACL} {/render}
    {$must} {render acl=$baseACL} {$base} {/render}
    {render acl=$managerACL} {/render} {render acl=$managerACL} {image path="images/lists/edit.png" action="editManager"} {/render} {if $manager!=""} {render acl=$managerACL} {image path="images/info_small.png" title="{$manager}"} {/render} {render acl=$managerACL} {image path="images/lists/trash.png" action="removeManager"} {/render} {/if}

    {t}Administrative settings{/t}

    {render acl=$gosaUnitTagACL} {/render} gosa-core-2.7.4/plugins/admin/departments/tabs_department.inc0000644000175000017500000000502411401134435023002 0ustar mikemikeby_object as $name => $object){ if($object instanceOf department){ $this->base_name = get_class($object); break; } } /* Add references/acls/snapshots */ $this->addSpecialTabs(); if(isset($this->by_object['acl'])){ $this->by_object['acl']->skipTagging= TRUE; } } function check($ignore_account= FALSE) { return (tabs::check(TRUE)); } function save($ignore_account= FALSE) { $baseobject= &$this->by_object[$this->base_name]; $namingAttr = $baseobject->namingAttr; $nAV = preg_replace('/,/', '\,', $baseobject->$namingAttr); $nAV = preg_replace('/"/', '\"', $nAV); $new_dn = @LDAP::convert($namingAttr.'='.$nAV.','.$baseobject->base); // Do not try to move the root DSE if($baseobject->is_root_dse){ $new_dn = $baseobject->orig_dn; } /* Move group? */ if ($this->dn != $new_dn && $this->dn != "new"){ $baseobject->move($this->dn,$new_dn); } /* Update department cache. */ if($this->dn != $new_dn){ global $config; $config->get_departments(); } $this->dn= $new_dn; $baseobject->dn= $this->dn; if (!$ignore_account){ tabs::save(); } } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/acl/0000755000175000017500000000000011752422552015354 5ustar mikemikegosa-core-2.7.4/plugins/admin/acl/class_aclManagement.inc0000644000175000017500000001274411372163246022000 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array(get_ou("aclrole", "aclRoleRDN")); // ACLs are attached to department containers // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("acl-filter.xml", true)); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("acl-list.xml", true)); $headpage->registerElementFilter("filterLabel", "aclManagement::filterLabel"); $headpage->setFilter($filter); // Add copy&paste and snapshot handler. if ($this->config->boolValueIsTrue("core", "copyPaste")){ $this->cpHandler = new CopyPasteHandler($this->config); } if($this->config->get_cfg_value("core","enableSnapshots") == "true"){ $this->snapHandler = new SnapshotHandler($this->config); } parent::__construct($this->config, $ui, "acl", $headpage); } function removeEntryConfirmed($action="",$target=array(),$all=array(), $altTabClass="",$altTabType="",$altAclCategory="", $aclPlugin="") { @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,$target,"Entry removel confirmed!"); $headpage = $this->getHeadpage(); foreach($this->dns as $key => $dn){ // Check permissions, are we allowed to remove this object? $acl = $this->ui->get_permissions($dn, $this->aclCategory."/".$this->aclPlugin); if(preg_match("/d/",$acl)){ if($headpage->getType($dn) == "gosaRole"){ $tabClass = "aclroletab"; $tabType = "ACLROLETAB"; }else{ $tabClass = "acltab"; $tabType = "ACLTAB"; } // Delete the object $this->dn = $dn; $this->tabObject= new $tabClass($this->config,$this->config->data['TABS'][$tabType], $this->dn, 'acl', true, true); $this->tabObject->set_acl_base($this->dn); $this->tabObject->delete (); $this->tabObject->parent = &$this; // Remove the lock for the current object. del_lock($this->dn); } else { msg_dialog::display(_("Permission error"), msgPool::permDelete(), ERROR_DIALOG); new log("security","groups/".get_class($this),$dn,array(),"Tried to trick deletion."); } } // Cleanup $this->remove_lock(); $this->closeDialogs(); } function newEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { $this->skipFooter = TRUE; $altTabClass = "aclroletab"; $altTabType = "ACLROLETAB"; return(management::newEntry($action,$target,$all,$altTabClass,$altTabType,$altAclCategory)); } function editEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { $this->skipFooter = TRUE; if(count($target) == 1){ // Set dummy tab object... $this->dn = array_pop($target); $headpage = $this->getHeadpage(); if($headpage->getType($this->dn) == "gosaRole"){ $altTabClass = "aclroletab"; $altTabType = "ACLROLETAB"; }else{ $altTabClass = "acltab"; $altTabType = "ACLTAB"; } return(management::editEntry($action,array($this->dn),$all,$altTabClass,$altTabType,$altAclCategory)); } } function detectPostActions() { $action= management::detectPostActions(); if(isset($_POST['edit_acl'])) $action['action'] = "edit_acl"; if(isset($_POST['edit_role'])) $action['action'] = "edit_role"; return($action); } // A filter which allows to open a department by clicking on the departments name. static function filterLabel($row,$dn,$ou= array(),$pid=0,$base="") { $ou = $ou[0]; if($dn == $base){ $ou =" . "; } if(!preg_match("/^cn=/",$dn)){ $ou.="   ["._("ACL Assignment")."]"; } $dn= LDAP::fix(func_get_arg(1)); return("$ou"); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/acl/class_filterACL.inc0000644000175000017500000001057011327523573021047 0ustar mikemikeget_ldap_link(TRUE); $flag= ($scope == "sub")?GL_SUBSEARCH:0; $result=array(); $result= array_merge($result,filterACL::get_list($base, $filter, $attributes, $category, array(), $flag | GL_SIZELIMIT, "cat")); if($scope == "sub"){ $result= array_merge($result,filterACL::get_list($base, $filter, $attributes, $category, array(), $flag | GL_SIZELIMIT, "search")); } $result= array_merge($result,filterACL::get_list($base, $filter, $attributes, $category, $objectStorage, $flag | GL_SIZELIMIT, "")); return(filterACL::unifyResult($result)); } static function unifyResult($result) { $res=array(); foreach($result as $entry){ if(!isset($res[$entry['dn']])){ $res[$entry['dn']]=$entry; } } return(array_values($res)); } static function get_list($base, $filter, $attributes, $category, $objectStorage, $flags= GL_SUBSEARCH, $method= "") { $ui= session::global_get('ui'); $config= session::global_get('config'); // Move to arrays for category and objectStorage if (!is_array($category)) { $category= array($category); } if (!is_array($objectStorage)) { $objectStorage= array($objectStorage); } if(empty($method)){ $method= (empty($objectStorage) && !($flags & GL_SUBSEARCH))?"ls":"search"; } // Initialize search bases $bases= array(); // Get list of sub bases to search on if (count($objectStorage) == 0) { $bases[$base]= ""; } else { foreach ($objectStorage as $oc) { $oc= preg_replace('/,$/', '', $oc); $tmp= explode(',', $oc); if (count($tmp) == 1) { preg_match('/([^=]+)=(.*)$/', $oc, $m); if ($flags & GL_SUBSEARCH) { $bases[$base][]= $m[1].":dn:=".$m[2]; } else { $bases["$oc,$base"][]= $m[1].":dn:=".$m[2]; } } else { // No, there's no \, in pre defined RDN values preg_match('/^([^,]+),(.*)$/', $oc, $matches); preg_match('/([^=]+)=(.*)$/', $matches[1], $m); if ($flags & GL_SUBSEARCH) { $bases[$base][]= $m[1].":dn:=".$m[2]; } else { $bases[$matches[2].",$base"][]= $m[1].":dn:=".$m[2]; } } } } // Get LDAP link $ldap= $config->get_ldap_link($flags & GL_SIZELIMIT); // Do search for every base $result= array(); $limit_exceeded = FALSE; foreach($bases as $base => $dnFilters) { // Break if the size limit is exceeded if($limit_exceeded){ return($result); } // Switch to new base and search if (is_array($dnFilters)){ $dnFilter= "(|"; foreach ($dnFilters as $df) { $dnFilter.= "($df)"; } $dnFilter.= ")"; } else { $dnFilter= ""; } $ldap->cd($base); if ($method == "ls") { $ldap->ls("(&$filter$dnFilter)", $base, $attributes); } elseif ($method == "cat") { $ldap->cat($base, $attributes, "(&$filter$dnFilter)"); } else { $ldap->search("(&$filter$dnFilter)", $attributes); } // Check for size limit exceeded messages for GUI feedback if (preg_match("/size limit/i", $ldap->get_error())){ session::set('limit_exceeded', TRUE); $limit_exceeded = TRUE; } /* Crawl through result entries and perform the migration to the result array */ while($attrs = $ldap->fetch()) { $dn= $ldap->getDN(); /* Convert dn into a printable format */ if ($flags & GL_CONVERT){ $attrs["dn"]= convert_department_dn($dn); } else { $attrs["dn"]= $dn; } /* Skip ACL checks if we are forced to skip those checks */ if($flags & GL_NO_ACL_CHECK){ $result[]= $attrs; }else{ /* Sort in every value that fits the permissions */ foreach ($category as $o){ if((preg_match("/\//",$o) && preg_match("/r/",$ui->get_permissions($dn,$o))) || (!preg_match("/\//",$o) && preg_match("/r/",$ui->get_category_permissions($dn, $o)))){ $result[]= $attrs; break; } } } } } return $result; } } ?> gosa-core-2.7.4/plugins/admin/acl/acl-list.tpl0000644000175000017500000000102511352410414017571 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/admin/acl/acl_role.tpl0000644000175000017500000000347711424325206017662 0ustar mikemike{if $dialogState eq 'head'}

    {t}Assigned ACL for current entry{/t}

    {t}Name{/t} {render acl=$cnACL} {/render}
    {t}Description{/t} {render acl=$descriptionACL} {/render}
    {t}Base{/t}{$must} {render acl=$baseACL} {$base} {/render}
    {$aclList} {render acl=$gosaAclTemplateACL} {/render} {/if} {if $dialogState eq 'create'}

    {t}ACL type{/t}  {if $javascript eq 'false'}{/if}


    {t}List of available ACL categories{/t}

    {$aclList}
    {render acl=$gosaAclTemplateACL}   {/render}
    {/if} {if $dialogState eq 'edit'}

    {$headline}

    {render acl=$gosaAclTemplateACL} {$aclSelector} {/render}
    {render acl=$gosaAclTemplateACL} {/render}  
    {/if} gosa-core-2.7.4/plugins/admin/acl/tabs_acl.inc0000644000175000017500000000563111350144011017605 0ustar mikemike "acl" , "NAME" => _("ACL"))); /* Save dn */ $this->dn= $dn; $this->config= $config; $baseobject= NULL; foreach ($data as $tab){ $this->by_name[$tab['CLASS']]= $tab['NAME']; if ($baseobject === NULL){ if($tab['CLASS'] == "acl"){ $baseobject= new $tab['CLASS']($this->config, $this, $this->dn); }else{ $baseobject= new $tab['CLASS']($this->config,$this->dn); } $this->by_object[$tab['CLASS']]= $baseobject; } else { if($tab['CLASS'] == "acl"){ $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config,$this,$this->dn, $baseobject); }else{ $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn, $baseobject); } } $this->by_object[$tab['CLASS']]->parent= &$this; $this->by_object[$tab['CLASS']]->set_acl_category("acl"); $this->read_only |= $this->by_object[$tab['CLASS']]->read_only; /* Initialize current */ if ($this->current == ""){ $this->current= $tab['CLASS']; } } } function save($ignore_account= FALSE) { $ret= tabs::save(); return $ret; } function save_object($ignore_account= FALSE) { tabs::save_object(); } function execute() { $display= tabs::execute(); if($this->read_only){ $display.= "
    "; $display.= " \n"; $display.= "
    "; }elseif(!$this->by_object['acl']->dialog){ $display.= "

    \n"; $display.= " \n"; $display.= " \n"; $display.= "

    "; } return($display); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/acl/acl-list.xml0000644000175000017500000000605611500433512017602 0ustar mikemike true true true true acl 1 gosaAcl acl acl images/lists/locked.png gosaRole acl aclrole plugins/acl/images/role.png |20px;c|||100px;r| %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 1 %{filter:objectType(dn,objectClass)} dn string %{filter:filterLabel(row,dn,ou,cn,pid,base)} true description string %{filter:link(row,dn,"%s",description)} true %{filter:actions(dn,row,objectClass)}
    sub images/lists/element.png[new] new entry plugins/acl/images/role.png separator remove entry images/lists/trash.png separator exporter separator copypaste snapshot cp copypaste edit entry images/lists/edit.png snapshot snapshot remove entry images/lists/trash.png acl/acl[d]
    gosa-core-2.7.4/plugins/admin/acl/class_aclRole.inc0000644000175000017500000006026511500441761020620 0ustar mikemikedn == "new"){ $ui = get_userinfo(); $this->base= dn2base(session::global_is_set("CurrentMainBase")?"cn=test,".session::global_get("CurrentMainBase"):$ui->dn); }else{ $this->base = preg_replace("/^[^,]+,[^,]+,/","",$this->dn); new log("view","acl/".get_class($this),$this->dn); } /* Load ACL's */ $this->gosaAclTemplate= array(); if (isset($this->attrs["gosaAclTemplate"])){ for ($i= 0; $i<$this->attrs["gosaAclTemplate"]['count']; $i++){ $acl= $this->attrs["gosaAclTemplate"][$i]; $this->gosaAclTemplate= array_merge($this->gosaAclTemplate, $this->explodeACL($acl)); } } ksort($this->gosaAclTemplate); /* Extract available categories from plugin info list */ $tmp= session::get('plist'); $plist= $tmp->info; $oc = array(); foreach ($plist as $class => $acls){ /* Only feed categories */ if (isset($acls['plCategory'])){ /* Walk through supplied list and feed only translated categories */ foreach($acls['plCategory'] as $idx => $data){ /* Non numeric index means -> base object containing more informations */ if (preg_match('/^[0-9]+$/', $idx)){ if (!isset($this->ocMapping[$data])){ $this->ocMapping[$data]= array(); $this->ocMapping[$data][]= '0'; } $this->ocMapping[$data][]= $class; } else { if (!isset($this->ocMapping[$idx])){ $this->ocMapping[$idx]= array(); $this->ocMapping[$idx][]= '0'; } $this->ocMapping[$idx][]= $class; $this->aclObjects[$idx]= $data['description']; /* Additionally filter the classes we're interested in in "self edit" mode */ if(isset($data['objectClass'])){ if (is_array($data['objectClass'])){ foreach($data['objectClass'] as $objectClass){ if (in_array_ics($objectClass, $oc)){ $this->myAclObjects[$idx.'/'.$class]= $acls['plDescription']; break; } } } else { if (in_array_ics($data['objectClass'], $oc)){ $this->myAclObjects[$idx.'/'.$class]= $acls['plDescription']; } } } } } } } /* Sort categories */ asort($this->aclObjects); /* Fill acl types */ $this->aclTypes= array( "reset" => _("Reset ACL"), "one" => _("One level"), "base" => _("Current object"), "sub" => _("Complete subtree"), "psub" => _("Complete subtree (permanent)")); asort($this->aclTypes); /* Finally - we want to get saved... */ $this->is_account= TRUE; $this->orig_base = $this->base; $this->orig_dn = $this->dn; $this->orig_cn = $this->cn; /* Instanciate base selector */ $this->baseSelector= new baseSelector($this->get_allowed_bases(), $this->base); $this->baseSelector->setSubmitButton(false); $this->baseSelector->setHeight(300); $this->baseSelector->update(true); $this->updateList(); // Prepare lists $this->sectionList = new sortableListing(); $this->sectionList->setDeleteable(false); $this->sectionList->setEditable(false); $this->sectionList->setWidth("100%"); $this->sectionList->setHeight("400px"); $this->sectionList->setColspecs(array('200px','*')); $this->sectionList->setHeader(array(_("Category"),_("Description"))); $this->sectionList->setDefaultSortColumn(0); $this->sectionList->setAcl('rwcdm'); // All ACLs, we filter on our own here. } function updateList() { if(!$this->list){ $this->list = new sortableListing($this->gosaAclTemplate,array(),TRUE); $this->list->setDeleteable(true); $this->list->setEditable(true); $this->list->setColspecs(array('*')); $this->list->setWidth("100%"); $this->list->setHeight("400px"); $this->list->setAcl("rwcdm"); $this->list->setHeader(array(_("Permissions"),_("Type"))); } // Add ACL entries to the listing $lData = array(); foreach($this->gosaAclTemplate as $id => $entry){ $lData[] = $this->convertForListing($entry); } $this->list->setListData($this->gosaAclTemplate, $lData); } function convertForListing($entry) { $member = implode($entry['members'],", "); $acl = implode(array_keys($entry['acl']),", "); $type = implode(array_keys($entry['acl']),", "); return(array('data' => array($acl, $this->aclTypes[$entry['type']]))); } function execute() { /* Call parent execute */ plugin::execute(); $tmp= session::get('plist'); $plist= $tmp->info; /* Handle posts */ if (isset($_POST['new_acl']) && $this->acl_is_writeable("gosaAclTemplate")){ $this->dialogState= 'create'; $this->dialog= TRUE; $this->currentIndex= count($this->gosaAclTemplate); $this->loadAclEntry(TRUE); } $new_acl= array(); $aclDialog= FALSE; $firstedit= FALSE; /* Act on HTML post and gets here. */ // Get listing actions. Delete or Edit. $this->list->save_object(); $lAction = $this->list->getAction(); $this->gosaAclTemplate = array_values($this->list->getMaintainedData()); if($lAction['action'] == "edit"){ $this->currentIndex = $lAction['targets'][0]; $this->dialogState= 'create'; $firstedit= TRUE; $this->dialog= TRUE; $this->loadAclEntry(); } foreach($_POST as $name => $post){ if (preg_match('/^cat_edit_/', $name)){ $this->aclObject= preg_replace('/^cat_edit_(.*)$/', '\1', $name); $this->dialogState= 'edit'; foreach ($this->ocMapping[$this->aclObject] as $oc){ if (isset($this->aclContents[$oc])){ $this->savedAclContents[$oc]= $this->aclContents[$oc]; } } continue; } if(!$this->acl_is_writeable("gosaAclTemplate")){ continue; } if (preg_match('/^cat_del_.*/', $name) && $this->acl_is_writeable("gosaAclTemplate")){ $idx= preg_replace('/^cat_del_(.*)$/', '\1', $name); foreach ($this->ocMapping[$idx] as $key){ if(isset($this->aclContents[$idx])) unset($this->aclContents[$idx]); if(isset($this->aclContents["$idx/$key"])) unset($this->aclContents["$idx/$key"]); } continue; } /* ACL saving... */ if (preg_match('/^acl_.*_[^xy]$/', $name) && $this->acl_is_writeable("gosaAclTemplate")){ list($dummy, $object, $attribute, $value)= explode('_', $name); /* Skip for detection entry */ if ($object == 'dummy') { continue; } /* Ordinary ACL */ if (!isset($new_acl[$object])){ $new_acl[$object]= array(); } if (isset($new_acl[$object][$attribute])){ $new_acl[$object][$attribute].= $value; } else { $new_acl[$object][$attribute]= $value; } } } if(isset($_POST['acl_dummy_0_0_0'])){ $aclDialog= TRUE; } /* Only be interested in new acl's, if we're in the right _POST place */ if ($aclDialog && $this->aclObject != "" && is_array($this->ocMapping[$this->aclObject])){ foreach ($this->ocMapping[$this->aclObject] as $oc){ unset($this->aclContents[$oc]); unset($this->aclContents[$this->aclObject.'/'.$oc]); if (isset($new_acl[$oc])){ $this->aclContents[$oc]= $new_acl[$oc]; } if (isset($new_acl[$this->aclObject.'/'.$oc])){ $this->aclContents[$this->aclObject.'/'.$oc]= $new_acl[$this->aclObject.'/'.$oc]; } } } /* Save new acl in case of base edit mode */ if (1 == 0 && $this->aclType == 'base' && !$firstedit){ $this->aclContents= $new_acl; } /* Cancel new acl? */ if (isset($_POST['cancel_new_acl'])){ $this->dialogState= 'head'; $this->dialog= FALSE; if ($this->wasNewEntry){ unset ($this->gosaAclTemplate[$this->currentIndex]); } } /* Store ACL in main object? */ if (isset($_POST['submit_new_acl']) && $this->acl_is_writeable("gosaAclTemplate")){ $this->gosaAclTemplate[$this->currentIndex]['type']= $this->aclType; $this->gosaAclTemplate[$this->currentIndex]['members']= $this->recipients; $this->gosaAclTemplate[$this->currentIndex]['acl']= $this->aclContents; $this->dialogState= 'head'; $this->dialog= FALSE; } /* Cancel edit acl? */ if (isset($_POST['cancel_edit_acl'])){ $this->dialogState= 'create'; foreach ($this->ocMapping[$this->aclObject] as $oc){ if (isset($this->savedAclContents[$oc])){ $this->aclContents[$oc]= $this->savedAclContents[$oc]; } } } /* Save edit acl? */ if (isset($_POST['submit_edit_acl']) && $this->acl_is_writeable("gosaAclTemplate")){ $this->dialogState= 'create'; } /* Add acl? */ if (isset($_POST['add_acl']) && $_POST['aclObject'] != "" && $this->acl_is_writeable("gosaAclTemplate")){ $this->dialogState= 'edit'; $this->savedAclContents= array(); foreach ($this->ocMapping[$this->aclObject] as $oc){ if (isset($this->aclContents[$oc])){ $this->savedAclContents[$oc]= $this->aclContents[$oc]; } } } /* Save common values */ foreach (array("aclType", "aclObject", "target") as $key){ if (isset($_POST[$key]) && $this->acl_is_writeable("gosaAclTemplate")){ $this->$key= get_post($key); } } /* Create templating instance */ $smarty= get_smarty(); $smarty->assign("base", $this->baseSelector->render()); $tmp = $this->plInfo(); foreach($tmp['plProvidedAcls'] as $name => $translation){ $smarty->assign($name."ACL",$this->getacl($name)); } if ($this->dialogState == 'head'){ $this->updateList(); $smarty->assign("aclList", $this->list->render()); } if ($this->dialogState == 'create'){ /* Draw list */ $data = $lData = array(); // Create a map of all used sections, this allows us to simply hide the remove button // if no acl is configured for the given section // e.g. ';all;department/country;users/user; $usedList = ";".implode(array_keys($this->aclContents),';').";"; /* Add settings for all categories to the (permanent) list */ foreach ($this->aclObjects as $section => $dsc){ $summary= ""; foreach($this->ocMapping[$section] as $oc){ if (isset($this->aclContents[$oc]) && count($this->aclContents[$oc]) && isset($this->aclContents[$oc][0]) && $this->aclContents[$oc][0] != ""){ $summary.= "$oc, "; continue; } if (isset($this->aclContents["$section/$oc"]) && count($this->aclContents["$section/$oc"])){ $summary.= "$oc, "; continue; } if (isset($this->aclContents[$oc]) && !isset($this->aclContents[$oc][0]) && count($this->aclContents[$oc])){ $summary.= "$oc, "; } } /* Set summary... */ if ($summary == ""){ $summary= ''._("No ACL settings for this category").''; } else { $summary= sprintf(_("ACL for these objects: %s"), preg_replace('/, $/', '', $summary)); } $action = ""; if($this->acl_is_readable("gosaAclTemplate")){ $action.= image('images/lists/edit.png','cat_edit_'.$section,_("Edit category ACL")); } if($this->acl_is_writeable("gosaAclTemplate") && preg_match("/;".$section."(;|\/)/", $usedList)){ $action.= image('images/lists/trash.png','cat_del_'.$section,_("Delete category ACL")); } $data[] = $section; $lData[] = array('data'=>array($dsc, $summary, $action)); } $this->sectionList->setListData($data,$lData); $this->sectionList->update(); $smarty->assign("aclList", $this->sectionList->render()); $smarty->assign("aclType", $this->aclType); $smarty->assign("aclTypes", $this->aclTypes); $smarty->assign("target", $this->target); if ($this->aclType == 'base'){ $smarty->assign('aclSelector', $this->buildAclSelector($this->myAclObjects)); } } if ($this->dialogState == 'edit'){ $smarty->assign('headline', sprintf(_("Edit ACL for '%s', scope is '%s'"), $this->aclObjects[$this->aclObject], $this->aclTypes[$this->aclType])); /* Collect objects for selected category */ foreach ($this->ocMapping[$this->aclObject] as $idx => $class){ if ($idx == 0){ continue; } $aclObjects[$this->aclObject.'/'.$class]= $plist[$class]['plDescription']; } $smarty->assign('aclSelector', $this->buildAclSelector($aclObjects)); } /* Show main page */ $smarty->assign("dialogState", $this->dialogState); /* Assign cn and decription if this is a role */ foreach(array("cn","description") as $name){ $smarty->assign($name,set_post($this->$name)); } return ($smarty->fetch (get_template_path('acl_role.tpl',dirname(__FILE__)))); } function sort_by_priority($list) { $tmp= session::get('plist'); $plist= $tmp->info; asort($plist); $newSort = array(); foreach($list as $name => $translation){ $na = preg_replace("/^.*\//","",$name); if (!isset($plist[$na]['plPriority'])){ $prio= 0; } else { $prio= $plist[$na]['plPriority'] ; } $newSort[$name] = $prio; } asort($newSort); $ret = array(); foreach($newSort as $name => $prio){ $ret[$name] = $list[$name]; } return($ret); } function loadAclEntry($new= FALSE) { /* New entry gets presets... */ if ($new){ $this->aclType= 'sub'; $this->recipients= array(); $this->aclContents= array(); } else { $acl= $this->gosaAclTemplate[$this->currentIndex]; $this->aclType= $acl['type']; $this->recipients= $acl['members']; $this->aclContents= $acl['acl']; } $this->wasNewEntry= $new; } function aclPostHandler() { if (isset($_POST['save_acl']) && $this->acl_is_writeable("gosaAclTemplate")){ $this->save(); return TRUE; } return FALSE; } function save() { /* Assemble ACL's */ $tmp_acl= array(); foreach ($this->gosaAclTemplate as $prio => $entry){ $final= ""; $members= ""; if (isset($entry['members'])){ foreach ($entry['members'] as $key => $dummy){ $members.= base64_encode(preg_replace('/^.:/', '', $key)).','; } } $final= $prio.":".$entry['type'].":".preg_replace('/,$/', '', $members); /* ACL's if needed */ if ($entry['type'] != "reset" && $entry['type'] != "role"){ $acl= ":"; if (isset($entry['acl'])){ foreach ($entry['acl'] as $object => $contents){ /* Only save, if we've some contents in there... */ if (count($contents)){ $acl.= $object.";"; foreach($contents as $attr => $permission){ /* First entry? Its the one for global settings... */ if ($attr == '0'){ $acl.= $permission; } else { $acl.= '#'.$attr.';'.$permission; } } $acl.= ','; } } } $final.= preg_replace('/,$/', '', $acl); } $tmp_acl[]= $final; } /* Call main method */ plugin::save(); /* Finally (re-)assign it... */ $this->attrs["gosaAclTemplate"]= $tmp_acl; /* Remove acl from this entry if it is empty... */ if (!count($tmp_acl)){ /* Remove attribute */ if ($this->initially_was_account){ $this->attrs["gosaAclTempalte"]= array(); } else { if (isset($this->attrs["gosaAclTemplate"])){ unset($this->attrs["gosaAclTemplate"]); } } } /* Do LDAP modifications */ $ldap= $this->config->get_ldap_link(); /* Check if object already exists */ $ldap->cat($this->dn); if($ldap->count()){ $ldap->cd($this->dn); $this->cleanup(); $ldap->modify ($this->attrs); new log("modify","acl/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); }else{ $ldap->cd($this->config->current['BASE']); $ldap->create_missing_trees(preg_replace("/^[^,]+,/","",$this->dn)); $ldap->cd($this->dn); $ldap->add($this->attrs); new log("create","acl/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); } if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, "", get_class())); } /* Refresh users ACL */ $ui= get_userinfo(); $ui->loadACL(); session::set('ui',$ui); } function remove_from_parent() { $ldap = $this->config->get_ldap_link(); $serach_for = "*:role:".base64_encode($this->dn).":*"; $ldap->search ("(&(objectClass=gosaACL)(gosaAclEntry=".$serach_for."))",array('dn','cn','sn','givenName','uid')); $all_names = ""; $cnt = 3; while(($attrs = $ldap->fetch()) && $cnt){ $name = $attrs['dn']; $name = preg_replace("/[ ]/"," ",$name); $name = "'".$name."'"; $all_names .= $name.", "; $cnt --; } if(!empty($all_names)){ $all_names = preg_replace("/, $/","",$all_names); if(!$cnt){ $all_names .= ", ..."; } $all_names = "".$all_names.""; msg_dialog::display(_("Object in use"), sprintf(_("This role cannot be removed while it is in use by these objects:")."

    %s", $all_names), WARNING_DIALOG); return; } $ldap->rmDir($this->dn); new log("remove","acl/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, "", get_class())); } /* Optionally execute a command after we're done */ $this->handle_post_events("remove"); /* Delete references to object groups */ $ldap->cd ($this->config->current['BASE']); $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); while ($ldap->fetch()){ $og= new ogroup($this->config, $ldap->getDN()); unset($og->member[$this->dn]); $og->save (); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $og->dn, "", get_class())); } } } function save_object() { plugin::save_object(); if(isset($_POST['acl_role_posted'])){ /* Refresh base */ if ($this->acl_is_moveable($this->base)){ if (!$this->baseSelector->update()) { msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); } if ($this->base != $this->baseSelector->getBase()) { $this->base= $this->baseSelector->getBase(); $this->is_modified= TRUE; } } } } function saveCopyDialog() { if(isset($_POST['cn'])){ $this->cn = get_post('cn'); } } function getCopyDialog() { $smarty = get_smarty(); $smarty->assign("cn",set_post($this->cn)); $str = $smarty->fetch(get_template_path("paste_role.tpl",TRUE,dirname(__FILE__))); $ret = array(); $ret['string'] = $str; $ret['status'] = ""; return($ret); } function PrepareForCopyPaste($source) { plugin::PrepareForCopyPaste($source); $source_o = new aclrole($this->config,$source['dn']); $this->gosaAclTemplate = $source_o->gosaAclTemplate; } /* Return plugin informations for acl handling */ static function plInfo() { return (array( "plShortName" => _("Role"), "plDescription" => _("Access control roles"), "plSelfModify" => FALSE, "plDepends" => array(), "plPriority" => 0, "plSection" => array("administration"), "plCategory" => array("acl"), "plRequirements"=> array( 'ldapSchema' => array('gosaAcl' => '>=2.7'), 'onFailureDisablePlugin' => array(get_class(), 'aclManagement') ), "plProperties" => array( array( "name" => "aclRoleRDN", "type" => "rdn", "default" => "ou=aclroles,", "description" => _("RDN for role storage."), "check" => "gosaProperty::isRdn", "migrate" => "migrate_aclRoleRDN", "group" => "plugin", "mandatory" => FALSE ) ), "plProvidedAcls" => array( "cn" => _("Name"), "base" => _("Base"), "description" => _("Description"), "gosaAclTemplate" => _("Permissions")) )); } function check() { $message = plugin::check(); if(empty($this->cn)){ $message[] = msgPool::required(_("Name")); } $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); if($this->cn != $this->orig_cn){ $ldap->search("(&(objectClass=gosaRole)(cn=".$this->cn."))"); if($ldap->count()) { while($attrs = $ldap->fetch()){ if($attrs['dn'] != $this->orig_dn){ $message[] = msgPool::duplicated(_("Name")); } } } } if(!count($this->gosaAclTemplate)){ $message[] = msgPool::required(_("ACL")); } // Check if a wrong base was supplied if(!$this->baseSelector->checkLastBaseUpdate()){ $message[]= msgPool::check_base();; } /* Check if we are allowed to create or move this object */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[] = msgPool::permCreate(); }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ $message[] = msgPool::permMove(); } return($message); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/acl/main.inc0000644000175000017500000000335711450302206016767 0ustar mikemikeremove_lock(); } } /* Remove this plugin from session */ if ( $cleanup ){ session::un_set('aclManagement'); }else{ /* Create usermanagement object on demand */ if (!session::is_set('aclManagement')){ $aclManagement= new aclManagement ($config, $ui); session::set('aclManagement',$aclManagement); } $aclManagement = session::get('aclManagement'); $display= $aclManagement->execute(); /* Reset requested? */ if (isset($_GET['reset']) && $_GET['reset'] == 1){ session::un_set ('aclManagement'); } /* Show and save dialog */ session::set('aclManagement',$aclManagement); } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/acl/migration/0000755000175000017500000000000011752422552017345 5ustar mikemikegosa-core-2.7.4/plugins/admin/acl/migration/class_migrate_aclRoleRDN.inc0000644000175000017500000000021311373175302024653 0ustar mikemike gosa-core-2.7.4/plugins/admin/acl/acl-filter.xml0000644000175000017500000000304411350156120020106 0ustar mikemike acl true auto default dn objectClass cn ou description default ACL (&(|(objectClass=gosaAcl)(objectClass=gosaRole))(|(cn=$)(description=$)(ou=$))) ou cn 0.5 3 rolesOnly ACL (&(objectClass=gosaRole)(|(cn=$)(description=$)(ou=$))) ou cn 0.5 3 rolesAssignments ACL (&(objectClass=gosaAcl)(|(cn=$)(description=$)(ou=$))) ou cn 0.5 3 gosa-core-2.7.4/plugins/admin/acl/paste_role.tpl0000644000175000017500000000025711424325206020230 0ustar mikemike
    {t}Name{/t}
    gosa-core-2.7.4/plugins/admin/acl/tabs_acl_role.inc0000644000175000017500000000503111424304013020622 0ustar mikemike "aclrole" , "NAME" => _("ACL Templates"))); tabs::tabs($config, $data, $dn,"acl"); } function save($ignore_account= FALSE) { $baseobject= $this->by_object['aclrole']; $cn = preg_replace('/,/', '\,', $baseobject->cn); $cn = preg_replace('/"/', '\"', $cn); /* Check for new 'dn', in order to propagate the 'dn' to all plugins */ $new_dn= @LDAP::convert('cn='.$cn.",".get_ou("aclrole", "aclRoleRDN").$baseobject->base); if ($this->dn != $new_dn){ /* Write entry on new 'dn' */ if ($this->dn != "new"){ $baseobject->move($this->dn, $new_dn); $this->by_object['aclrole']= $baseobject; } /* Happen to use the new one */ $this->dn= $new_dn; } $ret= tabs::save(); return $ret; } function save_object($ignore_account= FALSE) { tabs::save_object(); } function execute() { $display= tabs::execute(); if($this->read_only){ $display.= "
    "; $display.= " \n"; $display.= "
    "; }elseif(!$this->by_object['aclrole']->dialog){ $display.= "

    \n"; $display.= " \n"; $display.= " \n"; $display.= "

    "; } return($display); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/ogroups/0000755000175000017500000000000011752422552016313 5ustar mikemikegosa-core-2.7.4/plugins/admin/ogroups/ogroup-list.xml0000644000175000017500000000663511347643267021343 0ustar mikemike true false true true ogroups 1 gosaGroupOfNames ogroups ogroup plugins/ogroups/images/ogroup.png |20px;c|||100px;r|130px;r| %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 2 %{filter:objectType(dn,objectClass)} cn string %{filter:link(row,dn,"%s",cn)} true description string %{filter:link(row,dn,"%s",description)} true %{filter:filterProperties(row,gosaGroupObjects)} %{filter:actions(dn,row,objectClass)}
    sub images/lists/element.png[new] new entry plugins/ogroups/images/ogroup.png[new] separator edit entry images/lists/edit.png remove entry images/lists/trash.png sendMessage entry DaemonEvent_notify plugins/goto/images/notify.png separator exporter separator copypaste snapshot cp copypaste edit entry images/lists/edit.png snapshot snapshot remove entry images/lists/trash.png ogroups/ogroup[d]
    gosa-core-2.7.4/plugins/admin/ogroups/paste_generic.tpl0000644000175000017500000000112011475463514021643 0ustar mikemike
    {$must}
    gosa-core-2.7.4/plugins/admin/ogroups/ogroup-list.tpl0000644000175000017500000000102511352410461021306 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/admin/ogroups/tabs_ogroups.inc0000644000175000017500000003756611613731145021533 0ustar mikemiketo_remove[$object])) { $this->to_remove[$object] = $this->by_object[$object]; unset($this->by_object[$object]); unset($this->by_name[$object]); } } /*! \brief Unstage an object from removal */ function add($object) { if (isset($this->to_remove[$object])) { unset($this->to_remove[$object]); } } function reload($dd) { $objects = preg_replace('/[\[\]]/', '', $dd); /* Check if we have a group with a set different mixed objects. */ $mixed_type = FALSE; for($i = 0 ; $i < (strlen($objects) -1 );$i++){ $mixed_type |= $objects[$i] != $objects[($i+1)]; } /* If there is a phonequeue, * but there is no user left with goPhoneAccount ... remove it. */ $usePhoneTab = false; if(class_available("phonequeue")){ foreach($this->by_object['ogroup']->memberList as $dn => $val){ if(isset($this->by_object['ogroup']->objcache[$dn])){ $obj = $this->by_object['ogroup']->objcache[$dn]; if(isset($obj['objectClass'])){ if(in_array_strict("goFonAccount",$obj['objectClass'])){ $usePhoneTab = true; } } } } if((!$usePhoneTab && isset($this->by_object['phonequeue']))|| (!preg_match("/U/",$objects) && isset($this->by_object['phonequeue']))){ $this->remove('phonequeue'); } } /* Remove mail group if there is no user anymore */ if(class_available("mailogroup")){ if(!preg_match("/U/",$objects) && isset($this->by_object['mailogroup'])){ $this->remove('mailogroup'); } } if(class_available("GroupwareDistributionList")){ if(!preg_match("/U/",$objects) && isset($this->by_object['GroupwareDistributionList'])){ $this->remove('GroupwareDistributionList'); } } /* Remove terminal group, if theres no terminal left in the object list */ if(class_available("termgroup")){ if(($mixed_type && isset($this->by_object['termgroup'])) || !preg_match("/T/",$objects) && !preg_match("/W/",$objects) && isset($this->by_object['termgroup'])){ $this->remove('termgroup'); } } if(class_available("termservice")){ if(($mixed_type && isset($this->by_object['termservice'])) || !preg_match("/T/",$objects) &&(isset($this->by_object['termservice']))){ $this->remove('termservice'); } } if(class_available("termstartup")){ if(($mixed_type && isset($this->by_object['termstartup'])) || !preg_match("/T/",$objects)&&(isset($this->by_object['termstartup']))){ $this->remove('termstartup'); } } /* Remove ws tabs, if theres no ws left in the object list */ if(class_available("workservice")){ if(($mixed_type && isset($this->by_object['workservice'])) || (!preg_match("/W/",$objects))&&(isset($this->by_object['workservice']))){ $this->remove('workservice'); } } if(class_available("workstartup")){ if(($mixed_type && isset($this->by_object['workstartup'])) || (!preg_match("/S/",$objects) && !preg_match("/W/",$objects))&&(isset($this->by_object['workstartup']))){ $this->remove('workstartup'); if (isset($this->by_object['faiSummary'])){ $this->remove('faiSummary'); } } } /* Create goPhoneAccount if theres an user with goPhoneAccount * but only if there is currently no queue enabled. */ if(class_available("phonequeue")){ if(!isset($this->by_object['phonequeue'])){ foreach($this->by_object['ogroup']->memberList as $dn => $val){ if(isset($this->by_object['ogroup']->objcache[$dn])){ $obj = $this->by_object['ogroup']->objcache[$dn]; if(isset($obj['objectClass'])){ if(in_array_strict("goFonAccount",$obj['objectClass'])){ $this->by_name['phonequeue']= _("Phone queue"); $this->by_object['phonequeue']= new phonequeue($this->config, $this->dn); $this->by_object['phonequeue']->parent= &$this; $this->add('phonequeue'); break; } } } } } } /* Add mail group tab , if there is curerntly no mail tab defined */ if(class_available("mailogroup")){ if((preg_match("/U/",$objects))&&(!isset($this->by_object['mailogroup']))){ if (preg_match("/olab/i",$this->config->get_cfg_value("core","mailMethod"))){ $this->by_name['mailogroup']= _("Mail"); $this->by_object['mailogroup']= new mailogroup($this->config, $this->dn); $this->by_object['mailogroup']->parent= &$this; $this->add('mailogroup'); } } } if(class_available("GroupwareDistributionList")){ if((preg_match("/U/",$objects))&&(!isset($this->by_object['GroupwareDistributionList']))){ $this->by_name['GroupwareDistributionList']= _("Groupware"); $this->by_object['GroupwareDistributionList']= new GroupwareDistributionList($this->config, $this->dn); $this->by_object['GroupwareDistributionList']->parent= &$this; $this->add('GroupwareDistributionList'); } } /* Add Terminal tab */ if(class_available("termgroup")){ if(!$mixed_type && ((preg_match("/T/",$objects)) || (preg_match("/W/",$objects)))&&(!isset($this->by_object['termgroup']))){ if(!isset($this->by_object['termgroup'])){ $this->by_name['termgroup']= _("System settings"); $this->by_object['termgroup']= new termgroup($this->config, $this->dn); $this->by_object['termgroup']->inheritTimeServer = false; $this->by_object['termgroup']->parent= &$this; $this->add('termgroup'); } } } if(class_available("termstartup")){ if(!$mixed_type && preg_match("/T/",$objects) &&(!isset($this->by_object['termstartup']))){ if(!isset($this->by_object['termstartup'])){ $this->by_name['termstartup']= _("Recipe"); $this->by_object['termstartup']= new termstartup($this->config, $this->dn,$this->by_object['ogroup']); $this->by_object['termstartup']->parent= &$this; $this->by_object['termstartup']->acl = "#all#"; $this->add('termstartup'); } } } if(!$mixed_type && class_available("termservice")){ if(preg_match("/T/",$objects) &&(!isset($this->by_object['termservice']))){ if(!isset($this->by_object['termservice'])){ $this->by_name['termservice']= _("Devices"); $this->by_object['termservice']= new termservice($this->config, $this->dn,$this->by_object['ogroup']); $this->by_object['termservice']->parent= &$this; $this->by_object['termservice']->acl = "#all#"; $this->add('termservice'); } } } /* Add Workstation tabs */ if(class_available("workstartup")){ if(!$mixed_type && (preg_match("/S/",$objects) || preg_match("/W/",$objects))&&(!isset($this->by_object['workstartup']))){ $this->by_name['workstartup']= _("Recipe"); $this->by_object['workstartup']= new workstartup($this->config, $this->dn); $this->by_object['workstartup']->parent= &$this; $this->add("workstartup"); } } if(!$mixed_type && class_available("workservice")){ if((preg_match("/W/",$objects))&&(!isset($this->by_object['workservice']))){ $this->by_name['workservice']= _("Devices"); $this->by_object['workservice']= new workservice($this->config, $this->dn); $this->by_object['workservice']->inheritTimeServer = false; $this->by_object['workservice']->parent= &$this; $this->add("workservice"); } } if(class_available("faiSummary")){ if(!$mixed_type && (preg_match("/S/",$objects) || preg_match("/W/",$objects))&&(!isset($this->by_object['faiSummary']))){ $this->by_name['faiSummary']= _("Deployment summary"); $this->by_object['faiSummary']= new faiSummaryTab($this->config, $this->dn); $this->by_object['faiSummary']->parent= &$this; $this->add("faiSummary"); } } /* Add environment tab if user or group is member in this object group*/ if(class_available("environment")){ if((preg_match("/G/",$objects) || preg_match("/U/",$objects)) && !isset($this->by_name['environment'])){ $this->by_name['environment']= _("Desktop"); $this->by_object['environment']= new environment($this->config, $this->dn); $this->by_object['environment']->parent= &$this; $this->add("environment"); } } /* Remove environment tab if not required any longer */ if(class_available("environment")){ if(!preg_match("/G/",$objects) && !preg_match("/U/",$objects) && isset($this->by_name['environment'])){ $this->remove("environment"); } } /* Add application tab if user or group is member in this object group*/ if(class_available("appgroup")){ if((preg_match("/G/",$objects) || preg_match("/U/",$objects)) && !isset($this->by_name['appgroup'])){ $this->by_name['appgroup']= _("Applications"); $this->by_object['appgroup']= new appgroup($this->config, $this->dn); $this->by_object['appgroup']->acl = "#all#"; $this->by_object['appgroup']->parent= &$this; $this->add('appgroup'); } } /* Remove application tab if not required any longer */ if(class_available("appgroup")){ if(!preg_match("/G/",$objects) && !preg_match("/U/",$objects) && isset($this->by_name['appgroup'])){ $this->remove('appgroup'); } } /* Move reference tab to second position from right */ if(class_available("acl")){ if(isset($this->by_name['acl'])){ $tmp = $this->by_name['acl']; unset($this->by_name['acl']); $this->by_name['acl'] = $tmp; } /* Move reference tab to last position*/ if(class_available("reference")){ if(isset($this->by_name['reference'])){ $tmp = $this->by_name['reference']; unset($this->by_name['reference']); $this->by_name['reference'] = $tmp; } } /* Reset acls */ if($this->dn == "new"){ $this->set_acl_base($this->base); }else{ $this->set_acl_base($this->dn); } foreach($this->by_object as $name => $obj){ $this->by_object[$name]->set_acl_category($this->acl_category); } } } function execute(){ $str = ""; $this->by_object['ogroup']->AddDelMembership(); $this->reload($this->by_object['ogroup']->gosaGroupObjects); $str .= tabs::execute(); return ( $str); } function ogrouptabs($config, $data, $dn,$category ="ogroups",$hide_refs = FALSE, $hide_acls = FALSE) { tabs::tabs($config, $data, $dn, $category,$hide_refs, $hide_acls); $this->base= $this->by_object['ogroup']->base; $this->acl_category = $category; /* Add references/acls/snapshots */ $this->reload($this->by_object['ogroup']->gosaGroupObjects); $this->addSpecialTabs(); } function check($ignore_account= FALSE) { return (tabs::check(FALSE)); } function save_object($save_current= FALSE) { tabs::save_object($save_current); /* Update reference, transfer variables */ $baseobject= $this->by_object['ogroup']; foreach ($this->by_object as $name => $obj){ /* Don't touch base object */ if ($name != 'ogroup'){ $obj->parent = &$this; $obj->uid = $baseobject->uid; $obj->cn = $baseobject->cn; $obj->sn = $baseobject->uid; $obj->givenName = $baseobject->uid; $this->by_object[$name]= $obj; } /* Update parent in base object */ $this->by_object['ogroup']->parent= &$this; } } function save($ignore_account= FALSE) { $baseobject= $this->by_object['ogroup']; /* Check for new 'dn', in order to propagate the 'dn' to all plugins */ $cn = preg_replace('/,/', '\,', $baseobject->cn); $cn = preg_replace('/"/', '\"', $cn); $new_dn= 'cn='.$cn.','.get_ou("group", "ogroupRDN").$baseobject->base; /* Move group? */ if (LDAP::fix($this->dn) != LDAP::fix($new_dn)){ /* Write entry on new 'dn' */ if ($this->dn != "new"){ $baseobject->move($this->dn, $new_dn); $this->by_object['ogroup']= $baseobject; } /* Happen to use the new one */ $this->dn= $new_dn; } if ($this->dn == "new"){ $this->dn= 'cn='.$baseobject->cn.','.get_ou("group", "ogroupRDN").$baseobject->base; } foreach(array_keys($this->to_remove) as $object) { $this->to_remove[$object]->remove_from_parent(); } tabs::save(); } function getCopyDialog() { $this->reload($this->by_object['ogroup']->gosaGroupObjects); return(tabs::getCopyDialog()); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/ogroups/class_ogroupManagement.inc0000644000175000017500000002001111424270233023466 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array(get_ou("group", "ogroupRDN")); // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("ogroup-filter.xml", true)); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("ogroup-list.xml", true)); $headpage->registerElementFilter("filterProperties", "ogroupManagement::filterProperties"); $headpage->setFilter($filter); // Add copy&paste and snapshot handler. if ($this->config->boolValueIsTrue("core", "copyPaste")){ $this->cpHandler = new CopyPasteHandler($this->config); } if($this->config->get_cfg_value("core","enableSnapshots") == "true"){ $this->snapHandler = new SnapshotHandler($this->config); } parent::__construct($config, $ui, "ogroups", $headpage); $this->registerAction("edit_ogroup","editEntry"); $this->registerAction("edit_phonequeue","editEntry"); $this->registerAction("edit_workstartup","editEntry"); $this->registerAction("edit_termgroup","editEntry"); $this->registerAction("sendMessage", "sendMessage"); $this->registerAction("saveEventDialog", "saveEventDialog"); $this->registerAction("abortEventDialog", "closeDialogs"); } // Inject user actions function detectPostActions() { $action = management::detectPostActions(); if(isset($_POST['save_event_dialog'])) $action['action'] = "saveEventDialog"; if(isset($_POST['abort_event_dialog'])) $action['action'] = "abortEventDialog"; return($action); } function editEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { $str = management::editEntry($action,$target); if(preg_match("/^edit_/",$action)){ $tab = preg_replace("/^edit_/","",$action); if(isset($this->tabObject->by_object[$tab])){ $this->tabObject->current = $tab; }else{ trigger_error("Unknown tab: ".$tab); } } if(!empty($str)) return($str); } /*! \brief Sends a message to a set of users using gosa-si events. */ function saveEventDialog() { $this->dialogObject->save_object(); $msgs = $this->dialogObject->check(); if(count($msgs)){ msg_dialog::displayChecks($msgs); }else{ $o_queue = new gosaSupportDaemon(); $o_queue->append($this->dialogObject); if($o_queue->is_error()){ msg_dialog::display(_("Infrastructure error"), msgPool::siError($o_queue->get_error()),ERROR_DIALOG); } $this->closeDialogs(); } } /*! \brief Sends a message to a set of users using gosa-si events. */ function sendMessage($action="",$target=array(),$all=array()) { if(class_available("DaemonEvent_notify")){ // Resolv targets $targets = array(); $m_list = array(); $ldap = $this->config->get_ldap_link(); // Collect selected ogroups foreach($target as $dn){ $ldap->cat($dn, array('member')); while ($entry = $ldap->fetch()) { $m_list[] = $entry; } } // Collect object group member dns foreach($m_list as $entry){ $members = $entry['member']; for($i=0;$i<$members['count'];$i++) { // Fetch member object $ldap->cat($members[$i], array('uid','cn','objectClass')); if ($ldap->count() > 0) { // Determine which type the object has $attrs = $ldap->fetch(); if (array_search('gosaAccount', $attrs['objectClass'])) { $uid = $attrs['uid'][0]; $targets['USERS'][] = $uid; }elseif (array_search('posixGroup', $attrs['objectClass'])) { $group = $attrs['cn'][0]; $targets['GROUPS'][] = $group; } } } } // We've at least one recipient if(count($targets)){ $events = DaemonEvent::get_event_types(USER_EVENT); if(isset($events['BY_CLASS']['DaemonEvent_notify'])){ $type = $events['BY_CLASS']['DaemonEvent_notify']; $this->dialogObject = new $type['CLASS_NAME']($this->config); $this->dialogObject->add_targets($targets); $this->dialogObject->set_type(TRIGGERED_EVENT); } } } } static function filterProperties($row, $gosaGroupObjects) { $conv= array( "Y" => array("plugins/users/images/select_template.png",_("Templates") , "ogroup"), "U" => array("plugins/generic/images/head.png" ,_("User") , "ogroup"), "G" => array("plugins/groups/images/select_group.png" ,_("Group") , "ogroup"), "A" => array("plugins/ogroups/images/application.png" ,_("Application") , "ogroup"), "D" => array("plugins/departments/department.png" ,_("Department") , "ogroup"), "S" => array("plugins/ogroups/images/server.png" ,_("Server") , "ogroup"), "F" => array("plugins/ogroups/images/asterisk.png" ,_("Phone") , "phonequeue"), "W" => array("plugins/ogroups/images/workstation.png" ,_("Workstation") , "workstartup"), "O" => array("plugins/ogroups/images/winstation.png" ,_("Windows Install") , "ogroup"), "T" => array("plugins/ogroups/images/terminal.png" ,_("Terminal") , "termgroup"), "P" => array("plugins/ogroups/images/printer.png" ,_("Printer") , "ogroup")); $types = preg_replace("/[^a-z]/i","",$gosaGroupObjects[0]); $result =""; for($i = 0 ; $i < strlen($types); $i++){ $type = $types[$i]; $result.= image($conv[$type][0], 'listing_edit_'.$conv[$type][2].'_'.$row,$conv[$type][1]); } return($result); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/ogroups/main.inc0000644000175000017500000000343311450302233017721 0ustar mikemikeremove_lock(); } } /* Remove this plugin from session */ if ( $cleanup ){ session::un_set('ogroupManagement'); }else{ /* Create ogroupmanagement object on demand */ if (!session::is_set('ogroupManagement')){ $ogroupManagement= new ogroupManagement ($config, $ui); session::set('ogroupManagement',$ogroupManagement); } $ogroupManagement = session::get('ogroupManagement'); $display= $ogroupManagement->execute(); /* Reset requested? */ if (isset($_GET['reset']) && $_GET['reset'] == 1){ session::un_set ('ogroupManagement'); } /* Show and save dialog */ session::set('ogroupManagement',$ogroupManagement); } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/ogroups/migration/0000755000175000017500000000000011752422552020304 5ustar mikemikegosa-core-2.7.4/plugins/admin/ogroups/migration/class_migrate_ogroupRDN.inc0000644000175000017500000000022511424270246025547 0ustar mikemike gosa-core-2.7.4/plugins/admin/ogroups/ogroup-filter.xml0000644000175000017500000000133711362020733021627 0ustar mikemike ogroups true auto default dn objectClass cn gosaGroupObjects description default LDAP (&(objectClass=gosaGroupOfNames)(cn=$)) cn 0.5 3 gosa-core-2.7.4/plugins/admin/ogroups/class_ogroup.inc0000644000175000017500000007741011656426271021524 0ustar mikemike "gosaUserTemplate", "U" => "gosaAccount", "G" => "posixGroup", "A" => "gosaApplication", "D" => "gosaDepartment", "S" => "goServer", "W" => "gotoWorkstation", "O" => "opsiClient", "T" => "gotoTerminal", "F" => "goFonHardware", "P" => "gotoPrinter"); var $typeToImage = array( "Y" => "plugins/users/images/select_template.png", "U" => "plugins/users/images/select_user.png", "G" => "plugins/groups/images/select_group.png", "A" => "plugins/ogroups/images/application.png", "D" => "plugins/departments/images/department.png", "S" => "plugins/ogroups/images/server.png", "W" => "plugins/ogroups/images/workstation.png", "O" => "plugins/ogroups/images/winstation.png", "T" => "plugins/ogroups/images/terminal.png", "F" => "plugins/ogroups/images/phone.png", "P" => "plugins/ogroups/images/printer.png", "I" => "images/false.png"); /* Variables */ var $cn= ""; var $description= ""; var $base= ""; var $gosaGroupObjects= ""; var $objects= array(); var $objcache= array(); var $memberList= array(); var $member= array(); var $orig_dn= ""; var $orig_cn= ""; var $orig_base= ""; var $objectSelect= FALSE; var $view_logged = FALSE; var $copyMembers = TRUE; var $wasDyGroup = FALSE; var $baseSelector; /* Already assigned Workstations. Will be hidden in selection. */ var $used_workstations = array(); /* attribute list for save action */ var $attributes= array("cn", "description", "gosaGroupObjects","member"); var $objectclasses= array("top", "gosaGroupOfNames"); function ogroup (&$config, $dn= NULL) { plugin::plugin ($config, $dn); $this->trustModeDialog = new trustModeDialog($this->config, $this->dn,NULL); $this->trustModeDialog->setAcl('ogroups/ogroup'); $this->orig_dn= $dn; $this->member = array(); /* Load member objects */ if (isset($this->attrs['member'])){ foreach ($this->attrs['member'] as $key => $value){ if ("$key" != "count"){ $value= @LDAP::convert($value); $this->member["$value"]= "$value"; } } } $this->is_account= TRUE; /* Set base */ if ($this->dn == "new"){ $ui = get_userinfo(); $this->base= dn2base(session::global_is_set("CurrentMainBase")?"cn=dummy,".session::global_get("CurrentMainBase"):$ui->dn); } else { $this->base= preg_replace("/^[^,]+,".preg_quote(get_ou("group", "ogroupRDN"), '/')."/i","",$this->dn); } /* Detect all workstations, which are already assigned to an object group - Those objects will be hidden in the add object dialog. - Check() will complain if such a system is assigned to this object group. */ $base = $this->config->current['BASE']; $res = get_list("(|(objectClass=gotoWorkstation)(objectClass=gotoTerminal))","none" , $base, array("dn"),GL_NO_ACL_CHECK|GL_SUBSEARCH); $ws_dns = array(); foreach($res as $data){ $ws_dns[] = $data['dn']; } $res=get_list("(&(member=*)(objectClass=gosaGroupOfNames))","none", $base, array("dn","member", "gosaGroupObjects"),GL_NO_ACL_CHECK|GL_SUBSEARCH); $this->used_workstations = array(); foreach($res as $og){ if($og['dn'] == $this->dn) continue; $test = array_intersect($ws_dns,LDAP::convert($og['member'])); if(($og['gosaGroupObjects'] == "[W]" || $og['gosaGroupObjects'] == "[T]") && count($test)){ $this->used_workstations = array_merge($this->used_workstations,$test); } } $this->orig_cn = $this->cn; $this->orig_base = $this->base; /* Get global filter config */ if (!session::is_set("sysfilter")){ $ui= get_userinfo(); $base= get_base_from_people($ui->dn); $sysfilter= array( "depselect" => $base, "regex" => "*"); session::set("sysfilter", $sysfilter); } /* Instanciate base selector */ $this->baseSelector= new baseSelector($this->get_allowed_bases(), $this->base); $this->baseSelector->setSubmitButton(false); $this->baseSelector->setHeight(300); $this->baseSelector->update(true); // Prepare lists $this->memberListing = new sortableListing(); $this->memberListing->setDeleteable(true); $this->memberListing->setInstantDelete(false); $this->memberListing->setEditable(false); $this->memberListing->setWidth("100%"); $this->memberListing->setHeight("300px"); $this->memberListing->setHeader(array("~",_("Name"))); $this->memberListing->setColspecs(array('20px','*','20px')); $this->memberListing->setDefaultSortColumn(1); $this->reload(); } function AddDelMembership($NewMember = false){ if($NewMember){ // Ensure that we definitely know the new members attributes. // - Fetch unknown objects here. if(!isset($this->memberList[$NewMember])){ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->cat($NewMember); $attrs = $ldap->fetch(); $this->objcache[$NewMember] = $attrs; } /* Add member and force reload */ $this->member[$NewMember]= $NewMember; $this->memberList[$NewMember]= $this->objcache[$NewMember]; unset ($this->objects[$NewMember]); reset ($this->memberList); $this->reload(); }else{ // Act on list modifications $this->memberListing->save_object(); $action = $this->memberListing->getAction(); if($action['action'] == 'delete'){ foreach($action['targets'] as $id){ $value = $this->memberListing->getKey($id); $this->objects["$value"]= $this->memberList[$value]; unset ($this->memberList["$value"]); unset ($this->member["$value"]); } $this->reload(); } /* Add objects to group */ if (isset($_POST['objectSelect_save']) && $this->objectSelect instanceOf objectSelect){ $objects = $this->objectSelect->save(); $skipped = FALSE; foreach($objects as $object){ $dn = $object['dn']; // Do not add existing members twice! if(isset($this->member["$dn"])){ continue; } $tmp = ""; foreach($this->memberList as $obj){ $tmp .= $obj['type']; } $type = $this->getObjectType($object); $name= $this->getObjectName($object); /* Fill array */ if (isset($object["description"][0])){ $object= array("text" => "$name [".$object["description"][0]."]", "type" => "$type"); } elseif (isset($object["uid"][0])) { $object= array("text" => "$name [".$object["uid"][0]."]", "type" => "$type"); } else { $object= array("text" => "$name", "type" => "$type"); } if(preg_match("/T/",$tmp) && $type == "W"){ $skipped =TRUE; }elseif(preg_match("/W/",$tmp) && $type == "T"){ $skipped =TRUE; }else{ $this->memberList["$dn"]= $object; $this->member["$dn"]= $dn; reset ($this->memberList); } } if($skipped){ msg_dialog::display(_("Information"), _("You cannot combine terminals and workstations in one object group!"), INFO_DIALOG); } $this->objectSelect= FALSE; $this->dialog= FALSE; $this->reload(); } } } function execute() { /* Call parent execute */ plugin::execute(); if(!$this->view_logged){ $this->view_logged = TRUE; new log("view","ogroups/".get_class($this),$this->dn); } /* Do we represent a valid group? */ if (!$this->is_account){ $display= "\"\" ". msgPool::noValidExtension("object group").""; return ($display); } /* Load templating engine */ $smarty= get_smarty(); $tmp = $this->plInfo(); foreach($tmp['plProvidedAcls'] as $name => $translation){ $smarty->assign($name."ACL",$this->getacl($name)); } /*********** * Trusts ***********/ // Handle trust mode dialog $this->dialog = FALSE; $trustModeDialog = $this->trustModeDialog->execute(); if($this->trustModeDialog->trustSelect){ $this->dialog = TRUE; return($trustModeDialog); } $smarty->assign("trustModeDialog",$trustModeDialog); /*********** * Ende - Trusts ***********/ /* Add objects? */ if (isset($_POST["edit_membership"])){ $this->objectSelect= new objectSelect($this->config, get_userinfo()); } /* Add objects finished? */ if (isset($_POST["objectSelect_cancel"])){ $this->objectSelect= FALSE; } /* Manage object add dialog */ if ($this->objectSelect){ session::set('filterBlacklist', array('dn'=> $this->member)); $this->dialog= TRUE; return($this->objectSelect->execute()); } /* Assemble combine string */ if ($this->gosaGroupObjects == "[]"){ $smarty->assign("combinedObjects", _("none")); } elseif (strlen($this->gosaGroupObjects) > 4){ $smarty->assign("combinedObjects", ""._("too many different objects!").""); } else { $conv= array( "U" => _("users"), "G" => _("groups"), "A" => _("applications"), "D" => _("departments"), "S" => _("servers"), "W" => _("workstations"), "O" => _("Windows workstations"), "T" => _("terminals"), "F" => _("phones"), "P" => _("printers")); $type= preg_replace('/[\[\]]/', '', $this->gosaGroupObjects); $p1= $conv[$type[0]]; error_reporting(0); if (isset($type[1]) && preg_match('/[UGADSFOWTP]/', $type[1])){ $p2= $conv[$type[1]]; $smarty->assign("combinedObjects", sprintf("'%s' and '%s'", $p1, $p2)); } else { $smarty->assign("combinedObjects", "$p1"); } error_reporting(E_ALL | E_STRICT); } /* Assign variables */ $smarty->assign("base", $this->baseSelector->render()); $this->memberListing->setAcl($this->getacl("member")); $data = $lData = array(); foreach($this->member as $key => $dn){ $image = 'images/lists/element.png'; $name = $dn; if(isset($this->memberList[$dn])){ $name = $this->memberList[$dn]['text']; if(isset($this->typeToImage[$this->memberList[$dn]['type']])){ $image = $this->typeToImage[$this->memberList[$dn]['type']]; } } $data[$key] = $dn; $lData[$key] = array('data'=> array(image($image),$name)); } if($this->isRestrictedByDynGroup()){ $this->memberListing->setDeleteable(false); $smarty->assign("memberACL", preg_replace("/[^r]/", "", $this->getacl("member"))); $smarty->assign("isRestrictedByDynGroup", TRUE); }else{ $this->memberListing->setDeleteable(true); $smarty->assign("isRestrictedByDynGroup", FALSE); } $this->memberListing->setListData($data,$lData); $this->memberListing->update(); $smarty->assign("memberList",$this->memberListing->render()); /* Fields */ foreach ($this->attributes as $val){ $smarty->assign("$val", set_post($this->$val)); } return ($smarty->fetch (get_template_path('generic.tpl', TRUE))); } function isRestrictedByDynGroup() { $bool = FALSE; if(isset($this->parent->by_object['DynamicLdapGroup'])){ $bool = $this->parent->by_object['DynamicLdapGroup']->isAttributeDynamic('member'); } $this->wasDyGroup |= $bool; return($bool); } function set_acl_base($base) { plugin::set_acl_base($base); $this->trustModeDialog->set_acl_base($base); } /* Save data to object */ function save_object() { /* Save additional values for possible next step */ if (isset($_POST['ogroupedit'])){ $this->trustModeDialog->save_object(); /* Create a base backup and reset the base directly after calling plugin::save_object(); Base will be set seperatly a few lines below */ $base_tmp = $this->base; plugin::save_object(); $this->base = $base_tmp; /* Refresh base */ if ($this->acl_is_moveable($this->base)){ if (!$this->baseSelector->update()) { msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); } if ($this->base != $this->baseSelector->getBase()) { $this->base= $this->baseSelector->getBase(); $this->is_modified= TRUE; } } } } /* (Re-)Load objects */ function reload() { /*########### Variable initialisation ###########*/ $this->objects = array(); $this->ui = get_userinfo(); $filter = ""; $objectClasses = array(); $ogfilter = session::get("ogfilter"); $regex = $ogfilter['regex']; $ldap= $this->config->get_ldap_link(); $ldap->cd ($ogfilter['dselect']); /*########### Generate Filter ###########*/ $p_f= array("accounts"=> array("OBJ"=>"user", "CLASS"=>"gosaAccount" , "DN"=> get_people_ou() ,"ACL" => "users"), "groups" => array("OBJ"=>"group", "CLASS"=>"posixGroup" , "DN"=> get_groups_ou('ogroupRDN') ,"ACL" => "groups"), "departments" => array("OBJ"=>"department", "CLASS"=>"gosaDepartment" , "DN"=> "" ,"ACL" => "department"), "servers" => array("OBJ"=>"servgeneric", "CLASS"=>"goServer" , "DN"=> get_ou("servgeneric", "serverRDN") ,"ACL" => "server"), "workstations" => array("OBJ"=>"workgeneric", "CLASS"=>"gotoWorkstation", "DN"=> get_ou("workgeneric", "workstationRDN") ,"ACL" => "workstation"), "winstations" => array("OBJ"=>"wingeneric", "CLASS"=>"opsiClient", "DN"=> get_ou("wingeneric", 'sambaMachineAccountRDN') ,"ACL" => "winstation"), "terminals" => array("OBJ"=>"termgeneric", "CLASS"=>"gotoTerminal" , "DN"=> get_ou("termgeneric", "terminalRDN") ,"ACL" => "terminal"), "printers" => array("OBJ"=>"printgeneric", "CLASS"=>"gotoPrinter" , "DN"=> get_ou("printgeneric", "printerRDN") ,"ACL" => "printer"), "phones" => array("OBJ"=>"phoneGeneric", "CLASS"=>"goFonHardware" , "DN"=> get_ou("phoneGeneric", "phoneRDN") ,"ACL" => "phone")); /* Allow searching for applications, if we are not using release managed applications */ if(!$this->IsReleaseManagementActivated()){ $p_f[ "applications"] = array("OBJ"=>"application", "CLASS"=>"gosaApplication", "DN"=> get_ou("application", "applicationRDN") ,"ACL" => "application"); } /*########### Perform search for selected objectClasses & regex to fill list with objects ###########*/ $Get_list_flags = 0; if($ogfilter['subtrees'] == "checked"){ $Get_list_flags |= GL_SUBSEARCH; } foreach($p_f as $post_name => $data){ if($ogfilter[$post_name] == "checked" && class_available($data['OBJ'])){ if($ogfilter['subtrees']){ $base = $ogfilter['dselect']; }else{ $base = $data['DN'].$ogfilter['dselect']; } $filter = "(&(objectClass=".$data['CLASS'].")(|(uid=$regex)(cn=$regex)(ou=$regex)))"; $res = get_list($filter, $data['ACL'] , $base, array("description", "objectClass", "sn", "givenName", "uid","ou","cn"),$Get_list_flags); /* fetch results and append them to the list */ foreach($res as $attrs){ /* Skip workstations which are already assigned to an object group. */ if ($this->gosaGroupObjects == "[W]" || $this->gosaGroupObjects == "[T]"){ if(in_array_strict($attrs['dn'],$this->used_workstations)){ continue; } } $type= $this->getObjectType($attrs); $name= $this->getObjectName($attrs); /* Fill array */ if (isset($attrs["description"][0])){ $this->objects[$attrs["dn"]]= array("text" => "$name [".$attrs["description"][0]."]", "type" => "$type"); } elseif (isset($attrs["uid"][0])) { $this->objects[$attrs["dn"]]= array("text" => "$name [".$attrs["uid"][0]."]", "type" => "$type"); } else { $this->objects[$attrs["dn"]]= array("text" => "$name", "type" => "$type"); } } } } reset ($this->objects); /*########### Build member list and try to detect obsolete entries ###########*/ $this->memberList = array(); /* Walk through all single member entry */ foreach($this->member as $dn){ /* The dn for the current member can't be resolved it seams that this entry was removed */ /* Try to resolv the entry again, if it still fails, display error msg */ $ldap->cat($dn, array("cn", "sn", "givenName", "ou", "description", "objectClass", "macAddress")); /* It has failed, add entry with type flag I (Invalid)*/ if (!$ldap->success()){ $this->memberList[$dn]= array('text' => _("Non existing DN:")." ".LDAP::fix($dn),"type" => "I"); } else { /* Append this entry to our all object list */ /* Fetch object */ $attrs= $ldap->fetch(); $type= $this->getObjectType($attrs); $name= $this->getObjectName($attrs); if (isset($attrs["description"][0])){ $this->objcache[$attrs["dn"]]= array("text" => "$name [".$attrs["description"][0]."]", "type" => "$type"); } elseif (isset($attrs["uid"][0])) { $this->objcache[$attrs["dn"]]= array("text" => "$name [".$attrs["uid"][0]."]", "type" => "$type"); } else { $this->objcache[$attrs["dn"]]= array("text" => "$name", "type" => "$type"); } $this->objcache[$attrs["dn"]]['objectClass'] = $attrs['objectClass']; if(isset($attrs['macAddress'][0])){ $this->objcache[$attrs["dn"]]['macAddress'] = $attrs['macAddress'][0]; }else{ $this->objcache[$attrs["dn"]]['macAddress'] = ""; } if(isset($attrs['uid'])){ $this->objcache[$attrs["dn"]]['uid'] = $attrs['uid']; } /* Fill array */ if (isset($attrs["description"][0])){ $this->objects[$attrs["dn"]]= array("text" => "$name [".$attrs["description"][0]."]", "type" => "$type"); } else { $this->objects[$attrs["dn"]]= array("text" => "$name", "type" => "$type"); } $this->memberList[$dn]= $this->objects[$attrs["dn"]]; } } reset ($this->memberList); /* Assemble types of currently combined objects */ $objectTypes= ""; foreach ($this->memberList as $dn => $desc){ /* Invalid object? */ if ($desc['type'] == 'I'){ continue; } /* Fine. Add to list. */ if (!preg_match('/'.$desc['type'].'/', $objectTypes)){ $objectTypes.= $desc['type']; } } $this->gosaGroupObjects= "[$objectTypes]"; } function getObjectType($attrs) { $type= "I"; foreach($this->typeToClass as $index => $class){ if (in_array_strict($class, $attrs['objectClass'])){ $type= $index; break; } } return ($type); } function getObjectName($attrs) { /* Person? */ $name =""; if (in_array_strict('gosaAccount', $attrs['objectClass'])){ if(isset($attrs['sn']) && isset($attrs['givenName'])){ $name= $attrs['sn'][0].", ".$attrs['givenName'][0]; } else { $name= $attrs['uid'][0]; } } else { if(isset($attrs["cn"][0])) { $name= $attrs['cn'][0]; } else { $name= $attrs['ou'][0]; } } return ($name); } function check() { /* Call common method to give check the hook */ $message= plugin::check(); /* Permissions for that base? */ if ($this->base != ""){ $new_dn= 'cn='.$this->cn.','.get_ou("group", "ogroupRDN").$this->base; } else { $new_dn= $this->dn; } /* Check if we have workstations assigned, that are already assigned to another object group. */ if ($this->gosaGroupObjects == "[W]" || $this->gosaGroupObjects == "[T]" ) { $test =array_intersect($this->used_workstations,$this->member); if(count($test)){ $str = ""; foreach($test as $dn){ $str .= "
  • ".$dn."
  • "; } $message[] = sprintf(_("These systems are already configured by other object groups and cannot be added:")."
      %s
    ",$str); } } $ldap = $this->config->get_ldap_link(); if(LDAP::fix($this->dn) != LDAP::fix($new_dn)){ $ldap->cat ($new_dn, array('dn')); } if($ldap->count() !=0){ $message[]= msgPool::duplicated(_("Name")); } // Check if a wrong base was supplied if(!$this->baseSelector->checkLastBaseUpdate()){ $message[]= msgPool::check_base();; } /* Set new acl base */ if($this->dn == "new") { $this->set_acl_base($this->base); } /* must: cn */ if ($this->cn == ""){ $message[]= msgPool::required(_("Name")); } if (preg_match('/[=,+<>#;]/', $this->cn)) { $message[] = msgPool::invalid(_("Name"), $this->cn, "/[^=+,<>#;]/"); } /* To many different object types? */ if (strlen($this->gosaGroupObjects) > 4){ $message[]= _("You can combine two different object types at maximum, only!"); } /* Check if we are allowed to create or move this object */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[] = msgPool::permCreate(); }elseif($this->orig_dn != "new" && $this->base != $this->orig_base && !$this->acl_is_moveable($this->base)){ $message[] = msgPool::permMove(); } return ($message); } /* Save to LDAP */ function save() { // Do not save members if we don't want to. // This may be the case if we've copied an ogroup containing systems! if(!$this->copyMembers){ $this->member = array(); $this->reload(); } plugin::save(); /* Move members to target array */ if(!$this->wasDyGroup && !$this->isRestrictedByDynGroup()){ $this->attrs['member'] =array(); foreach ($this->member as $key => $desc){ $this->attrs['member'][]= LDAP::fix($key); } } $ldap= $this->config->get_ldap_link(); /* New accounts need proper 'dn', propagate it to remaining objects */ if ($this->dn == 'new'){ $this->dn= 'cn='.$this->cn.','.get_ou("group", "ogroupRDN").$this->base; } /* Save data. Using 'modify' implies that the entry is already present, use 'add' for new entries. So do a check first... */ $ldap->cat ($this->dn, array('dn')); if ($ldap->fetch()){ /* Modify needs array() to remove values :-( */ if (!count ($this->member)){ $this->attrs['member']= array(); } $mode= "modify"; } else { $mode= "add"; $ldap->cd($this->config->current['BASE']); $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); } /* Write back to ldap */ $ldap->cd($this->dn); $this->cleanup(); $ldap->$mode($this->attrs); if($mode == "add"){ new log("create","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); }else{ new log("modify","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); } /* Trigger post signal */ $this->handle_post_events($mode); $ret= 0; if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); $ret= 1; }else{ $this->trustModeDialog->dn = $this->dn; $this->trustModeDialog->save(); } return ($ret); } function remove_from_parent() { plugin::remove_from_parent(); $ldap= $this->config->get_ldap_link(); $ldap->rmdir($this->dn); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, 0, get_class())); } new log("remove","ogroups/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); /* Trigger remove signal */ $this->handle_post_events("remove"); } function PrepareForCopyPaste($source) { plugin::PrepareForCopyPaste($source); // Preselect "Copy members" state. // If we've terminals, workstations or servers in our members list, // then disable this option by default, to avoid problems with // inheritance of ogroup values. if (preg_match("/[STW]/", $this->gosaGroupObjects) || !isset($source['member'])) { $this->copyMembers = FALSE; } else { $this->copyMembers = TRUE; } /* Reload tabs */ $this->parent->reload($this->gosaGroupObjects ); $this->trustModeDialog->PrepareForCopyPaste($source); /* Reload plugins */ foreach($this->parent->by_object as $name => $class ){ if(get_class($this) != $name) { $this->parent->by_object[$name]->PrepareForCopyPaste($source); } } $source_o = new ogroup ($this->config, $source['dn']); foreach(array("member","gosaGroupObjects") as $attr){ $this->$attr = $source_o->$attr; } } function getCopyDialog() { $smarty = get_smarty(); $smarty->assign("cn", set_post($this->cn)); $smarty->assign("copyMembers", $this->copyMembers); $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); $ret = array(); $ret['string'] = $str; $ret['status'] = ""; return($ret); } function saveCopyDialog() { if(isset($_POST['cn'])){ $this->cn = get_post('cn'); } $this->copyMembers = isset($_POST['copyMembers']); } function IsReleaseManagementActivated() { return($this->config->pluginEnabled("faiManagement")); } static function plInfo() { return (array( "plShortName" => _("Generic"), "plDescription" => _("Object group generic"), "plSelfModify" => FALSE, "plDepends" => array(), "plPriority" => 1, "plSection" => array("administration"), "plRequirements"=> array( 'ldapSchema' => array('gosaGroupOfNames' => '>=2.7'), 'onFailureDisablePlugin' => array(get_class(), 'ogroupManagement') ), "plCategory" => array("ogroups" => array("description" => _("Object groups"), "objectClass" => "gosaGroupOfNames")), "plProvidedAcls"=> array( "cn" => _("Name"), "base" => _("Base"), "description" => _("Description"), "accessTo" => _("System trust"), "member" => _("Member")) )); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/admin/ogroups/generic.tpl0000644000175000017500000000316311604267023020447 0ustar mikemike
    {$must} {render acl=$cnACL} {/render}
    {render acl=$descriptionACL} {/render}
     
    {$must} {render acl=$baseACL} {$base} {/render}

    {$trustModeDialog}
    {if $isRestrictedByDynGroup} {t}The group members are part of a dyn-group and cannot be managed!{/t}

    {/if}  ({$combinedObjects})
    {render acl=$memberACL} {$memberList} {/render} {if !$isRestrictedByDynGroup} {render acl=$memberACL}   {/render} {/if}
    gosa-core-2.7.4/plugins/admin/ogroups/objectSelect/0000755000175000017500000000000011752422552020721 5ustar mikemikegosa-core-2.7.4/plugins/admin/ogroups/objectSelect/selectObject-list.tpl0000644000175000017500000000124011361070531025006 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/admin/ogroups/objectSelect/selectObject-list.xml0000644000175000017500000000661011347630563025030 0ustar mikemike false false true true users 1 gosaDepartment department department images/lists/folder.png goServer server servgeneric plugins/systems/images/select_server.png gotoWorkstation workstation workgeneric plugins/systems/images/select_workstation.png gotoTerminal terminal termgeneric plugins/systems/images/select_terminal.png gotoPrinter printer printGeneric plugins/systems/images/select_printer.png goFonHardware phone phoneGeneric plugins/systems/images/select_phone.png gosaAccount users user plugins/users/images/select_user.png posixGroup groups group plugins/groups/images/select_group.png |20px;c|220px|| %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 1 %{filter:objectType(dn,objectClass)} cn string %{filter:depLabel(row,dn,pid,base,objectClass,cn)} true description string %{description} true
    edit entry gosaAccount images/lists/edit.png
    gosa-core-2.7.4/plugins/admin/ogroups/objectSelect/class_filterLDAPDepartmentBlacklist.inc0000644000175000017500000000106011424270250030371 0ustar mikemike $entry){ $entries[$key]['cn'] = $entry['ou']; $entries[$key][ $entries[$key]['count'] ]= 'cn'; $entries[$key]['count'] ++; } return(filterLDAPBlacklist::filterByBlacklist($entries)); } } ?> gosa-core-2.7.4/plugins/admin/ogroups/objectSelect/selectObject-filter.xml0000644000175000017500000000343511363247023025335 0ustar mikemike users department group server workstation terminal opsi incoming phone printer winworkstation component true default auto dn objectClass cn sn ou uid givenName description default LDAPBlacklist (& (| (objectClass=gosaAccount) (objectClass=posixGroup) (objectClass=goServer) (objectClass=gotoWorkstation) (objectClass=gotoTerminal) (objectClass=gotoPrinter) (objectClass=goFonHardware) ) (cn=$) ) LDAPDepartmentBlacklist (&(objectClass=gosaDepartment)(cn=$)) cn l o dc c 0.5 3 gosa-core-2.7.4/plugins/admin/ogroups/objectSelect/class_objectSelect.inc0000644000175000017500000000660711613731145025215 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array( get_ou("core", "userRDN"), get_ou("core", "groupRDN"), get_ou("termgeneric", "terminalRDN"), get_ou("workgeneric", "workstationRDN"), get_ou("servgeneric", "serverRDN"), get_ou("printgeneric", "printerRDN"), get_ou("phoneGeneric", "phoneRDN")); // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("selectObject-filter.xml", true, dirname(__FILE__))); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("selectObject-list.xml", true, dirname(__FILE__))); $headpage->registerElementFilter("depLabel", "objectSelect::filterDepLabel"); $this->registerAction("open","openEntry"); $headpage->setFilter($filter); parent::__construct($config, $ui, "object", $headpage); } // An action handler which enables to switch into deparmtment by clicking the names. function openEntry($action,$entry) { $headpage = $this->getHeadpage(); $headpage->setBase(array_pop($entry)); } // A filter which allows to open a department by clicking on the departments name. static function filterDepLabel($row,$dn,$pid,$base,$objectClass, $cn) { $cn = $cn[0]; if(!in_array_strict('gosaDepartment', $objectClass)){ return($cn); } if($dn == $base){ $cn ="."; } $dn= LDAP::fix(func_get_arg(1)); return("$cn"); } function save() { $act = $this->detectPostActions(); $headpage = $this->getHeadpage(); if(!isset($act['targets'])) return(array()); $ret = array(); foreach($act['targets'] as $dn){ $ret[] = $headpage->getEntry($dn); } return($ret); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/generic/0000755000175000017500000000000011752422552015141 5ustar mikemikegosa-core-2.7.4/plugins/generic/references/0000755000175000017500000000000011752422552017262 5ustar mikemikegosa-core-2.7.4/plugins/generic/references/class_ldifViewer.inc0000644000175000017500000000227611472707736023262 0ustar mikemikeinitTime = microtime(TRUE); stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'open', $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); $this->config = &$config; $this->dn = $dn; $ldap = $this->config->get_ldap_link(); $this->ldif=$ldap->generateLdif(LDAP::fix($this->dn),'(objectClass=*)','base'); if(!$ldap->success()){ msg_dialog::display(_("Error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_READ), ERROR_DIALOG); } $this->success = $ldap->success(); $this->error = $ldap->get_error(); } function execute() { $smarty = get_smarty(); $smarty->assign('success', $this->success); $smarty->assign('error', $this->error); $smarty->assign('ldif', set_post($this->ldif)); return($smarty->fetch(get_template_path('ldifViewer.tpl'))); } } ?> gosa-core-2.7.4/plugins/generic/references/class_reference.inc0000644000175000017500000001534511424325206023102 0ustar mikemikeconfig->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->cat($this->dn, array('modifyTimestamp')); if($ldap->count()){ $attrs = $ldap->fetch(); if(isset($attrs['modifyTimestamp'][0])){ $this->modifyTimestamp = $attrs['modifyTimestamp'][0]; } } // Initialize the ACL-resolver $this->aclResolver = new aclResolver($this->config, $this->dn, $this); // References we may have to other objects. $this->referenceFilters = array(); // Check for group membership $this->referenceFilters[] = array( 'filter' => "(&(objectClass=posixGroup)(memberUid={$this->uid}))", 'attrs' => array('cn' => _("Name"),'description' => _("Description")), 'msg' => _("Group membership")); // Check for group membership in rfc 2307 bis mode $this->referenceFilters[] = array( 'filter' => "(&(objectClass=posixGroup)(member=".normalizeLdap($this->dn)."))", 'attrs' => array('cn' => _("Name"),'description' => _("Description")), 'msg' => _("Group membership")." (rfc 2307 bis)"); // Check for role membership $this->referenceFilters[] = array( 'filter' => "(&(objectClass=organizationalRole)(roleOccupant=".normalizeLdap($this->dn)."))", 'attrs' => array('cn' => _("Name"),'description' => _("Description")), 'msg' => _("Role membership")); // Check for objectGroup membership $this->referenceFilters[] = array( 'filter' => "(&(objectClass=gosaGroupOfNames)(member=".normalizeLdap($this->dn)."))", 'attrs' => array('cn' => _("Name"),'description' => _("Description")), 'msg' => _("Object group membership")); // Check for department manager $this->referenceFilters[] = array( 'filter' => "(&(objectClass=gosaDepartment)(manager=".normalizeLdap($this->dn)."))", 'attrs' => array('ou' => _("Name"),'description' => _("Description")), 'msg' => _("Department manager")); // Check for user manager $this->referenceFilters[] = array( 'filter' => "(&(objectClass=gosaAccount)(manager=".normalizeLdap($this->dn)."))", 'attrs' => array('givenName' => _("Given name"),'sn' => _("Surname"),'uid'=>_("UID")), 'msg' => _("User manager")); // Go through filters and detect possible references $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $str = ""; foreach($this->referenceFilters as $filter){ $ldap->search($filter['filter'], array_keys($filter['attrs'])); if(!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_VIEW, get_class())); }elseif($ldap->count()){ $list = new sortableListing(); $list->setDeleteable(false); $list->setEditable(false); $list->setWidth("100%"); $list->setHeight("80px"); $list->setHeader(array_values($filter['attrs'])); $list->setDefaultSortColumn(0); $list->setAcl('rwcdm'); $data = array(); while($attrs = $ldap->fetch()){ $entry = array(); foreach($filter['attrs'] as $name => $desc){ $$name = ""; if(isset($attrs[$name][0])) $$name = $attrs[$name][0]; $entry['data'][] = $$name; } $data[] = $entry; } $list->setListData($data, $data); $list->update(); $str .= "

    ".$filter['msg']."

    "; $str .= $list->render(); $str .= "
    "; } } $this->objectList = $str; } function execute() { // Mark plugin as viewed plugin::execute(); // Show ldif viewer if(isset($_POST['viewLdif'])){ $this->dialog = new ldifViewer($this->config, $this->dn); } if(isset($_POST['cancelLdifViewer'])) $this->dialog = NULL; if($this->dialog instanceOf ldifViewer){ return($this->dialog->execute()); } $smarty = get_smarty(); // Assign permissions $tmp = $this->plInfo(); $ui = get_userinfo(); $category = preg_replace("/\/.*$/", "", $this->acl_category); $smarty->assign('aclREAD', preg_match("/r/",$ui->get_category_permissions($this->dn, 'acl'))); $smarty->assign('completeACL', $ui->has_complete_category_acls($this->dn, $category)); $smarty->assign('someACL', $ui->get_category_permissions($this->dn, $category)); // Convert the modifyTimestamp to a human readable value $tz = timezone::get_default_timezone(); $smarty->assign('modifyTimestamp', set_post(date('d.m.Y H:i:s', strtotime($this->modifyTimestamp)))); $smarty->assign('objectList', $this->objectList); $smarty->assign("acls",$this->aclResolver->getReadableACL()); session::set('autocomplete', $this->aclResolver); return ($smarty->fetch (get_template_path('contents.tpl', TRUE, dirname(__FILE__)))); } } ?> gosa-core-2.7.4/plugins/generic/references/contents.tpl0000644000175000017500000000300111470506143021626 0ustar mikemike

    {t}Object information{/t}

    {if $completeACL|regex_replace:"/[cdmw]/":"" == "r"} {/if}   {if !$someACL|regex_replace:"/[cdmw]/":"" == "r"} {msgPool type='permView'} {else} {if $modifyTimestamp==""} {t}Last modification{/t}: {t}Unknown{/t} {else} {t}Last modification{/t}: {$modifyTimestamp} {/if} {/if}

    {if $objectList!=""} {/if}
    {if !$completeACL|regex_replace:"/[cdmw]/":"" == "r"} {msgPool type='permView'} {else} {$objectList} {/if}   {if !$aclREAD}

    {t}ACL trace{/t}

    {msgPool type='permView'} {else}
    {$acls}
    {/if}
    gosa-core-2.7.4/plugins/generic/references/class_aclResolver.inc0000644000175000017500000003261511613731145023427 0ustar mikemikeconfig = &$config; $this->dn = $dn; $this->parent = $parent; // Replace this with a user defined one later. $ui = get_userinfo(); $this->validateUid = $ui->uid; $this->validateDn = $ui->dn; // Build class mapping - only once, will not change during session. if(!session::is_set('aclConverter::classMapping')){ $tmp= session::global_get('plist'); $plist= $tmp->info; $map = array(); foreach($plist as $class => $plInfo){ if(isset($plInfo['plCategory']) && is_array($plInfo['plCategory'])){ foreach($plInfo['plCategory'] as $category => $desc){ if(!is_numeric($category)){ $map[$category] = $desc['description']; } } } } foreach($plist as $class => $plInfo){ if(isset($plInfo['plCategory']) && is_array($plInfo['plCategory'])){ foreach($plInfo['plCategory'] as $category => $desc){ if(!isset($map[$category])) continue; if(!is_numeric($category)){ $map[$category."/".$class] = $map[$category]." - ".$plInfo['plDescription']; }else{ $map[$desc."/".$class] = $map[$desc]." - ".$plInfo['plDescription']; } } } } session::set('aclConverter::classMapping', $map); } $this->classMapping = session::get('aclConverter::classMapping'); // Define ACL type translations $this->aclTypes= array("reset" => _("Reset ACLs"), "one" => _("One level"), "base" => _("Current object"), "sub" => _("Complete subtree"), "psub" => _("Complete subtree (permanent)"), "role" => _("Use ACL defined in role")); // Enforce to reload acl result $this->renderedList = ""; } function reload() { // Go through all ACLs and get those matching the objects dn. $ui = get_userinfo(); $ui->reset_acl_cache(); $ui->loadACL(); // Get ACL category for the current object. if(isset($this->parent->acl_category) && !empty($this->parent->acl_category)){ $this->acl_category = preg_replace("/\/$/","",$this->parent->acl_category); } foreach($ui->allACLs as $dn => $acls){ if(preg_match("/".preg_quote($dn,'/')."$/i", $this->dn)){ // Foreach dn there is a collection of ACLs indexed by their priority foreach($acls as $prio => $acl){ if($acl['type'] == "reset"){ $this->affectingACLs[$dn][$prio] = $acl; continue; }else{ // Only get those entries with a relevant acl-category foreach($acl['acl'] as $category => $attributes){ if(preg_match("/^all($|\/)/", $category) || preg_match("/^".$this->acl_category."($|\/)/", $category)){ $this->affectingACLs[$dn][$prio] = $acl; continue; } } } } } } } /*! \brief Create a human readable HTML result */ function getReadableACL() { if(isset($_POST['aclTarget'])){ $d = get_post('aclTarget'); if(isset($this->userMap[$d])){ $this->validateDn = $this->userMap[$d]['dn']; $this->validateUid = $this->userMap[$d]['uid'][0]; $this->renderedList = ""; }else{ foreach($this->userMap as $string => $data){ if($data['uid'][0] == $d){ $this->validateDn = $data['dn']; $this->validateUid = $data['uid'][0]; $this->renderedList = ""; } } } } if(empty($this->renderedList)){ $this->reload(); // Autocompleter template $autocompleter ="
    ".image("images/lists/submit.png","aclTargetSubmit"); // Base template - each entry start with this $tpl = "\n ". "\n %s". "\n %s
    %s
    ". "\n ". "\n %s"; // If the acl consists of a user-object-filter then this template is used. $filter_tpl = "\n ". "\n ". "\n "._("Filter")."". "\n
    • %s
    ". "\n "; // Used to display ACL owner of type "group" $gmem_tpl = "\n ". "\n ". "\n "._("Groups")."". "\n
      %s
    ". "\n "; // Used to display ACL owner of type "user" $umem_tpl = "\n ". "\n ". "\n "._("Users")."". "\n
      %s
    ". "\n "; // Used to display the acl contents, except 'reset' and 'role' $acl_tpl = "\n ". "\n ". "\n "._("ACLs")."". "\n
      %s
    ". "\n "; $user = "

    ".sprintf(_("List of effective ACLs for '%s'"), $this->validateUid)."

    "; $str = ""; $str .= " "; $str .= "
    ".$user."".$autocompleter."
    "; $str .= "
    "; $str .= ""; $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ui = get_userinfo(); foreach($this->affectingACLs as $dn => $acls){ foreach($acls as $acl){ // Prepare entry icon (department or element?) $image = (isset($this->config->idepartments[$dn]))? "images/select_department.png":"images/lists/element.png"; // The acl type (sub,psub,reset...) $aclType = $this->aclTypes[$acl['type']]; // Does the filter match for current object? $filter =""; $match = TRUE; if(!empty($acl['filter'])){ $match = $ldap->object_match_filter($this->dn,$acl['filter']); $filter= $acl['filter']; if(!$match){ $filter= "".$filter.""; } } // Check membership $gmem = $umem = ""; $users = $groups = array(); $found = FALSE; foreach($acl['members'] as $type => $name){ // Check if we're part of the members if(preg_match("/^U:/", $type)){ if(preg_match("/^U:".preg_quote($this->validateDn,'/')."/", $type)){ $users[] = $name; $found = TRUE; continue; } $users[] = "".$name.""; } // Check if we're part of the group members if(preg_match("/^G/", $type)){ if($type == "G:*"){ $found = TRUE; $groups[] = $name; continue; } if(preg_match("/^G:/", $type)){ $gdn = preg_replace("/^G:/","",$type); $ldap->cat($gdn,array('memberUid')); if($ldap->count()){ $attrs = $ldap->fetch(); if(isset($attrs['memberUid']) && in_array_strict($this->validateUid, $attrs['memberUid'])){ $found = TRUE; $groups[] = $name; continue; } } } // Mark groups that doesn't match $groups[] = "".$name.""; } } // Build up ACL definition list $defs =""; if($acl['type']!='reset'){ foreach($acl['acl'] as $type => $acl){ if(isset($this->classMapping[$type])){ $defs .= "
  • ".$this->classMapping[$type].": ".$this->aclToString($acl)."
  • "; }else{ $defs .= "
  • ".$type.": ".$this->aclToString($acl)."
  • "; } } } // Display the acl block in a special color if its not matching $class=""; if(!$found || !$match){ $class = "acl-viewer-blocked"; } if(!empty($filter)) $filter =sprintf($filter_tpl,$class,$filter); if(!empty($defs)) $defs = sprintf($acl_tpl,$class,$defs); if(count($users)) $umem = sprintf($umem_tpl,$class,"
  • ".implode($users,'
  • ')."
  • "); if(count($groups)) $gmem = sprintf($gmem_tpl,$class,"
  • ".implode($groups,'
  • ')."
  • "); $str.= sprintf($tpl,$class, image($image), $dn, $aclType, $filter.$gmem.$umem.$defs); } } $str .= "
    "; $str .= "
    "; $this->renderedList = $str; } return($this->renderedList); } function aclToString($acls) { $str ="
      "; foreach($acls as $name => $acl){ if($name == "0") $name = _("All"); $str .= "
    • ".$name.": "; $str .= "
        "; if(preg_match("/s/", $acl)){ $str.="
      • "._("Restrict changes to user's own object").'
      • '; } if(preg_match("/r/", $acl)) $str.="
      • "._("read").'
      • '; if(preg_match("/w/", $acl)) $str.="
      • "._("write").'
      • '; if(preg_match("/c/", $acl)) $str.="
      • "._("create").'
      • '; if(preg_match("/d/", $acl)) $str.="
      • "._("remove").'
      • '; if(preg_match("/m/", $acl)) $str.="
      • "._("move").'
      • '; $str.= "
      "; } return($str."
    "); } function processAutocomplete() { $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=gosaAccount)(|(sn=*".get_post('aclTarget')."*)". "(uid=*".get_post('aclTarget')."*)(givenName=*".get_post('aclTarget')."*)))", array('uid','dn','sn','givenName')); echo "
      "; while($attrs = $ldap->fetch()){ $display = $attrs['givenName'][0]." ".$attrs['sn'][0]." [".$attrs['uid'][0]."]"; echo "
    • {$display}
    • "; $this->userMap[$display] = $attrs; } echo "
    "; } } ?> gosa-core-2.7.4/plugins/generic/dashBoard/0000755000175000017500000000000011752422552017030 5ustar mikemikegosa-core-2.7.4/plugins/generic/dashBoard/dashBoard.tpl0000644000175000017500000000256511473226665021457 0ustar mikemike{if !$instanceRegistered || !$isServerAccessible}

    {t}This feature is only accessible for registrated instances of GOsa{/t}

    {if $registrationServerAvailable} {else} {t}Unfortunately the registration server cannot be reached, maybe the server is down for maintaince or you've no internet access!{/t} {/if} {else}
    {$dbChannelStatus} {$dbPluginStatus}

    {$dbNotifications} {$dbInformation}
    {/if} gosa-core-2.7.4/plugins/generic/dashBoard/class_rssReader.inc0000644000175000017500000000577511613731145022655 0ustar mikemikeload($url); if(!$res){ trigger_error("Failed to load feed '{$url}'!"); }else{ return(self::docToFeedEntries($doc, $url)); } } return(array()); } public static function parseFeedFromSource($sources) { // We support multiple urls at once. if(!is_array($sources)) $urls = array($sources); foreach($sources as $source){ $doc = new DOMDocument(); $res = @$doc->loadXML($source); if(!$res){ trigger_error("Failed to load feed '{$source}'!"); }else{ return(self::docToFeedEntries($doc, 'from source')); } } return(array()); } private static function docToFeedEntries($doc, $url) { $entries = array(); foreach ($doc->getElementsByTagName('item') as $item) { // Collect data from feed $entry = array(); $entry['url'] = $url; foreach(self::$attributes as $attr){ $entry[$attr] =NULL; $obj = $item->getElementsByTagName($attr); if(is_object($obj->item(0))){ $entry[$attr] = $obj->item(0)->nodeValue; } } // Fake timestamp in none is given. if($entry['pubDate'] == NULL){ $entry['timestamp'] = NULL; }else{ // Create an entry timestamp $entry['timestamp'] = strtotime($entry['pubDate']); } $entries[] = $entry; } return($entries); } public static function sortFeedResultBy($feedRes , $sortBy = 'timestamp') { // Do not try to sort for invalid attributes. if(!in_array_strict($sortBy, self::$attributes)){ trigger_error("Invalid sortby attribute '{$sortBy}'!"); return($feedRes); } // Prepare feeds to be sorted, put them in an array indexed by the 'sortBy' attribute. $data = array(); foreach($feedRes as $feed){ $key = "{$feed[$sortBy]}"; $c = '1'; while(empty($key) || isset($data[$key])){ $key = "{$c}_{$feed[$sortBy]}"; $c++; } $data[$key] = $feed; } // Sort the natural way and return the results. uksort($data, 'strnatcasecmp'); return($data); } } ?> gosa-core-2.7.4/plugins/generic/dashBoard/class_dashBoard.inc0000644000175000017500000001031411466470545022605 0ustar mikemikeconfig->registration->registrationRequired() && $config->registration->isServerAccessible()){ if(!$config->registration->isInstanceRegistered()){ $this->dialog = new RegistrationDialog($config); } } $this->initialized = FALSE; } function init() { // Instantiate child classes if( $this->config->registration->isInstanceRegistered() && $this->config->registration->isServerAccessible()){ $this->dbPluginStatus = new dbPluginStatus($this->config); $this->dbChannelStatus = new dbChannelStatus($this->config); $this->dbNotifications = new dbNotifications($this->config); $this->dbInformation = new dbInformation($this->config); $this->initialized = TRUE; } } function execute() { // The wants to registrate his instance of GOsa now! if(isset($_POST['registerNow']) && $this->config->registration->isServerAccessible()){ $this->dialog = new RegistrationDialog($this->config); } // Seems that we haven't registered our GOsa instance yet. // Ask the user to do so, now. if($this->dialog instanceOf RegistrationDialog){ // Check if the registration is complete/canceled if(!$this->dialog->finished()){ return($this->dialog->execute()); }else{ $this->dialog = NULL; } } $this->init(); $smarty = get_smarty(); $smarty->assign('instanceRegistered', $this->config->registration->isInstanceRegistered()); $smarty->assign('isServerAccessible', $this->config->registration->isServerAccessible()); $smarty->assign('registrationServerAvailable', $this->config->registration->isServerAccessible()); if($this->initialized){ $smarty->assign('dbPluginStatus', $this->dbPluginStatus->execute()); $smarty->assign('dbChannelStatus', $this->dbChannelStatus->execute()); $smarty->assign('dbNotifications', $this->dbNotifications->execute()); $smarty->assign('dbInformation', $this->dbInformation->execute()); } return($smarty->fetch(get_template_path('dashBoard.tpl', TRUE))); } function check() { $messages = plugin::check(); if($this->initialized){ $messages = array_merge($this->dbPluginStatus->check()); $messages = array_merge($this->dbChannelStatus->check()); $messages = array_merge($this->dbNotifications->check()); $messages = array_merge($this->dbInformation->check()); } return($messages); } function save_object() { plugin::save_object(); if($this->dialog instanceOf RegistrationDialog){ $this->dialog->save_object(); } if($this->initialized){ $this->dbPluginStatus->save_object(); $this->dbChannelStatus->save_object(); $this->dbNotifications->save_object(); $this->dbInformation->save_object(); } } function save() { plugin::save(); if($this->initialized){ $this->dbPluginStatus->save(); $this->dbChannelStatus->save(); $this->dbNotifications->save(); $this->dbInformation->save(); } } function remove_from_parent() { plugin::remove_from_parent(); if($this->initialized){ $this->dbPluginStatus->remove_from_parent(); $this->dbChannelStatus->remove_from_parent(); $this->dbNotifications->remove_from_parent(); $this->dbInformation->remove_from_parent(); } } } ?> gosa-core-2.7.4/plugins/generic/dashBoard/Register/0000755000175000017500000000000011752422552020614 5ustar mikemikegosa-core-2.7.4/plugins/generic/dashBoard/Register/register.tpl0000644000175000017500000000727511557563230023176 0ustar mikemike

    {t}GOsa registration{/t}

    {if $step == 0} {t}Do you want to register GOsa and benefit from the features it brings?{/t}

    {t}Additionally to the 'Annonomous' account you can:{/t}

    • {t}Access to 'Premium-Channels'.{/t}
    • {t}Watch the status of current plugin updates/patches and the availability of new plugins.{/t}
    • {t}Recieve newsletter, if wanted.{/t}
    • {t}View several usefull statistics about your GOsa installation{/t}.

    {t}What information will be transmitted to the backend and maybe stored:{/t}

    • {t}All personal information filled in the registration form.{/t}
    • {t}Information about the installed plugins and their version.{/t}
    • {t}The GOsa-UUID (will be generated during the registration) and a password, to authenticate.{/t}
    • {t}The bugs you will report and the corresponding trace. You can select what information you want to send in.{/t}
    • {t}When the statistics extension is used. GOsa will transmit information about plugins, their usage and the amount of objects present in your ldap database. No sensitive data is transmitted here, just the object type, the action performed, cpu usage, memory usage, elapsed time...{/t}


    {/if} {if $step == 1 && $default == "registrate"}
    {factory type='password' name='password' id='password' value={$password}}
     
    {$error}

    {/if} {if $step == 2 && $default == "registrate"}

    {t}Registration complete{/t}

    {t}GOsa instance successfully registered{/t}


    {/if} {if $step == 1 && $default == "dontWant"}

    {t}Registration complete{/t}

    {t}GOsa instance will not be registered{/t}


    {/if} gosa-core-2.7.4/plugins/generic/dashBoard/Register/class_RegistrationDialog.inc0000644000175000017500000000747411466536740026311 0ustar mikemikefinished); } function __construct(&$config) { $this->config = $config; // Use empty values initially. foreach($this->attrs as $attr) $this->values[$attr] = ""; } function execute() { $smarty = get_smarty(); $smarty->assign("error", ""); // Registration page one filled in, next step requested. if(isset($_POST['registerPage1'])){ $msgs = $this->check(); if(count($msgs)){ msg_dialog::displayChecks($msgs); }else{ if($this->selectedRegistrationType == "registrate"){ // Try to registrate the instance with the given username and password. $rpcHandle = $this->config->registration->getConnection($this->values['username'],$this->values['password']); $password = $rpcHandle->registerInstance($this->config->getInstanceUuid()); if(!$rpcHandle->success()){ $code = $rpcHandle->getHTTPstatusCode(); if($code == 0){ $smarty->assign("error", _("Communciation with the backend failed! Please check your internet connection!")); }elseif($code == 401){ $smarty->assign("error", _("Authentication failed, please check combination of username and password!")); }elseif($code == 403){ $smarty->assign("error", _("Internal server error, please try again later. If the problem persists contact the GOsa-Team!")); } }else{ $this->step = 2; // Restore the registration postpone value. $prop = $this->config->configRegistry->getProperty('GOsaRegistration','askForRegistration'); $prop->setValue(0); $prop->save(); // Store the returned password $prop = $this->config->configRegistry->getProperty('GOsaRegistration','instancePassword'); $prop->setValue($password); $prop->save(); } } } } $smarty->assign("default", $this->selectedRegistrationType); $smarty->assign("step", $this->step); foreach($this->attrs as $attr) $smarty->assign($attr, set_post($this->values[$attr])); return($smarty->fetch(get_template_path("Register/register.tpl", TRUE))); } function save_object() { foreach($this->attrs as $attr){ if(isset($_POST[$attr])) $this->values[$attr] = get_post($attr); } if(isset($_POST['registrationType'])) $this->selectedRegistrationType = get_post('registrationType'); // Registration type selected and next page choosen. if(isset($_POST['startRegistration'])) $this->step = 1; // Tell GOsa not to ask for a regsitration again. if(isset($_POST['registerComplete'])){ $this->finished = TRUE; if($this->selectedRegistrationType == "dontWant"){ $prop = $this->config->configRegistry->getProperty('GOsaRegistration','askForRegistration'); $prop->setValue(-1); $prop->save(); } } if(isset($_POST['stepBack'])) $this->step -= 1; } } ?> gosa-core-2.7.4/plugins/generic/dashBoard/dbNotifications/0000755000175000017500000000000011752422552022147 5ustar mikemikegosa-core-2.7.4/plugins/generic/dashBoard/dbNotifications/contents.tpl0000644000175000017500000000005611412660056024522 0ustar mikemike

    {t}Notifications{/t}

    {$adviceList} gosa-core-2.7.4/plugins/generic/dashBoard/dbNotifications/class_dbNotifications.inc0000644000175000017500000000272411412656257027157 0ustar mikemikeadviceList = new sortableListing(); $this->adviceList->setDeleteable(false); $this->adviceList->setEditable(false); $this->adviceList->setWidth("100%"); $this->adviceList->setHeight("200px"); $this->adviceList->setAcl("rwcdm"); } function execute() { // Get logs as RSS feed. $rsyslog = new rsyslog($this->config); $source = $rsyslog->logToRss(); // Read Feeds and sort the results $feeds = rssReader::parseFeedFromSource(array($source)); $feeds = rssReader::sortFeedResultBy($feeds, 'timestamp'); // Append the results to the list. $data = $lData = array(); foreach($feeds as $key => $feed){ $data[$key] = $feed; $lData[$key] = array('data'=> array(htmlentities($feed['title'],ENT_QUOTES,'UTF-8'))); } $this->adviceList->setListData($data, $lData); $this->adviceList->update(); // Generate the HTML content $smarty = get_smarty(); $smarty->assign('adviceList', $this->adviceList->render()); return($smarty->fetch(get_template_path('dbNotifications/contents.tpl', TRUE))); } function save_object() { parent::save_object(); $this->adviceList->save_object(); } } ?> gosa-core-2.7.4/plugins/generic/dashBoard/dbInformation/0000755000175000017500000000000011752422552021623 5ustar mikemikegosa-core-2.7.4/plugins/generic/dashBoard/dbInformation/class_dbInformation.inc0000644000175000017500000000361211445626104026276 0ustar mikemikefeedList = new sortableListing(); $this->feedList->setDeleteable(false); $this->feedList->setEditable(true); $this->feedList->setWidth("100%"); $this->feedList->setHeight("200px"); $this->feedList->setAcl("rwcdm"); } function execute() { // Act on clicks on the feed list. $linkOpener = ""; $action = $this->feedList->getAction(); if(isset($action['action']) && $action['action'] == 'edit'){ $data = $this->feedList->getData($action['targets'][0]); if(isset($data['link']) && !empty($data['link'])){ $linkOpener = ' '; } } // Read Feeds and sort the results $feeds = rssReader::parseFeedFromUrl(array('http://www.heise.de/newsticker/heise.rdf')); $feeds = rssReader::sortFeedResultBy($feeds, 'timestamp'); // Append the results to the list. $data = $lData = array(); foreach($feeds as $key => $feed){ $data[$key] = $feed; $lData[$key] = array('data'=> array(htmlentities($feed['title'],ENT_QUOTES,'UTF-8'))); } $this->feedList->setListData($data, $lData); $this->feedList->update(); // Generate the HTML content $smarty = get_smarty(); $smarty->assign('feedList', $this->feedList->render()); return($linkOpener.$smarty->fetch(get_template_path('dbInformation/contents.tpl', TRUE))); } function save_object() { parent::save_object(); $this->feedList->save_object(); } } ?> gosa-core-2.7.4/plugins/generic/dashBoard/dbInformation/contents.tpl0000644000175000017500000000005211412660056024172 0ustar mikemike

    {t}Information{/t}

    {$feedList} gosa-core-2.7.4/plugins/generic/dashBoard/dbChannelStatus/0000755000175000017500000000000011752422552022112 5ustar mikemikegosa-core-2.7.4/plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc0000644000175000017500000000451211426477335027065 0ustar mikemikechannelList= new sortableListing(); $this->channelList->setDeleteable(false); $this->channelList->setEditable(false); $this->channelList->setColspecs(array('30px','120px','*','100px')); $this->channelList->setHeader(array('?',_("Name"),_("Description"),_("Status"))); $this->channelList->setWidth("100%"); $this->channelList->setDefaultSortColumn(1); $this->channelList->setHeight("200px"); $this->channelList->setAcl("rwcdm"); } function execute() { $smarty = get_smarty(); $channel = array(); $channel[] = array( 'icon' => image('images/true.png'), 'name' => 'GONICUS support', 'desc' => 'GONICUS helps you all time!', 'stat' => 'Online' ); $channel[] = array( 'icon' => image('images/true.png'), 'name' => 'Free', 'desc' => 'Free channel, basic GOsa plugins!', 'stat' => 'Online' ); $channel[] = array( 'icon' => image('images/small_error.png'), 'name' => 'Experimental', 'desc' => 'May be down for maintance!', 'stat' => 'Offline' ); $data = $lData = array(); foreach($channel as $key => $ch){ $data[$key] = $ch; $lData[$key] = array('data' => array($ch['icon'],$ch['name'], $ch['desc'], $ch['stat'])); } $this->channelList->setListData($data,$lData); $this->channelList->update(); $smarty->assign('channelList', $this->channelList->render()); return($smarty->fetch(get_template_path('dbChannelStatus/contents.tpl', TRUE))); } function save_object() { parent::save_object(); } function save() { parent::save(); } function check() { return(parent::check()); } function remove_from_parent() { parent::remove_from_parent(); } } ?> gosa-core-2.7.4/plugins/generic/dashBoard/dbChannelStatus/contents.tpl0000644000175000017500000000005211426477335024474 0ustar mikemike

    {t}Channels{/t}

    {$channelList} gosa-core-2.7.4/plugins/generic/dashBoard/main.inc0000644000175000017500000000263511412375426020455 0ustar mikemikesave_object(); $display= $dashBoard->execute (); $display.= "\n"; /* Store changes in session */ session::set('dashBoard',$dashBoard); } ?> gosa-core-2.7.4/plugins/generic/dashBoard/dbPluginStatus/0000755000175000017500000000000011752422552022000 5ustar mikemikegosa-core-2.7.4/plugins/generic/dashBoard/dbPluginStatus/contents.tpl0000644000175000017500000000005611412660056024353 0ustar mikemike

    {t}Plugin status{/t}

    {$pluginList} gosa-core-2.7.4/plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc0000644000175000017500000000707111412660734026634 0ustar mikemikeinstalledPlugins = $this->config->configRegistry->getListOfPlugins(); $this->disabledPlugins = $this->config->configRegistry->getDisabledPlugins(); // Construct the plugin list. $this->pluginList= new sortableListing(); $this->pluginList->setDeleteable(false); $this->pluginList->setEditable(false); $this->pluginList->setColspecs(array('30px','120px','*','100px')); $this->pluginList->setHeader(array('?',_("Name"),_("Description"),_("Status"))); $this->pluginList->setWidth("100%"); $this->pluginList->setDefaultSortColumn(1); $this->pluginList->setHeight("200px"); $this->pluginList->setAcl("rwcdm"); } function execute() { $smarty = get_smarty(); // Build up list data $data = $lData = array(); foreach($this->installedPlugins as $plugin => $plInfo){ // Build plugin name $name = $plugin; if(isset($plInfo['plShortName'])){ $name = $plInfo['plShortName']; } // Build plugin description $desc = "-"; if(isset($plInfo['plDescription'])){ $desc = $plInfo['plDescription']; } // Build image $image = image('images/true.png'); // Detect the plugin status $status = 'OK'; if(isset($this->disabledPlugins[$plugin])){ $status = 'Failure'; $image = image('images/small_error.png'); // Check if an invalid schema is the reason $reasons = $this->config->configRegistry->getSchemaResults(); if(isset($plInfo['plRequirements']['ldapSchema'])){ foreach($plInfo['plRequirements']['ldapSchema'] as $class => $requirements){ if(isset($reasons['versionMismatch'][$class])){ $reason = strip_tags($reasons['versionMismatch'][$class]); $status = ""._("Version mismatch").""; } if(isset($reasons['missing'][$class])){ $reason = strip_tags($reasons['missing'][$class]); $status = ""._("Schema missing").""; } } } } // Add entry/line to the list $data[$plugin] = $plInfo; $lData[$plugin] = array('data' => array($image,$name,$desc, $status)); } $this->pluginList->setListData($data,$lData); $this->pluginList->update(); $smarty->assign('pluginList', $this->pluginList->render()); return($smarty->fetch(get_template_path('dbPluginStatus/contents.tpl', TRUE))); } function save_object() { parent::save_object(); $this->pluginList->save_object(); } function save() { parent::save(); } function check() { return(parent::check()); } function remove_from_parent() { parent::remove_from_parent(); } } ?> gosa-core-2.7.4/plugins/generic/welcome/0000755000175000017500000000000011752422552016574 5ustar mikemikegosa-core-2.7.4/plugins/generic/welcome/class_welcome.inc0000644000175000017500000000030311412375206022077 0ustar mikemike gosa-core-2.7.4/plugins/generic/welcome/main.inc0000644000175000017500000000222011475414015020204 0ustar mikemikeassign("iconmenu", $plist->show_iconmenu()); $smarty->assign("year", date("Y")); $smarty->assign("revision", get_gosa_version()); $display= $smarty->fetch(get_template_path('welcome.tpl', TRUE)); } ?> gosa-core-2.7.4/plugins/generic/welcome/welcome.tpl0000644000175000017500000000045511342717422020752 0ustar mikemike
    {$iconmenu}

    gosa-core-2.7.4/plugins/generic/statistics/0000755000175000017500000000000011752422552017333 5ustar mikemikegosa-core-2.7.4/plugins/generic/statistics/statistics.tpl0000644000175000017500000000757711470506143022262 0ustar mikemike

    {t}Usage statistics{/t}

    {if $registrationNotWanted} {t}This feature is disabled. To enable it you have to register GOsa, you can initiate a registration using the dash-board plugin.{/t} {else if !$instanceRegistered} {t}This feature is disabled. To enable it you have to register GOsa, you can initiate a registration using the dash-board plugin.{/t} {else if !$serverAccessible || !$validRpcHandle || $rpcHandle_Error} {t}Communication with the GOsa-backend failed. Please check the RPC configuration!{/t} {else} {if $unsbmittedFiles != 0} {$unsbmittedFilesMsg}
    {/if}
    {t}Generate report for{/t}:

    {if isset($staticChart1_ID) && $staticChart1_ID} {else}
    {t}No statistic data for given period{/t}
    {/if}
    {if isset($staticChart2_ID) && $staticChart2_ID} {else}
    {t}No statistic data for given period{/t}
    {/if}
    {if isset($curGraphID) && $curGraphID}
    {t}Select report type{/t}:  {$curGraphOptions}
    {$curSeriesSelector}
    {/if} {/if} gosa-core-2.7.4/plugins/generic/statistics/chartClasses/0000755000175000017500000000000011752422552021752 5ustar mikemikegosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_actionSelectChart.inc0000644000175000017500000001116711613731145027234 0ustar mikemikegraphName = get_class(); } /*! \brief Generates the line-graph which displays the plugin usage over time. */ function render() { $lineMax = 10; $gData = $this->graphData; $dataSet = new pData; $seriesCnt = 0; $pCache = new pCache($this->cachePath); // Check if we've received data for the graph we've to render now. $seriesValid = count($gData['actionTypeGraph']); if($seriesValid){ // Ensure that we've a valid action type selected. if(!isset($gData['actionTypeGraph'][$this->current_action])){ $this->current_action = key($gData['actionTypeGraph']); } $dataBase = $gData['actionTypeGraph'][$this->current_action]; foreach($dataBase as $category => $entriesPerDate){ if(empty($category) || in_array_strict($category, $this->skipSeries)) continue; // Add results to our data set. $dataSet->AddPoint($entriesPerDate, $category); $dataSet->SetSerieName($this->getCategoryTranslation($category), $category); $dataSet->AddSerie($category); // Detect maximum value, to adjust the Y-Axis $tmpMax = max($entriesPerDate); if($tmpMax > $lineMax) $lineMax = $tmpMax; $seriesCnt ++; } // Keep a list of all selecteable data-series, to allow the user to disable // or enable series on demand. $this->seriesList = array(); foreach($dataBase as $key => $data){ $this->seriesList[$key] = $this->getCategoryTranslation($key); } } // Add timeline $dataSet->AddPoint($gData['dates'], 'date'); $dataSet->SetAbsciseLabelSerie('date'); // Read graph from cache? if($this->enableCaching && $pCache->IsInCache(get_class(),$dataSet->GetData())){ $filename = $pCache->GetHash(get_class(),$dataSet->GetData()); $filename = '/var/spool/gosa/'.$filename; if(file_exists($filename) && is_readable($filename)){ $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)).rand(0,99999); session::set('statistics::graphFile'.$this->graphID,$filename); return; } } $chart = new pChart(900,230); $chart->setFixedScale(0,$lineMax); $chart->setFontProperties("./themes/default/fonts/LiberationSans-Regular.ttf",10); $chart->setGraphArea(50,28,630,200); $chart->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $chart->drawRoundedRectangle(5,5,695,225,5,230,230,230); $chart->drawGraphArea(255,255,255,TRUE); $chart->drawGrid(4,TRUE,200,200,200,50); $chart->drawTreshold(0,143,55,72,TRUE,TRUE); $chart->drawTitle(50,22,_($this->title),50,50,50,585); $chart->drawScale($dataSet->GetData(),$dataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2, TRUE); // Only draw this graph if we've at least one series to draw! if($seriesCnt){ $chart->drawFilledLineGraph($dataSet->GetData(),$dataSet->GetDataDescription(),50,TRUE); $chart->drawLegend(720,0,$dataSet->GetDataDescription(),255,255,255); } // Generate new and unique graph id $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)); $file = '/tmp/graph_'.$this->graphID; $chart->Render($file); session::set('statistics::graphFile'.$this->graphID,$file); $pCache->WriteToCache(get_class(),$dataSet->GetData(),$chart); return; } function getGraphOptions() { $current = $this->current_action; $str = " "._("Action").": ". ""; return($str); } function save_object() { parent::save_object(); if(isset($_POST['actionSelectChart_action'])){ $this->current_action = get_post('actionSelectChart_action'); } } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc0000644000175000017500000001243011613731145030255 0ustar mikemikegraphName = get_class(); } /*! \brief Generates the line-graph which displays the plugin usage over time. */ function render() { $lineMax = 100; $gData = $this->graphData; $errorMax = (max($gData['errorsPerInterval']) < 100)? 100:max($gData['errorsPerInterval']); $dataSet = new pData; $seriesCnt = 0; foreach($gData['actionsGraph'] as $category => $entriesPerDate){ if(empty($category) || in_array_strict($category, $this->skipSeries)) continue; // Add results to our data set. $dataSet->AddPoint($entriesPerDate, $category); $dataSet->SetSerieName($this->getCategoryTranslation($category), $category); $dataSet->AddSerie($category); // Detect maximum value, to adjust the Y-Axis $tmpMax = max($entriesPerDate); if($tmpMax > $lineMax) $lineMax = $tmpMax; $seriesCnt ++; } // Keep a list of all selecteable data-series, to allow the user to disable // or enable series on demand. $this->seriesList = array(); foreach($gData['actionsGraph'] as $key => $data){ $this->seriesList[$key] = $this->getCategoryTranslation($key); } $this->seriesList['errorsPerInterval'] = _("Error"); // Create a dataSet containing all series $allSeriesDataSet = clone $dataSet; if(!in_array_strict('errorsPerInterval', $this->skipSeries)){ $allSeriesDataSet->AddPoint($gData['errorsPerInterval'], 'Errors'); $allSeriesDataSet->SetSerieName(_('Error'), 'Errors'); $allSeriesDataSet->AddSerie('Errors'); } // Add timeline $dataSet->AddPoint($gData['dates'], 'date'); $dataSet->SetAbsciseLabelSerie('date'); // Read graph from cache? $pCache = new pCache($this->cachePath); if($this->enableCaching && $pCache->IsInCache(get_class(),$allSeriesDataSet->GetData())){ $filename = $pCache->GetHash(get_class(),$allSeriesDataSet->GetData()); $filename = '/var/spool/gosa/'.$filename; if(file_exists($filename) && is_readable($filename)){ $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)).rand(0,99999); session::set('statistics::graphFile'.$this->graphID,$filename); return; } } $chart = new pChart(900,230); $chart->setFixedScale(0.000,$lineMax); $chart->setFontProperties("./themes/default/fonts/LiberationSans-Regular.ttf",10); $chart->setGraphArea(50,28,630,200); $chart->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $chart->drawRoundedRectangle(5,5,695,225,5,230,230,230); $chart->drawGraphArea(255,255,255,TRUE); $chart->drawGrid(4,TRUE,200,200,200,50); $chart->drawTreshold(0,143,55,72,TRUE,TRUE); $chart->drawTitle(50,22,_($this->title),50,50,50,585); $chart->drawScale($dataSet->GetData(),$dataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2, TRUE); // Only draw this graph if we've at least one series to draw! if($seriesCnt){ $chart->drawFilledLineGraph($dataSet->GetData(),$dataSet->GetDataDescription(),50,TRUE); } // Do we've to add the errors series? // If we have to, then add the error-data-series. // and set the color for the new error-series to red. if(!in_array_strict('errorsPerInterval', $this->skipSeries)){ // Set the color for the error Series to 'red'. // This has to be done before drawing the legend. $chart->setColorPalette($seriesCnt,255,0,0); $dataSet->AddPoint($gData['errorsPerInterval'], 'Errors'); $dataSet->SetSerieName(_('Error'), 'Errors'); $dataSet->AddSerie('Errors'); } $chart->drawLegend(720,0,$dataSet->GetDataDescription(),255,255,255); // Draw the error graph on top of the other graphs now. // But remove the category-graph before. if(!in_array_strict('errorsPerInterval', $this->skipSeries)){ // Remove all graph series and add the error-series, then draw the new graph. // (It is not relevant if it was really added before, so we simply remove all series!) foreach($gData['actionsGraph'] as $category => $data){ $dataSet->RemoveSerie($category); } $chart->setFixedScale(0,$errorMax); $chart->drawRightScale($dataSet->GetData(),$dataSet->GetDataDescription(),SCALE_NORMAL,120,150,150,TRUE,0,2, TRUE); $chart->drawBarGraph($dataSet->GetData(),$dataSet->GetDataDescription()); } // Generate new and unique graph id $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)); $file = '/tmp/graph_'.$this->graphID; $chart->Render($file); session::set('statistics::graphFile'.$this->graphID,$file); $pCache->WriteToCache(get_class(),$allSeriesDataSet->GetData(),$chart); return; } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_renderTimeChart.inc0000644000175000017500000000104311473226545026714 0ustar mikemikegraphName = get_class(); // Generate graph which displays the memory usage over time $this->series = array( 'max_render' => _('Maximum'), 'avg_render' => _('Average'), 'min_render' => _('Minimum')); $this->dataName = "usagePerInterval"; } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_pieChart2.inc0000644000175000017500000000041011435141074025441 0ustar mikemikegraphName = get_class(); } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_passwordChangeChart.inc0000644000175000017500000000717011613731145027566 0ustar mikemikegraphName = get_class(); } /*! \brief Generates the line-graph which displays the plugin usage over time. */ function render() { $lineMax = 10; $gData = $this->graphData; $dataSet = new pData; $seriesCnt = 0; $dataBase = $gData['usedPasswordHashes']; foreach($dataBase as $category => $entriesPerDate){ if(empty($category) || in_array_strict($category, $this->skipSeries)) continue; // Add results to our data set. $dataSet->AddPoint($entriesPerDate, $category); $dataSet->SetSerieName($this->getCategoryTranslation($category), $category); $dataSet->AddSerie($category); // Detect maximum value, to adjust the Y-Axis $tmpMax = max($entriesPerDate); if($tmpMax > $lineMax) $lineMax = $tmpMax; $seriesCnt ++; } // Keep a list of all selecteable data-series, to allow the user to disable // or enable series on demand. $this->seriesList = array(); foreach($dataBase as $key => $data){ $this->seriesList[$key] = $this->getCategoryTranslation($key); } // Add timeline $dataSet->AddPoint($gData['dates'], 'date'); $dataSet->SetAbsciseLabelSerie('date'); // Read graph from cache? $pCache = new pCache($this->cachePath); if($this->enableCaching && $pCache->IsInCache(get_class(),$dataSet->GetData())){ $filename = $pCache->GetHash(get_class(),$dataSet->GetData()); $filename = '/var/spool/gosa/'.$filename; if(file_exists($filename) && is_readable($filename)){ $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)).rand(0,99999); session::set('statistics::graphFile'.$this->graphID,$filename); return; } } $chart = new pChart(900,230); $chart->setFixedScale(0,$lineMax); $chart->setFontProperties("./themes/default/fonts/LiberationSans-Regular.ttf",10); $chart->setGraphArea(50,28,630,200); $chart->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $chart->drawRoundedRectangle(5,5,695,225,5,230,230,230); $chart->drawGraphArea(255,255,255,TRUE); $chart->drawGrid(4,TRUE,200,200,200,50); $chart->drawTreshold(0,143,55,72,TRUE,TRUE); $chart->drawTitle(50,22,_($this->title),50,50,50,585); $chart->drawScale($dataSet->GetData(),$dataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2, TRUE); // Only draw this graph if we've at least one series to draw! if($seriesCnt){ $chart->drawFilledLineGraph($dataSet->GetData(),$dataSet->GetDataDescription(),50,TRUE); #$chart->drawBarGraph($dataSet->GetData(),$dataSet->GetDataDescription(),TRUE); #$chart->drawStackedBarGraph($dataSet->GetData(),$dataSet->GetDataDescription(),TRUE); $chart->drawLegend(720,0,$dataSet->GetDataDescription(),255,255,255); } // Generate new and unique graph id $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)); $file = '/tmp/graph_'.$this->graphID; $chart->Render($file); session::set('statistics::graphFile'.$this->graphID,$file); $pCache->WriteToCache(get_class(),$dataSet->GetData(),$chart); return; } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_statChart.inc0000644000175000017500000000737611613731145025601 0ustar mikemikeget_cfg_value('core', 'statsDatabaseDirectory'); if(!empty($path)){ $this->cachePath = "{$path}/images/"; }else{ $this->cachePath = "/var/spool/gosa/stats/images/"; } // Try to create the cache path if(!is_dir($this->cachePath)){ @mkdir($this->cachePath); } $this->config = $config; // Collect category translations $this->catTranslations = array(); foreach($this->config->configRegistry->getListOfPlugins() as $plugin => $data){ if(isset($data['plCategory'])){ foreach($data['plCategory'] as $id => $name){ if(!is_numeric($id)){ $this->catTranslations[$id] = $name['description']; } } } } } function getTitle() { return(_($this->title)); } function setGraphData($data) { $this->graphData = $data; } /*! \brief This method tries to translate category names. * @param The category name to translate * @return String The translated category names. */ function getCategoryTranslation($name) { $ret =""; // We do not have a category for systems directly, so we've to map all system types to 'System'. // If we do not map to _(Systems) the graph legend will be half screen width. if($name == "systems"){ return(_("Systems")); } // Walk through category names and try to find a translation. $cat = trim($name); if(isset($this->catTranslations[$cat])){ $cat = _($this->catTranslations[$cat]); }elseif(!empty($cat)){ $cat = _($cat); } return($cat); } function getGraphID() { return($this->graphID); } function getSeriesList() { return($this->seriesList); } function getGraphOptions() { return(""); } function getSeriesSelector() { $str = ""; $list = $this->getSeriesList(); foreach($list as $key => $item){ $checked = (in_array_strict($key, $this->skipSeries))? '': 'checked'; $str .= "". " ". " "; } return($str); } function save_object() { if(!isset($_POST["{$this->graphName}_posted"])) return; // Get series to enable or disable $this->skipSeries = array(); foreach($this->seriesList as $seriesName => $seriesDesc){ if(!isset($_POST["addSeries_{$this->graphName}_{$seriesName}"])){ $this->skipSeries[] = $seriesName; } } } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc0000644000175000017500000000102711473226545026207 0ustar mikemikegraphName = get_class(); // Generate graph which displays the memory usage over time $this->series = array( 'max_load' => _('Maximum'), 'avg_load' => _('Average'), 'min_load' => _('Minimum')); $this->dataName = "usagePerInterval"; } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_objectCountChart.inc0000644000175000017500000000661511613731145027100 0ustar mikemikegraphName = get_class(); } /*! \brief Generates the line-graph which displays the plugin usage over time. */ function render() { $lineMax = 20; $gData = $this->graphData; $dataSet = new pData; $seriesCnt = 0; foreach($gData['objectCountPerInterval'] as $category => $count){ if(empty($category) || in_array_strict($category, $this->skipSeries)) continue; // Add results to our data set. $dataSet->AddPoint($count, $category); $dataSet->SetSerieName($this->getCategoryTranslation($category), $category); $dataSet->AddSerie($category); // Detect maximum value, to adjust the Y-Axis $tmpMax = max($count); if($tmpMax > $lineMax) $lineMax = $tmpMax; $seriesCnt ++; if($seriesCnt>=8) break; } // Keep a list of all selecteable data-series, to allow the user to disable // or enable series on demand. $this->seriesList = array(); foreach($gData['objectCountPerInterval'] as $key => $data){ $this->seriesList[$key] = $this->getCategoryTranslation($key); } // Add timeline $dataSet->AddPoint($gData['dates'], 'date'); $dataSet->SetAbsciseLabelSerie('date'); // Read graph from cache? $pCache = new pCache($this->cachePath); if($this->enableCaching && $pCache->IsInCache(get_class(),$dataSet->GetData())){ $filename = $pCache->GetHash(get_class(),$dataSet->GetData()); $filename = '/var/spool/gosa/'.$filename; if(file_exists($filename) && is_readable($filename)){ $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)).rand(0,99999); session::set('statistics::graphFile'.$this->graphID,$filename); return; } } $chart = new pChart(900,230); $chart->setFixedScale(0,$lineMax); $chart->setFontProperties("./themes/default/fonts/LiberationSans-Regular.ttf",10); $chart->setGraphArea(50,28,630,200); $chart->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $chart->drawRoundedRectangle(5,5,695,225,5,230,230,230); $chart->drawGraphArea(255,255,255,TRUE); $chart->drawGrid(4,TRUE,200,200,200,50); $chart->drawTreshold(0,143,55,72,TRUE,TRUE); $chart->drawTitle(50,22,_($this->title),50,50,50,585); $chart->drawScale($dataSet->GetData(),$dataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2, TRUE); // Only draw this graph if we've at least one series to draw! if($seriesCnt){ $chart->drawFilledLineGraph($dataSet->GetData(),$dataSet->GetDataDescription(),50,TRUE); $chart->drawLegend(720,0,$dataSet->GetDataDescription(),255,255,255); } // Generate new and unique graph id $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)); $file = '/tmp/graph_'.$this->graphID; $chart->Render($file); session::set('statistics::graphFile'.$this->graphID,$file); $pCache->WriteToCache(get_class(),$dataSet->GetData(),$chart); return; } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc0000644000175000017500000000672111473226545027123 0ustar mikemikegraphName = get_class(); // Generate graph which displays the memory usage over time $this->series = array( 'max_mem' => _('Maximum'), 'avg_mem' => _('Average'), 'min_mem' => _('Minimum')); $this->dataName = "usagePerInterval"; } /*! \brief Generates the line-graph which displays the plugin usage over time. */ function render() { // Add series data to dataSet $dataSet = new pData; $max = 1; foreach($this->series as $seriesName => $seriesDesc){ // Check if we've useable series data $renderable = (isset($this->graphData[$this->dataName][$seriesName])) && (count($this->graphData[$this->dataName][$seriesName])); // Add series if it has at least one result if($renderable){ $dataSet->AddPoint($this->graphData[$this->dataName][$seriesName],$seriesName); $dataSet->SetSerieName($seriesDesc,$seriesName); if($max < max($this->graphData[$this->dataName][$seriesName])) $max = max($this->graphData[$this->dataName][$seriesName]); } } $dataSet->AddAllSeries(); $dataSet->AddPoint($this->graphData['dates'], 'date'); $dataSet->SetAbsciseLabelSerie('date'); // Read graph from cache? $pCache = new pCache($this->cachePath); if($this->enableCaching && $pCache->IsInCache(get_class(),$dataSet->GetData())){ $filename = $pCache->GetHash(get_class(),$dataSet->GetData()); $filename = '/var/spool/gosa/'.$filename; if(file_exists($filename) && is_readable($filename)){ $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)).rand(0,99999); session::set('statistics::graphFile'.$this->graphID,$filename); return; } } $chart = new pChart(800,230); $chart->setFixedScale(0,$max); $chart->setFontProperties("./themes/default/fonts/LiberationSans-Regular.ttf",10); $chart->setGraphArea(50,30,585,200); $chart->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $chart->drawRoundedRectangle(5,5,695,225,5,230,230,230); $chart->drawGraphArea(255,255,255,TRUE); $chart->drawGrid(4,TRUE,200,200,200,50); $chart->drawTreshold(0,143,55,72,TRUE,TRUE); $chart->drawTitle(50,22,$this->title,50,50,50,585); $chart->drawLegend(650,30,$dataSet->GetDataDescription(),255,255,255); $chart->drawScale($dataSet->GetData(),$dataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2, FALSE); # $chart->drawFilledCubicCurve($dataSet->GetData(),$dataSet->GetDataDescription(),.1,50); $chart->drawFilledLineGraph($dataSet->GetData(),$dataSet->GetDataDescription(),50,TRUE); // Generate new and unique graph id $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)); $file = '/tmp/graph_'.$this->graphID; $chart->Render($file); session::set('statistics::graphFile'.$this->graphID,$file); $pCache->WriteToCache(get_class(),$dataSet->GetData(),$chart); return; } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_durationTimeChart.inc0000644000175000017500000000104011473226545027257 0ustar mikemikegraphName = get_class(); // Generate graph which displays the memory usage over time $this->series = array( 'max_dur' => _('Maximum'), 'avg_dur' => _('Average'), 'min_dur' => _('Minimum')); $this->dataName = "usagePerInterval"; } } ?> gosa-core-2.7.4/plugins/generic/statistics/chartClasses/class_pieChart1.inc0000644000175000017500000000621611435450663025461 0ustar mikemikegraphName = get_class(); } /*! \brief Generate the pie-chart which displays the overall-plugin-usage */ function render() { // Do nothing, if we've no data. $data = array(); if(isset($this->graphData[$this->keyName]) && count($this->graphData[$this->keyName])){ $data = $this->graphData[$this->keyName]; } // Sort data by usage count and slice array to get // the eight most used categories arsort($data); // Detect max value and throw out entries less than 1% // the will else be unreadable $max = (count($data)) ? max($data) : 1; $pos = 0; foreach($data as $key => $count){ if($pos >=7 || ($count / $max)*100 < 1) break; $pos ++; } $this->graphID = 0; $dataRes = array_slice($data,0,$pos); // Get the rest of categories and combine them 'others' $theRest = array_slice($data,$pos); $dataRes['remaining'] = array_sum($theRest); // Try to find a translation for the given category names $values = array_values($dataRes); $keys = array_keys($dataRes); foreach($keys as $id => $cat){ $keys[$id] = $this->getCategoryTranslation($cat); } if(!count($data)) return; // Dataset definition $dataSet = new pData; $dataSet->AddPoint($values,"Serie1"); $dataSet->AddAllSeries(); $dataSet->AddPoint($keys,"Serie2"); $dataSet->SetAbsciseLabelSerie("Serie2"); // Read graph from cache? $pCache = new pCache($this->cachePath); if($this->enableCaching && $pCache->IsInCache(get_class(),$dataSet->GetData())){ $filename = $pCache->GetHash(get_class(),$dataSet->GetData()); $filename = '/var/spool/gosa/'.$filename; if(file_exists($filename) && is_readable($filename)){ $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)).rand(0,99999); session::set('statistics::graphFile'.$this->graphID,$filename); return; } } // Set graph area $x = 400; $y = 200; // Initialise the graph $chart = new pChart($x,$y); $chart->setFontProperties($this->font,10); if(count($data)) { $chart->drawPieGraph($dataSet->GetData(),$dataSet->GetDataDescription(),($x/3),($y/2)-10,($y/2),PIE_PERCENTAGE,TRUE,50,20,6); $chart->drawPieLegend(($x/3*2),15,$dataSet->GetData(),$dataSet->GetDataDescription(),255,255,255); } // Store graph data $this->graphID = preg_replace("/[^0-9]/","",microtime(TRUE)); $file = '/tmp/graph_'.$this->graphID; $chart->Render($file); session::set('statistics::graphFile'.$this->graphID,$file); $pCache->WriteToCache(get_class(),$dataSet->GetData(),$chart); } } ?> gosa-core-2.7.4/plugins/generic/statistics/main.inc0000644000175000017500000000265311435403762020760 0ustar mikemikesave_object(); $display= $statistics->execute (); $display.= "\n"; /* Store changes in session */ session::set('statistics',$statistics); } ?> gosa-core-2.7.4/plugins/generic/statistics/class_statistics.inc0000644000175000017500000004263611613731145023415 0ustar mikemikeserverAccessible = $this->config->registration->isServerAccessible(); $this->registrationNotWanted = $this->config->registration->registrationNotWanted(); $this->instanceRegistered = $this->config->registration->isInstanceRegistered(); if($this->instanceRegistered){ $this->graphs[] = new categoryActionsOverTime($this->config); $this->graphs[] = new memoryUsageChart($this->config); $this->graphs[] = new cpuLoadChart($this->config); $this->graphs[] = new renderTimeChart($this->config); $this->graphs[] = new durationTimeChart($this->config); $this->graphs[] = new objectCountChart($this->config); $this->graphs[] = new actionSelectChart($this->config); $this->graphs[] = new passwordChangeChart($this->config); $this->staticChart1 = new pieChart1($this->config); $this->staticChart2 = new pieChart2($this->config); // Init start and stop times for graph 1 $this->graph1DatePicker1 = date('d.m.Y', time() - 28 * 24 * 60 *60); $this->graph1DatePicker2 = date('d.m.Y', time()); // First try to retrieve values via RPC $this->rpcConfigured = TRUE; $this->rpcHandle = $this->config->getRpcHandle( $this->config->registration->getRegistrationServer(), $this->config->getInstanceUUID(), $this->config->configRegistry->getPropertyValue('GOsaRegistration','instancePassword'), TRUE); $this->initialized = TRUE; } } /*! \brief Returns a list local stored statistic files @param Array A list of filenames and dates. */ function getLocalStatisticsFiles() { $res = stats::getLocalStatFiles(); $tmp = array(); if(count($res)){ foreach($res as $file){ $date = strtotime($file); if($date){ $tmp[$file] = $date; } } } return($tmp); } /*! \brief Returns a list of not transmitted stat files (except files for the current day) * @return Array A list of unsubmitted statistic files. */ function getUnsubmittedStatistics() { $alreadyTransmitted = $this->getStatisticsDatesFromServer(); if($alreadyTransmitted == NULL){ return(NULL); } $available = $this->getLocalStatisticsFiles(); $unsubmitted = array(); foreach($available as $key => $day){ if(!isset($alreadyTransmitted[$key])) $unsubmitted [$key] = $day; } // Exclude statistic collection from today, they are still active and cannot be submitted. $curDate = date('Y-m-d'); if(isset($unsubmitted)) unset($unsubmitted[$curDate]); return($unsubmitted); } /*! \brief Request a list of dates for which the server can return statistics. @param Array A list of dates $ret=[iso-str] = timestamp */ function getStatisticsDatesFromServer() { // Do not request anything while rpc isn't configured. if(!$this->rpcConfigured){ return(array()); } // Try to gather statistic dates from the backenbd. $res = $this->rpcHandle->getInstanceStatDates(); $dates = array(); if(!$this->rpcHandle->success()){ msg_dialog::display(_("Error"),msgPool::rpcError($this->rpcHandle->get_error()),ERROR_DIALOG); return(NULL); }else{ foreach($res as $date){ $dates[$date] = strtotime($date); } } $this->rpcHandle_Error = !$this->rpcHandle->success(); return($dates); } function execute() { if(!$this->initialized) $this->init(); $smarty = get_smarty(); // Check registration status, we need at least 'registered'. $smarty->assign("instanceRegistered", $this->instanceRegistered); $smarty->assign("serverAccessible", $this->serverAccessible); $smarty->assign("registrationNotWanted", $this->registrationNotWanted); $plist = session::get('plist'); $id = array_search('dashBoard', $plist->pluginList); $smarty->assign('dashBoardId', $id); // If we have an unregistered instance of GOsa, display a message which // allows to registrate GOsa if(!$this->instanceRegistered || !$this->serverAccessible){ return($smarty->fetch(get_template_path('statistics.tpl', TRUE))); } $smarty->assign('graph1DatePicker1', $this->graph1DatePicker1); $smarty->assign('graph1DatePicker2', $this->graph1DatePicker2); // Get list of unsubmitted files. if($this->unsbmittedFiles == NULL){ $this->unsbmittedFiles = $this->getUnsubmittedStatistics(); } // Do not render anything if we are not prepared to send and receive data via rpc. $smarty->assign("rpcConfigured", $this->rpcConfigured); $smarty->assign("validRpcHandle", TRUE); if(!$this->rpcHandle){ $smarty->assign("validRpcHandle", FALSE); return($smarty->fetch(get_template_path('statistics.tpl', TRUE))); } // Assign list of selectable graphs $tmp = array(); foreach($this->graphs as $id => $gClass){ $tmp[$id] = $gClass->getTitle(); } $smarty->assign("selectedGraphType", $this->selectedGraphType); $smarty->assign("availableGraphs", $tmp); // Send stats if(isset($_POST['transmitStatistics'])){ $this->unsbmittedFiles = $this->getUnsubmittedStatistics(); foreach($this->unsbmittedFiles as $filename => $date){ $strDate = date('Y-m-d', $date); $tmp = stats::generateStatisticDump($filename); $dump = array(); $invalidDateCount = 0; foreach($tmp as $entry){ // Check if the result date equals the report file date // - If not update the entry. if($entry['date'] != $strDate){ $entry['date'] = $strDate; $invalidDateCount ++; } $dump[] = array_values($entry); } // Merge result with ldap object count $objectCount = stats::getLdapObjectCount($this->config, TRUE, date('Y-m-d', $date)); foreach($objectCount as $entry){ // Check if the result date equals the report file date // - If not update the entry. if($entry['date'] != $strDate){ $entry['date'] = $strDate; $invalidDateCount ++; } $dump[] = array_values($entry); } // Warn about invalid dates transmitted if($invalidDateCount) trigger_error(sprintf("Report contained %s entries with invalid date string!",$invalidDateCount)); // Send in our report now. $res = $this->rpcHandle->updateInstanceStatus($dump); if(!$this->rpcHandle->success()){ msg_dialog::display(_("Error"),msgPool::rpcError($this->rpcHandle->get_error()),ERROR_DIALOG); }else{ stats::removeStatsFile($filename); } $this->rpcHandle_Error = !$this->rpcHandle->success(); } $this->unsbmittedFiles = $this->getUnsubmittedStatistics(); } // Transmit daily statistics to GOsa-Server if((isset($_POST['receiveStatistics']) || !count($this->statisticData)) && $this->rpcConfigured){ $start = strtotime($this->graph1DatePicker1); $stop = strtotime($this->graph1DatePicker2); $res = $this->rpcHandle->getInstanceStats($start,$stop); if(!$this->rpcHandle->success()){ msg_dialog::display(_("Error"),msgPool::rpcError($this->rpcHandle->get_error()),ERROR_DIALOG); }elseif($res){ $this->statisticData = $this->prepareGraphData($res); } $this->rpcHandle_Error = !$this->rpcHandle->success(); } // Update graphs $this->reloadGraphs(); $smarty->assign('staticChart1_ID', $this->staticChart1->getGraphID()); $smarty->assign('staticChart2_ID', $this->staticChart2->getGraphID()); $curGraph = $this->graphs[$this->selectedGraphType]; $smarty->assign('curGraphID', $curGraph->getGraphID()); $smarty->assign('curGraphOptions', $curGraph->getGraphOptions()); $smarty->assign('curSeriesSelector', $curGraph->getSeriesSelector()); $smarty->assign('unsbmittedFiles', count($this->unsbmittedFiles)); $smarty->assign('unsbmittedFilesMsg', sprintf( _("You have currently %s unsubmitted statistic collection, do you want to transmit them now?"), count($this->unsbmittedFiles))); $smarty->assign('rpcHandle_Error', $this->rpcHandle_Error); return($smarty->fetch(get_template_path('statistics.tpl', TRUE))); } /*! \brief Prepares the graph data we've received from the rpc-service. * This method will construct a usable data-array with converted * date strings. */ function prepareGraphData($res) { // Object categories which has to mapped to 'systems' $mapSystems = array('server','terminal','workstation', 'opsi', 'component','phone', 'winworkstation', 'printer', 'incoming'); /* Build up array which represents the amount of errors per * interval. */ $gData = array(); foreach($res['errorsPerInterval'] as $dateStr => $data){ $date = strtotime($dateStr); $gData['errorsPerInterval'][$date] = $data; } ksort($gData['errorsPerInterval']); /* Build up timeline */ $Xam = 5; $cnt = 0; $numCnt = $res['errorsPerInterval']; foreach($gData['errorsPerInterval'] as $date => $data){ if((count($numCnt) <= $Xam) || ($cnt % (floor(count($numCnt) / $Xam )) == 0)){ $gData['dates'][$date] = date('d.m.Y', $date); }else{ $gData['dates'][$date] = ' '; } $cnt ++; } ksort($gData['dates']); /* Build up 'actions per category' array, this will later * be represented using a pie chart. */ $gData['actionsPerCategory'] = $res['actionsPerCategory']; arsort($gData['actionsPerCategory']); /* Build up system-info array per interval. */ foreach($res['usagePerInterval'] as $dateStr => $data){ $date = strtotime($dateStr); foreach($data as $type => $count){ $gData['usagePerInterval'][$type][$date] = $count; } } foreach($gData['usagePerInterval'] as $key => $data) ksort($gData['usagePerInterval'][$key]); /* Prepare actions-per-interval array. */ $gData['actionsGraph'] = array(); foreach($res['actionsGraph'] as $category => $data){ if(empty($category)) continue; foreach($data as $dateStr => $count){ $date = strtotime($dateStr); $gData['actionsGraph'][$category][$date]=$count; } ksort($gData['actionsGraph'][$category]); } /* Prepare actions-per-interval array. */ $gData['actionTypeGraph'] = array(); foreach($res['actionTypeGraph'] as $action => $aData){ foreach($aData as $category => $data){ if(empty($category)) continue; $list = preg_split("/, /", $category); if(count(array_intersect($mapSystems, $list))){ $category = 'systems'; } // Add missing date stamps foreach($gData['dates'] as $timestamp => $value){ $gData['actionTypeGraph'][$action][$category][$timestamp]=0; } foreach($data as $dateStr => $count){ $date = strtotime($dateStr); $gData['actionTypeGraph'][$action][$category][$date]=$count; } ksort($gData['actionTypeGraph'][$action][$category]); } } /* Prepare object count per interval array. */ $gData['objectCountPerInterval'] = array(); foreach($res['objectCountPerInterval'] as $category => $data){ if(empty($category)) continue; if(in_array_strict($category,$mapSystems)){ $category = 'systems'; } // Skip series which are not interesting for us if(!in_array_strict($category,array('users','groups','department','systems','ogroups','fai'))){ $category = 'remaining'; } foreach($data as $dateStr => $count){ $date = strtotime($dateStr); if(!isset($gData['objectCountPerInterval'][$category][$date])){ $gData['objectCountPerInterval'][$category][$date]=0; } $gData['objectCountPerInterval'][$category][$date] += $count; } ksort($gData['objectCountPerInterval'][$category]); } // Move remaining to the end of the list if(isset($gData['objectCountPerInterval']['remaining'])){ $data = $gData['objectCountPerInterval']['remaining']; unset($gData['objectCountPerInterval']['remaining']); $gData['objectCountPerInterval']['remaining'] = $data; } // Clean data from unusable categories like ('terminals workstations, ...') foreach($gData as $serieName => $seriesData){ foreach($seriesData as $key => $data){ $list = preg_split("/, /", $key); if(count(array_intersect($mapSystems, $list))){ unset($gData[$serieName][$key]); $gData[$serieName]['systems'] = $data; } } } // Get info about used password hashes $gData['usedPasswordHashes'] = array(); foreach($res['usedPasswordHashes'] as $category => $data){ // Add missing date stamps foreach($gData['dates'] as $timestamp => $value){ $gData['usedPasswordHashes'][$category][$timestamp]=0; } foreach($data as $dateStr => $count){ $date = strtotime($dateStr); $gData['usedPasswordHashes'][$category][$date]=$count; } ksort($gData['usedPasswordHashes'][$category]); } // Get action usage, to be able to render a pie chart about most done actions. $gData['actionsPerPluginAction'] = $res['actionsPerPluginAction']; return($gData); } function check() { $messages = plugin::check(); return($messages); } function save_object() { // Nothing to do for not registered accounts. if(!$this->serverAccessible || !$this->instanceRegistered) return; plugin::save_object(); if(isset($_POST['graph1DatePicker1'])) $this->graph1DatePicker1 = get_post('graph1DatePicker1'); if(isset($_POST['graph1DatePicker2'])) $this->graph1DatePicker2 = get_post('graph1DatePicker2'); if(isset($_POST['selectedGraphType'])) $this->selectedGraphType = get_post('selectedGraphType'); $this->staticChart1->save_object(); $this->staticChart2->save_object(); $curGraph = $this->graphs[$this->selectedGraphType]; $curGraph->save_object(); } /*! \brief Reload the graph images. */ function reloadGraphs() { new pChartInclude(); $gData = $this->statisticData; if(!count($gData)){ return; } $curGraph = $this->graphs[$this->selectedGraphType]; $curGraph->setGraphData($gData); $curGraph->render(); $this->staticChart1->setGraphData($gData); $this->staticChart1->render(); $this->staticChart2->setGraphData($gData); $this->staticChart2->render(); } } ?> gosa-core-2.7.4/plugins/generic/infoPage/0000755000175000017500000000000011752422552016671 5ustar mikemikegosa-core-2.7.4/plugins/generic/infoPage/class_infoPage.inc0000644000175000017500000001521711613731145022304 0ustar mikemikeconfig = &$config; $this->ui = get_userinfo(); plugin::plugin($config, $this->ui->dn); // Detect managers for the current user. $this->managers = $this->detectManagers(); // Get plugin list $this->plugins = $this->getPluginList(); } /*! \brief Returns a HTML string which respresent a list of plugins the user can access. * Only accessible plugins will be rendered. * @return String HTML content */ function getPluginList() { $plist = session::get('plist'); $myAccountID = array_search('MyAccount',$plist->pluginList); $str = ""; foreach($this->config->data['TABS']['MYACCOUNTTABS'] as $pluginData){ $plugin = $pluginData['CLASS']; if(!$this->checkAccess($plugin)) continue; list($index, $title, $desc, $icon) = $plist->getPlugData($plugin); $str.= "\n
    "; $str.= "\n ".image($icon); $str.= "\n
    "; $str.= "\n

    {$title}

    "; $str.= "\n

    {$desc}

    "; $str.= "\n
    "; $str.= "\n
    "; } return($str); } /*! \brief Check if we've access to a given class/plugin of GOsa. * @param String The class name to check for. * @return Boolean True on success else FALSE. */ function checkAccess($class) { foreach($this->ui->ocMapping as $cat => $aclClasses){ if(in_array_strict($class, $aclClasses)){ if(preg_match('/[rw]/',$this->ui->get_permissions($this->ui->dn, "{$cat}/{$class}", ''))){ return(TRUE); } } } return(FALSE); } /*! \brief Prepares an array which contains info about the users * managers. The personal manager and the next * manager defined for a department. * @return Array An array with resolved manager dns. */ function detectManagers() { // Check if we've an own manager set $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->cat($this->dn, array('manager')); $attrs = $ldap->fetch(); $dns = array(); if(isset($attrs['manager'][0])){ $dns['PERSONAL'] = $attrs['manager'][0]; } // Get next department manager dn $dn = $this->dn; $max = 4; while(strlen($dn) >= strlen($this->config->current['BASE']) && $max--){ $dn = preg_replace("/^[^,]+,/","",$dn); $ldap->cat($dn, array('manager')); $attrs = $ldap->fetch(); if(isset($attrs['manager'][0])){ $dns['DEPARTMENT'] = $attrs['manager'][0]; } } // Resolve collected manager dns $managers = array(); foreach($dns as $type => $dn){ $ldap->cat($dn,array('sn','givenName','mail','telephoneNumber')); $managers[$dn] = $ldap->fetch(); $managers[$dn]['type'] = $type; $name = $phone = $mail = ""; $name = "".set_post($managers[$dn]['givenName'][0])." ".set_post($managers[$dn]['sn'][0]).""; if(isset($managers[$dn]['telephoneNumber'][0])){ $phone = " "._("Phone number").":".set_post($managers[$dn]['telephoneNumber'][0]).""; } if(isset($managers[$dn]['mail'][0])){ $mail = " "._("Mail").":".set_post($managers[$dn]['mail'][0]).""; } $managers[$dn]['str'] = "{$name}{$phone}{$mail}
    "; } return($managers); } /*! \brief Renders the plugin UI in HTML. * @return String HTML content of the plugin. */ function execute() { $smarty = get_smarty(); $personalInfoAllowed = FALSE; foreach(array("uid","sn","givenName","mail","street","l","o","ou","jpegPhoto","personalTitle", "academicTitle","dateOfBirth","homePostalAddress","homePhone","departmentNumber", "employeeNumber","employeeType") as $attr){ $smarty->assign($attr, ""); if(preg_match("/r/", $this->ui->get_permissions($this->ui->dn,"users/user", $attr)) && isset($this->attrs[$attr][0])){ $smarty->assign($attr, set_post($this->attrs[$attr][0])); $personalInfoAllowed = TRUE; } } // Convert address if(preg_match("/r/", $this->ui->get_permissions($this->ui->dn,"users/user", "homePostalAddress")) && isset($this->attrs['homePostalAddress'][0])){ $smarty->assign("homePostalAddress", preg_replace("/\n/", "
    ", $this->attrs['homePostalAddress'][0])); }else{ $smarty->assign("homePostalAddress", ""); } // Assign JPEG Photo only if it is set and if we are allowed to view it. $smarty->assign("jpegPhoto", ""); if(preg_match("/r/", $this->ui->get_permissions($this->ui->dn,"users/user", "userPicture")) && isset($this->attrs['jpegPhoto'][0])){ session::set('binary',$this->attrs['jpegPhoto'][0]); session::set('binarytype',"image/jpeg"); $smarty->assign("jpegPhoto", $this->attrs['jpegPhoto']); } // Set date of birth if(preg_match("/r/", $this->ui->get_permissions($this->ui->dn,"users/user", "dateOfBirth")) && isset($this->attrs['dateOfBirth'][0])){ $smarty->assign("dateOfBirth", date('d.m.Y',strtotime($this->attrs['dateOfBirth'][0]))); }else{ $smarty->assign("dateOfBirth",""); } $smarty->assign("rand", rand(0, 99999999)); $smarty->assign("personalInfoAllowed", $personalInfoAllowed); $smarty->assign("managers", $this->managers); $smarty->assign("plugins", $this->plugins); $smarty->assign("managersCnt", count($this->managers)); $smarty->assign("revision", get_gosa_version()); $smarty->assign("year", date("Y")); return($smarty->fetch(get_template_path("infoPage.tpl"))); } } ?> gosa-core-2.7.4/plugins/generic/infoPage/main.inc0000644000175000017500000000262511473747222020321 0ustar mikemikesave_object(); $display= $infoPage->execute (); $display.= "\n"; /* Store changes in session */ session::set('infoPage',$infoPage); } ?> gosa-core-2.7.4/plugins/personal/0000755000175000017500000000000011752422552015350 5ustar mikemikegosa-core-2.7.4/plugins/personal/generic/0000755000175000017500000000000011752422552016764 5ustar mikemikegosa-core-2.7.4/plugins/personal/generic/paste_generic.tpl0000644000175000017500000000302211350206173022303 0ustar mikemike

    {t}User settings{/t}

    {t}Password{/t} {t}Clear password{/t}
    {t}Set new password{/t}

     


    gosa-core-2.7.4/plugins/personal/generic/generic_certs.tpl0000644000175000017500000000523511345771101022321 0ustar mikemike

    {t}Certificates{/t}

    {t}Standard certificate{/t} {if $userCertificate_state ne "true"} {render acl=$CertificateACL} {/render} {else} {render acl=$CertificateACL} {/render} {/if}

    {t}S/MIME certificate{/t} {if $userSMIMECertificate_state ne "true"} {render acl=$CertificateACL} {/render} {else} {render acl=$CertificateACL} {/render} {/if}

    {if $governmentmode eq "true"} {/if}
    {t}PKCS12 certificate{/t} {if $userPKCS12_state ne "true"} {render acl=$CertificateACL} {/render} {else} {render acl=$CertificateACL} {/render} {/if}
    {render acl=$CertificateACL} {/render}

    {render acl=$CertificateACL} {/render}
    gosa-core-2.7.4/plugins/personal/generic/generic_picture.tpl0000644000175000017500000000142311443347136022655 0ustar mikemike

    {t}User picture{/t}

     


    gosa-core-2.7.4/plugins/personal/generic/class_user.inc0000644000175000017500000020031111750201415021606 0ustar mikemike \version 2.00 \date 24.07.2003 This class provides the functionality to read and write all attributes relevant for person, organizationalPerson, inetOrgPerson and gosaAccount from/to the LDAP. It does syntax checking and displays the formulars required. */ class user extends plugin { /* Definitions */ var $plHeadline= "Generic"; var $plDescription= "Edit organizational user settings"; /* Plugin specific values */ var $base= ""; var $orig_base= ""; var $cn= ""; var $new_dn= ""; var $personalTitle= ""; var $academicTitle= ""; var $homePostalAddress= ""; var $homePhone= ""; var $labeledURI= ""; var $o= ""; var $ou= ""; var $departmentNumber= ""; var $gosaLoginRestriction= array(); var $gosaLoginRestrictionWidget; var $employeeNumber= ""; var $employeeType= ""; var $roomNumber= ""; var $telephoneNumber= ""; var $facsimileTelephoneNumber= ""; var $mobile= ""; var $pager= ""; var $l= ""; var $st= ""; var $postalAddress= ""; var $dateOfBirth; var $use_dob= "0"; var $gender="0"; var $preferredLanguage="0"; var $baseSelector; var $jpegPhoto= "*removed*"; var $photoData= ""; var $old_jpegPhoto= ""; var $old_photoData= ""; var $cert_dialog= FALSE; var $picture_dialog= FALSE; var $pwObject= NULL; var $userPKCS12= ""; var $userSMIMECertificate= ""; var $userCertificate= ""; var $certificateSerialNumber= ""; var $old_certificateSerialNumber= ""; var $old_userPKCS12= ""; var $old_userSMIMECertificate= ""; var $old_userCertificate= ""; var $gouvernmentOrganizationalUnit= ""; var $houseIdentifier= ""; var $street= ""; var $postalCode= ""; var $vocation= ""; var $ivbbLastDeliveryCollective= ""; var $gouvernmentOrganizationalPersonLocality= ""; var $gouvernmentOrganizationalUnitDescription= ""; var $gouvernmentOrganizationalUnitSubjectArea= ""; var $functionalTitle= ""; var $role= ""; var $publicVisible= ""; var $orig_dn; var $dialog; /* variables to trigger password changes */ var $pw_storage= "md5"; var $last_pw_storage= "unset"; var $had_userCertificate= FALSE; var $view_logged = FALSE; var $manager = ""; var $manager_name = ""; /* attribute list for save action */ var $attributes= array("sn", "givenName", "uid", "personalTitle", "academicTitle", "homePostalAddress", "homePhone", "labeledURI", "ou", "o", "dateOfBirth", "gender","preferredLanguage", "departmentNumber", "employeeNumber", "employeeType", "l", "st","jpegPhoto", "roomNumber", "telephoneNumber", "mobile", "pager", "cn", "userPKCS12", "postalAddress", "facsimileTelephoneNumber", "userSMIMECertificate", "gosaLoginRestriction", "manager"); var $objectclasses= array("top", "person", "organizationalPerson", "inetOrgPerson", "gosaAccount"); /* attributes that are part of the government mode */ var $govattrs= array("gouvernmentOrganizationalUnit", "houseIdentifier", "vocation", "ivbbLastDeliveryCollective", "gouvernmentOrganizationalPersonLocality", "gouvernmentOrganizationalUnitDescription","gouvernmentOrganizationalUnitSubjectArea", "functionalTitle", "certificateSerialNumber", "publicVisible", "street", "role", "postalCode"); var $multiple_support = TRUE; var $governmentmode = FALSE; /* constructor, if 'dn' is set, the node loads the given 'dn' from LDAP */ function user (&$config, $dn= NULL) { global $lang; $this->config= $config; /* Configuration is fine, allways */ if($this->config->get_cfg_value("core","honourIvbbAttributes") == "true"){ $this->governmentmode = TRUE; $this->attributes=array_merge($this->attributes,$this->govattrs); } /* Load base attributes */ plugin::plugin ($config, $dn); $this->orig_dn = $this->dn; $this->new_dn = $dn; if ($this->governmentmode){ /* Fix public visible attribute if unset */ if (!isset($this->attrs['publicVisible'])){ $this->publicVisible == "nein"; } } /* Load government mode attributes */ if ($this->governmentmode){ /* Copy all attributs */ foreach ($this->govattrs as $val){ if (isset($this->attrs["$val"][0])){ $this->$val= $this->attrs["$val"][0]; } } } /* Create me for new accounts */ if ($dn == "new"){ $this->is_account= TRUE; } /* Make hash default to md5 if not set in config */ $hash= $this->config->get_cfg_value("core","passwordDefaultHash"); /* Load data from LDAP? */ if ($dn !== NULL){ /* Do base conversation */ if ($this->dn == "new"){ $ui= get_userinfo(); $this->base= dn2base(session::global_is_set("CurrentMainBase")?"cn=dummy,".session::global_get("CurrentMainBase"):$ui->dn); } else { $this->base= dn2base($dn); } /* get password storage type */ if (isset ($this->attrs['userPassword'][0])){ /* Initialize local array */ $matches= array(); if (preg_match ("/^{[^}]+}/", $this->attrs['userPassword'][0])){ $tmp= passwordMethod::get_method($this->attrs['userPassword'][0]); if(is_object($tmp)){ $this->pw_storage= $tmp->get_hash(); } } else { if ($this->attrs['userPassword'][0] != ""){ $this->pw_storage= "clear"; } else { $this->pw_storage= $hash; } } } else { /* Preset with vaule from configuration */ $this->pw_storage= $hash; } /* Load extra attributes: certificate and picture */ $this->load_cert(); $this->load_picture(); if ($this->userCertificate != ""){ $this->had_userCertificate= TRUE; } } /* Reset password storage indicator, used by password_change_needed() */ if ($dn == "new"){ $this->last_pw_storage= "unset"; } else { $this->last_pw_storage= $this->pw_storage; } /* Generate dateOfBirth entry */ if (isset ($this->attrs['dateOfBirth'])){ /* This entry is ISO 8601 conform */ list($year, $month, $day)= explode("-", $this->attrs['dateOfBirth'][0], 3); #TODO: use $lang to convert date $this->dateOfBirth= "$day.$month.$year"; } else { $this->dateOfBirth= ""; } /* Put gender attribute to upper case */ if (isset ($this->attrs['gender'])){ $this->gender= strtoupper($this->attrs['gender'][0]); } // Get login restrictions if(isset($this->attrs['gosaLoginRestriction'])){ $this->gosaLoginRestriction =array(); for($i =0;$i < $this->attrs['gosaLoginRestriction']['count']; $i++){ $this->gosaLoginRestriction[] = $this->attrs['gosaLoginRestriction'][$i]; } } $this->gosaLoginRestrictionWidget= new sortableListing($this->gosaLoginRestriction); $this->gosaLoginRestrictionWidget->setDeleteable(true); $this->gosaLoginRestrictionWidget->setInstantDelete(true); $this->gosaLoginRestrictionWidget->setColspecs(array('*')); $this->gosaLoginRestrictionWidget->setWidth("100%"); $this->gosaLoginRestrictionWidget->setHeight("70px"); $this->orig_base = $this->base; $this->baseSelector= new baseSelector($this->allowedBasesToMoveTo(), $this->base); $this->baseSelector->setSubmitButton(false); $this->baseSelector->setHeight(300); $this->baseSelector->update(true); // Detect the managers name $this->manager_name = ""; $ldap = $this->config->get_ldap_link(); if(!empty($this->manager)){ $ldap->cat($this->manager, array('cn')); if($ldap->count()){ $attrs = $ldap->fetch(); $this->manager_name = $attrs['cn'][0]; }else{ $this->manager_name = "("._("unknown")."!): ".$this->manager; } } } /* execute generates the html output for this node */ function execute() { /* Call parent execute */ plugin::execute(); /* Set list ACL */ $this->gosaLoginRestrictionWidget->setAcl($this->getacl('gosaLoginRestriction')); $this->gosaLoginRestrictionWidget->update(); /* Handle add/delete for restriction mode */ if (isset($_POST['add_res']) && isset($_POST['res'])) { $val= get_post('res'); if (preg_match('/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/', $val) || preg_match('/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\/([0-9]+)$/', $val) || preg_match('/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$/', $val)) { $this->gosaLoginRestrictionWidget->addEntry($val); } else { msg_dialog::display(_("Error"), _("Please add a single IP address or a network/net mask combination!"), ERROR_DIALOG); } } /* Log view */ if($this->is_account && !$this->view_logged){ $this->view_logged = TRUE; new log("view","users/".get_class($this),$this->dn); } // Clear manager attribute if requested if(preg_match("/ removeManager/i", " ".implode(array_keys($_POST),' ')." ")){ $this->manager = ""; $this->manager_name = ""; } // Allow to select a new inetOrgPersion:manager if(preg_match("/ editManager/i", " ".implode(array_keys($_POST),' ')." ")){ $this->dialog = new singleUserSelect($this->config, get_userinfo()); } if($this->dialog && $this->dialog instanceOf singleUserSelect && count($this->dialog->detectPostActions())){ $users = $this->dialog->detectPostActions(); if(isset($users['action']) && $users['action'] =='userSelected' && isset($users['targets']) && count($users['targets'])){ $headpage = $this->dialog->getHeadpage(); $dn = $users['targets'][0]; $attrs = $headpage->getEntry($dn); $this->manager = $dn; $this->manager_name = $attrs['cn'][0]; $this->dialog = NULL; } } if(isset($_POST['add_users_cancel'])){ $this->dialog = NULL; } if($this->dialog instanceOf singleUserSelect) return($this->dialog->execute()); $smarty= get_smarty(); $smarty->assign("gosaLoginRestrictionWidget", $this->gosaLoginRestrictionWidget->render()); /* Assign sex */ $sex= array(0 => " ", "F" => _("female"), "M" => _("male")); $smarty->assign("gender_list", $sex); $language= array_merge(array(0 => " ") ,get_languages(TRUE)); $smarty->assign("preferredLanguage_list", $language); /* Get random number for pictures */ srand((double)microtime()*1000000); $smarty->assign("rand", rand(0, 10000)); /* Do we represent a valid gosaAccount? */ if (!$this->is_account){ $str = "\"\" ". msgPool::noValidExtension("GOsa").""; return($str); } /* Password configure dialog handling */ if(is_object($this->pwObject) && $this->pwObject->display){ $output= $this->pwObject->configure(); if ($output != ""){ $this->dialog= TRUE; return $output; } $this->dialog= false; } /* Dialog handling */ if(is_object($this->dialog)){ /* Must be called before save_object */ $this->dialog->save_object(); if($this->dialog->isClosed()){ $this->dialog = false; }elseif($this->dialog->isSelected()){ /* check if selected base is allowed to move to / create a new object */ $tmp = $this->get_allowed_bases(); if(isset($tmp[$this->dialog->isSelected()])){ $this->base = $this->dialog->isSelected(); } $this->dialog= false; }else{ return($this->dialog->execute()); } } /* Want password method editing? */ if ($this->acl_is_writeable("userPassword")){ if (isset($_POST['edit_pw_method'])){ if (!is_object($this->pwObject) || $this->pw_storage != $this->pwObject->get_hash_name()){ $temp= passwordMethod::get_available_methods(); $this->pwObject= new $temp[$this->pw_storage]($this->config,$this->dn); } $this->pwObject->display = TRUE; $this->dialog= TRUE; pathNavigator::registerPlugin(_("Password configuration")); return ($this->pwObject->configure()); } } /* Want picture edit dialog? */ if($this->acl_is_writeable("userPicture")) { if (isset($_POST['edit_picture'])){ /* Save values for later recovery, in case some presses the cancel button. */ $this->old_jpegPhoto= $this->jpegPhoto; $this->old_photoData= $this->photoData; $this->picture_dialog= TRUE; $this->dialog= TRUE; } } /* Remove picture? */ if($this->acl_is_writeable("userPicture")){ if (isset($_POST['picture_remove'])){ $this->set_picture (); $this->jpegPhoto= "*removed*"; $this->is_modified= TRUE; return($smarty->fetch (get_template_path('generic_picture.tpl', TRUE, dirname(__FILE__)))); } } /* Save picture */ if (isset($_POST['picture_edit_finish'])){ /* Check for clean upload */ if ($_FILES['picture_file']['name'] != ""){ $filename = gosa_file_name($_FILES['picture_file']['tmp_name']); if (!file_exists($filename)) { msg_dialog::display(_("Error"), _("Cannot upload file!"), ERROR_DIALOG); }else{ /* Activate new picture */ $this->set_picture($filename); } } $this->picture_dialog= FALSE; $this->dialog= FALSE; $this->is_modified= TRUE; } /* Cancel picture */ if (isset($_POST['picture_edit_cancel'])){ /* Restore values */ $this->jpegPhoto= $this->old_jpegPhoto; $this->photoData= $this->old_photoData; /* Update picture */ session::set('binary',$this->photoData); session::set('binarytype',"image/jpeg"); $this->picture_dialog= FALSE; $this->dialog= FALSE; } /* Want certificate= */ if ((isset($_POST['edit_cert'])) && $this->acl_is_readable("Certificate")){ /* Save original values for later reconstruction */ foreach (array("certificateSerialNumber", "userCertificate", "userSMIMECertificate", "userPKCS12") as $val){ $oval= "old_$val"; $this->$oval= $this->$val; } $this->cert_dialog= TRUE; $this->dialog= TRUE; } /* Cancel certificate dialog */ if (isset($_POST['cert_edit_cancel'])){ /* Restore original values in case of 'cancel' */ foreach (array("certificateSerialNumber", "userCertificate", "userSMIMECertificate", "userPKCS12") as $val){ $oval= "old_$val"; $this->$val= $this->$oval; } $this->cert_dialog= FALSE; $this->dialog= FALSE; } /* Remove certificate? */ if($this->acl_is_writeable("Certificate")){ foreach (array ("userCertificate", "userSMIMECertificate", "userPKCS12") as $val){ if (isset($_POST["remove_$val"])){ /* Reset specified cert*/ $this->$val= ""; $this->is_modified= TRUE; } } } /* Upload new cert and close dialog? */ if($this->acl_is_writeable("Certificate")){ $fail =false; if (isset($_POST['cert_edit_finish'])){ /* for all certificates do */ foreach (array ("userCertificate", "userSMIMECertificate", "userPKCS12") as $val){ /* Check for clean upload */ if (array_key_exists($val."_file", $_FILES) && array_key_exists('name', $_FILES[$val."_file"]) && $_FILES[$val."_file"]['name'] != "" && is_readable($_FILES[$val."_file"]['tmp_name'])) { $this->set_cert("$val", gosa_file_name($_FILES[$val."_file"]['tmp_name'])); } } /* Save serial number */ if (isset($_POST["certificateSerialNumber"]) && $_POST["certificateSerialNumber"] != ""){ if (!tests::is_id(get_post('certificateSerialNumber'))){ $fail = true; msg_dialog::display(_("Error"), msgPool::invalid(_("Serial number"),$_POST["certificateSerialNumber"],"/[0-9]/"),ERROR_DIALOG); foreach(array("userCertificate", "userSMIMECertificate", "userPKCS12") as $cert){ if ($this->$cert != ""){ $smarty->assign("$cert"."_state", "true"); } else { $smarty->assign("$cert"."_state", ""); } } } $this->certificateSerialNumber= get_post("certificateSerialNumber"); $this->is_modified= TRUE; } if(!$fail){ $this->cert_dialog= FALSE; $this->dialog= FALSE; } } } /* Display picture dialog */ if ($this->picture_dialog){ pathNavigator::registerPlugin(_("User picture")); return($smarty->fetch (get_template_path('generic_picture.tpl', TRUE, dirname(__FILE__)))); } /* Display cert dialog */ if ($this->cert_dialog){ pathNavigator::registerPlugin(_("Certificates")); $smarty->assign("CertificateACL",$this->getacl("Certificate")); $smarty->assign("Certificate_readable",$this->acl_is_readable("Certificate")); $smarty->assign("certificateSerialNumber",$this->certificateSerialNumber); foreach(array("userCertificate", "userSMIMECertificate", "userPKCS12") as $cert){ if ($this->$cert != ""){ /* import certificate */ $certificate = new certificate; $certificate->import($this->$cert); /* Read out data*/ $timeto = $certificate->getvalidto_date(); $timefrom = $certificate->getvalidfrom_date(); /* Additional info if start end time is '0' */ $add_str_info = ""; if($timeto == 0 && $timefrom == 0){ $add_str_info = "
    ".bold(_("(Not supported certificate types are marked as invalid.)")); } $str = "
    CN ".preg_replace("/ /", " ", $certificate->getname())."

    ". sprintf(_("Certificate is valid from %s to %s and is currently %s."), bold(date('d M Y',$timefrom)), bold(date('d M Y',$timeto)), $certificate->isvalid()?bold(""._("valid").""): bold(""._("invalid")."")).$add_str_info; $smarty->assign($cert."info",$str); $smarty->assign($cert."_state","true"); } else { $smarty->assign($cert."info", ""._("No certificate installed").""); $smarty->assign($cert."_state",""); } } if($this->governmentmode){ $smarty->assign("honourIvbbAttributes", "true"); }else{ $smarty->assign("honourIvbbAttributes", "false"); } $smarty->assign("governmentmode", $this->governmentmode); return($smarty->fetch (get_template_path('generic_certs.tpl', TRUE, dirname(__FILE__)))); } /* Prepare password hashes */ if ($this->pw_storage == ""){ $this->pw_storage= $this->config->get_cfg_value("core","passwordDefaultHash"); } $temp= passwordMethod::get_available_methods(); $is_configurable= FALSE; $hashes = $temp['name']; if(isset($temp[$this->pw_storage])){ $test= new $temp[$this->pw_storage]($this->config, $this->dn); $is_configurable= $test->is_configurable(); }else{ new msg_dialog(_("Password method"),_("The selected password method is no longer available."),WARNING_DIALOG); } /* Create password methods array */ $pwd_methods = array(); foreach($hashes as $id => $name){ if(!empty($temp['desc'][$id])){ $pwd_methods[$name] = $name." (".$temp['desc'][$id].")"; }else{ $pwd_methods[$name] = $name; } } /* Load attributes and acl's */ $ui =get_userinfo(); foreach($this->attributes as $val){ $smarty->assign("$val", set_post($this->$val)); if(in_array_strict($val,$this->multi_boxes)){ $smarty->assign("use_".$val,TRUE); }else{ $smarty->assign("use_".$val,FALSE); } } foreach(array("base","pw_storage","edit_picture") as $val){ if(in_array_strict($val,$this->multi_boxes)){ $smarty->assign("use_".$val,TRUE); }else{ $smarty->assign("use_".$val,FALSE); } } /* Set acls */ $tmp = $this->plinfo(); foreach($tmp['plProvidedAcls'] as $val => $translation){ $smarty->assign("$val"."ACL", $this->getacl($val)); } // Special ACL for gosaLoginRestrictions - // In case of multiple edit, we need a readonly ACL for the list. $smarty->assign('gosaLoginRestriction_ONLY_R_ACL', preg_replace("/[^r]/i","", $this->getacl("gosaLoginRestriction"))); $smarty->assign("pwmode", set_post($pwd_methods)); $smarty->assign("pwmode_select", set_post($this->pw_storage)); $smarty->assign("pw_configurable", $is_configurable); $smarty->assign("passwordStorageACL", $this->getacl("userPassword")); $smarty->assign("CertificatesACL", $this->getacl("Certificate")); $smarty->assign("userPictureACL", $this->getacl("userPicture")); $smarty->assign("userPicture_is_readable", $this->acl_is_readable("userPicture")); /* Create base acls */ $smarty->assign("base", $this->baseSelector->render()); /* Save government mode attributes */ if($this->governmentmode){ $smarty->assign("governmentmode", "true"); $ivbbmodes= array("nein", "", "ivbv", "testa", "ivbv,testa", "internet", "internet,ivbv", "internet,testa", "internet,ivbv,testa"); $smarty->assign("ivbbmodes", $ivbbmodes); foreach ($this->govattrs as $val){ $smarty->assign("$val", set_post($this->$val)); $smarty->assign("$val"."ACL", $this->getacl($val)); } } else { $smarty->assign("governmentmode", "false"); } /* Special mode for uid */ $uidACL= $this->getacl("uid"); if (isset ($this->dn)){ if ($this->dn != "new"){ $uidACL= preg_replace("/w/","",$uidACL); } } else { $uidACL= preg_replace("/w/","",$uidACL); } $smarty->assign("uidACL", $uidACL); $smarty->assign("is_template", $this->is_template); $smarty->assign("use_dob", $this->use_dob); if (isset($this->parent)){ if (isset($this->parent->by_object['phoneAccount']) && $this->parent->by_object['phoneAccount']->is_account){ $smarty->assign("has_phoneaccount", "true"); } else { $smarty->assign("has_phoneaccount", "false"); } } else { $smarty->assign("has_phoneaccount", "false"); } $smarty->assign("multiple_support" , $this->multiple_support_active); $smarty->assign("manager_name", set_post($this->manager_name)); return($smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__)))); } /* remove object from parent */ function remove_from_parent() { /* Only remove valid accounts */ if(!$this->initially_was_account) return; /* Remove password extension */ $temp= passwordMethod::get_available_methods(); /* Remove password method from user account */ if(isset($temp[$this->pw_storage]) && class_available($temp[$this->pw_storage])){ $this->pwObject= new $temp[$this->pw_storage]($this->config,$this->dn); $this->pwObject->remove_from_parent(); } /* Remove user */ $ldap= $this->config->get_ldap_link(); $ldap->rmdir ($this->dn); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); } new log("remove","users/".get_class($this),$this->dn,$this->attributes,$ldap->get_error()); /* Delete references to groups */ $ldap->cd ($this->config->current['BASE']); $ldap->search ("(&(objectClass=posixGroup)(memberUid=".$this->uid."))", array("uid")); while ($ldap->fetch()){ $g= new group($this->config, $ldap->getDN()); $g->removeUser($this->uid); $g->save (); } /* Delete references to object groups */ $ldap->cd ($this->config->current['BASE']); $ldap->search ("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter($this->dn)."))", array("cn")); while ($ldap->fetch()){ $og= new ogroup($this->config, $ldap->getDN()); unset($og->member[$this->dn]); $og->save (); } // Update 'manager' attributes from gosaDepartment and inetOrgPerson $filter = "(&(objectClass=inetOrgPerson)(manager=".LDAP::prepare4filter($this->dn)."))"; $ocs = $ldap->get_objectclasses(); if(isset($ocs['gosaDepartment']['MAY']) && in_array_strict('manager', $ocs['gosaDepartment']['MAY'])){ $filter = "(|".$filter."(&(objectClass=gosaDepartment)(manager=".LDAP::prepare4filter($this->dn).")))"; } $leaf_deps= get_list($filter,array("all"),$this->config->current['BASE'], array("manager","dn","objectClass"),GL_SUBSEARCH | GL_NO_ACL_CHECK); foreach($leaf_deps as $entry){ $update = array('manager' => array()); $ldap->cd($entry['dn']); $ldap->modify($update); if(!$ldap->success()){ trigger_error(sprintf("Failed to update manager for '%s', error was '%s'", $entry['dn'], $ldap->get_error())); } } /* Delete references to roles */ $ldap->cd ($this->config->current['BASE']); $ldap->search ("(&(objectClass=organizationalRole)(roleOccupant=".LDAP::prepare4filter($this->dn)."))", array("cn")); while ($ldap->fetch()){ $role= new roleGeneric($this->config, $ldap->getDN()); $key = array_search($this->dn,$role->roleOccupant); if($key !== FALSE){ unset($role->roleOccupant[$key]); $role->roleOccupant= array_values($role->roleOccupant); $role->save (); } } /* If needed, let the password method do some cleanup */ $tmp = new passwordMethod($this->config, $this->dn); $available = $tmp->get_available_methods(); if (in_array_ics($this->pw_storage, $available['name'])){ $test= new $available[$this->pw_storage]($this->config); $test->attrs= $this->attrs; $test->dn= $this->dn; $test->remove_from_parent(); } /* Remove ACL dependencies too */ acl::remove_acl_for($this->dn); /* Optionally execute a command after we're done */ $this->handle_post_events("remove",array("uid" => $this->uid)); } /* Save data to object */ function save_object() { if(isset($_POST['generic']) || isset($_POST['multiple_user_posted'])){ /* Make a backup of the current selected base */ $base_tmp = $this->base; /* Parents save function */ plugin::save_object (); /* Refresh base */ if ($this->acl_is_moveable($this->base) || ($this->dn == "new" && $this->acl_is_createable($this->base))){ if (!$this->baseSelector->update()) { msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); } if ($this->base != $this->baseSelector->getBase()) { $this->base= $this->baseSelector->getBase(); $this->is_modified= TRUE; } } /* Sync lists */ $this->gosaLoginRestrictionWidget->save_object(); if ($this->gosaLoginRestrictionWidget->isModified()) { $this->gosaLoginRestriction= array_values($this->gosaLoginRestrictionWidget->getMaintainedData()); } /* Save government mode attributes */ if ($this->governmentmode){ foreach ($this->govattrs as $val){ if ($this->acl_is_writeable($val)){ $data= get_post($val); if ($data != $this->$val){ $this->is_modified= TRUE; } $this->$val= $data; } } } /* In template mode, the uid is autogenerated... */ if ($this->is_template){ $this->uid= strtolower($this->sn); $this->givenName= $this->sn; } /* Get pw_storage mode */ if (isset($_POST['pw_storage'])){ foreach(array("pw_storage") as $val){ if(isset($_POST[$val])){ $data= get_post($val); if ($data != $this->$val){ $this->is_modified= TRUE; } $this->$val= $data; } } } if($this->pw_storage != $this->last_pw_storage && isset($_POST['pw_storage'])){ if ($this->acl_is_writeable("userPassword")){ $temp= passwordMethod::get_available_methods(); if (!is_object($this->pwObject) || !($this->pwObject instanceOf $temp[$this->pw_storage])){ foreach($temp as $id => $data){ if(isset($data['name']) && $data['name'] == $this->pw_storage && $data['is_configurable']){ $this->pwObject= new $temp[$this->pw_storage]($this->config,$this->dn); break; } } } } } /* Save current cn */ $this->cn = $this->givenName." ".$this->sn; } } function rebind($ldap, $referral) { $credentials= LDAP::get_credentials($referral, $this->config->current['REFERRAL']); if (ldap_bind($ldap, $credentials['ADMIN'], $credentials['PASSWORD'])) { $this->error = "Success"; $this->hascon=true; $this->reconnect= true; return (0); } else { $this->error = "Could not bind to " . $credentials['ADMIN']; return NULL; } } /* Save data to LDAP, depending on is_account we save or delete */ function save() { global $lang; /* Only force save of changes .... If this attributes aren't changed, avoid saving. */ if($this->gender=="0") $this->gender =""; if($this->preferredLanguage=="0") $this->preferredLanguage =""; /* First use parents methods to do some basic fillup in $this->attrs */ plugin::save (); if($this->pw_storage == "sasl"){ $tmp = new passwordMethodsasl($this->config,$this->dn); $this->attrs['userPassword'] = $tmp->generate_hash("dummy"); } if ($this->dateOfBirth != ""){ if(!is_array($this->attrs['dateOfBirth'])) { #TODO: use $lang to convert date list($day, $month, $year)= explode(".", $this->dateOfBirth); $this->attrs['dateOfBirth'] = sprintf("%04d-%02d-%02d", $year, $month, $day); } } /* Remove additional objectClasses */ $tmp= array(); foreach ($this->attrs['objectClass'] as $key => $set){ $found= false; foreach (array("ivbbentry", "gosaUserTemplate") as $val){ if (preg_match ("/^$set$/i", $val)){ $found= true; break; } } if (!$found){ $tmp[]= $set; } } /* Replace the objectClass array. This is done because of the separation into government and normal mode. */ $this->attrs['objectClass']= $tmp; /* Add objectClasss for template mode? */ if ($this->is_template){ $this->attrs['objectClass'][]= "gosaUserTemplate"; } /* Hard coded government mode? */ if ($this->governmentmode){ $this->attrs['objectClass'][]= "ivbbentry"; /* Copy standard attributes */ foreach ($this->govattrs as $val){ if ($this->$val != ""){ $this->attrs["$val"]= $this->$val; } elseif (!$this->is_new) { $this->attrs["$val"]= array(); } } /* Remove attribute if set to "nein" */ if ($this->publicVisible == "nein"){ $this->attrs['publicVisible']= array(); if($this->is_new){ unset($this->attrs['publicVisible']); }else{ $this->attrs['publicVisible']=array(); } } } /* Special handling for attribute userCertificate needed */ if ($this->userCertificate != ""){ $this->attrs["userCertificate;binary"]= $this->userCertificate; $remove_userCertificate= false; } else { $remove_userCertificate= true; } /* Special handling for dateOfBirth value */ if ($this->dateOfBirth == ""){ if ($this->is_new) { unset($this->attrs["dateOfBirth"]); } else { $this->attrs["dateOfBirth"]= array(); } } if (!$this->gender){ if ($this->is_new) { unset($this->attrs["gender"]); } else { $this->attrs["gender"]= array(); } } if (!$this->preferredLanguage){ if ($this->is_new) { unset($this->attrs["preferredLanguage"]); } else { $this->attrs["preferredLanguage"]= array(); } } /* Special handling for attribute jpegPhote needed, scale image via image magick to 147x200 pixels and inject resulting data. */ if ($this->jpegPhoto == "*removed*"){ /* Reset attribute to avoid writing *removed* as value */ $this->attrs["jpegPhoto"] = array(); } else { if(class_exists('Imagick')){ $im = new Imagick(); $im->readImageBlob($this->photoData); $im->setImageOpacity(1.0); $im->resizeImage(147,200,Imagick::FILTER_UNDEFINED,0.5,TRUE); $im->setCompressionQuality(90); $im->setImageFormat('jpeg'); $this->attrs["jpegPhoto"] = $im->getImageBlob(); }elseif (exec('convert')){ /* Get temporary file name for conversation */ $fname = tempnam (TEMP_DIR, "GOsa"); /* Open file and write out photoData */ $fp = fopen ($fname, "w"); fwrite ($fp, $this->photoData); fclose ($fp); /* Build conversation query. Filename is generated automatically, so we do not need any special security checks. Exec command and save output. For PHP safe mode, you'll need a configuration which respects image magick as executable... */ $query= "convert -size 147x200 $fname -resize 147x200 +profile \"*\" -"; @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $query, "Execute"); /* Read data written by convert */ $output= ""; $sh= popen($query, 'r'); while (!feof($sh)){ $output.= fread($sh, 4096); } pclose($sh); unlink($fname); /* Save attribute */ $this->attrs["jpegPhoto"] = $output; }else{ msg_dialog::display(_("Error"), _("Cannot save user picture: GOsa requires the package 'imagemagick' or 'php5-imagick' to be installed!"), ERROR_DIALOG); } } /* Save data. Using 'modify' implies that the entry is already present, use 'add' for new entries. So do a check first... */ $ldap= $this->config->get_ldap_link(); $ldap->cat ($this->dn, array('dn')); if ($ldap->fetch()){ $mode= "modify"; } else { $mode= "add"; $ldap->cd($this->config->current['BASE']); $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn)); } /* Set password to some junk stuff in case of templates */ if ($this->is_template){ $temp= passwordMethod::get_available_methods(); foreach($temp as $id => $data){ if(isset($data['name']) && $data['name'] == $this->pw_storage){ $tmp = new $temp[$this->pw_storage]($this->config,$this->dn); $tmp->set_hash($this->pw_storage); $this->attrs['userPassword'] = $tmp->create_template_hash($this->attrs); break; } } } @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $this->attributes, "Save via $mode"); /* Finally write data with selected 'mode' */ $this->cleanup(); /* Update current locale settings, if we have edited ourselves */ $ui = session::get('ui'); if(isset($this->attrs['preferredLanguage']) && $this->dn == $ui->dn){ $ui->language = $this->preferredLanguage; session::set('ui',$ui); session::set('Last_init_lang',"update"); } $ldap->cd ($this->dn); $ldap->$mode ($this->attrs); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); return (1); } /* Remove ACL dependencies too */ if($this->dn != $this->orig_dn && $this->orig_dn != "new"){ $tmp = new acl($this->config,$this->parent,$this->dn); $tmp->update_acl_membership($this->orig_dn,$this->dn); } if($mode == "modify"){ new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); }else{ new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); } /* Remove cert? For some reason, the 'ldap' class doesn't want to remove binary entries, so I need to work around myself. */ if ($remove_userCertificate == true && !$this->is_new && $this->had_userCertificate){ /* Reset array, assemble new, this should be reworked */ $this->attrs= array(); $this->attrs['userCertificate;binary']= array(); /* Prepare connection */ if (!($ds = ldap_connect($this->config->current['SERVER']))) { die ("Could not connect to LDAP server"); } ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); if (function_exists("ldap_set_rebind_proc") && $this->config->get_cfg_value("core","ldapFollowReferrals") == "true") { ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1); ldap_set_rebind_proc($ds, array(&$this, "rebind")); } if($this->config->get_cfg_value("core","ldapTLS") == "true"){ ldap_start_tls($ds); } if (!($res = @ldap_bind($ds, $this->config->current['ADMIN'], $this->config->current['PASSWORD']))) { die ("Could not bind to LDAP"); } /* Modify using attrs */ ldap_mod_del($ds,$this->dn,$this->attrs); ldap_close($ds); } /* If needed, let the password method do some cleanup */ if ($this->pw_storage != $this->last_pw_storage){ $tmp = new passwordMethod($this->config, $this->dn); $available = $tmp->get_available_methods(); if (in_array_ics($this->last_pw_storage, $available['name'])){ $test= new $available[$this->last_pw_storage]($this->config,$this->dn); $test->attrs= $this->attrs; $test->remove_from_parent(); } } /* Maybe the current password method want's to do some changes... */ if (is_object($this->pwObject)){ $this->pwObject->save($this->dn); } /* Optionally execute a command after we're done */ if ($mode == "add"){ $this->handle_post_events("add", array("uid" => $this->uid)); } elseif ($this->is_modified){ $this->handle_post_events("modify", array("uid" => $this->uid)); } return (0); } function create_initial_rdn($pattern) { // Only generate single RDNs if (preg_match('/\+/', $pattern)){ msg_dialog::display(_("Error"), _("Cannot build RDN: no + allowed to build sub RDN!"), ERROR_DIALOG); return ""; } // Extract attribute $attribute= preg_replace('/=.*$/', '', $pattern); if (!in_array_ics($attribute, $this->attributes)) { msg_dialog::display(_("Error"), _("Cannot build RDN: attribute is not defined!"), ERROR_DIALOG); return ""; } // Sort attributes for length $attrl= array(); foreach ($this->attributes as $attr) { $attrl[$attr]= strlen($attr); } arsort($attrl); // Walk thru sorted attributes and replace them in pattern foreach ($attrl as $attr => $dummy) { if (!is_array($this->$attr)){ $pattern= preg_replace("/%$attr/", $this->$attr, $pattern); } else { // Array elements cannot be used for ID generation if (preg_match("/%$attr/", $pattern)) { msg_dialog::display(_("Error"), _("Cannot build RDN: invalid attribute parameters!"), ERROR_DIALOG); break; } } } // Internally assign value $this->$attribute= preg_replace('/^[^=]+=/', '', $pattern); return $pattern; } function update_new_dn() { // Alternative way to handle DN $pattern= $this->config->get_cfg_value("user","accountRDN"); if ($pattern != "") { $rdn= $this->create_initial_rdn($pattern); $attribute= preg_replace('/=.*$/', '', $rdn); $value= preg_replace('/^[^=]+=$/', '', $rdn); /* Don't touch dn, if $attribute hasn't changed */ if (isset($this->saved_attributes[$attribute]) && $this->saved_attributes[$attribute] == $this->$attribute && $this->orig_base == $this->base ){ $this->new_dn= $this->dn; } else { $this->new_dn= $this->create_unique_dn2($rdn, get_people_ou().$this->base); } // Original way to handle DN } else { $pt= ""; if($this->config->get_cfg_value("core","personalTitleInDN") == "true"){ if(!empty($this->personalTitle)){ $pt = $this->personalTitle." "; } } $this->cn= $pt.$this->givenName." ".$this->sn; /* Permissions for that base? */ if ($this->config->get_cfg_value("core","accountPrimaryAttribute") == "uid"){ $this->new_dn= 'uid='.$this->uid.','.get_people_ou().$this->base; } else { /* Don't touch dn, if cn hasn't changed */ if (isset($this->saved_attributes['cn']) && $this->saved_attributes['cn'] == $this->cn && $this->orig_base == $this->base ){ $this->new_dn= $this->dn; } else { $this->new_dn= $this->create_unique_dn('cn', get_people_ou().$this->base); } } } } /* Check formular input */ function check() { /* Call common method to give check the hook */ $message= plugin::check(); /* Configurable password methods should be configured initially. */ if($this->last_pw_storage != $this->pw_storage){ $temp= passwordMethod::get_available_methods(); foreach($temp['name'] as $id => $name){ if($name == $this->pw_storage){ if($temp['is_configurable'][$id] && !$this->pwObject instanceof $temp[$name] ){ $message[] = _("The selected password method requires initial configuration!"); } break; } } } $this->update_new_dn(); /* Set the new acl base */ if($this->dn == "new") { $this->set_acl_base($this->base); } /* Check if we are allowed to create/move this user */ if($this->orig_dn == "new" && !$this->acl_is_createable($this->base)){ $message[]= msgPool::permCreate(); }elseif($this->orig_dn != "new" && $this->new_dn != $this->orig_dn){ /* Check if the objects dn has changed while the base was left unchanged. * In this case we've to check move permissions for the object itself. * * If the base has changed then we've to check the permission for the destination * base. */ if($this->orig_base == $this->base && !$this->acl_is_moveable($this->dn)){ $message[]= msgPool::permMove(); }elseif($this->orig_base != $this->base && !$this->acl_is_moveable($this->base)){ $message[]= msgPool::permMove(); } } /* UID already used? */ $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search("(uid=$this->uid)", array("uid")); $ldap->fetch(); if ($ldap->count() != 0 && $this->dn == 'new'){ $message[]= msgPool::duplicated(_("Login")); } /* In template mode, the uid and givenName are autogenerated... */ if ($this->sn == ""){ $message[]= msgPool::required(_("Name")); } // Check if a wrong base was supplied if(!$this->baseSelector->checkLastBaseUpdate()){ $message[]= msgPool::check_base();; } if (!$this->is_template){ if ($this->givenName == ""){ $message[]= msgPool::required(_("Given name")); } if ($this->uid == ""){ $message[]= msgPool::required(_("Login")); } if ($this->config->get_cfg_value("core","accountPrimaryAttribute") != "uid"){ $ldap->cat($this->new_dn); if ($ldap->count() != 0 && $this->dn != $this->new_dn && $this->dn == 'new'){ $message[]= msgPool::duplicated(_("Name")); } } } /* Check for valid input */ if ($this->is_modified && !tests::is_uid($this->uid)){ if (strict_uid_mode()){ $message[]= msgPool::invalid(_("Login"), $this->uid, "/[a-z0-9_-]/"); } else { $message[]= msgPool::invalid(_("Login"), $this->uid, "/[a-z0-9_-]/i"); } } if (!tests::is_url($this->labeledURI)){ $message[]= msgPool::invalid(_("Homepage"), "", "", "http://www.your-domain.com/yourname"); } /* Check phone numbers */ if (!tests::is_phone_nr($this->telephoneNumber)){ $message[]= msgPool::invalid(_("Phone"), $this->telephoneNumber, "/[\/0-9 ()+*-]/"); } if (!tests::is_phone_nr($this->facsimileTelephoneNumber)){ $message[]= msgPool::invalid(_("Fax"), $this->facsimileTelephoneNumber, "/[\/0-9 ()+*-]/"); } if (!tests::is_phone_nr($this->mobile)){ $message[]= msgPool::invalid(_("Mobile"), $this->mobile, "/[\/0-9 ()+*-]/"); } if (!tests::is_phone_nr($this->pager)){ $message[]= msgPool::invalid(_("Pager"), $this->pager, "/[\/0-9 ()+*-]/"); } /* Check dates */ if (!tests::is_date($this->dateOfBirth)){ $message[]= msgPool::invalid(_("Date of birth"), $this->dateOfBirth,"" ,"23.02.2009"); } /* Check for reserved characers */ if (preg_match ('/[,+"?\'()=<>;\\\\]/', $this->givenName)){ $message[]= msgPool::invalid(_("Given name"), $this->givenName, '/[^,+"?\'()=<>;\\\\]/'); } if (preg_match ('/[,+"?\'()=<>;\\\\]/', $this->sn)){ $message[]= msgPool::invalid(_("Name"), $this->sn, '/[^,+"?\'()=<>;\\\\]/'); } return $message; } /* Indicate whether a password change is needed or not */ function password_change_needed() { if($this->multiple_support_active){ return(FALSE); }else{ if(in_array_strict("pw_storage",$this->multi_boxes)){ return(TRUE); } return($this->pw_storage != $this->last_pw_storage && !$this->is_template); } } /* Load a jpegPhoto from LDAP, this is going to be simplified later on */ function load_picture() { $ldap = $this->config->get_ldap_link(); $ldap->cd ($this->dn); $data = $ldap->get_attribute($this->dn,"jpegPhoto"); if((!$data) || ($data == "*removed*")){ /* In case we don't get an entry, load a default picture */ $this->set_picture (); $this->jpegPhoto= "*removed*"; }else{ /* Set picture */ $this->photoData= $data; session::set('binary',$this->photoData); session::set('binarytype',"image/jpeg"); $this->jpegPhoto= ""; } } /* Load a certificate from LDAP, this is going to be simplified later on */ function load_cert() { $ds= ldap_connect($this->config->current['SERVER']); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); if (function_exists("ldap_set_rebind_proc") && $this->config->get_cfg_value("core","ldapFollowReferrals") == "true"){ ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1); ldap_set_rebind_proc($ds, array(&$this, "rebind")); } if ($this->config->get_cfg_value("core","ldapTLS") == "true"){ ldap_start_tls($ds); } $r= ldap_bind($ds); $sr= @ldap_read($ds, $this->dn, "userCertificate=*", array("userCertificate")); if ($sr) { $ei= @ldap_first_entry($ds, $sr); if ($ei) { if (!$info = @ldap_get_values_len($ds, $ei, "userCertificate;binary")){ $this->userCertificate= ""; } else { $this->userCertificate= $info[0]; } } } else { $this->userCertificate= ""; } ldap_unbind($ds); } /* Load picture from file to object */ function set_picture($filename ="") { if (!is_file($filename) || $filename =="" ){ $filename= "./plugins/users/images/default.jpg"; $this->jpegPhoto= "*removed*"; } clearstatcache(); $fd = fopen ($filename, "rb"); $this->photoData= fread ($fd, filesize ($filename)); session::set('binary',$this->photoData); session::set('binarytype',"image/jpeg"); $this->jpegPhoto= ""; fclose ($fd); } /* Load certificate from file to object */ function set_cert($cert, $filename) { if(!$this->acl_is_writeable("Certificate")) return; clearstatcache(); $fd = fopen ($filename, "rb"); if (filesize($filename)>0) { $this->$cert= fread ($fd, filesize ($filename)); fclose ($fd); $this->is_modified= TRUE; } else { msg_dialog::display(_("Error"), _("Cannot open certificate!"), ERROR_DIALOG); } } /* Adapt from given 'dn' */ function adapt_from_template($dn, $skip= array()) { plugin::adapt_from_template($dn, $skip); /* Get password method from template */ $tmp= passwordMethod::get_method($this->attrs['userPassword'][0]); if(is_object($tmp)){ if($tmp->is_configurable()){ $tmp->adapt_from_template($dn); $this->pwObject = &$tmp; } $this->pw_storage= $tmp->get_hash(); } /* Get base */ $this->base= preg_replace('/^[^,]+,'.preg_quote(get_people_ou(), '/').'/i', '', $dn); $this->baseSelector->setBase($this->base); if($this->governmentmode){ /* Walk through govattrs */ foreach ($this->govattrs as $val){ if (in_array_strict($val, $skip)){ continue; } if (isset($this->attrs["$val"][0])){ /* If attribute is set, replace dynamic parts: %sn, %givenName and %uid. Fill these in our local variables. */ $value= $this->attrs["$val"][0]; foreach (array("sn", "givenName", "uid") as $repl){ if (preg_match("/%$repl/i", $value)){ $value= preg_replace ("/%$repl/i", $this->parent->$repl, $value); } } $this->$val= $value; } } } /* Get back uid/sn/givenName - only write if nothing's skipped */ if ($this->parent !== NULL && count($skip) == 0){ $this->uid= $this->parent->uid; $this->sn= $this->parent->sn; $this->givenName= $this->parent->givenName; } /* Generate dateOfBirth entry */ if (isset ($this->attrs['dateOfBirth'])){ /* This entry is ISO 8601 conform */ list($year, $month, $day)= explode("-", $this->attrs['dateOfBirth'][0], 3); #TODO: use $lang to convert date $this->dateOfBirth= "$day.$month.$year"; } else { $this->dateOfBirth= ""; } } /* This avoids that users move themselves out of their rights. */ function allowedBasesToMoveTo() { /* Get bases */ $bases = $this->get_allowed_bases(); return($bases); } function getCopyDialog() { $str = ""; session::set('binary',$this->photoData); session::set('binarytype',"image/jpeg"); /* Get random number for pictures */ srand((double)microtime()*1000000); $rand = rand(0, 10000); $smarty = get_smarty(); $smarty->assign("passwordTodo","clear"); if(isset($_POST['passwordTodo'])){ $smarty->assign("passwordTodo",set_post(get_post('passwordTodo'))); } $smarty->assign("sn", set_post($this->sn)); $smarty->assign("givenName",set_post($this->givenName)); $smarty->assign("uid", set_post($this->uid)); $smarty->assign("rand", $rand); $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); $ret = array(); $ret['string'] = $str; $ret['status'] = ""; return($ret); } function saveCopyDialog() { /* Set_acl_base */ $this->set_acl_base($this->base); if((isset($_FILES['picture_file']['tmp_name'])) && ($_FILES['picture_file']['size'] > 0)){ $this->set_picture(gosa_file_name($_FILES['picture_file']['tmp_name'])); } /* Remove picture? */ if (isset($_POST['picture_remove'])){ $this->jpegPhoto= "*removed*"; $this->set_picture ("./plugins/users/images/default.jpg"); $this->is_modified= TRUE; } $attrs = array("uid","givenName","sn"); foreach($attrs as $attr){ if(isset($_POST[$attr])){ $this->$attr = get_post($attr); } } } function PrepareForCopyPaste($source) { plugin::PrepareForCopyPaste($source); /* Reset certificate information addepted from source user to avoid setting the same user certificate for the destination user. */ $this->userPKCS12= ""; $this->userSMIMECertificate= ""; $this->userCertificate= ""; $this->certificateSerialNumber= ""; $this->old_certificateSerialNumber= ""; $this->old_userPKCS12= ""; $this->old_userSMIMECertificate= ""; $this->old_userCertificate= ""; /* Generate dateOfBirth entry */ if (isset ($source['dateOfBirth'])){ list($year, $month, $day)= explode("-", $source['dateOfBirth'][0], 3); $this->dateOfBirth= "$day.$month.$year"; } else { $this->dateOfBirth= ""; } // Try to load the user picture $tmp_dn = $this->dn; $this->dn = $source['dn']; $this->load_picture(); $this->dn = $tmp_dn; } static function plInfo() { $govattrs= array( "gouvernmentOrganizationalUnit" => _("Unit"), "houseIdentifier" => _("House identifier"), "vocation" => _("Vocation"), "ivbbLastDeliveryCollective" => _("Last delivery"), "gouvernmentOrganizationalPersonLocality" => _("Person locality"), "gouvernmentOrganizationalUnitDescription" => _("Unit description"), "gouvernmentOrganizationalUnitSubjectArea" => _("Subject area"), "functionalTitle" => _("Functional title"), "certificateSerialNumber" => _("Certificate serial number"), "publicVisible" => _("Public visible"), "street" => _("Street"), "role" => _("Role"), "postalCode" => _("Postal code")); $ret = array( "plShortName" => _("Generic"), "plDescription" => _("Generic user settings"), "plSelfModify" => TRUE, "plDepends" => array(), "plPriority" => 1, "plSection" => array("personal" => _("My account")), "plCategory" => array("users" => array("description" => _("Users"), "objectClass" => "gosaAccount")), "plRequirements"=> array( 'ldapSchema' => array( 'gosaAccount' => '>=2.7', 'gosaUserTemplate' => '>=2.7' ), 'onFailureDisablePlugin' => array(get_class(),'userManagement', 'user') ), "plProperties" => array( array( "name" => "accountRDN", "type" => "string", "default" => "", "description" => _("Pattern for the generation of user DNs. Please read the FAQ for details."), "check" => "gosaProperty::isString", "migrate" => "", "group" => "plugin", "mandatory" => FALSE ) ), "plProvidedAcls" => array( "sn" => _("Surname"), "givenName" => _("Given name"), "uid" => _("Login"), "gosaUserDefinedFilter" => _("Allow definition of custom filters"), "personalTitle" => _("Personal title"), "academicTitle" => _("Academic title"), "dateOfBirth" => _("Date of birth"), "gender" => _("Sex"), "preferredLanguage" => _("Preferred language"), "base" => _("Base"), "userPicture" => _("User picture"), "gosaLoginRestriction" => _("Login restrictions"), "o" => _("Organization"), "ou" => _("Department"), "departmentNumber" => _("Department number"), "manager" => _("Manager"), "employeeNumber" => _("Employee number"), "employeeType" => _("Employee type"), "roomNumber" => _("Room number"), "telephoneNumber" => _("Telephone number"), "pager" => _("Pager number"), "mobile" => _("Mobile number"), "facsimileTelephoneNumber" => _("Fax number"), "st" => _("State"), "l" => _("Location"), "postalAddress" => _("Postal address"), "homePostalAddress" => _("Home postal address"), "homePhone" => _("Home phone number"), "labeledURI" => _("Homepage"), "userPassword" => _("User password method"), "Certificate" => _("User certificates")) ); # /* Append government attributes if required */ # global $config; # if($config->get_cfg_value("core","honourIvbbAttributes") == "true"){ # foreach($govattrs as $attr => $desc){ # $ret["plProvidedAcls"][$attr] = $desc; # } # } return($ret); } function get_multi_edit_values() { $ret = plugin::get_multi_edit_values(); if(in_array_strict("pw_storage",$this->multi_boxes)){ $ret['pw_storage'] = $this->pw_storage; } if(in_array_strict("edit_picture",$this->multi_boxes)){ $ret['jpegPhoto'] = $this->jpegPhoto; $ret['photoData'] = $this->photoData; $ret['old_jpegPhoto'] = $this->old_jpegPhoto; $ret['old_photoData'] = $this->old_photoData; } if(isset($ret['dateOfBirth'])){ unset($ret['dateOfBirth']); } if(isset($ret['cn'])){ unset($ret['cn']); } $ret['is_modified'] = $this->is_modified; if(in_array_strict("base",$this->multi_boxes)){ $ret['orig_base']="Changed_by_Multi_Plug"; $ret['base']=$this->base; } $ret['gosaLoginRestriction'] = $this->gosaLoginRestriction; $ret['gosaLoginRestriction_some'] = $this->gosaLoginRestriction_some; return($ret); } function multiple_save_object() { if(!isset($_POST['user_mulitple_edit'])) return; plugin::multiple_save_object(); /* Get pw_storage mode */ if (isset($_POST['pw_storage'])){ foreach(array("pw_storage") as $val){ if(isset($_POST[$val])){ $data= get_post($val); if ($data != $this->$val){ $this->is_modified= TRUE; } $this->$val= $data; } } } /* Refresh base */ if ($this->acl_is_moveable($this->base)){ if (!$this->baseSelector->update()) { msg_dialog::display(_("Error"), msgPool::permMove(), ERROR_DIALOG); } if ($this->base != $this->baseSelector->getBase()) { $this->base= $this->baseSelector->getBase(); } } if(isset($_POST['user_mulitple_edit'])){ foreach(array("base","pw_storage","edit_picture") as $val){ if(isset($_POST["use_".$val])){ $this->multi_boxes[] = $val; } } } /* Sync lists */ $this->gosaLoginRestrictionWidget->save_object(); if ($this->gosaLoginRestrictionWidget->isModified()) { $this->gosaLoginRestriction= array_values($this->gosaLoginRestrictionWidget->getMaintainedData()); } } function multiple_check() { /* Call check() to set new_dn correctly ... */ $message = plugin::multiple_check(); /* Set the new acl base */ if($this->dn == "new") { $this->set_acl_base($this->base); } if (!tests::is_url($this->labeledURI) && in_array_strict("labeledURI",$this->multi_boxes)){ $message[]= msgPool::invalid(_("Homepage")); } if (!tests::is_phone_nr($this->telephoneNumber) && in_array_strict("telephoneNumber",$this->multi_boxes)){ $message[]= msgPool::invalid(_("Phone"), $this->telephoneNumber, "/[\/0-9 ()+*-]/"); } if (!tests::is_phone_nr($this->facsimileTelephoneNumber) && in_array_strict("facsimileTelephoneNumber",$this->multi_boxes)){ $message[]= msgPool::invalid(_("Fax"), $this->facsimileTelephoneNumber, "/[\/0-9 ()+*-]/"); } if (!tests::is_phone_nr($this->mobile) && in_array_strict("mobile",$this->multi_boxes)){ $message[]= msgPool::invalid(_("Mobile"), $this->mobile, "/[\/0-9 ()+*-]/"); } if (!tests::is_phone_nr($this->pager) && in_array_strict("pager",$this->multi_boxes)){ $message[]= msgPool::invalid(_("Pager"), $this->pager, "/[\/0-9 ()+*-]/"); } if (preg_match ('/[,+"?\'()=<>;\\\\]/', $this->givenName) && in_array_strict("givenName",$this->multi_boxes)){ $message[]= msgPool::invalid(_("Given name"), $this->giveName, '/[^,+"?\'()=<>;\\\\]/'); } if (preg_match ('/[,+"?\'()=<>;\\\\]/', $this->sn) && in_array_strict("sn",$this->multi_boxes)){ $message[]= msgPool::invalid(_("Name"), $this->sn, '/[^,+"?\'()=<>;\\\\]/'); } return($message); } function multiple_execute() { return($this->execute()); } /*! \brief Prepares the plugin to be used for multiple edit * Update plugin attributes with given array of attribtues. * \param array Array with attributes that must be updated. */ function init_multiple_support($attrs,$all) { plugin::init_multiple_support($attrs,$all); // Get login restrictions if(isset($attrs['gosaLoginRestriction'])){ $this->gosaLoginRestriction =array(); for($i =0;$i < $attrs['gosaLoginRestriction']['count']; $i++){ $this->gosaLoginRestriction[] = $attrs['gosaLoginRestriction'][$i]; } } // Detect the managers name $this->manager_name = ""; $ldap = $this->config->get_ldap_link(); if(!empty($this->manager)){ $ldap->cat($this->manager, array('cn')); if($ldap->count()){ $attrs = $ldap->fetch(); $this->manager_name = $attrs['cn'][0]; }else{ $this->manager_name = "("._("unknown")."!): ".$this->manager; } } // Detect login restriction not used in all user objects. $this->gosaLoginRestriction_some = array(); if(isset($all['gosaLoginRestriction'])){ for($i=0;$i<$all['gosaLoginRestriction']['count'];$i++){ $this->gosaLoginRestriction_some[] = $all['gosaLoginRestriction'][$i]; } } // Reinit the login restriction list. $data = $this->convertLoginRestriction(); if(count($data)){ $this->gosaLoginRestrictionWidget->setListData($data['data'], $data['displayData']); } } function set_multi_edit_values($attrs) { $lR = array(); // Update loginRestrictions, keep my settings while ip is optional foreach($attrs['gosaLoginRestriction_some'] as $ip){ if(in_array_strict($ip, $this->gosaLoginRestriction) && in_array_strict($ip, $attrs['gosaLoginRestriction'])){ $lR[] = $ip; } } // Add enforced loginRestrictions foreach($attrs['gosaLoginRestriction'] as $ip){ $lR[] = $ip; } $lR = array_values(array_unique($lR)); $this->is_modified |= array_differs($this->gosaLoginRestriction, $lR); plugin::set_multi_edit_values($attrs); $this->gosaLoginRestriction = $lR; } function convertLoginRestriction() { $all = array_unique(array_merge($this->gosaLoginRestriction,$this->gosaLoginRestriction_some)); $data = array(); foreach($all as $ip){ $data['data'][] = $ip; if(!in_array_strict($ip, $this->gosaLoginRestriction)){ $data['displayData'][] = array('mode' => LIST_MARKED , 'data' => array($ip.' ('._("Entries differ").')')); }else{ $data['displayData'][] = array('mode' => 0 , 'data' => array($ip)); } } return($data); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/personal/generic/generic.tpl0000644000175000017500000005055511444610365021132 0ustar mikemike

    {t}Personal information{/t}

    {if !$userPicture_is_readable} {else} {/if}
    {render acl=$userPictureACL checkbox=$multiple_support checked=$use_edit_picture} {/render}
    {if $is_template ne "true"} {else}
    {if $multiple_support} {else} {render acl=$snACL} {/render} {/if}
    {if $multiple_support} {else} {render acl=$givenNameACL} {/render} {/if}
    {if !$multiple_support} {render acl=$uidACL} {/render} {else} {/if}
    {/if} {if !$multiple_support} {/if}
    {render acl=$snACL}{/render}
    {render acl=$personalTitleACL checkbox=$multiple_support checked=$use_personalTitle} {/render}
    {render acl=$academicTitleACL checkbox=$multiple_support checked=$use_academicTitle} {/render}
    {render acl=$dateOfBirthACL} {if $dateOfBirthACL|regex_replace:"/[cdmr]/":"" == "w"} {/if} {/render}
    {render acl=$genderACL} {/render}
    {render acl=$preferredLanguageACL checkbox=$multiple_support checked=$use_preferredLanguage} {/render}
    {t}Base{/t}
    {render acl=$baseACL checkbox=$multiple_support checked=$use_base} {$base} {/render}
      {if $is_template ne "true" && !$multiple_support} {/if}
    {render acl=$homePostalAddressACL checkbox=$multiple_support checked=$use_homePostalAddress} {/render}
    {render acl=$homePhoneACL checkbox=$multiple_support checked=$use_homePhone} {/render}
    {render acl=$labeledURIACL checkbox=$multiple_support checked=$use_labeledURI} {/render}
    {render acl=$passwordStorageACL checkbox=$multiple_support checked=$use_pw_storage} {if $pw_configurable eq "true"}   {/if} {/render}
    {render acl=$CertificatesACL mode=read_active} {/render}
    {if !$multiple_support} {render acl=$gosaLoginRestrictionACL} {$gosaLoginRestrictionWidget} {/render} {render acl=$gosaLoginRestrictionACL} {/render} {render acl=$gosaLoginRestrictionACL} {/render} {else} {if !$use_gosaLoginRestriction} {render acl=$gosaLoginRestriction_ONLY_R_ACL} {$gosaLoginRestrictionWidget} {/render} {else} {render acl=$gosaLoginRestrictionACL} {$gosaLoginRestrictionWidget} {/render} {render acl=$gosaLoginRestrictionACL} {/render} {render acl=$gosaLoginRestrictionACL} {/render} {/if} {/if}

    {if $governmentmode ne "true"} {else} {/if}

    {t}Organizational information{/t}

    {if !$multiple_support} {else} {/if}
    {render acl=$oACL checkbox=$multiple_support checked=$use_o} {/render}
    {render acl=$ouACL checkbox=$multiple_support checked=$use_ou} {/render}
    {render acl=$departmentNumberACL checkbox=$multiple_support checked=$use_departmentNumber} {/render}
    {render acl=$employeeNumberACL checkbox=$multiple_support checked=$use_employeeNumber} {/render}
    {render acl=$employeeTypeACL checkbox=$multiple_support checked=$use_employeeType} {/render}
    {render acl=$managerACL} {/render} {image path="images/lists/edit.png" action="editManager" acl=$managerACL} {if $manager!=""} {image path="images/info_small.png" title="{$manager}" acl=$managerACL} {image path="images/lists/trash.png" action="removeManager" acl=$managerACL} {/if}
    {if $use_manager} {image path="images/lists/edit.png" action="editManager"} {if $manager!=""} {image path="images/info_small.png" title="{$manager}"} {image path="images/lists/trash.png" action="removeManager"} {/if} {/if}
      {if $has_phoneaccount ne "true"} {/if}
    {render acl=$roomNumberACL checkbox=$multiple_support checked=$use_roomNumber} {/render}
    {render acl=$telephoneNumberACL checkbox=$multiple_support checked=$use_telephoneNumber} {/render}
    {render acl=$mobileACL checkbox=$multiple_support checked=$use_mobile} {/render}
    {render acl=$pagerACL checkbox=$multiple_support checked=$use_pager} {/render}
    {render acl=$facsimileTelephoneNumberACL checkbox=$multiple_support checked=$use_facsimileTelephoneNumber} {/render}
     
    {render acl=$lACL checkbox=$multiple_support checked=$use_l} {/render}
    {render acl=$stACL checkbox=$multiple_support checked=$use_st} {/render}
    {render acl=$postalAddressACL checkbox=$multiple_support checked=$use_postalAddress} {/render}
    {render acl=$vocationACL checkbox=$multiple_support checked=$use_vocation} {/render}
    {render acl=$gouvernmentOrganizationalUnitDescriptionACL checkbox=$multiple_support checked=$use_gouvernmentOrganizationalUnitDescription} {/render}
    {render acl=$gouvernmentOrganizationalUnitSubjectAreaACL checkbox=$multiple_support checked=$use_gouvernmentOrganizationalUnitSubjectArea} {/render}
    {render acl=$functionalTitleACL checkbox=$multiple_support checked=$use_functionalTitle} {/render}
    {render acl=$roleACL checkbox=$multiple_support checked=$use_role} {/render}
    {render acl=$gouvernmentOrganizationalPersonLocalityACL checkbox=$multiple_support checked=$use_gouvernmentOrganizationalPersonLocality} {/render}
    {render acl=$gouvernmentOrganizationalUnitACL checkbox=$multiple_support checked=$use_gouvernmentOrganizationalUnit} {/render}
    {render acl=$streetACL checkbox=$multiple_support checked=$use_street} {/render}
    {render acl=$postalCodeACL checkbox=$multiple_support checked=$use_postalCode} {/render}
    {render acl=$houseIdentifierACL checkbox=$multiple_support checked=$use_houseIdentifier} {/render}
    {render acl=$roomNumberACL checkbox=$multiple_support checked=$use_roomNumber} {/render}
    {render acl=$telephoneNumberACL checkbox=$multiple_support checked=$use_telephoneNumber} {if $has_phoneaccount ne "true"} {else} {t}Please use the phone tab{/t} {/if} {/render}
    {render acl=$facsimileTelephoneNumberACL checkbox=$multiple_support checked=$use_facsimileTelephoneNumber} {/render}
    {render acl=$ivbbLastDeliveryCollectiveACL checkbox=$multiple_support checked=$use_ivbbLastDeliveryCollective} {/render}
    {render acl=$publicVisibleACL checkbox=$multiple_support checked=$use_publicVisible} {/render}
    {if $multiple_support} {/if} gosa-core-2.7.4/plugins/personal/posix/0000755000175000017500000000000011752422552016512 5ustar mikemikegosa-core-2.7.4/plugins/personal/posix/groupSelect/0000755000175000017500000000000011752422552021006 5ustar mikemikegosa-core-2.7.4/plugins/personal/posix/groupSelect/group-list.tpl0000644000175000017500000000124311363330527023632 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/personal/posix/groupSelect/class_filterLDAPBlacklist.inc0000644000175000017500000000156611613731145026452 0ustar mikemike $attr_values){ foreach($attr_values as $match){ foreach($entries as $id => $entry){ if(isset($entry[$attr_name])){ $test = $entry[$attr_name]; if(!is_array($test)) $test = array($test); if(in_array_strict($match, $test)) unset($entries[$id]); } } } } } return(array_values($entries)); } } ?> gosa-core-2.7.4/plugins/personal/posix/groupSelect/class_groupSelect.inc0000644000175000017500000000345411372163246025170 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array(get_ou("core", "groupRDN")); // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("group-filter.xml", true, dirname(__FILE__))); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("group-list.xml", true, dirname(__FILE__))); $headpage->setFilter($filter); parent::__construct($config, $ui, "groups", $headpage); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/personal/posix/groupSelect/group-filter.xml0000644000175000017500000000126411347711230024144 0ustar mikemike groups true default auto dn objectClass cn description default LDAPBlacklist (&(objectClass=posixGroup)(cn=$)) cn 0.5 3 gosa-core-2.7.4/plugins/personal/posix/groupSelect/group-list.xml0000644000175000017500000000277611347702503023646 0ustar mikemike true false true true groups 1 posixGroup groups group plugins/groups/images/select_group.png |20px;c||| %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 1 %{filter:objectType(dn,objectClass)} cn string %{cn} true description string %{description} true
    gosa-core-2.7.4/plugins/personal/posix/paste_generic.tpl0000644000175000017500000000433711424325206022044 0ustar mikemike

    {t}POSIX settings{/t}

     
     

    {t}Group membership{/t}

    {if $groups eq "too_many_for_nfs"} {t}(Warning: more than 16 groups are not supported by NFS!){/t}
    {/if}
     


    gosa-core-2.7.4/plugins/personal/posix/class_posixAccount.inc0000644000175000017500000015215011750223552023052 0ustar mikemike \version 2.00 \date 24.07.2003 This class provides the functionality to read and write all attributes relevant for posixAccounts and shadowAccounts from/to the LDAP. It does syntax checking and displays the formulars required. */ class posixAccount extends plugin { /* Definitions */ var $plHeadline= "POSIX"; var $plDescription= "Edit users POSIX settings"; /* Plugin specific values */ var $homeDirectory= ""; var $loginShell= "/bin/bash"; var $uidNumber= ""; var $gidNumber= ""; var $gecos= ""; var $shadowMin= "0"; var $shadowMax= "0"; var $shadowWarning= "0"; var $shadowLastChange= "0"; var $shadowInactive= "0"; var $shadowExpire= ""; var $accessTo= array(); var $glist=array(); var $status= ""; var $loginShellList= array(); var $groupMembership= array(); var $savedGroupMembership= array(); var $savedUidNumber= ""; var $savedGidNumber= ""; var $activate_shadowMin= "0"; var $activate_shadowMax= "0"; var $activate_shadowWarning= "0"; var $activate_shadowInactive= "0"; var $activate_shadowExpire= "0"; var $mustchangepassword= "0"; var $force_ids= 0; var $gotoLastSystemLogin= ""; var $groupSelect= FALSE; var $secondaryGroups= array(); var $primaryGroup= 0; var $memberGroup= array(); var $grouplist= array(); var $ui= array(); var $ssh= null; var $sshAcl= ""; var $view_logged= false; /* attribute list for save action */ var $CopyPasteVars = array("grouplist","groupMembership","activate_shadowMin", "activate_shadowMax","activate_shadowWarning","activate_shadowInactive","activate_shadowExpire", "must_change_password","printerList","grouplist","savedGidNumber","savedUidNumber"); var $attributes = array("homeDirectory", "loginShell", "uidNumber", "gidNumber", "gecos", "shadowMin", "shadowMax", "shadowWarning", "shadowInactive", "shadowLastChange", "shadowExpire", "uid", "gotoLastSystemLogin"); var $objectclasses= array("posixAccount", "shadowAccount"); var $uid= ""; var $multiple_support = TRUE; var $groupMembership_some = array(); // group SortableListing var $groupList = null; var $groupListData = null; /* constructor, if 'dn' is set, the node loads the given 'dn' from LDAP */ function posixAccount (&$config, $dn= NULL, $parent =NULL) { global $class_mapping; /* Configuration is fine, allways */ $this->config= $config; /* Load bases attributes */ plugin::plugin($config, $dn, $parent); $groupImage = image('plugins/groups/images/select_group.png'); $this->trustModeDialog = new trustModeDialog($this->config, $this->dn, $parent); $this->trustModeDialog->setAcl('users/posixAccount'); /* If gotoLastSystemLogin is available read it from ldap and create a readable date time string, fallback to sambaLogonTime if available. */ if(isset($this->attrs['gotoLastSystemLogin'][0]) && preg_match("/^[0-9]*$/",$this->attrs['gotoLastSystemLogin'][0])){ $this->gotoLastSystemLogin = date("d.m.Y H:i:s", strtotime($this->attrs['gotoLastSystemLogin'][0])); } else if(isset($this->attrs['sambaLogonTime'][0]) && preg_match("/^[0-9]*$/",$this->attrs['sambaLogonTime'][0])){ $this->gotoLastSystemLogin = date("d.m.Y H:i:s", $this->attrs['sambaLogonTime'][0]); } /* Setting uid to default */ if(isset($this->attrs['uid'][0])){ $this->uid = $this->attrs['uid'][0]; } $ldap= $this->config->get_ldap_link(); if ($dn !== NULL){ /* Correct is_account. shadowAccount is not required. */ if (isset($this->attrs['objectClass']) && in_array_strict('posixAccount', $this->attrs['objectClass'])){ $this->is_account= TRUE; } $this->initially_was_account= $this->is_account; /* Fill group */ $this->primaryGroup= $this->gidNumber; /* Generate status text */ $current= date("U"); $current= floor($current / 60 /60 / 24); if (($current >= $this->shadowExpire) && $this->shadowExpire){ $this->status= _("expired"); if (($current - $this->shadowExpire) < $this->shadowInactive){ $this->status.= ", "._("grace time active"); } } elseif (($this->shadowLastChange + $this->shadowMin) >= $current){ $this->status= _("active").", "._("password not changeable"); } elseif (($this->shadowLastChange + $this->shadowMax) >= $current){ $this->status= _("active").", "._("password expired"); } else { $this->status= _("active"); } /* Get group membership */ $this->groupListData = array(); $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=posixGroup)(memberUid=".$this->uid."))", array("cn", "description")); while ($attrs= $ldap->fetch()){ if (!isset($attrs["description"][0])){ $entry= $attrs["cn"][0]; $this->groupListData[$ldap->getDN()] = array($groupImage, $attrs["cn"][0], ""); } else { $entry= $attrs["cn"][0]." [".$attrs["description"][0]."]"; $this->groupListData[$ldap->getDN()] = array($groupImage, $attrs["cn"][0], $attrs["description"][0]); } $this->groupMembership[$ldap->getDN()]= $entry; } asort($this->groupMembership); reset($this->groupMembership); $this->savedGroupMembership= $this->groupMembership; $this->savedUidNumber= $this->uidNumber; $this->savedGidNumber= $this->gidNumber; // Instanciate SSH object if available if (isset($class_mapping["sshPublicKey"])){ if (empty($this->acl_base)){ $this->acl_base= $config->current['BASE']; } $this->sshAcl= $this->getacl("sshPublicKey"); $this->ssh= new sshPublicKey($this->config, $this->dn, $this->sshAcl); } } /* Adjust shadow checkboxes */ foreach (array("shadowMin", "shadowMax", "shadowWarning", "shadowInactive", "shadowExpire") as $val){ if ($this->$val != 0){ $oval= "activate_".$val; $this->$oval= "1"; } } /* Convert shadowExpire for usage */ if ($this->shadowExpire == 0){ $this->shadowExpire= ""; } else { $this->shadowExpire= date('d.m.Y', $this->shadowExpire * 60 * 60 * 24); } /* Generate shell list from CONFIG_DIR./shells */ if (file_exists(CONFIG_DIR.'/shells')){ $shells = file (CONFIG_DIR.'/shells'); foreach ($shells as $line){ if (!preg_match ("/^#/", $line)){ $this->loginShellList[]= trim($line); } } } else { if ($this->loginShell == ""){ $this->loginShellList[]= _("unconfigured"); } } /* Insert possibly missing loginShell */ if ($this->loginShell != "" && !in_array_strict($this->loginShell, $this->loginShellList)){ $this->loginShellList[]= $this->loginShell; } /* Generate group list */ $this->ui = get_userinfo(); $this->secondaryGroups[0]= "- "._("automatic")." -"; $ldap->cd($this->config->current['BASE']); $ldap->search("(objectClass=posixGroup)", array("cn", "gidNumber")); while($attrs = $ldap->fetch()){ $this->secondaryGroups[$attrs['gidNumber'][0]]= $attrs['cn'][0]; } asort ($this->secondaryGroups); // Templates do not have a gidNumber if($this->gidNumber == 2147483647){ $this->gidNumber = ""; $this->primaryGroup = 0; } $this->ui = get_userinfo(); // Create group-list $this->groupList = new sortableListing(array(), array()); $this->groupList->setHeader(array(_("~"), _("Group"), _("Description"))); $this->groupList->setEditable(false); $this->groupList->setDeleteable(true); $this->groupList->setInstantDelete(false); $this->groupList->setEditable(false); $this->groupList->setReorderable(false); $this->groupList->setDefaultSortColumn(1); $this->groupList->setHeight("150px"); $this->groupList->setAcl("rwcdm"); } /* execute generates the html output for this node */ function execute($isCopyPaste = false) { /* Call parent execute */ plugin::execute(); $display= ""; /* Log view */ if($this->is_account && !$this->view_logged){ $this->view_logged = TRUE; new log("view","users/".get_class($this),$this->dn); } $this->dialog = FALSE; if($this->multiple_support_active){ $this->is_account = TRUE; } if(!$isCopyPaste && ! $this->multiple_support_active){ /* Do we need to flip is_account state? */ if(isset($_POST['modify_state'])){ if($this->is_account && $this->acl_is_removeable()){ $this->is_account= FALSE; }elseif(!$this->is_account && $this->acl_is_createable()){ $this->is_account= TRUE; } } /* Do we represent a valid posixAccount? */ if (!$this->is_account && $this->parent === NULL ){ $display= "\"\" ". msgPool::noValidExtension(_("POSIX")).""; $display.= back_to_main(); return ($display); } /* Show tab dialog headers */ if ($this->parent !== NULL){ if ($this->is_account){ if (isset($this->parent->by_object['sambaAccount'])){ $obj= $this->parent->by_object['sambaAccount']; } if (isset($obj) && $obj->is_account == TRUE && ((isset($this->parent->by_object['sambaAccount']))&&($this->parent->by_object['sambaAccount']->is_account)) ||(isset($this->parent->by_object['environment'] ))&&($this->parent->by_object['environment'] ->is_account)){ /* Samba3 dependency on posix accounts are enabled in the moment, because I need to rely on unique uidNumbers. There'll be a better solution later on. */ $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("POSIX")), msgPool::featuresEnabled(_("POSIX"), array(_("Samba"), _("Environment"))), TRUE); } else { $display= $this->show_disable_header(msgPool::removeFeaturesButton(_("POSIX")), msgPool::featuresEnabled(_("POSIX"))); } } else { $display= $this->show_enable_header(msgPool::addFeaturesButton(_("POSIX")), msgPool::featuresDisabled(_("POSIX"))); return($display); } } } // Display dialog to allow selection of groups if (isset($_POST['edit_groupmembership'])){ $this->groupSelect = new groupSelect($this->config,get_userinfo()); } // Cancel group dialog if (isset($_POST['add_groups_cancel'])){ $this->groupSelect= NULL; } // Add groups selected in groupSelect dialog to ours. if (isset($_POST['add_groups_finish']) && $this->groupSelect){ $groups = $this->groupSelect->detectPostActions(); if(isset($groups['targets'])){ $this->addGroup ($groups['targets']); $this->is_modified= TRUE; } $this->groupSelect= NULL; } // Remove groups that were removed by list $this->groupList->save_object(); $actionL = $this->groupList->getAction(); if($actionL['action'] == "delete") { $key = $this->groupList->getData($actionL['targets'][0]); $this->delGroup(array($key)); } // Remove groups from currently selected groups. if (isset($_POST['delete_groupmembership']) && isset($_POST['group_list']) && count($_POST['group_list'])){ $this->delGroup (get_post('group_list')); } // Build group-list data $dDisp = array(); $dData = array(); foreach($this->groupListData as $key => $value) { $dData[$key] = $key; $dDisp[$key] = array('data' => $value); } $this->groupList->setListData($dData, $dDisp); $this->groupList->update(); /* Templates now! */ $smarty = get_smarty(); $smarty->assign("groupList", $this->groupList->render()); // Handle trust mode dialog $trustModeDialog = $this->trustModeDialog->execute(); if($this->trustModeDialog->trustSelect){ $this->dialog = TRUE; return($trustModeDialog); } $smarty->assign("trustModeDialog" , $trustModeDialog); /* Manage group add dialog */ if ($this->groupSelect){ $this->dialog = TRUE; // Build up blocklist session::set('filterBlacklist', array('dn' => array_keys($this->groupMembership))); return($this->groupSelect->execute()); } // Handle ssh dialog? if ($this->ssh instanceOf sshPublicKey && preg_match('/[rw]/', $this->getacl("sshPublicKey"))) { if ($result= $this->ssh->execute()) { $this->dialog= true; pathNavigator::registerPlugin("SSH keys"); return $result; } } /* Show main page */ $smarty= get_smarty(); $smarty->assign("sshPublicKeyACL", $this->getacl("sshPublicKey")); /* Depending on pwmode, currently hardcoded because there are no other methods */ if ( 1 == 1 ){ $smarty->assign("pwmode", dirname(__FILE__)."/posix_shadow"); $shadowMinACL = $this->getacl("shadowMin"); $smarty->assign("shadowmins", sprintf(_("Password can't be changed up to %s days after last change"), "shadowMin."\">")); $shadowMaxACL = $this->getacl("shadowMax"); $smarty->assign("shadowmaxs", sprintf(_("Password must be changed after %s days"), "shadowMax."\">")); $shadowInactiveACL= $this->getacl("shadowInactive"); $smarty->assign("shadowinactives", sprintf(_("Disable account after %s days of inactivity after password expiry"), "shadowInactive."\">")); $shadowWarningACL = $this->getacl("shadowWarning"); $smarty->assign("shadowwarnings", sprintf(_("Warn user %s days before password expiry"), "shadowWarning."\">")); foreach( array("activate_shadowMin", "activate_shadowMax", "activate_shadowExpire", "activate_shadowInactive","activate_shadowWarning") as $val){ if ($this->$val == 1){ $smarty->assign("$val", "checked"); } else { $smarty->assign("$val", ""); } $smarty->assign("$val"."ACL", $this->getacl(preg_replace("/^.*_/","",$val))); } $smarty->assign("mustchangepasswordACL", $this->getacl("mustchangepassword")); } // Set last system login $smarty->assign("gotoLastSystemLogin", set_post($this->gotoLastSystemLogin)); /* Fill arrays */ $smarty->assign("shells", set_post($this->loginShellList)); $smarty->assign("secondaryGroups", $this->secondaryGroups); $smarty->assign("primaryGroup", set_post($this->primaryGroup)); if(!$this->multiple_support_active){ if (!count($this->groupMembership)){ $smarty->assign("groupMembership", array(" ")); } else { $smarty->assign("groupMembership", set_post($this->groupMembership)); } }else{ $smarty->assign("groupMembership", set_post($this->groupMembership)); $smarty->assign("groupMembership_some", set_post($this->groupMembership_some)); } if (count($this->groupMembership) > 16){ $smarty->assign("groups", "too_many_for_nfs"); } else { $smarty->assign("groups", ""); } /* Avoid "Undefined index: forceMode" */ $smarty->assign("forceMode", ""); /* Checkboxes */ if ($this->force_ids == 1){ $smarty->assign("force_ids", "checked"); if (session::get('js')){ $smarty->assign("forceMode", ""); } } else { if (session::get('js')){ $smarty->assign("forceMode", "disabled"); } $smarty->assign("force_ids", ""); } /* Create onClick="" action string for the "Force UID/GID" option */ $onClickIDS =""; if(preg_match("/w/",$this->getacl("uidNumber"))){ $onClickIDS .= "changeState('uidNumber');"; } if(preg_match("/w/",$this->getacl("gidNumber"))){ $onClickIDS .= "changeState('gidNumber');"; } $smarty->assign("onClickIDS", $onClickIDS); $smarty->assign("force_idsACL", $this->getacl("uidNumber").$this->getacl("gidNumber")); foreach(array("primaryGroup","activate_shadowWarning","activate_shadowInactive","activate_shadowMin","activate_shadowMax","activate_shadowExpire","mustchangepassword") as $val){ if(in_array_strict($val,$this->multi_boxes)){ $smarty->assign("use_".$val,TRUE); }else{ $smarty->assign("use_".$val,FALSE); } } /* Load attributes and acl's */ foreach($this->attributes as $val){ if(in_array_strict($val,$this->multi_boxes)){ $smarty->assign("use_".$val,TRUE); }else{ $smarty->assign("use_".$val,FALSE); } $smarty->assign("$val", set_post($this->$val)); } $tmp = $this->plInfo(); foreach($tmp['plProvidedAcls'] as $val => $desc){ $smarty->assign("$val"."ACL", $this->getacl($val)); } if($this->read_only){ $smarty->assign("groupMembershipACL","r"); }else{ $smarty->assign("groupMembershipACL","rw"); } $smarty->assign("status", $this->status); if($this->mustchangepassword){ $smarty->assign("mustchangepassword", " checked "); } else { $smarty->assign("mustchangepassword", ""); } // Add SSH button if available $smarty->assign("sshPublicKey", $this->ssh?1:0); $smarty->assign("multiple_support" , $this->multiple_support_active); $display.= $smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__))); return($display); } /* remove object from parent */ function remove_from_parent() { /* Cancel if there's nothing to do here */ if ((!$this->initially_was_account) || (!$this->acl_is_removeable())){ return; } /* Remove and write to LDAP */ plugin::remove_from_parent(); /* Zero out array */ $this->attrs['gosaHostACL']= array(); /* Keep uid, because we need it for authentification! */ unset($this->attrs['uid']); @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, /* include global link_info */ $this->attributes, "Save"); $ldap= $this->config->get_ldap_link(); $ldap->cd($this->dn); $this->cleanup(); $ldap->modify ($this->attrs); new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); } /* Delete group only if cn is uid and there are no other members inside */ $ldap->cd ($this->config->current['BASE']); $ldap->search ("(&(objectClass=posixGroup)(gidNumber=".$this->gidNumber."))", array("cn", "memberUid")); if ($ldap->count() != 0){ $attrs= $ldap->fetch(); if ($attrs['cn'][0] == $this->uid && !isset($this->attrs['memberUid'])){ $ldap->rmDir($ldap->getDN()); } } /* Optionally execute a command after we're done */ $this->handle_post_events("remove",array("uid" => $this->uid)); } function save_object() { if (isset($_POST['posixTab'])){ /* Save values to object */ plugin::save_object(); $this->trustModeDialog->save_object(); /* Save force GID checkbox */ if($this->acl_is_writeable("gidNumber") || $this->acl_is_writeable("uidNumber")){ if (isset ($_POST['force_ids'])){ $data= 1; } else { $data= 0; } if ($this->force_ids != $data){ $this->is_modified= TRUE; } $this->force_ids= $data; } /*Save primary group settings */ if($this->acl_is_writeable("primaryGroup") && isset($_POST['primaryGroup'])){ $data= get_post('primaryGroup'); if ($this->primaryGroup != $data){ $this->is_modified= TRUE; } $this->primaryGroup= get_post('primaryGroup'); } /* Get seelcted shadow checkboxes */ foreach(array("shadowMin","shadowMax","shadowExpire","shadowInactive","shadowWarning") as $var) { if($this->acl_is_writeable($var)){ $activate_var = "activate_".$var; if(isset($_POST['activate_'.$var])){ $this->$activate_var = true; $this->$var = get_post($var); }else{ $this->$activate_var = false; if ($var != "shadowExpire") { $this->$var = 0; } } } } /* Force change password ? */ if(isset($_POST['mustchangepassword'])){ $this->mustchangepassword = TRUE; }else{ $this->mustchangepassword = FALSE; } } } /* Save data to LDAP, depending on is_account we save or delete */ function save() { /* Adapt shadow values */ if (!$this->activate_shadowExpire){ $this->shadowExpire= "0"; } else { /* Transform date to days since the beginning */ list($day, $month, $year)= explode('.', $this->shadowExpire, 3); $this->shadowExpire= (int)(mktime(0, 0, 0, $month, $day, $year)/ (60 * 60 * 24)) ; } if (!$this->activate_shadowMax){ $this->shadowMax= "0"; } if ($this->mustchangepassword){ $this->shadowLastChange= (int)(date("U") / 86400) - $this->shadowMax - 1; } elseif($this->shadowLastChange == 0) { $this->shadowLastChange= array(); } if (!$this->activate_shadowWarning){ $this->shadowWarning= "0"; } /* Check what to do with ID's Nothing forced, so we may have to generate our own IDs, if not done already. */ if ($this->force_ids == 0){ /* Handle uidNumber. * - use existing number if possible * - if not, try to create a new uniqe one. * */ if ($this->savedUidNumber != ""){ $this->uidNumber= $this->savedUidNumber; } else { /* Calculate new id's. We need to place a lock before calling get_next_id to get real unique values. */ $wait= 10; while (get_lock("uidnumber") != ""){ sleep (1); /* Oups - timed out */ if ($wait-- == 0){ msg_dialog::display(_("Warning"), _("Timeout while waiting for lock. Ignoring lock!"), WARNING_DIALOG); break; } } add_lock ("uidnumber", "gosa"); $this->uidNumber= get_next_id("uidNumber", $this->dn); } } /* Handle gidNumber * - If we do not have a primary group selected (automatic), we will check if there * is already a group with the same name and use this as primary. * - .. if we couldn't find a group with the same name, we will create a new one, * using the users uid as cn and a generated uniqe gidNumber. * */ if($this->is_template && !$this->primaryGroup){ $this->gidNumber = 2147483647; }elseif ($this->primaryGroup == 0 || $this->force_ids){ /* Search for existing group */ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); /* Are we forced to use a special gidNumber? */ if($this->force_ids){ $ldap->search("(&(objectClass=posixGroup)(gidNumber=".$this->gidNumber."))", array("cn","gidNumber")); }else{ $ldap->search("(&(objectClass=posixGroup)(gidNumber=*)(cn=".$this->uid."))", array("cn","gidNumber")); } /* No primary group found, create a new one */ if ($ldap->count() == 0){ $groupcn = $this->uid; $pri_attr = $this->config->get_cfg_value("core","accountPrimaryAttribute"); $groupdn= preg_replace ('/^'.preg_quote($pri_attr,'/').'=[^,]+,'.preg_quote(get_people_ou(),'/').'/i', 'cn='.$groupcn.','.get_groups_ou(), $this->dn); /* Request a new and uniqe gidNumber, if required */ if(!$this->force_ids){ $this->gidNumber= get_next_id("gidNumber", $this->dn); } /* If forced gidNumber could not be found, then check if the given group name already exists we do not want to modify the gidNumber of an existing group. */ $cnt= 0; while($ldap->dn_exists($groupdn) && ($cnt < 100)){ $cnt ++; $groupcn = $this->uid."_".$cnt; $groupdn= preg_replace ('/^'.preg_quote($pri_attr,'/').'=[^,]+,'.preg_quote(get_people_ou(),'/').'/i', 'cn='.$groupcn.','.get_groups_ou(), $this->dn); } /* Create new primary group and enforce the new gidNumber */ $g= new group($this->config, $groupdn); $g->cn= $groupcn; $g->force_gid= 1; $g->gidNumber= $this->gidNumber; $g->description= _("Group of user")." ".$this->givenName." ".$this->sn; $g->save (); @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, sprintf("Primary group '%s' created, using gidNumber '%s'.",$groupcn,$this->gidNumber),""); }else{ $attrs = $ldap->fetch(); $this->gidNumber = $attrs['gidNumber'][0]; @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "Found and used: ".$attrs['dn']."", sprintf("Primary group '%s' exists, gidNumber is '%s'.",$this->uid,$this->gidNumber)); } }else{ /* Primary group was selected by user */ $this->gidNumber = $this->primaryGroup; @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, sprintf("Primary group '%s' for user '%s' manually selected.",$this->gidNumber,$this->uid),""); } if ($this->activate_shadowMin != "1" ) { $this->shadowMin = ""; } if (($this->activate_shadowMax != "1") && ($this->mustchangepassword != "1")) { $this->shadowMax = ""; } if ($this->activate_shadowWarning != "1" ) { $this->shadowWarning = ""; } if ($this->activate_shadowInactive != "1" ) { $this->shadowInactive = ""; } if ($this->activate_shadowExpire != "1" ) { $this->shadowExpire = ""; } /* Fill gecos */ if (isset($this->parent) && $this->parent !== NULL){ $this->gecos= rewrite($this->parent->by_object['user']->cn); if (!preg_match('/^[a-z0-9 -]+$/i', $this->gecos)){ $this->gecos= ""; } } foreach(array("shadowMin","shadowMax","shadowWarning","shadowInactive","shadowExpire") as $attr){ $this->$attr = (int) $this->$attr; } /* Call parents save to prepare $this->attrs */ plugin::save(); /* include global link_info */ $this->cleanup(); /* This is just a test, we have had duplicated ids in the past when copy & paste was used. Normaly this should not happen. */ if(isset($this->attrs['uidNumber']) && !$this->force_ids){ $used = $this->get_used_uid_numbers(); if(isset($used[$this->attrs['uidNumber']]) && $used[$this->attrs['uidNumber']] != $this->dn){ msg_dialog::display(_("Warning"),_("A duplicated UID number was written for this user. If this was not intended please verify all used uidNumbers!"), WARNING_DIALOG); } } $ldap= $this->config->get_ldap_link(); $ldap->cd($this->dn); unset($this->attrs['uid']); $ldap->modify ($this->attrs); /* Log last action */ if($this->initially_was_account){ new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); }else{ new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); } if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); } /* Remove lock needed for unique id generation */ del_lock ("uidnumber"); // Save ssh stuff if needed if ($this->ssh) { $this->ssh->setDN($this->dn); $this->ssh->save(); } $this->trustModeDialog->dn = $this->dn; $this->trustModeDialog->save(); /* Take care about groupMembership values: add to groups */ foreach ($this->groupMembership as $key => $value){ if (!isset($this->savedGroupMembership[$key])){ $g= new grouptabs($this->config,$this->config->data['TABS']['GROUPTABS'], $key,"groups"); $g->set_acl_base($key); $g->by_object['group']->addUser($this->uid); $g->save(); } } /* Remove groups not listed in groupMembership */ foreach ($this->savedGroupMembership as $key => $value){ if (!isset($this->groupMembership[$key])){ $g= new grouptabs($this->config,$this->config->data['TABS']['GROUPTABS'], $key,"groups"); $g->set_acl_base($key); $g->by_object['group']->removeUser ($this->uid); $g->save(); } } /* Optionally execute a command after we're done */ if ($this->initially_was_account == $this->is_account){ if ($this->is_modified){ $this->handle_post_events("modify",array("uid" => $this->uid)); } } else { $this->handle_post_events("add" ,array("uid"=> $this->uid)); } } /* Check formular input */ function check() { /* Include global link_info */ $ldap= $this->config->get_ldap_link(); /* Append groups as memberGroup: to check hook */ $tmp_attributes = $this->attributes; $this->attributes[] = "memberGroup"; $this->memberGroup = array(); foreach($this->groupMembership as $dn => $name){ $this->memberGroup[] = $name; } /* Call common method to give check the hook */ $message= plugin::check(); $this->attributes = $tmp_attributes; /* must: homeDirectory */ if ($this->homeDirectory == ""){ $message[]= msgPool::required(_("Home directory")); } if (!tests::is_path($this->homeDirectory)){ $message[]= msgPool::invalid(_("Home directory"), "", "", "/home/yourname" ); } /* Check ID's if they are forced by user */ if ($this->force_ids == "1"){ /* Valid uid/gid? */ if (!tests::is_id($this->uidNumber)){ $message[]= msgPool::invalid(_("UID"), $this->uidNumber, "/[0-9]/"); } else { if ($this->uidNumber < $this->config->get_cfg_value("core","minId")){ $message[]= msgPool::toosmall(_("UID"), $this->config->get_cfg_value("core","minId")); } } if (!tests::is_id($this->gidNumber)){ $message[]= msgPool::invalid(_("GID"), $this->gidNumber, "/[0-9]/"); } else { if ($this->gidNumber < $this->config->get_cfg_value("core","minId")){ $message[]= msgPool::toosmall(_("GID"), $this->config->get_cfg_value("core","minId")); } } } /* Check dates */ if ($this->activate_shadowExpire && ($this->shadowExpire == "" || !tests::is_date($this->shadowExpire))){ $message[]= msgPool::invalid("shadowExpire", $this->shadowExpire); } /* Check shadow settings, well I like spaghetties... */ if ($this->activate_shadowMin){ if (!tests::is_id($this->shadowMin)){ $message[]= msgPool::invalid(_("shadowMin"), $this->shadowMin, "/[0-9]/"); } } if ($this->activate_shadowMax){ if (!tests::is_id($this->shadowMax)){ $message[]= msgPool::invalid(_("shadowMax"), $this->shadowMax, "/[0-9]/"); } } if ($this->activate_shadowWarning){ if (!tests::is_id($this->shadowWarning)){ $message[]= msgPool::invalid(_("shadowWarning"), $this->shadowWarning, "/[0-9]/"); } if (!$this->activate_shadowMax){ $message[]= msgPool::depends("shadowWarning", "shadowMax"); } if ($this->shadowWarning > $this->shadowMax){ $message[]= msgPool::toobig("shadowWarning", "shadowMax"); } if ($this->activate_shadowMin && $this->shadowWarning < $this->shadowMin){ $message[]= msgPool::toosmall("shadowWarning", "shadowMin"); } } if ($this->activate_shadowInactive){ if (!tests::is_id($this->shadowInactive)){ $message[]= msgPool::invalid(_("shadowInactive"), $this->shadowInactive, "/[0-9]/"); } if (!$this->activate_shadowMax){ $message[]= msgPool::depends("shadowInactive", "shadowMax"); } } if ($this->activate_shadowMin && $this->activate_shadowMax){ if ($this->shadowMin > $this->shadowMax){ $message[]= msgPool::toobig("shadowMin", "shadowMax"); } } return ($message); } function multiple_check() { $message = plugin::multiple_check(); if ($this->homeDirectory == "" && in_array_strict("homeDirectory",$this->multi_boxes)){ $message[]= msgPool::required(_("Home directory")); } if (!tests::is_path($this->homeDirectory) && in_array_strict("homeDirectory",$this->multi_boxes)){ $message[]= msgPool::invalid(_("Home directory"), "", "", "/home/yourname" ); } /* Check shadow settings, well I like spaghetties... */ if ($this->activate_shadowMin && in_array_strict("activate_shadowMin",$this->multi_boxes)){ if (!tests::is_id($this->shadowMin)){ $message[]= msgPool::invalid(_("shadowMin"), $this->shadowMin, "/[0-9]/"); } } if ($this->activate_shadowMax && in_array_strict("activate_shadowMax",$this->multi_boxes)){ if (!tests::is_id($this->shadowMax)){ $message[]= msgPool::invalid(_("shadowMax"), $this->shadowMax, "/[0-9]/"); } } if ($this->activate_shadowWarning && in_array_strict("activate_shadowWarning",$this->multi_boxes)){ if (!tests::is_id($this->shadowWarning)){ $message[]= msgPool::invalid(_("shadowWarning"), $this->shadowWarning, "/[0-9]/"); } if (!$this->activate_shadowMax && in_array_strict("activate_shadowMax",$this->multi_boxes)){ $message[]= msgPool::depends("shadowWarning", "shadowMax"); } if ($this->shadowWarning > $this->shadowMax && in_array_strict("activate_shadowWarning",$this->multi_boxes)){ $message[]= msgPool::toobig("shadowWarning", "shadowMax"); } if ($this->activate_shadowMin && $this->shadowWarning < $this->shadowMin && in_array_strict("activate_shadowMin",$this->multi_boxes)){ $message[]= msgPool::tosmall("shadowWarning", "shadowMin"); } } if ($this->activate_shadowInactive && in_array_strict("activate_shadowInactive",$this->multi_boxes)){ if (!tests::is_id($this->shadowInactive)){ $message[]= msgPool::invalid(_("shadowInactive"), $this->shadowInactive, "/[0-9]/"); } if (!$this->activate_shadowMax && in_array_strict("activate_shadowMax",$this->multi_boxes)){ $message[]= msgPool::depends("shadowInactive", "shadowMax"); } } if ($this->activate_shadowMin && $this->activate_shadowMax && in_array_strict("activate_shadowMin",$this->multi_boxes)){ if ($this->shadowMin > $this->shadowMax){ $message[]= msgPool::toobig("shadowMin", "shadowMax"); } } return($message); } function addGroup ($groups) { /* include global link_info */ $ldap= $this->config->get_ldap_link(); $groupImage = image("plugins/groups/images/select_group.png"); /* Walk through groups and add the descriptive entry if not exists */ foreach ($groups as $value){ if (!array_key_exists($value, $this->groupMembership)){ $ldap->cat($value, array('cn', 'description', 'dn')); $attrs= $ldap->fetch(); $dsc = " "; error_reporting (0); if (!isset($attrs['description'][0])){ $entry= $attrs["cn"][0]; } else { $dsc= preg_replace ('/^Group of user/', _("Group of user"), $attrs["description"][0]); $entry= $attrs["cn"][0]." [$dsc]"; } error_reporting (E_ALL | E_STRICT); if(obj_is_writable($attrs['dn'],"groups/group","memberUid")){ $this->groupMembership[$attrs['dn']]= $entry; /* Add new group to groupList */ $this->groupListData[$attrs['dn']] = array(); $this->groupListData[$attrs['dn']][] = $groupImage; $this->groupListData[$attrs['dn']][] = $attrs['cn'][0]; if(isset($attrs["description"])) { $this->groupListData[$attrs['dn']][] = $attrs['description'][0]; } else { $this->groupListData[$attrs['dn']][] = ""; } if($this->multiple_support_active) { $this->groupListData[$attrs['dn']][] = _("all"); } if($this->multiple_support_active && isset($this->groupMembership_some[$attrs['dn']])){ unset($this->groupMembership_some[$attrs['dn']]); } } } } /* Sort groups */ asort ($this->groupMembership); reset ($this->groupMembership); } /* Del posix user from some groups */ function delGroup ($groups) { $dest= array(); foreach($groups as $dn_to_del){ if(isset($this->groupMembership[$dn_to_del]) && obj_is_writable($dn_to_del,"groups/group","memberUid")){ unset($this->groupMembership[$dn_to_del]); unset($this->groupListData[$dn_to_del]); } if($this->multiple_support_active){ if(isset($this->groupMembership_some[$dn_to_del]) && obj_is_writable($dn_to_del,"groups/group","memberUid")){ unset($this->groupMembership_some[$dn_to_del]); unset($this->groupListData[$dn_to_del]); } } } } /* Adapt from template, using 'dn' */ function adapt_from_template($dn, $skip= array()) { /* Include global link_info */ $ldap= $this->config->get_ldap_link(); plugin::adapt_from_template($dn, $skip); $template= $this->attrs['uid'][0]; /* Adapt group membership */ $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=posixGroup)(memberUid=".$this->attrs["uid"][0]."))", array("description", "cn")); $groups = array(); while ($this->attrs= $ldap->fetch()){ $groups[] = $ldap->getDN(); } $this->addGroup($groups); /* Fix primary group settings */ if($this->gidNumber == 2147483647){ $this->gidNumber = ""; } if($this->gidNumber){ $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=posixGroup)(cn=$template)(gidNumber=".$this->gidNumber."))", array("cn")); if ($ldap->count() != 1){ $this->primaryGroup= $this->gidNumber; } } $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=gosaUserTemplate)(uid=".$template.")(accessTo=*))", array("cn","accessTo")); while($attr = $ldap->fetch()){ $tmp = $attr['accessTo']; unset ($tmp['count']); $this->accessTo = $tmp; } /* Adjust shadow checkboxes */ foreach (array("shadowMin", "shadowMax", "shadowWarning", "shadowInactive") as $val){ if ($this->$val != 0){ $oval= "activate_".$val; $this->$oval= "1"; } } /* Only enable checkbox, if shadowExpire is in the future */ if($this->shadowExpire > time()) { $this->activate_shadowExpire= "1"; } /* Convert shadowExpire for usage */ if ($this->shadowExpire == 0){ $this->shadowExpire= ""; } else { $this->shadowExpire= date('d.m.Y', $this->shadowExpire * 60 * 60 * 24); } } function convertToSeconds($val) { if ($val != 0){ $val*= 60 * 60 * 24; } else { $date= getdate(); $val= floor($date[0] / (60*60*24)) * 60 * 60 * 24; } return($val); } function get_used_uid_numbers() { $ids= array(); $ldap= $this->config->get_ldap_link(); $ldap->cd ($this->config->current['BASE']); $ldap->search ("(&(objectClass=posixAccount)(uidNumber=*))", array("uidNumber")); /* Get list of ids */ while ($attrs= $ldap->fetch()){ $ids[$attrs['uidNumber'][0]] = $attrs['dn']; } return($ids); } /* Get posts from copy & paste dialog */ function saveCopyDialog() { if(isset($_POST['homeDirectory'])){ $this->homeDirectory = get_post('homeDirectory'); if (isset ($_POST['force_ids'])){ $data= 1; $this->gidNumber = get_post('gidNumber'); $this->uidNumber = get_post('uidNumber'); } else { $data= 0; } if ($this->force_ids != $data){ $this->is_modified= TRUE; } $this->force_ids= $data; $data= get_post('primaryGroup'); if ($this->primaryGroup != $data){ $this->is_modified= TRUE; } $this->primaryGroup= get_post('primaryGroup'); } } /* Create the posix dialog part for copy & paste */ function getCopyDialog() { /* Skip dialog creation if this is not a valid account*/ if(!$this->is_account) return(""); if ($this->force_ids == 1){ $force_ids = "checked"; if (session::get('js')){ $forceMode = ""; } } else { if (session::get('js')){ if($this->acl != "#none#") $forceMode ="disabled"; } $force_ids = ""; } $sta = ""; /* Open group add dialog */ if(isset($_POST['edit_groupmembership'])){ $this->groupSelect = new groupSelect($this->config,get_userinfo()); $sta = "SubDialog"; } /* If the group-add dialog is closed, call execute to ensure that the membership is updatd */ if(isset($_POST['add_groups_finish']) || isset($_POST['add_groups_cancel'])){ $this->execute(); $this->groupSelect =NULL; } if($this->groupSelect){ $str = $this->execute(true); $ret = array(); $ret['string'] = $str; $ret['status'] = $sta; return($ret); } /* If a group member should be deleted, simply call execute */ if(isset($_POST['delete_groupmembership'])){ $this->execute(); } /* Assigned informations to smarty */ $smarty = get_smarty(); $smarty->assign("homeDirectory",set_post($this->homeDirectory)); $smarty->assign("secondaryGroups",$this->secondaryGroups); $smarty->assign("primaryGroup",set_post($this->primaryGroup)); $smarty->assign("uidNumber",set_post($this->uidNumber)); $smarty->assign("gidNumber",set_post($this->gidNumber)); $smarty->assign("forceMode",set_post($forceMode)); $smarty->assign("force_ids",set_post($force_ids)); if (!count($this->groupMembership)){ $smarty->assign("groupMembership", array(" ")); } else { $smarty->assign("groupMembership", set_post($this->groupMembership)); } /* Display wars message if there are more than 16 group members */ if (count($this->groupMembership) > 16){ $smarty->assign("groups", "too_many_for_nfs"); } else { $smarty->assign("groups", ""); } $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__))); $ret = array(); $ret['string'] = $str; $ret['status'] = $sta; return($ret); } function PrepareForCopyPaste($source) { plugin::PrepareForCopyPaste($source); $this->trustModeDialog->PrepareForCopyPaste($source); /* Avoid using the same gid/uid number as source user empty numbers to enforce new ones. */ $this->savedUidNumber = ""; $this->savedGidNumber = ""; /* Get group membership */ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search("(&(objectClass=posixGroup)(memberUid=".$source['uid'][0]."))", array("cn", "description")); while ($attrs= $ldap->fetch()){ if (!isset($attrs["description"][0])){ $entry= $attrs["cn"][0]; } else { $entry= $attrs["cn"][0]." [".$attrs["description"][0]."]"; } $this->groupMembership[$ldap->getDN()]= $entry; } asort($this->groupMembership); reset($this->groupMembership); /* Fill group */ if(isset($source['gidNumber'][0])){ $this->primaryGroup= $source['gidNumber'][0]; } /* Adjust shadow checkboxes */ foreach (array("shadowMin", "shadowMax", "shadowWarning", "shadowInactive", "shadowExpire") as $val){ if ($this->$val != 0){ $oval= "activate_".$val; $this->$oval= "1"; } } /* Convert shadowExpire for usage */ if ($this->shadowExpire == 0){ $this->shadowExpire= ""; } else { $this->shadowExpire= date('d.m.Y', $this->shadowExpire * 60 * 60 * 24); } $tmp = new trustModeDialog($this->config, $source['dn']); $this->trustModeDialog = new trustModeDialog($this->config, $this->dn); $this->trustModeDialog->trustModel = $tmp->trustModel; $this->trustModeDialog->accessTo = $tmp->accessTo; $this->trustModeDialog->setAcl('users/posixAccount'); } function multiple_execute() { return($this->execute()); } static function plInfo() { return (array( "plDescription" => _("POSIX account"), "plSelfModify" => TRUE, "plDepends" => array("user"), "plPriority" => 2, "plSection" => array("personal" => _("My account")), "plCategory" => array("users"), "plOptions" => array(), "plRequirements"=> array( 'ldapSchema' => array('posixAccount' => ''), 'onFailureDisablePlugin' => array(get_class(), 'sambaAccount','netatalk','environment') ), "plProvidedAcls" => array( "homeDirectory" => _("Home directory"), "primaryGroup" => _("Primary group"), "loginShell" => _("Shell"), "uidNumber" => _("User ID"), "gidNumber" => _("Group ID"), "shadowLastChange" => _("Shadow last changed"), "gotoLastSystemLogin" => _("Last login"), "mustchangepassword"=> _("Force password change on login"), "shadowMin" => _("Shadow min"), "shadowMax" => _("Shadow max"), "shadowWarning" => _("Shadow warning"), "shadowInactive" => _("Shadow inactive"), "shadowExpire" => _("Shadow expire"), "sshPublicKey" => _("Public SSH key"), "accessTo" => _("System trust model"))) ); } /* Return selected values for multiple edit */ function get_multi_edit_values() { $ret = plugin::get_multi_edit_values(); $ret = array_merge($ret,$this->trustModeDialog->get_multi_edit_values()); $ret['groupMembership'] = $this->groupMembership; $ret['groupMembership_some']= $this->groupMembership_some; if(in_array_strict("primaryGroup",$this->multi_boxes)){ $ret['primaryGroup'] = $this->primaryGroup; } foreach(array("shadowWarning","shadowInactive","shadowMin","shadowMax", "shadowExpire") as $entry){ $active = "activate_".$entry; if(in_array_strict($active,$this->multi_boxes)){ $ret[$entry] = $this->$entry; $ret[$active] = $this->$active; } } if(in_array_strict("mustchangepassword",$this->multi_boxes)){ $ret['mustchangepassword'] = $this->mustchangepassword; } return($ret); } /* Save posts for multiple edit */ function multiple_save_object() { if(isset($_POST['posix_mulitple_edit'])){ /* Backup expire value */ $expire_tmp = $this->shadowExpire; /* Update all values */ plugin::multiple_save_object(); $this->trustModeDialog->multiple_save_object(); /* Get selected checkboxes */ foreach(array("primaryGroup","mustchangepassword","activate_shadowWarning","activate_shadowInactive","activate_shadowMin", "activate_shadowMax","activate_shadowExpire") as $val){ if(isset($_POST["use_".$val])){ $this->multi_boxes[] = $val; } } /* Update special values, checkboxes for posixShadow */ foreach(array("shadowMin","shadowMax","shadowExpire","shadowInactive","shadowWarning") as $var) { if($this->acl_is_writeable($var)){ $activate_var = "activate_".$var; if(in_array_strict($activate_var, $this->multi_boxes)){ if(isset($_POST['activate_'.$var])){ $this->$activate_var = true; $this->$var = get_post($var); }else{ $this->$activate_var = false; $this->$var = 0; } } } } /* Restore shadow value, if the shadow attribute isn't used */ if(!in_array_strict("activate_shadowExpire",$this->multi_boxes)){ $this->shadowExpire = $expire_tmp; } /* Force change password ? */ if(isset($_POST['mustchangepassword'])){ $this->mustchangepassword = TRUE; }else{ $this->mustchangepassword = FALSE; } /* Save primary group settings */ if($this->acl_is_writeable("primaryGroup") && isset($_POST['primaryGroup'])){ $data= get_post('primaryGroup'); if ($this->primaryGroup != $data){ $this->is_modified= TRUE; } $this->primaryGroup= get_post('primaryGroup'); } } } /* Initialize plugin with given atribute arrays */ function init_multiple_support($attrs,$all) { plugin::init_multiple_support($attrs,$all); $this->trustModeDialog->init_multiple_support($attrs,$all); // set header for multiple support $this->groupList->setHeader(array(_("~"), _("Group"), _("Description"), _("Members"))); /* Some dummy values */ $groups_some = array(); $groups_all = array(); $groups_uid = array(); $uids = array(); $first = TRUE; $groupImage = image('plugins/groups/images/select_group.png'); /* Get all groups used by currently edited users */ $uid_filter=""; for($i =0; $i < $this->multi_attrs_all['uid']['count'] ; $i ++){ $uid = $this->multi_attrs_all['uid'][$i]; $uids[] = $uid; $uid_filter.= "(memberUid=".$uid.")"; } $uid_filter = "(&(objectClass=posixGroup)(|".$uid_filter."))"; $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search($uid_filter,array("dn","cn","memberUid","description")); while($group = $ldap->fetch()){ $groups_some[$group['dn']] = $group['cn'][0]; $desc = " "; if(isset($group['description'])) $desc = $group['description'][0]; $this->groupListData[$group['dn']] = array($groupImage, $group['cn'][0], $desc, _("some")); for($i = 0 ; $i < $group['memberUid']['count'] ; $i++){ $groups_uid[$group['dn']][] = $group['memberUid'][$i]; } } /* Create an array, containing all used groups */ $groups_all = $groups_some; foreach($groups_all as $id => $group){ foreach($uids as $uid){ if(!in_array_strict($uid,$groups_uid[$id])){ unset($groups_all[$id]); break; } } } /* Assign group array */ $this->groupMembership = $groups_all; /* Create an array of all grouops used by all users */ foreach($groups_all as $dn => $cn) { if(isset($groups_some[$dn])) { unset($groups_some[$dn]); $this->groupListData[$dn][3] = _("all"); } } $this->groupMembership_some = $groups_some; $this->primaryGroup = $this->gidNumber; /* Adjust shadow checkboxes */ foreach (array("shadowMin", "shadowMax", "shadowWarning", "shadowInactive", "shadowExpire") as $val){ if ($this->$val != 0){ $oval= "activate_".$val; $this->$oval= "1"; } } /* Convert to seconds */ if(isset($this->multi_attrs['shadowExpire'])){ $this->shadowExpire = $this->convertToSeconds($this->multi_attrs['shadowExpire'][0]); }else{ $this->activate_shadowExpire = FALSE; } } function set_multi_edit_values($attrs) { $groups = array(); /* Update groupMembership, keep optinal group */ foreach($attrs['groupMembership_some'] as $dn => $cn){ if(isset($this->groupMembership[$dn])){ $groups[$dn] = $cn; } } /* Update groupMembership, add forced groups */ foreach($attrs['groupMembership'] as $dn => $cn){ $groups[$dn] = $cn; } plugin::set_multi_edit_values($attrs); $this->trustModeDialog->set_multi_edit_values($attrs); $this->groupMembership = $groups; } function set_acl_base($base) { @DEBUG (DEBUG_ACL, __LINE__, __FUNCTION__, __FILE__,"".$base."","ACL-Base: "); $this->acl_base= $base; $this->trustModeDialog->set_acl_base($base); } /*! \brief Enables multiple support for this plugin */ function enable_multiple_support() { plugin::enable_multiple_support(); $this->trustModeDialog->enable_multiple_support(); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/personal/posix/trustSelect/0000755000175000017500000000000011752422552021033 5ustar mikemikegosa-core-2.7.4/plugins/personal/posix/trustSelect/trust-list.xml0000644000175000017500000000373111347702366023717 0ustar mikemike true false true true 1 goServer server servgeneric plugins/systems/images/select_server.png gotoWorkstation workstation workgeneric plugins/systems/images/select_workstation.png gotoTerminal terminal termgeneric plugins/systems/images/select_terminal.png |20px;c||| %{filter:objectType(dn,objectClass)} %{filter:departmentLink(row,dn,description)} 1 %{filter:objectType(dn,objectClass)} cn string %{cn} true description string %{description} true
    gosa-core-2.7.4/plugins/personal/posix/trustSelect/trust-list.tpl0000644000175000017500000000126511361070555023710 0ustar mikemike

    {$HEADLINE} {$SIZELIMIT}

    {$ROOT} {$BACK} {$HOME} {$RELOAD} {t}Base{/t} {$BASE} {$ACTIONS} {$FILTER}
    {$LIST}
    gosa-core-2.7.4/plugins/personal/posix/trustSelect/class_trustSelect.inc0000644000175000017500000000373211372163246025241 0ustar mikemikeconfig = $config; $this->ui = $ui; $this->storagePoints = array(get_ou("workgeneric", "workstationRDN"),get_ou("termgeneric", "terminalRDN"),get_ou("servgeneric", "serverRDN"),); // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("trust-filter.xml", true, dirname(__FILE__))); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("trust-list.xml", true, dirname(__FILE__))); $headpage->registerElementFilter("filterProperties", "groupManagement::filterProperties"); $headpage->setFilter($filter); parent::__construct($config, $ui, "groups", $headpage); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/personal/posix/trustSelect/trust-filter.xml0000644000175000017500000000135511347702366024231 0ustar mikemike groups true default auto dn objectClass cn description default LDAPBlacklist (&(|(objectClasS=goServer)(objectClass=gotoWorkstation)(objectClass=gotoTerminal))(cn=$)) cn 0.5 3 gosa-core-2.7.4/plugins/personal/posix/trustModeDialog/0000755000175000017500000000000011752422552021620 5ustar mikemikegosa-core-2.7.4/plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc0000644000175000017500000002611411613731145026607 0ustar mikemikeaccessTo = array(); $this->trustModel= ""; $this->is_account = FALSE; if(isset($this->attrs['trustModel'][0])){ $this->is_account = TRUE; $this->trustModel= $this->attrs['trustModel'][0]; if (isset($this->attrs['accessTo'])){ for ($i= 0; $i<$this->attrs['accessTo']['count']; $i++){ $tmp= $this->attrs['accessTo'][$i]; $this->accessTo[$tmp]= $tmp; } } } $this->initially_was_account = $this->is_account; $lData = array(); foreach($this->accessTo as $key => $cn){ $lData[$cn] = array('data' => $this->converCnToType($cn)); } $this->trustList = new sortableListing($this->accessTo, $lData); $this->trustList->setDeleteable(true); $this->trustList->setInstantDelete(true); $this->trustList->setEditable(false); $this->trustList->setWidth("100%"); $this->trustList->setHeight("100px"); $this->trustList->setColspecs(array('20px','*')); $this->trustList->setHeader(array("~",_("Name"),_("Description"))); $this->trustList->setDefaultSortColumn(1); } public function PrepareForCopyPaste($source) { $this->accessTo = array(); $this->trustModel= ""; $this->is_account = FALSE; if(isset($source['trustModel'][0])){ $this->is_account = TRUE; $this->trustModel= $source['trustModel'][0]; if (isset($source['accessTo'])){ for ($i= 0; $i<$source['accessTo']['count']; $i++){ $tmp= $source['accessTo'][$i]; $this->accessTo[$tmp]= $tmp; } } } } public function converCnToType($cn) { if(isset($this->typeCache[$cn])){ return($this->typeCache[$cn]); } $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search("(&(|(objectClass=gotoTerminal)(objectClass=gotoWorkstation)". "(objectClass=goServer))(cn=".$cn."))", array("objectClass", "description")); $this->typeCache[$cn] = array("",$cn,""); if($ldap->count() != 0){ $attrs = $ldap->fetch(); $img = $desc = ""; if(in_array_strict("gotoWorkstation",$attrs['objectClass'])){ $img = image('plugins/systems/images/select_workstation.png'); }elseif(in_array_strict("gotoTerminal",$attrs['objectClass'])){ $img = image('plugins/systems/images/select_terminal.png'); }elseif(in_array_strict("goServer",$attrs['objectClass'])){ $img = image('plugins/systems/images/select_server.png'); } if(isset($attrs['description'][0])) { $desc = $attrs['description'][0]; } $this->typeCache[$cn] = array($img,$cn,$desc); } return($this->typeCache[$cn]); } public function setAcl($acl) { $this->acl = $acl; } public function execute() { // Call parent plugin::execute(); $this->trustList->setAcl($this->getacl("accessTo")); $this->trustList->save_object(); // Allow to select trusted machines from a list if (isset($_POST["add_ws"])){ $this->trustSelect= new trustSelect($this->config,get_userinfo()); $this->dialog= TRUE; } // Cancel trust and group dialog if (isset($_POST['add_ws_cancel'])){ $this->groupSelect= NULL; $this->trustSelect= NULL; $this->dialog= FALSE; } // Add selected machines to trusted ones. if (isset($_POST["add_ws_finish"]) && $this->trustSelect){ $trusts = $this->trustSelect->detectPostActions(); if(isset($trusts['targets'])){ $headpage = $this->trustSelect->getHeadpage(); foreach($trusts['targets'] as $id){ $attrs = $headpage->getEntry($id); $cn = $attrs['cn'][0]; $this->accessTo[$cn]=$cn; $this->trustList->addEntry($cn, array('data'=> $this->converCnToType($cn)), $attrs['cn'][0]); } $this->is_modified= TRUE; $this->trustList->update(); } $this->trustSelect= NULL; $this->dialog= FALSE; } // Remove machine from trusted ones. $actionL = $this->trustList->getAction(); if ($actionL['action'] == "delete"){ $this->accessTo = $this->trustList->getMaintainedData(); $this->is_modified= TRUE; } if ($this->trustSelect){ session::set('filterBlacklist', array('cn' => array_values($this->accessTo))); return($this->trustSelect->execute()); } /* Work on trust modes */ $smarty = get_smarty(); $smarty->assign("trusthide", " disabled "); $smarty->assign("trustmodeACL", $this->getacl("accessTo")); if ($this->trustModel == "fullaccess"){ $trustmode= 1; // pervent double disable tag in html code, this will disturb our clean w3c html $smarty->assign("trustmode", $this->getacl("accessTo")); } elseif ($this->trustModel == "byhost"){ $trustmode= 2; $smarty->assign("trusthide", ""); } else { // pervent double disable tag in html code, this will disturb our clean w3c html $smarty->assign("trustmode", $this->getacl("accessTo")); $trustmode= 0; } $smarty->assign("trustmode", $trustmode); $smarty->assign("trustmodes", array( 0 => _("disabled"), 1 => _("full access"), 2 => _("allow access to these hosts"))); if((count($this->accessTo))==0) $smarty->assign("emptyArrAccess",true); else $smarty->assign("emptyArrAccess",false); $smarty->assign($smarty->assign("use_trustmode",in_array_strict("trustmode", $this->multi_boxes))); $smarty->assign("multiple_support" , $this->multiple_support_active); # $this->trustList->update(); $smarty->assign("trustList", $this->trustList->render()); return($smarty->fetch(get_template_path("generic.tpl",TRUE, dirname(__FILE__)))); } public function save_object() { /* Trust mode - special handling */ if(preg_match("/w/", $this->getacl("accessTo"))){ if (isset($_POST['trustmode'])){ $saved= $this->trustModel; if ($_POST['trustmode'] == "1"){ $this->trustModel= "fullaccess"; } elseif ($_POST['trustmode'] == "2"){ $this->trustModel= "byhost"; } else { $this->trustModel= ""; } if ($this->trustModel != $saved){ $this->is_modified= TRUE; } } } } public function save() { plugin::save(); /* Trust accounts */ $objectclasses= array(); foreach ($this->attrs['objectClass'] as $key => $class){ if (preg_match('/trustAccount/i', $class)){ continue; } $objectclasses[]= $this->attrs['objectClass'][$key]; } $this->attrs['objectClass']= $objectclasses; if ($this->trustModel != ""){ $this->attrs['objectClass'][]= "trustAccount"; $this->attrs['trustModel']= $this->trustModel; $this->attrs['accessTo']= array(); if ($this->trustModel == "byhost"){ foreach ($this->accessTo as $host){ $this->attrs['accessTo'][]= $host; } } } else { if ($this->initially_was_account){ $this->attrs['accessTo']= array(); $this->attrs['trustModel']= array(); } } $ldap = $this->config->get_ldap_link(); $ldap->cd($this->dn); $this->cleanup(); $ldap->modify($this->attrs); /* Log last action */ if($this->initially_was_account){ new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); }else{ new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); } if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD,get_class())); } } public function get_multi_edit_values() { $ret = plugin::get_multi_edit_values(); if(in_array_strict("trustmode",$this->multi_boxes)){ $ret['trustModel'] = $this->trustModel; $ret['accessTo'] = $this->accessTo; } return($ret); } public function multiple_save_object() { plugin::multiple_save_object(); if(isset($_POST["use_trustmode"])){ $this->multi_boxes[] = "trustmode"; } if(preg_match("/w/", $this->getacl("accessTo"))){ if (isset($_POST['trustmode'])){ $saved= $this->trustModel; if ($_POST['trustmode'] == "1"){ $this->trustModel= "fullaccess"; } elseif ($_POST['trustmode'] == "2"){ $this->trustModel= "byhost"; } else { $this->trustModel= ""; } if ($this->trustModel != $saved){ $this->is_modified= TRUE; } } } } public function init_multiple_support($attrs,$all) { plugin::init_multiple_support($attrs,$all); if (isset($this->multi_attrs['trustModel'])){ $this->trustModel= $this->multi_attrs['trustModel'][0]; $this->initially_was_account= TRUE; $this->multi_boxes[] = "trustmode"; } else { $this->initially_was_account= FALSE; $this->trustModel= ""; } $this->accessTo = array(); if (isset($this->multi_attrs['accessTo'])){ for ($i= 0; $i<$this->multi_attrs['accessTo']['count']; $i++){ $tmp= $this->multi_attrs['accessTo'][$i]; $this->accessTo[$tmp]= $tmp; } } $this->trustList->setListData($this->accessTo); } public function getacl($attribute,$skip_write= FALSE) { $ui= get_userinfo(); $skip_write |= $this->read_only; return $ui->get_permissions($this->acl_base,$this->acl, $attribute,$skip_write); } } ?> gosa-core-2.7.4/plugins/personal/posix/trustModeDialog/generic.tpl0000644000175000017500000000232411357071265023760 0ustar mikemike

    {t}System trust{/t}

    {if !$multiple_support}{t}Trust mode{/t}  {render acl=$trustmodeACL} {/render} {render acl=$trustmodeACL} {$trustList} {/render} {render acl=$trustmodeACL}   {/render} {else} {t}Trust mode{/t} 
    {render acl=$trustmodeACL} {/render} {render acl=$trustmodeACL} {$trustList} {/render} {render acl=$trustmodeACL}   {/render}
    {/if} gosa-core-2.7.4/plugins/personal/posix/posix_shadow.tpl0000644000175000017500000000656311361067143021751 0ustar mikemike

    {t}Account settings{/t}

    {render acl=$mustchangepasswordACL checkbox=$multiple_support checked=$use_mustchangepassword} {/render}
    {t}User must change password on first login{/t}
    {render acl=$shadowMinACL checkbox=$multiple_support checked=$use_activate_shadowMin} {/render}
    {render acl=$shadowMinACL} {$shadowmins} {/render}
    {render acl=$shadowMaxACL checkbox=$multiple_support checked=$use_activate_shadowMax} {/render}
    {render acl=$shadowMaxACL} {$shadowmaxs} {/render}
    {render acl=$shadowExpireACL checkbox=$multiple_support checked=$use_activate_shadowExpire} {/render}
    {t}Password expires on{/t}  {render acl=$shadowExpireACL} {/render} {if $shadowExpireACL|regex_replace:"/[cdmr]/":"" == "w"} {/if}
    {render acl=$shadowInactiveACL checkbox=$multiple_support checked=$use_activate_shadowInactive} {/render}
    {render acl=$shadowInactiveACL} {$shadowinactives} {/render}
    {render acl=$shadowWarningACL checkbox=$multiple_support checked=$use_activate_shadowWarning} {/render}
    {render acl=$shadowWarningACL} {$shadowwarnings} {/render}
    gosa-core-2.7.4/plugins/personal/posix/generic.tpl0000644000175000017500000000711711551253471020654 0ustar mikemike

    {t}Generic{/t}

    {if !$multiple_support} {if $gotoLastSystemLogin} {/if} {/if}
    {$must} {render acl=$homeDirectoryACL checkbox=$multiple_support checked=$use_homeDirectory} {/render}
    {render acl=$loginShellACL checkbox=$multiple_support checked=$use_loginShell} {/render}
    {render acl=$gidNumberACL checkbox=$multiple_support checked=$use_primaryGroup} {/render}
    {t}Status{/t} {$status}
    {t}Last log-on{/t} {$gotoLastSystemLogin}
    {if !$multiple_support}
    {render acl=$force_idsACL} {/render} {render acl=$uidNumberACL} {/render}
    {render acl=$gidNumberACL} {/render}
    {/if}
     

    {t}Group membership{/t}

    {if $groups eq "too_many_for_nfs"} {t}(Warning: more than 16 groups are not supported by NFS!){/t}
    {/if} {render acl=$groupMembershipACL} {$groupList} {/render} {render acl=$groupMembershipACL}   {/render}

    {if $sshPublicKey == 1} {render acl=$sshPublicKeyACL}

    {t}SSH keys{/t}

    {/render} {/if}
    {include file="$pwmode.tpl"}
      {$trustModeDialog}
    {if $multiple_support} {/if} gosa-core-2.7.4/plugins/personal/password/0000755000175000017500000000000011752422552017212 5ustar mikemikegosa-core-2.7.4/plugins/personal/password/changed.tpl0000644000175000017500000000044711424325206021323 0ustar mikemike

    {t}You've successfully changed your password. Remember to change all programs configured to use it as well.{/t}



    gosa-core-2.7.4/plugins/personal/password/password.tpl0000644000175000017500000001260511750201415021570 0ustar mikemike {if $SASL}
    {t}Your password cannot be changed from within GOsa{/t} {else}

    {t}To change your personal password use the fields below. The changes take effect immediately. Please memorize the new password, because you wouldn't be able to login without it.{/t}


    {if $passwordExpired} {t}Your Password has expired. Please choose a new password.{/t}
    {/if} {if !$proposalEnabled}
    {factory type='password' name='current_password' id='current_password' onfocus="nextfield= 'new_password';"}
    {factory type='password' name='new_password' id='new_password' onkeyup="testPasswordCss(\$('new_password').value)" onfocus="nextfield= 'repeated_password';"}
    {factory type='password' name='repeated_password' id='repeated_password' onfocus="nextfield= 'password_finish';"}
    {t}Password strength{/t}
    {else}
    {factory type='password' name='current_password' id='current_password' onfocus="nextfield= 'new_password';"}
     
    {$proposal}
    {image path='images/lists/reload.png' action='refreshProposal'}
     
    {factory type='password' name='new_password' id='new_password' onkeyup="testPasswordCss(\$('new_password').value)" onfocus="nextfield= 'repeated_password';"}
    {factory type='password' name='repeated_password' id='repeated_password' onfocus="nextfield= 'password_finish';"}
    {t}Password strength{/t}
    {/if}

    {/if} gosa-core-2.7.4/plugins/personal/password/nochange.tpl0000644000175000017500000000037011414620007021503 0ustar mikemike

    {t}You have no permission to change your password at this time{/t}



    gosa-core-2.7.4/plugins/personal/password/class_password.inc0000644000175000017500000003007511750201415022730 0ustar mikemikeforcedHash = $hash; } function refreshProposal() { $this->proposal = passwordMethod::getPasswordProposal($this->config); $this->proposalEnabled = (!empty($this->proposal)); } function execute() { plugin::execute(); $smarty = get_smarty(); $ui = get_userinfo(); // Try to generate a password proposal, if this is successfull // then preselect the proposal usage. if(!$this->proposalInitialized){ $this->refreshProposal(); if($this->proposal != ""){ $this->proposalSelected = TRUE; } $this->proposalInitialized = TRUE; } /* Get acls */ $password_ACLS = $ui->get_permissions($ui->dn,"users/password"); $smarty->assign("ChangeACL" , $password_ACLS); $smarty->assign("SASL" , preg_match("/^{SASL}/i", $this->userPassword)); $smarty->assign("NotAllowed" , !preg_match("/w/i",$password_ACLS)); /* Display expiration template */ $smarty->assign("passwordExpired", FALSE); if ($this->config->boolValueIsTrue("core","handleExpiredAccounts")){ $expired= ldap_expired_account($this->config, $ui->dn, $ui->username); $smarty->assign("passwordExpired", $expired & POSIX_FORCE_PASSWORD_CHANGE); if($expired == POSIX_DISALLOW_PASSWORD_CHANGE){ return($smarty->fetch(get_template_path("nochange.tpl", TRUE))); } } // Refresh proposal if requested if(isset($_POST['refreshProposal'])) $this->refreshProposal(); if(isset($_POST['proposalSelected'])) $this->proposalSelected = get_post('proposalSelected') == 1; $smarty->assign("proposal" , set_post($this->proposal)); $smarty->assign("proposalEnabled" , $this->proposalEnabled); $smarty->assign("proposalSelected" , $this->proposalSelected); /* Pwd change requested */ if (isset($_POST['password_finish'])){ if($this->proposalSelected){ $current_password = get_post('current_password'); $new_password = $this->proposal; $repeated_password = $this->proposal; }else{ $current_password = get_post('current_password'); $new_password = get_post('new_password'); $repeated_password = get_post('repeated_password'); } // Get configuration flags for further input checks. $check_differ = $this->config->get_cfg_value("core","passwordMinDiffer") != ""; $differ = $this->config->get_cfg_value("core","passwordMinDiffer"); $check_length = $this->config->get_cfg_value("core","passwordMinLength") != ""; $length = $this->config->get_cfg_value("core","passwordMinLength"); // Once an error has occured it is stored here. $message = array(); // Call the check hook $attrs = array(); $attrs['current_password'] = ($current_password); $attrs['new_password'] = ($new_password); // Perform GOsa password policy checks if(empty($current_password)){ $message[] = _("You need to specify your current password in order to proceed."); }elseif($new_password != $repeated_password){ $message[] = _("The passwords you've entered as 'New password' and 'Repeated new password' do not match."); }elseif($new_password == ""){ $message[] = _("The password you've entered as 'New password' is empty."); }elseif($check_differ && (substr($current_password, 0, $differ) == substr($new_password, 0, $differ))){ $message[] = _("The password used as new and current are too similar."); }elseif($check_length && (strlen($new_password) < $length)){ $message[] = _("The password used as new is to short."); }elseif(!passwordMethod::is_harmless($new_password)){ $message[] = _("The password contains possibly problematic Unicode characters!"); } // Call external check hook to validate the password change if(!count($message)){ $checkRes = $this->callCheckHook($this->config,$this->dn,$attrs); if(count($checkRes)){ $message[] = sprintf(_("Check-hook reported a problem: %s. Password change canceled!"),implode($checkRes)); } } // Some errors/warning occured, display them and abort password change. if(count($message)){ msg_dialog::displayChecks($message); }else{ /* Try to connect via current password */ $tldap = new LDAP( $ui->dn, $current_password, $this->config->current['SERVER'], $this->config->get_cfg_value("core","ldapFollowReferrals") == "true", $this->config->get_cfg_value("core","ldapTLS") == "true"); /* connection Successfull ? */ if (!$tldap->success()){ msg_dialog::display(_("Password change"), _("The password you've entered as your current password doesn't match the real one."),WARNING_DIALOG); }elseif (!preg_match("/w/i",$password_ACLS)){ msg_dialog::display(_("Password change"), _("You have no permission to change your password."),WARNING_DIALOG); }elseif(!change_password($ui->dn, $new_password,FALSE, $this->forcedHash, $current_password, $message)){ msg_dialog::display(_("Password change"), $message,WARNING_DIALOG); }else{ $ui->password= $new_password; session::set('ui',$ui); return($smarty->fetch(get_template_path("changed.tpl", TRUE))); } } } return($smarty->fetch(get_template_path("password.tpl", TRUE))); } function remove_from_parent() { $this->handle_post_events("remove"); } function save() { } static function callCheckHook($config,$dn,$attrs = array()) { $command = $config->configRegistry->getPropertyValue("password","check"); if (!empty($command)){ // Build up ldif to send to the check hook $ldif= "dn: $dn\n"; foreach ($attrs as $name => $value){ $ldif.= "{$name}: {$value}\n"; } $ldif.= "\n"; /* Feed "ldif" into hook and retrieve result*/ $descriptorspec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w")); $fh= proc_open($command, $descriptorspec, $pipes); if (is_resource($fh)) { fwrite ($pipes[0], $ldif); fclose($pipes[0]); $arr= stream_get_contents($pipes[1]); $err = stream_get_contents($pipes[2]); fclose($pipes[1]); fclose($pipes[2]); $returnCode = proc_close($fh); if($returnCode !== 0){ @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execution failed code: ".$returnCode); @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Result: ".$err); $message= msgPool::cmdexecfailed($err,$command, "password"); msg_dialog::display(_("Error"), $message, ERROR_DIALOG); }else{ @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Result: ".$arr); return(preg_split("/\n/", $arr,0,PREG_SPLIT_NO_EMPTY)); } } } return(array()); } static function plInfo() { return (array( "plDescription" => _("User password"), "plSelfModify" => TRUE, "plDepends" => array("user"), "plPriority" => 10, "plSection" => array("personal" => _("My account")), "plCategory" => array("users"), "plOptions" => array(), "plProperties" => array( array( "name" => "PRELOCK", "type" => "command", "default" => "", "description" => _("Script to be called before a password gets locked."), "check" => "gosaProperty::isCommand", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "POSTLOCK", "type" => "command", "default" => "", "description" => _("Script to be called after a password gets locked."), "check" => "gosaProperty::isCommand", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "PREUNLOCK", "type" => "command", "default" => "", "description" => _("Script to be called before a password gets unlocked."), "check" => "gosaProperty::isCommand", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "POSTUNLOCK", "type" => "command", "default" => "", "description" => _("Script to be called after a password gets unlocked."), "check" => "gosaProperty::isCommand", "migrate" => "", "group" => "password", "mandatory" => FALSE) ), "plProvidedAcls" => array()) ); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/personal/password/main.inc0000644000175000017500000000320411443424616020630 0ustar mikemikedn)); } $password = session::get('password'); /* Execute formular */ $display.= $password->execute (); } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/personal/myaccount/0000755000175000017500000000000011752422552017352 5ustar mikemikegosa-core-2.7.4/plugins/personal/myaccount/MyAccountTabs.inc0000644000175000017500000000346311537351273022571 0ustar mikemikeby_object['user']; $baseobject->update_new_dn(); if ($this->dn != 'new'){ $new_dn= $baseobject->new_dn; if ($this->dn != $new_dn){ /* Udpate acls */ $baseobject->update_acls($this->dn,$new_dn); $baseobject->move($this->dn, $new_dn); $this->by_object['user']= $baseobject; /* Did we change ourselves? Update ui object. */ change_ui_dn($this->dn, $new_dn); } } $this->dn= $baseobject->new_dn; return tabs::save(); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/personal/myaccount/changed.tpl0000644000175000017500000000045211424326337021465 0ustar mikemike

    {t}You've successfully changed your password. Remember to change all programs configured to use it as well.{/t}



    gosa-core-2.7.4/plugins/personal/myaccount/password.tpl0000644000175000017500000001024111455625256021741 0ustar mikemike

    {t}To change your personal password use the fields below. The changes take effect immediately. Please memorize the new password, because you wouldn't be able to login without it.{/t}


    {if !$proposalEnabled}
    {factory type='password' name='current_password' id='current_password' onfocus="nextfield= 'new_password';"}
    {factory type='password' name='new_password' id='new_password' onkeyup="testPasswordCss(\$('new_password').value)" onfocus="nextfield= 'repeated_password';"}
    {factory type='password' name='repeated_password' id='repeated_password' onfocus="nextfield= 'password_finish';"}
    {t}Password strength{/t}
    {else}
    {factory type='password' name='current_password' id='current_password' onfocus="nextfield= 'new_password';"}
     
    {$proposal}
    {image path='images/lists/reload.png' action='refreshProposal'}
     
    {factory type='password' name='new_password' id='new_password' onkeyup="testPasswordCss(\$('new_password').value)" onfocus="nextfield= 'repeated_password';"}
    {factory type='password' name='repeated_password' id='repeated_password' onfocus="nextfield= 'password_finish';"}
    {t}Password strength{/t}
    {/if}

    gosa-core-2.7.4/plugins/personal/myaccount/nochange.tpl0000644000175000017500000000047011414620007021644 0ustar mikemike

    {t}You have no permission to change your password at this time{/t}

    {t}Your password hash method will not be changed!{/t}



    gosa-core-2.7.4/plugins/personal/myaccount/main.inc0000644000175000017500000001364711537355461021011 0ustar mikemikedn); } /* Reset requested? */ if (isset($_POST['edit_cancel']) || $cleanup || isset($_POST['password_changed'])){ session::un_set ('edit'); session::un_set ('MyAccountTabs'); } /* Remove this plugin from session */ if (! $cleanup ){ /* Create MyAccountTabs object on demand */ if (!session::is_set('MyAccountTabs') || (isset($_GET['reset']) && $_GET['reset'] == 1)){ // Check if the base plugin is available - it is mostly responsible for object creation and removal. $first = $config->data['TABS']['MYACCOUNTTABS'][0]; if(!class_available($first['CLASS'])){ msg_dialog::display(_("Internal error"), sprintf(_("Cannot instantiate tabbed-plug-in, the base plugin (%s) is not available!"), $first['CLASS']), ERROR_DIALOG); }else{ $MyAccountTabs= new MyAccountTabs($config,$config->data['TABS']['MYACCOUNTTABS'], $ui->dn, "users", true, true); $MyAccountTabs->setReadOnly(TRUE); $MyAccountTabs->enableAutoSaveObject(FALSE); session::set('MyAccountTabs',$MyAccountTabs); } } if(session::is_set('MyAccountTabs')){ $MyAccountTabs = session::get('MyAccountTabs'); $call_save_object = !$MyAccountTabs->read_only; /* Enter edit mode? */ if ((isset($_POST['edit'])) && (!session::is_set('edit'))){ /* Check locking */ if (($username= get_lock($ui->dn)) != ""){ session::set('back_plugin',$plug); session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/")); $lock_msg = gen_locked_message ($username, array($ui->dn)); }else{ /* Lock the current entry */ add_lock ($ui->dn, $ui->dn); session::set('edit',TRUE); $MyAccountTabs->setReadOnly(FALSE); } } $info= ""; if (isset($_POST['edit_finish'])){ $message= $MyAccountTabs->check (); if (count ($message) == 0){ $MyAccountTabs->save (); del_lock ($ui->dn); session::un_set ('edit'); $MyAccountTabs->setReadOnly(TRUE); if(isset($MyAccountTabs->by_object['user']) && $MyAccountTabs->by_object['user']->password_change_needed()){ $MyAccountTabs->password_change_needed = TRUE; }else{ session::un_set ('MyAccountTabs'); $MyAccountTabs= new MyAccountTabs($config,$config->data['TABS']['MYACCOUNTTABS'], $ui->dn, "users", true, true); $MyAccountTabs->setReadOnly(TRUE); } } else { msg_dialog::displayChecks($message); } } // Build up password class to make password-hash changes // effective, by setting a new password. if($MyAccountTabs->password_change_needed){ if(!isset($MyAccountTabs->passwordClass)){ $user = $MyAccountTabs->by_object['user']; $MyAccountTabs->passwordClass= new password($config, $ui->dn); $MyAccountTabs->passwordClass->forceHash($user->pw_storage); } $display.= $MyAccountTabs->passwordClass->execute(); } /* Execute formular */ if(!$MyAccountTabs->password_change_needed){ pathNavigator::registerPlugin(_("My account")); if($lock_msg){ $display = $lock_msg; }else{ // Reenabled auto saveing of POST values. if($call_save_object){ $MyAccountTabs->enableAutoSaveObject(TRUE); } $display.= $MyAccountTabs->execute (); } } /* Store changes in session */ if (session::is_set('edit')){ session::set('MyAccountTabs',$MyAccountTabs); } /* Show page footer depending on the mode */ if (!$MyAccountTabs->is_modal_dialog() && empty($lock_msg) && !$MyAccountTabs->password_change_needed){ $display.= "
    "; /* Are we in edit mode? */ if (session::is_set('edit')){ $display.= "\n"; $display.= "\n"; } else { if(preg_match("/r/",$ui->get_category_permissions($ui->dn,"users"))){ $display.= "\n"; } $display.= "\n"; } $display.= "
    \n"; } } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/plugins/personal/myaccount/class_MyAccount.inc0000644000175000017500000000030211342701234023117 0ustar mikemike gosa-core-2.7.4/plugins/addons/0000755000175000017500000000000011752422552014775 5ustar mikemikegosa-core-2.7.4/plugins/addons/propertyEditor/0000755000175000017500000000000011752422552020030 5ustar mikemikegosa-core-2.7.4/plugins/addons/propertyEditor/class_commandVerifier.inc0000644000175000017500000000532411422261074025020 0ustar mikemikeconfig = &$config; $this->property = &$property; $this->command = $this->property->getValue(TRUE); } function execute() { $smarty = get_smarty(); $output= ""; if(isset($_POST['execute'])){ $descriptorSpec = array(0 => array("pipe", "r"), 1 => array('pipe', 'w'), 2 => array('pipe', 'w')); $process = proc_open($this->command, $descriptorSpec, $pipes); $txOff = 0; $txLen = 0; $stdout = ''; $stdoutDone = FALSE; $stderr = ''; $stderrDone = FALSE; stream_set_blocking($pipes[0], 0); // Make stdin/stdout/stderr non-blocking stream_set_blocking($pipes[1], 0); stream_set_blocking($pipes[2], 0); if ($txLen == 0) fclose($pipes[0]); while (TRUE) { $rx = array(); // The program's stdout/stderr if (!$stdoutDone) $rx[] = $pipes[1]; if (!$stderrDone) $rx[] = $pipes[2]; foreach ($rx as $r) { if ($r == $pipes[1]) { $stdout .= fread($pipes[1], 8192); if (feof($pipes[1])) { fclose($pipes[1]); $stdoutDone = TRUE; } } else if ($r == $pipes[2]) { $stderr .= fread($pipes[2], 8192); if (feof($pipes[2])) { fclose($pipes[2]); $stderrDone = TRUE; } } } if (!is_resource($process)) break; if ($txOff >= $txLen && $stdoutDone && $stderrDone) break; } $code = proc_close($process); if(!empty($stdout)) $stdout = "
    ".htmlentities($stdout,ENT_COMPAT,'UTF-8')."
    "; if(!empty($stderr)) $stderr = "
    ".htmlentities($stderr,ENT_COMPAT,'UTF-8')."
    "; $output = "
    Result:$stdout
    Error:$stderr
    Return code:$code
    "; } $smarty->assign('value', set_post($this->command)); $smarty->assign('output', $output); return($smarty->fetch(get_template_path('commandVerifier.tpl', 'TRUE'))); } function save_object() { if(isset($_POST['command'])) $this->command = get_post('command'); } function save() { $this->property->setValue($this->command); } } ?> gosa-core-2.7.4/plugins/addons/propertyEditor/property-list.xml0000644000175000017500000000642511600313441023402 0ustar mikemike false false false true all 1 true undefined all all images/lists/element.png removed all all images/lists/trash.png modified all all plugins/propertyEditor/images/ldap.png[new] ldap all all plugins/propertyEditor/images/ldap.png file all all plugins/propertyEditor/images/file.png |20px;c|||||70px;r| %{filter:objectType(dn,objectClass)} cn string %{filter:propertyName(class,cn,description,mandatory)} true group string %{filter:propertyGroup(group,description)} true group string %{filter:propertyClass(class,description)} true value string %{filter:propertyValue(class,cn,value,type,default,defaults,check,mandatory)} true %{filter:actions(dn,row,objectClass)}
    remove entry images/lists/trash.png exporter remove entry ldap images/lists/trash.png
    gosa-core-2.7.4/plugins/addons/propertyEditor/property-list.tpl0000644000175000017500000000450511401442737023410 0ustar mikemike{if !$warningAccepted}
    {image path='images/warning.png'}

    {t}Attention{/t}

    {t}Modifying properties may break your setup, destroy or mess up your LDAP database, lead to security holes or it can even make a login impossible!{/t} {t}Since configuration properties are stored in the LDAP database a copy/backup can be handy.{/t}

    {t}If you've debarred yourself, you can try to set 'ignoreLdapProperties' to 'true' in your gosa.conf main section. This will make GOsa ignore LDAP based property values.{/t}



    {else}

    {$HEADLINE} {$SIZELIMIT} {if $ignoreLdapProperties} - {t}Ignoring LDAP defined properties!{/t} {/if}

    {$RELOAD} {$ACTIONS} {$FILTER}
    {$LIST}
    {if !$is_modified} {/if}
    {/if} gosa-core-2.7.4/plugins/addons/propertyEditor/commandVerifier.tpl0000644000175000017500000000154711424325206023664 0ustar mikemike

    {t}Command verifier{/t}

    {t}Here you can execute commands in the way GOsa does and check the generated results or errors. This can be very useful especially for the post events (postcreate, postmodify and postremove) due to the fact that these hook are executed silently.{/t}

    {t}Please be careful here, all commands will really be executed on your machine and may break things!{/t}


    {t}The command to check for{/t}

    {if $output}
    {$output} {/if}
    gosa-core-2.7.4/plugins/addons/propertyEditor/property-filter.xml0000644000175000017500000000363011371765673023736 0ustar mikemike all true default one dummy default CONFIGPROPERTIES status=(ldap|file|modified|removed)§cn=$ status 0.5 3 modified CONFIGPROPERTIES status=(modified|removed)§cn=$ status 0.5 3 all CONFIGPROPERTIES cn=$ status 0.5 3 ldap CONFIGPROPERTIES status=(ldap|modified|removed)§cn=$ status 0.5 3 byGroup CONFIGPROPERTIES group=$ status 0.5 3 gosa-core-2.7.4/plugins/addons/propertyEditor/main.inc0000644000175000017500000000277011475131350021450 0ustar mikemikeconfigRegistry->reload($force=TRUE); } } /* Remove this plugin from session */ if ( $cleanup ){ if (session::is_set('propertyEditor')){ #session::un_set('propertyEditor'); } }else{ /* Create logview object on demand */ if (!session::is_set('propertyEditor')){ session::set('propertyEditor',new propertyEditor($config, get_userinfo())); } $propertyEditor = session::get('propertyEditor'); /* Execute formular */ $display= $propertyEditor->execute (); /* Store changes in session */ session::set('propertyEditor',$propertyEditor); } ?> gosa-core-2.7.4/plugins/addons/propertyEditor/class_propertyEditor.inc0000644000175000017500000002504711613731145024750 0ustar mikemikeconfig = $config; $this->ui = $ui; // Build filter if (session::global_is_set(get_class($this)."_filter")){ $filter= session::global_get(get_class($this)."_filter"); } else { $filter = new filter(get_template_path("property-filter.xml", true)); $filter->setObjectStorage($this->storagePoints); } $this->setFilter($filter); // Build headpage $headpage = new listing(get_template_path("property-list.xml", true)); $headpage->registerElementFilter("propertyName", "propertyEditor::propertyName"); $headpage->registerElementFilter("propertyGroup", "propertyEditor::propertyGroup"); $headpage->registerElementFilter("propertyClass", "propertyEditor::propertyClass"); $headpage->registerElementFilter("propertyValue", "propertyEditor::propertyValue"); $headpage->setFilter($filter); parent::__construct($config, $ui, "property", $headpage); $this->registerAction("saveProperties","saveProperties"); $this->registerAction("cancelProperties","cancelProperties"); } function execute() { // Walk trough all properties and check if there posts for us. $all = $this->config->configRegistry->getAllProperties(); foreach($all as $prop){ $post = "{$prop->getClass()}:{$prop->getName()}"; if(isset($_POST[$post]) && $prop->getStatus() != 'removed'){ $prop->setValue(get_post($post)); } // Open the command verify dialog if(isset($_POST["testCommand_{$post}"])){ $this->dialogObject = new commandVerifier($this->config,$prop); } } if(isset($_POST['commandVerifier_save'])){ $this->dialogObject->save(); $this->closeDialogs(); } if(isset($_POST['commandVerifier_cancel'])){ $this->closeDialogs(); } // Once accepted hide the warning message if(isset($_POST['warningAccepted'])){ $this->warningAccepted = TRUE; } // Execute registered management event listeners. $this->handleActions($this->detectPostActions()); // Handle properties that have to be migrated if(isset($_POST['propertyMigrate_cancel']) && count($this->toBeMigrated)){ unset($this->toBeMigrated[0]); $this->toBeMigrated = array_values($this->toBeMigrated); } if(isset($_POST['propertyMigrate_save']) && count($this->toBeMigrated)){ $first = $this->toBeMigrated[0]->getMigrationClass(); $first->save_object(); $msgs = $first->check(); if(!count($msgs)){ $this->toBeMigrated[0]->save(); unset($this->toBeMigrated[0]); $this->toBeMigrated = array_values($this->toBeMigrated); // Nothing to migrate and everything is fine, reload the list now. if(!count($this->toBeMigrated)){ $this->config->configRegistry->reload($force=TRUE); } } } if(count($this->toBeMigrated)){ $first = $this->toBeMigrated[0]->getMigrationClass(); $first->save_object(); // We've no problems with this property anymore. while($first instanceOf propertyMigration && !$first->checkForIssues()){ $this->toBeMigrated[0]->save(); unset($this->toBeMigrated[0]); $this->toBeMigrated = array_values($this->toBeMigrated); if(count($this->toBeMigrated)){ $first = $this->toBeMigrated[0]->getMigrationClass(); }else{ $first = NULL; // Nothing to migrate and everything is fine, reload the list now. if(!count($this->toBeMigrated)){ $this->config->configRegistry->reload($force=TRUE); } } } if($first){ $content = $first->execute(); $smarty = get_smarty(); $smarty->assign('content', $content); $smarty->assign('leftSteps', count($this->toBeMigrated)); return($smarty->fetch(get_template_path('migrate.tpl',TRUE))); } } $smarty = get_smarty(); $smarty->assign("warningAccepted", $this->warningAccepted); $smarty->assign("ignoreLdapProperties", $this->config->configRegistry->ignoreLdapProperties); return(management::execute()); } function renderList() { // Walk trough all properties and check if we have modified something $all = $this->config->configRegistry->getAllProperties(); foreach($all as $prop){ $modified = in_array_strict($prop->getStatus(),array('modified','removed')); if($modified) break; } $smarty = get_smarty(); $smarty->assign('is_modified', $modified); return(management::renderList()); } function cancelProperties() { $this->config->configRegistry->reload($force=TRUE); } function saveProperties() { // Check if we've misconfigured properties and skip saving in this case. $all = $this->config->configRegistry->getAllProperties(); $valid = TRUE; foreach($all as $prop){ $valid &= $prop->check(); } // Now save the properties. if($valid){ $this->toBeMigrated = $this->config->configRegistry->saveChanges(); // Nothing to migrate and everything is fine, reload the list now. if(!count($this->toBeMigrated)){ $this->config->configRegistry->reload($force=TRUE); } } } function detectPostActions() { $action = management::detectPostActions(); if(isset($_POST['saveProperties'])) $action['action'] = 'saveProperties'; if(isset($_POST['cancelProperties'])) $action['action'] = 'cancelProperties'; return($action); } protected function removeEntryRequested($action="",$target=array(),$all=array()) { foreach($target as $dn){ list($class,$name) = preg_split("/:/", $dn); if($this->config->configRegistry->propertyExists($class,$name)){ $prop = $this->config->configRegistry->getProperty($class,$name); $prop->restoreDefault(); } } } static function propertyGroup($group, $description = array()) { return($group[0]); } static function propertyClass($class, $description = array()) { global $config; if(isset($config->configRegistry->classToName[$class[0]])){ $class = $config->configRegistry->classToName[$class[0]]; }else{ $class = $class[0]; } return($class); } static function propertyName($class,$cn, $description,$mandatory) { $id = "{$class[0]}_{$cn[0]}"; $title = _("No description"); if(isset($description[0])) $title = set_post($description[0]); $title = preg_replace("/\n/", "
    ", $title); $tooltip = ""; $must = ($mandatory[0]) ? "*" : ""; return($tooltip."{$cn[0]}{$must}"); } static function propertyValue($class,$cn,$value,$type,$default,$defaults,$check,$mandatory) { $ssize = "208px"; $isize = "200px"; $name = "{$class[0]}:{$cn[0]}"; $value = set_post($value[0]); switch($type[0]){ case 'noLdap': $res = $value."  (".CONFIG_DIR.'/'.CONFIG_FILE.")"; break; case 'bool': $res = ""; case 'switch': if(!empty($defaults[0])){ $data = call_user_func(preg_split("/::/", $defaults[0]), $class[0],$cn[0],$value, $type[0]); if(is_array($data)){ $res = ""; } } break; case 'command': $res = ""; $res.= image('images/lists/edit.png', "testCommand_{$name}", _("Test the given command.")); break; case 'dn': case 'rdn': case 'uri': case 'path': case 'file': case 'string': case 'integer': $res = ""; break; default: echo $type[0].$name." ";$res = ""; } // Check if it is a required value. if($mandatory[0] && empty($value)){ $res.= ""; } // Color row in red if the check methods returns false. if(!empty($check[0]) && !empty($value)){ $check = call_user_func(preg_split("/::/", $check[0]),$displayMessage=FALSE, $class[0], $cn[0], $value, $type[0]); if(!$check){ $res.= ""; } } return($res); } } ?> gosa-core-2.7.4/plugins/addons/propertyEditor/migration/0000755000175000017500000000000011752422552022021 5ustar mikemikegosa-core-2.7.4/plugins/addons/propertyEditor/migration/class_migrateRDN.inc0000644000175000017500000002074011475463514025705 0ustar mikemikeproperty = &$property; $this->config = &$config; //Set a dummy title and description if(empty($this->title)){ $this->title = sprintf(_("Migration of property '%s'"), $this->property->getName()); } if(empty($this->description)){ $this->description = sprintf(_("GOsa has detected objects outside of the configured storage point (%s)."), $this->property->getValue(TRUE)); } } function getChanges() { return($this->found); } function checkForIssues() { $this->found = array('add'=>array(), 'move' => array()); $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap2= $this->config->get_ldap_link(); $ldap2->cd($this->config->current['BASE']); // Search for possible release deparments/containers - this enables us to // SKIP release based objects - we cannot move them right now. $releases = array(); $ldap->search("objectClass=FAIbranch"); while($attrs = $ldap->fetch()){ $releases[$attrs['dn']] = $attrs['dn']; } // If the userRDN wasn't empty, then only search for users inside of the old userRDN. $initialValue = $this->prefix.$this->property->getValue().$this->suffix; $targetValue = $this->prefix.$this->property->getValue(TRUE).$this->suffix; if(!empty($initialValue) && !preg_match("/,$/", $initialValue)) $initialValue.=","; if(!empty($targetValue) && !preg_match("/,$/", $targetValue)) $targetValue.=","; $dnMatch = ""; if(!empty($initialValue)){ foreach(preg_split("/,/", $initialValue) as $rdnPart){ if(empty($rdnPart)) continue; list($namingAttrs, $container) = preg_split("/=/",$rdnPart,2); $container = trim($container,', '); $dnMatch.= "({$namingAttrs}:dn:={$container})"; } } // Search for users $filter = sprintf($this->filter,$dnMatch); $ldap->search($filter,array('dn')); $found = FALSE; while($attrs = $ldap->fetch()){ $dn = $attrs['dn']; $dnTo = $dn; // If there intially was no userDN given then just add the new userRDN to the user dns // and create the new container objects. if(empty($initialValue)){ list($namingAttrs, $container) = preg_split("/=/",$targetValue,2); list($name, $container) = preg_split("/,/",$dn,2); // Ensure that we handle a valid gosaDepartment container. while(!isset($this->config->idepartments[$container])){ // This object is part of a FAI release - we better skip it here. if(isset($releases[$container])){ break; } $container = preg_replace("/^[^,]*+,/","",$container); } // We haven't found a valid gosaDepartment in this dn, so skip. if(isset($this->config->idepartments[$container])){ // Queue new containuer to be created. if(!preg_match("/^".preg_quote($targetValue,'/i')."/", $container)){ $dnTo = $name.",".$targetValue.$container; if(!$ldap->dn_exists($targetValue.$container)){ $this->found['add'][$targetValue.$container] = array(); } if($dn != $dnTo){ $this->found['move'][] = array('from' => $dn, 'to' => $dnTo); $found = TRUE; } } } } // If there intially was a userDN given then replace it with the new one. if(!empty($initialValue)){ list($name, $container) = preg_split("/,/",$dn,2); if(preg_match("/^".preg_quote($initialValue,'/i')."/", $container)){ $container = preg_replace("/^".preg_quote($initialValue,'/')."/",$targetValue,$container); // Ensure that we handle a valid gosaDepartment container. while(!isset($this->config->idepartments[$container])){ // This object is part of a FAI release - we better skip it here. if(isset($releases[$container])){ break; } $container = preg_replace("/^[^,]*+,/","",$container); } // We haven't found a valid gosaDepartment in this dn, so skip. if(isset($this->config->idepartments[$container])){ $dnTo = $name.",".$targetValue.$container; if(!empty($targetValue) && !$ldap->dn_exists($targetValue.$container)){ $this->found['add'][$targetValue.$container] = array(); } if($dn != $dnTo){ $this->found['move'][] = array('from' => $dn, 'to' => $dnTo); $found = TRUE; } } } } } return($found); } function execute() { $str = "

    ".$this->title."

    "; $str.= $this->description; $str.= "
    "; if(count($this->found['add'])) { $str.= "
    "._("Objects that will be added"); $str.= "
      "; foreach($this->found['add'] as $dn => $attrs){ $str.= "
    • ".$dn."
    • "; } $str.= "
    "; } if(count($this->found['move'])) { $str.= "
    "._("Objects that will be moved")."
    "; $str.= "
      "; foreach($this->found['move'] as $id => $data){ $checked = (!isset($_POST["migrateNow".get_class($this)])) ? 'checked':''; $str.= "
    • "; $str.= sprintf(_("Moving object '%s' to '%s'"), $data['from'], $data['to'])."
    • "; } $str.="
    "; } $str.= ""; return($str); } function save_object() { if(isset($_POST["migrateNow".get_class($this)])){ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); // Try to add the new container objects foreach($this->found['add'] as $dn => $data){ $ldap->cd($this->config->current['BASE']); $ldap->create_missing_trees(ldap::convert($dn)); } // Now move the objects to the new traget $tmp = new plugin($this->config,NULL); foreach($this->found['move'] as $id => $data){ if(isset($_POST["migrateEntry_{$id}"])){ if($tmp->move($data['from'], $data['to'])){ }elseif($ldap->dn_exists($data['to'])){ msg_dialog::display(_("Error"), sprintf(_("Migration failed for object %s: DN already exists!"), bold($data['to'])), ERROR_DIALOG); }else{ msg_dialog::display(_("Error"), sprintf(_("Migration failed for object %s: please check if it already exists!"), bold($data['to'])), ERROR_DIALOG); } } } $this->checkForIssues(); } } function check() { return(array()); } } ?> gosa-core-2.7.4/plugins/addons/propertyEditor/class_filterProperties.inc0000644000175000017500000000541111405367714025256 0ustar mikemikeconfigRegistry->getAllProperties(); $ret = array(); foreach($all as $property){ $entry = array(); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'cn', $property->getName()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'objectClass', $property->getStatus()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'status', $property->getStatus()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'description', $property->getDescription()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'value', $property->getValue($temporary = TRUE)); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'mandatory', $property->isMandatory()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'default', $property->getDefault()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'defaults', $property->getDefaults()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'check', $property->getCheck()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'class', $property->getClass()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'type', $property->getType()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'migrate', $property->getMigrate()); $entry = filterCONFIGPROPERTIES::fakeLdapResult($entry, 'group', $property->getGroup()); $entry['dn'] = $property->getClass().":".$property->getName(); $found =TRUE; if(!empty($filter)){ $tests = preg_split("/§/", $filter); foreach($tests as $test){ list($name,$value) = preg_split("/=/",$test); $value =preg_replace("/\*/",'',$value); if(empty($value)) $value='.*'; if(!isset($entry[$name][0]) || !preg_match("/{$value}/i",$entry[$name][0])){ $found = false; } } } if($found) $ret[] = $entry; } return($ret); } static function fakeLdapResult($result,$name, $value){ if(!is_array($value)){ $value = array($value); } $value['count'] = count($value); $result[] = $name; $result[$name] = $value; if(!isset($result['count'])){ $result['count'] =0; } $result['count'] ++; return($result); } static function unifyResult($result) { $res=array(); foreach($result as $entry){ if(!isset($res[$entry['dn']])){ $res[$entry['dn']]=$entry; } } return(array_values($res)); } } ?> gosa-core-2.7.4/plugins/addons/propertyEditor/migrate.tpl0000644000175000017500000000076611424325206022204 0ustar mikemike

    {t}Property migration assistant{/t} - {t}Migration steps left{/t}: {$leftSteps}

    {$content}

    gosa-core-2.7.4/plugins/addons/dyngroup/0000755000175000017500000000000011752422552016644 5ustar mikemikegosa-core-2.7.4/plugins/addons/dyngroup/class_DynamicLdapGroup.inc0000644000175000017500000002754411613731145023737 0ustar mikemikegmail.com * @version 0.01 */ class DynamicLdapGroup extends plugin { /** * The attribute that will use GOsa to store LDAP URI. * @var array */ public $attributes = array('labeledURI'); /** * The objectClass that will use GOsa to identify a group as dynamic. * @var array */ public $objectclasses = array('labeledURIObject'); /** * Default value for the corresponding attribute found in the $this->attributes * array of this plugin. * @var string */ public $labeledURI = array(); public $labeledURIparsed = array(); public $labeledURIdefault = 'ldap:///dc=example,dc=com?memberUid?sub?(objectClass=posixGroup)'; public $scopes = array('base','one','sub'); /** * Store values of memberUrl. * @var Array */ private $_memberUrls = Array(); public $orig_dn =""; /** * Create this object. * @param Array $config GOsa config. * @param string $dn Current DN. */ public function __construct ($config, $dn) { parent::__construct($config, $dn); // Load labeledURI values. $this->labeledURI = array(); if(!$this->is_account){ $this->labeledURI[] = str_replace('dc=example,dc=com', LDAP::fix($this->dn), $this->labeledURIdefault); }elseif(isset($this->attrs['labeledURI'])){ for($i =0; $i < $this->attrs['labeledURI']['count']; $i++) { $this->labeledURI[] = $this->attrs['labeledURI'][$i]; } } // Parse labeledURI entries $this->labeledURIparsed = array(); foreach($this->labeledURI as $entry){ list($base,$attr,$scope,$filter) = preg_split("/\?/",$entry); // Ignore entries that do not have a valid scope value (one,base,sub) if(!in_array_strict($scope,array('base','one','sub'))) continue; // Append parsed uri $scope = array_search($scope,$this->scopes); $this->labeledURIparsed[] = array('base' => $base, 'attr' => $attr, 'scope' => $scope,'filter' => $filter); } // Save dn, to be able the check for object movements - put this in plugin::move $this->orig_dn = $this->dn; } /*!\brief Checks whether the given attribute is managed by this dyngroup extension or not. */ function isAttributeDynamic($attr) { if($this->is_account){ foreach($this->labeledURIparsed as $uri){ if($uri['attr'] == $attr) return(TRUE); } } return(FALSE); } public function check () { $messages = plugin::check(); // At least one entry is required. if(!count($this->labeledURIparsed)){ $messages[] = msgPool::required(_("Labeled URI")); } // Check entries foreach($this->labeledURIparsed as $key => $entry){ $nr = $key +1; // A base is required if(empty($entry['base'])){ $messages[] = msgPool::required(_("Base")." {$nr}"); } // Check for invalid attributes if(empty($entry['attr'])){ $messages[] = msgPool::required(_("Attribute")." {$nr}"); }elseif(in_array_strict(strtolower($entry['attr']), array('objectclass'))){ $messages[] = msgPool::reserved(_("Attribute")." {$nr}"); } // A filter is required if(empty($entry['filter'])){ $messages[] = msgPool::required(_("Filter")." {$nr}"); }elseif(!preg_match("/^\(/", $entry['filter'])){ $messages[] = msgPool::invalid(_("Filter")." {$nr}", $entry['filter'],'', '(objectClass=gosaAccount)'." - "._("Surrounding brackets are required!")); }else{ // Check if filter is valid $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->search($entry['filter']); if(!$ldap->success()){ $messages[] = sprintf(_("The given filter '%s' for entry %s seems to be invalid!"), bold($entry['filter']), $nr); } } } return($messages); } /** * Execute this plugin. * @return string HTML to print. */ public function execute () { // // Are we trying to modify state of this group ? If so, // we can edit the current object. // if (isset($_POST['modify_state'])) { $this->is_account = !$this->is_account; } // // Display a message if this feature is disabled. // if (!$this->is_account) { return $this->show_disable_header(msgPool::addFeaturesButton(_("Dynamic object")), msgPool::featuresDisabled(_("Dynamic object"))); } $display = $this->show_disable_header(msgPool::removeFeaturesButton(_("Dynamic object")), msgPool::featuresEnabled(_("Dynamic object"))); // Display values. // $smarty = get_smarty(); $smarty->assign('labeledURIparsed', set_post($this->labeledURIparsed)); $smarty->assign('scopes', set_post($this->scopes)); $display .= $smarty->fetch(get_template_path('dyngroup.tpl', TRUE, dirname(__FILE__))); return $display; } /** * This plugin does nothing when this method is invoked. */ public function remove_from_parent () { parent::remove_from_parent(); $ldap = $this->config->get_ldap_link(); $ldap->cd($this->dn); $ldap->modify($this->attrs); if(!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); } return; } /** * This function is called when tab is undisplayed. For example, the current user * wants to change other settings of this group, but not save it to the LDAP * directory directly. */ public function save_object () { parent::save_object(); // Add a new labeled Uri if(isset($_POST['addUri'])){ $this->labeledURIparsed[] = array( 'base' => 'ldap:///'.$this->dn, 'attr' => 'memberUid', 'scope' => 2, 'filter' => '(objectClass=posixGroup)'); } // Remove a labeled Uri and get posts foreach($this->labeledURIparsed as $key => $data){ foreach(array('scope','attr','filter','base') as $attr){ if(isset($_POST[$attr.'_'.$key])){ $this->labeledURIparsed[$key][$attr] = get_post($attr.'_'.$key); } } // Remove labeled uri if requested if(isset($_POST['delUri_'.$key])){ unset($this->labeledURIparsed[$key]); } } $this->labeledURIparsed = array_values($this->labeledURIparsed); } /** * That will add additionnal information into the current LDAP entry. * If this plugin is disable, then it will remove any data that references * this plugin into the LDAP directory. * @return boolean */ public function save () { // Build up labeledUri entries $this->labeledURI = array(); foreach($this->labeledURIparsed as $entry){ $scope = $this->scopes[$entry['scope']]; $filter = $entry['filter']; $this->labeledURI[] = "{$entry['base']}?{$entry['attr']}?{$scope}?{$filter}"; } $this->labeledURI = array_unique($this->labeledURI); parent::save(); $this->cleanup(); $ldap = $this->config->get_ldap_link(); $ldap->cd($this->dn); $ldap->modify($this->attrs); if(!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_DEL, get_class())); } } /*! \brief Updates labeledURI entries in ldap. * Check whether the given src_dn is part of some labeledURI entries * and then updates the entries to use the dst_dn. * @param $config The GOsa configuration object. * @param $src_dn The source 'dn' of the object that was moved. * @param $dst_dn The target 'dn' of the object that was moved. */ public static function moveDynGroup($config,$src_dn,$dst_dn) { // Fetch all dynamic group definitions $objs = get_list("(&(objectClass=labeledURIObject)(labeledURI=*))",array("all"),$config->current['BASE'], array("dn","labeledURI"),GL_SUBSEARCH | GL_NO_ACL_CHECK); $newAttrs = array(); foreach($objs as $obj){ $changes = false; $attrs = array(); for($i = 0; $i < $obj['labeledURI']['count']; $i++){ $c = $obj['labeledURI'][$i]; $c = preg_replace('/'.preg_quote($src_dn,'/').'/',$dst_dn,$c); $attrs['labeledURI'][] = $c; // Check if something has changed if($c != $obj['labeledURI'][$i]){ $changes =TRUE; } } // If at least one line of 'labeledURI' has changed then we have to update the whole entry. if($changes) $newAttrs[$obj['dn']] = $attrs; } // If we've at least one entry to update then if(count($newAttrs)){ $ldap = $config->get_ldap_link(); foreach($newAttrs as $dn => $data){ $ldap->cd($dn); $ldap->modify($data); if(!$ldap->success()){ trigger_error(sprintf("Failed to dynamic group object for %s: %s", bold($dn), $ldap->get_error())); new log("debug", "plugin/plugin::move()",$dn,array(), " -- ERROR -- Failed to update dynamic groups (labeledURI) - ".$ldap->get_error()); }else{ new log("modify", "plugin/plugin::move()",$dn,array_keys($data), "Updated dynamic group entries (labeledURI)"); } } } } /** * Static method to set ACL for this plugin. */ public static function plInfo() { return Array( "plShortName" => _("Dynamic object"), "plDescription" => _("Dynamic object"), "plSelfModify" => TRUE, "plDepends" => Array(), "plPriority" => 1, "plSection" => Array("addon"), "plCategory" => Array("groups", "department", "ogroups"), "plProvidedAcls" => array( 'labeledURI' => _('Labeled URI'), ) ); } } ?> gosa-core-2.7.4/plugins/addons/dyngroup/dyngroup.tpl0000644000175000017500000000163711403165466021244 0ustar mikemike

    {t}List of dynamic rules{/t}

    {foreach item=item key=key from=$labeledURIparsed} {/foreach}
    {t}Base{/t} {t}Scope{/t} {t}Attribute{/t} {t}Filter{/t}
    gosa-core-2.7.4/INSTALL0000644000175000017500000000677311263034434013105 0ustar mikemikeGOsa 2.6 QUICK INSTALL ====================== Prequisite: You have a system up and running. It has apache and PHP installed and there is a blank (or prefilled) but working LDAP available. --- Installing GOsa from source: Unpack the GOsa tarball and move the main gosa directory to a place your webserver is configured to find it. The default location will be /usr/share/gosa. For later reference, I assume that you've choosen this path, too. Create the directory /var/spool/gosa for the smarty compile directory. Make it read/write for the webserver (additional chmod 770). You may want to move it elsewhere, configure it in gosa.conf. Create the configuration directory /etc/gosa and make sure that your webserver can read it. As a summmary, you now have these directories for GOsa: /etc/gosa /var/spool/gosa /usr/share/gosa Update the class cache: Run "update-gosa" from the GOsa main directory. After this has been done, include settings for GOsa in your apache config: # Set alias to gosa Alias /gosa /usr/share/gosa/html Assumed you've installed PHP >= 5.2.0, reload your apache webserver and do your first GOsa dry run without configuration: http[s]://your-server/gosa GOsa setup will perform some basic system checks about general prerequisites. The setup asks some questions and provides a basic gosa.conf to save in /etc/gosa. Follow the instructions until you're able to log in. You're done. Lets play with the GUI. --- * Installing from Packages If you install GOsa from packages, all the steps from above will be done automatically. Go to the setup: http[s]://your-server/gosa GOsa setup will perform some basic system checks about general prerequisites. The setup asks some questions and provides a basic gosa.conf to save in /etc/gosa. Follow the instructions until you're able to log in. You're done. Lets play with the GUI. --- * Migrating an existing tree To migrate an existing LDAP tree, you've to do all steps from above, plus some modifications: - GOsa only shows users that have the objectClass gosaAccount This one has been introduced for several reasons. First, there are cases you want to hide special accounts from regular admins (i.e. a samba admin account which is used to log windows machines into their domain, where chaning a password by accident has bad consequences). Secondly the gosaAccount keeps the lm/nt password hashes and the attributes for the last password change - with the consequence that adding a samba account "later" will not require the user to reset the password. - GOsa only recognizes subtrees (or departments in GOsa's view of things) that have the objectClass gosaDepartment. You can hide subtrees from GOsa by not putting this objectClass inside. The GOsa setup may be used to do these migrations, but it is not meant to work in every possible circumstance. For the first time: DO NOT WORK ON PRODUCTIVE DATA IF YOU DON'T KNOW WHAT YOU'RE DOING! That should be all. Entries should be visible in GOsa now. Be aware that if your naming policy of user cn's differs from the way GOsa handles it, the entries get rewritten to a GOsa style dn. --- * Further information To improve this piece of software, please report all kind of errors, either using the bug tracker on www.gosa-project.org or the button on the upper right. Documentation: https://www.gosa-project.org Mailinglist: https://oss.gonicus.de/mailman/listinfo/gosa/ Upgrade hints: https://oss.gonicus.de/labs/gosa/wiki/DocumentationInstallingUpdatingGOsa Have fun! --- Cajus Pollmeier gosa-core-2.7.4/update-locale0000755000175000017500000001050211423776534014516 0ustar mikemike#!/bin/bash generate_po() { ORIG=`pwd` TEMPDIR="/tmp/gosa-locale" TRUE=`which true` echo echo "Creating temporary directory..." [ -d $TEMPDIR ] && rm -rf $TEMPDIR mkdir $TEMPDIR echo "Creating copy of GOsa..." tar c . | tar x -C $TEMPDIR echo "Converting .tpl files..." pushd . &> /dev/null cd $TEMPDIR for template in $(find . -name '*.tpl'); do echo "* converting .tpl files: $(basename $template)" sed -e 's/{t}/!g' $template > $template.new mv $template.new $template done for template in $(find . -name '*.xml'); do echo "* converting .xml files: $(basename $template)" sed -e 's/
    " #~ msgstr "" #~ "Submeter bug" #~ msgid "" #~ "(Some types of certificates are currently not supported and may be " #~ "displayed as 'invalid'.)" #~ msgstr "" #~ "(Alguns tipos de certificados não são suportados e podem ser exibidos " #~ "como \"inválido\".)" #~ msgid "Personal picture" #~ msgstr "Foto pessoal" #~ msgid "Preferred langage" #~ msgstr "Idioma preferencial" #, fuzzy #~ msgid "Choose subtree to place user in" #~ msgstr "Escolha uma subárvore para colocar o usuário no" #~ msgid "Select a base" #~ msgstr "Selecione a base" #, fuzzy #~ msgid "You have no permission to set your password!" #~ msgstr "Você não tem permissão para definir sua senha!" #~ msgid "Generic user information" #~ msgstr "Informações gerais do usuário" #~ msgid "" #~ "You have changed the method your password is stored in the ldap database. " #~ "For that reason you've to enter your password at this point again. GOsa " #~ "will then encode it with the selected method." #~ msgstr "" #~ "Você mudou o método de sua senha armazenada no banco de dados LDAP. Por " #~ "essa razão, você tem que digitar sua senha, neste momento novamente. GOsa " #~ "irá codificá-lo com o método selecionado." #~ msgid "Account" #~ msgstr "Conta" #~ msgid "Select groups to add" #~ msgstr "Selecione os grupos para adicionar" #~ msgid "Display groups of department" #~ msgstr "Exibir grupos de departamento" #, fuzzy #~ msgid "Display groups matching" #~ msgstr "Exibir grupos combinados" #, fuzzy #~ msgid "Regular expression for matching group names" #~ msgstr "Expressões regulares para correspondência dos nomes de grupos" #~ msgid "Display groups of user" #~ msgstr "Exibir grupos de usuários" #, fuzzy #~ msgid "User name of which groups are shown" #~ msgstr "Nome de usuário que os grupos são mostrados" #~ msgid "Show servers" #~ msgstr "Mostrar servidores" #~ msgid "Show workstations" #~ msgstr "Mostrar estações" #~ msgid "Show terminals" #~ msgstr "Mostrar terminais" #~ msgid "Posix settings" #~ msgstr "Configurações Posix" #~ msgid "Password change not allowed" #~ msgstr "Alteração de senha não é permitido" #~ msgid "Samba settings" #~ msgstr "Configurações do Samba" #~ msgid "Samba hash generator" #~ msgstr "Gerador de hash do samba" #~ msgid "Samba SID" #~ msgstr "Samba SID" #~ msgid "RID base" #~ msgstr "Base RID " #~ msgid "Workstation container" #~ msgstr "Recipiente de estações" #, fuzzy #~ msgid "Samba SID mapping" #~ msgstr "Mapeamento de SID Samba" #~ msgid "Timezone" #~ msgstr "Fuso horário" #~ msgid "Please choose your preferred timezone here" #~ msgstr "Por favor escolha o seu fuso horário preferido aqui" #~ msgid "Additional GOsa settings" #~ msgstr "Outras configurações do GOsa" #~ msgid "Enable Copy & Paste" #~ msgstr "Habilitar copiar & colar" #~ msgid "Government mode" #~ msgstr "Modo de governo" #~ msgid "GOsa logging" #~ msgstr "GOsa log" #~ msgid "Mail settings" #~ msgstr "Configurações de email" #~ msgid "Mail method" #~ msgstr "Método de email" #~ msgid "Account identification attribute" #~ msgstr "Atributo de identificação de conta" #~ msgid "Vacation templates" #~ msgstr "Modelo aviso de férias" #~ msgid "Use Cyrus UNIX style" #~ msgstr "Usar estilo Cyrus UNIX" #, fuzzy #~ msgid "Snapshots / Undo" #~ msgstr "Snapshots / Desfazer" #, fuzzy #~ msgid "Enable snapshots" #~ msgstr "Habilitar snapshots" #, fuzzy #~ msgid "Snapshot base" #~ msgstr "Base do snapshot" #~ msgid "Installation" #~ msgstr "Instalação" #~ msgid "" #~ "Move windows workstations into a valid windows workstation department" #~ msgstr "" #~ "Move estações de trabalho Windows em um departamento de estação de " #~ "trabalho válido para o Windows" #, fuzzy #~ msgid "" #~ "This dialog allows you to move the displayed windows workstations into a " #~ "valid department" #~ msgstr "" #~ "Este diálogo lhe permite mover as estações de trabalho Windows para um " #~ "departamento válido" #, fuzzy #~ msgid "" #~ "Be careful with this tool, there may be references pointing to this " #~ "workstations that can't be migrated." #~ msgstr "" #~ "Tenha cuidado com essa ferramenta, pode haver referências apontando para " #~ "esta estação de trabalho que não podem ser migrados." #, fuzzy #~ msgid "" #~ "Move selected windows workstations into the following GOsa department" #~ msgstr "" #~ "Mover as estações de trabalho selecionadas para o seguinte departamento " #~ "no GOsa" #~ msgid "Move selected workstations" #~ msgstr "Mover as estações de trabalho selecionadas" #, fuzzy #~ msgid "What will be done here" #~ msgstr "O que será feito aqui" #~ msgid "Move groups into configured group tree" #~ msgstr "Mover os grupos para a árvore de grupos configurado" #, fuzzy #~ msgid "" #~ "This dialog allows moving a couple of groups to the configured group " #~ "tree. Doing this may straighten your LDAP service." #~ msgstr "" #~ "Este diálogo permite mover os grupos para a árvore de grupos configurado. " #~ "isso pode corrigir o seu serviço LDAP." #~ msgid "" #~ "Be careful with this option! There may be references pointing to these " #~ "groups. The GOsa setup can't migrate references, so you may want to " #~ "cancel the migration in this case." #~ msgstr "" #~ "Tenha cuidado com esta opção! Pode haver referências que apontam para " #~ "esses grupos. A configuração GOsa não pode migrar referências, assim você " #~ "pode querer cancelar a migração neste caso." #, fuzzy #~ msgid "Move selected groups into this group tree" #~ msgstr "Mover os grupos selecionados para o seguinte departamento" #~ msgid "Hide changes" #~ msgstr "Esconder alterações" #, fuzzy #~ msgid "Move users into configured user tree" #~ msgstr "Mover os usuários configurados para á arvore de usuário" #, fuzzy #~ msgid "" #~ "This dialog allows moving a couple of users to the configured user tree. " #~ "Doing this may straighten your LDAP service." #~ msgstr "" #~ "Este diálogo permite mover os usuários para a árvore de usuários " #~ "configurado. isso pode corrigir o seu serviço LDAP." #~ msgid "" #~ "Be careful with this option! There may be references pointing to these " #~ "users. The GOsa setup can't migrate references, so you may want to cancel " #~ "the migration in this case." #~ msgstr "" #~ "Tenha cuidado com esta opção! Pode haver referências que apontam para " #~ "esses usuários. A configuração GOsa não pode migrar referências, assim " #~ "você pode querer cancelar a migração neste caso." #, fuzzy #~ msgid "Move selected users into this people tree" #~ msgstr "Mover usuários selecionados para esta árvore de usuários" #~ msgid "Migrate GOsa 2.5 administrative accounts" #~ msgstr "Migrar contas administrativas do GOsa 2.5" #~ msgid "" #~ "This dialog allows the migration of GOsa 2.5 admin accounts into GOsa 2.6 " #~ "useable accounts." #~ msgstr "" #~ "Este diálogo permite a migração das contas admin do GOsa 2.5 para o GOsa " #~ "2.6." #~ msgid "Abort" #~ msgstr "Abortar" #~ msgid "" #~ "The listed departments are currently invisible in the GOsa user " #~ "interface. If you want to change this for a couple of entries, select " #~ "them and use the migrate button below." #~ msgstr "" #~ "Os departamentos listados estão atualmente invisíveis na interface do " #~ "usuário GOsa. Se você quiser mudar isso, selecioná-los e usar o botão " #~ "aplicar abaixo." #~ msgid "" #~ "If you want to know what will be done when migrating the selected " #~ "entries, use the 'Show changes' button to see the LDIF." #~ msgstr "" #~ "Se você quiser saber o que será feito quando a migração das entradas " #~ "selecionadas, use o botão 'Mostrar alterações' para ver o LDIF." #, fuzzy #~ msgid "" #~ "The listed users are currently invisible in the GOsa user interface. If " #~ "you want to change this for a couple of users, just select them and use " #~ "the 'Migrate' button below." #~ msgstr "" #~ "Os usuários listados estão atualmente invisíveis na interface do usuário " #~ "GOsa. Se você quiser mudar isso, selecioná-los e usar o botão 'Migrar' " #~ "abaixo." #, fuzzy #~ msgid "" #~ "The listed devices are currently invisible in the GOsa interface. If you " #~ "want to change this for a couple of devices, just select them and use the " #~ "'Migrate' button below." #~ msgstr "" #~ "Os dispositivos listados estão atualmente invisíveis na interface do " #~ "usuário GOsa. Se você quiser mudar isso, selecioná-los e usar o botão " #~ "'Migrar' abaixo." #~ msgid "Refresh" #~ msgstr "Atualizar" #, fuzzy #~ msgid "" #~ "The listed services are currently invalid for the GOsa version you are " #~ "going to install. If you want to update a couple of service, just select " #~ "them and use the 'Migrate' button below." #~ msgstr "" #~ "Os serviços listados estão atualmente invisíveis na interface do usuário " #~ "GOsa. Se você quiser mudar isso, selecioná-los e usar o botão 'Migrar' " #~ "abaixo." #, fuzzy #~ msgid "" #~ "The listed menus are currently invisible in the GOsa interface. If you " #~ "want to change this for a couple of devices, just select them and use the " #~ "'Migrate' button below." #~ msgstr "" #~ "Os menus listados estão atualmente invisíveis na interface do usuário " #~ "GOsa. Se você quiser mudar isso, selecioná-los e usar o botão 'Migrar' " #~ "abaixo." #~ msgid "Enable primary group filter" #~ msgstr "Habilitar filtro de grupo primário" #~ msgid "Display summary in listings" #~ msgstr "Mostrar resumo em lista" #~ msgid "Honour administrative units" #~ msgstr "Reconhecer unidades administrativas" #~ msgid "SNMP community" #~ msgstr "Comunidade SNMP" #~ msgid "Path for PPD storage" #~ msgstr "Caminho para arquivos PPD" #~ msgid "SUDO role base" #~ msgstr "Base SUDO para papel" #~ msgid "Mail queue script" #~ msgstr "Script fila de email" #~ msgid "Enable edit locking" #~ msgstr "Habilitar edição de bloqueio" #~ msgid "Gosa support daemon" #~ msgstr "Daemon de serviço GOsa" #~ msgid "Daemon timeout" #~ msgstr "Tempo de vida do daemon" #~ msgid "Login and session" #~ msgstr "Logon e sessão" #~ msgid "Enforce register_globals to be deactivated" #~ msgstr "Exigir que o register_globals esteja desativado" #~ msgid "Warn if session is not encrypted" #~ msgstr "Avisar se a sessão não for criptografada" #~ msgid "Remember dialog filter settings" #~ msgstr "Lembrar as definições de filtros" #~ msgid "Session lifetime" #~ msgstr "Duração da sessão" #~ msgid "Debugging" #~ msgstr "Depuração" #~ msgid "Show PHP errors" #~ msgstr "Mostrar erros do PHP" #~ msgid "Maximum LDAP query time" #~ msgstr "Tempo máximo de consulta LDAP" #~ msgid "Debug level" #~ msgstr "Nível de depuração" #~ msgid "Disabled" #~ msgstr "Desabilitado" #~ msgid "Checking for invisible departments" #~ msgstr "Verificando departamentos invisíveis" #~ msgid "Checking for invisible users" #~ msgstr "Verificando usuários invisíveis" #~ msgid "Checking for users outside the people tree" #~ msgstr "Verificando usuário fora da árvore de usuários" #~ msgid "Checking for groups outside the groups tree" #~ msgstr "Verificando grupos fora da árvore de grupos" #~ msgid "Checking for windows workstations outside the winstation tree" #~ msgstr "Verificando estações Windows fora da árvore de estações Windows" #~ msgid "Checking for duplicated UID numbers" #~ msgstr "Verificando duplicação de números UID" #~ msgid "Checking for duplicate GID numbers" #~ msgstr "Verificando duplicação de números GID" #~ msgid "Checking for old style USB devices" #~ msgstr "Verificando os dispositivos USB com estilo antigo" #~ msgid "Checking for old services that have to be migrated" #~ msgstr "Verificando serviços antigos, que devem ser migrados" #~ msgid "Checking for old style application menus" #~ msgstr "Verificando menus de aplicações com estilo antigo" #~ msgid "Found %s duplicate values for attribute 'uidNumber'." #~ msgstr "Encontrados %s valores duplicados para o atributo 'uidNumber'." #~ msgid "Found %s duplicate values for attribute 'gidNumber'." #~ msgstr "Encontrados %s valores duplicados para o atributo 'gidNumber'." #~ msgid "" #~ "Found %s winstations outside the predefined winstation department ou '%s'." #~ msgstr "" #~ "Encontrados %s estações Windows fora da ou predefinida para estações " #~ "windows '%s'." #~ msgid "Move" #~ msgstr "Mover" #~ msgid "Found %s user(s) outside the configured tree '%s'." #~ msgstr "Encontrados %s usuário(s) fora da árvore configurada '%s'." #~ msgid "Found %s user(s) that will not be visible in GOsa." #~ msgstr "Encontrados %s usuário(s) que não serão visíveis no GOsa." #~ msgid "Cannot migrate department '%s':" #~ msgstr "Não é possível migrar o departamento '%s':" #~ msgid "Found %s department(s) that will not be visible in GOsa." #~ msgstr "Encontrados %s departamento(s) que não serão visíveis no GOsa." #~ msgid "GOsa 2.5 administrative accounts found: %s" #~ msgstr "Contas administrativas do GOsa 2.5 encontrado: %s" #~ msgid "There is no valid GOsa 2.6 administrator account inside your LDAP." #~ msgstr "" #~ "Não há nenhuma conta de administrador válida para o GOsa 2.6 no seu LDAP." #~ msgid "Uid" #~ msgstr "Uid" #~ msgid "Cannot move users to the requested department!" #~ msgstr "Não é possível mover os usuários para o departamento solicitado!" #, fuzzy #~ msgid "Updating following references too" #~ msgstr "Atualizando as seguintes referências" #~ msgid "User will be moved from" #~ msgstr "O usuário será movido de" #~ msgid "Copy '%s' to '%s' failed:" #~ msgstr "A cópia de '%s' para '%s' falhou:" #, fuzzy #~ msgid "There are %s devices that need to be migrated." #~ msgstr "Existem %s dispositivos que precisam ser migrados." #~ msgid "Adding '%s' to the LDAP failed: %s" #~ msgstr "Falha ao adicionar '%s' no LDAP: %s" #, fuzzy #~ msgid "Updating '%s' failed: %s" #~ msgstr "A atualização '%s' falhou: %s" #, fuzzy #~ msgid "There are %s services that need to be migrated." #~ msgstr "Existem %s serviços que precisam ser migrados." #, fuzzy #~ msgid "There are %s application menus which have to be migrated." #~ msgstr "Existem %s aplicações de menu que precisam ser migrados." #~ msgid "" #~ "This seems to be the first time you start GOsa - we didn't find any " #~ "configuration right now. This simple wizard intends to help you while " #~ "setting it up." #~ msgstr "" #~ "Esta parece ser a primeira vez que inicia o GOsa - não encontramos " #~ "nenhuma configuração agora. Este assistente tem a intenção de ajudá-lo na " #~ "sua criação." #~ msgid "What will the wizard do for you?" #~ msgstr "O que o assistente pode fazer por você?" #~ msgid "Create a basic, single site configuration" #~ msgstr "Criar uma configuração simples e básica do site" #~ msgid "Tries to find problems within your PHP and LDAP setup" #~ msgstr "Tentar encontrar problemas de configuração no PHP e LDAP" #~ msgid "" #~ "Let you choose from a set of basic and advanced configuration switches" #~ msgstr "" #~ "Permitir que você escolha as definições básicas e avançadas de " #~ "configuração" #~ msgid "Guided migration of existing LDAP trees" #~ msgstr "Guia para migração de uma árvore LDAP existente" #~ msgid "What will the wizard NOT do for you?" #~ msgstr "O que o assistente NÃO pode fazer por você?" #~ msgid "Find every possible configuration error" #~ msgstr "Encontrar todos os erros de configuração possível" #~ msgid "Migrate every possible LDAP setup - create backup dumps!" #~ msgstr "Migrar cada configuração do LDAP possível - criar dumps de backup!" #~ msgid "To continue..." #~ msgstr "Para continuar..." #~ msgid "GOsa settings 3/3" #~ msgstr "Configurações do GOsa 3/3" #~ msgid "Session lifetime must be a numeric value!" #~ msgstr "Tempo de vida da sessão deve ser um valor numérico!" #~ msgid "Maximum LDAP query time must be a numeric value!" #~ msgstr "O tempo máximo de consulta LDAP deve ser um valor numérico!" #~ msgid "Enable schema validation when logging in" #~ msgstr "Habilitar validação de esquema quando efetuar o logon" #~ msgid "Look and feel" #~ msgstr "Aparência" #~ msgid "Apache" #~ msgstr "Apache" #~ msgid "Compress output send to browser" #~ msgstr "Comprimir a saída para enviar para o navegador" #~ msgid "People DN attribute" #~ msgstr "Atributo DN para pessoa" #~ msgid "People storage subtree" #~ msgstr "Pessoas na subárvore" #~ msgid "Group storage subtree" #~ msgstr "Grupo na subárvore" #~ msgid "Include personal title in user DN" #~ msgstr "Incluir título pessoal do usuário no DN" #~ msgid "Relaxed naming policies" #~ msgstr "Política de nomes relaxada" #~ msgid "Automatic UIDs" #~ msgstr "UIDs automáticos" #~ msgid "GID / UID min id" #~ msgstr "GID/ID minimo" #~ msgid "Number base for people/groups" #~ msgstr "Número base para pessoas/grupos" #~ msgid "Hook for number base" #~ msgstr "Comando auxiliar para número base" #~ msgid "Password encryption algorithm" #~ msgstr "Algorítimo de criptografia de senhas" #~ msgid "Password restrictions" #~ msgstr "Restrições de senha" #~ msgid "Different characters from old password" #~ msgstr "Caracteres diferentes da senha antiga" #~ msgid "Password change hook" #~ msgstr "Comando auxiliar para alteração de senha" #~ msgid "Use SASL for kerberos" #~ msgstr "Usar SASL para Kerberos" #~ msgid "Use account expiration" #~ msgstr "Usar expiração de conta" #~ msgid "" #~ "GOsa supports several encryption types for your passwords. Normally this " #~ "is adjustable via user templates, but you can specify a default method to " #~ "be used here, too." #~ msgstr "" #~ "O GOsa suporta diversos tipos de criptografia para as senhas. " #~ "Normalmente, esta é ajustável através de modelos de usuário, mas você " #~ "pode especificar um método padrão a ser usado também." #, fuzzy #~ msgid "" #~ "GOsa always acts as admin and manages access rights internally. This is a " #~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " #~ "For this to work, we need the admin DN and the corresponding password." #~ msgstr "" #~ "GOsa sempre atua como administrador e gera os direitos de acesso " #~ "internamente. Esta é uma solução alternativa ao diretório OpenLDAP quando " #~ "as ACI's estão totalmente implementadas. Para que isso funcione, " #~ "precisamos que o DN admin e a senha correspondente." #, fuzzy #~ msgid "" #~ "Some basic LDAP parameters are tunable and affect the locations where " #~ "GOsa saves people and groups, including the way accounts get created. " #~ "Check the values below if the fit your needs." #~ msgstr "" #~ "Alguns parâmetros básicos de LDAP são ajustáveis e afeta os locais onde " #~ "GOsa salva as pessoas e grupos, incluindo o modo como as contas são " #~ "criadas. Verifique os valores abaixo se a atender às suas necessidades." #, fuzzy #~ msgid "" #~ "GOsa has modular support for several mail methods. These methods provide " #~ "interfaces to users mailboxes and general handling for quotas. You can " #~ "choose the dummy plugin to leave all your mail settings untouched." #~ msgstr "" #~ "O GOsa tem suporte para vários métodos de correio. Estes métodos oferecem " #~ "interfaces para usuários as caixas de correio e manutenção geral das " #~ "quotas. Você pode escolher o plugin fictício para deixar todos os seus e-" #~ "mails sem trocar as configurações." #~ msgid "GOsa settings 1/3" #~ msgstr "Configurações do GOsa 1/3" #~ msgid "The specified value for '%s' must be a numeric value" #~ msgstr "O valor especificado para '%s' deve ser um valor numérico" #~ msgid "Don't add a trailing comma to '%s'." #~ msgstr "Não adicione uma virgula no de '%s'." #~ msgid "People storage ou" #~ msgstr "OU de armazenamento para Pessoas" #~ msgid "Group storage ou" #~ msgstr "OU de armazenamento para Grupos" #~ msgid "Uid base must be numeric" #~ msgstr "UID base deve ser numérico" #~ msgid "The given password minimum length is not numeric." #~ msgstr "O comprimento mínimo de senha informado não é numérico." #~ msgid "The given password differ value is not numeric." #~ msgstr "A senha informada diferem, o valor não é numérico." #~ msgid "GOsa settings 2/3" #~ msgstr "Configurações do GOsa 2/3" #~ msgid "Customize special parameters" #~ msgstr "Personalizar parâmetros especiais" gosa-core-2.7.4/locale/core/ru/0000755000175000017500000000000011752422546014664 5ustar mikemikegosa-core-2.7.4/locale/core/ru/LC_MESSAGES/0000755000175000017500000000000011752422546016451 5ustar mikemikegosa-core-2.7.4/locale/core/ru/LC_MESSAGES/messages.po0000644000175000017500000111266711651532471020633 0ustar mikemike# Translation of messages.po to Russian # Valia V. Vaneeva , 2004. # $Id: messages.po,v 1.61 2005/04/18 10:37:13 migor-guest Exp $ msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-25 15:08+0200\n" "PO-Revision-Date: 2005-04-18 14:35+0300\n" "Last-Translator: Igor Muratov \n" "Language-Team: ALT Linux Team\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: poEdit 1.3.1\n" #: include/class_management.inc:32 include/class_management.inc:33 #: plugins/personal/posix/class_posixAccount.inc:224 msgid "unconfigured" msgstr "Не настроено" #: include/class_management.inc:324 include/class_management.inc:487 #: include/class_management.inc:534 include/class_management.inc:549 #: include/class_management.inc:586 include/class_management.inc:600 #: plugins/admin/users/class_userManagement.inc:228 #: plugins/admin/users/class_userManagement.inc:764 #, fuzzy msgid "Permission" msgstr "Права для членов группы" #: include/class_management.inc:405 #: plugins/admin/acl/class_aclManagement.inc:98 #: plugins/admin/users/class_userManagement.inc:722 #: plugins/admin/users/class_userManagement.inc:726 #, fuzzy msgid "Permission error" msgstr "Права для членов группы" #: include/class_management.inc:487 #, fuzzy, php-format msgid "You are not allowed to create a snapshot for %s!" msgstr "Вам не разрешено менять пароль." #: include/class_management.inc:508 include/class_management.inc:669 #: include/utils/class_msgPool.inc:137 include/utils/class_msgPool.inc:149 #: include/utils/class_msgPool.inc:167 include/utils/class_msgPool.inc:440 #: include/utils/class_msgPool.inc:462 include/utils/class_xml.inc:40 #: include/class_listing.inc:542 include/class_tabs.inc:71 #: include/class_msg_dialog.inc:99 include/class_plugin.inc:1698 #: include/class_plugin.inc:1705 #: include/password-methods/class_password-methods.inc:339 #: include/functions.inc:2911 include/functions.inc:3070 #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3422 include/functions.inc:3430 #: include/functions.inc:3442 include/functions.inc:3446 #: include/functions.inc:3461 include/functions.inc:3470 #: include/functions.inc:3530 include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #: include/class_CopyPasteHandler.inc:377 #: include/class_gosaSupportDaemon.inc:1184 #: include/class_gosaSupportDaemon.inc:1204 #: setup/class_setupStep_Migrate.inc:450 setup/setup_checks.tpl:25 #: setup/setup_checks.tpl:66 html/index.php:241 html/index.php:245 #: plugins/personal/password/class_password.inc:215 #: plugins/personal/generic/class_user.inc:297 #: plugins/personal/generic/class_user.inc:429 #: plugins/personal/generic/class_user.inc:522 #: plugins/personal/generic/class_user.inc:816 #: plugins/personal/generic/class_user.inc:1050 #: plugins/personal/generic/class_user.inc:1177 #: plugins/personal/generic/class_user.inc:1184 #: plugins/personal/generic/class_user.inc:1202 #: plugins/personal/generic/class_user.inc:1483 #: plugins/personal/generic/class_user.inc:1809 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:203 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:207 #: plugins/admin/groups/class_group.inc:482 #: plugins/admin/groups/class_group.inc:488 #: plugins/admin/groups/class_group.inc:676 #: plugins/admin/groups/class_group.inc:772 #: plugins/admin/groups/class_group.inc:777 #: plugins/admin/groups/class_group.inc:1115 #: plugins/admin/ogroups/class_ogroup.inc:424 #: plugins/admin/acl/class_aclRole.inc:670 #: plugins/admin/departments/class_department.inc:317 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:43 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:49 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:96 #: plugins/generic/statistics/class_statistics.inc:133 #: plugins/generic/statistics/class_statistics.inc:229 #: plugins/generic/statistics/class_statistics.inc:244 #: plugins/generic/references/class_ldifViewer.inc:20 #, php-format msgid "Error" msgstr "" #: include/class_management.inc:534 include/class_management.inc:586 #: include/class_management.inc:600 #, fuzzy, php-format msgid "You are not allowed to restore a snapshot for %s!" msgstr "Вам не разрешено менять пароль." #: include/class_management.inc:549 #, fuzzy, php-format msgid "You are not allowed to remove a snapshot for %s!" msgstr "Вам не разрешено менять пароль." #: include/class_management.inc:659 include/class_management.inc:743 #: include/class_log.inc:87 include/class_session.inc:76 #: include/class_session.inc:101 include/class_session.inc:127 #: include/functions.inc:640 include/functions.inc:854 #: include/functions.inc:972 include/functions.inc:1367 #: include/functions.inc:2195 include/functions.inc:2225 #: include/functions.inc:2245 include/class_ldap.inc:807 #: include/class_ldap.inc:858 include/class_CopyPasteHandler.inc:160 #: include/class_CopyPasteHandler.inc:274 include/class_acl.inc:1089 #: plugins/personal/myaccount/main.inc:49 #, fuzzy msgid "Internal error" msgstr "Терминал-сервер" #: include/class_management.inc:660 include/class_management.inc:744 #: plugins/personal/myaccount/main.inc:50 #, php-format msgid "" "Cannot instantiate tabbed-plug-in, the base plugin (%s) is not available!" msgstr "" #: include/class_management.inc:669 #, php-format msgid "" "No tab definition for %s found in configuration file: cannot create plugin " "instance!" msgstr "" #: include/class_pluglist.inc:146 include/utils/class_timezone.inc:47 #: include/password-methods/class_password-methods-sha.inc:48 #: include/password-methods/class_password-methods-ssha.inc:51 #: include/functions.inc:864 include/functions.inc:3085 #: include/functions.inc:3100 include/class_config.inc:171 #: include/class_config.inc:712 include/class_config.inc:1173 #: include/class_config.inc:1186 include/class_config.inc:1204 #: include/class_CopyPasteHandler.inc:119 #: include/class_CopyPasteHandler.inc:128 #: include/class_CopyPasteHandler.inc:177 #: include/class_CopyPasteHandler.inc:186 #: include/class_CopyPasteHandler.inc:194 include/class_SnapshotHandler.inc:44 #: include/class_SnapshotHandler.inc:57 include/class_SnapshotHandler.inc:75 #: html/password.php:113 html/index.php:157 html/index.php:233 #: html/main.php:295 plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 #, fuzzy msgid "Configuration error" msgstr "Настроить" #: include/class_pluglist.inc:147 msgid "The configuration format has changed: please run the setup again!" msgstr "" #: include/class_pluglist.inc:304 #, fuzzy msgid "" "You are currently editing a database entry. Do you want to discard the " "changes?" msgstr "" "Вы сейчас редактируете объект базы данных. Хотите отказаться от изменений?" #: include/class_pluglist.inc:479 plugins/admin/groups/class_group.inc:329 #: plugins/admin/groups/class_group.inc:352 #: plugins/admin/groups/class_group.inc:369 #: plugins/admin/departments/class_department.inc:152 #: plugins/generic/references/contents.tpl:18 #, fuzzy msgid "Unknown" msgstr "состояние неизвестно" #: include/utils/class_msgPool.inc:17 msgid "This object will be deleted!" msgstr "" #: include/utils/class_msgPool.inc:19 #, php-format msgid "This %s object will be deleted!" msgstr "" #: include/utils/class_msgPool.inc:24 #, php-format msgid "This object will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:26 #, php-format msgid "This %s object will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:31 msgid "This object will be deleted:" msgstr "" #: include/utils/class_msgPool.inc:33 #, php-format msgid "This %s object will be deleted:" msgstr "" #: include/utils/class_msgPool.inc:37 #, php-format msgid "These objects will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:39 #, php-format msgid "These %s objects will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:47 #, fuzzy msgid "You have no permission to delete this object!" msgstr "У вас недостаточно прав для удаления этого подразделения." #: include/utils/class_msgPool.inc:51 include/utils/class_msgPool.inc:55 #, fuzzy msgid "You have no permission to delete the object:" msgstr "У вас недостаточно прав для удаления этого подразделения." #: include/utils/class_msgPool.inc:58 #, fuzzy msgid "You have no permission to delete these objects:" msgstr "У вас недостаточно прав для удаления этого подразделения." #: include/utils/class_msgPool.inc:65 #, fuzzy msgid "You have no permission to create this object!" msgstr "У вас недостаточно прав для удаления этого подразделения." #: include/utils/class_msgPool.inc:69 include/utils/class_msgPool.inc:73 #, fuzzy msgid "You have no permission to create the object:" msgstr "У вас недостаточно прав для удаления этого подразделения." #: include/utils/class_msgPool.inc:76 #, fuzzy msgid "You have no permission to create these objects:" msgstr "У вас недостаточно прав для удаления этого подразделения." #: include/utils/class_msgPool.inc:83 #, fuzzy msgid "You have no permission to modify this object!" msgstr "У вас недостаточно прав для удаления этого стоп-листа." #: include/utils/class_msgPool.inc:87 include/utils/class_msgPool.inc:91 #, fuzzy msgid "You have no permission to modify the object:" msgstr "У вас недостаточно прав для удаления этого стоп-листа." #: include/utils/class_msgPool.inc:94 #, fuzzy msgid "You have no permission to modify these objects:" msgstr "У вас недостаточно прав для удаления этого стоп-листа." #: include/utils/class_msgPool.inc:101 #, fuzzy msgid "You have no permission to view this object!" msgstr "У вас недостаточно прав для удаления этого стоп-листа." #: include/utils/class_msgPool.inc:105 include/utils/class_msgPool.inc:109 #, fuzzy msgid "You have no permission to view the object:" msgstr "У вас недостаточно прав для создания телефонов в этой ветке." #: include/utils/class_msgPool.inc:112 #, fuzzy msgid "You have no permission to view these objects:" msgstr "У вас недостаточно прав для удаления этого стоп-листа." #: include/utils/class_msgPool.inc:119 #, fuzzy msgid "You have no permission to move this object!" msgstr "У вас недостаточно прав для удаления этого стоп-листа." #: include/utils/class_msgPool.inc:123 include/utils/class_msgPool.inc:127 #, fuzzy msgid "You have no permission to move the object:" msgstr "У вас недостаточно прав для удаления этого стоп-листа." #: include/utils/class_msgPool.inc:130 #, fuzzy msgid "You have no permission to move these objects:" msgstr "У вас недостаточно прав для удаления этого стоп-листа." #: include/utils/class_msgPool.inc:140 include/utils/class_msgPool.inc:152 #: include/utils/class_msgPool.inc:170 #, fuzzy msgid "Connection information" msgstr "Личная информация" #: include/utils/class_msgPool.inc:142 #, fuzzy, php-format msgid "Cannot connect to %s database!" msgstr "Невозможно подключиться к серверу базы данных!" #: include/utils/class_msgPool.inc:154 #, fuzzy, php-format msgid "Cannot select %s database!" msgstr "Невозможно выбрать базу данных!" #: include/utils/class_msgPool.inc:160 #, php-format msgid "No %s server defined!" msgstr "" #: include/utils/class_msgPool.inc:172 #, fuzzy, php-format msgid "Cannot query %s database!" msgstr "Невозможно выбрать базу данных!" #: include/utils/class_msgPool.inc:178 #, fuzzy, php-format msgid "The field %s contains a reserved keyword!" msgstr "Значение поля \"Факс\" содержит недопустимый номер телефона." #: include/utils/class_msgPool.inc:184 #, fuzzy, php-format msgid "Command specified as %s hook for plugin %s does not exist!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/utils/class_msgPool.inc:191 #, fuzzy, php-format msgid "%s command is invalid!" msgstr "Указанное имя уже используется." #: include/utils/class_msgPool.inc:193 #, fuzzy, php-format msgid "%s command (%s) for plugin %s is invalid!" msgstr "Указанное имя уже используется." #: include/utils/class_msgPool.inc:195 #, fuzzy, php-format msgid "%s command for plugin %s is invalid!" msgstr "Указанное имя уже используется." #: include/utils/class_msgPool.inc:197 #, fuzzy, php-format msgid "%s command (%s) is invalid!" msgstr "Указанное имя уже используется." #: include/utils/class_msgPool.inc:205 #, fuzzy, php-format msgid "Cannot execute %s command!" msgstr "Невозможно выбрать базу данных!" #: include/utils/class_msgPool.inc:207 #, fuzzy, php-format msgid "Cannot execute %s command (%s) for plugin %s!" msgstr "Невозможно выбрать базу данных!" #: include/utils/class_msgPool.inc:209 #, fuzzy, php-format msgid "Cannot execute %s command for plugin %s!" msgstr "Невозможно выбрать базу данных!" #: include/utils/class_msgPool.inc:211 #, fuzzy, php-format msgid "Cannot execute %s command (%s)!" msgstr "Невозможно выбрать базу данных!" #: include/utils/class_msgPool.inc:219 #, fuzzy, php-format msgid "Value for %s is too large!" msgstr "Значение 'UID' слишком маленькое." #: include/utils/class_msgPool.inc:221 #, fuzzy, php-format msgid "%s must be smaller than %s!" msgstr "" "Значение поля \"shadowMin\" должно быть меньше значения поля \"shadowMax\"." #: include/utils/class_msgPool.inc:229 #, fuzzy, php-format msgid "Value for %s is too small!" msgstr "Значение 'UID' слишком маленькое." #: include/utils/class_msgPool.inc:231 #, fuzzy, php-format msgid "%s must be %s or above!" msgstr "" "У вас должна быть установка PHP версии не ниже 4.1.0, так как в ней " "реализованы некоторые новые функции и исправлены некоторые ошибки." #: include/utils/class_msgPool.inc:238 #, php-format msgid "%s depends on %s - please provide both values!" msgstr "" #: include/utils/class_msgPool.inc:244 #, fuzzy, php-format msgid "There is already an entry with this %s attribute in the system!" msgstr "" "Пользователь с таким регистрационным именем в базе данных уже существует." #: include/utils/class_msgPool.inc:250 #, fuzzy, php-format msgid "The required field %s is empty!" msgstr "Обязательное поле \"Имя\" не заполнено." #: include/utils/class_msgPool.inc:258 include/class_core.inc:309 msgid "Example" msgstr "" #: include/utils/class_msgPool.inc:278 #, fuzzy, php-format msgid "The Field %s contains invalid characters" msgstr "Значение поля \"Имя\" содержит недопустимые символы." #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s is not allowed:" msgstr "Сменить пароль" #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s are not allowed!" msgstr "Сменить пароль" #: include/utils/class_msgPool.inc:282 #, fuzzy, php-format msgid "The Field %s contains invalid characters!" msgstr "Значение поля \"Имя\" содержит недопустимые символы." #: include/utils/class_msgPool.inc:289 #, fuzzy, php-format msgid "Missing %s PHP extension!" msgstr "Удалить параметры" #: include/utils/class_msgPool.inc:295 ihtml/themes/default/acl.tpl:93 #: ihtml/themes/default/acl.tpl:109 ihtml/themes/default/snapshotdialog.tpl:44 #: ihtml/themes/default/snapshotdialog.tpl:90 #: ihtml/themes/default/islocked.tpl:26 #: ihtml/themes/default/copyPasteDialog.tpl:21 #: ihtml/themes/default/msg_dialog.tpl:80 #: ihtml/themes/default/msg_dialog.tpl:141 #: ihtml/themes/default/msg_dialog.tpl:146 setup/setup_ldap.tpl:20 #: setup/setup_migrate.tpl:71 #, php-format msgid "Cancel" msgstr "Отмена" #: include/utils/class_msgPool.inc:301 ihtml/themes/default/msg_dialog.tpl:77 #: ihtml/themes/default/msg_dialog.tpl:79 #: ihtml/themes/default/msg_dialog.tpl:136 #: ihtml/themes/default/msg_dialog.tpl:139 #: ihtml/themes/default/msg_dialog.tpl:144 #: setup/class_setupStep_Migrate.inc:153 setup/class_setupStep_Migrate.inc:303 #: setup/class_setupStep_Migrate.inc:684 setup/class_setupStep_Migrate.inc:828 #: setup/setup_checks.tpl:21 setup/setup_checks.tpl:62 #, php-format msgid "OK" msgstr "" #: include/utils/class_msgPool.inc:307 ihtml/themes/default/acl.tpl:33 #: ihtml/themes/default/acl.tpl:89 ihtml/themes/default/acl.tpl:106 #: setup/setup_ldap.tpl:19 setup/setup_migrate.tpl:70 #, php-format msgid "Apply" msgstr "Применить" #: include/utils/class_msgPool.inc:313 #: ihtml/themes/default/copyPasteDialog.tpl:19 #, php-format msgid "Save" msgstr "Сохранить" #: include/utils/class_msgPool.inc:319 #: plugins/personal/generic/generic.tpl:252 #: plugins/personal/generic/generic.tpl:272 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:83 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:123 #, php-format msgid "Add" msgstr "Добавить" #: include/utils/class_msgPool.inc:319 #, fuzzy, php-format msgid "Add %s" msgstr "Добавить" #: include/utils/class_msgPool.inc:325 #, php-format msgid "Delete" msgstr "Удалить" #: include/utils/class_msgPool.inc:325 #, fuzzy, php-format msgid "Delete %s" msgstr "Удалить" #: include/utils/class_msgPool.inc:331 ihtml/themes/default/sizelimit.tpl:16 #, php-format msgid "Set" msgstr "Установить" #: include/utils/class_msgPool.inc:331 #, fuzzy, php-format msgid "Set %s" msgstr "Установить" #: include/utils/class_msgPool.inc:337 #, fuzzy, php-format msgid "Edit..." msgstr "Изменить" #: include/utils/class_msgPool.inc:337 #, fuzzy, php-format msgid "Edit %s..." msgstr "Пользователи домена" #: include/utils/class_msgPool.inc:343 msgid "Back" msgstr "Назад" #: include/utils/class_msgPool.inc:363 #, fuzzy, php-format msgid "This account has no valid %s extensions!" msgstr "Для этой учетной записи нет корректных расширений GOsa." #: include/utils/class_msgPool.inc:369 #, fuzzy, php-format msgid "" "This account has %s settings enabled. You can disable them by clicking below." msgstr "" "В этой учетной записи используются атрибуты POSIX. Вы можете отключить их " "использование, щелкнув ниже." #: include/utils/class_msgPool.inc:372 include/utils/class_msgPool.inc:379 #, fuzzy, php-format msgid "" "This account has %s settings enabled. To disable them, you'll need to remove " "the %s settings first!" msgstr "" "В этой учетной записи используются атрибуты POSIX. Чтобы отключить их " "использование, сначала нужно удалить учетную запись Samba." #: include/utils/class_msgPool.inc:388 #, fuzzy, php-format msgid "" "This account has %s settings disabled. You can enable them by clicking below." msgstr "" "В этой учетной записи не используются атрибуты POSIX. Вы можете использовать " "их, щелкнув ниже." #: include/utils/class_msgPool.inc:391 include/utils/class_msgPool.inc:398 #, fuzzy, php-format msgid "" "This account has %s settings disabled. To enable them, you'll need to add " "the %s settings first!" msgstr "" "В этой учетной записи используются атрибуты POSIX. Чтобы отключить их " "использование, сначала нужно удалить учетную запись Samba." #: include/utils/class_msgPool.inc:406 #, fuzzy, php-format msgid "Add %s settings" msgstr "Дополнительные записи в fstab" #: include/utils/class_msgPool.inc:412 #, fuzzy, php-format msgid "Remove %s settings" msgstr "Атрибуты UNIX" #: include/utils/class_msgPool.inc:418 msgid "Click the 'Edit' button below to change informations in this dialog" msgstr "Нажмите 'Изменить' чтобы отредактировать данные в этой форме." #: include/utils/class_msgPool.inc:424 msgid "January" msgstr "Январь" #: include/utils/class_msgPool.inc:424 msgid "February" msgstr "Февраль" #: include/utils/class_msgPool.inc:424 msgid "March" msgstr "Март" #: include/utils/class_msgPool.inc:424 msgid "April" msgstr "Апрель" #: include/utils/class_msgPool.inc:425 msgid "May" msgstr "Май" #: include/utils/class_msgPool.inc:425 msgid "June" msgstr "Июнь" #: include/utils/class_msgPool.inc:425 msgid "July" msgstr "Июль" #: include/utils/class_msgPool.inc:425 msgid "August" msgstr "Август" #: include/utils/class_msgPool.inc:425 msgid "September" msgstr "Сентябрь" #: include/utils/class_msgPool.inc:426 msgid "October" msgstr "Октябрь" #: include/utils/class_msgPool.inc:426 msgid "November" msgstr "Ноябрь" #: include/utils/class_msgPool.inc:426 msgid "December" msgstr "Декабрь" #: include/utils/class_msgPool.inc:432 #, fuzzy msgid "Sunday" msgstr "Имя сервера" #: include/utils/class_msgPool.inc:432 #, fuzzy msgid "Monday" msgstr "месяц" #: include/utils/class_msgPool.inc:432 msgid "Tuesday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Wednesday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Thursday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Friday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Saturday" msgstr "" #: include/utils/class_msgPool.inc:439 #, fuzzy msgid "MySQL operation failed!" msgstr "Невозможно выполнить запрос к базе данных!" #: include/utils/class_msgPool.inc:447 #, fuzzy msgid "read operation" msgstr "Почтовые настройки" #: include/utils/class_msgPool.inc:447 msgid "add operation" msgstr "" #: include/utils/class_msgPool.inc:447 #, fuzzy msgid "modify operation" msgstr "Личная информация" #: include/utils/class_msgPool.inc:448 #, fuzzy msgid "delete operation" msgstr "Выберите чтобы посмотреть рабочие станции" #: include/utils/class_msgPool.inc:448 #, fuzzy msgid "search operation" msgstr "Учетная запись" #: include/utils/class_msgPool.inc:448 #, fuzzy msgid "authentication" msgstr "Рабочая станция Windows" #: include/utils/class_msgPool.inc:451 #, fuzzy, php-format msgid "LDAP %s failed!" msgstr "Невозможно выполнить запрос к базе данных!" #: include/utils/class_msgPool.inc:453 #, fuzzy msgid "LDAP operation failed!" msgstr "Невозможно выполнить запрос к базе данных!" #: include/utils/class_msgPool.inc:459 include/class_acl.inc:904 #: include/class_acl.inc:911 include/class_acl.inc:918 #: ihtml/themes/default/snapshotdialog.tpl:20 #: ihtml/themes/default/snapshotdialog.tpl:63 #: plugins/admin/departments/class_department.inc:624 msgid "Object" msgstr "Объект" #: include/utils/class_msgPool.inc:469 #, fuzzy msgid "Upload failed!" msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." #: include/utils/class_msgPool.inc:472 #, fuzzy, php-format msgid "Upload failed: %s" msgstr "Служба печати" #: include/utils/class_msgPool.inc:479 msgid "Communication failure with the infrastructure service!" msgstr "" #: include/utils/class_msgPool.inc:481 #, php-format msgid "Communication failure with the infrastructure service: %s" msgstr "" #: include/utils/class_msgPool.inc:488 msgid "Communication failure with the GOsa-NG service!" msgstr "" #: include/utils/class_msgPool.inc:490 #, php-format msgid "Communication failure with the GOsa-NG service: %s" msgstr "" #: include/utils/class_msgPool.inc:497 include/utils/class_msgPool.inc:500 #, fuzzy, php-format msgid "This %s is still in use by this object: %s" msgstr "Описание группы" #: include/utils/class_msgPool.inc:503 #, fuzzy, php-format msgid "This %s is still in use." msgstr "Описание группы" #: include/utils/class_msgPool.inc:505 #, fuzzy, php-format msgid "This %s is still in use by these objects: %s" msgstr "Описание группы" #: include/utils/class_msgPool.inc:511 #, php-format msgid "File %s does not exist!" msgstr "" #: include/utils/class_msgPool.inc:517 #, fuzzy, php-format msgid "Cannot open file %s for reading!" msgstr "Удалить" #: include/utils/class_msgPool.inc:523 #, fuzzy, php-format msgid "Cannot open file %s for writing!" msgstr "Удалить" #: include/utils/class_msgPool.inc:529 #, fuzzy, php-format msgid "" "The value for %s is currently unconfigured or invalid, please check your " "configuration file!" msgstr "Не удается подключиться к базе журналов, отчеты показаны не будут!" #: include/utils/class_msgPool.inc:535 #, fuzzy, php-format msgid "Cannot delete file %s!" msgstr "Удалить" #: include/utils/class_msgPool.inc:541 #, fuzzy, php-format msgid "Cannot create folder %s!" msgstr "Список подразделений" #: include/utils/class_msgPool.inc:547 #, fuzzy, php-format msgid "Cannot delete folder %s!" msgstr "Удалить" #: include/utils/class_msgPool.inc:553 #, fuzzy, php-format msgid "Checking for %s support" msgstr "Проверка поддержки gettext" #: include/utils/class_msgPool.inc:559 #, php-format msgid "Install and activate the %s PHP module." msgstr "" #: include/utils/class_msgPool.inc:565 #, php-format msgid "" "Cannot initialize class %s! Maybe there is a plugin missing in your gosa " "setup?" msgstr "" #: include/utils/class_msgPool.inc:571 msgid "" "The supplied base is not valid and has been reset to its previous value!" msgstr "" #: include/utils/class_timezone.inc:47 #, fuzzy, php-format msgid "The configured timezone %s is not valid!" msgstr "" "Не удается прочитать файл настройки GOsa %s/gosa.conf. Операция прервана." #: include/utils/class_xml.inc:37 include/class_tabs.inc:287 #: include/class_configRegistry.inc:689 include/class_configRegistry.inc:704 #: include/class_configRegistry.inc:719 include/class_configRegistry.inc:734 #: include/class_configRegistry.inc:750 include/class_configRegistry.inc:755 #: include/class_configRegistry.inc:775 include/class_configRegistry.inc:780 #: include/class_configRegistry.inc:797 include/class_configRegistry.inc:802 #: include/class_configRegistry.inc:820 include/class_configRegistry.inc:825 #: include/class_configRegistry.inc:841 include/class_configRegistry.inc:856 #: include/class_configRegistry.inc:871 include/functions.inc:2516 #: include/functions.inc:2520 include/functions.inc:2526 #: include/functions.inc:2550 include/class_jsonRPC.inc:37 #: setup/setup_checks.tpl:27 setup/setup_checks.tpl:68 html/password.php:315 #: plugins/personal/posix/class_posixAccount.inc:692 #: plugins/personal/posix/class_posixAccount.inc:815 #: plugins/admin/groups/class_group.inc:871 #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "Warning" msgstr "Предупреждение" #: include/utils/class_xml.inc:43 include/functions.inc:482 #: html/password.php:61 html/main.php:170 #: plugins/admin/departments/class_department.inc:439 #, fuzzy msgid "Fatal error" msgstr "Терминал-сервер" #: include/utils/class_xml.inc:51 #, fuzzy msgid "XML error" msgstr "Ошибка LDAP:" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort ascending" msgstr "" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort descending" msgstr "" #: include/class_listing.inc:324 #, fuzzy msgid "Select all" msgstr "Удалить" #: include/class_listing.inc:584 #, fuzzy msgid "created by" msgstr "Создать" #: include/class_listing.inc:1081 include/class_listing.inc:1083 #: include/class_ItemSelector.inc:247 include/class_baseSelector.inc:188 #: include/class_releaseSelector.inc:214 #, fuzzy msgid "Root" msgstr "Перезагрузить" #: include/class_listing.inc:1088 include/class_listing.inc:1090 msgid "Go to preceding level" msgstr "" #: include/class_listing.inc:1096 include/class_listing.inc:1098 msgid "Go to current users level" msgstr "" #: include/class_listing.inc:1103 msgid "Reload list" msgstr "" #: include/class_listing.inc:1207 #: plugins/addons/propertyEditor/property-list.xml:97 #: plugins/admin/groups/group-list.xml:62 #: plugins/admin/ogroups/ogroup-list.xml:62 plugins/admin/acl/acl-list.xml:65 #: plugins/admin/departments/dep-list.xml:87 #: plugins/admin/users/user-list.xml:78 msgid "Actions" msgstr "Действия" #: include/class_listing.inc:1477 #, fuzzy msgid "Copy" msgstr "Компания" #: include/class_listing.inc:1483 #, fuzzy msgid "Cut" msgstr "Выполнить" #: include/class_listing.inc:1491 include/class_listing.inc:1493 #: include/class_CopyPasteHandler.inc:571 #, fuzzy msgid "Paste" msgstr "Дата" #: include/class_listing.inc:1516 #, fuzzy msgid "Cut this entry" msgstr "Редактиовать объект" #: include/class_listing.inc:1525 #, fuzzy msgid "Copy this entry" msgstr "Редактиовать объект" #: include/class_listing.inc:1557 include/class_listing.inc:1559 #, fuzzy msgid "Restore snapshots" msgstr "Создать настройки запись эл. почты" #: include/class_listing.inc:1573 #, fuzzy msgid "Export list" msgstr "Экспорт" #: include/class_listing.inc:1607 include/class_SnapShotDialog.inc:142 msgid "Restore snapshot" msgstr "" #: include/class_listing.inc:1615 #, fuzzy msgid "Create new snapshot for this object" msgstr "Объект группы" #: include/class_userFilter.inc:55 #: ihtml/themes/default/userFilterEditor.tpl:27 #, fuzzy msgid "Parent filter" msgstr "Параметры загрузки" #: include/class_userFilter.inc:55 include/class_userFilter.inc:150 #: include/class_SnapShotDialog.inc:55 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:236 #: include/class_userFilterEditor.inc:240 #: ihtml/themes/default/userFilterEditor.tpl:11 setup/setup_migrate.tpl:43 #: setup/setup_migrate.tpl:45 setup/setup_feedback.tpl:16 #: plugins/personal/posix/trustSelect/trust-list.xml:46 #: plugins/personal/posix/groupSelect/group-list.xml:33 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/personal/generic/class_user.inc:1316 #: plugins/personal/generic/class_user.inc:1334 #: plugins/personal/generic/class_user.inc:1376 #: plugins/personal/generic/class_user.inc:1860 #: plugins/addons/propertyEditor/property-list.xml:65 #: plugins/admin/groups/class_group.inc:925 #: plugins/admin/groups/class_group.inc:936 #: plugins/admin/groups/class_group.inc:938 #: plugins/admin/groups/class_group.inc:955 #: plugins/admin/groups/class_group.inc:969 #: plugins/admin/groups/class_group.inc:976 #: plugins/admin/groups/class_group.inc:1076 #: plugins/admin/groups/group-list.xml:41 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:49 #: plugins/admin/ogroups/ogroup-list.xml:41 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:97 #: plugins/admin/ogroups/class_ogroup.inc:157 #: plugins/admin/ogroups/class_ogroup.inc:683 #: plugins/admin/ogroups/class_ogroup.inc:698 #: plugins/admin/ogroups/class_ogroup.inc:702 #: plugins/admin/ogroups/class_ogroup.inc:885 plugins/admin/acl/acl_role.tpl:7 #: plugins/admin/acl/acl-list.xml:49 plugins/admin/acl/paste_role.tpl:4 #: plugins/admin/acl/class_aclRole.inc:741 #: plugins/admin/acl/class_aclRole.inc:753 #: plugins/admin/acl/class_aclRole.inc:763 #: plugins/admin/departments/class_countryGeneric.inc:47 #: plugins/admin/departments/class_countryGeneric.inc:49 #: plugins/admin/departments/class_countryGeneric.inc:54 #: plugins/admin/departments/class_countryGeneric.inc:56 #: plugins/admin/departments/class_countryGeneric.inc:58 #: plugins/admin/departments/class_department.inc:355 #: plugins/admin/departments/class_department.inc:357 #: plugins/admin/departments/class_department.inc:362 #: plugins/admin/departments/class_department.inc:369 #: plugins/admin/departments/class_department.inc:373 #: plugins/admin/departments/class_domain.inc:47 #: plugins/admin/departments/class_domain.inc:49 #: plugins/admin/departments/class_domain.inc:54 #: plugins/admin/departments/class_domain.inc:56 #: plugins/admin/departments/class_domain.inc:58 #: plugins/admin/departments/class_domain.inc:90 #: plugins/admin/departments/class_organizationGeneric.inc:79 #: plugins/admin/departments/class_organizationGeneric.inc:81 #: plugins/admin/departments/class_organizationGeneric.inc:86 #: plugins/admin/departments/class_organizationGeneric.inc:88 #: plugins/admin/departments/class_organizationGeneric.inc:90 #: plugins/admin/departments/class_localityGeneric.inc:48 #: plugins/admin/departments/class_localityGeneric.inc:50 #: plugins/admin/departments/class_localityGeneric.inc:55 #: plugins/admin/departments/class_localityGeneric.inc:57 #: plugins/admin/departments/class_localityGeneric.inc:59 #: plugins/admin/departments/class_dcObject.inc:47 #: plugins/admin/departments/class_dcObject.inc:49 #: plugins/admin/departments/class_dcObject.inc:54 #: plugins/admin/departments/class_dcObject.inc:56 #: plugins/admin/departments/class_dcObject.inc:58 #: plugins/admin/departments/class_dcObject.inc:90 #: plugins/admin/users/class_userManagement.inc:549 #: plugins/admin/users/class_userManagement.inc:597 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Name" msgstr "Фамилия" #: include/class_userFilter.inc:55 include/class_SnapShotDialog.inc:174 #: include/class_acl.inc:255 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:245 #: ihtml/themes/default/userFilterEditor.tpl:19 #: plugins/personal/posix/trustSelect/trust-list.xml:53 #: plugins/personal/posix/groupSelect/group-list.xml:40 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/admin/groups/class_group.inc:1077 #: plugins/admin/groups/generic.tpl:24 plugins/admin/groups/group-list.xml:49 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:49 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:105 #: plugins/admin/ogroups/generic.tpl:15 #: plugins/admin/ogroups/class_ogroup.inc:887 #: plugins/admin/acl/acl_role.tpl:17 plugins/admin/acl/acl-list.xml:57 #: plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/acl/class_aclRole.inc:743 #: plugins/admin/departments/dcObject.tpl:19 #: plugins/admin/departments/country.tpl:19 #: plugins/admin/departments/class_countryGeneric.inc:63 #: plugins/admin/departments/class_countryGeneric.inc:92 #: plugins/admin/departments/dep-list.xml:79 #: plugins/admin/departments/organization.tpl:19 #: plugins/admin/departments/class_department.inc:365 #: plugins/admin/departments/class_department.inc:675 #: plugins/admin/departments/class_domain.inc:63 #: plugins/admin/departments/class_domain.inc:91 #: plugins/admin/departments/class_organizationGeneric.inc:95 #: plugins/admin/departments/class_organizationGeneric.inc:123 #: plugins/admin/departments/generic.tpl:19 #: plugins/admin/departments/locality.tpl:19 #: plugins/admin/departments/class_localityGeneric.inc:64 #: plugins/admin/departments/class_localityGeneric.inc:92 #: plugins/admin/departments/class_dcObject.inc:63 #: plugins/admin/departments/class_dcObject.inc:91 #: plugins/admin/departments/domain.tpl:19 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Description" msgstr "Описание" #: include/class_userFilter.inc:55 plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/departments/organization.tpl:27 #: plugins/admin/departments/class_department.inc:676 #: plugins/admin/departments/class_organizationGeneric.inc:124 #: plugins/admin/departments/generic.tpl:27 msgid "Category" msgstr "Категория" #: include/class_userFilter.inc:55 ihtml/themes/default/acl.tpl:15 #: ihtml/themes/default/acl.tpl:16 msgid "Options" msgstr "Параметры" #: include/class_userFilter.inc:275 include/functions.inc:511 #: include/functions.inc:546 include/functions.inc:554 #: include/functions.inc:600 include/functions.inc:879 #: include/functions.inc:928 include/functions.inc:985 #: include/functions.inc:1035 include/functions.inc:3304 #: include/class_ldap.inc:870 include/class_ldap.inc:1328 #: include/class_config.inc:367 include/class_acl.inc:1396 #: include/class_acl.inc:1492 include/class_SnapshotHandler.inc:123 #: include/class_SnapshotHandler.inc:280 include/class_SnapshotHandler.inc:329 #: include/class_SnapshotHandler.inc:333 include/class_SnapshotHandler.inc:346 #: include/class_SnapshotHandler.inc:380 include/class_SnapshotHandler.inc:435 #: include/class_SnapshotHandler.inc:500 include/class_SnapshotHandler.inc:515 #: setup/class_setupStep_Migrate.inc:461 setup/class_setupStep_Migrate.inc:814 #: html/index.php:271 plugins/personal/posix/class_posixAccount.inc:570 #: plugins/personal/posix/class_posixAccount.inc:832 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:253 #: plugins/personal/generic/class_user.inc:730 #: plugins/personal/generic/class_user.inc:1099 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:204 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:269 #: plugins/admin/groups/class_group.inc:619 #: plugins/admin/groups/class_group.inc:895 #: plugins/admin/ogroups/class_ogroup.inc:782 #: plugins/admin/ogroups/class_ogroup.inc:799 #: plugins/admin/acl/class_aclRole.inc:602 #: plugins/admin/acl/class_aclRole.inc:642 #: plugins/admin/acl/class_aclRole.inc:656 #: plugins/admin/departments/class_department.inc:285 #: plugins/admin/departments/class_department.inc:482 #: plugins/admin/departments/class_department.inc:759 #: plugins/admin/departments/class_department.inc:790 #: plugins/generic/references/class_reference.inc:97 #, fuzzy msgid "LDAP error" msgstr "Ошибка LDAP:" #: include/class_log.inc:87 #, fuzzy, php-format msgid "Logging failed: %s" msgstr "Служба печати" #: include/class_log.inc:102 #, fuzzy, php-format msgid "Invalid option %s specified!" msgstr "Значение поля \"Имя\" содержит недопустимые символы." #: include/class_log.inc:106 #, fuzzy msgid "Specified 'objectType' is empty or invalid!" msgstr "Указанное имя уже используется." #: include/class_multi_plug.inc:362 #, fuzzy msgid "You are currently editing multiple entries." msgstr "У вас недостаточно прав для удаления этого подразделения." #: include/class_multi_plug.inc:394 #, fuzzy msgid "Reset password" msgstr "Изменить пароль" #: include/class_multi_plug.inc:394 #, fuzzy msgid "The user password has been reset. Please set a new password!" msgstr "У вас недостаточно прав для смены своего пароля." #: include/class_tabs.inc:72 #, fuzzy, php-format msgid "No plugin definition for %s found: please check the configuration file!" msgstr "Не удается подключиться к базе журналов, отчеты показаны не будут!" #: include/class_tabs.inc:287 #, php-format msgid "Delete process has been canceled by plugin %s: %s" msgstr "" #: include/class_tabs.inc:420 include/class_acl.inc:1428 #: include/class_acl.inc:1429 include/class_acl.inc:1435 #: plugins/admin/acl/acl-list.xml:15 plugins/admin/acl/tabs_acl.inc:28 #: plugins/admin/acl/class_aclRole.inc:770 msgid "ACL" msgstr "Доступ" #: include/class_tabs.inc:425 msgid "References" msgstr "Ссылки" #: include/functions_helpviewer.inc:45 #, fuzzy, php-format msgid "XML error in guide.xml: %s at line %s" msgstr "Ошибка XML в gosa.conf: %s в строке %d" #: include/functions_helpviewer.inc:88 msgid "No help available for this plug-in." msgstr "" #: include/functions_helpviewer.inc:97 html/helpviewer.php:193 msgid "previous" msgstr "" #: include/functions_helpviewer.inc:101 html/helpviewer.php:197 #, fuzzy msgid "next" msgstr "текст" #: include/functions_helpviewer.inc:388 #, php-format msgid "%s results for your search with the keyword %s" msgstr "" #: include/functions_helpviewer.inc:461 #, php-format msgid "%s%% hit rate in file %s" msgstr "" #: include/class_msg_dialog.inc:124 msgid "Please fix the above error and reload the page." msgstr "" #: include/class_plugin.inc:581 msgid "" "The current object has been altered while beeing edited. If you save this " "entry, changes that have been made by others will be discarded!" msgstr "" #: include/class_plugin.inc:1411 #, php-format msgid "Changing ACL DN from %s to %s" msgstr "" #: include/class_SnapShotDialog.inc:55 #, fuzzy msgid "Date" msgstr "Дата" #: include/class_SnapShotDialog.inc:94 #, fuzzy, php-format msgid "You are about to delete the snapshot %s." msgstr "Вы собираетесь удалить группу \"%s\"." #: include/class_SnapShotDialog.inc:143 #, fuzzy msgid "Delete snapshot" msgstr "Создать настройки запись эл. почты" #: include/class_SnapShotDialog.inc:144 include/class_SnapShotDialog.inc:162 msgid "Y-m-d, H:i:s" msgstr "" #: include/class_pathNavigator.inc:86 #, fuzzy msgid "Welcome to GOsa" msgstr "Добро пожаловать в раздел настройки GOsa!" #: include/password-methods/class_password-methods.inc:339 msgid "Cannot find a suitable password method for the current hash!" msgstr "" #: include/class_sortableListing.inc:234 #, fuzzy msgid "Sortable list" msgstr "Экспорт" #: include/class_sortableListing.inc:239 #, fuzzy msgid "Edit this entry" msgstr "Редактиовать объект" #: include/class_sortableListing.inc:244 #, fuzzy msgid "Delete this entry" msgstr "Удалить" #: include/class_configRegistry.inc:194 #: plugins/personal/generic/class_user.inc:273 #: plugins/personal/generic/class_user.inc:1898 #, fuzzy msgid "unknown" msgstr "состояние неизвестно" #: include/class_configRegistry.inc:197 #, php-format msgid "%s has version %s but %s is required!" msgstr "" #: include/class_configRegistry.inc:240 setup/class_setupStep_Schema.inc:96 msgid "The following object classes are missing:" msgstr "" #: include/class_configRegistry.inc:247 setup/class_setupStep_Schema.inc:99 msgid "The following object classes are outdated:" msgstr "" #: include/class_configRegistry.inc:253 msgid "" "Plugins that require one or more of the object classes above will be " "disabled until the object classes get updated." msgstr "" #: include/class_configRegistry.inc:255 #, fuzzy msgid "Schema validation error" msgstr "Рабочая станция Windows" #: include/class_configRegistry.inc:690 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a bool value!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/class_configRegistry.inc:705 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a string!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/class_configRegistry.inc:720 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be numeric!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/class_configRegistry.inc:735 #, fuzzy, php-format msgid "The path %s specified for %s:%s is invalid!" msgstr "Значение поля \"UID\" некорректно." #: include/class_configRegistry.inc:751 include/class_configRegistry.inc:798 #, fuzzy, php-format msgid "The folder %s specified for %s:%s does not exists!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/class_configRegistry.inc:756 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not readable!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/class_configRegistry.inc:776 include/class_configRegistry.inc:781 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not writeable!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/class_configRegistry.inc:803 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not writeable!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/class_configRegistry.inc:821 #, fuzzy, php-format msgid "The file %s specified for %s:%s does not exists!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/class_configRegistry.inc:826 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not readable!" msgstr "" "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s\"." #: include/class_configRegistry.inc:842 #, fuzzy, php-format msgid "The command %s specified for %s:%s is invalid!" msgstr "Значение поля \"UID\" некорректно." #: include/class_configRegistry.inc:857 #, fuzzy, php-format msgid "The DN %s specified for %s:%s is invalid!" msgstr "Значение поля \"UID\" некорректно." #: include/class_configRegistry.inc:872 #, fuzzy, php-format msgid "The RDN %s specified for %s:%s is invalid!" msgstr "Значение поля \"UID\" некорректно." #: include/php_setup.inc:114 msgid "Generating this page caused the PHP interpreter to raise some errors!" msgstr "" #: include/php_setup.inc:117 #, fuzzy msgid "Send bug report" msgstr "Отправитель" #: include/php_setup.inc:121 msgid "Toggle details" msgstr "" #: include/php_setup.inc:130 #, fuzzy msgid "PHP error" msgstr "Ошибка LDAP:" #: include/php_setup.inc:149 msgid "class" msgstr "" #: include/php_setup.inc:155 #, fuzzy msgid "function" msgstr "Действие" #: include/php_setup.inc:160 #, fuzzy msgid "static" msgstr "Состояние" #: include/php_setup.inc:164 #, fuzzy msgid "method" msgstr "Почтовые настройки" #: include/php_setup.inc:197 msgid "Traceback" msgstr "" #: include/php_setup.inc:198 #, fuzzy msgid "File" msgstr "Файлы" #: include/php_setup.inc:198 #, fuzzy msgid "Line" msgstr "в" #: include/php_setup.inc:198 include/class_acl.inc:293 #: plugins/admin/acl/class_aclRole.inc:182 msgid "Type" msgstr "Тип" #: include/php_setup.inc:199 #, fuzzy msgid "Arguments" msgstr "подразделения" #: include/class_certificate.inc:73 #, fuzzy msgid "Certificate is empty!" msgstr "Сертификаты" #: include/class_certificate.inc:100 msgid "Cannot load certificate: only PEM and DER are supported!" msgstr "" #: include/class_certificate.inc:115 #, fuzzy msgid "Cannot extract information for non PEM certificates!" msgstr "Не удается создать квоту IMAP. Ответ сервера: \"%s\"." #: include/class_certificate.inc:219 #, fuzzy msgid "No valid certificate loaded!" msgstr "Изменить сертификаты" #: include/class_session.inc:76 include/class_session.inc:101 #: include/class_session.inc:127 #, fuzzy msgid "Requested channel does not exist!" msgstr "" "Имя/идентификатор пользователя не уникальны. Проверьте свою базу данных LDAP." #: include/functions.inc:151 #, php-format msgid "Fatal error: no class locations defined - please run %s to fix this" msgstr "" #: include/functions.inc:158 #, php-format msgid "Fatal error: cannot instantiate class %s - try running %s to fix this" msgstr "" #: include/functions.inc:483 #, fuzzy, php-format msgid "Error while connecting to LDAP: %s" msgstr "Ошибка при подключении к LDAP-серверу. Ответ сервера: \"%s\"." #: include/functions.inc:554 include/functions.inc:640 #, fuzzy msgid "User ID is not unique!" msgstr "" "Имя/идентификатор пользователя не уникальны. Проверьте свою базу данных LDAP." #: include/functions.inc:854 include/functions.inc:972 msgid "Error while locking entry!" msgstr "" #: include/functions.inc:864 #, fuzzy, php-format msgid "Cannot store lock information in LDAP!" msgstr "Не удается создать квоту IMAP. Ответ сервера: \"%s\"." #: include/functions.inc:864 #, fuzzy, php-format msgid "Error: %s" msgstr "Домашняя страница" #: include/functions.inc:1294 #, fuzzy, php-format msgid "The current size limit of %d entries is exceeded!" msgstr "Найдено более %d объектов." #: include/functions.inc:1296 #, php-format msgid "Set the size limit to %s" msgstr "" #: include/functions.inc:1308 plugins/personal/generic/generic.tpl:218 msgid "Configure" msgstr "Настроить" #: include/functions.inc:1313 #, fuzzy msgid "list is incomplete" msgstr "не полный" #: include/functions.inc:1663 #, fuzzy msgid "Continue anyway" msgstr "Продолжить" #: include/functions.inc:1665 #, fuzzy msgid "Edit anyway" msgstr "Редактиовать объект" #: include/functions.inc:1668 msgid "These entries are currently locked:" msgstr "" #: include/functions.inc:1909 msgid "Entries per page" msgstr "" #: include/functions.inc:2087 #, fuzzy, php-format msgid "GOsa %s" msgstr "Служба печати" #: include/functions.inc:2094 #, php-format msgid "GOsa %s snapshot (Rev %s)" msgstr "" #: include/functions.inc:2099 #, php-format msgid "GOsa development snapshot (Rev %s)" msgstr "" #: include/functions.inc:2195 #, php-format msgid "File %s cannot be deleted!" msgstr "" #: include/functions.inc:2225 include/functions.inc:2245 #, fuzzy msgid "Cannot write revision file!" msgstr "Удалить" #: include/functions.inc:2516 include/functions.inc:2520 #: include/functions.inc:2526 msgid "'baseIdHook' is not available. Using default base!" msgstr "" #: include/functions.inc:2550 #, fuzzy msgid "" "Cannot read schema information from LDAP. Schema validation is not possible!" msgstr "Не удается получить информацию о схемах. Проверка схем невозможна!" #: include/functions.inc:2576 msgid "This class is used to make users appear in GOsa." msgstr "" #: include/functions.inc:2583 msgid "" "This class is used to lock entries in order to prevent multiple edits at a " "time." msgstr "" #: include/functions.inc:2628 #, fuzzy, php-format msgid "Required object class %s is missing!" msgstr "Список подразделений" #: include/functions.inc:2631 #, php-format msgid "Optional object class %s is missing!" msgstr "" #: include/functions.inc:2636 #, fuzzy, php-format msgid "Wrong version of required object class %s (!=%s) detected!" msgstr "Список подразделений" #: include/functions.inc:2639 #, php-format msgid "Class available" msgstr "" #: include/functions.inc:2661 msgid "" "RFC2307bis schema is enabled, but the current LDAP configuration does not " "support it!" msgstr "" #: include/functions.inc:2662 msgid "" "To use RFC2307bis groups, the objectClass 'posixGroup' must be AUXILIARY." msgstr "" #: include/functions.inc:2666 msgid "" "RFC2307bis schema is disabled, but the current LDAP configuration supports " "it!" msgstr "" #: include/functions.inc:2667 msgid "To correct this, the objectClass 'posixGroup' must be STRUCTURAL." msgstr "" #: include/functions.inc:2692 msgid "German" msgstr "Немецкий" #: include/functions.inc:2693 msgid "French" msgstr "Французский" #: include/functions.inc:2694 msgid "Italian" msgstr "" #: include/functions.inc:2695 msgid "Spanish" msgstr "Испанский" #: include/functions.inc:2696 msgid "English" msgstr "Английский" #: include/functions.inc:2697 msgid "Dutch" msgstr "Датский" #: include/functions.inc:2698 #, fuzzy msgid "Polish" msgstr "Английский" #: include/functions.inc:2699 msgid "Brazilian Portuguese" msgstr "" #: include/functions.inc:2701 #, fuzzy msgid "Chinese" msgstr "сброс" #: include/functions.inc:2702 #, fuzzy msgid "Vietnamese" msgstr "Имя" #: include/functions.inc:2703 msgid "Russian" msgstr "Русский" #: include/functions.inc:2896 #, fuzzy msgid "Cannot detect password hash!" msgstr "Невозможно выбрать базу данных!" #: include/functions.inc:2911 include/functions.inc:3085 msgid "Cannot generate SAMBA hash!" msgstr "" #: include/functions.inc:2942 include/functions.inc:3017 #, php-format msgid "Pre-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:2973 #, fuzzy msgid "Password change failed!" msgstr "Сменить пароль" #: include/functions.inc:2981 #, php-format msgid "Post-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:3100 #, php-format msgid "Generating SAMBA hash by running %s failed: check %s!" msgstr "" #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3430 include/functions.inc:3442 #: include/functions.inc:3446 include/functions.inc:3461 #: include/functions.inc:3470 #, fuzzy msgid "Cannot allocate free ID:" msgstr "Слишком много пользователей, невозможно создать идентификатор!" #: include/functions.inc:3378 msgid "unknown idAllocation method!" msgstr "" #: include/functions.inc:3392 #, php-format msgid "%sPoolMin >= %sPoolMax!" msgstr "" #: include/functions.inc:3422 #, fuzzy msgid "Cannot create sambaUnixIdPool entry!" msgstr "Список подразделений" #: include/functions.inc:3430 msgid "sambaUnixIdPool is not unique!" msgstr "" #: include/functions.inc:3442 include/functions.inc:3446 msgid "no ID available!" msgstr "" #: include/functions.inc:3470 msgid "maximum number of tries exceeded!" msgstr "" #: include/functions.inc:3530 #, fuzzy msgid "Cannot allocate free ID!" msgstr "Слишком много пользователей, невозможно создать идентификатор!" #: include/class_filter.inc:158 include/class_filter.inc:228 #: ihtml/themes/default/help.tpl:21 setup/setup_ldap.tpl:15 msgid "Search" msgstr "Поиск" #: include/class_filter.inc:226 #, fuzzy msgid "Search filter" msgstr "Параметры загрузки" #: include/class_filter.inc:444 #, fuzzy msgid "Search in subtrees" msgstr "Искать в поддеревьях" #: include/class_filter.inc:449 #, fuzzy msgid "Edit filters" msgstr "Изменить сертификаты" #: include/class_ldap.inc:328 include/class_ldap.inc:365 msgid "Performance warning" msgstr "" #: include/class_ldap.inc:328 include/class_ldap.inc:365 #, php-format msgid "LDAP performance is poor: last query took %.2fs!" msgstr "" #: include/class_ldap.inc:807 #, php-format msgid "Cannot automatically create subtrees with RDN %s: no object class found" msgstr "" #: include/class_ldap.inc:858 #, php-format msgid "Cannot automatically create subtrees with RDN %s: not supported" msgstr "" #: include/class_ldap.inc:945 #, fuzzy, php-format msgid "while operating on %s using LDAP server %s" msgstr "Ошибка при подключении к LDAP-серверу. Ответ сервера: \"%s\"." #: include/class_ldap.inc:947 #, fuzzy, php-format msgid "while operating on LDAP server %s" msgstr "Ошибка при подключении к LDAP-серверу. Ответ сервера: \"%s\"." #: include/class_ldap.inc:1000 #, php-format msgid "Command line programm %s is missing!" msgstr "" #: include/class_ldap.inc:1161 #, php-format msgid "" "Invalid DN %s: block to be imported should start with 'dn: ...' in line %s" msgstr "" #: include/class_ldap.inc:1190 #, php-format msgid "Error while importing DN %s: please check LDIF from line %s on!" msgstr "" #: include/class_core.inc:113 include/class_core.inc:119 #: plugins/generic/references/class_aclResolver.inc:303 #, fuzzy msgid "All" msgstr "Все" #: include/class_core.inc:114 #, fuzzy msgid "All objects" msgstr "Включаемые объекты" #: include/class_core.inc:132 #, fuzzy msgid "Traditional" msgstr "Терминалы" #: include/class_core.inc:132 msgid "Use samba pool" msgstr "" #: include/class_core.inc:164 include/class_core.inc:167 #, fuzzy msgid "hours" msgstr "час" #: include/class_core.inc:184 #, fuzzy msgid "None" msgstr "нет" #: include/class_core.inc:188 setup/class_setupStep_Language.inc:47 #, fuzzy msgid "Automatic" msgstr "автоматически" #: include/class_core.inc:200 #, fuzzy msgid "User value" msgstr "Имя пользователя" #: include/class_core.inc:209 #, fuzzy msgid "Core" msgstr "Выбрать" #: include/class_core.inc:210 #, fuzzy msgid "GOsa core plugin" msgstr "Почтовые настройки пользователя" #: include/class_core.inc:238 msgid "" "Enables htaccess instead of LDAP authentication. This can be used to enable " "other authentication mechanisms like Kerberos for the GOsa login." msgstr "" #: include/class_core.inc:248 msgid "Enables the usage statistics module." msgstr "" #: include/class_core.inc:258 msgid "Database file to be used by the usage statistics module." msgstr "" #: include/class_core.inc:268 msgid "" "Enables event logging in GOsa. Setting it to 'On' make GOsa log every action " "a user performs via syslog. If you use this in combination with rsyslog and " "configure it to MySQL logging, you can browse all events in GOsa." msgstr "" #: include/class_core.inc:279 msgid "" "Enables a status bar on the bottom of lists displaying a summary of type and " "number of elements in the list." msgstr "" #: include/class_core.inc:289 msgid "Specify the minimum length for newly entered passwords." msgstr "" #: include/class_core.inc:299 msgid "" "Specify the minimum number of characters that have to differ between old and " "newly entered passwords." msgstr "" #: include/class_core.inc:309 msgid "" "Command to generate password proposals. If a command has been specified, the " "user can decide whether to use an automatic password or a manually specified " "one." msgstr "" #: include/class_core.inc:319 msgid "" "Enable display of PHP errors on the top of the page. Disable this feature in " "production environments to avoid the exposure of sensitive data." msgstr "" #: include/class_core.inc:319 #, fuzzy, php-format msgid "Related option" msgstr "Выберите чтобы посмотреть рабочие станции" #: include/class_core.inc:329 msgid "" "Show messages that may assist plugin development. Be aware that this option " "may produce some ACL related false error messages!" msgstr "" #: include/class_core.inc:340 msgid "" "Enable LDAP schema verification during login. The recommended setting is " "'On' because it enables efficient methods to create missing subtrees in the " "LDAP." msgstr "" #: include/class_core.inc:350 msgid "Enable copy and paste for most objects managed by GOsa." msgstr "" #: include/class_core.inc:360 msgid "Enable PHP security checks for disabled register_global settings." msgstr "" #: include/class_core.inc:370 msgid "Enable automatic redirection to HTTPS based administration." msgstr "" #: include/class_core.inc:380 msgid "Enable logging of detailed information of LDAP operations." msgstr "" #: include/class_core.inc:390 #, fuzzy msgid "Enable LDAP referral chasing." msgstr "Удалить параметры" #: include/class_core.inc:400 msgid "" "Specify LDAP element filter limit. If the limit is not 0, GOsa speeds up " "group queries by putting several queries into a single query. This is known " "to produce problems on some LDAP servers (i.e. Sun DS) and needs to be " "lowered or disabled." msgstr "" #: include/class_core.inc:410 msgid "" "Specify the maximum number of entries GOsa will request from an LDAP server. " "A warning is displayed if this limit is exceeded." msgstr "" #: include/class_core.inc:420 msgid "Disable checks for LDAP size limits." msgstr "" #: include/class_core.inc:430 msgid "Enable warnings for non encrypted connections." msgstr "" #: include/class_core.inc:440 msgid "Enable compression for PPD files." msgstr "" #: include/class_core.inc:451 msgid "" "DN of user with ACL checks disabled. This should only be used to restore " "lost administrative ACLs." msgstr "" #: include/class_core.inc:462 msgid "Storage path for PPD files." msgstr "" #: include/class_core.inc:472 msgid "" "Number of seconds a LDAP query is allowed to take until GOsa aborts the " "request." msgstr "" #: include/class_core.inc:482 msgid "Enables storing of user filters in browser cookies." msgstr "" #: include/class_core.inc:492 msgid "Enables sending of compressed web page content." msgstr "" #: include/class_core.inc:502 msgid "" "Allows to modify uid-proposals when creating a new user from a user-template." msgstr "" #: include/class_core.inc:513 msgid "LDAP attribute which is used to detect changes." msgstr "" #: include/class_core.inc:524 msgid "" "ISO language code which is used to override the automatic language detection." msgstr "" #: include/class_core.inc:535 msgid "CSS and template theme to be used." msgstr "" #: include/class_core.inc:545 msgid "" "Number of seconds after an inactive session expires. This may be overridden " "by some systems php.ini/crontab mechanism." msgstr "" #: include/class_core.inc:555 #, fuzzy msgid "Template engine compile directory." msgstr "Домашний каталог" #: include/class_core.inc:565 #, php-format msgid "" "Logical AND of the integer values below that controls the debug output on " "every page load: %s" msgstr "" #: include/class_core.inc:586 msgid "" "Command to create Samba NT/LM hashes. Required for password synchronization " "if you don't use supplementary services." msgstr "" #: include/class_core.inc:597 msgid "Default hash to be used for newly created user passwords." msgstr "" #: include/class_core.inc:606 msgid "" "Enable checking for the presence of problematic unicode characters in " "passwords." msgstr "" #: include/class_core.inc:617 msgid "" "Specify whether 'cn' or 'uid' style user DNs are generated. For more " "sophisticated control use the 'accountRDN' setting." msgstr "" #: include/class_core.inc:627 msgid "Location component for user storage inside of departments." msgstr "" #: include/class_core.inc:637 msgid "Location component for group storage inside of departments." msgstr "" #: include/class_core.inc:647 msgid "" "Count base for group IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:657 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:667 msgid "" "Lowest assignable group ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:677 msgid "" "Highest assignable group ID for use with the idAllocationMethod set to " "'pool'." msgstr "" #: include/class_core.inc:687 msgid "" "Lowest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:697 msgid "" "Highest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:707 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'baseIdHook' " "setting." msgstr "" #: include/class_core.inc:717 msgid "Connection URL for use with the gosa-ng service." msgstr "" #: include/class_core.inc:727 msgid "User name used to connect to the 'gosaRpcServer'." msgstr "" #: include/class_core.inc:737 #, fuzzy msgid "Password used to connect to the 'gosaRpcServer'." msgstr "Невозможно подключиться к серверу базы данных!" #: include/class_core.inc:747 msgid "Connection URI for use with the gosa-si service (obsolete)." msgstr "" #: include/class_core.inc:757 msgid "Number of seconds after a gosa-si connection is considered 'dead'." msgstr "" #: include/class_core.inc:768 msgid "User attribute which is used for log in." msgstr "" #: include/class_core.inc:779 #, fuzzy msgid "Local time zone." msgstr "Местоположение" #: include/class_core.inc:789 msgid "" "Enable tagging of administrative units. This can be used in conjunction with " "ACLs (obsolete)." msgstr "" #: include/class_core.inc:799 msgid "Enable the use of {sasl} instead of {kerberos} for user realms." msgstr "" #: include/class_core.inc:809 msgid "" "Enable RFC 2307bis style groups. This combines the use of 'member' and " "'memberUid' attributes." msgstr "" #: include/class_core.inc:819 msgid "" "Adjusts the user DN generation to include the users personal title (only in " "conjunction with accountPrimaryAttribute)." msgstr "" #: include/class_core.inc:829 msgid "Script to be called for finding the next free id for groups or users." msgstr "" #: include/class_core.inc:838 msgid "" "Descriptive string for the automatic ID generator. Please read the FAQ file " "for more information." msgstr "" #: include/class_core.inc:848 msgid "Enable strict checking for user IDs and group names." msgstr "" #: include/class_core.inc:858 msgid "" "Lowest assignable user or group ID. Only active if idAllocationMethod is set " "to 'traditional'." msgstr "" #: include/class_core.inc:869 msgid "Attribute to be used for primary mail addresses." msgstr "" #: include/class_core.inc:879 msgid "Namespace used for shared folders." msgstr "" #: include/class_core.inc:889 msgid "" "Namespace rule to create user folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:899 msgid "" "Namespace rule to create folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:909 msgid "Seconds after an IMAP connection is considered dead." msgstr "" #: include/class_core.inc:920 msgid "Class name of the mail method to be used." msgstr "" #: include/class_core.inc:930 msgid "" "Enable slashes instead of dots as a name space separator for Cyrus IMAP." msgstr "" #: include/class_core.inc:940 msgid "" "Directory to store vacation templates. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:950 #, fuzzy msgid "Enable TLS for LDAP connections." msgstr "Отключение" #: include/class_core.inc:960 msgid "Enable IVBB used by german authorities." msgstr "" #: include/class_core.inc:970 msgid "" "Maintain sambaIdmapEntry objects to improve performance on some Samba " "versions." msgstr "" #: include/class_core.inc:980 msgid "Enable checks to determine whether an account is expired or not." msgstr "" #: include/class_core.inc:990 msgid "" "String containing the SID for Samba setups without the Domain object in LDAP." msgstr "" #: include/class_core.inc:1000 msgid "" "String containing the RID base for Samba setups without the Domain object in " "LDAP." msgstr "" #: include/class_core.inc:1010 #, fuzzy msgid "Enable manual object snapshots." msgstr "Объект группы" #: include/class_core.inc:1020 msgid "Base DN for snapshot storage." msgstr "" #: include/class_core.inc:1030 #, fuzzy msgid "DN of the snapshot administrator." msgstr "Администраторы домена" #: include/class_core.inc:1040 msgid "Password of the snapshot administrator." msgstr "" #: include/class_core.inc:1051 msgid "" "Method for user and group ID generation. Note: only the 'traditional' method " "is safe due to PHP limitations." msgstr "" #: include/class_core.inc:1060 msgid "URI of server to be used for snapshots." msgstr "" #: include/class_core.inc:1069 msgid "Enable transliteration of cyrillic characters for UID generation." msgstr "" #: include/class_config.inc:168 #, php-format msgid "XML error in gosa.conf: %s at line %d" msgstr "Ошибка XML в gosa.conf: %s в строке %d" #: include/class_config.inc:367 msgid "Cannot bind to LDAP!" msgstr "" #: include/class_config.inc:713 #, fuzzy msgid "sambaSID and/or sambaRidBase missing in the configuration!" msgstr "В вашем файле настройки отсутствуют значения SID и/или RIDBASE!" #: include/class_config.inc:1132 #, fuzzy msgid "Configuration" msgstr "Настроить" #: include/class_config.inc:1132 msgid "" "The configuration file you are using is outdated. Please move the GOsa " "configuration file away to run the GOsa setup again." msgstr "" #: include/class_config.inc:1174 include/class_config.inc:1205 #, php-format msgid "" "The snapshot functionality is enabled, but the required variable %s is not " "set." msgstr "" #: include/class_config.inc:1187 #, php-format msgid "" "The snapshot functionality is enabled, but the required compression module " "is missing. Please install %s." msgstr "" #: include/exporter/class_PDF.inc:24 #, fuzzy msgid "Page" msgstr "Пейджер" #: include/exporter/class_cvsExporter.inc:48 msgid "CSV" msgstr "" #: include/exporter/class_pdfExporter.inc:18 msgid "No PDF export possible: there is no FPDF library installed." msgstr "" #: include/exporter/class_pdfExporter.inc:145 msgid "PDF" msgstr "" #: include/class_jsonRPC.inc:38 #, fuzzy, php-format msgid "The RPC connection (%s) specified for %s:%s is invalid: %s" msgstr "Значение поля \"UID\" некорректно." #: include/class_jsonRPC.inc:333 #, fuzzy, php-format msgid "Unknown HTTP status code %s!" msgstr "состояние неизвестно" #: include/class_ItemSelector.inc:299 include/class_baseSelector.inc:235 #: include/class_releaseSelector.inc:262 msgid "Submit" msgstr "" #: include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #, fuzzy, php-format msgid "Copy and paste failed!" msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." #: include/class_CopyPasteHandler.inc:118 #, fuzzy, php-format msgid "Cannot set permission for %s" msgstr "Удалить" #: include/class_CopyPasteHandler.inc:159 #, php-format msgid "'%s' is no valid LDAP object" msgstr "" #: include/class_CopyPasteHandler.inc:176 #, fuzzy, php-format msgid "No write permission in '%s'" msgstr "Удалить" #: include/class_CopyPasteHandler.inc:193 #, fuzzy, php-format msgid "Cannot set permission for '%s'" msgstr "Удалить" #: include/class_CopyPasteHandler.inc:396 #, php-format msgid "These objects will be pasted: %s" msgstr "" #: include/class_CopyPasteHandler.inc:420 #, php-format msgid "This object will be pasted: %s" msgstr "" #: include/class_CopyPasteHandler.inc:573 #, fuzzy msgid "Cannot paste" msgstr "Создать телефонный аккаунт" #: include/class_acl.inc:27 plugins/admin/acl/class_aclManagement.inc:25 #, fuzzy msgid "Access control" msgstr "Параметры доступа" #: include/class_acl.inc:28 #, fuzzy msgid "Manage access control lists" msgstr "Параметры доступа" #: include/class_acl.inc:126 include/class_acl.inc:550 #: include/class_acl.inc:554 include/class_acl.inc:708 #: include/class_acl.inc:1138 include/class_acl.inc:1259 #, fuzzy, php-format msgid "All users" msgstr "пользователи" #: include/class_acl.inc:229 #: plugins/generic/references/class_aclResolver.inc:63 msgid "Reset ACLs" msgstr "" #: include/class_acl.inc:230 plugins/admin/acl/class_aclRole.inc:139 #: plugins/generic/references/class_aclResolver.inc:64 #, fuzzy msgid "One level" msgstr "Уровень информативности" #: include/class_acl.inc:231 include/class_acl.inc:236 #: plugins/admin/acl/class_aclRole.inc:140 #: plugins/generic/references/class_aclResolver.inc:65 #, fuzzy msgid "Current object" msgstr "Текущий пароль" #: include/class_acl.inc:232 plugins/admin/acl/class_aclRole.inc:141 #: plugins/generic/references/class_aclResolver.inc:66 #, fuzzy msgid "Complete subtree" msgstr "не полный" #: include/class_acl.inc:233 plugins/admin/acl/class_aclRole.inc:142 #: plugins/generic/references/class_aclResolver.inc:67 msgid "Complete subtree (permanent)" msgstr "" #: include/class_acl.inc:234 include/class_acl.inc:237 #: plugins/generic/references/class_aclResolver.inc:68 msgid "Use ACL defined in role" msgstr "" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:297 #: plugins/personal/generic/class_user.inc:1676 #: plugins/admin/users/class_userManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:185 msgid "Users" msgstr "Пользователи" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:300 #: plugins/admin/groups/class_group.inc:1060 #: plugins/admin/groups/class_groupManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:177 msgid "Groups" msgstr "Группы" #: include/class_acl.inc:255 #, fuzzy msgid "Section" msgstr "Действие" #: include/class_acl.inc:265 #, fuzzy msgid "Used" msgstr "Пользователь" #: include/class_acl.inc:277 plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "~" msgstr "" #: include/class_acl.inc:293 plugins/admin/ogroups/class_ogroup.inc:889 #, fuzzy msgid "Member" msgstr "Включаемые объекты" #: include/class_acl.inc:293 plugins/admin/acl/class_aclRole.inc:182 #: plugins/admin/acl/class_aclRole.inc:744 #, fuzzy msgid "Permissions" msgstr "Права для членов группы" #: include/class_acl.inc:555 include/class_acl.inc:1260 msgid "Pseudo-group for all users." msgstr "" #: include/class_acl.inc:669 #, fuzzy msgid "No ACL settings for this category!" msgstr "Описание группы" #: include/class_acl.inc:672 #, php-format msgid "ACLs for: %s" msgstr "" #: include/class_acl.inc:678 include/class_acl.inc:682 #, fuzzy msgid "category ACL" msgstr "Категория" #: include/class_acl.inc:744 #, php-format msgid "Edit ACL for '%s' with scope '%s'" msgstr "" #: include/class_acl.inc:906 include/class_acl.inc:913 #, fuzzy msgid "Show/hide advanced settings" msgstr "Настройки телефона" #: include/class_acl.inc:924 #, fuzzy msgid "Create objects" msgstr "Объект группы" #: include/class_acl.inc:925 #, fuzzy msgid "Move objects" msgstr "Включаемые объекты" #: include/class_acl.inc:926 #, fuzzy msgid "Remove objects" msgstr "Включаемые объекты" #: include/class_acl.inc:928 #: plugins/generic/references/class_aclResolver.inc:307 msgid "Restrict changes to user's own object" msgstr "" #: include/class_acl.inc:932 include/class_acl.inc:1041 #: include/class_acl.inc:1045 #: plugins/generic/references/class_aclResolver.inc:309 msgid "read" msgstr "чтение" #: include/class_acl.inc:933 include/class_acl.inc:1043 #: include/class_acl.inc:1046 #: plugins/generic/references/class_aclResolver.inc:310 msgid "write" msgstr "запись" #: include/class_acl.inc:937 #, fuzzy msgid "Complete object" msgstr "Включаемые объекты" #: include/class_acl.inc:1089 #, fuzzy, php-format msgid "Unknown ACL type '%s'!" msgstr "состояние неизвестно" #: include/class_acl.inc:1134 #, fuzzy, php-format msgid "Unknown entry '%s'!" msgstr "состояние неизвестно" #: include/class_acl.inc:1198 include/class_acl.inc:1200 #, fuzzy, php-format msgid "ACL role: %s" msgstr "Доступ" #: include/class_acl.inc:1200 #, fuzzy msgid "unknown ACL role" msgstr "состояние неизвестно" #: include/class_acl.inc:1208 #, fuzzy, php-format msgid "Contains settings for these objects: %s" msgstr "Описание группы" #: include/class_acl.inc:1219 ihtml/themes/default/acl.tpl:53 #: plugins/personal/posix/class_posixAccount.inc:1481 #, fuzzy msgid "Members" msgstr "Включаемые объекты" #: include/class_acl.inc:1225 #, fuzzy msgid "inactive" msgstr "Личный" #: include/class_acl.inc:1225 #, fuzzy msgid "No members" msgstr "Члены группы" #: include/class_acl.inc:1429 #, fuzzy msgid "Access control list" msgstr "Параметры доступа" #: include/class_acl.inc:1435 #, fuzzy msgid "ACL roles" msgstr "Доступ" #: include/class_acl.inc:1438 #, fuzzy msgid "ACL Entries" msgstr "Управление системами" #: include/class_socketClient.inc:108 #, php-format msgid "Socket connection to %s:%s failed: %s" msgstr "" #: include/class_socketClient.inc:191 #, php-format msgid "Socket timeout of %s seconds reached!" msgstr "" #: include/class_userFilterEditor.inc:254 #, php-format msgid "Error in filter #%s: %s opening and %s closing brackets detected!" msgstr "" #: include/class_gosaSupportDaemon.inc:112 msgid "GOsa support daemon" msgstr "" #: include/class_gosaSupportDaemon.inc:787 #, fuzzy msgid "Cannot not parse XML!" msgstr "Слишком много пользователей, невозможно создать идентификатор!" #: include/class_gosaSupportDaemon.inc:1184 #, fuzzy, php-format msgid "Cannot send abort event for entry %s!" msgstr "Удалить" #: include/class_gosaSupportDaemon.inc:1204 #, fuzzy, php-format msgid "Cannot remove entry %s!" msgstr "состояние неизвестно" #: include/class_GOsaRegistration.inc:127 msgid "" "UNIX-timestamp pointing to the date GOsa will ask for a registration again " "(-1 to disable)" msgstr "" #: include/class_SnapshotHandler.inc:45 include/class_SnapshotHandler.inc:76 #, php-format msgid "" "The snapshot functionality is enabled but the required variable %s is not " "set!" msgstr "" #: include/class_SnapshotHandler.inc:58 #, php-format msgid "" "The snapshot functionality is enabled but the required PHP compression " "module is missing: %s!" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:1 #: ihtml/themes/default/userFilterEditor.tpl:5 #, fuzzy msgid "Filter editor" msgstr "Терминал-сервер" #: ihtml/themes/default/userFilterEditor.tpl:8 #, fuzzy msgid "Filter properties" msgstr "Изменить свойства" #: ihtml/themes/default/userFilterEditor.tpl:40 #: plugins/personal/generic/class_user.inc:1664 #: plugins/personal/generic/generic.tpl:604 msgid "Public visible" msgstr "Видимый всем" #: ihtml/themes/default/userFilterEditor.tpl:45 #, fuzzy msgid "Enabled" msgstr "отключен" #: ihtml/themes/default/userFilterEditor.tpl:49 msgid "Categories where the filter is visible" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:69 #, fuzzy msgid "Query" msgstr "пользователи" #: ihtml/themes/default/acl.tpl:7 plugins/admin/acl/acl_role.tpl:3 #: plugins/admin/acl/acl_role.tpl:4 msgid "Assigned ACL for current entry" msgstr "" #: ihtml/themes/default/acl.tpl:10 plugins/admin/acl/acl_role.tpl:38 #, fuzzy msgid "New ACL" msgstr "Создать" #: ihtml/themes/default/acl.tpl:19 plugins/admin/acl/acl_role.tpl:45 #, fuzzy msgid "ACL type" msgstr "Тип" #: ihtml/themes/default/acl.tpl:23 ihtml/themes/default/acl.tpl:28 #: plugins/admin/acl/acl_role.tpl:45 #, fuzzy msgid "Select an ACL type" msgstr "Выберите, чтобы просмотреть серверы" #: ihtml/themes/default/acl.tpl:40 #, fuzzy msgid "Additional filter options" msgstr "Дополнительные записи в fstab" #: ihtml/themes/default/acl.tpl:61 #, fuzzy msgid "Add all users" msgstr "пользователи" #: ihtml/themes/default/acl.tpl:68 plugins/admin/acl/acl_role.tpl:51 #, fuzzy msgid "List of available ACL categories" msgstr "Выберите тип мыши" #: ihtml/themes/default/acl.tpl:76 #, fuzzy msgid "ACL for this object" msgstr "Проверка модуля gd" #: ihtml/themes/default/acl.tpl:82 #, fuzzy msgid "Available roles" msgstr "Доступные приложения" #: ihtml/themes/default/removeEntries.tpl:4 #: plugins/addons/propertyEditor/property-list.tpl:7 #, fuzzy msgid "Attention" msgstr "Рабочая станция Windows" #: ihtml/themes/default/removeEntries.tpl:14 #, fuzzy msgid "" "If you're sure you want to do this press 'Delete' to continue or 'Cancel' to " "abort." msgstr "" "Если вы уверены в своих действиях, нажмите на кнопку Удалить, иначе " "нажмите Отмена." #: ihtml/themes/default/userFilter.tpl:1 #, fuzzy msgid "List of defined filters" msgstr "Настроить" #: ihtml/themes/default/snapshotdialog.tpl:3 #, fuzzy msgid "Restoring object snapshots" msgstr "Объект группы" #: ihtml/themes/default/snapshotdialog.tpl:6 msgid "" "This procedure will restore a snapshot of the selected object. It will " "replace the existing object after pressing the restore button." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:9 msgid "" "DNS configuration and some database entries cannot be restored. They need to " "be recreated manually." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:12 msgid "" "Don't forget to check references to other objects, for example does the " "selected printer still exists ?" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:29 msgid "There is no snapshot available that can be restored" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:31 msgid "Choose a snapshot and click the folder image, to restore the snapshot" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:50 #, fuzzy msgid "Creating object snapshots" msgstr "Объект группы" #: ihtml/themes/default/snapshotdialog.tpl:53 msgid "" "This procedure will create a snapshot of the selected object. It will be " "stored inside a special branch of your directory system and can be restored " "later on." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:56 msgid "" "Remember that database entries, DNS configurations and possibly created " "zones in server extensions will not be stored in the snapshot." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:71 #, fuzzy msgid "Time stamp" msgstr "Таймаут (с)" #: ihtml/themes/default/snapshotdialog.tpl:80 msgid "Reason for generating this snapshot" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:88 #: plugins/admin/departments/class_department.inc:564 #: plugins/admin/departments/class_department.inc:646 #: plugins/admin/users/template.tpl:60 msgid "Continue" msgstr "Продолжить" #: ihtml/themes/default/password.tpl:5 #, fuzzy msgid "Change your password" msgstr "Сменить пароль" #: ihtml/themes/default/password.tpl:61 msgid "Your password has been changed successfully." msgstr "" #: ihtml/themes/default/password.tpl:65 html/main.php:220 #: plugins/personal/password/class_password.inc:160 #: plugins/personal/password/class_password.inc:163 #: plugins/personal/password/class_password.inc:166 #: plugins/admin/users/class_userManagement.inc:400 #, fuzzy msgid "Password change" msgstr "Сменить пароль" #: ihtml/themes/default/password.tpl:72 msgid "" "Enter the current password and the new password (twice) in the fields below " "and press the 'Set password' button." msgstr "" #: ihtml/themes/default/password.tpl:74 #: plugins/personal/password/class_password.inc:26 #: plugins/admin/users/user-list.xml:128 plugins/admin/users/user-list.xml:230 msgid "Change password" msgstr "Сменить пароль" #: ihtml/themes/default/password.tpl:77 ihtml/themes/default/password.tpl:79 msgid "Directory" msgstr "Каталог" #: ihtml/themes/default/password.tpl:86 ihtml/themes/default/password.tpl:90 #: ihtml/themes/default/login.tpl:37 ihtml/themes/default/login.tpl:40 #, fuzzy msgid "User name" msgstr "Имя пользователя" #: ihtml/themes/default/password.tpl:97 #: plugins/personal/myaccount/password.tpl:12 #: plugins/personal/myaccount/password.tpl:41 #: plugins/personal/password/password.tpl:18 #: plugins/personal/password/password.tpl:47 msgid "Current password" msgstr "Текущий пароль" #: ihtml/themes/default/password.tpl:103 #: plugins/personal/myaccount/password.tpl:18 #: plugins/personal/myaccount/password.tpl:71 #: plugins/personal/password/password.tpl:24 #: plugins/personal/password/password.tpl:78 #: plugins/admin/users/password.tpl:13 plugins/admin/users/password.tpl:65 #: plugins/admin/users/class_userManagement.inc:319 msgid "New password" msgstr "Новый пароль" #: ihtml/themes/default/password.tpl:110 #: plugins/personal/myaccount/password.tpl:25 #: plugins/personal/myaccount/password.tpl:78 #: plugins/personal/password/password.tpl:31 #: plugins/personal/password/password.tpl:85 #: plugins/admin/users/password.tpl:20 plugins/admin/users/password.tpl:72 msgid "Repeat new password" msgstr "Подтверждение" #: ihtml/themes/default/password.tpl:117 #: plugins/personal/myaccount/password.tpl:31 #: plugins/personal/myaccount/password.tpl:84 #: plugins/personal/password/password.tpl:37 #: plugins/personal/password/password.tpl:91 #, fuzzy msgid "Password strength" msgstr "Хэширование паролей" #: ihtml/themes/default/password.tpl:131 #, fuzzy msgid "Click here to change your password" msgstr "У вас недостаточно прав для смены своего пароля." #: ihtml/themes/default/password.tpl:131 #: plugins/personal/myaccount/password.tpl:96 #: plugins/personal/password/password.tpl:103 #: plugins/admin/users/password.tpl:101 msgid "Set password" msgstr "Изменить пароль" #: ihtml/themes/default/islocked.tpl:4 msgid "Locking conflict detected" msgstr "Конфликт блокировок" #: ihtml/themes/default/islocked.tpl:14 #, fuzzy msgid "" "If this lock detection is false, the other person has obviously closed the " "web browser during the edit operation. You may want to take over the lock by " "pressing the 'Edit anyway' button." msgstr "" "Если результат этой проверки блокировки - ложь, очевидно, другой человек " "закрыл браузер во время редактирования данных. Вы можете удалить файл " "блокировки, нажав на кнопку Удалить." #: ihtml/themes/default/islocked.tpl:23 msgid "Read only" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:1 msgid "Copy & paste wizard" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:7 msgid "" "Some values need to be unique in the complete directory while some " "combinations make no sense. Please edit the values below to fulfill the " "policies." msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:9 msgid "Remember that some properties like taken snapshots will not be copied!" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:10 msgid "" "Or if you copy or cut an entry within GOsa and delete the source object, you " "may get errors while pasting this object again!" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:23 #, fuzzy msgid "Cancel all" msgstr "Отмена" #: ihtml/themes/default/copyPasteDialog.tpl:28 #, fuzzy msgid "Operation complete" msgstr "не полный" #: ihtml/themes/default/copyPasteDialog.tpl:30 #: setup/class_setupStep_Finish.inc:39 msgid "Finish" msgstr "Готово" #: ihtml/themes/default/logout.tpl:6 msgid "Your GOsa session has expired!" msgstr "" #: ihtml/themes/default/logout.tpl:9 msgid "" "It has been a while since your last interaction with GOsa took place. Your " "session has been closed for security reasons. Please login again to continue " "with administrative tasks." msgstr "" #: ihtml/themes/default/logout.tpl:16 #, fuzzy msgid "Login again" msgstr "Войти" #: ihtml/themes/default/login.tpl:31 #, fuzzy msgid "Login to GOsa" msgstr "Добро пожаловать в раздел настройки GOsa!" #: ihtml/themes/default/login.tpl:47 setup/setup_migrate.tpl:53 #: plugins/personal/generic/paste_generic.tpl:21 #: plugins/generic/dashBoard/Register/register.tpl:53 msgid "Password" msgstr "Пароль" #: ihtml/themes/default/login.tpl:61 msgid "Choose the directory to work on" msgstr "" #: ihtml/themes/default/login.tpl:66 msgid "Click here to log in" msgstr "Нажмите на эту кнопку, чтобы войти в систему" #: ihtml/themes/default/login.tpl:66 ihtml/themes/default/login.tpl:67 #, fuzzy msgid "Log in" msgstr "Имя пользователя" #: ihtml/themes/default/sizelimit.tpl:3 msgid "" "The size limit option makes LDAP operations faster and saves the LDAP server " "from getting too much load. The easiest way to handle big databases without " "long timeouts would be to limit your search to smaller values and use " "filters to get the entries you are looking for." msgstr "" "Ограничение на количество возвращаемых объектов позволяет ускорить операции " "поиска и предохраняет сервер LDAP от большой нагрузки. Простейший способ " "снизить время обработки запроса при обслуживаии большой базы данных это " "установить минимальное значение. Кроме того, будет очень полезно " "использовать фильтры для просмотра только ограниченного количества объектов." #: ihtml/themes/default/sizelimit.tpl:8 msgid "Please choose the way to react for this session" msgstr "Выберите тип реакции для данной сессии" #: ihtml/themes/default/sizelimit.tpl:10 msgid "ignore this error and show all entries the LDAP server returns" msgstr "игнорировать ошибку и показать все найденые объекты" #: ihtml/themes/default/sizelimit.tpl:11 #, fuzzy msgid "" "ignore this error and show all entries that fit into the defined size limit" msgstr "" "Игнорировать ошибку и показать все возвращаемые объекты в пределах лимита и " "позволить использовать фильтры" #: ihtml/themes/default/infoPage.tpl:4 #, fuzzy msgid "User information" msgstr "Личная информация" #: ihtml/themes/default/infoPage.tpl:17 setup/setup_migrate.tpl:49 #: plugins/personal/posix/class_posixAccount.inc:1369 msgid "User ID" msgstr "Идентификатор пользователя" #: ihtml/themes/default/infoPage.tpl:18 #: plugins/personal/generic/class_user.inc:1702 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:48 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:48 #: plugins/admin/users/user-list.xml:49 #: plugins/generic/references/class_reference.inc:87 #, fuzzy msgid "Surname" msgstr "Имя сервера" #: ihtml/themes/default/infoPage.tpl:19 #: plugins/personal/generic/class_user.inc:1326 #: plugins/personal/generic/class_user.inc:1373 #: plugins/personal/generic/class_user.inc:1703 #: plugins/personal/generic/class_user.inc:1857 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:40 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:40 #: plugins/admin/users/class_userManagement.inc:552 #: plugins/admin/users/user-list.xml:57 #: plugins/generic/references/class_reference.inc:87 msgid "Given name" msgstr "Имя" #: ihtml/themes/default/infoPage.tpl:20 #: plugins/personal/generic/class_user.inc:1708 #: plugins/personal/generic/generic.tpl:92 msgid "Personal title" msgstr "Обращение" #: ihtml/themes/default/infoPage.tpl:21 #: plugins/personal/generic/class_user.inc:1709 #: plugins/personal/generic/generic.tpl:102 msgid "Academic title" msgstr "Академическое звание" #: ihtml/themes/default/infoPage.tpl:22 #: plugins/personal/generic/class_user.inc:1737 msgid "Home postal address" msgstr "" #: ihtml/themes/default/infoPage.tpl:23 #: plugins/personal/generic/class_user.inc:1368 #: plugins/personal/generic/class_user.inc:1711 #: plugins/personal/generic/generic.tpl:117 msgid "Date of birth" msgstr "Дата рождения" #: ihtml/themes/default/infoPage.tpl:24 #: plugins/admin/groups/class_groupManagement.inc:165 #: plugins/admin/ogroups/tabs_ogroups.inc:155 #: plugins/admin/users/class_userManagement.inc:897 #: plugins/generic/infoPage/class_infoPage.inc:112 msgid "Mail" msgstr "Почта" #: ihtml/themes/default/infoPage.tpl:25 #: plugins/personal/generic/class_user.inc:1738 #, fuzzy msgid "Home phone number" msgstr "Телефонные номера" #: ihtml/themes/default/infoPage.tpl:30 setup/setup_feedback.tpl:10 #: setup/setup_feedback.tpl:12 plugins/personal/generic/class_user.inc:1720 #: plugins/personal/generic/generic.tpl:298 #: plugins/admin/departments/dep-filter.xml:91 #: plugins/admin/departments/dep-list.xml:47 #: plugins/admin/departments/dep-list.xml:131 #: plugins/admin/departments/organization.tpl:4 #: plugins/admin/departments/class_organizationGeneric.inc:113 #: plugins/admin/departments/class_organizationGeneric.inc:114 #: plugins/admin/departments/class_departmentManagement.inc:241 msgid "Organization" msgstr "Организация" #: ihtml/themes/default/infoPage.tpl:31 #: plugins/admin/departments/dep-filter.xml:35 #: plugins/admin/departments/generic.tpl:4 #, fuzzy msgid "Organizational Unit" msgstr "Организация" #: ihtml/themes/default/infoPage.tpl:32 #: plugins/personal/generic/class_user.inc:1734 #: plugins/personal/generic/generic.tpl:436 #: plugins/admin/departments/organization.tpl:82 #: plugins/admin/departments/organization.tpl:94 #: plugins/admin/departments/class_department.inc:680 #: plugins/admin/departments/class_organizationGeneric.inc:130 #: plugins/admin/departments/generic.tpl:83 #: plugins/admin/departments/generic.tpl:85 #: plugins/admin/departments/generic.tpl:95 #: plugins/admin/departments/class_localityGeneric.inc:91 msgid "Location" msgstr "Местоположение" #: ihtml/themes/default/infoPage.tpl:33 #: plugins/personal/generic/class_user.inc:1665 #: plugins/personal/generic/generic.tpl:535 msgid "Street" msgstr "Улица" #: ihtml/themes/default/infoPage.tpl:34 #: plugins/personal/generic/class_user.inc:1722 #, fuzzy msgid "Department number" msgstr "Управление подразделениями" #: ihtml/themes/default/infoPage.tpl:36 #: plugins/personal/generic/class_user.inc:1724 #, fuzzy msgid "Employee number" msgstr "Форма трудоустройства" #: ihtml/themes/default/infoPage.tpl:37 #: plugins/personal/generic/class_user.inc:1725 #: plugins/personal/generic/generic.tpl:330 msgid "Employee type" msgstr "Форма трудоустройства" #: ihtml/themes/default/infoPage.tpl:48 #: plugins/personal/generic/paste_generic.tpl:1 #, fuzzy msgid "User settings" msgstr "Почтовые настройки пользователя" #: ihtml/themes/default/infoPage.tpl:55 #, fuzzy msgid "" "You have no permission to edit any properties. Please contact your " "administrator." msgstr "" "Не удается считать блокировку в базе данных LDAP. Проверьте, раздел \"config" "\" в файле gosa.conf!" #: ihtml/themes/default/infoPage.tpl:61 #, fuzzy msgid "Administrative contact" msgstr "Администрирование" #: ihtml/themes/default/infoPage.tpl:72 plugins/generic/welcome/welcome.tpl:8 msgid "The GOsa team" msgstr "Команда разработчиков GOsa" #: ihtml/themes/default/msg_dialog.tpl:55 #: ihtml/themes/default/msg_dialog.tpl:103 msgid "Error message title" msgstr "" #: ihtml/themes/default/msg_dialog.tpl:66 #: ihtml/themes/default/msg_dialog.tpl:115 #, fuzzy msgid "Error message" msgstr "Домашняя страница" #: ihtml/themes/default/ldifViewer.tpl:1 msgid "Raw LDAP entry" msgstr "" #: ihtml/themes/default/framework.tpl:9 #, fuzzy msgid "Log out" msgstr "Выход" #: ihtml/themes/default/framework.tpl:10 msgid "" "You are currently editing a database entry. Do you want to dismiss the " "changes?" msgstr "" "Вы сейчас редактируете объект базы данных. Хотите отказаться от изменений?" #: ihtml/themes/default/framework.tpl:22 #, fuzzy, php-format msgid "Session expires in %d!" msgstr "Данные, передаваемые в течение этого сеанса, не будут зашифрованы." #: ihtml/themes/default/help.tpl:9 msgid "GOsa help viewer" msgstr "" #: ihtml/themes/default/help.tpl:15 msgid "Index" msgstr "" #: ihtml/themes/default/logout-close.tpl:5 msgid "Your GOsa session has been closed!" msgstr "" #: ihtml/themes/default/logout-close.tpl:7 msgid "" "Please close this browser window and clean the authentication caches to " "avoid an automatic re-authentication by your browser." msgstr "" #: setup/class_setupStep_Migrate.inc:51 setup/class_setupStep_Migrate.inc:52 #, fuzzy msgid "LDAP inspection" msgstr "Проверка конфигурации PHP" #: setup/class_setupStep_Migrate.inc:53 msgid "Analyze your current LDAP for GOsa compatibility" msgstr "" #: setup/class_setupStep_Migrate.inc:59 #, fuzzy msgid "Checking for root object" msgstr "Проверка модуля gd" #: setup/class_setupStep_Migrate.inc:65 #, fuzzy msgid "Inspecting object classes in root object" msgstr "Проверка модуля gd" #: setup/class_setupStep_Migrate.inc:71 #, fuzzy msgid "Checking permission for LDAP database" msgstr "У вас недостаточно прав для удаления этого подразделения." #: setup/class_setupStep_Migrate.inc:78 #, fuzzy msgid "Checking for super administrator" msgstr "Проверка дополнительных программ" #: setup/class_setupStep_Migrate.inc:118 setup/class_setupStep_Migrate.inc:186 #: setup/class_setupStep_Migrate.inc:709 #, fuzzy msgid "LDAP query failed" msgstr "Невозможно выполнить запрос к базе данных!" #: setup/class_setupStep_Migrate.inc:119 setup/class_setupStep_Migrate.inc:187 #: setup/class_setupStep_Migrate.inc:710 msgid "Possibly the 'root object' is missing." msgstr "" #: setup/class_setupStep_Migrate.inc:132 setup/class_setupStep_Migrate.inc:145 #: setup/class_setupStep_Migrate.inc:307 setup/class_setupStep_Migrate.inc:661 #: setup/class_setupStep_Migrate.inc:674 setup/class_setupStep_Migrate.inc:729 #: setup/class_setupStep_Migrate.inc:750 setup/class_setupStep_Migrate.inc:802 msgid "Failed" msgstr "Ошибка" #: setup/class_setupStep_Migrate.inc:134 setup/class_setupStep_Migrate.inc:147 #, php-format msgid "" "The specified user '%s' does not have full access to your LDAP database." msgstr "" #: setup/class_setupStep_Migrate.inc:308 msgid "There is no GOsa administrator account inside your LDAP." msgstr "" #: setup/class_setupStep_Migrate.inc:309 #: plugins/admin/groups/group-list.xml:73 #: plugins/admin/ogroups/ogroup-list.xml:73 plugins/admin/acl/acl-list.xml:76 #: plugins/admin/departments/dep-list.xml:98 #: plugins/admin/users/user-list.xml:89 msgid "Create" msgstr "Создать" #: setup/class_setupStep_Migrate.inc:377 #, fuzzy msgid "Migration error" msgstr "Дата" #: setup/class_setupStep_Migrate.inc:377 #, php-format msgid "Cannot add ACL for user '%s':" msgstr "" #: setup/class_setupStep_Migrate.inc:415 setup/class_setupStep_Migrate.inc:425 #, fuzzy msgid "Input error" msgstr "Ошибка LDAP:" #: setup/class_setupStep_Migrate.inc:415 #: plugins/personal/posix/paste_generic.tpl:38 #: plugins/personal/posix/generic.tpl:64 #: plugins/personal/posix/class_posixAccount.inc:910 #: plugins/personal/posix/class_posixAccount.inc:913 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/generic/references/class_reference.inc:87 msgid "UID" msgstr "UID" #: setup/class_setupStep_Migrate.inc:420 #, fuzzy msgid "Password error" msgstr "Срок действия пароля истекает" #: setup/class_setupStep_Migrate.inc:420 #, fuzzy msgid "Provided passwords do not match!" msgstr "Введенные пароли не совпадают!" #: setup/class_setupStep_Migrate.inc:425 #, fuzzy msgid "Specify a valid user ID!" msgstr "Введите корректное имя пользователя!" #: setup/class_setupStep_Migrate.inc:450 #, php-format msgid "Adding an administrative user failed: object '%s' already exists!" msgstr "" #: setup/class_setupStep_Migrate.inc:662 msgid "" "The LDAP root object is missing. It is required to use your LDAP service." msgstr "" #: setup/class_setupStep_Migrate.inc:663 setup/class_setupStep_Migrate.inc:676 #, fuzzy msgid "Try to create root object" msgstr "Объект группы" #: setup/class_setupStep_Migrate.inc:675 msgid "Root object couldn't be created, you should try it on your own." msgstr "" #: setup/class_setupStep_Migrate.inc:730 #, fuzzy, php-format msgid "Missing GOsa object class '%s'!" msgstr "Список подразделений" #: setup/class_setupStep_Migrate.inc:731 #, fuzzy msgid "Please check your installation." msgstr "Проверьте, правильно ли вы ввели имя пользователя и пароль." #: setup/class_setupStep_Migrate.inc:752 #, php-format msgid "" "Cannot handle the structural object type of your root object. Please try to " "add the object class '%s' manually." msgstr "" #: setup/class_setupStep_Migrate.inc:804 setup/setup_migrate.tpl:32 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:181 #, fuzzy msgid "Migrate" msgstr "Дата" #: setup/setup_checks.tpl:2 msgid "" "This step checks if your PHP server has all required modules and " "configuration settings." msgstr "" #: setup/setup_checks.tpl:5 #, fuzzy msgid "Inspection" msgstr "Проверка конфигурации PHP" #: setup/setup_checks.tpl:8 msgid "PHP module and extension checks" msgstr "" #: setup/setup_checks.tpl:10 msgid "Basic checks" msgstr "" #: setup/setup_checks.tpl:38 setup/setup_checks.tpl:79 msgid "GOsa will NOT run without fixing this." msgstr "" #: setup/setup_checks.tpl:40 setup/setup_checks.tpl:81 msgid "GOsa will run without fixing this." msgstr "" #: setup/setup_checks.tpl:50 #, fuzzy msgid "PHP setup configuration" msgstr "Базы данных" #: setup/setup_checks.tpl:50 #, fuzzy msgid "show information" msgstr "Личная информация" #: setup/setup_checks.tpl:51 msgid "Extended checks" msgstr "" #: setup/class_setupStep_Finish.inc:40 #, fuzzy msgid "Write configuration file" msgstr "Настроить" #: setup/class_setupStep_Finish.inc:41 #, fuzzy msgid "Finish - write the configuration file" msgstr "Настроить" #: setup/class_setupStep_Finish.inc:106 #, fuzzy msgid "" "Your configuration file is currently world readable. Please update the file " "permissions!" msgstr "" "Не удается прочитать файл настройки GOsa %s/gosa.conf. Операция прервана." #: setup/class_setupStep_Finish.inc:108 #, fuzzy msgid "The configuration is currently not readable or it does not exists." msgstr "" "Не удается прочитать файл настройки GOsa %s/gosa.conf. Операция прервана." #: setup/class_setupStep_Finish.inc:117 #, fuzzy, php-format msgid "" "After downloading and placing the file under %s, please make sure that the " "user the web server is running with is able to read %s, while other users " "shouldn't. You may want to execute these commands to achieve this " "requirement:" msgstr "" "Поместив файл gosa.conf в каталог /etc/gosa, убедитесь, что только " "пользователь веб-сервера может его читать. Для этого вам, возможно, " "понадобится выполнить следующие команды:" #: setup/class_setupStep_Ldap.inc:54 #, fuzzy msgid "LDAP setup" msgstr "LDAP-сервер" #: setup/class_setupStep_Ldap.inc:55 #, fuzzy msgid "LDAP connection setup" msgstr "Соединение..." #: setup/class_setupStep_Ldap.inc:56 msgid "" "This dialog performs the basic configuration of the LDAP connectivity for " "GOsa." msgstr "" #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:41 #: setup/setup_feedback.tpl:52 #, fuzzy msgid "No" msgstr "нет" #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:39 #: setup/setup_feedback.tpl:50 #, fuzzy msgid "Yes" msgstr "Системы" #: setup/class_setupStep_Ldap.inc:113 #, fuzzy, php-format msgid "Anonymous bind to server '%s' failed!" msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." #: setup/class_setupStep_Ldap.inc:115 #, fuzzy, php-format msgid "Bind as user '%s' failed!" msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." #: setup/class_setupStep_Ldap.inc:120 #, fuzzy, php-format msgid "Anonymous bind to server '%s' succeeded." msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." #: setup/class_setupStep_Ldap.inc:121 #, fuzzy msgid "Please specify user and password!" msgstr "Введите свой пароль!" #: setup/class_setupStep_Ldap.inc:123 #, fuzzy, php-format msgid "Bind as user '%s' to server '%s' succeeded!" msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." #: setup/class_setupStep_Feedback.inc:94 #, fuzzy msgid "UNIX accounts/groups" msgstr "UNIX аккаунт" #: setup/class_setupStep_Feedback.inc:96 #, fuzzy msgid "Samba management" msgstr "Управление системами" #: setup/class_setupStep_Feedback.inc:98 #, fuzzy msgid "Mail system management" msgstr "Управление системами" #: setup/class_setupStep_Feedback.inc:100 #, fuzzy msgid "FAX system administration" msgstr "Управление пользователями" #: setup/class_setupStep_Feedback.inc:102 #, fuzzy msgid "Asterisk administration" msgstr "Управление пользователями" #: setup/class_setupStep_Feedback.inc:104 #, fuzzy msgid "System inventory" msgstr "Удалить объект" #: setup/class_setupStep_Feedback.inc:106 #, fuzzy msgid "System/Configuration management" msgstr "Управление системами" #: setup/class_setupStep_Feedback.inc:108 #, fuzzy msgid "Address book" msgstr "Адресная книга" #: setup/class_setupStep_Feedback.inc:114 msgid "Feedback" msgstr "" #: setup/class_setupStep_Feedback.inc:115 #, fuzzy msgid "Get notifications or send feedback" msgstr "Местоположение ветки" #: setup/class_setupStep_Feedback.inc:116 #, fuzzy msgid "Notification and feedback" msgstr "Изменить сертификаты" #: setup/class_setupStep_Feedback.inc:132 setup/class_setup.inc:74 #, fuzzy msgid "Setup error" msgstr "Состояние системы" #: setup/class_setupStep_Feedback.inc:140 #: setup/class_setupStep_Feedback.inc:147 msgid "Feedback error" msgstr "" #: setup/class_setupStep_Feedback.inc:140 #, php-format msgid "Cannot send feedback to '%s': %s" msgstr "" #: setup/class_setupStep_Feedback.inc:147 msgid "Cannot send feedback: service temporarily unavailable" msgstr "" #: setup/class_setupStep_Feedback.inc:181 #, fuzzy msgid "Please specify a valid email address." msgstr "Введите корректное имя пользователя!" #: setup/class_setupStep_Feedback.inc:185 msgid "" "You have to select at least one of both options, subscribe or send feedback." msgstr "" #: setup/setup_license.tpl:3 msgid "" "GOsa is developed under the terms of the GNU General Public License v2. " "Please accept the terms below." msgstr "" #: setup/setup_license.tpl:11 msgid "I have read the license and accept it" msgstr "" #: setup/setup_ldap.tpl:2 msgid "" "The main data source used in GOsa is LDAP. In order to access the " "information stored there, please enter the required information." msgstr "" #: setup/setup_ldap.tpl:9 msgid "Please choose the LDAP user to be used by GOsa" msgstr "" #: setup/setup_ldap.tpl:28 setup/setup_ldap.tpl:29 #, fuzzy msgid "LDAP connection" msgstr "Отключение" #: setup/setup_ldap.tpl:31 msgid "Location name" msgstr "Местоположение" #: setup/setup_ldap.tpl:35 #, fuzzy msgid "Connection URI" msgstr "Подключение" #: setup/setup_ldap.tpl:39 #, fuzzy msgid "TLS connection" msgstr "Соединение..." #: setup/setup_ldap.tpl:47 #: plugins/personal/posix/trustSelect/trust-list.tpl:12 #: plugins/personal/posix/groupSelect/group-list.tpl:12 #: plugins/personal/generic/class_user.inc:1714 #: plugins/personal/generic/generic.tpl:167 #: plugins/addons/dyngroup/dyngroup.tpl:5 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:127 #: plugins/admin/groups/singleUserSelect/singleUser-list.tpl:12 #: plugins/admin/groups/class_group.inc:1078 #: plugins/admin/groups/group-list.tpl:12 plugins/admin/groups/generic.tpl:39 #: plugins/admin/groups/userSelect/user-list.tpl:12 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.tpl:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.tpl:12 #: plugins/admin/ogroups/ogroup-list.tpl:12 #: plugins/admin/ogroups/generic.tpl:26 #: plugins/admin/ogroups/class_ogroup.inc:886 #: plugins/admin/acl/acl_role.tpl:27 plugins/admin/acl/acl-list.tpl:12 #: plugins/admin/acl/class_aclRole.inc:742 #: plugins/admin/departments/dcObject.tpl:28 #: plugins/admin/departments/country.tpl:28 #: plugins/admin/departments/class_countryGeneric.inc:94 #: plugins/admin/departments/organization.tpl:39 #: plugins/admin/departments/class_department.inc:677 #: plugins/admin/departments/class_domain.inc:92 #: plugins/admin/departments/class_organizationGeneric.inc:125 #: plugins/admin/departments/generic.tpl:39 #: plugins/admin/departments/locality.tpl:28 #: plugins/admin/departments/dep-list.tpl:12 #: plugins/admin/departments/class_localityGeneric.inc:94 #: plugins/admin/departments/class_dcObject.inc:93 #: plugins/admin/departments/domain.tpl:28 #: plugins/admin/users/user-list.tpl:12 msgid "Base" msgstr "Ветка" #: setup/setup_ldap.tpl:57 #, fuzzy msgid "Reload" msgstr "чтение" #: setup/setup_ldap.tpl:63 setup/setup_ldap.tpl:64 #, fuzzy msgid "Authentication" msgstr "Рабочая станция Windows" #: setup/setup_ldap.tpl:66 #, fuzzy msgid "Administrator DN" msgstr "Администрирование" #: setup/setup_ldap.tpl:71 #, fuzzy msgid "Select user" msgstr "Удалить" #: setup/setup_ldap.tpl:81 msgid "Automatically append LDAP base to administrator DN" msgstr "" #: setup/setup_ldap.tpl:85 #, fuzzy msgid "Administrator password" msgstr "Пароль администратора" #: setup/setup_ldap.tpl:91 setup/setup_ldap.tpl:92 #, fuzzy msgid "Schema based settings" msgstr "Настройки Samba" #: setup/setup_ldap.tpl:94 msgid "Use RFC 2307bis compliant groups" msgstr "" #: setup/setup_ldap.tpl:105 setup/setup_ldap.tpl:106 #, fuzzy msgid "Current status" msgstr "Состояние системы" #: setup/setup_ldap.tpl:108 plugins/admin/ogroups/class_ogroup.inc:244 #: plugins/generic/dashBoard/dbInformation/contents.tpl:1 msgid "Information" msgstr "Информация" #: setup/setup_language.tpl:3 #, fuzzy msgid "Please select the preferred language" msgstr "Язык по умолчанию" #: setup/setup_language.tpl:5 msgid "" "At this point, you can select the site wide default language. Choosing " "'automatic' will use the language requested by the browser. This setting can " "be overridden per user." msgstr "" #: setup/setup_language.tpl:9 #, fuzzy msgid "Please select your preferred language here" msgstr "Язык по умолчанию" #: setup/setup_welcome.tpl:3 msgid "How to get started" msgstr "" #: setup/setup_welcome.tpl:5 msgid "" "This seems to be the first time you run GOsa on this system. To start the " "GOsa web interface you need a working configuration file, which can be " "generated by this wizard." msgstr "" #: setup/setup_welcome.tpl:9 #, fuzzy msgid "What you need to generate a configuration file:" msgstr "Настроить" #: setup/setup_welcome.tpl:13 #, fuzzy msgid "The hostname of your LDAP server" msgstr "Ошибка при подключении к LDAP-серверу. Ответ сервера: \"%s\"." #: setup/setup_welcome.tpl:14 msgid "Installed GOsa and supplementary schema" msgstr "" #: setup/setup_welcome.tpl:15 msgid "The LDAP base of your LDAP directory" msgstr "" #: setup/setup_welcome.tpl:16 msgid "The DN and the password of the LDAP administration user" msgstr "" #: setup/setup_welcome.tpl:20 msgid "" "If you've collected the needed information, unlock the setup process like " "shown in the next paragraph." msgstr "" #: setup/setup_welcome.tpl:24 #, fuzzy msgid "Starting the setup" msgstr "Язык" #: setup/setup_welcome.tpl:26 msgid "" "For security reasons you need to authenticate the installation by creating " "the file '/tmp/gosa.auth', containing the current session ID on the servers " "local filesystem. This can be done by executing the following command:" msgstr "" #: setup/setup_welcome.tpl:32 msgid "Click the 'Next' button when you've finished." msgstr "" #: setup/class_setupStep_Schema.inc:37 setup/class_setupStep_Schema.inc:38 #, fuzzy msgid "LDAP schema check" msgstr "Сервер подкачки" #: setup/class_setupStep_Schema.inc:39 msgid "Perform test on your current LDAP schema" msgstr "" #: setup/class_setup.inc:183 #, fuzzy msgid "Setup" msgstr "Установить" #: setup/class_setup.inc:195 #, fuzzy msgid "Completed" msgstr "не полный" #: setup/class_setup.inc:235 #, fuzzy msgid "Check again" msgstr "Проверить" #: setup/class_setup.inc:238 #, fuzzy msgid "Next" msgstr "текст" #: setup/setup_migrate.tpl:2 msgid "" "During the LDAP inspection, we're going to check for several common pitfalls " "that may occur when migration to GOsa base LDAP administration. You may want " "to fix the problems below, in order to provide smooth services." msgstr "" #: setup/setup_migrate.tpl:5 #, fuzzy msgid "Checks" msgstr "Состояние системы" #: setup/setup_migrate.tpl:22 #, fuzzy msgid "Add required object classes to the LDAP base" msgstr "Список подразделений" #: setup/setup_migrate.tpl:24 #, fuzzy msgid "Current" msgstr "Текущий пароль" #: setup/setup_migrate.tpl:28 #, fuzzy msgid "After migration" msgstr "Управление пользователями" #: setup/setup_migrate.tpl:35 #, fuzzy msgid "Close" msgstr "Выбрать" #: setup/setup_migrate.tpl:40 #, fuzzy msgid "Create a new GOsa administrator account" msgstr "Создать настройки запись эл. почты" #: setup/setup_migrate.tpl:41 msgid "" "This dialog will automatically add a new super administrator to your LDAP " "tree." msgstr "" #: setup/setup_migrate.tpl:57 #, fuzzy msgid "Password (again)" msgstr "Хэширование паролей" #: setup/setup_finish.tpl:3 #, fuzzy msgid "Create your configuration file" msgstr "Настроить" #: setup/setup_finish.tpl:10 msgid "Depending on the user name your web server is running on:" msgstr "" #: setup/setup_finish.tpl:27 #, fuzzy msgid "Download configuration" msgstr "Системная информация" #: setup/setup_finish.tpl:33 #, fuzzy msgid "Status: " msgstr "Состояние" #: setup/class_setupStep_Checks.inc:40 setup/class_setupStep_Checks.inc:41 msgid "Installation check" msgstr "" #: setup/class_setupStep_Checks.inc:42 msgid "Basic checks for PHP compatibility and extensions" msgstr "" #: setup/class_setupStep_Checks.inc:66 #, fuzzy msgid "Checking PHP version" msgstr "Проверка версии PHP (>=4.1.0)" #: setup/class_setupStep_Checks.inc:67 #, fuzzy, php-format msgid "PHP must be of version %s or above." msgstr "" "У вас должна быть установка PHP версии не ниже 4.1.0, так как в ней " "реализованы некоторые новые функции и исправлены некоторые ошибки." #: setup/class_setupStep_Checks.inc:68 msgid "Please upgrade to a supported version." msgstr "" #: setup/class_setupStep_Checks.inc:75 msgid "GOsa requires this module to talk with your LDAP server." msgstr "" #: setup/class_setupStep_Checks.inc:83 msgid "GOsa requires this module for an internationalized interface." msgstr "" #: setup/class_setupStep_Checks.inc:91 #, fuzzy msgid "" "GOsa requires this module to communicate with different types of servers and " "protocols." msgstr "" "Необходим для чтения отчетов о полученных факсимильных сообщениях из базы " "данных." #: setup/class_setupStep_Checks.inc:99 msgid "GOsa requires this module for the samba integration." msgstr "" #: setup/class_setupStep_Checks.inc:107 msgid "" "GOsa requires either 'mhash' or the 'sha1' module to make use of SSHA " "encryption." msgstr "" #: setup/class_setupStep_Checks.inc:115 msgid "GOsa requires this module to talk to an IMAP server." msgstr "" #: setup/class_setupStep_Checks.inc:122 #, fuzzy msgid "mbstring" msgstr "Настройки Samba" #: setup/class_setupStep_Checks.inc:123 #, fuzzy msgid "GOsa requires this module to handle Unicode strings." msgstr "" "Необходим для чтения отчетов о полученных факсимильных сообщениях из базы " "данных." #: setup/class_setupStep_Checks.inc:130 msgid "Calendar" msgstr "" #: setup/class_setupStep_Checks.inc:131 #, fuzzy msgid "GOsa requires this module to calculate dates." msgstr "" "Необходим для чтения отчетов о полученных факсимильных сообщениях из базы " "данных." #: setup/class_setupStep_Checks.inc:138 #, fuzzy msgid "MySQL" msgstr "Ошибка LDAP:" #: setup/class_setupStep_Checks.inc:139 #, fuzzy msgid "" "GOsa requires this module to communicate with several supported databases." msgstr "" "Необходим для чтения отчетов о полученных факсимильных сообщениях из базы " "данных." #: setup/class_setupStep_Checks.inc:156 msgid "samba hash generator" msgstr "" #: setup/class_setupStep_Checks.inc:157 msgid "GOsa requires this command to synchronize POSIX and samba passwords." msgstr "" #: setup/class_setupStep_Checks.inc:158 msgid "" "Deploy a gosa-si installation or install the Perl Crypt::SmbHash modules." msgstr "" #: setup/class_setupStep_Checks.inc:171 msgid "imagick" msgstr "" #: setup/class_setupStep_Checks.inc:172 msgid "GOsa requires this extension to handle images." msgstr "" #: setup/class_setupStep_Checks.inc:187 #, fuzzy msgid "compression module" msgstr "Параметры доступа" #: setup/class_setupStep_Checks.inc:188 msgid "GOsa requires this extension to handle snapshots." msgstr "" #: setup/class_setupStep_Checks.inc:199 #, fuzzy msgid "" "register_globals is a PHP mechanism to register all global variables to be " "accessible from scripts without changing the scope. This may be a security " "risk." msgstr "" "register_globals - механизм PHP, позволяющий делать все глобальные " "переменные доступными из сценария без смены области действия. Это может быть " "нарушением безопасности. Тем не менее, GOsa будет работать в любом случае." #: setup/class_setupStep_Checks.inc:200 #, fuzzy msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'." msgstr "Проверка значения параметра register_globals (должно быть: off)" #: setup/class_setupStep_Checks.inc:208 msgid "PHP uses this value for the garbage collector to delete old sessions." msgstr "" #: setup/class_setupStep_Checks.inc:209 msgid "" "Setting this value to one day will prevent loosing session and cookies " "before they really timeout." msgstr "" #: setup/class_setupStep_Checks.inc:210 #, fuzzy msgid "" "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or " "higher." msgstr "Проверка значения параметра register_globals (должно быть: off)" #: setup/class_setupStep_Checks.inc:217 setup/class_setupStep_Checks.inc:233 #: setup/class_setupStep_Checks.inc:249 setup/class_setupStep_Checks.inc:265 #: plugins/addons/propertyEditor/class_propertyEditor.inc:230 #, fuzzy msgid "Off" msgstr "не в сети" #: setup/class_setupStep_Checks.inc:218 #, fuzzy msgid "" "In Order to use GOsa without any trouble, the session.auto_register option " "in your php.ini should be set to 'Off'." msgstr "Проверка значения параметра register_globals (должно быть: off)" #: setup/class_setupStep_Checks.inc:219 #, fuzzy msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." msgstr "Проверка значения параметра register_globals (должно быть: off)" #: setup/class_setupStep_Checks.inc:226 msgid "" "GOsa needs at least 32MB of memory. Setting it below this limit may cause " "errors that are not reproducible! Increase it for larger setups." msgstr "" #: setup/class_setupStep_Checks.inc:227 msgid "" "Search for 'memory_limit' in your php.ini and set it to '32M' or higher." msgstr "" #: setup/class_setupStep_Checks.inc:234 msgid "" "This option influences the PHP output handling. Turn this Option off, to " "increase performance." msgstr "" #: setup/class_setupStep_Checks.inc:235 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:242 msgid "The Execution time should be at least 30 seconds." msgstr "" #: setup/class_setupStep_Checks.inc:243 msgid "" "Search for 'max_execution_time' in your php.ini and set it to '30' or higher." msgstr "" #: setup/class_setupStep_Checks.inc:250 msgid "" "Increase the server security by setting expose_php to 'off'. PHP won't send " "any information about the server you are running in this case." msgstr "" #: setup/class_setupStep_Checks.inc:251 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:257 #: plugins/addons/propertyEditor/class_propertyEditor.inc:231 #, fuzzy msgid "On" msgstr "Параметры" #: setup/class_setupStep_Checks.inc:258 msgid "" "Increase your server security by setting magic_quotes_gpc to 'on'. PHP will " "escape all quotes in strings in this case." msgstr "" #: setup/class_setupStep_Checks.inc:259 #, fuzzy msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." msgstr "Проверка значения параметра register_globals (должно быть: off)" #: setup/class_setupStep_Checks.inc:266 msgid "Increase your server performance by setting magic_quotes_gpc to 'off'." msgstr "" #: setup/class_setupStep_Checks.inc:267 #, fuzzy msgid "" "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to 'Off'." msgstr "Проверка значения параметра register_globals (должно быть: off)" #: setup/class_setupStep_Checks.inc:277 #, fuzzy msgid "Configuration writable" msgstr "Настроить" #: setup/class_setupStep_Checks.inc:278 #, fuzzy msgid "The configuration file can't be written" msgstr "Настроить" #: setup/class_setupStep_Checks.inc:279 #, php-format msgid "" "GOsa reads its configuration from a file located in (%s/%s). The setup can " "write the configuration directly if it is writable." msgstr "" #: setup/class_setupStep_Welcome.inc:42 #, fuzzy msgid "Welcome" msgstr "Добро пожаловать %s!" #: setup/class_setupStep_Welcome.inc:43 #, fuzzy msgid "The welcome message" msgstr "Удалить" #: setup/class_setupStep_Welcome.inc:44 #, fuzzy msgid "Welcome to the GOsa setup assistent" msgstr "Добро пожаловать в раздел настройки GOsa!" #: setup/class_setupStep_License.inc:56 setup/class_setupStep_License.inc:57 #, fuzzy msgid "License" msgstr "в" #: setup/class_setupStep_License.inc:58 msgid "Terms and conditions for usage" msgstr "" #: setup/setup_schema.tpl:1 #, fuzzy msgid "Schema specific settings" msgstr "Настройки телефона" #: setup/setup_schema.tpl:4 msgid "Schema check succeeded" msgstr "" #: setup/setup_schema.tpl:7 #, fuzzy msgid "Schema check failed" msgstr "Приложение" #: setup/setup_schema.tpl:11 msgid "" "Could not read any schema information, all checks skipped. Adjust your LDAP " "ACLs." msgstr "" #: setup/setup_schema.tpl:13 msgid "" "It seems that your LDAP database wasn't initialized yet. This maybe the " "reason, why GOsa can't read your schema configuration!" msgstr "" #: setup/class_setupStep_Language.inc:40 setup/class_setupStep_Language.inc:41 #, fuzzy msgid "Language setup" msgstr "Язык" #: setup/class_setupStep_Language.inc:42 #, fuzzy msgid "This step allows you to select your preferred language." msgstr "Язык по умолчанию" #: setup/setup_feedback.tpl:2 #, fuzzy msgid "Feedback successfully send" msgstr "Настройка завершена" #: setup/setup_feedback.tpl:6 msgid "Subscribe to the gosa-announce mailing list" msgstr "" #: setup/setup_feedback.tpl:8 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to subscribe you to the gosa-announce mailing list. You've to confirm " "this by mail." msgstr "" #: setup/setup_feedback.tpl:20 #, fuzzy msgid "Mail address" msgstr "MAC-адрес" #: setup/setup_feedback.tpl:28 msgid "Send feedback to the GOsa project team" msgstr "" #: setup/setup_feedback.tpl:31 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to submit your form anonymously." msgstr "" #: setup/setup_feedback.tpl:35 setup/setup_feedback.tpl:36 #: plugins/personal/posix/generic.tpl:5 #: plugins/personal/generic/class_user.inc:37 #: plugins/personal/generic/class_user.inc:1670 #: plugins/admin/groups/class_group.inc:1054 #: plugins/admin/ogroups/class_ogroup.inc:872 #: plugins/admin/departments/class_department.inc:659 #: plugins/admin/users/class_userManagement.inc:890 msgid "Generic" msgstr "Общее" #: setup/setup_feedback.tpl:38 msgid "Did the setup procedure help you to get started?" msgstr "" #: setup/setup_feedback.tpl:44 msgid "If not, what problems did you encounter" msgstr "" #: setup/setup_feedback.tpl:48 msgid "Is this the first time you use GOsa?" msgstr "" #: setup/setup_feedback.tpl:53 msgid "I use it since" msgstr "" #: setup/setup_feedback.tpl:54 msgid "Select the year since when you are using GOsa" msgstr "" #: setup/setup_feedback.tpl:60 msgid "What operating system / distribution do you use?" msgstr "" #: setup/setup_feedback.tpl:64 msgid "What web server do you use?" msgstr "" #: setup/setup_feedback.tpl:68 msgid "What PHP version do you use?" msgstr "" #: setup/setup_feedback.tpl:72 #, fuzzy msgid "GOsa version" msgstr "Общая информация о пользователе" #: setup/setup_feedback.tpl:78 setup/setup_feedback.tpl:79 msgid "LDAP" msgstr "" #: setup/setup_feedback.tpl:81 msgid "What kind of LDAP server(s) do you use?" msgstr "" #: setup/setup_feedback.tpl:85 msgid "How many objects are in your LDAP?" msgstr "" #: setup/setup_feedback.tpl:91 setup/setup_feedback.tpl:92 msgid "Features" msgstr "" #: setup/setup_feedback.tpl:94 msgid "What features of GOsa do you use?" msgstr "" #: setup/setup_feedback.tpl:103 msgid "What features do you want to see in future versions of GOsa?" msgstr "" #: setup/setup_feedback.tpl:107 msgid "Send feedback" msgstr "" #: html/password.php:63 html/index.php:157 #, fuzzy, php-format msgid "GOsa configuration %s/%s is not readable. Aborted." msgstr "" "Не удается прочитать файл настройки GOsa %s/gosa.conf. Операция прервана." #: html/password.php:115 html/index.php:179 html/setup.php:73 #, fuzzy, php-format msgid "Compile directory %s is not accessible!" msgstr "Недоступен каталог \"%s\", указанный как каталог компиляции!" #: html/password.php:194 plugins/personal/generic/class_user.inc:614 #, fuzzy msgid "Password method" msgstr "Хэширование паролей" #: html/password.php:195 msgid "Error: Password method not available!" msgstr "" #: html/password.php:242 plugins/personal/generic/paste_generic.tpl:16 #: plugins/personal/generic/class_user.inc:1311 #: plugins/personal/generic/class_user.inc:1329 #: plugins/personal/generic/class_user.inc:1343 #: plugins/personal/generic/class_user.inc:1345 #: plugins/personal/generic/class_user.inc:1704 #: plugins/personal/generic/generic.tpl:65 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:56 #: plugins/admin/groups/userSelect/user-list.xml:56 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:65 #: plugins/admin/users/template.tpl:32 plugins/admin/users/user-list.xml:65 #: plugins/generic/dashBoard/Register/register.tpl:49 msgid "Login" msgstr "Имя пользователя" #: html/password.php:244 plugins/personal/password/class_password.inc:124 msgid "You need to specify your current password in order to proceed." msgstr "Для продолжения укажите свой текущий пароль." #: html/password.php:246 plugins/personal/password/class_password.inc:126 #: plugins/admin/users/class_userManagement.inc:316 msgid "" "The passwords you've entered as 'New password' and 'Repeated new password' " "do not match." msgstr "Введенные пароли не совпадают!" #: html/password.php:248 plugins/personal/password/class_password.inc:128 msgid "The password you've entered as 'New password' is empty." msgstr "Вы не указали новый пароль." #: html/password.php:250 plugins/personal/password/class_password.inc:130 msgid "The password used as new and current are too similar." msgstr "Новый и текущий пароли слишком похожи." #: html/password.php:252 plugins/personal/password/class_password.inc:132 msgid "The password used as new is to short." msgstr "Новый пароль слишком короткий." #: html/password.php:254 plugins/personal/password/class_password.inc:134 #, fuzzy msgid "The password contains possibly problematic Unicode characters!" msgstr "Значение поля \"Имя\" содержит недопустимые символы." #: html/password.php:261 html/index.php:311 #, fuzzy msgid "Please check the username/password combination!" msgstr "Проверьте, правильно ли вы ввели имя пользователя и пароль." #: html/password.php:268 #, fuzzy msgid "You have no permissions to change your password!" msgstr "У вас недостаточно прав для смены своего пароля." #: html/password.php:280 plugins/personal/password/class_password.inc:141 #: plugins/admin/users/class_userManagement.inc:330 #, php-format msgid "Check-hook reported a problem: %s. Password change canceled!" msgstr "" #: html/password.php:315 msgid "Session will not be encrypted." msgstr "Данные, передаваемые в течение этого сеанса, не будут зашифрованы." #: html/password.php:317 msgid "Enter SSL session" msgstr "Использовать шифрование SSL" #: html/index.php:45 #, php-format msgid "Your browser (%s) is blacklisted for the current theme!" msgstr "" #: html/index.php:72 #, php-format msgid "This session is not encrypted. Click %s to enter an encrypted session." msgstr "" #: html/index.php:72 #, fuzzy msgid "here" msgstr "Мобильный" #: html/index.php:78 msgid "The configured session lifetime will be overridden by php.ini settings!" msgstr "" #: html/index.php:179 #, fuzzy msgid "Smarty error" msgstr "Состояние системы" #: html/index.php:202 msgid "" "Your browser has cookies disabled: please enable cookies and reload this " "page before logging in!" msgstr "" #: html/index.php:233 msgid "Broken HTTP authentication setup!" msgstr "" #: html/index.php:241 msgid "Cannot find a valid user for the current HTTP authentication!" msgstr "" #: html/index.php:245 msgid "Cannot find a unique user for the current HTTP authentication!" msgstr "" #: html/index.php:289 #, fuzzy msgid "Please specify a valid user name!" msgstr "Введите корректное имя пользователя!" #: html/index.php:292 msgid "Please specify your password!" msgstr "Введите свой пароль!" #: html/index.php:304 #, fuzzy msgid "Authentication error" msgstr "Рабочая станция Windows" #: html/index.php:304 #, fuzzy msgid "Cannot retrieve user information for HTTP authentication!" msgstr "Не удается создать квоту IMAP. Ответ сервера: \"%s\"." #: html/index.php:364 #, fuzzy msgid "Account locked. Please contact your system administrator!" msgstr "" "Не удается начать сеанс на LDAP-сервере. Обратитесь к системному " "администратору." #: html/main.php:171 #, php-format msgid "Cannot locate file %s - please run %s to fix this" msgstr "" #: html/main.php:190 #, fuzzy msgid "PHP configuration" msgstr "Базы данных" #: html/main.php:191 msgid "" "Fatal error: Register globals is active. Please fix this in order to " "continue." msgstr "" #: html/main.php:220 #, fuzzy msgid "Your password is about to expire, please change your password!" msgstr "У вас недостаточно прав для смены своего пароля." #: html/main.php:295 msgid "Running out of memory!" msgstr "" #: html/main.php:355 #, php-format msgid "You're logged in as %s" msgstr "" #: html/main.php:358 #, fuzzy msgid "ACLs are disabled" msgstr "отключен" #: html/main.php:408 #, fuzzy msgid "Plug-in" msgstr "в" #: html/main.php:409 #, fuzzy, php-format msgid "Fatal error: Cannot find any plugin definitions for plugin %s!" msgstr "Не удается найти определение для модуля \"%s\"!" #: html/main.php:425 #, fuzzy msgid "Configuration Error" msgstr "Настроить" #: html/main.php:426 #, php-format msgid "" "Fatal error: not all POST variables have been transfered by PHP - please " "inform your administrator!" msgstr "" #: html/setup.php:73 #, fuzzy msgid "Smarty" msgstr "Запуск" #: html/helpviewer.php:64 msgid "Help browser" msgstr "" #: html/helpviewer.php:118 #, fuzzy msgid "There is no help file specified for this class" msgstr "Метод '%s' не описан в вашем файле конфигурации." #: html/helpviewer.php:268 #, fuzzy, php-format msgid "Help directory '%s' is not accessible, can't read any help files." msgstr "Недоступен каталог \"%s\", указанный как каталог компиляции!" #: plugins/personal/myaccount/password.tpl:4 #: plugins/personal/password/password.tpl:4 #, fuzzy msgid "" "To change your personal password use the fields below. The changes take " "effect immediately. Please memorize the new password, because you wouldn't " "be able to login without it." msgstr "" "В полях ниже вы можете изменить свой пароль. Изменения вступят в силу " "немедленно. Пожалуйста, запомните новый пароль, так как иначе вы не сможете " "войти в систему." #: plugins/personal/myaccount/password.tpl:10 #: plugins/personal/myaccount/password.tpl:39 #: plugins/personal/password/password.tpl:16 #: plugins/personal/password/password.tpl:45 #, fuzzy msgid "Password change dialog" msgstr "Сменить пароль" #: plugins/personal/myaccount/password.tpl:49 #: plugins/personal/password/password.tpl:55 #: plugins/admin/users/password.tpl:43 #, fuzzy msgid "Use proposal" msgstr "группы" #: plugins/personal/myaccount/password.tpl:67 #: plugins/personal/password/password.tpl:74 #: plugins/admin/users/password.tpl:61 #, fuzzy msgid "Manually specify a password" msgstr "Введите свой пароль!" #: plugins/personal/myaccount/password.tpl:97 #: plugins/personal/password/password.tpl:104 msgid "Clear fields" msgstr "Очистить поля" #: plugins/personal/myaccount/main.inc:118 #: plugins/personal/myaccount/class_MyAccount.inc:5 #: plugins/personal/posix/class_posixAccount.inc:1356 #: plugins/personal/password/class_password.inc:232 #: plugins/personal/generic/class_user.inc:1675 msgid "My account" msgstr "Моя учетная запись" #: plugins/personal/myaccount/class_MyAccount.inc:6 #, fuzzy msgid "Edit personal settings" msgstr "Атрибуты UNIX" #: plugins/personal/myaccount/nochange.tpl:2 #: plugins/personal/password/nochange.tpl:2 #, fuzzy msgid "You have no permission to change your password at this time" msgstr "У вас недостаточно прав для смены своего пароля." #: plugins/personal/myaccount/nochange.tpl:5 #, fuzzy msgid "Your password hash method will not be changed!" msgstr "У вас недостаточно прав для смены своего пароля." #: plugins/personal/myaccount/changed.tpl:3 #: plugins/personal/password/changed.tpl:3 #, fuzzy msgid "" "You've successfully changed your password. Remember to change all programs " "configured to use it as well." msgstr "" "Вы успешно сменили свой пароль. Не забудьте изменить нужные настройки " "использующих его программ." #: plugins/personal/posix/paste_generic.tpl:1 #: plugins/personal/posix/paste_generic.tpl:5 #: plugins/personal/posix/generic.tpl:1 #, fuzzy msgid "POSIX settings" msgstr "Атрибуты UNIX" #: plugins/personal/posix/paste_generic.tpl:6 #: plugins/personal/posix/paste_generic.tpl:9 #: plugins/personal/posix/generic.tpl:8 #: plugins/personal/posix/class_posixAccount.inc:899 #: plugins/personal/posix/class_posixAccount.inc:902 #: plugins/personal/posix/class_posixAccount.inc:977 #: plugins/personal/posix/class_posixAccount.inc:980 #: plugins/personal/posix/class_posixAccount.inc:1366 msgid "Home directory" msgstr "Домашний каталог" #: plugins/personal/posix/paste_generic.tpl:17 #: plugins/personal/posix/posix_shadow.tpl:2 #: plugins/personal/posix/generic.tpl:51 #: plugins/personal/generic/generic.tpl:34 #: plugins/personal/generic/generic.tpl:81 #, fuzzy msgid "Account settings" msgstr "Настройки Samba" #: plugins/personal/posix/paste_generic.tpl:19 #: plugins/personal/posix/generic.tpl:26 #: plugins/personal/posix/class_posixAccount.inc:1367 msgid "Primary group" msgstr "Основная группа" #: plugins/personal/posix/paste_generic.tpl:33 #: plugins/personal/posix/generic.tpl:60 msgid "Force UID/GID" msgstr "Указать UID/GID вручную" #: plugins/personal/posix/paste_generic.tpl:47 #: plugins/personal/posix/generic.tpl:75 #: plugins/personal/posix/class_posixAccount.inc:917 #: plugins/personal/posix/class_posixAccount.inc:920 #: plugins/admin/groups/class_group.inc:985 #: plugins/admin/groups/class_group.inc:988 #: plugins/admin/groups/class_group.inc:1080 msgid "GID" msgstr "GID" #: plugins/personal/posix/paste_generic.tpl:58 #: plugins/personal/posix/paste_generic.tpl:61 #: plugins/personal/posix/generic.tpl:89 #: plugins/generic/references/class_reference.inc:58 #: plugins/generic/references/class_reference.inc:64 msgid "Group membership" msgstr "Членство в группах" #: plugins/personal/posix/paste_generic.tpl:68 #: plugins/personal/posix/generic.tpl:92 msgid "(Warning: more than 16 groups are not supported by NFS!)" msgstr "" "(Предупреждение: NFS не поддерживает более 16 групп для одного пользователя!)" #: plugins/personal/posix/trustSelect/trust-filter.xml:17 #: plugins/personal/posix/groupSelect/group-filter.xml:16 #: plugins/admin/groups/singleUserSelect/singleUser-filter.xml:20 #: plugins/admin/groups/group-filter.xml:17 #: plugins/admin/groups/userSelect/user-filter.xml:20 #: plugins/admin/groups/userGroupSelect/selectUserGroup-filter.xml:21 #: plugins/admin/ogroups/objectSelect/selectObject-filter.xml:32 #: plugins/admin/ogroups/ogroup-filter.xml:18 #: plugins/admin/acl/acl-filter.xml:18 #: plugins/admin/departments/dep-filter.xml:17 #: plugins/admin/users/user-filter.xml:19 #, fuzzy msgid "Default filter" msgstr "Параметры загрузки" #: plugins/personal/posix/trustSelect/trust-list.xml:9 #: plugins/personal/posix/groupSelect/group-list.xml:10 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:10 #: plugins/admin/groups/userSelect/user-list.xml:10 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:11 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:11 #, fuzzy msgid "Please select the desired entries" msgstr "Язык по умолчанию" #: plugins/personal/posix/trustSelect/trust-list.xml:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:23 #: plugins/admin/ogroups/class_ogroupManagement.inc:187 msgid "Server" msgstr "Сервер" #: plugins/personal/posix/trustSelect/trust-list.xml:19 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:31 #: plugins/admin/ogroups/class_ogroupManagement.inc:189 msgid "Workstation" msgstr "Рабочая станция" #: plugins/personal/posix/trustSelect/trust-list.xml:26 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:39 #: plugins/admin/ogroups/class_ogroupManagement.inc:191 #, fuzzy msgid "Terminal" msgstr "Терминалы" #: plugins/personal/posix/trustSelect/class_trustSelect.inc:29 #, fuzzy msgid "Trust machine selection" msgstr "Настройки Samba" #: plugins/personal/posix/groupSelect/class_groupSelect.inc:29 #, fuzzy msgid "Group selection" msgstr "Настройки Samba" #: plugins/personal/posix/groupSelect/group-list.xml:13 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/addons/propertyEditor/property-list.xml:73 #: plugins/admin/groups/group-list.xml:15 #: plugins/admin/groups/group-list.xml:79 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:23 #: plugins/admin/ogroups/ogroup-list.xml:79 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:71 #: plugins/admin/ogroups/class_ogroupManagement.inc:184 msgid "Group" msgstr "Группа" #: plugins/personal/posix/posix_shadow.tpl:12 msgid "User must change password on first login" msgstr "Пользователь должен сменить пароль при первом входе в систему" #: plugins/personal/posix/posix_shadow.tpl:59 #, fuzzy msgid "Password expiration settings" msgstr "Почтовые настройки пользователя" #: plugins/personal/posix/posix_shadow.tpl:62 msgid "Password expires on" msgstr "Срок действия пароля истекает" #: plugins/personal/posix/generic.tpl:6 plugins/admin/ogroups/generic.tpl:5 #, fuzzy msgid "Generic settings" msgstr "Общая информация о пользователе" #: plugins/personal/posix/generic.tpl:16 #: plugins/personal/posix/class_posixAccount.inc:1368 msgid "Shell" msgstr "Оболочка" #: plugins/personal/posix/generic.tpl:37 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 msgid "Status" msgstr "Состояние" #: plugins/personal/posix/generic.tpl:42 #, fuzzy msgid "Last log-on" msgstr "Список" #: plugins/personal/posix/generic.tpl:108 #, fuzzy msgid "Account permissions" msgstr "Настройки Samba" #: plugins/personal/posix/generic.tpl:113 msgid "SSH keys" msgstr "" #: plugins/personal/posix/generic.tpl:114 msgid "Edit public ssh keys..." msgstr "" #: plugins/personal/posix/class_posixAccount.inc:37 #: plugins/personal/posix/class_posixAccount.inc:291 #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/personal/posix/class_posixAccount.inc:313 #: plugins/personal/posix/class_posixAccount.inc:316 #: plugins/admin/groups/class_groupManagement.inc:157 #: plugins/admin/users/class_userManagement.inc:894 msgid "POSIX" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:38 #, fuzzy msgid "Edit users POSIX settings" msgstr "Атрибуты UNIX" #: plugins/personal/posix/class_posixAccount.inc:152 #, fuzzy msgid "expired" msgstr "Экспорт" #: plugins/personal/posix/class_posixAccount.inc:154 msgid "grace time active" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:157 #: plugins/personal/posix/class_posixAccount.inc:159 #: plugins/personal/posix/class_posixAccount.inc:161 #, fuzzy msgid "active" msgstr "Личный" #: plugins/personal/posix/class_posixAccount.inc:157 #, fuzzy msgid "password not changeable" msgstr "Новый пароль" #: plugins/personal/posix/class_posixAccount.inc:159 #, fuzzy msgid "password expired" msgstr "Срок действия пароля истекает" #: plugins/personal/posix/class_posixAccount.inc:235 msgid "automatic" msgstr "автоматически" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:173 #: plugins/admin/users/class_userManagement.inc:902 msgid "Samba" msgstr "Samba" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:197 #: plugins/admin/users/class_userManagement.inc:910 msgid "Environment" msgstr "Окружение" #: plugins/personal/posix/class_posixAccount.inc:415 #, php-format msgid "Password can't be changed up to %s days after last change" msgstr "Пароль нельзя изменить в течение %s дн. с последней смены (shadowMin)" #: plugins/personal/posix/class_posixAccount.inc:419 #, php-format msgid "Password must be changed after %s days" msgstr "Пароль должен быть изменен по истечении %s дн. (shadowMax)" #: plugins/personal/posix/class_posixAccount.inc:423 #, fuzzy, php-format msgid "Disable account after %s days of inactivity after password expiry" msgstr "" "Отключить учетную запись, если срок действия пароля истек и прошло %s дн. " "бездействия (shadowInactive)" #: plugins/personal/posix/class_posixAccount.inc:427 #, fuzzy, php-format msgid "Warn user %s days before password expiry" msgstr "" "Предупреждать пользователей за %s дн. до истечения срока действия пароля " "(shadowWarning)" #: plugins/personal/posix/class_posixAccount.inc:692 msgid "Timeout while waiting for lock. Ignoring lock!" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:750 #: plugins/personal/posix/class_posixAccount.inc:1043 msgid "Group of user" msgstr "Группа пользователя" #: plugins/personal/posix/class_posixAccount.inc:815 msgid "" "A duplicated UID number was written for this user. If this was not intended " "please verify all used uidNumbers!" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:933 #: plugins/personal/posix/class_posixAccount.inc:986 #, fuzzy msgid "shadowMin" msgstr "Затенение" #: plugins/personal/posix/class_posixAccount.inc:938 #: plugins/personal/posix/class_posixAccount.inc:991 #, fuzzy msgid "shadowMax" msgstr "Затенение" #: plugins/personal/posix/class_posixAccount.inc:943 #: plugins/personal/posix/class_posixAccount.inc:996 #, fuzzy msgid "shadowWarning" msgstr "Затенение" #: plugins/personal/posix/class_posixAccount.inc:957 #: plugins/personal/posix/class_posixAccount.inc:1010 #, fuzzy msgid "shadowInactive" msgstr "Затенение" #: plugins/personal/posix/class_posixAccount.inc:1061 #: plugins/personal/posix/class_posixAccount.inc:1537 #, fuzzy msgid "all" msgstr "Все" #: plugins/personal/posix/class_posixAccount.inc:1352 #, fuzzy msgid "POSIX account" msgstr "Аккаунт FTP" #: plugins/personal/posix/class_posixAccount.inc:1370 #, fuzzy msgid "Group ID" msgstr "Группа" #: plugins/personal/posix/class_posixAccount.inc:1372 #, fuzzy msgid "Shadow last changed" msgstr "Показать телефоны" #: plugins/personal/posix/class_posixAccount.inc:1373 #, fuzzy msgid "Last login" msgstr "Список" #: plugins/personal/posix/class_posixAccount.inc:1375 #, fuzzy msgid "Force password change on login" msgstr "Сменить пароль" #: plugins/personal/posix/class_posixAccount.inc:1376 #, fuzzy msgid "Shadow min" msgstr "Затенение" #: plugins/personal/posix/class_posixAccount.inc:1377 #, fuzzy msgid "Shadow max" msgstr "Затенение" #: plugins/personal/posix/class_posixAccount.inc:1378 #, fuzzy msgid "Shadow warning" msgstr "Затенение" #: plugins/personal/posix/class_posixAccount.inc:1379 #, fuzzy msgid "Shadow inactive" msgstr "Затенение" #: plugins/personal/posix/class_posixAccount.inc:1380 #, fuzzy msgid "Shadow expire" msgstr "Показать людей" #: plugins/personal/posix/class_posixAccount.inc:1381 msgid "Public SSH key" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1382 #, fuzzy msgid "System trust model" msgstr "Системные доверия" #: plugins/personal/posix/class_posixAccount.inc:1512 msgid "some" msgstr "" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "disabled" msgstr "отключен" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "full access" msgstr "полный доступ" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:174 msgid "allow access to these hosts" msgstr "разрешить доступ только на эти хосты" #: plugins/personal/posix/trustModeDialog/generic.tpl:2 #: plugins/admin/groups/class_group.inc:1084 #: plugins/admin/ogroups/class_ogroup.inc:888 msgid "System trust" msgstr "Системные доверия" #: plugins/personal/posix/trustModeDialog/generic.tpl:5 #: plugins/personal/posix/trustModeDialog/generic.tpl:21 #, fuzzy msgid "Trust mode" msgstr "Режим" #: plugins/personal/password/password.tpl:10 #, fuzzy msgid "Your Password has expired. Please choose a new password." msgstr "У вас недостаточно прав для смены своего пароля." #: plugins/personal/password/class_password.inc:27 #, fuzzy msgid "Change user password" msgstr "Сменить пароль" #: plugins/personal/password/class_password.inc:161 msgid "" "The password you've entered as your current password doesn't match the real " "one." msgstr "Введенный вами текущий пароль не совпадает с реальным." #: plugins/personal/password/class_password.inc:164 #, fuzzy msgid "You have no permission to change your password." msgstr "У вас недостаточно прав для смены своего пароля." #: plugins/personal/password/class_password.inc:228 #, fuzzy msgid "User password" msgstr "Новый пароль" #: plugins/personal/password/class_password.inc:241 msgid "Script to be called before a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:250 msgid "Script to be called after a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:259 msgid "Script to be called before a password gets unlocked." msgstr "" #: plugins/personal/password/class_password.inc:268 msgid "Script to be called after a password gets unlocked." msgstr "" #: plugins/personal/generic/generic_certs.tpl:3 #: plugins/personal/generic/class_user.inc:550 #: plugins/personal/generic/class_user.inc:572 #: plugins/personal/generic/generic.tpl:226 msgid "Certificates" msgstr "Сертификаты" #: plugins/personal/generic/generic_certs.tpl:5 #, fuzzy msgid "The users standard certificate" msgstr "Стандартный сертификат" #: plugins/personal/generic/generic_certs.tpl:8 msgid "Standard certificate" msgstr "Стандартный сертификат" #: plugins/personal/generic/generic_certs.tpl:22 #: plugins/personal/generic/generic_certs.tpl:48 #: plugins/personal/generic/generic_certs.tpl:74 #: plugins/addons/propertyEditor/property-list.xml:109 #: plugins/admin/groups/group-list.xml:98 #: plugins/admin/ogroups/ogroup-list.xml:98 plugins/admin/acl/acl-list.xml:95 #: plugins/admin/acl/acl-list.xml:144 #: plugins/admin/departments/dep-list.xml:160 #: plugins/admin/departments/dep-list.xml:181 #: plugins/admin/users/user-list.xml:121 msgid "Remove" msgstr "Удалить" #: plugins/personal/generic/generic_certs.tpl:31 #, fuzzy msgid "The users S/MIME certificate" msgstr "Сертификат S/MIME" #: plugins/personal/generic/generic_certs.tpl:34 msgid "S/MIME certificate" msgstr "Сертификат S/MIME" #: plugins/personal/generic/generic_certs.tpl:57 #, fuzzy msgid "The users PKCS12 certificate" msgstr "Сертификат PKCS12" #: plugins/personal/generic/generic_certs.tpl:60 msgid "PKCS12 certificate" msgstr "Сертификат PKCS12" #: plugins/personal/generic/generic_certs.tpl:83 #: plugins/personal/generic/class_user.inc:1663 msgid "Certificate serial number" msgstr "Серийный номер сертификата" #: plugins/personal/generic/paste_generic.tpl:3 #, fuzzy msgid "Paste user" msgstr "Дата" #: plugins/personal/generic/paste_generic.tpl:6 #: plugins/personal/generic/generic.tpl:1 #: plugins/personal/generic/generic.tpl:3 msgid "Personal information" msgstr "Личная информация" #: plugins/personal/generic/paste_generic.tpl:8 #: plugins/personal/generic/generic.tpl:37 plugins/admin/users/template.tpl:23 #, fuzzy msgid "Last name" msgstr "Список" #: plugins/personal/generic/paste_generic.tpl:12 #: plugins/personal/generic/generic.tpl:51 plugins/admin/users/template.tpl:27 #, fuzzy msgid "First name" msgstr "Список" #: plugins/personal/generic/paste_generic.tpl:24 #, fuzzy msgid "Clear password" msgstr "Новый пароль" #: plugins/personal/generic/paste_generic.tpl:25 #, fuzzy msgid "Set new password" msgstr "Изменить пароль" #: plugins/personal/generic/paste_generic.tpl:31 #: plugins/personal/generic/generic.tpl:8 #: plugins/personal/generic/generic_picture.tpl:2 #, fuzzy msgid "The users picture" msgstr "Изображение" #: plugins/personal/generic/paste_generic.tpl:43 #: plugins/personal/generic/generic_picture.tpl:13 msgid "Remove picture" msgstr "Удалить изображение" #: plugins/personal/generic/class_user.inc:38 #, fuzzy msgid "Edit organizational user settings" msgstr "Дополнительные записи в fstab" #: plugins/personal/generic/class_user.inc:297 msgid "Please add a single IP address or a network/net mask combination!" msgstr "" #: plugins/personal/generic/class_user.inc:339 msgid "female" msgstr "женский" #: plugins/personal/generic/class_user.inc:339 msgid "male" msgstr "мужской" #: plugins/personal/generic/class_user.inc:395 #, fuzzy msgid "Password configuration" msgstr "Системная информация" #: plugins/personal/generic/class_user.inc:429 msgid "Cannot upload file!" msgstr "" #: plugins/personal/generic/class_user.inc:522 #, fuzzy msgid "Serial number" msgstr "Телефонные номера" #: plugins/personal/generic/class_user.inc:544 #: plugins/personal/generic/class_user.inc:1716 #: plugins/personal/generic/generic_picture.tpl:1 #, fuzzy msgid "User picture" msgstr "Изображение" #: plugins/personal/generic/class_user.inc:569 msgid "(Not supported certificate types are marked as invalid.)" msgstr "" #: plugins/personal/generic/class_user.inc:579 #, php-format msgid "Certificate is valid from %s to %s and is currently %s." msgstr "" #: plugins/personal/generic/class_user.inc:582 msgid "valid" msgstr "" #: plugins/personal/generic/class_user.inc:583 msgid "invalid" msgstr "" #: plugins/personal/generic/class_user.inc:588 #, fuzzy msgid "No certificate installed" msgstr "Изменить сертификаты" #: plugins/personal/generic/class_user.inc:614 #, fuzzy msgid "The selected password method is no longer available." msgstr "У выбранного приложения нет параметров." #: plugins/personal/generic/class_user.inc:1051 msgid "" "Cannot save user picture: GOsa requires the package 'imagemagick' or 'php5-" "imagick' to be installed!" msgstr "" #: plugins/personal/generic/class_user.inc:1177 msgid "Cannot build RDN: no + allowed to build sub RDN!" msgstr "" #: plugins/personal/generic/class_user.inc:1184 msgid "Cannot build RDN: attribute is not defined!" msgstr "" #: plugins/personal/generic/class_user.inc:1202 msgid "Cannot build RDN: invalid attribute parameters!" msgstr "" #: plugins/personal/generic/class_user.inc:1273 #, fuzzy msgid "The selected password method requires initial configuration!" msgstr "У выбранного приложения нет параметров." #: plugins/personal/generic/class_user.inc:1349 #: plugins/personal/generic/class_user.inc:1739 #: plugins/personal/generic/class_user.inc:1842 #: plugins/personal/generic/generic.tpl:201 msgid "Homepage" msgstr "Домашняя страница" #: plugins/personal/generic/class_user.inc:1354 #: plugins/personal/generic/class_user.inc:1845 #: plugins/personal/generic/generic.tpl:394 #: plugins/personal/generic/generic.tpl:574 #: plugins/admin/groups/class_groupManagement.inc:181 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:55 #: plugins/admin/ogroups/class_ogroupManagement.inc:188 #: plugins/admin/departments/organization.tpl:109 #: plugins/admin/departments/class_department.inc:376 #: plugins/admin/departments/generic.tpl:110 #: plugins/admin/users/class_userManagement.inc:918 msgid "Phone" msgstr "Телефон" #: plugins/personal/generic/class_user.inc:1357 #: plugins/personal/generic/class_user.inc:1848 #: plugins/personal/generic/generic.tpl:419 #: plugins/personal/generic/generic.tpl:586 #: plugins/admin/departments/organization.tpl:117 #: plugins/admin/departments/class_department.inc:379 #: plugins/admin/departments/class_department.inc:683 #: plugins/admin/departments/class_organizationGeneric.inc:133 #: plugins/admin/departments/generic.tpl:118 msgid "Fax" msgstr "Факс" #: plugins/personal/generic/class_user.inc:1360 #: plugins/personal/generic/class_user.inc:1851 #: plugins/personal/generic/generic.tpl:403 msgid "Mobile" msgstr "Мобильный" #: plugins/personal/generic/class_user.inc:1363 #: plugins/personal/generic/class_user.inc:1854 #: plugins/personal/generic/generic.tpl:411 msgid "Pager" msgstr "Пейджер" #: plugins/personal/generic/class_user.inc:1483 #, fuzzy msgid "Cannot open certificate!" msgstr "Невозможно выбрать базу данных!" #: plugins/personal/generic/class_user.inc:1655 #: plugins/personal/generic/generic.tpl:526 msgid "Unit" msgstr "Подразделение" #: plugins/personal/generic/class_user.inc:1656 #: plugins/personal/generic/generic.tpl:551 msgid "House identifier" msgstr "Номер дома" #: plugins/personal/generic/class_user.inc:1657 #: plugins/personal/generic/generic.tpl:468 msgid "Vocation" msgstr "Специальность" #: plugins/personal/generic/class_user.inc:1658 #: plugins/personal/generic/generic.tpl:595 msgid "Last delivery" msgstr "Последняя доставка" #: plugins/personal/generic/class_user.inc:1659 #: plugins/personal/generic/generic.tpl:517 msgid "Person locality" msgstr "Местоположение сотрудника" #: plugins/personal/generic/class_user.inc:1660 #: plugins/personal/generic/generic.tpl:476 msgid "Unit description" msgstr "Описание подразделения" #: plugins/personal/generic/class_user.inc:1661 #: plugins/personal/generic/generic.tpl:485 msgid "Subject area" msgstr "Область деятельности" #: plugins/personal/generic/class_user.inc:1662 #: plugins/personal/generic/generic.tpl:494 msgid "Functional title" msgstr "Должность" #: plugins/personal/generic/class_user.inc:1666 #: plugins/personal/generic/generic.tpl:503 plugins/admin/acl/acl-list.xml:23 #: plugins/admin/acl/acl-list.xml:82 plugins/admin/acl/class_aclRole.inc:714 msgid "Role" msgstr "Роль" #: plugins/personal/generic/class_user.inc:1667 #: plugins/personal/generic/generic.tpl:543 msgid "Postal code" msgstr "Почтовый индекс" #: plugins/personal/generic/class_user.inc:1671 #, fuzzy msgid "Generic user settings" msgstr "Общая информация о пользователе" #: plugins/personal/generic/class_user.inc:1692 msgid "" "Pattern for the generation of user DNs. Please read the FAQ for details." msgstr "" #: plugins/personal/generic/class_user.inc:1706 #, fuzzy msgid "Allow definition of custom filters" msgstr "Настроить" #: plugins/personal/generic/class_user.inc:1712 #: plugins/personal/generic/generic.tpl:140 msgid "Sex" msgstr "Пол" #: plugins/personal/generic/class_user.inc:1713 #: plugins/personal/generic/generic.tpl:154 #, fuzzy msgid "Preferred language" msgstr "Язык по умолчанию" #: plugins/personal/generic/class_user.inc:1718 #, fuzzy msgid "Login restrictions" msgstr "Срок действия пароля истекает" #: plugins/personal/generic/class_user.inc:1721 #: plugins/personal/generic/generic.tpl:306 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:15 #: plugins/admin/ogroups/class_ogroupManagement.inc:186 #: plugins/admin/departments/dep-list.xml:55 #: plugins/admin/departments/dep-list.xml:71 #: plugins/admin/departments/dep-list.xml:138 #: plugins/admin/departments/class_departmentManagement.inc:253 msgid "Department" msgstr "Подразделение" #: plugins/personal/generic/class_user.inc:1723 #: plugins/personal/generic/generic.tpl:339 #: plugins/personal/generic/generic.tpl:355 #: plugins/admin/departments/dcObject.tpl:39 #: plugins/admin/departments/country.tpl:39 #: plugins/admin/departments/class_countryGeneric.inc:93 #: plugins/admin/departments/organization.tpl:51 #: plugins/admin/departments/class_department.inc:684 #: plugins/admin/departments/class_domain.inc:93 #: plugins/admin/departments/class_organizationGeneric.inc:127 #: plugins/admin/departments/generic.tpl:51 #: plugins/admin/departments/locality.tpl:39 #: plugins/admin/departments/class_localityGeneric.inc:93 #: plugins/admin/departments/class_dcObject.inc:92 #: plugins/admin/departments/domain.tpl:39 #, fuzzy msgid "Manager" msgstr "Пользователи домена" #: plugins/personal/generic/class_user.inc:1727 #, fuzzy msgid "Room number" msgstr "Телефонные номера" #: plugins/personal/generic/class_user.inc:1728 #, fuzzy msgid "Telephone number" msgstr "Телефонные номера" #: plugins/personal/generic/class_user.inc:1729 #, fuzzy msgid "Pager number" msgstr "Телефонные номера" #: plugins/personal/generic/class_user.inc:1730 #, fuzzy msgid "Mobile number" msgstr "Домашний телефон" #: plugins/personal/generic/class_user.inc:1731 #, fuzzy msgid "Fax number" msgstr "Терминал" #: plugins/personal/generic/class_user.inc:1733 #: plugins/personal/generic/generic.tpl:444 #: plugins/admin/departments/organization.tpl:86 #: plugins/admin/departments/class_department.inc:679 #: plugins/admin/departments/class_organizationGeneric.inc:129 #: plugins/admin/departments/generic.tpl:87 msgid "State" msgstr "Адм. единица" #: plugins/personal/generic/class_user.inc:1735 #: plugins/personal/generic/generic.tpl:183 #: plugins/admin/departments/class_organizationGeneric.inc:131 #, fuzzy msgid "Postal address" msgstr "Почтовый индекс" #: plugins/personal/generic/class_user.inc:1740 #, fuzzy msgid "User password method" msgstr "Хэширование паролей" #: plugins/personal/generic/class_user.inc:1741 #, fuzzy msgid "User certificates" msgstr "Стандартный сертификат" #: plugins/personal/generic/class_user.inc:1949 #, fuzzy msgid "Entries differ" msgstr "Группа пользователя" #: plugins/personal/generic/generic.tpl:21 msgid "Change picture" msgstr "Сменить изображение" #: plugins/personal/generic/generic.tpl:41 #: plugins/personal/generic/generic.tpl:55 #: plugins/personal/generic/generic.tpl:73 plugins/admin/groups/generic.tpl:14 msgid "Multiple edit" msgstr "" #: plugins/personal/generic/generic.tpl:83 #, fuzzy msgid "Template name" msgstr "Шаблон" #: plugins/personal/generic/generic.tpl:185 #: plugins/personal/generic/generic.tpl:452 #: plugins/admin/departments/organization.tpl:102 #: plugins/admin/departments/class_department.inc:681 #: plugins/admin/departments/generic.tpl:103 msgid "Address" msgstr "Адрес" #: plugins/personal/generic/generic.tpl:193 msgid "Private phone" msgstr "Личный телефон" #: plugins/personal/generic/generic.tpl:209 msgid "Password storage" msgstr "Хэширование паролей" #: plugins/personal/generic/generic.tpl:229 msgid "Edit certificates" msgstr "Изменить сертификаты" #: plugins/personal/generic/generic.tpl:241 msgid "Restrict login to" msgstr "" #: plugins/personal/generic/generic.tpl:249 #: plugins/personal/generic/generic.tpl:269 msgid "IP or network" msgstr "" #: plugins/personal/generic/generic.tpl:285 #: plugins/personal/generic/generic.tpl:288 #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 msgid "Organizational information" msgstr "Информация об организации" #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 #, fuzzy msgid "part" msgstr "Запуск" #: plugins/personal/generic/generic.tpl:314 msgid "Department No." msgstr "Номер подразделения" #: plugins/personal/generic/generic.tpl:322 msgid "Employee No." msgstr "Номер работника" #: plugins/personal/generic/generic.tpl:385 #: plugins/personal/generic/generic.tpl:566 msgid "Room No." msgstr "Номер комнаты" #: plugins/personal/generic/generic.tpl:580 msgid "Please use the phone tab" msgstr "Воспользуйтесь закладкой \"Телефон\"" #: plugins/addons/dyngroup/dyngroup.tpl:1 #, fuzzy msgid "List of dynamic rules" msgstr "Список групп" #: plugins/addons/dyngroup/dyngroup.tpl:3 msgid "Labeled URI definitions" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:6 msgid "Scope" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:7 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:132 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:134 #, fuzzy msgid "Attribute" msgstr "Атрибут DN пользователей" #: plugins/addons/dyngroup/dyngroup.tpl:8 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:139 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 #: plugins/generic/references/class_aclResolver.inc:169 #, fuzzy msgid "Filter" msgstr "Фильтры" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:118 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:340 msgid "Labeled URI" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 msgid "Surrounding brackets are required!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:149 #, php-format msgid "The given filter '%s' for entry %s seems to be invalid!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:179 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:181 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:332 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:333 #, fuzzy msgid "Dynamic object" msgstr "Объект" #: plugins/addons/propertyEditor/property-filter.xml:15 #, fuzzy msgid "Effective properties" msgstr "Изменить свойства" #: plugins/addons/propertyEditor/property-filter.xml:29 #, fuzzy msgid "Modified properties" msgstr "Изменить свойства" #: plugins/addons/propertyEditor/property-filter.xml:43 #, fuzzy msgid "All properties" msgstr "Изменить свойства" #: plugins/addons/propertyEditor/property-filter.xml:57 #, fuzzy msgid "LDAP properties" msgstr "Свойства" #: plugins/addons/propertyEditor/property-filter.xml:71 #, fuzzy msgid "Search for property groups" msgstr "Показать основные группы" #: plugins/addons/propertyEditor/migrate.tpl:3 msgid "Property migration assistant" msgstr "" #: plugins/addons/propertyEditor/migrate.tpl:3 #, fuzzy msgid "Migration steps left" msgstr "Дата" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:31 #, fuzzy, php-format msgid "Migration of property '%s'" msgstr "Дата" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:34 #, fuzzy, php-format msgid "GOsa has detected objects outside of the configured storage point (%s)." msgstr "Вы собираетесь удалить объект %s." #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:161 msgid "Objects that will be added" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:169 msgid "Objects that will be moved" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:177 #, fuzzy, php-format msgid "Moving object '%s' to '%s'" msgstr "Список подразделений" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:204 #, php-format msgid "Migration failed for object %s: DN already exists!" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:208 #, php-format msgid "Migration failed for object %s: please check if it already exists!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:3 #, fuzzy msgid "Warning message" msgstr "Домашняя страница" #: plugins/addons/propertyEditor/property-list.tpl:9 msgid "" "Modifying properties may break your setup, destroy or mess up your LDAP " "database, lead to security holes or it can even make a login impossible!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:10 msgid "" "Since configuration properties are stored in the LDAP database a copy/backup " "can be handy." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:14 msgid "" "If you've debarred yourself, you can try to set 'ignoreLdapProperties' to " "'true' in your gosa.conf main section. This will make GOsa ignore LDAP based " "property values." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:22 msgid "" "I understand that there are certain risks, but I want to modify properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:38 msgid "Ignoring LDAP defined properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:77 msgid "Undo" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:1 #, fuzzy msgid "Command verifier" msgstr "и" #: plugins/addons/propertyEditor/commandVerifier.tpl:3 msgid "" "Here you can execute commands in the way GOsa does and check the generated " "results or errors. This can be very useful especially for the post events " "(postcreate, postmodify and postremove) due to the fact that these hook are " "executed silently." msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:8 msgid "" "Please be careful here, all commands will really be executed on your machine " "and may break things!" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:15 msgid "The command to check for" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:17 #, fuzzy msgid "Test" msgstr "Таймаут (с)" #: plugins/addons/propertyEditor/class_commandVerifier.inc:56 msgid "Results" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:6 #, fuzzy msgid "Preferences" msgstr "Ссылки" #: plugins/addons/propertyEditor/class_propertyEditor.inc:7 msgid "" "Configure global and special GOsa settings like hooks and plug-in parameters" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:206 #, fuzzy msgid "No description" msgstr "Описание подразделения" #: plugins/addons/propertyEditor/class_propertyEditor.inc:251 msgid "Test the given command." msgstr "" #: plugins/addons/propertyEditor/property-list.xml:11 #, fuzzy msgid "List of configuration settings" msgstr "Почтовые настройки пользователя" #: plugins/addons/propertyEditor/property-list.xml:16 #, fuzzy msgid "Property not used" msgstr "Группа пользователя" #: plugins/addons/propertyEditor/property-list.xml:24 msgid "Property will be restored" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:32 #, fuzzy msgid "Modified property" msgstr "Личная информация" #: plugins/addons/propertyEditor/property-list.xml:40 #, fuzzy msgid "Property configured in LDAP" msgstr "Настроить" #: plugins/addons/propertyEditor/property-list.xml:48 #, fuzzy msgid "Property configured in config file" msgstr "Настроить" #: plugins/addons/propertyEditor/property-list.xml:81 #, fuzzy msgid "Class" msgstr "Выбрать" #: plugins/addons/propertyEditor/property-list.xml:89 #, fuzzy msgid "Value" msgstr "мужской" #: plugins/addons/propertyEditor/property-list.xml:125 msgid "Restore to default" msgstr "" #: plugins/admin/groups/paste_generic.tpl:1 #, fuzzy msgid "Group settings" msgstr "Настройки Samba" #: plugins/admin/groups/paste_generic.tpl:2 #, fuzzy msgid "Paste group settings" msgstr "Настройки Samba" #: plugins/admin/groups/paste_generic.tpl:5 #: plugins/admin/groups/generic.tpl:11 #: plugins/admin/ogroups/paste_generic.tpl:4 #: plugins/admin/ogroups/generic.tpl:7 msgid "Group name" msgstr "Группа" #: plugins/admin/groups/paste_generic.tpl:8 #: plugins/admin/groups/generic.tpl:17 #, fuzzy msgid "POSIX name of the group" msgstr "Имя группы, соответствующее стандарту POSIX" #: plugins/admin/groups/paste_generic.tpl:13 #: plugins/admin/groups/generic.tpl:59 #, fuzzy msgid "Normally IDs are auto-generated, select to specify manually" msgstr "" "Обычно идентификаторы создаются автоматически, но вы можете выбрать указание " "вручную" #: plugins/admin/groups/paste_generic.tpl:15 #: plugins/admin/groups/generic.tpl:62 msgid "Force GID" msgstr "Указать GID вручную" #: plugins/admin/groups/paste_generic.tpl:18 #: plugins/admin/groups/generic.tpl:65 msgid "Forced ID number" msgstr "Указанный вручную GID" #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:14 #: plugins/admin/groups/userSelect/user-list.xml:14 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:15 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:63 #: plugins/admin/ogroups/class_ogroupManagement.inc:183 #: plugins/admin/users/user-list.xml:23 plugins/admin/users/user-list.xml:95 msgid "User" msgstr "Пользователь" #: plugins/admin/groups/singleUserSelect/class_singleUserSelect.inc:29 #: plugins/admin/groups/userSelect/class_userSelect.inc:26 #, fuzzy msgid "User selection" msgstr "Настройки Samba" #: plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 #, fuzzy msgid "Cannot find group SID in your configuration!" msgstr "Не могу найти SID в базе LDAP или в сонфигурационном файле!" #: plugins/admin/groups/class_group.inc:310 msgid "Samba group" msgstr "Группа Samba" #: plugins/admin/groups/class_group.inc:310 #, fuzzy msgid "Domain administrators" msgstr "Администраторы домена" #: plugins/admin/groups/class_group.inc:310 msgid "Domain users" msgstr "Пользователи домена" #: plugins/admin/groups/class_group.inc:311 msgid "Domain guests" msgstr "Непривилегированные пользователи домена" #: plugins/admin/groups/class_group.inc:316 #, php-format msgid "Special group (%d)" msgstr "Специальная группа (%d)" #: plugins/admin/groups/class_group.inc:483 #, php-format msgid "Adding UID '%s' to group '%s' failed: cannot find user object!" msgstr "" #: plugins/admin/groups/class_group.inc:489 #, php-format msgid "Add UID '%s' to group '%s' failed: UID is used more than once!" msgstr "" #: plugins/admin/groups/class_group.inc:772 #, fuzzy, php-format msgid "Cannot find any SID for '%s'!" msgstr "Удалить" #: plugins/admin/groups/class_group.inc:777 #, fuzzy, php-format msgid "Cannot find any RIDBASE for '%s'!" msgstr "Удалить" #: plugins/admin/groups/class_group.inc:871 #, php-format msgid "The gidNumber '%s' is already in use by %s!" msgstr "" #: plugins/admin/groups/class_group.inc:1055 #, fuzzy msgid "Generic group settings" msgstr "Общая информация о пользователе" #: plugins/admin/groups/class_group.inc:1068 #, fuzzy msgid "RDN for object group storage." msgstr "Название группы" #: plugins/admin/groups/class_group.inc:1082 #, fuzzy msgid "Samba group type" msgstr "Группа Samba" #: plugins/admin/groups/class_group.inc:1083 #, fuzzy msgid "Samba domain name" msgstr "Домашний каталог Samba" #: plugins/admin/groups/class_group.inc:1085 #, fuzzy msgid "Phone pickup group" msgstr "Члены телефонной группы" #: plugins/admin/groups/class_group.inc:1086 #, fuzzy msgid "Nagios group" msgstr "Контакт" #: plugins/admin/groups/class_group.inc:1088 #, fuzzy msgid "Group member" msgstr "Члены группы" #: plugins/admin/groups/class_groupManagement.inc:26 msgid "" "Manage aspects of groups like members, POSIX, desktop, samba and mail " "settings" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:100 #: plugins/admin/ogroups/class_ogroupManagement.inc:115 #: plugins/admin/users/class_userManagement.inc:196 #, fuzzy msgid "Infrastructure error" msgstr "Ошибка LDAP:" #: plugins/admin/groups/class_groupManagement.inc:158 #: plugins/admin/users/class_userManagement.inc:895 #, fuzzy msgid "Edit POSIX properties" msgstr "Изменить свойства" #: plugins/admin/groups/class_groupManagement.inc:166 #: plugins/admin/users/class_userManagement.inc:899 #, fuzzy msgid "Edit mail properties" msgstr "Изменить свойства" #: plugins/admin/groups/class_groupManagement.inc:174 #: plugins/admin/users/class_userManagement.inc:903 #, fuzzy msgid "Edit samba properties" msgstr "Изменить свойства" #: plugins/admin/groups/class_groupManagement.inc:182 #: plugins/admin/users/class_userManagement.inc:919 #, fuzzy msgid "Edit phone properties" msgstr "Изменить свойства" #: plugins/admin/groups/class_groupManagement.inc:189 #, fuzzy msgid "Menu" msgstr "Принтер" #: plugins/admin/groups/class_groupManagement.inc:190 #, fuzzy msgid "Edit start menu properties" msgstr "Изменить свойства" #: plugins/admin/groups/class_groupManagement.inc:198 #: plugins/admin/users/class_userManagement.inc:911 #, fuzzy msgid "Edit environment properties" msgstr "Изменить свойства" #: plugins/admin/groups/group-filter.xml:31 #, fuzzy msgid "Default filter2" msgstr "Параметры загрузки" #: plugins/admin/groups/generic.tpl:28 plugins/admin/ogroups/generic.tpl:18 msgid "Descriptive text for this group" msgstr "Описание группы" #: plugins/admin/groups/generic.tpl:75 plugins/admin/groups/generic.tpl:102 msgid "Select to create a samba conform group" msgstr "Создать группу для работы с Samba" #: plugins/admin/groups/generic.tpl:87 plugins/admin/groups/generic.tpl:110 msgid "in domain" msgstr "в домене" #: plugins/admin/groups/generic.tpl:131 msgid "Members are in a phone pickup group" msgstr "Члены телефонной группы" #: plugins/admin/groups/generic.tpl:146 #, fuzzy msgid "Members are in a Nagios group" msgstr "Члены телефонной группы" #: plugins/admin/groups/generic.tpl:175 plugins/admin/ogroups/generic.tpl:41 msgid "The group members are part of a dyn-group and cannot be managed!" msgstr "" #: plugins/admin/groups/generic.tpl:188 #, fuzzy msgid "Common group members" msgstr "Показать группы" #: plugins/admin/groups/generic.tpl:197 #, fuzzy msgid "Partial group members" msgstr "Члены группы" #: plugins/admin/groups/generic.tpl:202 msgid "Group members" msgstr "Члены группы" #: plugins/admin/groups/group-list.xml:11 msgid "List of groups" msgstr "Список групп" #: plugins/admin/groups/group-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:57 #: plugins/admin/departments/dcObject.tpl:8 #: plugins/admin/departments/dcObject.tpl:9 #: plugins/admin/departments/country.tpl:8 #: plugins/admin/departments/country.tpl:9 #: plugins/admin/departments/organization.tpl:7 #: plugins/admin/departments/organization.tpl:9 #: plugins/admin/departments/generic.tpl:7 #: plugins/admin/departments/generic.tpl:9 #: plugins/admin/departments/locality.tpl:8 #: plugins/admin/departments/locality.tpl:9 #: plugins/admin/departments/domain.tpl:8 #: plugins/admin/departments/domain.tpl:9 plugins/admin/users/user-list.xml:73 msgid "Properties" msgstr "Свойства" #: plugins/admin/groups/group-list.xml:91 #: plugins/admin/ogroups/ogroup-list.xml:91 plugins/admin/acl/acl-list.xml:131 #: plugins/admin/departments/dep-list.xml:172 #: plugins/admin/users/user-list.xml:114 msgid "Edit" msgstr "Изменить" #: plugins/admin/groups/group-list.xml:106 #: plugins/admin/ogroups/ogroup-list.xml:106 #: plugins/admin/users/user-list.xml:156 #, fuzzy msgid "Send message" msgstr "Домашняя страница" #: plugins/admin/groups/group-list.xml:138 #, fuzzy msgid "Edit group" msgstr "Основная группа" #: plugins/admin/groups/group-list.xml:151 #, fuzzy msgid "Remove group" msgstr "серверы" #: plugins/admin/groups/userGroupSelect/class_userGroupSelect.inc:29 #, fuzzy msgid "User and group selection" msgstr "Настройки Samba" #: plugins/admin/ogroups/ogroup-list.xml:11 #, fuzzy msgid "List of object groups" msgstr "Название группы" #: plugins/admin/ogroups/ogroup-list.xml:15 #: plugins/admin/ogroups/generic.tpl:1 msgid "Object group" msgstr "Объект группы" #: plugins/admin/ogroups/ogroup-list.xml:142 #, fuzzy msgid "Edit object group" msgstr "Объект группы" #: plugins/admin/ogroups/ogroup-list.xml:155 #, fuzzy msgid "Remove object group" msgstr "серверы" #: plugins/admin/ogroups/paste_generic.tpl:1 #, fuzzy msgid "Paste object group" msgstr "Объект группы" #: plugins/admin/ogroups/paste_generic.tpl:7 #, fuzzy msgid "Please enter the new object group name" msgstr "Введите адрес сервера" #: plugins/admin/ogroups/paste_generic.tpl:16 msgid "Warning: systems can only inherit from a single object group!" msgstr "" #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:47 #: plugins/admin/ogroups/class_ogroupManagement.inc:192 msgid "Printer" msgstr "Принтер" #: plugins/admin/ogroups/objectSelect/class_objectSelect.inc:29 #, fuzzy msgid "Object selection" msgstr "Настройки Samba" #: plugins/admin/ogroups/tabs_ogroups.inc:139 #, fuzzy msgid "Phone queue" msgstr "Номер телефона" #: plugins/admin/ogroups/tabs_ogroups.inc:164 #, fuzzy msgid "Groupware" msgstr "Группа" #: plugins/admin/ogroups/tabs_ogroups.inc:176 #, fuzzy msgid "System settings" msgstr "Почтовые настройки пользователя" #: plugins/admin/ogroups/tabs_ogroups.inc:188 #: plugins/admin/ogroups/tabs_ogroups.inc:213 #, fuzzy msgid "Recipe" msgstr "Описание" #: plugins/admin/ogroups/tabs_ogroups.inc:200 #: plugins/admin/ogroups/tabs_ogroups.inc:222 msgid "Devices" msgstr "Устройства" #: plugins/admin/ogroups/tabs_ogroups.inc:232 #, fuzzy msgid "Deployment summary" msgstr "Управление подразделениями" #: plugins/admin/ogroups/tabs_ogroups.inc:242 msgid "Desktop" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:259 msgid "Applications" msgstr "Приложения" #: plugins/admin/ogroups/generic.tpl:10 msgid "Name of the group" msgstr "Название группы" #: plugins/admin/ogroups/generic.tpl:46 msgid "Member objects" msgstr "Включаемые объекты" #: plugins/admin/ogroups/class_ogroup.inc:244 msgid "You cannot combine terminals and workstations in one object group!" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:318 #: plugins/admin/users/class_userManagement.inc:472 #: plugins/admin/users/class_userManagement.inc:507 #: plugins/admin/users/class_userManagement.inc:539 msgid "none" msgstr "нет" #: plugins/admin/ogroups/class_ogroup.inc:320 msgid "too many different objects!" msgstr "слишком много различных объектов!" #: plugins/admin/ogroups/class_ogroup.inc:322 msgid "users" msgstr "пользователи" #: plugins/admin/ogroups/class_ogroup.inc:323 msgid "groups" msgstr "группы" #: plugins/admin/ogroups/class_ogroup.inc:324 msgid "applications" msgstr "приложения" #: plugins/admin/ogroups/class_ogroup.inc:325 msgid "departments" msgstr "подразделения" #: plugins/admin/ogroups/class_ogroup.inc:326 msgid "servers" msgstr "серверы" #: plugins/admin/ogroups/class_ogroup.inc:327 msgid "workstations" msgstr "рабочие станции" #: plugins/admin/ogroups/class_ogroup.inc:328 #, fuzzy msgid "Windows workstations" msgstr "Показать рабочие станции" #: plugins/admin/ogroups/class_ogroup.inc:329 msgid "terminals" msgstr "терминалы" #: plugins/admin/ogroups/class_ogroup.inc:330 msgid "phones" msgstr "телефоны" #: plugins/admin/ogroups/class_ogroup.inc:331 msgid "printers" msgstr "принтеры" #: plugins/admin/ogroups/class_ogroup.inc:555 #, fuzzy msgid "Non existing DN:" msgstr "Не существующий dn:" #: plugins/admin/ogroups/class_ogroup.inc:673 #, php-format msgid "" "These systems are already configured by other object groups and cannot be " "added:" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:707 #, fuzzy msgid "You can combine two different object types at maximum, only!" msgstr "" "Вы можете комбинировать не более двух различных классов в одном объекте!" #: plugins/admin/ogroups/class_ogroup.inc:873 #, fuzzy msgid "Object group generic" msgstr "Объект группы" #: plugins/admin/ogroups/class_ogroup.inc:882 #: plugins/admin/ogroups/class_ogroupManagement.inc:25 msgid "Object groups" msgstr "Объединения" #: plugins/admin/ogroups/class_ogroupManagement.inc:26 msgid "Combine different types of objects to make use of this relationship" msgstr "" #: plugins/admin/ogroups/class_ogroupManagement.inc:182 #, fuzzy msgid "Templates" msgstr "Шаблон" #: plugins/admin/ogroups/class_ogroupManagement.inc:185 msgid "Application" msgstr "Приложение" #: plugins/admin/ogroups/class_ogroupManagement.inc:190 #, fuzzy msgid "Windows Install" msgstr "Рабочая станция Windows" #: plugins/admin/acl/tabs_acl_role.inc:28 plugins/admin/acl/acl-filter.xml:33 #, fuzzy msgid "ACL Templates" msgstr "Шаблон" #: plugins/admin/acl/acl-list.xml:11 #, fuzzy msgid "List of ACLs" msgstr "Список групп" #: plugins/admin/acl/paste_role.tpl:1 #, fuzzy msgid "Paste ACL-role" msgstr "Удалить" #: plugins/admin/acl/acl-filter.xml:48 #: plugins/admin/acl/class_aclManagement.inc:154 #, fuzzy msgid "ACL Assignment" msgstr "Управление подразделениями" #: plugins/admin/acl/class_aclManagement.inc:26 msgid "" "Control access to GOsa managed objects down to attribute and action level" msgstr "" #: plugins/admin/acl/class_aclRole.inc:26 #: plugins/admin/acl/class_aclRole.inc:715 #, fuzzy msgid "Access control roles" msgstr "Параметры доступа" #: plugins/admin/acl/class_aclRole.inc:27 #, fuzzy msgid "Edit AC roles" msgstr "Доступ" #: plugins/admin/acl/class_aclRole.inc:138 #, fuzzy msgid "Reset ACL" msgstr "Удалить" #: plugins/admin/acl/class_aclRole.inc:411 #, fuzzy msgid "No ACL settings for this category" msgstr "Описание группы" #: plugins/admin/acl/class_aclRole.inc:413 #, fuzzy, php-format msgid "ACL for these objects: %s" msgstr "Описание группы" #: plugins/admin/acl/class_aclRole.inc:418 #, fuzzy msgid "Edit category ACL" msgstr "Список систем" #: plugins/admin/acl/class_aclRole.inc:421 #, fuzzy msgid "Delete category ACL" msgstr "Категория" #: plugins/admin/acl/class_aclRole.inc:442 #, php-format msgid "Edit ACL for '%s', scope is '%s'" msgstr "" #: plugins/admin/acl/class_aclRole.inc:635 #, fuzzy msgid "Object in use" msgstr "Имя объекта" #: plugins/admin/acl/class_aclRole.inc:635 #, php-format msgid "This role cannot be removed while it is in use by these objects:" msgstr "" #: plugins/admin/acl/class_aclRole.inc:731 #, fuzzy msgid "RDN for role storage." msgstr "Почтовые настройки пользователя" #: plugins/admin/departments/dcObject.tpl:5 #: plugins/admin/departments/dep-filter.xml:77 #: plugins/admin/departments/dep-list.xml:23 #: plugins/admin/departments/dep-list.xml:110 #, fuzzy msgid "Domain component" msgstr "Администраторы домена" #: plugins/admin/departments/dcObject.tpl:11 #: plugins/admin/departments/locality.tpl:11 #, fuzzy msgid "Locality name" msgstr "Местоположение" #: plugins/admin/departments/dcObject.tpl:14 #: plugins/admin/departments/locality.tpl:14 #, fuzzy msgid "Name of locality to create" msgstr "Имя создаваемой ветки" #: plugins/admin/departments/dcObject.tpl:22 #: plugins/admin/departments/country.tpl:22 #: plugins/admin/departments/organization.tpl:22 #: plugins/admin/departments/locality.tpl:22 #: plugins/admin/departments/domain.tpl:22 msgid "Descriptive text for department" msgstr "Описание подразделения" #: plugins/admin/departments/dcObject.tpl:67 #: plugins/admin/departments/country.tpl:68 #: plugins/admin/departments/class_countryGeneric.inc:95 #: plugins/admin/departments/organization.tpl:132 #: plugins/admin/departments/class_department.inc:686 #: plugins/admin/departments/class_domain.inc:94 #: plugins/admin/departments/class_organizationGeneric.inc:135 #: plugins/admin/departments/generic.tpl:132 #: plugins/admin/departments/locality.tpl:67 #: plugins/admin/departments/class_localityGeneric.inc:95 #: plugins/admin/departments/class_dcObject.inc:94 #: plugins/admin/departments/domain.tpl:67 #, fuzzy msgid "Administrative settings" msgstr "Администрирование" #: plugins/admin/departments/dcObject.tpl:70 #: plugins/admin/departments/country.tpl:71 #: plugins/admin/departments/organization.tpl:135 #: plugins/admin/departments/generic.tpl:135 #: plugins/admin/departments/locality.tpl:70 #: plugins/admin/departments/domain.tpl:70 msgid "Tag department as an independent administrative unit" msgstr "" #: plugins/admin/departments/dep-filter.xml:49 #: plugins/admin/departments/country.tpl:5 #: plugins/admin/departments/class_countryGeneric.inc:82 #: plugins/admin/departments/class_countryGeneric.inc:83 #: plugins/admin/departments/dep-list.xml:31 #: plugins/admin/departments/dep-list.xml:117 #: plugins/admin/departments/class_departmentManagement.inc:217 msgid "Country" msgstr "Страна" #: plugins/admin/departments/dep-filter.xml:63 #: plugins/admin/departments/dep-list.xml:39 #: plugins/admin/departments/dep-list.xml:124 #: plugins/admin/departments/class_departmentManagement.inc:229 #: plugins/admin/departments/locality.tpl:5 #: plugins/admin/departments/class_localityGeneric.inc:82 #: plugins/admin/departments/class_localityGeneric.inc:83 #, fuzzy msgid "Locality" msgstr "Местоположение" #: plugins/admin/departments/dep-filter.xml:105 #: plugins/admin/departments/dep-list.xml:15 #: plugins/admin/departments/dep-list.xml:103 #: plugins/admin/departments/class_departmentManagement.inc:193 #: plugins/admin/departments/domain.tpl:5 #, fuzzy msgid "Domain" msgstr "в домене" #: plugins/admin/departments/country.tpl:11 #: plugins/admin/departments/class_countryGeneric.inc:91 #, fuzzy msgid "Country name" msgstr "Страна" #: plugins/admin/departments/country.tpl:14 #, fuzzy msgid "Name of country to create" msgstr "Имя создаваемой ветки" #: plugins/admin/departments/dep-list.xml:11 #, fuzzy msgid "List of structural objects" msgstr "Название группы" #: plugins/admin/departments/dep_move_confirm.tpl:2 #, fuzzy msgid "You are currently moving/renaming this department." msgstr "У вас недостаточно прав для удаления этого подразделения." #: plugins/admin/departments/dep_move_confirm.tpl:6 msgid "" "Modifying a departments naming attribute 'ou' or base may corrupt ACLs and " "snapshot entries for all entire objects." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:9 msgid "GOsa can NOT fix this for you, yet." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:12 msgid "" "Before you confirm this action, ensure that everything will be as expected, " "possibly the best solution is a backup." msgstr "" #: plugins/admin/departments/organization.tpl:11 #, fuzzy msgid "Name of organization" msgstr "Организация" #: plugins/admin/departments/organization.tpl:14 #, fuzzy msgid "Name of organization to create" msgstr "Имя создаваемой ветки" #: plugins/admin/departments/organization.tpl:30 #: plugins/admin/departments/generic.tpl:30 msgid "Category for this subtree" msgstr "Категория этой ветки" #: plugins/admin/departments/organization.tpl:89 #: plugins/admin/departments/generic.tpl:90 msgid "State where this subtree is located" msgstr "Адм. единица, в которой находится ветка" #: plugins/admin/departments/organization.tpl:97 #: plugins/admin/departments/generic.tpl:98 msgid "Location of this subtree" msgstr "Местоположение ветки" #: plugins/admin/departments/organization.tpl:105 #: plugins/admin/departments/generic.tpl:106 msgid "Postal address of this subtree" msgstr "Почтовый адрес для ветки" #: plugins/admin/departments/organization.tpl:112 #: plugins/admin/departments/generic.tpl:113 msgid "Base telephone number of this subtree" msgstr "Основный телефонный номер для ветки" #: plugins/admin/departments/organization.tpl:120 #: plugins/admin/departments/generic.tpl:121 msgid "Base facsimile telephone number of this subtree" msgstr "Основный номер факса для ветки" #: plugins/admin/departments/class_department.inc:439 msgid "Cannot find an unused tag for this administrative unit!" msgstr "" #: plugins/admin/departments/class_department.inc:507 #, php-format msgid "Tagging '%s'." msgstr "" #: plugins/admin/departments/class_department.inc:588 #, php-format msgid "Moving '%s' to '%s'" msgstr "" #: plugins/admin/departments/class_department.inc:629 #, php-format msgid "FAILED to copy %s, aborting operation" msgstr "" #: plugins/admin/departments/class_department.inc:660 #: plugins/admin/departments/class_department.inc:671 msgid "Departments" msgstr "Подразделения" #: plugins/admin/departments/class_department.inc:674 #, fuzzy msgid "Department name" msgstr "Управление подразделениями" #: plugins/admin/departments/class_department.inc:682 msgid "Telephone" msgstr "Телефон" #: plugins/admin/departments/class_department.inc:737 #, php-format msgid "Object '%s' is already tagged" msgstr "" #: plugins/admin/departments/class_department.inc:744 #, php-format msgid "Adding tag (%s) to object '%s'" msgstr "" #: plugins/admin/departments/class_department.inc:776 #, php-format msgid "Removing tag from object '%s'" msgstr "" #: plugins/admin/departments/dep_iframe.tpl:1 msgid "Processing the requested operation" msgstr "" #: plugins/admin/departments/dep_iframe.tpl:7 msgid "" "Your browser doesn't support IFRAME HTML elements. Please use this link to " "perform the requested operation." msgstr "" #: plugins/admin/departments/class_domain.inc:81 #: plugins/admin/departments/class_domain.inc:82 #: plugins/admin/departments/class_departmentManagement.inc:205 #: plugins/admin/departments/class_dcObject.inc:81 #: plugins/admin/departments/class_dcObject.inc:82 #, fuzzy msgid "Domain Component" msgstr "Администраторы домена" #: plugins/admin/departments/class_organizationGeneric.inc:122 #, fuzzy msgid "Organization name" msgstr "Организация" #: plugins/admin/departments/class_organizationGeneric.inc:132 #: plugins/generic/infoPage/class_infoPage.inc:109 #, fuzzy msgid "Phone number" msgstr "Телефонные номера" #: plugins/admin/departments/generic.tpl:11 msgid "Name of department" msgstr "Подразделение" #: plugins/admin/departments/generic.tpl:14 msgid "Name of subtree to create" msgstr "Имя создаваемой ветки" #: plugins/admin/departments/generic.tpl:22 #, fuzzy msgid "Descriptive text for department" msgstr "Описание подразделения" #: plugins/admin/departments/class_departmentManagement.inc:25 #, fuzzy msgid "Directory structure" msgstr "Каталог" #: plugins/admin/departments/class_departmentManagement.inc:26 msgid "" "Manage organizations, organizational units, localities, countries and more" msgstr "" #: plugins/admin/departments/class_departmentManagement.inc:125 msgid "" "As soon as the tag operation has finished, you can scroll down to end of the " "page and press the 'Continue' button to continue with the department " "management dialog." msgstr "" #: plugins/admin/departments/domain.tpl:11 #, fuzzy msgid "Domain name" msgstr "Администраторы домена" #: plugins/admin/departments/domain.tpl:14 #, fuzzy msgid "Name of domain to create" msgstr "Имя создаваемой ветки" #: plugins/admin/users/password.tpl:4 #, fuzzy msgid "" "To change the user password use the fields below. The changes take effect " "immediately. Please memorize the new password, because the user wouldn't be " "able to login without it." msgstr "" "В полях ниже вы можете изменить пароль выбранного пользователя. Изменения " "вступят в силу немедленно. Пожалуйста, запомните новый пароль, так как иначе " "пользователь не сможет войти в систему." #: plugins/admin/users/password.tpl:11 plugins/admin/users/password.tpl:39 #, fuzzy msgid "Password input dialog" msgstr "Сменить пароль" #: plugins/admin/users/password.tpl:27 plugins/admin/users/password.tpl:79 #, fuzzy msgid "Strength" msgstr "Улица" #: plugins/admin/users/password.tpl:95 #, fuzzy msgid "Enforce password change on next login." msgstr "Сменить пароль" #: plugins/admin/users/templatize.tpl:2 #, fuzzy msgid "Applying a template" msgstr "Шаблон" #: plugins/admin/users/templatize.tpl:6 msgid "" "Applying a template to several users will replace all user attributes " "defined in the template." msgstr "" #: plugins/admin/users/templatize.tpl:13 #, fuzzy msgid "Apply user template" msgstr "Шаблон" #: plugins/admin/users/templatize.tpl:15 plugins/admin/users/template.tpl:15 #: plugins/admin/users/class_userManagement.inc:546 #: plugins/admin/users/user-list.xml:15 plugins/admin/users/user-list.xml:102 msgid "Template" msgstr "Шаблон" #: plugins/admin/users/templatize.tpl:32 msgid "No templates available!" msgstr "" #: plugins/admin/users/user-filter.xml:33 msgid "Show templates" msgstr "Показать шаблоны" #: plugins/admin/users/user-filter.xml:47 #, fuzzy msgid "Show POSIX users" msgstr "Атрибуты UNIX" #: plugins/admin/users/user-filter.xml:61 #, fuzzy msgid "Show SAMBA users" msgstr "Показать серверы" #: plugins/admin/users/user-filter.xml:75 #, fuzzy msgid "Show mail users" msgstr "Показать пользователей с почтой" #: plugins/admin/users/template.tpl:2 msgid "Creating a new user using templates" msgstr "Создание пользователя на основе шаблона" #: plugins/admin/users/template.tpl:6 #, fuzzy msgid "" "Creating a new user can be assisted by using templates. Many database " "records will be filled automatically. Choose 'none' to skip the usage of " "templates." msgstr "" "Можно создавать пользователей на основе шаблонов. При этом многие поля в " "базе данных будут заполнены автоматически. Выберите нет, чтобы не " "использовать шаблоны." #: plugins/admin/users/template.tpl:13 msgid "User template selection dialog" msgstr "" #: plugins/admin/users/template.tpl:43 #, fuzzy msgid "Modify the uid proposal" msgstr "Изменить свойства" #: plugins/admin/users/class_userManagement.inc:26 msgid "" "Manage aspects of user accounts like generic, POSIX, samba and mail settings" msgstr "" #: plugins/admin/users/class_userManagement.inc:401 #, fuzzy msgid "You have no permission to change this users password!" msgstr "У вас недостаточно прав для смены своего пароля." #: plugins/admin/users/class_userManagement.inc:613 msgid "Cannot generate a unique id, please specify it manually!" msgstr "" #: plugins/admin/users/class_userManagement.inc:802 #, fuzzy msgid "Account locking" msgstr "Учетная запись" #: plugins/admin/users/class_userManagement.inc:803 #, php-format msgid "" "Password method '%s' does not support locking. Account (%s) has not been " "locked!" msgstr "" #: plugins/admin/users/class_userManagement.inc:876 #, fuzzy msgid "Unlock account" msgstr "Моя учетная запись" #: plugins/admin/users/class_userManagement.inc:878 #, fuzzy msgid "Lock account" msgstr "Моя учетная запись" #: plugins/admin/users/class_userManagement.inc:891 #, fuzzy msgid "Edit generic properties" msgstr "Изменить свойства" #: plugins/admin/users/class_userManagement.inc:906 msgid "Netatalk" msgstr "" #: plugins/admin/users/class_userManagement.inc:907 #, fuzzy msgid "Edit Netatalk properties" msgstr "Изменить свойства" #: plugins/admin/users/class_userManagement.inc:914 msgid "FAX" msgstr "Факс" #: plugins/admin/users/class_userManagement.inc:915 #, fuzzy msgid "Edit FAX properties" msgstr "Изменить свойства" #: plugins/admin/users/user-list.xml:11 msgid "List of users" msgstr "Список пользователей" #: plugins/admin/users/user-list.xml:140 #, fuzzy msgid "Lock users" msgstr "Список пользователей" #: plugins/admin/users/user-list.xml:148 #, fuzzy msgid "Unlock users" msgstr "Пользователи домена" #: plugins/admin/users/user-list.xml:167 #, fuzzy msgid "Apply template" msgstr "Шаблон" #: plugins/admin/users/user-list.xml:199 #, fuzzy msgid "New user from template" msgstr "Создать шаблон" #: plugins/admin/users/user-list.xml:213 #, fuzzy msgid "Edit user" msgstr "Пользователи домена" #: plugins/admin/users/user-list.xml:222 msgid "%{filter:lockLabel(userPassword)}" msgstr "" #: plugins/admin/users/user-list.xml:245 #, fuzzy msgid "Remove user" msgstr "Удалить изображение" #: plugins/generic/welcome/class_welcome.inc:5 #: plugins/generic/welcome/class_welcome.inc:6 msgid "Back to main menu" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:15 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:15 msgid "Maximum" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:16 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:16 msgid "Average" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:17 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:17 msgid "Minimum" msgstr "" #: plugins/generic/statistics/chartClasses/class_actionSelectChart.inc:104 #, fuzzy msgid "Action" msgstr "Действия" #: plugins/generic/statistics/chartClasses/class_statChart.inc:73 #, fuzzy msgid "Systems" msgstr "Системы" #: plugins/generic/statistics/statistics.tpl:2 msgid "Usage statistics" msgstr "" #: plugins/generic/statistics/statistics.tpl:5 #: plugins/generic/statistics/statistics.tpl:10 msgid "" "This feature is disabled. To enable it you have to register GOsa, you can " "initiate a registration using the dash-board plugin." msgstr "" #: plugins/generic/statistics/statistics.tpl:6 #: plugins/generic/statistics/statistics.tpl:12 #, fuzzy msgid "Dash board" msgstr "Почтовые настройки пользователя" #: plugins/generic/statistics/statistics.tpl:16 #, fuzzy msgid "" "Communication with the GOsa-backend failed. Please check the RPC " "configuration!" msgstr "Не удается подключиться к базе журналов, отчеты показаны не будут!" #: plugins/generic/statistics/statistics.tpl:22 msgid "Send" msgstr "" #: plugins/generic/statistics/statistics.tpl:28 msgid "Generate report for" msgstr "" #: plugins/generic/statistics/statistics.tpl:56 msgid "Update" msgstr "" #: plugins/generic/statistics/statistics.tpl:69 #: plugins/generic/statistics/statistics.tpl:78 msgid "No statistic data for given period" msgstr "" #: plugins/generic/statistics/statistics.tpl:87 #, fuzzy msgid "Select report type" msgstr "Выберите, чтобы просмотреть серверы" #: plugins/generic/statistics/class_statistics.inc:263 #, fuzzy, php-format msgid "" "You have currently %s unsubmitted statistic collection, do you want to " "transmit them now?" msgstr "" "Вы сейчас редактируете объект базы данных. Хотите отказаться от изменений?" #: plugins/generic/dashBoard/dbChannelStatus/contents.tpl:1 #, fuzzy msgid "Channels" msgstr "Отмена" #: plugins/generic/dashBoard/Register/register.tpl:3 #, fuzzy msgid "GOsa registration" msgstr "Общая информация о пользователе" #: plugins/generic/dashBoard/Register/register.tpl:7 msgid "Do you want to register GOsa and benefit from the features it brings?" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:11 msgid "I do not want to register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:17 #: plugins/generic/dashBoard/dashBoard.tpl:5 msgid "Register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:19 msgid "Additionally to the 'Annonomous' account you can:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:21 msgid "Access to 'Premium-Channels'." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:22 msgid "" "Watch the status of current plugin updates/patches and the availability of " "new plugins." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:23 msgid "Recieve newsletter, if wanted." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:24 msgid "View several usefull statistics about your GOsa installation" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:29 msgid "What information will be transmitted to the backend and maybe stored:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:31 msgid "All personal information filled in the registration form." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:32 msgid "Information about the installed plugins and their version." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:33 msgid "" "The GOsa-UUID (will be generated during the registration) and a password, to " "authenticate." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:34 msgid "" "The bugs you will report and the corresponding trace. You can select what " "information you want to send in." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:35 msgid "" "When the statistics extension is used. GOsa will transmit information about " "plugins, their usage and the amount of objects present in your ldap " "database. No sensitive data is transmitted here, just the object type, the " "action performed, cpu usage, memory usage, elapsed time..." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:69 #: plugins/generic/dashBoard/Register/register.tpl:80 #, fuzzy msgid "Registration complete" msgstr "не полный" #: plugins/generic/dashBoard/Register/register.tpl:71 #, fuzzy msgid "GOsa instance successfully registered" msgstr "Настройка завершена" #: plugins/generic/dashBoard/Register/register.tpl:82 #, fuzzy msgid "GOsa instance will not be registered" msgstr "Данные, передаваемые в течение этого сеанса, не будут зашифрованы." #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:54 msgid "" "Communciation with the backend failed! Please check your internet connection!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:56 msgid "" "Authentication failed, please check combination of username and password!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:58 msgid "" "Internal server error, please try again later. If the problem persists " "contact the GOsa-Team!" msgstr "" #: plugins/generic/dashBoard/dbNotifications/contents.tpl:1 #, fuzzy msgid "Notifications" msgstr "Специальность" #: plugins/generic/dashBoard/dashBoard.tpl:2 msgid "This feature is only accessible for registrated instances of GOsa" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:7 msgid "" "Unfortunately the registration server cannot be reached, maybe the server is " "down for maintaince or you've no internet access!" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:13 #, fuzzy msgid "GOsa dash board" msgstr "Почтовые настройки пользователя" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:69 msgid "Version mismatch" msgstr "" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:73 #, fuzzy msgid "Schema missing" msgstr "Настройки Samba" #: plugins/generic/dashBoard/dbPluginStatus/contents.tpl:1 #, fuzzy msgid "Plugin status" msgstr "Состояние системы" #: plugins/generic/references/class_reference.inc:70 #, fuzzy msgid "Role membership" msgstr "Членство в группах" #: plugins/generic/references/class_reference.inc:76 #, fuzzy msgid "Object group membership" msgstr "Объект группы" #: plugins/generic/references/class_reference.inc:82 #, fuzzy msgid "Department manager" msgstr "Управление подразделениями" #: plugins/generic/references/class_reference.inc:88 #, fuzzy msgid "User manager" msgstr "Имя пользователя" #: plugins/generic/references/contents.tpl:2 #: plugins/generic/references/contents.tpl:3 #, fuzzy msgid "Object information" msgstr "Личная информация" #: plugins/generic/references/contents.tpl:7 #, fuzzy msgid "Show raw object entry" msgstr "Объединения" #: plugins/generic/references/contents.tpl:18 #: plugins/generic/references/contents.tpl:20 #, fuzzy msgid "Last modification" msgstr "Специальность" #: plugins/generic/references/contents.tpl:29 #, fuzzy msgid "Object references" msgstr "Ссылки" #: plugins/generic/references/contents.tpl:45 #, fuzzy msgid "ACL trace" msgstr "Тип" #: plugins/generic/references/class_aclResolver.inc:143 msgid "Enter another user name" msgstr "" #: plugins/generic/references/class_aclResolver.inc:193 #, fuzzy msgid "ACLs" msgstr "Доступ" #: plugins/generic/references/class_aclResolver.inc:198 #, php-format msgid "List of effective ACLs for '%s'" msgstr "" #: plugins/generic/references/class_aclResolver.inc:199 #: plugins/generic/references/class_aclResolver.inc:203 #, fuzzy msgid "Object permissions" msgstr "Настройки Samba" #: plugins/generic/references/class_aclResolver.inc:311 #, fuzzy msgid "create" msgstr "Создать" #: plugins/generic/references/class_aclResolver.inc:312 #, fuzzy msgid "remove" msgstr "Удалить" #: plugins/generic/references/class_aclResolver.inc:313 #, fuzzy msgid "move" msgstr "Удалить" #, fuzzy #~ msgid "Member selection" #~ msgstr "Настройки Samba" #, fuzzy #~ msgid "Common group" #~ msgstr "Показать группы" #, fuzzy #~ msgid "Groups differ" #~ msgstr "Группа пользователя" #, fuzzy #~ msgid "List of items" #~ msgstr "Список пользователей" #, fuzzy #~ msgid "Edit item" #~ msgstr "Изменить сертификаты" #, fuzzy #~ msgid "Remove item" #~ msgstr "Удалить изображение" #, fuzzy #~ msgid "Container" #~ msgstr "Продолжить" #, fuzzy #~ msgid "Config management" #~ msgstr "Управление системами" #, fuzzy #~ msgid "Distribution" #~ msgstr "Описание" #, fuzzy #~ msgid "Component" #~ msgstr "Администраторы домена" #~ msgid "Home phone" #~ msgstr "Домашний телефон" #, fuzzy #~ msgid "Organizational unit" #~ msgstr "Организация" #, fuzzy #~ msgid "Max" #~ msgstr "Май" #, fuzzy #~ msgid "Min" #~ msgstr "Начало" #~ msgid "Welcome %s!" #~ msgstr "Добро пожаловать %s!" #, fuzzy #~ msgid "The folder %s specified for %s:%s cannot be used for reading!" #~ msgstr "" #~ "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s" #~ "\"." #, fuzzy #~ msgid "Object info" #~ msgstr "Имя объекта" #, fuzzy #~ msgid "Acls" #~ msgstr "Все" #, fuzzy #~ msgid "" #~ "The file '%s' specified for '%s:%s' cannot be created neither be used for " #~ "writing!" #~ msgstr "" #~ "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s" #~ "\"." #, fuzzy #~ msgid "The values for 'New password' and 'Repeated new password' differ!" #~ msgstr "Введенные пароли не совпадают!" #, fuzzy #~ msgid "The password used as new and current are too similar!" #~ msgstr "Новый и текущий пароли слишком похожи." #, fuzzy #~ msgid "The password used as new is to short!" #~ msgstr "Новый пароль слишком короткий." #, fuzzy #~ msgid "External password changer reported a problem: %s" #~ msgstr "При попытке сменить пароль извне возникла проблема: " #, fuzzy #~ msgid "" #~ "Command %s specified as post modify action for plugin %s does not exist!" #~ msgstr "" #~ "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s" #~ "\"." #, fuzzy #~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." #~ msgstr "Ошибка при подключении к LDAP-серверу. Ответ сервера: \"%s\"." #, fuzzy #~ msgid "Username / UID is not unique inside the LDAP tree!" #~ msgstr "" #~ "Имя/идентификатор пользователя не уникальны. Проверьте свою базу данных " #~ "LDAP." #, fuzzy #~ msgid "" #~ "Username / UID is not unique inside the LDAP tree. Please contact your " #~ "Administrator." #~ msgstr "" #~ "Имя/идентификатор пользователя не уникальны. Проверьте свою базу данных " #~ "LDAP." #, fuzzy #~ msgid "LDAP server returned: %s" #~ msgstr "LDAP-сервер" #, fuzzy #~ msgid "" #~ "Found multiple locks for object to be locked. This should not happen - " #~ "cleaning up multiple references." #~ msgstr "" #~ "Для блокируемого объекта обнаружено несколько блокировок. Этого быть не " #~ "должно, проверьте работу LDAP." #, fuzzy #~ msgid "The size limit of %d entries is exceed!" #~ msgstr "Найдено более %d объектов." #~ msgid "" #~ "Set the new size limit to %s and show me this message if the limit still " #~ "exceeds" #~ msgstr "" #~ "Установить новое значение лимита в %s и показать мне это сообщение если " #~ "лимит будет исчерпан." #, fuzzy #~ msgid "incomplete" #~ msgstr "не полный" #, fuzzy #~ msgid "You're going to edit the LDAP entry/entries %s" #~ msgstr "Вы собираетесь удалить объект %s." #, fuzzy #~ msgid "Apply filter" #~ msgstr "Шаблон" #~ msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" #~ msgstr "*АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ0123456789" #, fuzzy #~ msgid "Cannot write to revision file!" #~ msgstr "Удалить" #, fuzzy #~ msgid "LDAP warning" #~ msgstr "Экспорт в LDIF" #, fuzzy #~ msgid "Cannot get schema information from server. No schema check possible!" #~ msgstr "Не удается получить информацию о схемах. Проверка схем невозможна!" #, fuzzy #~ msgid "Used to store account specific informations." #~ msgstr "Учетная запись" #, fuzzy #~ msgid "Missing required object class '%s'!" #~ msgstr "Список подразделений" #, fuzzy #~ msgid "Missing optional object class '%s'!" #~ msgstr "Список подразделений" #, fuzzy #~ msgid "Version mismatch for required object class '%s' (!=%s)!" #~ msgstr "Список подразделений" #, fuzzy #~ msgid "" #~ "Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to " #~ "exist." #~ msgstr "" #~ "Не удается найти команду \"%s\", указанную в поле POSTREMOVE модуля \"%s" #~ "\"." #, fuzzy #~ msgid "Cannot allocate a free ID:" #~ msgstr "Слишком много пользователей, невозможно создать идентификатор!" #, fuzzy #~ msgid "Cannot allocate a free ID!" #~ msgstr "Слишком много пользователей, невозможно создать идентификатор!" #, fuzzy #~ msgid "Surename" #~ msgstr "Имя сервера" #, fuzzy #~ msgid "External password changer reported a problem: %s." #~ msgstr "При попытке сменить пароль извне возникла проблема: " #~ msgid "Username" #~ msgstr "Имя пользователя" #~ msgid "" #~ "You've successfully changed your password. Remember to change all " #~ "programms configured to use it as well." #~ msgstr "" #~ "Вы успешно сменили свой пароль. Не забудьте изменить нужные настройки " #~ "использующих его программ." #~ msgid "Admin DN" #~ msgstr "DN администратора" #, fuzzy #~ msgid "Grant permission to owner" #~ msgstr "Удалить" #, fuzzy #~ msgid "Password change not allowed" #~ msgstr "Сменить пароль" #, fuzzy #~ msgid "Preferred langage" #~ msgstr "Язык по умолчанию" #, fuzzy #~ msgid "Posix settings" #~ msgstr "Атрибуты UNIX" #, fuzzy #~ msgid "You have no permission to set your password!" #~ msgstr "У вас недостаточно прав для смены своего пароля." #~ msgid "" #~ "You have changed the method your password is stored in the ldap database. " #~ "For that reason you've to enter your password at this point again. GOsa " #~ "will then encode it with the selected method." #~ msgstr "" #~ "Вы изменили метод шифрования паролей в базе LDAP. В связи с этим введите " #~ "свой пароль снова. GOsa произведет шифрование в соответствии с выбраной " #~ "схемой." #, fuzzy #~ msgid "Posix" #~ msgstr "Прокси-сервер" #, fuzzy #~ msgid "Edit posix properties" #~ msgstr "Изменить свойства" #, fuzzy #~ msgid "Acl" #~ msgstr "Все" #, fuzzy #~ msgid "winstations" #~ msgstr "Рабочая станция" #, fuzzy #~ msgid "Sytem trust" #~ msgstr "Системные доверия" #, fuzzy #~ msgid "Processing" #~ msgstr "Права для членов группы" #, fuzzy #~ msgid "Created" #~ msgstr "Создать" #, fuzzy #~ msgid "No Content" #~ msgstr "Контакт" #, fuzzy #~ msgid "Reset Content" #~ msgstr "Контакт" #, fuzzy #~ msgid "Partial Content" #~ msgstr "Почтовый индекс" #, fuzzy #~ msgid "Multi-Status" #~ msgstr "Состояние" #, fuzzy #~ msgid "See Other" #~ msgstr "Удалить" #, fuzzy #~ msgid "Not Modified" #~ msgstr "Сменить пароль" #, fuzzy #~ msgid "Use Proxy" #~ msgstr "Прокси-сервер" #, fuzzy #~ msgid "(reserviert)" #~ msgstr "серверы" #, fuzzy #~ msgid "Not Found" #~ msgstr "Сменить пароль" #, fuzzy #~ msgid "Method Not Allowed" #~ msgstr "Сменить пароль" #, fuzzy #~ msgid "Proxy Authentication Required" #~ msgstr "Рабочая станция Windows" #, fuzzy #~ msgid "Gone" #~ msgstr "нет" #, fuzzy #~ msgid "Precondition Failed" #~ msgstr "Настроить" #, fuzzy #~ msgid "Expectation Failed" #~ msgstr "Невозможно выполнить запрос к базе данных!" #, fuzzy #~ msgid "Locked" #~ msgstr "Список пользователей" #, fuzzy #~ msgid "Unordered Collection" #~ msgstr "Настройки Samba" #, fuzzy #~ msgid "Internal Server Error" #~ msgstr "Терминал-сервер" #, fuzzy #~ msgid "Not Implemented" #~ msgstr "не полный" #, fuzzy #~ msgid "Service Unavailable" #~ msgstr "Имя сервера" #, fuzzy #~ msgid "Gateway Time-out" #~ msgstr "Домен" #, fuzzy #~ msgid "GOsa settings 3/3" #~ msgstr "Почтовые настройки пользователя" #, fuzzy #~ msgid "Maximum LDAP query time must be a numeric value!" #~ msgstr "Размер квоты" #, fuzzy #~ msgid "Create a basic, single site configuration" #~ msgstr "Базы данных" #, fuzzy #~ msgid "Find every possible configuration error" #~ msgstr "Настроить" #, fuzzy #~ msgid "To continue..." #~ msgstr "Продолжение настройки..." #~ msgid "Samba settings" #~ msgstr "Настройки Samba" #, fuzzy #~ msgid "Samba SID" #~ msgstr "Samba" #, fuzzy #~ msgid "RID base" #~ msgstr "Базы данных" #, fuzzy #~ msgid "Workstation container" #~ msgstr "Имя рабочий станции" #, fuzzy #~ msgid "Samba SID mapping" #~ msgstr "Samba" #, fuzzy #~ msgid "Timezone" #~ msgstr "Мобильный" #, fuzzy #~ msgid "Please choose your preferred timezone here" #~ msgstr "Язык по умолчанию" #, fuzzy #~ msgid "Additional GOsa settings" #~ msgstr "Дополнительные записи в fstab" #, fuzzy #~ msgid "Government mode" #~ msgstr "в папку" #, fuzzy #~ msgid "GOsa logging" #~ msgstr "Почтовые настройки пользователя" #, fuzzy #~ msgid "Mail settings" #~ msgstr "Почтовые настройки пользователя" #, fuzzy #~ msgid "Mail method" #~ msgstr "Почтовые настройки" #, fuzzy #~ msgid "Vacation templates" #~ msgstr "Шаблон рабочей станции" #, fuzzy #~ msgid "Snapshots / Undo" #~ msgstr "Приложение" #, fuzzy #~ msgid "Enable snapshots" #~ msgstr "Создать настройки запись эл. почты" #, fuzzy #~ msgid "Snapshot base" #~ msgstr "Приложение" #, fuzzy #~ msgid "GOsa settings 2/3" #~ msgstr "Почтовые настройки пользователя" #, fuzzy #~ msgid "Customize special parameters" #~ msgstr "Изменить параметры" #, fuzzy #~ msgid "Checking for invisible departments" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Checking for invisible users" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Checking for users outside the people tree" #~ msgstr "Проверка модуля cups" #, fuzzy #~ msgid "Checking for groups outside the groups tree" #~ msgstr "Проверка модуля cups" #, fuzzy #~ msgid "Checking for duplicated UID numbers" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Checking for duplicate GID numbers" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Checking for old style USB devices" #~ msgstr "Проверка модуля gd" #, fuzzy #~ msgid "Checking for old services that have to be migrated" #~ msgstr "Проверка модуля cups" #, fuzzy #~ msgid "Checking for old style application menus" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Found %s duplicate values for attribute 'uidNumber'." #~ msgstr "Укажите корректный номер телефона." #, fuzzy #~ msgid "Found %s duplicate values for attribute 'gidNumber'." #~ msgstr "Укажите корректный номер телефона." #, fuzzy #~ msgid "Move" #~ msgstr "Режим" #, fuzzy #~ msgid "Cannot migrate department '%s':" #~ msgstr "Список подразделений" #, fuzzy #~ msgid "GOsa 2.5 administrative accounts found: %s" #~ msgstr "Создать настройки запись эл. почты" #, fuzzy #~ msgid "There is no valid GOsa 2.6 administrator account inside your LDAP." #~ msgstr "Создать настройки запись эл. почты" #, fuzzy #~ msgid "Cannot move users to the requested department!" #~ msgstr "Невозможно подключиться к серверу базы данных!" #, fuzzy #~ msgid "to" #~ msgstr "Отношение" #, fuzzy #~ msgid "Copy '%s' to '%s' failed:" #~ msgstr "Ошибка при выполнении \"%s\"!" #, fuzzy #~ msgid "Updating '%s' failed: %s" #~ msgstr "Служба печати" #, fuzzy #~ msgid "Theme" #~ msgstr "Мобильный" #, fuzzy #~ msgid "Apache" #~ msgstr "Отмена" #, fuzzy #~ msgid "People and group storage" #~ msgstr "Структурная единица (OU) пользователей" #, fuzzy #~ msgid "People DN attribute" #~ msgstr "Атрибут DN пользователей" #, fuzzy #~ msgid "People storage subtree" #~ msgstr "Структурная единица (OU) пользователей" #, fuzzy #~ msgid "Group storage subtree" #~ msgstr "OU групп" #, fuzzy #~ msgid "Automatic UIDs" #~ msgstr "автоматически" #, fuzzy #~ msgid "Number base for people/groups" #~ msgstr "База идентификаторов для пользователей/групп" #, fuzzy #~ msgid "Password settings" #~ msgstr "Почтовые настройки пользователя" #, fuzzy #~ msgid "Password restrictions" #~ msgstr "Срок действия пароля истекает" #, fuzzy #~ msgid "Password change hook" #~ msgstr "Сменить пароль" #, fuzzy #~ msgid "" #~ "GOsa always acts as admin and manages access rights internally. This is a " #~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " #~ "For this to work, we need the admin DN and the corresponding password." #~ msgstr "" #~ "Сейчас вам нужно указать параметры доступа к LDAP-серверу. GOsa всегда " #~ "выступает в роли администратора и управляет правами доступа " #~ "самостоятельно. Это временное решение, пока в OpenLDAP не будут " #~ "реализованы полностью средства контроля доступа (ACI) внутри каталогов. " #~ "Чтобы это решение работало, укажите DN (уникальное имя) администратора и " #~ "соответствующий пароль." #~ msgid "" #~ "Some basic LDAP parameters are tunable and affect the locations where " #~ "GOsa saves people and groups, including the way accounts get created. " #~ "Check the values below if the fit your needs." #~ msgstr "" #~ "Некоторые основные параметры LDAP изменяемы и влияют на расположение " #~ "сохраняемой информации о пользователях и группах, а также на способ " #~ "создания учетных записей. Проверьте, подходят ли вам значения, указанные " #~ "ниже." #, fuzzy #~ msgid "Enable primary group filter" #~ msgstr "Показать группы пользователей" #, fuzzy #~ msgid "Display summary in listings" #~ msgstr "Шаблон для групп" #, fuzzy #~ msgid "Honour administrative units" #~ msgstr "Управление группами" #, fuzzy #~ msgid "Path for PPD storage" #~ msgstr "Хэширование паролей" #, fuzzy #~ msgid "Mail queue script" #~ msgstr "Путь к сценариям" #, fuzzy #~ msgid "Notification script" #~ msgstr "Изменить сертификаты" #, fuzzy #~ msgid "Warn if session is not encrypted" #~ msgstr "Данные, передаваемые в течение этого сеанса, не будут зашифрованы." #, fuzzy #~ msgid "Remember dialog filter settings" #~ msgstr "Общая информация о пользователе" #, fuzzy #~ msgid "Session lifetime" #~ msgstr "Конфликт сеансов" #, fuzzy #~ msgid "Show PHP errors" #~ msgstr "Ошибка LDAP:" #, fuzzy #~ msgid "Maximum LDAP query time" #~ msgstr "Размер квоты" #, fuzzy #~ msgid "Debug level" #~ msgstr "Уровень информативности" #, fuzzy #~ msgid "Disabled" #~ msgstr "отключен" #, fuzzy #~ msgid "Move selected workstations" #~ msgstr "Выберите чтобы посмотреть рабочие станции" #, fuzzy #~ msgid "Hide changes" #~ msgstr "Удалить телефонный аккаунт" #, fuzzy #~ msgid "Show changes" #~ msgstr "Показать телефоны" #, fuzzy #~ msgid "Move selected users into this people tree" #~ msgstr "Создать шаблон" #, fuzzy #~ msgid "Migrate GOsa 2.5 administrative accounts" #~ msgstr "Создать настройки запись эл. почты" #, fuzzy #~ msgid "Abort" #~ msgstr "Порт" #, fuzzy #~ msgid "Refresh" #~ msgstr "Ссылки" #, fuzzy #~ msgid "Installation" #~ msgstr "Рабочая станция" #, fuzzy #~ msgid "GOsa settings 1/3" #~ msgstr "Почтовые настройки пользователя" #~ msgid "People storage ou" #~ msgstr "Структурная единица (OU) пользователей" #~ msgid "Group storage ou" #~ msgstr "OU групп" #, fuzzy #~ msgid "The given password differ value is not numeric." #~ msgstr "Значение поля \"Квота\" некорректно." #, fuzzy #~ msgid "Available members" #~ msgstr "Доступные приложения" #, fuzzy #~ msgid "Login screen" #~ msgstr "Служба печати" #, fuzzy #~ msgid "" #~ "Please use your username and your password to log into the site " #~ "administration system." #~ msgstr "" #~ "Чтобы войти в систему
    введите свои имя пользователя и " #~ "пароль." #~ msgid "Sign in" #~ msgstr "Войти" #~ msgid "" #~ "This may be used by several groups. Please double check if your really " #~ "want to do this since there is no way for GOsa to get your data back." #~ msgstr "" #~ "Это приложение может использоваться несколькими группами. Подумайте еще " #~ "раз, действительно ли вы хотите удалить его, так как GOsa не сможет " #~ "отменить результаты этой операции." #, fuzzy #~ msgid "" #~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." #~ msgstr "" #~ "Если вы уверены в своих действиях, нажмите на кнопку Удалить, " #~ "иначе нажмите Отмена." #~ msgid "Help" #~ msgstr "Справка" #~ msgid "Sign out" #~ msgstr "Выход" #~ msgid "Signed in:" #~ msgstr "Пользователь:" #, fuzzy #~ msgid "Success" #~ msgstr "Экспорт успешен." #, fuzzy #~ msgid "New password repeated" #~ msgstr "Новый пароль" #, fuzzy #~ msgid "Change" #~ msgstr "Канал" #~ msgid "UNIX" #~ msgstr "Unix" #~ msgid "FTP" #~ msgstr "FTP" #~ msgid "Thin Client" #~ msgstr "Тонкий клиент" #~ msgid "Object name" #~ msgstr "Имя объекта" #~ msgid "This object has no relationship to other objects." #~ msgstr "Данный объект не имеет ссылок на другие объекты" #, fuzzy #~ msgid "" #~ "Changing the password affects your authentification on mail, proxy, samba " #~ "and unix services." #~ msgstr "" #~ "Изменение пароля влияет на аутентификацию при использовании почты, прокси-" #~ "сервера, Samba и служб UNIX." #, fuzzy #~ msgid "User identification" #~ msgstr "Информация" #~ msgid "Personal picture" #~ msgstr "Изображение" #, fuzzy #~ msgid "In all groups" #~ msgstr "Основная группа" #, fuzzy #~ msgid "Not in all groups" #~ msgstr "Показать группы с эл. почтой" #, fuzzy #~ msgid "! unknown UID" #~ msgstr "состояние неизвестно" #, fuzzy #~ msgid "All categories" #~ msgstr "Категория" #~ msgid "Startup" #~ msgstr "Запуск" #, fuzzy #~ msgid "Cannot bind to LDAP. Please contact the system administrator." #~ msgstr "" #~ "Не удается начать сеанс на LDAP-сервере. Обратитесь к системному " #~ "администратору." #, fuzzy #~ msgid "Password reset" #~ msgstr "Срок действия пароля истекает" #, fuzzy #~ msgid "Down" #~ msgstr "Домен" #, fuzzy #~ msgid "Select to list objects of type '%s'." #~ msgstr "Выбрать объекты для добавления" #, fuzzy #~ msgid "Select to list objects containig '%s'." #~ msgstr "Показать группы с пользователями" #, fuzzy #~ msgid "Select to list objects that have '%s' enabled" #~ msgstr "Выбрать объекты для добавления" #, fuzzy #~ msgid "Select to search within subtrees" #~ msgstr "Искать в поддеревьях" #, fuzzy #~ msgid "in" #~ msgstr "Начало" #, fuzzy #~ msgid "on line" #~ msgstr "Продолжить" #, fuzzy #~ msgid "Role: %s" #~ msgstr "Роль" #, fuzzy #~ msgid "Go up one department" #~ msgstr "Подразделение" #, fuzzy #~ msgid "Go to users department" #~ msgstr "Выберите подразделение" #, fuzzy #~ msgid "Remove snapshot" #~ msgstr "Создать настройки запись эл. почты" #, fuzzy #~ msgid "Toggle information" #~ msgstr "Личная информация" #, fuzzy #~ msgid "All objects in this category" #~ msgstr "Описание группы" #, fuzzy #~ msgid "from" #~ msgstr "и" #, fuzzy #~ msgid "Restore" #~ msgstr "Повторить" #, fuzzy #~ msgid "cut" #~ msgstr "Выполнить" #, fuzzy #~ msgid "" #~ "FATAL: Register globals is on. GOsa will refuse to login unless this is " #~ "fixed by an administrator." #~ msgstr "" #~ "Используется механизм register_globals. GOsa не допустит пользователей в " #~ "систему, пока он не будет отключен администратором." #, fuzzy #~ msgid "Prpperties" #~ msgstr "Свойства" #, fuzzy #~ msgid "Old password" #~ msgstr "Пароль" #, fuzzy #~ msgid "Verify password" #~ msgstr "Пароль" #~ msgid "Session conflict detected" #~ msgstr "Конфликт сеансов" #, fuzzy #~ msgid "" #~ "Probably there's another active instance of your session. Multiple window " #~ "operation is technical not possible and heavily depends on the browser " #~ "you're using. Usage of different browsers at a time (i.e. IE and Mozilla) " #~ "is possible. Pressing the Logout button will close this session." #~ msgstr "" #~ "Возможно, есть еще один экземпляр вашего сеанса. Работа с несколькими " #~ "окнами одновременно технически невозможна и в значительной мере зависит " #~ "от используемого браузера. Использование разных браузеров одновременно " #~ "(например, IE и Mozilla) возможно. Нажав на кнопку Выход, вы " #~ "завершите текущий сеанс." #~ msgid "" #~ "Ignoring this message will change/destroy the data you're currently " #~ "editing, so please close multiple windows and log in again." #~ msgstr "" #~ "Если вы ничего не предпримете, редактируемые вами данные не будут " #~ "сохранены, поэтому закройте все окна, кроме одного, и начните сеанс " #~ "заново." #~ msgid "External password changer reported a problem: " #~ msgstr "При попытке сменить пароль извне возникла проблема: " #, fuzzy #~ msgid "Show department" #~ msgstr "Показать подразделения" #, fuzzy #~ msgid "Show groups" #~ msgstr "Показать группы samba" #, fuzzy #~ msgid "Show server" #~ msgstr "Показать серверы" #, fuzzy #~ msgid "Show workstation" #~ msgstr "Показать рабочие станции" #, fuzzy #~ msgid "Show terminal" #~ msgstr "Показать терминалы" #, fuzzy #~ msgid "Show printer" #~ msgstr "Показать принтеры" #, fuzzy #~ msgid "Show phone" #~ msgstr "Показать телефоны" #, fuzzy #~ msgid "Filter options" #~ msgstr "Доступные приложения" #~ msgid "" #~ "Please double check if you really want to do this since there is no way " #~ "for GOsa to get your data back." #~ msgstr "" #~ "Подумайте еще раз, действительно ли вам нужно удаление, так как GOsa не " #~ "сможет восстановить эти данные." #, fuzzy #~ msgid "Manage object groups" #~ msgstr "Название группы" #, fuzzy #~ msgid "nested groups" #~ msgstr "Объединения" #, fuzzy #~ msgid "application groups" #~ msgstr "Показать группы приложений" #, fuzzy #~ msgid "department groups" #~ msgstr "подразделения" #, fuzzy #~ msgid "server groups" #~ msgstr "серверы" #, fuzzy #~ msgid "workstation groups" #~ msgstr "рабочие станции" #, fuzzy #~ msgid "terminal groups" #~ msgstr "Показать группы с эл. почтой" #, fuzzy #~ msgid "printer groups" #~ msgstr "Основная группа" #, fuzzy #~ msgid "phone groups" #~ msgstr "Показать группы" #~ msgid "Select objects to add" #~ msgstr "Выбрать объекты для добавления" #~ msgid "Filters" #~ msgstr "Фильтры" #~ msgid "Display objects of department" #~ msgstr "Показать объекты подразделения" #~ msgid "Choose the department the search will be based on" #~ msgstr "Выбрать раздел, для которого будет осуществлен поиск" #~ msgid "Display objects matching" #~ msgstr "Показать совпадения объектов" #~ msgid "Regular expression for matching object names" #~ msgstr "Регулярное выражение, соответствующее именам объектов" #~ msgid "Select systems to add" #~ msgstr "Выберите системы для добавления" #~ msgid "Display systems of department" #~ msgstr "Показать системы в подразделении" #~ msgid "Display systems matching" #~ msgstr "Показать подходяшие системы" #~ msgid "Regular expression for matching addresses" #~ msgstr "Регулярное выражение для поиска адреса" #~ msgid "" #~ "This may be a primary user group. Please double check if you really want " #~ "to do this since there is no way for GOsa to get your data back." #~ msgstr "" #~ "Возможно, это основная группа пользователей. Еще раз проверте что Вы " #~ "действительно хотите удалить ее, так как GOsa не сможет отменить " #~ "результаты этой операции." #~ msgid "Show samba groups" #~ msgstr "Показать группы samba" #, fuzzy #~ msgid "Show mail groups" #~ msgstr "Показать группы samba" #~ msgid "Group administration" #~ msgstr "Управление группами" #~ msgid "" #~ "This includes all account data, system access rules, imap settings, etc. " #~ "for this user. Please double check if your really want to do this since " #~ "there is no way for GOsa to get your data back." #~ msgstr "" #~ "Сюда входит вся информация об учетной записи этого пользователя, его " #~ "права доступа в системе, настройки IMAP и т. д. Подумайте еще раз, " #~ "действительно ли вам нужно удаление, так как GOsa не сможет отменить " #~ "результаты этой операции." #, fuzzy #~ msgid "Manage users" #~ msgstr "Пользователи домена" #, fuzzy #~ msgid "" #~ "This includes 'all' accounts, systems, etc. in this subtree. Please " #~ "double check if your really want to do this since there is no way for " #~ "GOsa to get your data back." #~ msgstr "" #~ "Это включает все учетные записи, системы и т.п. для данного " #~ "подразделения. Подумайте еще раз, действительно ли вы хотите его удалить, " #~ "так как GOsa не сможет отменить результаты этой операции." #, fuzzy #~ msgid "" #~ "Best thing to do before performing this action would be to save the " #~ "current contents of your LDAP tree in a file. So - if you've done so - " #~ "press 'Delete' to continue or 'Cancel' to abort." #~ msgstr "" #~ "Лучше всего перед удалением сохранить резервную копию текущего дерева " #~ "LDAP в файл. Если вы сделали это и действительно хотите выполнить " #~ "удаление, нажмите Удалить, иначе нажмите Отмена." #~ msgid "List of departments" #~ msgstr "Список подразделений" #, fuzzy #~ msgid "Manage Departments" #~ msgstr "Подразделения" #, fuzzy #~ msgid "Show access control lists" #~ msgstr "Параметры доступа" #, fuzzy #~ msgid "Show roles" #~ msgstr "Показать телефоны" #~ msgid "Show servers" #~ msgstr "Показать серверы" #~ msgid "Show workstations" #~ msgstr "Показать рабочие станции" #~ msgid "Show terminals" #~ msgstr "Показать терминалы" #, fuzzy #~ msgid "List navigation" #~ msgstr "Рабочая станция" #, fuzzy #~ msgid "Group selection filter" #~ msgstr "Настройки Samba" #, fuzzy #~ msgid "Posix extension settings" #~ msgstr "Атрибуты UNIX" #, fuzzy #~ msgid "Account accessibility" #~ msgstr "Настроить" #, fuzzy #~ msgid "Go to root department" #~ msgstr "Список подразделений" #, fuzzy #~ msgid "Home" #~ msgstr "Имя системы" #, fuzzy #~ msgid "" #~ "This is the GOsa main menu. You can select your tasks from the menu on " #~ "the left, or by choosing one of the pictograms below. All changes apply " #~ "directly to your companies LDAP server." #~ msgstr "" #~ "Это начальная страница GOsa. Из меню слева или среди пиктограмм ниже вы " #~ "можете выбрать нужный вам раздел. Все изменения будут сразу же " #~ "переноситься на LDAP-сервер вашей компании." #, fuzzy #~ msgid "" #~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " #~ "get back to the pictogram view." #~ msgstr "" #~ "Чтобы завершить сеанс, выберите в меню слева вверху пункт Выход. " #~ "Чтобы вернуться на начальную страницу, выберите Начало." #, fuzzy #~ msgid "Show functional users" #~ msgstr "Показать обычных пользователей" #, fuzzy #~ msgid "Show Samba users" #~ msgstr "Показать пользователей с почтой" #~ msgid "Choose subtree to place user in" #~ msgstr "Выберите ветку для пользователя" #, fuzzy #~ msgid "Select a base" #~ msgstr "Выберите, чтобы просмотреть серверы" #~ msgid "Generic user information" #~ msgstr "Общая информация о пользователе" #~ msgid "Account" #~ msgstr "Учетная запись" #~ msgid "Select groups to add" #~ msgstr "Выберите группы для добавления" #~ msgid "Display groups of department" #~ msgstr "Объединения в подразделении" #~ msgid "Display groups matching" #~ msgstr "Шаблон для групп" #~ msgid "Regular expression for matching group names" #~ msgstr "Регулярное выражение, соответствующее именам групп" #~ msgid "Display groups of user" #~ msgstr "Показать группы пользователей" #~ msgid "User name of which groups are shown" #~ msgstr "Имя пользователя, для которого перечисляются группы" #, fuzzy #~ msgid "Choose a base" #~ msgstr "Выберите, чтобы просмотреть серверы" #~ msgid "Choose subtree to place group in" #~ msgstr "Выберите ветку для группы" #~ msgid "Choose subtree to place department in" #~ msgstr "Выберите ветку для подразделения" #, fuzzy #~ msgid "Show %s" #~ msgstr "Показать группы" #, fuzzy #~ msgid "people" #~ msgstr "Показать людей" #, fuzzy #~ msgid "printer" #~ msgstr "принтеры" #~ msgid "Select users to add" #~ msgstr "Выбрать пользователей для добавления" #~ msgid "Select to see servers" #~ msgstr "Выберите, чтобы просмотреть серверы" #, fuzzy #~ msgid "Search within subtree" #~ msgstr "Искать в поддеревьях" #~ msgid "Display users of department" #~ msgstr "Подразделение" #~ msgid "Display users matching" #~ msgstr "Фильтр" #~ msgid "Regular expression for matching user names" #~ msgstr "Регулярное выражение, соответствующее именам пользователей" #, fuzzy #~ msgid "givenname" #~ msgstr "Имя" #, fuzzy #~ msgid "surename" #~ msgstr "Имя сервера" #, fuzzy #~ msgid "Edit ogroup" #~ msgstr "Список групп" #, fuzzy #~ msgid "List of ogroups" #~ msgstr "Список групп" #, fuzzy #~ msgid "Filter entries with this syntax" #~ msgstr "Показать подходяшие адреса" #, fuzzy #~ msgid "MySQL error" #~ msgstr "Ошибка LDAP:" #, fuzzy #~ msgid "Cannot add location to the database!" #~ msgstr "Невозможно подключиться к серверу базы данных!" #, fuzzy #~ msgid "Submit department" #~ msgstr "Показать подразделения" #, fuzzy #~ msgid "edit" #~ msgstr "Изменить" #, fuzzy #~ msgid "delete" #~ msgstr "Удалить" #, fuzzy #~ msgid "Number of listed object groups" #~ msgstr "Название группы" #, fuzzy #~ msgid "Number of listed departments" #~ msgstr "Подразделение" #~ msgid "Select to see groups that are primary groups of users" #~ msgstr "Выберите, чтобы просмотреть список основных групп пользователей" #, fuzzy #~ msgid "primary groups" #~ msgstr "Основная группа" #, fuzzy #~ msgid "samba groups mappings" #~ msgstr "Samba" #, fuzzy #~ msgid "samba groups" #~ msgstr "Группа Samba" #, fuzzy #~ msgid "application settings" #~ msgstr "приложения" #, fuzzy #~ msgid "mail settings" #~ msgstr "Почтовые настройки пользователя" #, fuzzy #~ msgid "mail groups" #~ msgstr "Показать группы с эл. почтой" #~ msgid "Select to see normal groups that have only functional aspects" #~ msgstr "Выберите, чтобы просмотреть список обычных групп" #, fuzzy #~ msgid "functional groups" #~ msgstr "Показать обычные группы" #, fuzzy #~ msgid "Number of listed groups" #~ msgstr "Название группы" #, fuzzy #~ msgid "group" #~ msgstr "группы" #~ msgid "User administration" #~ msgstr "Управление пользователями" #, fuzzy #~ msgid "templates" #~ msgstr "Шаблон" #, fuzzy #~ msgid "functional users" #~ msgstr "Показать обычных пользователей" #, fuzzy #~ msgid "POSIX users" #~ msgstr "Атрибуты UNIX" #, fuzzy #~ msgid "samba users" #~ msgstr "Пользователи домена" #, fuzzy #~ msgid "proxy users" #~ msgstr "Показать пользователей с прокси-серверами" #, fuzzy #~ msgid "phone users" #~ msgstr "Показать пользователей с прокси-серверами" #, fuzzy #~ msgid "Edit UNIX properties" #~ msgstr "Изменить свойства" #, fuzzy #~ msgid "Edit fax properies" #~ msgstr "Изменить свойства" #, fuzzy #~ msgid "Create user with this template" #~ msgstr "Создать шаблон" #, fuzzy #~ msgid "password" #~ msgstr "Пароль" #, fuzzy #~ msgid "Delete user" #~ msgstr "Удалить" #, fuzzy #~ msgid "Number of listed users" #~ msgstr "Подразделение" #, fuzzy #~ msgid "You have no permission to modify object '%s'!" #~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." #, fuzzy #~ msgid "You have no permission to use this template!" #~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." #, fuzzy #~ msgid "You have no permission to change the lock status for this user!" #~ msgstr "У вас недостаточно прав для смены своего пароля." #, fuzzy #~ msgid "Name / Department" #~ msgstr "Подразделение" #~ msgid "Regular expression for matching department names" #~ msgstr "Регулярное выражение, соответствующее именам подразделений" #, fuzzy #~ msgid "" #~ "This includes all system and setup informations. Please double check if " #~ "your really want to do this since there is no way for GOsa to get your " #~ "data back." #~ msgstr "" #~ "Сюда входит вся информация о системе и ее настройках. Подумайте " #~ "еще раз, действительно ли вам нужно удаление, так как GOsa не сможет " #~ "отменить результаты этой операции." #, fuzzy #~ msgid "ACL role" #~ msgstr "Доступ" #, fuzzy #~ msgid "Display acls matching" #~ msgstr "Шаблон для групп" #, fuzzy #~ msgid "Edit acl role" #~ msgstr "Пользователи домена" #, fuzzy #~ msgid "Edit acl" #~ msgstr "Список систем" #, fuzzy #~ msgid "Delete acl" #~ msgstr "Удалить" #, fuzzy #~ msgid "Gender" #~ msgstr "Отправитель" #, fuzzy #~ msgid "Logging options" #~ msgstr "состояние неизвестно" #, fuzzy #~ msgid "Syslog" #~ msgstr "Системные журналы" #, fuzzy #~ msgid "Non common group" #~ msgstr "Показать группы с эл. почтой" #, fuzzy #~ msgid "Enable DNS extension" #~ msgstr "Удалить параметры" #, fuzzy #~ msgid "Enable mime type management" #~ msgstr "Управление системами" #, fuzzy #~ msgid "Enable FAI release management" #~ msgstr "Управление подразделениями" #, fuzzy #~ msgid "Enable user netatalk plugin" #~ msgstr "Создать телефонный аккаунт" #, fuzzy #~ msgid "Password locking" #~ msgstr "Сменить пароль" #, fuzzy #~ msgid "Create new" #~ msgstr "Создать" #, fuzzy #~ msgid "" #~ "This account has %s features settings. To disable them, you'll need to " #~ "add the %s settings first!" #~ msgstr "" #~ "В этой учетной записи используются атрибуты POSIX. Чтобы отключить их " #~ "использование, сначала нужно удалить учетную запись Samba." #, fuzzy #~ msgid "" #~ "GOsa requires this module to show printers that are not defined within " #~ "the LDAP." #~ msgstr "" #~ "Необходим для чтения отчетов о полученных факсимильных сообщениях из базы " #~ "данных." #, fuzzy #~ msgid "Role name" #~ msgstr "Имя сервера" #, fuzzy #~ msgid "Override sudo role ou" #~ msgstr "состояние неизвестно" #~ msgid "Terminals" #~ msgstr "Терминалы" #, fuzzy #~ msgid "Select this base" #~ msgstr "Выберите, чтобы просмотреть серверы" #, fuzzy #~ msgid "add" #~ msgstr "Добавить" #~ msgid "You're about to delete the whole LDAP subtree placed under '%s'." #~ msgstr "Вы собираетесь удалить целую ветку LDAP с корнем в \"%s\"." #, fuzzy #~ msgid "department" #~ msgstr "подразделения" #, fuzzy #~ msgid "Steps" #~ msgstr "Системы" #, fuzzy #~ msgid "Move object" #~ msgstr "Включаемые объекты" #, fuzzy #~ msgid "Remove object" #~ msgstr "Включаемые объекты" #, fuzzy #~ msgid "Repository" #~ msgstr "Повторить" #, fuzzy #~ msgid "DAK repository" #~ msgstr "Каталог" #, fuzzy #~ msgid "Delete users" #~ msgstr "Удалить" #, fuzzy #~ msgid "Heimdal options" #~ msgstr "Почтовые настройки" #, fuzzy #~ msgid "Day" #~ msgstr "день" #, fuzzy #~ msgid "Month" #~ msgstr "месяц" #, fuzzy #~ msgid "Year" #~ msgstr "Поиск" #, fuzzy #~ msgid "Password end" #~ msgstr "Пароль" #, fuzzy #~ msgid "Missing parameters!" #~ msgstr "Приложение" #, fuzzy #~ msgid "Error in ivbb parameter!" #~ msgstr "Изменить параметры" #~ msgid "Language" #~ msgstr "Язык" #, fuzzy #~ msgid "User list of %s on %s" #~ msgstr "Список пользователей" #, fuzzy #~ msgid "Groups of %s on %s" #~ msgstr "Группа пользователя" #~ msgid "Servers" #~ msgstr "Серверы" #, fuzzy #~ msgid "Computers" #~ msgstr "не полный" #, fuzzy #~ msgid "Common name" #~ msgstr "Местоположение" #, fuzzy #~ msgid "Servers of %s on %s" #~ msgstr "Серверы" #~ msgid "Display name" #~ msgstr "Отображаемое имя" #~ msgid "Initials" #~ msgstr "Отчество" #, fuzzy #~ msgid "Mobile phone" #~ msgstr "Домашний телефон" #~ msgid "City" #~ msgstr "Город" #, fuzzy #~ msgid "Function" #~ msgstr "Действие" #, fuzzy #~ msgid "Adressbook" #~ msgstr "Адресная книга" #, fuzzy #~ msgid "Adressbook of %s on %s" #~ msgstr "Адресная книга" #, fuzzy #~ msgid "Common Name" #~ msgstr "Местоположение" #, fuzzy #~ msgid "Day of birth" #~ msgstr "Дата рождения" #, fuzzy #~ msgid "Email address" #~ msgstr "Основной адрес" #, fuzzy #~ msgid "Title" #~ msgstr "Файлы" #, fuzzy #~ msgid "Computers of %s on %s" #~ msgstr "не полный" #, fuzzy #~ msgid "You have no permission to do LDAP exports!" #~ msgstr "У вас недостаточно прав для создания пользователя в этой ветке." #~ msgid "Could not select database!" #~ msgstr "Невозможно выбрать базу данных!" #~ msgid "Database query failed!" #~ msgstr "Невозможно выполнить запрос к базе данных!" #, fuzzy #~ msgid "List of sudo roles" #~ msgstr "Список пользователей" #, fuzzy #~ msgid "Regular expression for matching role names" #~ msgstr "Регулярное выражение, соответствующее именам групп" #, fuzzy #~ msgid "Regular expression for matching role member names" #~ msgstr "Регулярное выражение, соответствующее именам объектов" #, fuzzy #~ msgid "Number of listed roles" #~ msgstr "Название группы" #, fuzzy #~ msgid "Sudo" #~ msgstr "Имя сервера" #, fuzzy #~ msgid "Manage sudo roles" #~ msgstr "Пользователи домена" #, fuzzy #~ msgid "sudo role" #~ msgstr "состояние неизвестно" #, fuzzy #~ msgid "string" #~ msgstr "Предупреждение" #, fuzzy #~ msgid "integer" #~ msgstr "принтеры" #, fuzzy #~ msgid "Sudo role" #~ msgstr "состояние неизвестно" #, fuzzy #~ msgid "Run as user" #~ msgstr "Пользователи домена" #, fuzzy #~ msgid "Sudo role administration" #~ msgstr "Управление группами" #, fuzzy #~ msgid "Enable system deployment" #~ msgstr "Управление системами" #, fuzzy #~ msgid "Checking for LDAP support" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "" #~ "This is the main extension used by GOsa and therefore really required." #~ msgstr "Основной модуль, используемый GOsa, и поэтому обязательный." #~ msgid "Checking for gettext support" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Gettext support is required for internationalization." #~ msgstr "Необходима для локализованных версий GOsa." #, fuzzy #~ msgid "Checking for iconv support" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Checking for mhash support" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Checking for IMAP support" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "" #~ "The IMAP module is needed to communicate with the IMAP server. GOsa " #~ "retrieves status information, creates and deletes mail users, etc." #~ msgstr "" #~ "Этот модуль нужен для работы с сервером IMAP. С его помощью можно " #~ "получать информацию о состоянии учетной записи, создавать и удалять " #~ "пользователей." #, fuzzy #~ msgid "Checking for multi byte support" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Checking for getacl in IMAP implementation" #~ msgstr "Проверка использования getacl в IMAP" #, fuzzy #~ msgid "" #~ "The getacl support is needed to handle shared folder permissions. Old " #~ "IMAP extensions are not capable of reading acl's. You need a recent PHP " #~ "version to use this feature." #~ msgstr "" #~ "Поддержка getacl в IMAP нужна для выставления прав на общие папки. " #~ "Стандартный модуль IMAP не может обрабатывать acl. Для использования этой " #~ "функции вам нужна последняя версия PHP." #, fuzzy #~ msgid "Checking for MySQL support" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Checking for kadm5 support" #~ msgstr "Проверка поддержки gettext" #~ msgid "" #~ "Managing users in kerberos requires the kadm5 module which is " #~ "downloadable via PEAR network." #~ msgstr "" #~ "Чтобы управлять пользователями с помощью Kerberos, необходим модуль " #~ "kadm5, который можно загрузить из сети PEAR." #, fuzzy #~ msgid "" #~ "This module is required to manage user in kerberos, it is downloadable " #~ "via PEAR network" #~ msgstr "" #~ "Чтобы управлять пользователями с помощью Kerberos, необходим модуль " #~ "kadm5, который можно загрузить из сети PEAR." #, fuzzy #~ msgid "Checking for SNMP support" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "Checking for CUPS support" #~ msgstr "Проверка поддержки gettext" #, fuzzy #~ msgid "" #~ "In order to read available printers via the IPP protocol instead of " #~ "printcap files, you've to install the CUPS module." #~ msgstr "" #~ "Чтобы получать информацию о доступных принтерах по протоколу IPP вместо " #~ "чтения файлов printcap, вам нужно установить модуль CUPS." #~ msgid "Checking for fping utility" #~ msgstr "Проверка утилиты fping" #, fuzzy #~ msgid "" #~ "The fping utility is used if you've got a thin client based terminal " #~ "environment." #~ msgstr "" #~ "Эта программа используется, только если вы работате с бездисковыми " #~ "терминалами." #, fuzzy #~ msgid "" #~ "The fping utility is only used in thin client based terminal environment." #~ msgstr "" #~ "Эта программа используется, только если вы работате с бездисковыми " #~ "терминалами." #, fuzzy #~ msgid "" #~ "In order to use SAMBA 2/3 passwords, you've to install additional " #~ "packages to generate password hashes." #~ msgstr "" #~ "Чтобы пользоваться Samba 2/3, вам нужно установить некоторые " #~ "дополнительные программы для создания хэшей паролей." #, fuzzy #~ msgid "" #~ "In order to use SAMBA 2/3 you've to install additional perl libraries. " #~ "Take a look at mkntpasswd." #~ msgstr "" #~ "Чтобы пользоваться Samba 2/3, вам нужно установить некоторые " #~ "дополнительные программы для создания хэшей паролей." #, fuzzy #~ msgid "Choose subtree to place %s in" #~ msgstr "Выберите ветку для пользователя" #, fuzzy #~ msgid "Show groups with '%s'" #~ msgstr "Показать группы с пользователями" #, fuzzy #~ msgid "Show %s user" #~ msgstr "Показать пользователей Samba" #, fuzzy #~ msgid "functional" #~ msgstr "Действие" #, fuzzy #~ msgid "posix" #~ msgstr "Прокси-сервер" #, fuzzy #~ msgid "mail" #~ msgstr "мужской" #, fuzzy #~ msgid "samba" #~ msgstr "Samba" #, fuzzy #~ msgid "proxy" #~ msgstr "Прокси-сервер" #, fuzzy #~ msgid "primary" #~ msgstr "Запуск" #, fuzzy #~ msgid "application" #~ msgstr "приложения" #, fuzzy #~ msgid "Select to see groups containing '%s'." #~ msgstr "Показать группы с пользователями" #, fuzzy #~ msgid "Workstations" #~ msgstr "Рабочая станция" #, fuzzy #~ msgid "Phones" #~ msgstr "Телефон" #, fuzzy #~ msgid "Click here to Change your password" #~ msgstr "У вас недостаточно прав для смены своего пароля." #, fuzzy #~ msgid "Can't create/open File" #~ msgstr "Невозможно импортиовать пустой файл" #~ msgid "LDAP error:" #~ msgstr "Ошибка LDAP:" #, fuzzy #~ msgid "You are not allowed to change your password at this time" #~ msgstr "Вам не разрешено менять пароль." #, fuzzy #~ msgid "Uid number" #~ msgstr "Терминал" #, fuzzy #~ msgid "Service infrastructure" #~ msgstr "Искать в поддеревьях" #~ msgid "You are not allowed to set this users password!" #~ msgstr "У вас недостаточно прав для смены пароля этого пользователя!" #, fuzzy #~ msgid "User delete" #~ msgstr "Удалить" #, fuzzy #~ msgid "User deleted" #~ msgstr "Удалить" #, fuzzy #~ msgid "User List of %s on %s" #~ msgstr "Список пользователей" #, fuzzy #~ msgid "Permission denied!" #~ msgstr "Права для членов группы" #, fuzzy #~ msgid "You are not allowed to perform this action." #~ msgstr "У вас недостаточно прав для удаления этой группы!" #, fuzzy #~ msgid "You are not allowed to create ldap dumps." #~ msgstr "Вам не разрешено менять пароль." #, fuzzy #~ msgid "Configuration warning" #~ msgstr "Настроить" #, fuzzy #~ msgid "Password reminder" #~ msgstr "Срок действия пароля истекает" #, fuzzy #~ msgid "Configuration accessibility" #~ msgstr "Настроить" #, fuzzy #~ msgid "Anonymous bind failed on server '%s'." #~ msgstr "Ошибка при регистрации. Ответ сервера: \"%s\"." #, fuzzy #~ msgid "New Password" #~ msgstr "Новый пароль" #, fuzzy #~ msgid "Change Password" #~ msgstr "Сменить пароль" #, fuzzy #~ msgid "Can't locate gotomasses queue file '%s'." #~ msgstr "Удалить" #, fuzzy #~ msgid "Can't read gotomasses queue file '%s'." #~ msgstr "Удалить" #, fuzzy #~ msgid "Can't read gotomasses storage file '%s'." #~ msgstr "Удалить" #, fuzzy #~ msgid "Can't write gotomasses queue file '%s'." #~ msgstr "Удалить" #, fuzzy #~ msgid "Entry with id '%s' not found." #~ msgstr "Показать подразделения" #~ msgid "Select to see template pseudo users" #~ msgstr "Выберите, чтобы просмотреть шаблоны псевдопользователей" #, fuzzy #~ msgid "Select to see users that have only a GOsa object" #~ msgstr "" #~ "Выберите, чтобы просмотреть пользователей, у которых есть только объект " #~ "GOsa" #~ msgid "Select to see users that have posix settings" #~ msgstr "" #~ "Выберите, чтобы просмотреть пользователей с атрибутами в стандарте POSIX" #~ msgid "Show unix users" #~ msgstr "Показать UNIX-пользователей" #~ msgid "Select to see users that have mail settings" #~ msgstr "Выберите, чтобы просмотреть пользователей с настройками почты" #~ msgid "Select to see users that have samba settings" #~ msgstr "Выберите, чтобы просмотреть пользователей с настройками Samba" #~ msgid "Select to see users that have proxy settings" #~ msgstr "" #~ "Выберите, чтобы просмотреть пользователей с настройками прокси-сервера" #~ msgid "Select to see groups that have samba groups mappings" #~ msgstr "Выберите, чтобы просмотреть группы, которые входят в samba" #~ msgid "Select to see groups that have applications configured" #~ msgstr "" #~ "Выберите, чтобы просмотреть список групп, которым доступны приложения" #~ msgid "Select to see groups that have mail settings" #~ msgstr "" #~ "Выберите, чтобы просмотреть список групп, которым доступны функции эл. " #~ "почты" #, fuzzy #~ msgid "acl" #~ msgstr "Отмена" #~ msgid "Select to see departments" #~ msgstr "Выберите подразделение" #~ msgid "Select to see GOsa accounts" #~ msgstr "Выберите чтобы посмотреть пользователей GOsa" #~ msgid "Select to see GOsa groups" #~ msgstr "Выберите чтобы посмотреть группы GOsa" #~ msgid "Select to see applications" #~ msgstr "Выберите чтобы посмотреть приложения" #~ msgid "Show applications" #~ msgstr "Показать приложения" #~ msgid "Select to see workstations" #~ msgstr "Выберите чтобы посмотреть рабочие станции" #~ msgid "Select to see terminals" #~ msgstr "Выберите чтобы посмотреть терминалы" #~ msgid "Select to see printers" #~ msgstr "Выберите чтобы посмотреть принтеры" #~ msgid "Select to see phones" #~ msgstr "Выберите чтобы посмотреть телефоны" #, fuzzy #~ msgid "Cannot connect to logging server '%s'." #~ msgstr "Невозможно подключиться к серверу базы данных!" #, fuzzy #~ msgid "Cannot select database '%s' on server '%s': %s" #~ msgstr "Невозможно выбрать базу данных!" #, fuzzy #~ msgid "Cannot query database '%s' on server '%s': %s" #~ msgstr "Невозможно выбрать базу данных!" #, fuzzy #~ msgid "You are going to paste the following entries '%s'." #~ msgstr "Вы собираетесь удалить объект %s." #, fuzzy #~ msgid "You are going to paste the following entry '%s'." #~ msgstr "Вы собираетесь удалить объект %s." #, fuzzy #~ msgid "Back..." #~ msgstr "Назад" #, fuzzy #~ msgid "Back %s..." #~ msgstr "Пользователи домена" #, fuzzy #~ msgid "again" #~ msgstr "Начало" #, fuzzy #~ msgid "You are not allowed to change the password for this user." #~ msgstr "Вам не разрешено менять пароль." #, fuzzy #~ msgid "You are not allowed to remove this user." #~ msgstr "У вас недостаточно прав для удаления этого пользователя!" #, fuzzy #~ msgid "You're about to delete the following entry: %s" #~ msgstr "Вы собираетесь удалить объект %s." #, fuzzy #~ msgid "You're about to delete the following entries: %s" #~ msgstr "Вы собираетесь удалить объект %s." #, fuzzy #~ msgid "You are not allowed to delete the user '%s'!" #~ msgstr "У вас недостаточно прав для удаления этого пользователя!" #~ msgid "You're about to delete the user %s." #~ msgstr "Вы собираетесь удалить пользователя %s." #~ msgid "You are not allowed to delete this user!" #~ msgstr "У вас недостаточно прав для удаления этого пользователя!" #, fuzzy #~ msgid "You're about to delete the following entry %s" #~ msgstr "Вы собираетесь удалить объект %s." #, fuzzy #~ msgid "You're about to delete the following entries %s" #~ msgstr "Вы собираетесь удалить объект %s." #~ msgid "You're about to delete the group '%s'." #~ msgstr "Вы собираетесь удалить группу \"%s\"." #, fuzzy #~ msgid "You have no permission to edit this ACL!" #~ msgstr "У вас недостаточно прав для удаления этого подразделения." #, fuzzy #~ msgid "You're about to delete the acl %s." #~ msgstr "Вы собираетесь удалить группу \"%s\"." #, fuzzy #~ msgid "You have no permission to delete this entry!" #~ msgstr "У вас недостаточно прав для удаления этого подразделения." #, fuzzy #~ msgid "List of acl" #~ msgstr "Список групп" #~ msgid "Required field 'Name' is not set." #~ msgstr "Обязательное поле \"Имя\" не заполнено." #~ msgid "Required field 'Description' is not set." #~ msgstr "Обязательное поле \"Описание\" не заполнено." #~ msgid "This 'dn' is no object group." #~ msgstr "Этот объект не является группой." #, fuzzy #~ msgid "You're about to delete the following object entry %s" #~ msgstr "Вы собираетесь удалить объект %s." #, fuzzy #~ msgid "You're about to delete the following object entries %s" #~ msgstr "Вы собираетесь удалить групповой объект \"%s\"." #~ msgid "You're about to delete the object group '%s'." #~ msgstr "Вы собираетесь удалить групповой объект \"%s\"." #, fuzzy #~ msgid "Select to see groups containing groups" #~ msgstr "Показать группы с группами" #~ msgid "Show groups containing groups" #~ msgstr "Показать группы с группами" #, fuzzy #~ msgid "Select to see groups containing applications" #~ msgstr "Показать группы с приложениями" #~ msgid "Show groups containing applications" #~ msgstr "Показать группы с приложениями" #, fuzzy #~ msgid "Select to see groups containing departments" #~ msgstr "Показать группы с подразделениями" #~ msgid "Show groups containing departments" #~ msgstr "Показать группы с подразделениями" #, fuzzy #~ msgid "Select to see groups containing servers" #~ msgstr "Показать группы с серверами" #~ msgid "Show groups containing servers" #~ msgstr "Показать группы с серверами" #, fuzzy #~ msgid "Select to see groups containing workstations" #~ msgstr "Показать группы с рабочими станциями" #~ msgid "Show groups containing workstations" #~ msgstr "Показать группы с рабочими станциями" #, fuzzy #~ msgid "Select to see groups containing windows workstations" #~ msgstr "Показать группы с рабочими станциями" #, fuzzy #~ msgid "Show groups containing windows workstations" #~ msgstr "Показать группы с рабочими станциями" #, fuzzy #~ msgid "Select to see groups containing terminals" #~ msgstr "Показать группы с терминалами" #~ msgid "Show groups containing terminals" #~ msgstr "Показать группы с терминалами" #, fuzzy #~ msgid "Select to see groups containing printer" #~ msgstr "Показать группы с принтерами" #, fuzzy #~ msgid "Show groups containing printer" #~ msgstr "Показать группы с принтерами" #, fuzzy #~ msgid "Select to see groups containing phones" #~ msgstr "Показать группы с принтерами" #, fuzzy #~ msgid "Show groups containing phones" #~ msgstr "Показать группы с принтерами" #, fuzzy #~ msgid "You are not allowed to remove this entry." #~ msgstr "У вас недостаточно прав для удаления этого объекта!" #, fuzzy #~ msgid "Edit ACL" #~ msgstr "Изменить" #, fuzzy #~ msgid "Groupname / Department" #~ msgstr "Подразделение" #~ msgid "This 'dn' is no group." #~ msgstr "Это DN соответствует не группе." #, fuzzy #~ msgid "Deactivated" #~ msgstr "Личный" #, fuzzy #~ msgid "Active" #~ msgstr "Личный" #, fuzzy #~ msgid "Members:" #~ msgstr "Включаемые объекты" #, fuzzy #~ msgid "Adding a lock failed." #~ msgstr "Ошибка при создании блокировки. Ответ сервера: \"%s\"." #, fuzzy #~ msgid "Access control list templates" #~ msgstr "Параметры доступа" #, fuzzy #~ msgid "Removing a lock failed." #~ msgstr "Удалить приложения" #, fuzzy #~ msgid "Setting the password failed!" #~ msgstr "Ошибка при установке пароля. Ответ LDAP-сервера: \"%s\"." #, fuzzy #~ msgid "Please enter a valid serial number!" #~ msgstr "Введите корректный серийный номер" #, fuzzy #~ msgid "You have no permission to move this object to '%s'!" #~ msgstr "У вас недостаточно прав для удаления этого стоп-листа." #, fuzzy #~ msgid "" #~ "This menu allows you to create, edit and delete selected users. Having a " #~ "great number of users, you may want to use the range selectors on top of " #~ "the user list." #~ msgstr "" #~ "С помощью этого меню вы можете добавлять, изменять и удалять выбранных " #~ "пользователей. Если у вас достаточно большое количество пользователей, вы " #~ "можете использовать групповое выделение." #, fuzzy #~ msgid "" #~ "This menu allows you to add, edit and remove selected groups. You may " #~ "want to use the range selector on top of the group listbox, when working " #~ "with a large number of groups." #~ msgstr "" #~ "С помощью этого меню вы можете добавлять, изменять и удалять выбранные " #~ "группы пользователей. Если у вас их достаточно большое количество, вы " #~ "можете использовать групповое выделение." #, fuzzy #~ msgid "This menu allows you to edit and delete selected acls." #~ msgstr "" #~ "С помощью этого меню вы можете добавлять, изменять и удалять выбранные " #~ "стоп-листы. Если у вас достаточно большое количество списков, вы можете " #~ "использовать групповое выделение." #, fuzzy #~ msgid "" #~ "This menu allows you to create, delete and edit selected departments. " #~ "Having a large number of departments, you might prefer the range " #~ "selectors on top of the department list." #~ msgstr "" #~ "С помощью этого меню вы можете добавлять, изменять и удалять выбранные " #~ "подразделения. Если у вас достаточно большое количество подразделений, вы " #~ "можете использовать групповое выделение." #, fuzzy #~ msgid "" #~ "This menu allows you to add, edit or remove selected groups. You may want " #~ "to use the range selector on top of the group listbox, when working with " #~ "a large number of groups." #~ msgstr "" #~ "С помощью этого меню вы можете добавлять, изменять и удалять выбранные " #~ "группы пользователей. Если у вас их достаточно большое количество, вы " #~ "можете использовать групповое выделение." #~ msgid "Can't bind to LDAP. Please contact the system administrator." #~ msgstr "" #~ "Не удается начать сеанс на LDAP-сервере. Обратитесь к системному " #~ "администратору." #, fuzzy #~ msgid "Removing of user/generic account with dn '%s' failed." #~ msgstr "Удалить учетную запись POSIX" #, fuzzy #~ msgid "Saving of user/generic account with dn '%s' failed." #~ msgstr "Аккаунт Proxy" #~ msgid "This account has no unix extensions." #~ msgstr "В этой учетной записи нет расширений UNIX." #~ msgid "Remove posix account" #~ msgstr "Удалить учетную запись POSIX" #~ msgid "Create posix account" #~ msgstr "Создать учетную запись POSIX" #, fuzzy #~ msgid "Removing of user/posix account with dn '%s' failed." #~ msgstr "Удалить учетную запись POSIX" #, fuzzy #~ msgid "Saving of user/posix account with dn '%s' failed." #~ msgstr "Аккаунт Proxy" #~ msgid "Unix settings" #~ msgstr "Атрибуты UNIX" #, fuzzy #~ msgid "Send user notifications" #~ msgstr "Информация" #, fuzzy #~ msgid "Please specify at least one recipient to send a message!" #~ msgstr "Введите корректное имя пользователя!" #, fuzzy #~ msgid "Cannot find a DESC tag in file '%s'!" #~ msgstr "Удалить" #, fuzzy #~ msgid "Notification plugin" #~ msgstr "Изменить сертификаты" #, fuzzy #~ msgid "Allow sending notifications" #~ msgstr "Параметры приложения" #, fuzzy #~ msgid "Notification target" #~ msgstr "Изменить сертификаты" #~ msgid "Message" #~ msgstr "Сообщение" #~ msgid "Import" #~ msgstr "Импортировать" #, fuzzy #~ msgid "Notification send!" #~ msgstr "Изменить сертификаты" #, fuzzy #~ msgid "Saving of object group/generic with dn '%s' failed." #~ msgstr "Моя учетная запись" #, fuzzy #~ msgid "Removing of object group/generic with dn '%s' failed." #~ msgstr "Атрибуты UNIX" #, fuzzy #~ msgid "Removing of department with dn '%s' failed." #~ msgstr "Показать подразделения" #, fuzzy #~ msgid "Saving of department with dn '%s' failed." #~ msgstr "Показать подразделения" #, fuzzy #~ msgid "Saving ACLs with dn '%s' failed." #~ msgstr "Атрибуты UNIX" #, fuzzy #~ msgid "Removing of aclRole with dn '%s' failed." #~ msgstr "Удалить приложения" #, fuzzy #~ msgid "Removing aclRole from objectgroup '%s' failed" #~ msgstr "Показать группы приложений" #, fuzzy #~ msgid "Removing of groups/generic with dn '%s' failed." #~ msgstr "Показать группы приложений" #, fuzzy #~ msgid "Saving object snapshot with dn '%s' failed." #~ msgstr "Моя учетная запись" #, fuzzy #~ msgid "Restore snapshot with dn '%s' failed." #~ msgstr "Удалить приложения" #, fuzzy #~ msgid "Creating subtree '%s' failed." #~ msgstr "Объект группы" #, fuzzy #~ msgid "Ldap import with dn '%s' failed." #~ msgstr "Показать подразделения" #~ msgid "This does something" #~ msgstr "Что-то будет" #~ msgid "The required field 'Home directory' is not set." #~ msgstr "Обязательное поле \"Домашний каталог\" не заполнено." #~ msgid "Please enter a valid path in 'Home directory' field." #~ msgstr "Введите корректный путь в поле \"Домашний каталог\"." #~ msgid "Value specified as 'GID' is not valid." #~ msgstr "Значение поля 'GID' некорректно." #~ msgid "Value specified as 'GID' is too small." #~ msgstr "Значение 'GID' слишком маленькое." #~ msgid "Value specified as 'shadowMin' is not valid." #~ msgstr "Значение поля \"shadowMin\" некорректно." #~ msgid "Value specified as 'shadowMax' is not valid." #~ msgstr "Значение поля \"shadowMax\" некорректно." #~ msgid "Value specified as 'shadowWarning' is not valid." #~ msgstr "Значение поля \"shadowWarning\" некорректно." #~ msgid "'shadowWarning' without 'shadowMax' makes no sense." #~ msgstr "Использование \"shadowWarning\" без \"shadowMax\" бессмысленно." #~ msgid "" #~ "Value specified as 'shadowWarning' should be smaller than 'shadowMax'." #~ msgstr "" #~ "Значение поля \"shadowWarning\" должно быть меньше значения поля " #~ "\"shadowMax\"." #~ msgid "" #~ "Value specified as 'shadowWarning' should be greater than 'shadowMin'." #~ msgstr "" #~ "Значение поля \"shadowWarning\" должно быть больше значения поля " #~ "\"shadowMin\"." #~ msgid "Value specified as 'shadowInactive' is not valid." #~ msgstr "Значение поля \"shadowInactive\" некорректно." #~ msgid "'shadowInactive' without 'shadowMax' makes no sense." #~ msgstr "Использование \"shadowInactive\" без \"shadowMax\" бессмысленно." #~ msgid "The required field 'Given name' is not set." #~ msgstr "Обязательное поле \"Личное имя\" не заполнено." #~ msgid "The required field 'Login' is not set." #~ msgstr "Обязательное поле \"Регистрационное имя\" не заполнено." #~ msgid "" #~ "There's already a person with this 'Name'/'Given name' combination in the " #~ "database." #~ msgstr "" #~ "Пользователь с такой комбинацией имени и личного имени в базе данных уже " #~ "существует." #~ msgid "" #~ "The field 'Login' contains invalid characters. Lowercase, numbers and " #~ "dashes are allowed." #~ msgstr "" #~ "Значение поля \"Регистрационное имя\" содержит недопустимые символы. " #~ "Допустимыми являются буквы в нижнем регистре, цифры и дефисы." #~ msgid "The field 'Homepage' contains an invalid URL definition." #~ msgstr "Значение поля \"Домашняя страница\" содержит некорректный URL." #~ msgid "The field 'Given name' contains invalid characters." #~ msgstr "Значение поля \"Личное имя\" содержит недопустимые символы." #~ msgid "The field 'Phone' contains an invalid phone number." #~ msgstr "Значение поля \"Телефон\" содержит недопустимый номер телефона." #~ msgid "The field 'Mobile' contains an invalid phone number." #~ msgstr "Значение поля \"Мобильный\" содержит некорректный номер телефона." #~ msgid "The field 'Pager' contains an invalid phone number." #~ msgstr "Значение поля \"Пейджер\" содержит некорректный номер телефона." #~ msgid "" #~ "The field 'Name' contains invalid characters. Lowercase, numbers and " #~ "dashes are allowed." #~ msgstr "" #~ "Значение поля \"Имя\" содержит недопустимые символы. Допустимыми являются " #~ "буквы в нижнем регистре, цифры и дефисы." #~ msgid "Value specified as 'Name' is already used." #~ msgstr "Группа с таким именем уже существует." #, fuzzy #~ msgid "Please select a valid template." #~ msgstr "Введите корректный серийный номер" #~ msgid "A person with the choosen name is already used in this tree." #~ msgstr "Пользователь с таким именем уже есть в этой ветке." #~ msgid "Department with that 'Name' already exists." #~ msgstr "Подразделение с таким именем уже существует." #, fuzzy #~ msgid "" #~ "The field 'Name' contains the reserved word '%s'. Please choose another " #~ "name." #~ msgstr "Значение поля \"Имя\" содержит служебное слово \"incoming\"." #, fuzzy #~ msgid "There is already an object with this cn." #~ msgstr "" #~ "Пользователь с таким регистрационным именем в базе данных уже существует." #~ msgid "" #~ "Command '%s', specified as POSTCREATE for plugin '%s' doesn't seem to " #~ "exist." #~ msgstr "" #~ "Не удается найти команду \"%s\", указанную в поле POSTCREATE модуля \"%s" #~ "\"." #~ msgid "" #~ "Command '%s', specified as POSTREMOVE for plugin '%s' doesn't seem to " #~ "exist." #~ msgstr "" #~ "Не удается найти команду \"%s\", указанную в поле POSTREMOVE модуля \"%s" #~ "\"." #, fuzzy #~ msgid "You are going to paste the cutted entry '%s'." #~ msgstr "Вы собираетесь удалить объект %s." #, fuzzy #~ msgid "You have no permission to copy and paste object '%s'!" #~ msgstr "У вас недостаточно прав для создания пользователя в этой ветке." #, fuzzy #~ msgid "Please specify a valid description for this snapshot." #~ msgstr "Укажите корректный номер телефона." #, fuzzy #~ msgid "" #~ "Setting for SMBHASH in gosa.conf is incorrect! Cannot change Samba " #~ "password." #~ msgstr "" #~ "Параметр SMBHASH в gosa.conf некорректен! Не удается сменить пароль Samba." #, fuzzy #~ msgid "User delted" #~ msgstr "Удалить" #, fuzzy #~ msgid "System deployment" #~ msgstr "Управление системами" #, fuzzy #~ msgid "Your are about to delete the following tasks: %s" #~ msgstr "Вы собираетесь удалить объект %s." #, fuzzy #~ msgid "" #~ "This menu allows you to remove and change the properties of GOsa deamon " #~ "tasks." #~ msgstr "" #~ "С помощью этого меню вы можете добавлять, изменять и удалять свойства " #~ "отдельных систем. Вы можете только добавлять системы которые однажды уже " #~ "были запущены." #, fuzzy #~ msgid "List of queued deamon jobs." #~ msgstr "Список подразделений" #, fuzzy #~ msgid "Target" #~ msgstr "сброс" #, fuzzy #~ msgid "Schedule" #~ msgstr "Учетная запись Groupware" #, fuzzy #~ msgid "Reomve" #~ msgstr "Удалить" #, fuzzy #~ msgid "Say hello" #~ msgstr "Оболочка" #, fuzzy #~ msgid "System mass deployment" #~ msgstr "Управление системами" #, fuzzy #~ msgid "Header Tag" #~ msgstr "Отправитель" #, fuzzy #~ msgid "Schedule Execution" #~ msgstr "Учетная запись Groupware" #, fuzzy #~ msgid "Tag" #~ msgstr "сброс" #, fuzzy #~ msgid "Sekunde" #~ msgstr "Отправитель" #, fuzzy #~ msgid "Mac" #~ msgstr "Март" #, fuzzy #~ msgid "Available targets" #~ msgstr "Доступные приложения" #, fuzzy #~ msgid "You are not allowed to delete this acl!" #~ msgstr "У вас недостаточно прав для удаления этой группы!" #, fuzzy #~ msgid "You are not allowed to delete this acl role!" #~ msgstr "У вас недостаточно прав для удаления этой группы!" #~ msgid "You are not allowed to delete this group!" #~ msgstr "У вас недостаточно прав для удаления этой группы!" #~ msgid "You have no permission to remove this department." #~ msgstr "У вас недостаточно прав для удаления этого подразделения." #~ msgid "You are not allowed to delete this object group!" #~ msgstr "У вас недостаточно прав для удаления этого группового объекта!" #, fuzzy #~ msgid "Network resolv hook" #~ msgstr "Сетевые устройства" #~ msgid "Addons" #~ msgstr "Дополнительно" #, fuzzy #~ msgid "ACL Role" #~ msgstr "Доступ" #~ msgid "Unix" #~ msgstr "Unix" #~ msgid "Connectivity" #~ msgstr "Подключение" #, fuzzy #~ msgid "Scalix" #~ msgstr "терминалы" #, fuzzy #~ msgid "Inventory" #~ msgstr "Добавить объект" #~ msgid "Services" #~ msgstr "Сервисы" #, fuzzy #~ msgid "Excel Export" #~ msgstr "Экспорт" #, fuzzy #~ msgid "CSV Import" #~ msgstr "Импортировать" #, fuzzy #~ msgid "Partitions" #~ msgstr "Назначение" #, fuzzy #~ msgid "Script" #~ msgstr "Путь к сценариям" #, fuzzy #~ msgid "Variables" #~ msgstr "Переменная" #, fuzzy #~ msgid "Profiles" #~ msgstr "Путь к профилю" #, fuzzy #~ msgid "Packages" #~ msgstr "Показать телефоны" #, fuzzy #~ msgid "" #~ "Can't connect to glpi database, there is no mysl extension available in " #~ "your php setup." #~ msgstr "Не удается подключиться к базе журналов, отчеты показаны не будут!" #, fuzzy #~ msgid "Can't read file '%s', check permissions." #~ msgstr "Удалить" gosa-core-2.7.4/locale/core/es/0000755000175000017500000000000011752422546014645 5ustar mikemikegosa-core-2.7.4/locale/core/es/LC_MESSAGES/0000755000175000017500000000000011752422546016432 5ustar mikemikegosa-core-2.7.4/locale/core/es/LC_MESSAGES/messages.po0000644000175000017500000107636611651532471020621 0ustar mikemike# translation of admin.po to # translation of systems.po to # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # , 2010. msgid "" msgstr "" "Project-Id-Version: admin\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-25 15:08+0200\n" "PO-Revision-Date: 2010-01-28 23:21+0100\n" "Last-Translator: \n" "Language-Team: Spanish <>\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: include/class_management.inc:32 include/class_management.inc:33 #: plugins/personal/posix/class_posixAccount.inc:224 msgid "unconfigured" msgstr "Sin configurar" #: include/class_management.inc:324 include/class_management.inc:487 #: include/class_management.inc:534 include/class_management.inc:549 #: include/class_management.inc:586 include/class_management.inc:600 #: plugins/admin/users/class_userManagement.inc:228 #: plugins/admin/users/class_userManagement.inc:764 msgid "Permission" msgstr "Permiso" #: include/class_management.inc:405 #: plugins/admin/acl/class_aclManagement.inc:98 #: plugins/admin/users/class_userManagement.inc:722 #: plugins/admin/users/class_userManagement.inc:726 msgid "Permission error" msgstr "Error de Permisos" #: include/class_management.inc:487 #, fuzzy, php-format msgid "You are not allowed to create a snapshot for %s!" msgstr "No tiene permisos para crear una instantanea para %s." #: include/class_management.inc:508 include/class_management.inc:669 #: include/utils/class_msgPool.inc:137 include/utils/class_msgPool.inc:149 #: include/utils/class_msgPool.inc:167 include/utils/class_msgPool.inc:440 #: include/utils/class_msgPool.inc:462 include/utils/class_xml.inc:40 #: include/class_listing.inc:542 include/class_tabs.inc:71 #: include/class_msg_dialog.inc:99 include/class_plugin.inc:1698 #: include/class_plugin.inc:1705 #: include/password-methods/class_password-methods.inc:339 #: include/functions.inc:2911 include/functions.inc:3070 #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3422 include/functions.inc:3430 #: include/functions.inc:3442 include/functions.inc:3446 #: include/functions.inc:3461 include/functions.inc:3470 #: include/functions.inc:3530 include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #: include/class_CopyPasteHandler.inc:377 #: include/class_gosaSupportDaemon.inc:1184 #: include/class_gosaSupportDaemon.inc:1204 #: setup/class_setupStep_Migrate.inc:450 setup/setup_checks.tpl:25 #: setup/setup_checks.tpl:66 html/index.php:241 html/index.php:245 #: plugins/personal/password/class_password.inc:215 #: plugins/personal/generic/class_user.inc:297 #: plugins/personal/generic/class_user.inc:429 #: plugins/personal/generic/class_user.inc:522 #: plugins/personal/generic/class_user.inc:816 #: plugins/personal/generic/class_user.inc:1050 #: plugins/personal/generic/class_user.inc:1177 #: plugins/personal/generic/class_user.inc:1184 #: plugins/personal/generic/class_user.inc:1202 #: plugins/personal/generic/class_user.inc:1483 #: plugins/personal/generic/class_user.inc:1809 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:203 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:207 #: plugins/admin/groups/class_group.inc:482 #: plugins/admin/groups/class_group.inc:488 #: plugins/admin/groups/class_group.inc:676 #: plugins/admin/groups/class_group.inc:772 #: plugins/admin/groups/class_group.inc:777 #: plugins/admin/groups/class_group.inc:1115 #: plugins/admin/ogroups/class_ogroup.inc:424 #: plugins/admin/acl/class_aclRole.inc:670 #: plugins/admin/departments/class_department.inc:317 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:43 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:49 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:96 #: plugins/generic/statistics/class_statistics.inc:133 #: plugins/generic/statistics/class_statistics.inc:229 #: plugins/generic/statistics/class_statistics.inc:244 #: plugins/generic/references/class_ldifViewer.inc:20 #, php-format msgid "Error" msgstr "Error" #: include/class_management.inc:534 include/class_management.inc:586 #: include/class_management.inc:600 #, fuzzy, php-format msgid "You are not allowed to restore a snapshot for %s!" msgstr "No tiene permisos para recuperar una instantanea para %s." #: include/class_management.inc:549 #, fuzzy, php-format msgid "You are not allowed to remove a snapshot for %s!" msgstr "No tiene permisos para recuperar una instantanea para %s." #: include/class_management.inc:659 include/class_management.inc:743 #: include/class_log.inc:87 include/class_session.inc:76 #: include/class_session.inc:101 include/class_session.inc:127 #: include/functions.inc:640 include/functions.inc:854 #: include/functions.inc:972 include/functions.inc:1367 #: include/functions.inc:2195 include/functions.inc:2225 #: include/functions.inc:2245 include/class_ldap.inc:807 #: include/class_ldap.inc:858 include/class_CopyPasteHandler.inc:160 #: include/class_CopyPasteHandler.inc:274 include/class_acl.inc:1089 #: plugins/personal/myaccount/main.inc:49 msgid "Internal error" msgstr "error interno" #: include/class_management.inc:660 include/class_management.inc:744 #: plugins/personal/myaccount/main.inc:50 #, php-format msgid "" "Cannot instantiate tabbed-plug-in, the base plugin (%s) is not available!" msgstr "" #: include/class_management.inc:669 #, fuzzy, php-format msgid "" "No tab definition for %s found in configuration file: cannot create plugin " "instance!" msgstr "" "No hay declaración de pestaña para '%s' en su archivo de configuración. ¡No " "se puede crear la instancia del plugin!" #: include/class_pluglist.inc:146 include/utils/class_timezone.inc:47 #: include/password-methods/class_password-methods-sha.inc:48 #: include/password-methods/class_password-methods-ssha.inc:51 #: include/functions.inc:864 include/functions.inc:3085 #: include/functions.inc:3100 include/class_config.inc:171 #: include/class_config.inc:712 include/class_config.inc:1173 #: include/class_config.inc:1186 include/class_config.inc:1204 #: include/class_CopyPasteHandler.inc:119 #: include/class_CopyPasteHandler.inc:128 #: include/class_CopyPasteHandler.inc:177 #: include/class_CopyPasteHandler.inc:186 #: include/class_CopyPasteHandler.inc:194 include/class_SnapshotHandler.inc:44 #: include/class_SnapshotHandler.inc:57 include/class_SnapshotHandler.inc:75 #: html/password.php:113 html/index.php:157 html/index.php:233 #: html/main.php:295 plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 msgid "Configuration error" msgstr "Error de configuración" #: include/class_pluglist.inc:147 #, fuzzy msgid "The configuration format has changed: please run the setup again!" msgstr "" "¡El formato de la configuración ha cambiado. Por favor use el asistente de " "configuración!" #: include/class_pluglist.inc:304 #, fuzzy msgid "" "You are currently editing a database entry. Do you want to discard the " "changes?" msgstr "" "Esta actualmente editando una entrada de base de datos.¿Quiere desestimar " "los cambios?" #: include/class_pluglist.inc:479 plugins/admin/groups/class_group.inc:329 #: plugins/admin/groups/class_group.inc:352 #: plugins/admin/groups/class_group.inc:369 #: plugins/admin/departments/class_department.inc:152 #: plugins/generic/references/contents.tpl:18 msgid "Unknown" msgstr "Desconocido" #: include/utils/class_msgPool.inc:17 msgid "This object will be deleted!" msgstr "¡El objeto será eliminado!" #: include/utils/class_msgPool.inc:19 #, fuzzy, php-format msgid "This %s object will be deleted!" msgstr "¡El objeto '%s' será eliminado!" #: include/utils/class_msgPool.inc:24 #, php-format msgid "This object will be deleted: %s" msgstr "Este objeto será eliminado: %s" #: include/utils/class_msgPool.inc:26 #, fuzzy, php-format msgid "This %s object will be deleted: %s" msgstr "El objeto '%s' será eliminado: %s" #: include/utils/class_msgPool.inc:31 msgid "This object will be deleted:" msgstr "Este objeto será eliminado" #: include/utils/class_msgPool.inc:33 #, fuzzy, php-format msgid "This %s object will be deleted:" msgstr "El objeto '%s' será eliminado:" #: include/utils/class_msgPool.inc:37 #, php-format msgid "These objects will be deleted: %s" msgstr "Estos objetos serán eliminados: %s" #: include/utils/class_msgPool.inc:39 #, fuzzy, php-format msgid "These %s objects will be deleted: %s" msgstr "Los objetos '%s' serán eliminados: %s" #: include/utils/class_msgPool.inc:47 msgid "You have no permission to delete this object!" msgstr "¡No tiene permisos para eliminar este objeto!" #: include/utils/class_msgPool.inc:51 include/utils/class_msgPool.inc:55 msgid "You have no permission to delete the object:" msgstr "No tiene permisos para eliminar este objeto:" #: include/utils/class_msgPool.inc:58 msgid "You have no permission to delete these objects:" msgstr "No tiene permisos para eliminar estos objetos:" #: include/utils/class_msgPool.inc:65 msgid "You have no permission to create this object!" msgstr "¡No tiene permisos para crear este objeto!" #: include/utils/class_msgPool.inc:69 include/utils/class_msgPool.inc:73 msgid "You have no permission to create the object:" msgstr "No tiene permisos para crear este objeto:" #: include/utils/class_msgPool.inc:76 msgid "You have no permission to create these objects:" msgstr "No tiene permisos para crear estos objetos:" #: include/utils/class_msgPool.inc:83 msgid "You have no permission to modify this object!" msgstr "¡No tiene permisos para modificar este objeto!" #: include/utils/class_msgPool.inc:87 include/utils/class_msgPool.inc:91 msgid "You have no permission to modify the object:" msgstr "No tiene permisos para modificar este objeto:" #: include/utils/class_msgPool.inc:94 msgid "You have no permission to modify these objects:" msgstr "No tiene permisos para modificar estos objetos:" #: include/utils/class_msgPool.inc:101 msgid "You have no permission to view this object!" msgstr "¡No tiene permisos para ver este objeto!" #: include/utils/class_msgPool.inc:105 include/utils/class_msgPool.inc:109 msgid "You have no permission to view the object:" msgstr "No tiene permisos para ver el objeto:" #: include/utils/class_msgPool.inc:112 msgid "You have no permission to view these objects:" msgstr "No tiene permisos para ver estos objetos:" #: include/utils/class_msgPool.inc:119 msgid "You have no permission to move this object!" msgstr "¡No tiene permisos para mover este objeto!" #: include/utils/class_msgPool.inc:123 include/utils/class_msgPool.inc:127 msgid "You have no permission to move the object:" msgstr "No tiene permisos para mover el objeto:" #: include/utils/class_msgPool.inc:130 msgid "You have no permission to move these objects:" msgstr "No tiene permisos para mover estos objetos:" #: include/utils/class_msgPool.inc:140 include/utils/class_msgPool.inc:152 #: include/utils/class_msgPool.inc:170 msgid "Connection information" msgstr "Información de conexión" #: include/utils/class_msgPool.inc:142 #, php-format msgid "Cannot connect to %s database!" msgstr "¡No se puede conectar a la base de datos %s!" #: include/utils/class_msgPool.inc:154 #, php-format msgid "Cannot select %s database!" msgstr "¡No se puede seleccionar la base de datos %s!" #: include/utils/class_msgPool.inc:160 #, php-format msgid "No %s server defined!" msgstr "¡No se ha definido el servidor %s!" #: include/utils/class_msgPool.inc:172 #, php-format msgid "Cannot query %s database!" msgstr "¡No se ha podido ejecutar la consulta %s!" #: include/utils/class_msgPool.inc:178 #, fuzzy, php-format msgid "The field %s contains a reserved keyword!" msgstr "¡El campo '%s' tiene una palabra reservada!" #: include/utils/class_msgPool.inc:184 #, fuzzy, php-format msgid "Command specified as %s hook for plugin %s does not exist!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/utils/class_msgPool.inc:191 #, fuzzy, php-format msgid "%s command is invalid!" msgstr "¡El comando '%s' no es válido!" #: include/utils/class_msgPool.inc:193 #, fuzzy, php-format msgid "%s command (%s) for plugin %s is invalid!" msgstr "¡'%s' comando (%s) para la extensión %s no es válido!" #: include/utils/class_msgPool.inc:195 #, fuzzy, php-format msgid "%s command for plugin %s is invalid!" msgstr "¡'%s' comando para la extensión %s no es válido!" #: include/utils/class_msgPool.inc:197 #, fuzzy, php-format msgid "%s command (%s) is invalid!" msgstr "¡'%s' comando (%s) no es válido!" #: include/utils/class_msgPool.inc:205 #, fuzzy, php-format msgid "Cannot execute %s command!" msgstr "¡No se puede ejecutar el comando '%s'!" #: include/utils/class_msgPool.inc:207 #, fuzzy, php-format msgid "Cannot execute %s command (%s) for plugin %s!" msgstr "¡No se puede ejecutar el comando '%s' (%s) para la extensión %s!" #: include/utils/class_msgPool.inc:209 #, fuzzy, php-format msgid "Cannot execute %s command for plugin %s!" msgstr "¡No se puede ejecutar el comando '%s' para la extensión %s!" #: include/utils/class_msgPool.inc:211 #, fuzzy, php-format msgid "Cannot execute %s command (%s)!" msgstr "¡No se puede ejecutar el comando '%s' (%s)!" #: include/utils/class_msgPool.inc:219 #, fuzzy, php-format msgid "Value for %s is too large!" msgstr "¡El valor especificado como '%s' es demasiado grande!" #: include/utils/class_msgPool.inc:221 #, fuzzy, php-format msgid "%s must be smaller than %s!" msgstr "¡'%s' debe ser menor que %s!" #: include/utils/class_msgPool.inc:229 #, fuzzy, php-format msgid "Value for %s is too small!" msgstr "¡El valor especificado como '%s' es demasiado pequeño!" #: include/utils/class_msgPool.inc:231 #, fuzzy, php-format msgid "%s must be %s or above!" msgstr "¡'%s' debe ser %d o superior!" #: include/utils/class_msgPool.inc:238 #, fuzzy, php-format msgid "%s depends on %s - please provide both values!" msgstr "¡'%s' depende de '%s' - Por favor introduzca ambos valores!" #: include/utils/class_msgPool.inc:244 #, fuzzy, php-format msgid "There is already an entry with this %s attribute in the system!" msgstr "¡Ya existe una entrada con el atributo '%s' en el sistema!" #: include/utils/class_msgPool.inc:250 #, fuzzy, php-format msgid "The required field %s is empty!" msgstr "¡El campo obligatorio '%s' está vacio!" #: include/utils/class_msgPool.inc:258 include/class_core.inc:309 msgid "Example" msgstr "Ejemplo" #: include/utils/class_msgPool.inc:278 #, fuzzy, php-format msgid "The Field %s contains invalid characters" msgstr "El campo '%s' tiene caracteres no validos." #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s is not allowed:" msgstr "'%s' no está permitido:" #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s are not allowed!" msgstr "¡'%s' no están permitidos!" #: include/utils/class_msgPool.inc:282 #, fuzzy, php-format msgid "The Field %s contains invalid characters!" msgstr "¡El campo '%s' tiene caracteres no validos!" #: include/utils/class_msgPool.inc:289 #, php-format msgid "Missing %s PHP extension!" msgstr "¡Extensión PHP %s no encontrada!" #: include/utils/class_msgPool.inc:295 ihtml/themes/default/acl.tpl:93 #: ihtml/themes/default/acl.tpl:109 ihtml/themes/default/snapshotdialog.tpl:44 #: ihtml/themes/default/snapshotdialog.tpl:90 #: ihtml/themes/default/islocked.tpl:26 #: ihtml/themes/default/copyPasteDialog.tpl:21 #: ihtml/themes/default/msg_dialog.tpl:80 #: ihtml/themes/default/msg_dialog.tpl:141 #: ihtml/themes/default/msg_dialog.tpl:146 setup/setup_ldap.tpl:20 #: setup/setup_migrate.tpl:71 #, php-format msgid "Cancel" msgstr "Cancelar" #: include/utils/class_msgPool.inc:301 ihtml/themes/default/msg_dialog.tpl:77 #: ihtml/themes/default/msg_dialog.tpl:79 #: ihtml/themes/default/msg_dialog.tpl:136 #: ihtml/themes/default/msg_dialog.tpl:139 #: ihtml/themes/default/msg_dialog.tpl:144 #: setup/class_setupStep_Migrate.inc:153 setup/class_setupStep_Migrate.inc:303 #: setup/class_setupStep_Migrate.inc:684 setup/class_setupStep_Migrate.inc:828 #: setup/setup_checks.tpl:21 setup/setup_checks.tpl:62 #, php-format msgid "OK" msgstr "" #: include/utils/class_msgPool.inc:307 ihtml/themes/default/acl.tpl:33 #: ihtml/themes/default/acl.tpl:89 ihtml/themes/default/acl.tpl:106 #: setup/setup_ldap.tpl:19 setup/setup_migrate.tpl:70 #, php-format msgid "Apply" msgstr "Aplicar" #: include/utils/class_msgPool.inc:313 #: ihtml/themes/default/copyPasteDialog.tpl:19 #, php-format msgid "Save" msgstr "Guardar" #: include/utils/class_msgPool.inc:319 #: plugins/personal/generic/generic.tpl:252 #: plugins/personal/generic/generic.tpl:272 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:83 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:123 #, php-format msgid "Add" msgstr "Añadir" #: include/utils/class_msgPool.inc:319 #, php-format msgid "Add %s" msgstr "Añadir %s" #: include/utils/class_msgPool.inc:325 #, php-format msgid "Delete" msgstr "Eliminar" #: include/utils/class_msgPool.inc:325 #, php-format msgid "Delete %s" msgstr "Eliminar %s" #: include/utils/class_msgPool.inc:331 ihtml/themes/default/sizelimit.tpl:16 #, php-format msgid "Set" msgstr "Activar" #: include/utils/class_msgPool.inc:331 #, php-format msgid "Set %s" msgstr "Activar %s" #: include/utils/class_msgPool.inc:337 #, php-format msgid "Edit..." msgstr "Editar..." #: include/utils/class_msgPool.inc:337 #, php-format msgid "Edit %s..." msgstr "Editar %s..." #: include/utils/class_msgPool.inc:343 msgid "Back" msgstr "Atrás" #: include/utils/class_msgPool.inc:363 #, php-format msgid "This account has no valid %s extensions!" msgstr "¡Esta cuenta tiene extensiones %s no validas!" #: include/utils/class_msgPool.inc:369 #, php-format msgid "" "This account has %s settings enabled. You can disable them by clicking below." msgstr "" "Esta cuenta tiene características %s activadas. Puede desactivarla pulsando " "aquí" #: include/utils/class_msgPool.inc:372 include/utils/class_msgPool.inc:379 #, php-format msgid "" "This account has %s settings enabled. To disable them, you'll need to remove " "the %s settings first!" msgstr "" "Esta cuenta tiene las características %s activadas. ¡Para desactivarlas, " "necesita eliminar las caracteristicas %s primero!" #: include/utils/class_msgPool.inc:388 #, php-format msgid "" "This account has %s settings disabled. You can enable them by clicking below." msgstr "" "Esta cuenta tiene características %s desactivadas. Puede activarla pulsando " "aquí" #: include/utils/class_msgPool.inc:391 include/utils/class_msgPool.inc:398 #, php-format msgid "" "This account has %s settings disabled. To enable them, you'll need to add " "the %s settings first!" msgstr "" "Esta cuenta tiene las características %s desactivadas. ¡Para activarlas, " "necesita añadir las caracteristicas %s primero!" #: include/utils/class_msgPool.inc:406 #, php-format msgid "Add %s settings" msgstr "Añadir caracteristicas %s" #: include/utils/class_msgPool.inc:412 #, php-format msgid "Remove %s settings" msgstr "Eliminar las caracteristicas %s" #: include/utils/class_msgPool.inc:418 msgid "Click the 'Edit' button below to change informations in this dialog" msgstr "" "Pulse en el botón - Editar - para cambiar la información en esta ventana" #: include/utils/class_msgPool.inc:424 msgid "January" msgstr "Enero" #: include/utils/class_msgPool.inc:424 msgid "February" msgstr "Febrero" #: include/utils/class_msgPool.inc:424 msgid "March" msgstr "Marzo" #: include/utils/class_msgPool.inc:424 msgid "April" msgstr "Abril" #: include/utils/class_msgPool.inc:425 msgid "May" msgstr "Mayo" #: include/utils/class_msgPool.inc:425 msgid "June" msgstr "Junio" #: include/utils/class_msgPool.inc:425 msgid "July" msgstr "Julio" #: include/utils/class_msgPool.inc:425 msgid "August" msgstr "Agosto" #: include/utils/class_msgPool.inc:425 msgid "September" msgstr "Septiembre" #: include/utils/class_msgPool.inc:426 msgid "October" msgstr "Octubre" #: include/utils/class_msgPool.inc:426 msgid "November" msgstr "Noviembre" #: include/utils/class_msgPool.inc:426 msgid "December" msgstr "Diciembre" #: include/utils/class_msgPool.inc:432 msgid "Sunday" msgstr "Domingo" #: include/utils/class_msgPool.inc:432 msgid "Monday" msgstr "Lunes" #: include/utils/class_msgPool.inc:432 msgid "Tuesday" msgstr "Martes" #: include/utils/class_msgPool.inc:432 msgid "Wednesday" msgstr "Miércoles" #: include/utils/class_msgPool.inc:432 msgid "Thursday" msgstr "Jueves" #: include/utils/class_msgPool.inc:432 msgid "Friday" msgstr "Viernes" #: include/utils/class_msgPool.inc:432 msgid "Saturday" msgstr "Sábado" #: include/utils/class_msgPool.inc:439 msgid "MySQL operation failed!" msgstr "¡La consulta MYSQL ha fallado!" #: include/utils/class_msgPool.inc:447 msgid "read operation" msgstr "lectura" #: include/utils/class_msgPool.inc:447 msgid "add operation" msgstr "adición" #: include/utils/class_msgPool.inc:447 msgid "modify operation" msgstr "modificación" #: include/utils/class_msgPool.inc:448 msgid "delete operation" msgstr "eliminación" #: include/utils/class_msgPool.inc:448 msgid "search operation" msgstr "busqueda" #: include/utils/class_msgPool.inc:448 msgid "authentication" msgstr "autenticación" #: include/utils/class_msgPool.inc:451 #, php-format msgid "LDAP %s failed!" msgstr "¡LDAP %s ha fallado!" #: include/utils/class_msgPool.inc:453 msgid "LDAP operation failed!" msgstr "¡La consulta LDAP ha fallado!" #: include/utils/class_msgPool.inc:459 include/class_acl.inc:904 #: include/class_acl.inc:911 include/class_acl.inc:918 #: ihtml/themes/default/snapshotdialog.tpl:20 #: ihtml/themes/default/snapshotdialog.tpl:63 #: plugins/admin/departments/class_department.inc:624 msgid "Object" msgstr "Objeto" #: include/utils/class_msgPool.inc:469 msgid "Upload failed!" msgstr "¡Ha fallado el subir archivo!" #: include/utils/class_msgPool.inc:472 #, php-format msgid "Upload failed: %s" msgstr "Ha fallado el subir archivo: %s" #: include/utils/class_msgPool.inc:479 msgid "Communication failure with the infrastructure service!" msgstr "¡Ha fallado la comunciación con el servicio de infraestructura!" #: include/utils/class_msgPool.inc:481 #, php-format msgid "Communication failure with the infrastructure service: %s" msgstr "Ha fallado la comunciación con el servicio de infraestructura: %s" #: include/utils/class_msgPool.inc:488 #, fuzzy msgid "Communication failure with the GOsa-NG service!" msgstr "¡Ha fallado la comunciación con el servicio de infraestructura!" #: include/utils/class_msgPool.inc:490 #, fuzzy, php-format msgid "Communication failure with the GOsa-NG service: %s" msgstr "Ha fallado la comunciación con el servicio de infraestructura: %s" #: include/utils/class_msgPool.inc:497 include/utils/class_msgPool.inc:500 #, fuzzy, php-format msgid "This %s is still in use by this object: %s" msgstr "'%s' esta todavía en uso por el objeto: %s" #: include/utils/class_msgPool.inc:503 #, fuzzy, php-format msgid "This %s is still in use." msgstr "'%s' esta todavía en uso." #: include/utils/class_msgPool.inc:505 #, fuzzy, php-format msgid "This %s is still in use by these objects: %s" msgstr "'%s' esta todavía en uso por los objetos: %s" #: include/utils/class_msgPool.inc:511 #, fuzzy, php-format msgid "File %s does not exist!" msgstr "¡El archivo %s no existe!" #: include/utils/class_msgPool.inc:517 #, fuzzy, php-format msgid "Cannot open file %s for reading!" msgstr "¡No se puede abrir el archivo '%s'!" #: include/utils/class_msgPool.inc:523 #, fuzzy, php-format msgid "Cannot open file %s for writing!" msgstr "¡No se puede grabar el archivo '%s'!" #: include/utils/class_msgPool.inc:529 #, fuzzy, php-format msgid "" "The value for %s is currently unconfigured or invalid, please check your " "configuration file!" msgstr "" "El valor para '%s' no esta configurado o no es válido.¡Por favor compruebe " "el archivo de configuración!" #: include/utils/class_msgPool.inc:535 #, fuzzy, php-format msgid "Cannot delete file %s!" msgstr "¡No se puede eliminar el fichero '%s'!" #: include/utils/class_msgPool.inc:541 #, fuzzy, php-format msgid "Cannot create folder %s!" msgstr "¡No se puede crear la carpeta '%s'!" #: include/utils/class_msgPool.inc:547 #, fuzzy, php-format msgid "Cannot delete folder %s!" msgstr "¡No se puede eliminar la carpeta '%s'!" #: include/utils/class_msgPool.inc:553 #, php-format msgid "Checking for %s support" msgstr "Comprobando soporte %s" #: include/utils/class_msgPool.inc:559 #, php-format msgid "Install and activate the %s PHP module." msgstr "Instala y activa el módulo de PHP %s." #: include/utils/class_msgPool.inc:565 #, fuzzy, php-format msgid "" "Cannot initialize class %s! Maybe there is a plugin missing in your gosa " "setup?" msgstr "" "¡No se puede inicializar la clase '%s'! ¿Puede que falte la extensión " "correspondiente en la configuración de GOsa?" #: include/utils/class_msgPool.inc:571 #, fuzzy msgid "" "The supplied base is not valid and has been reset to its previous value!" msgstr "¡La base introducida no es válida, se ha dejado el valor anterior!" #: include/utils/class_timezone.inc:47 #, fuzzy, php-format msgid "The configured timezone %s is not valid!" msgstr "No se puede acceder a la configuración de GOsa %s/%s. Cancelado" #: include/utils/class_xml.inc:37 include/class_tabs.inc:287 #: include/class_configRegistry.inc:689 include/class_configRegistry.inc:704 #: include/class_configRegistry.inc:719 include/class_configRegistry.inc:734 #: include/class_configRegistry.inc:750 include/class_configRegistry.inc:755 #: include/class_configRegistry.inc:775 include/class_configRegistry.inc:780 #: include/class_configRegistry.inc:797 include/class_configRegistry.inc:802 #: include/class_configRegistry.inc:820 include/class_configRegistry.inc:825 #: include/class_configRegistry.inc:841 include/class_configRegistry.inc:856 #: include/class_configRegistry.inc:871 include/functions.inc:2516 #: include/functions.inc:2520 include/functions.inc:2526 #: include/functions.inc:2550 include/class_jsonRPC.inc:37 #: setup/setup_checks.tpl:27 setup/setup_checks.tpl:68 html/password.php:315 #: plugins/personal/posix/class_posixAccount.inc:692 #: plugins/personal/posix/class_posixAccount.inc:815 #: plugins/admin/groups/class_group.inc:871 #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "Warning" msgstr "Aviso" #: include/utils/class_xml.inc:43 include/functions.inc:482 #: html/password.php:61 html/main.php:170 #: plugins/admin/departments/class_department.inc:439 msgid "Fatal error" msgstr "Error fatal" #: include/utils/class_xml.inc:51 msgid "XML error" msgstr "Error XML" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort ascending" msgstr "" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort descending" msgstr "" #: include/class_listing.inc:324 msgid "Select all" msgstr "Seleccione todos" #: include/class_listing.inc:584 msgid "created by" msgstr "Creado por" #: include/class_listing.inc:1081 include/class_listing.inc:1083 #: include/class_ItemSelector.inc:247 include/class_baseSelector.inc:188 #: include/class_releaseSelector.inc:214 msgid "Root" msgstr "Raíz" #: include/class_listing.inc:1088 include/class_listing.inc:1090 msgid "Go to preceding level" msgstr "" #: include/class_listing.inc:1096 include/class_listing.inc:1098 msgid "Go to current users level" msgstr "" #: include/class_listing.inc:1103 msgid "Reload list" msgstr "Recargar lista" #: include/class_listing.inc:1207 #: plugins/addons/propertyEditor/property-list.xml:97 #: plugins/admin/groups/group-list.xml:62 #: plugins/admin/ogroups/ogroup-list.xml:62 plugins/admin/acl/acl-list.xml:65 #: plugins/admin/departments/dep-list.xml:87 #: plugins/admin/users/user-list.xml:78 msgid "Actions" msgstr "Acciones" #: include/class_listing.inc:1477 msgid "Copy" msgstr "Copiar" #: include/class_listing.inc:1483 msgid "Cut" msgstr "Mover" #: include/class_listing.inc:1491 include/class_listing.inc:1493 #: include/class_CopyPasteHandler.inc:571 msgid "Paste" msgstr "Pegar" #: include/class_listing.inc:1516 msgid "Cut this entry" msgstr "Mover esta entrada" #: include/class_listing.inc:1525 msgid "Copy this entry" msgstr "Copiar esta entrada" #: include/class_listing.inc:1557 include/class_listing.inc:1559 msgid "Restore snapshots" msgstr "Recuperar instantánea" #: include/class_listing.inc:1573 msgid "Export list" msgstr "Exportar lista" #: include/class_listing.inc:1607 include/class_SnapShotDialog.inc:142 msgid "Restore snapshot" msgstr "Recuperar instantanea" #: include/class_listing.inc:1615 #, fuzzy msgid "Create new snapshot for this object" msgstr "¡Crear una nueva instantánea de este objeto!" #: include/class_userFilter.inc:55 #: ihtml/themes/default/userFilterEditor.tpl:27 #, fuzzy msgid "Parent filter" msgstr "Parámetro" #: include/class_userFilter.inc:55 include/class_userFilter.inc:150 #: include/class_SnapShotDialog.inc:55 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:236 #: include/class_userFilterEditor.inc:240 #: ihtml/themes/default/userFilterEditor.tpl:11 setup/setup_migrate.tpl:43 #: setup/setup_migrate.tpl:45 setup/setup_feedback.tpl:16 #: plugins/personal/posix/trustSelect/trust-list.xml:46 #: plugins/personal/posix/groupSelect/group-list.xml:33 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/personal/generic/class_user.inc:1316 #: plugins/personal/generic/class_user.inc:1334 #: plugins/personal/generic/class_user.inc:1376 #: plugins/personal/generic/class_user.inc:1860 #: plugins/addons/propertyEditor/property-list.xml:65 #: plugins/admin/groups/class_group.inc:925 #: plugins/admin/groups/class_group.inc:936 #: plugins/admin/groups/class_group.inc:938 #: plugins/admin/groups/class_group.inc:955 #: plugins/admin/groups/class_group.inc:969 #: plugins/admin/groups/class_group.inc:976 #: plugins/admin/groups/class_group.inc:1076 #: plugins/admin/groups/group-list.xml:41 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:49 #: plugins/admin/ogroups/ogroup-list.xml:41 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:97 #: plugins/admin/ogroups/class_ogroup.inc:157 #: plugins/admin/ogroups/class_ogroup.inc:683 #: plugins/admin/ogroups/class_ogroup.inc:698 #: plugins/admin/ogroups/class_ogroup.inc:702 #: plugins/admin/ogroups/class_ogroup.inc:885 plugins/admin/acl/acl_role.tpl:7 #: plugins/admin/acl/acl-list.xml:49 plugins/admin/acl/paste_role.tpl:4 #: plugins/admin/acl/class_aclRole.inc:741 #: plugins/admin/acl/class_aclRole.inc:753 #: plugins/admin/acl/class_aclRole.inc:763 #: plugins/admin/departments/class_countryGeneric.inc:47 #: plugins/admin/departments/class_countryGeneric.inc:49 #: plugins/admin/departments/class_countryGeneric.inc:54 #: plugins/admin/departments/class_countryGeneric.inc:56 #: plugins/admin/departments/class_countryGeneric.inc:58 #: plugins/admin/departments/class_department.inc:355 #: plugins/admin/departments/class_department.inc:357 #: plugins/admin/departments/class_department.inc:362 #: plugins/admin/departments/class_department.inc:369 #: plugins/admin/departments/class_department.inc:373 #: plugins/admin/departments/class_domain.inc:47 #: plugins/admin/departments/class_domain.inc:49 #: plugins/admin/departments/class_domain.inc:54 #: plugins/admin/departments/class_domain.inc:56 #: plugins/admin/departments/class_domain.inc:58 #: plugins/admin/departments/class_domain.inc:90 #: plugins/admin/departments/class_organizationGeneric.inc:79 #: plugins/admin/departments/class_organizationGeneric.inc:81 #: plugins/admin/departments/class_organizationGeneric.inc:86 #: plugins/admin/departments/class_organizationGeneric.inc:88 #: plugins/admin/departments/class_organizationGeneric.inc:90 #: plugins/admin/departments/class_localityGeneric.inc:48 #: plugins/admin/departments/class_localityGeneric.inc:50 #: plugins/admin/departments/class_localityGeneric.inc:55 #: plugins/admin/departments/class_localityGeneric.inc:57 #: plugins/admin/departments/class_localityGeneric.inc:59 #: plugins/admin/departments/class_dcObject.inc:47 #: plugins/admin/departments/class_dcObject.inc:49 #: plugins/admin/departments/class_dcObject.inc:54 #: plugins/admin/departments/class_dcObject.inc:56 #: plugins/admin/departments/class_dcObject.inc:58 #: plugins/admin/departments/class_dcObject.inc:90 #: plugins/admin/users/class_userManagement.inc:549 #: plugins/admin/users/class_userManagement.inc:597 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Name" msgstr "Nombre" #: include/class_userFilter.inc:55 include/class_SnapShotDialog.inc:174 #: include/class_acl.inc:255 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:245 #: ihtml/themes/default/userFilterEditor.tpl:19 #: plugins/personal/posix/trustSelect/trust-list.xml:53 #: plugins/personal/posix/groupSelect/group-list.xml:40 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/admin/groups/class_group.inc:1077 #: plugins/admin/groups/generic.tpl:24 plugins/admin/groups/group-list.xml:49 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:49 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:105 #: plugins/admin/ogroups/generic.tpl:15 #: plugins/admin/ogroups/class_ogroup.inc:887 #: plugins/admin/acl/acl_role.tpl:17 plugins/admin/acl/acl-list.xml:57 #: plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/acl/class_aclRole.inc:743 #: plugins/admin/departments/dcObject.tpl:19 #: plugins/admin/departments/country.tpl:19 #: plugins/admin/departments/class_countryGeneric.inc:63 #: plugins/admin/departments/class_countryGeneric.inc:92 #: plugins/admin/departments/dep-list.xml:79 #: plugins/admin/departments/organization.tpl:19 #: plugins/admin/departments/class_department.inc:365 #: plugins/admin/departments/class_department.inc:675 #: plugins/admin/departments/class_domain.inc:63 #: plugins/admin/departments/class_domain.inc:91 #: plugins/admin/departments/class_organizationGeneric.inc:95 #: plugins/admin/departments/class_organizationGeneric.inc:123 #: plugins/admin/departments/generic.tpl:19 #: plugins/admin/departments/locality.tpl:19 #: plugins/admin/departments/class_localityGeneric.inc:64 #: plugins/admin/departments/class_localityGeneric.inc:92 #: plugins/admin/departments/class_dcObject.inc:63 #: plugins/admin/departments/class_dcObject.inc:91 #: plugins/admin/departments/domain.tpl:19 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Description" msgstr "Descripción" #: include/class_userFilter.inc:55 plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/departments/organization.tpl:27 #: plugins/admin/departments/class_department.inc:676 #: plugins/admin/departments/class_organizationGeneric.inc:124 #: plugins/admin/departments/generic.tpl:27 msgid "Category" msgstr "Categoría" #: include/class_userFilter.inc:55 ihtml/themes/default/acl.tpl:15 #: ihtml/themes/default/acl.tpl:16 msgid "Options" msgstr "Opciones" #: include/class_userFilter.inc:275 include/functions.inc:511 #: include/functions.inc:546 include/functions.inc:554 #: include/functions.inc:600 include/functions.inc:879 #: include/functions.inc:928 include/functions.inc:985 #: include/functions.inc:1035 include/functions.inc:3304 #: include/class_ldap.inc:870 include/class_ldap.inc:1328 #: include/class_config.inc:367 include/class_acl.inc:1396 #: include/class_acl.inc:1492 include/class_SnapshotHandler.inc:123 #: include/class_SnapshotHandler.inc:280 include/class_SnapshotHandler.inc:329 #: include/class_SnapshotHandler.inc:333 include/class_SnapshotHandler.inc:346 #: include/class_SnapshotHandler.inc:380 include/class_SnapshotHandler.inc:435 #: include/class_SnapshotHandler.inc:500 include/class_SnapshotHandler.inc:515 #: setup/class_setupStep_Migrate.inc:461 setup/class_setupStep_Migrate.inc:814 #: html/index.php:271 plugins/personal/posix/class_posixAccount.inc:570 #: plugins/personal/posix/class_posixAccount.inc:832 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:253 #: plugins/personal/generic/class_user.inc:730 #: plugins/personal/generic/class_user.inc:1099 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:204 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:269 #: plugins/admin/groups/class_group.inc:619 #: plugins/admin/groups/class_group.inc:895 #: plugins/admin/ogroups/class_ogroup.inc:782 #: plugins/admin/ogroups/class_ogroup.inc:799 #: plugins/admin/acl/class_aclRole.inc:602 #: plugins/admin/acl/class_aclRole.inc:642 #: plugins/admin/acl/class_aclRole.inc:656 #: plugins/admin/departments/class_department.inc:285 #: plugins/admin/departments/class_department.inc:482 #: plugins/admin/departments/class_department.inc:759 #: plugins/admin/departments/class_department.inc:790 #: plugins/generic/references/class_reference.inc:97 msgid "LDAP error" msgstr "Error LDAP" #: include/class_log.inc:87 #, php-format msgid "Logging failed: %s" msgstr "Entrada fallida: %s" #: include/class_log.inc:102 #, fuzzy, php-format msgid "Invalid option %s specified!" msgstr "¡Se ha indicado una opción no válida: '%s'!" #: include/class_log.inc:106 #, fuzzy msgid "Specified 'objectType' is empty or invalid!" msgstr "¡Se ha indicado un objectType vacio o no válido!" #: include/class_multi_plug.inc:362 #, fuzzy msgid "You are currently editing multiple entries." msgstr "Está actualmente editando varias entradas." #: include/class_multi_plug.inc:394 #, fuzzy msgid "Reset password" msgstr "Introducir contraseña" #: include/class_multi_plug.inc:394 #, fuzzy msgid "The user password has been reset. Please set a new password!" msgstr "" "¡La contraseña del usuario se ha eliminado, por favor introduzca una nueva!" #: include/class_tabs.inc:72 #, fuzzy, php-format msgid "No plugin definition for %s found: please check the configuration file!" msgstr "" "No hay definiciones de extensión para iniciar '%s', por favor compruebe su " "archivo de configuración." #: include/class_tabs.inc:287 #, fuzzy, php-format msgid "Delete process has been canceled by plugin %s: %s" msgstr "El proceso de eliminación ha sido cancelado por la extensión '%s': %s" #: include/class_tabs.inc:420 include/class_acl.inc:1428 #: include/class_acl.inc:1429 include/class_acl.inc:1435 #: plugins/admin/acl/acl-list.xml:15 plugins/admin/acl/tabs_acl.inc:28 #: plugins/admin/acl/class_aclRole.inc:770 msgid "ACL" msgstr "ACL" #: include/class_tabs.inc:425 msgid "References" msgstr "Referencias" #: include/functions_helpviewer.inc:45 #, fuzzy, php-format msgid "XML error in guide.xml: %s at line %s" msgstr "Error XML en guide.xml: %s en la linea %d" #: include/functions_helpviewer.inc:88 #, fuzzy msgid "No help available for this plug-in." msgstr "No hay ayuda disponible para esta extensión." #: include/functions_helpviewer.inc:97 html/helpviewer.php:193 msgid "previous" msgstr "anterior" #: include/functions_helpviewer.inc:101 html/helpviewer.php:197 msgid "next" msgstr "siguiente" #: include/functions_helpviewer.inc:388 #, php-format msgid "%s results for your search with the keyword %s" msgstr "hay %s resultados para su busqueda con el termino %s" #: include/functions_helpviewer.inc:461 #, php-format msgid "%s%% hit rate in file %s" msgstr "%s%% procentaje en fichero %s" #: include/class_msg_dialog.inc:124 msgid "Please fix the above error and reload the page." msgstr "Por favor solucione el problema y actualize la página." #: include/class_plugin.inc:581 msgid "" "The current object has been altered while beeing edited. If you save this " "entry, changes that have been made by others will be discarded!" msgstr "" #: include/class_plugin.inc:1411 #, php-format msgid "Changing ACL DN from %s to %s" msgstr "" #: include/class_SnapShotDialog.inc:55 #, fuzzy msgid "Date" msgstr "Pegar" #: include/class_SnapShotDialog.inc:94 #, fuzzy, php-format msgid "You are about to delete the snapshot %s." msgstr "Va a eliminar la instantanea '%s'." #: include/class_SnapShotDialog.inc:143 #, fuzzy msgid "Delete snapshot" msgstr "Crear instantánea" #: include/class_SnapShotDialog.inc:144 include/class_SnapShotDialog.inc:162 msgid "Y-m-d, H:i:s" msgstr "Y-m-d, H:i:s" #: include/class_pathNavigator.inc:86 #, fuzzy msgid "Welcome to GOsa" msgstr "Bienvenidos al asistente de configuración de GOsa" #: include/password-methods/class_password-methods.inc:339 msgid "Cannot find a suitable password method for the current hash!" msgstr "" "¡No se puede encontrar un método de codificación válido para la clave " "introducida!" #: include/class_sortableListing.inc:234 #, fuzzy msgid "Sortable list" msgstr "Exportar lista" #: include/class_sortableListing.inc:239 msgid "Edit this entry" msgstr "Editar esta entrada" #: include/class_sortableListing.inc:244 msgid "Delete this entry" msgstr "Eliminar esta entrada" #: include/class_configRegistry.inc:194 #: plugins/personal/generic/class_user.inc:273 #: plugins/personal/generic/class_user.inc:1898 #, fuzzy msgid "unknown" msgstr "Desconocido" #: include/class_configRegistry.inc:197 #, php-format msgid "%s has version %s but %s is required!" msgstr "" #: include/class_configRegistry.inc:240 setup/class_setupStep_Schema.inc:96 msgid "The following object classes are missing:" msgstr "" #: include/class_configRegistry.inc:247 setup/class_setupStep_Schema.inc:99 #, fuzzy msgid "The following object classes are outdated:" msgstr "Las siguientes referencias se actualizaran" #: include/class_configRegistry.inc:253 msgid "" "Plugins that require one or more of the object classes above will be " "disabled until the object classes get updated." msgstr "" #: include/class_configRegistry.inc:255 #, fuzzy msgid "Schema validation error" msgstr "Error de Autenticación" #: include/class_configRegistry.inc:690 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a bool value!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/class_configRegistry.inc:705 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a string!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/class_configRegistry.inc:720 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be numeric!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/class_configRegistry.inc:735 #, fuzzy, php-format msgid "The path %s specified for %s:%s is invalid!" msgstr "¡'%s' comando para la extensión %s no es válido!" #: include/class_configRegistry.inc:751 include/class_configRegistry.inc:798 #, fuzzy, php-format msgid "The folder %s specified for %s:%s does not exists!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/class_configRegistry.inc:756 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not readable!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/class_configRegistry.inc:776 include/class_configRegistry.inc:781 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not writeable!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/class_configRegistry.inc:803 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not writeable!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/class_configRegistry.inc:821 #, fuzzy, php-format msgid "The file %s specified for %s:%s does not exists!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/class_configRegistry.inc:826 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not readable!" msgstr "" "¡El comando especificado como método %s para la extensión '%s' no existe!" #: include/class_configRegistry.inc:842 #, fuzzy, php-format msgid "The command %s specified for %s:%s is invalid!" msgstr "¡'%s' comando (%s) para la extensión %s no es válido!" #: include/class_configRegistry.inc:857 #, fuzzy, php-format msgid "The DN %s specified for %s:%s is invalid!" msgstr "¡'%s' comando para la extensión %s no es válido!" #: include/class_configRegistry.inc:872 #, fuzzy, php-format msgid "The RDN %s specified for %s:%s is invalid!" msgstr "¡'%s' comando para la extensión %s no es válido!" #: include/php_setup.inc:114 msgid "Generating this page caused the PHP interpreter to raise some errors!" msgstr "" "¡La generación de esta página ha provocado errores en el interprete PHP!" #: include/php_setup.inc:117 #, fuzzy msgid "Send bug report" msgstr "Enviar informe de errores" #: include/php_setup.inc:121 msgid "Toggle details" msgstr "" #: include/php_setup.inc:130 msgid "PHP error" msgstr "Error PHP" #: include/php_setup.inc:149 msgid "class" msgstr "clase" #: include/php_setup.inc:155 msgid "function" msgstr "función" #: include/php_setup.inc:160 msgid "static" msgstr "estático" #: include/php_setup.inc:164 msgid "method" msgstr "método" #: include/php_setup.inc:197 #, fuzzy msgid "Traceback" msgstr "Traza" #: include/php_setup.inc:198 msgid "File" msgstr "Archivo" #: include/php_setup.inc:198 msgid "Line" msgstr "Linea" #: include/php_setup.inc:198 include/class_acl.inc:293 #: plugins/admin/acl/class_aclRole.inc:182 msgid "Type" msgstr "Tipo" #: include/php_setup.inc:199 msgid "Arguments" msgstr "Argumentos" #: include/class_certificate.inc:73 msgid "Certificate is empty!" msgstr "¡El certificado esta vacío!" #: include/class_certificate.inc:100 #, fuzzy msgid "Cannot load certificate: only PEM and DER are supported!" msgstr "" "¡No se puede cargar el certificado - solo se soportan certificados PEM/DER!" #: include/class_certificate.inc:115 msgid "Cannot extract information for non PEM certificates!" msgstr "¡No se puede extraer información de certificados que no sean PEM!" #: include/class_certificate.inc:219 msgid "No valid certificate loaded!" msgstr "¡No ha cargado un certificado válido!" #: include/class_session.inc:76 include/class_session.inc:101 #: include/class_session.inc:127 #, fuzzy msgid "Requested channel does not exist!" msgstr "" "¡El canal requerido no existe!. Por favor contacte con su Administrador." #: include/functions.inc:151 #, fuzzy, php-format msgid "Fatal error: no class locations defined - please run %s to fix this" msgstr "" "Error fatal: no se han definido un emplazamiento para las clases - por favor " "ejecute '%s' para solucionar esto" #: include/functions.inc:158 #, fuzzy, php-format msgid "Fatal error: cannot instantiate class %s - try running %s to fix this" msgstr "" "Error fatal: no se puede instanciar la clase '%s' - intente solucionarlo " "ejecutando '%s'" #: include/functions.inc:483 #, fuzzy, php-format msgid "Error while connecting to LDAP: %s" msgstr "" "FATAL: Ha habido un error conectando a LDAP. El servidor comunicó '%s'." #: include/functions.inc:554 include/functions.inc:640 #, fuzzy msgid "User ID is not unique!" msgstr "¡sambaUnixIdPool no es único!" #: include/functions.inc:854 include/functions.inc:972 msgid "Error while locking entry!" msgstr "" #: include/functions.inc:864 #, fuzzy, php-format msgid "Cannot store lock information in LDAP!" msgstr "" "¡No se puede acceder a la información sobre los esuqemas LDAP instalados!" #: include/functions.inc:864 #, fuzzy, php-format msgid "Error: %s" msgstr "Error" #: include/functions.inc:1294 #, fuzzy, php-format msgid "The current size limit of %d entries is exceeded!" msgstr "¡El límite máximo de %d entradas se ha sobrepasado!" #: include/functions.inc:1296 #, php-format msgid "Set the size limit to %s" msgstr "" #: include/functions.inc:1308 plugins/personal/generic/generic.tpl:218 msgid "Configure" msgstr "Configurar" #: include/functions.inc:1313 #, fuzzy msgid "list is incomplete" msgstr "¡El filtro está incompleto!" #: include/functions.inc:1663 msgid "Continue anyway" msgstr "Continuar de cualquier manera" #: include/functions.inc:1665 msgid "Edit anyway" msgstr "Editar de cualquier manera" #: include/functions.inc:1668 msgid "These entries are currently locked:" msgstr "" #: include/functions.inc:1909 msgid "Entries per page" msgstr "Entradas por página" #: include/functions.inc:2087 #, fuzzy, php-format msgid "GOsa %s" msgstr "servicio de registro de GOsa" #: include/functions.inc:2094 #, fuzzy, php-format msgid "GOsa %s snapshot (Rev %s)" msgstr "Instantánea de desarrollo GOsa (Rev %s)" #: include/functions.inc:2099 #, php-format msgid "GOsa development snapshot (Rev %s)" msgstr "Instantánea de desarrollo GOsa (Rev %s)" #: include/functions.inc:2195 #, fuzzy, php-format msgid "File %s cannot be deleted!" msgstr "El archivo '%s' no puede ser eliminado." #: include/functions.inc:2225 include/functions.inc:2245 #, fuzzy msgid "Cannot write revision file!" msgstr "¡No se puede escribir en el archivo de revisión!" #: include/functions.inc:2516 include/functions.inc:2520 #: include/functions.inc:2526 msgid "'baseIdHook' is not available. Using default base!" msgstr "No esta disponible 'baseIdHook'.¡Se usara la base predeterminada!" #: include/functions.inc:2550 #, fuzzy msgid "" "Cannot read schema information from LDAP. Schema validation is not possible!" msgstr "" "No puedo obtener información de esquemas del servidor. ¡No es posible " "comprobar los esquemas!" #: include/functions.inc:2576 msgid "This class is used to make users appear in GOsa." msgstr "" #: include/functions.inc:2583 #, fuzzy msgid "" "This class is used to lock entries in order to prevent multiple edits at a " "time." msgstr "" "Usado para bloquear entradas editadas actualmente y así evitar múltiples " "cambios simultáneos." #: include/functions.inc:2628 #, fuzzy, php-format msgid "Required object class %s is missing!" msgstr "¡No se ha encontrado la clase de objeto necesaria '%s'!" #: include/functions.inc:2631 #, fuzzy, php-format msgid "Optional object class %s is missing!" msgstr "¡No se ha encontrado la clase de objeto opcional '%s'!" #: include/functions.inc:2636 #, fuzzy, php-format msgid "Wrong version of required object class %s (!=%s) detected!" msgstr "" "¡Las versiones de la clase de objeto necesaria no coinciden '%s' (!=%s)!" #: include/functions.inc:2639 #, fuzzy, php-format msgid "Class available" msgstr "Clase(s) disponibles" #: include/functions.inc:2661 msgid "" "RFC2307bis schema is enabled, but the current LDAP configuration does not " "support it!" msgstr "" #: include/functions.inc:2662 #, fuzzy msgid "" "To use RFC2307bis groups, the objectClass 'posixGroup' must be AUXILIARY." msgstr "" "Para poder usar grupos conforme a rfc2307bis, el objectClass 'posixGroup' " "debe ser AUXILIARY" #: include/functions.inc:2666 msgid "" "RFC2307bis schema is disabled, but the current LDAP configuration supports " "it!" msgstr "" #: include/functions.inc:2667 #, fuzzy msgid "To correct this, the objectClass 'posixGroup' must be STRUCTURAL." msgstr "El objectClass 'posixGroup' debe ser STRUCTURAL" #: include/functions.inc:2692 msgid "German" msgstr "Alemán" #: include/functions.inc:2693 msgid "French" msgstr "Francés" #: include/functions.inc:2694 msgid "Italian" msgstr "Italiano" #: include/functions.inc:2695 msgid "Spanish" msgstr "Español" #: include/functions.inc:2696 msgid "English" msgstr "Inglés" #: include/functions.inc:2697 msgid "Dutch" msgstr "Holandes" #: include/functions.inc:2698 msgid "Polish" msgstr "Polaco" #: include/functions.inc:2699 msgid "Brazilian Portuguese" msgstr "" #: include/functions.inc:2701 msgid "Chinese" msgstr "Chino" #: include/functions.inc:2702 msgid "Vietnamese" msgstr "Vietnamita" #: include/functions.inc:2703 msgid "Russian" msgstr "Ruso" #: include/functions.inc:2896 #, fuzzy msgid "Cannot detect password hash!" msgstr "¡No se puede generar la clave samba!" #: include/functions.inc:2911 include/functions.inc:3085 #, fuzzy msgid "Cannot generate SAMBA hash!" msgstr "¡No se puede generar la clave samba!" #: include/functions.inc:2942 include/functions.inc:3017 #, php-format msgid "Pre-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:2973 #, fuzzy msgid "Password change failed!" msgstr "La contraseñas deben ser cambiadas despues de %s días" #: include/functions.inc:2981 #, php-format msgid "Post-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:3100 #, fuzzy, php-format msgid "Generating SAMBA hash by running %s failed: check %s!" msgstr "" "¡No se puede generar la clave samba: la ejecución de '%s' ha fallado, " "compruebe el 'sambaHashHook'!" #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3430 include/functions.inc:3442 #: include/functions.inc:3446 include/functions.inc:3461 #: include/functions.inc:3470 #, fuzzy msgid "Cannot allocate free ID:" msgstr "No se puede asignar un identificador (ID) libre:" #: include/functions.inc:3378 msgid "unknown idAllocation method!" msgstr "¡método de asignación de id desconocido!" #: include/functions.inc:3392 #, php-format msgid "%sPoolMin >= %sPoolMax!" msgstr "¡%sPoolMin >= %sPoolMax!" #: include/functions.inc:3422 msgid "Cannot create sambaUnixIdPool entry!" msgstr "¡No se puede crear la entrada sambaUnixIdPool!" #: include/functions.inc:3430 msgid "sambaUnixIdPool is not unique!" msgstr "¡sambaUnixIdPool no es único!" #: include/functions.inc:3442 include/functions.inc:3446 msgid "no ID available!" msgstr "¡No hay ID disponibles!" #: include/functions.inc:3470 #, fuzzy msgid "maximum number of tries exceeded!" msgstr "¡Excedido el número de intentos máximo!" #: include/functions.inc:3530 #, fuzzy msgid "Cannot allocate free ID!" msgstr "¡No se puede asignar un identificador (ID) libre!" #: include/class_filter.inc:158 include/class_filter.inc:228 #: ihtml/themes/default/help.tpl:21 setup/setup_ldap.tpl:15 msgid "Search" msgstr "Buscar" #: include/class_filter.inc:226 #, fuzzy msgid "Search filter" msgstr "Parámetro" #: include/class_filter.inc:444 msgid "Search in subtrees" msgstr "Buscar en subárboles" #: include/class_filter.inc:449 #, fuzzy msgid "Edit filters" msgstr "Editar certificados" #: include/class_ldap.inc:328 include/class_ldap.inc:365 msgid "Performance warning" msgstr "Aviso e rendimiento" #: include/class_ldap.inc:328 include/class_ldap.inc:365 #, fuzzy, php-format msgid "LDAP performance is poor: last query took %.2fs!" msgstr "El rendimiento LDAP es bajo: ¡la última consulta tardó sobre %.2fs!" #: include/class_ldap.inc:807 #, fuzzy, php-format msgid "Cannot automatically create subtrees with RDN %s: no object class found" msgstr "" "No se pueden crear automáticamente subárboles con RDN '%s': ¡No se ha " "encontrado la clase del objeto!" #: include/class_ldap.inc:858 #, fuzzy, php-format msgid "Cannot automatically create subtrees with RDN %s: not supported" msgstr "" "No se pueden crear automáticamente subárboles con RDN '%s': no soportado" #: include/class_ldap.inc:945 #, fuzzy, php-format msgid "while operating on %s using LDAP server %s" msgstr "mientras operaba en '%s' usando el servidor LDAP '%s'" #: include/class_ldap.inc:947 #, php-format msgid "while operating on LDAP server %s" msgstr "mientras operaba en el servidor LDAP '%s'" #: include/class_ldap.inc:1000 #, php-format msgid "Command line programm %s is missing!" msgstr "" #: include/class_ldap.inc:1161 #, fuzzy, php-format msgid "" "Invalid DN %s: block to be imported should start with 'dn: ...' in line %s" msgstr "" "No es un DN válido: '%s': El bloque para importar debe empezar por 'dn: ...' " "en la linea %s" #: include/class_ldap.inc:1190 #, fuzzy, php-format msgid "Error while importing DN %s: please check LDIF from line %s on!" msgstr "" "Ha habido un error importando dn: '%s', ¡Por favor compruebe su LDIF desde " "la línea %s en adelante!" #: include/class_core.inc:113 include/class_core.inc:119 #: plugins/generic/references/class_aclResolver.inc:303 #, fuzzy msgid "All" msgstr "ACL" #: include/class_core.inc:114 #, fuzzy msgid "All objects" msgstr "Mover objetos" #: include/class_core.inc:132 #, fuzzy msgid "Traditional" msgstr "Terminal" #: include/class_core.inc:132 msgid "Use samba pool" msgstr "" #: include/class_core.inc:164 include/class_core.inc:167 #, fuzzy msgid "hours" msgstr "operadores telefónicos" #: include/class_core.inc:184 #, fuzzy msgid "None" msgstr "ninguno" #: include/class_core.inc:188 setup/class_setupStep_Language.inc:47 msgid "Automatic" msgstr "Automatico" #: include/class_core.inc:200 #, fuzzy msgid "User value" msgstr "Nombre de Usuario" #: include/class_core.inc:209 #, fuzzy msgid "Core" msgstr "Cerrar" #: include/class_core.inc:210 #, fuzzy msgid "GOsa core plugin" msgstr "Configuración común de GOsa" #: include/class_core.inc:238 msgid "" "Enables htaccess instead of LDAP authentication. This can be used to enable " "other authentication mechanisms like Kerberos for the GOsa login." msgstr "" #: include/class_core.inc:248 msgid "Enables the usage statistics module." msgstr "" #: include/class_core.inc:258 msgid "Database file to be used by the usage statistics module." msgstr "" #: include/class_core.inc:268 msgid "" "Enables event logging in GOsa. Setting it to 'On' make GOsa log every action " "a user performs via syslog. If you use this in combination with rsyslog and " "configure it to MySQL logging, you can browse all events in GOsa." msgstr "" #: include/class_core.inc:279 msgid "" "Enables a status bar on the bottom of lists displaying a summary of type and " "number of elements in the list." msgstr "" #: include/class_core.inc:289 msgid "Specify the minimum length for newly entered passwords." msgstr "" #: include/class_core.inc:299 msgid "" "Specify the minimum number of characters that have to differ between old and " "newly entered passwords." msgstr "" #: include/class_core.inc:309 msgid "" "Command to generate password proposals. If a command has been specified, the " "user can decide whether to use an automatic password or a manually specified " "one." msgstr "" #: include/class_core.inc:319 msgid "" "Enable display of PHP errors on the top of the page. Disable this feature in " "production environments to avoid the exposure of sensitive data." msgstr "" #: include/class_core.inc:319 #, fuzzy, php-format msgid "Related option" msgstr "eliminación" #: include/class_core.inc:329 msgid "" "Show messages that may assist plugin development. Be aware that this option " "may produce some ACL related false error messages!" msgstr "" #: include/class_core.inc:340 msgid "" "Enable LDAP schema verification during login. The recommended setting is " "'On' because it enables efficient methods to create missing subtrees in the " "LDAP." msgstr "" #: include/class_core.inc:350 msgid "Enable copy and paste for most objects managed by GOsa." msgstr "" #: include/class_core.inc:360 msgid "Enable PHP security checks for disabled register_global settings." msgstr "" #: include/class_core.inc:370 msgid "Enable automatic redirection to HTTPS based administration." msgstr "" #: include/class_core.inc:380 msgid "Enable logging of detailed information of LDAP operations." msgstr "" #: include/class_core.inc:390 #, fuzzy msgid "Enable LDAP referral chasing." msgstr "Activar extensión DHCP" #: include/class_core.inc:400 msgid "" "Specify LDAP element filter limit. If the limit is not 0, GOsa speeds up " "group queries by putting several queries into a single query. This is known " "to produce problems on some LDAP servers (i.e. Sun DS) and needs to be " "lowered or disabled." msgstr "" #: include/class_core.inc:410 msgid "" "Specify the maximum number of entries GOsa will request from an LDAP server. " "A warning is displayed if this limit is exceeded." msgstr "" #: include/class_core.inc:420 msgid "Disable checks for LDAP size limits." msgstr "" #: include/class_core.inc:430 #, fuzzy msgid "Enable warnings for non encrypted connections." msgstr "Forzar conexiones seguras" #: include/class_core.inc:440 msgid "Enable compression for PPD files." msgstr "" #: include/class_core.inc:451 msgid "" "DN of user with ACL checks disabled. This should only be used to restore " "lost administrative ACLs." msgstr "" #: include/class_core.inc:462 msgid "Storage path for PPD files." msgstr "" #: include/class_core.inc:472 msgid "" "Number of seconds a LDAP query is allowed to take until GOsa aborts the " "request." msgstr "" #: include/class_core.inc:482 msgid "Enables storing of user filters in browser cookies." msgstr "" #: include/class_core.inc:492 msgid "Enables sending of compressed web page content." msgstr "" #: include/class_core.inc:502 msgid "" "Allows to modify uid-proposals when creating a new user from a user-template." msgstr "" #: include/class_core.inc:513 msgid "LDAP attribute which is used to detect changes." msgstr "" #: include/class_core.inc:524 msgid "" "ISO language code which is used to override the automatic language detection." msgstr "" #: include/class_core.inc:535 msgid "CSS and template theme to be used." msgstr "" #: include/class_core.inc:545 msgid "" "Number of seconds after an inactive session expires. This may be overridden " "by some systems php.ini/crontab mechanism." msgstr "" #: include/class_core.inc:555 #, fuzzy msgid "Template engine compile directory." msgstr "Directorio de compilación Smarty" #: include/class_core.inc:565 #, php-format msgid "" "Logical AND of the integer values below that controls the debug output on " "every page load: %s" msgstr "" #: include/class_core.inc:586 msgid "" "Command to create Samba NT/LM hashes. Required for password synchronization " "if you don't use supplementary services." msgstr "" #: include/class_core.inc:597 msgid "Default hash to be used for newly created user passwords." msgstr "" #: include/class_core.inc:606 msgid "" "Enable checking for the presence of problematic unicode characters in " "passwords." msgstr "" #: include/class_core.inc:617 msgid "" "Specify whether 'cn' or 'uid' style user DNs are generated. For more " "sophisticated control use the 'accountRDN' setting." msgstr "" #: include/class_core.inc:627 msgid "Location component for user storage inside of departments." msgstr "" #: include/class_core.inc:637 msgid "Location component for group storage inside of departments." msgstr "" #: include/class_core.inc:647 msgid "" "Count base for group IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:657 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:667 msgid "" "Lowest assignable group ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:677 msgid "" "Highest assignable group ID for use with the idAllocationMethod set to " "'pool'." msgstr "" #: include/class_core.inc:687 msgid "" "Lowest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:697 msgid "" "Highest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:707 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'baseIdHook' " "setting." msgstr "" #: include/class_core.inc:717 #, fuzzy msgid "Connection URL for use with the gosa-ng service." msgstr "¡Ha fallado la comunciación con el servicio de infraestructura!" #: include/class_core.inc:727 msgid "User name used to connect to the 'gosaRpcServer'." msgstr "" #: include/class_core.inc:737 msgid "Password used to connect to the 'gosaRpcServer'." msgstr "" #: include/class_core.inc:747 #, fuzzy msgid "Connection URI for use with the gosa-si service (obsolete)." msgstr "Ha fallado la comunciación con el servicio de infraestructura: %s" #: include/class_core.inc:757 msgid "Number of seconds after a gosa-si connection is considered 'dead'." msgstr "" #: include/class_core.inc:768 msgid "User attribute which is used for log in." msgstr "" #: include/class_core.inc:779 #, fuzzy msgid "Local time zone." msgstr "Localización" #: include/class_core.inc:789 msgid "" "Enable tagging of administrative units. This can be used in conjunction with " "ACLs (obsolete)." msgstr "" #: include/class_core.inc:799 msgid "Enable the use of {sasl} instead of {kerberos} for user realms." msgstr "" #: include/class_core.inc:809 msgid "" "Enable RFC 2307bis style groups. This combines the use of 'member' and " "'memberUid' attributes." msgstr "" #: include/class_core.inc:819 msgid "" "Adjusts the user DN generation to include the users personal title (only in " "conjunction with accountPrimaryAttribute)." msgstr "" #: include/class_core.inc:829 msgid "Script to be called for finding the next free id for groups or users." msgstr "" #: include/class_core.inc:838 msgid "" "Descriptive string for the automatic ID generator. Please read the FAQ file " "for more information." msgstr "" #: include/class_core.inc:848 msgid "Enable strict checking for user IDs and group names." msgstr "" #: include/class_core.inc:858 msgid "" "Lowest assignable user or group ID. Only active if idAllocationMethod is set " "to 'traditional'." msgstr "" #: include/class_core.inc:869 msgid "Attribute to be used for primary mail addresses." msgstr "" #: include/class_core.inc:879 msgid "Namespace used for shared folders." msgstr "" #: include/class_core.inc:889 msgid "" "Namespace rule to create user folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:899 msgid "" "Namespace rule to create folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:909 msgid "Seconds after an IMAP connection is considered dead." msgstr "" #: include/class_core.inc:920 msgid "Class name of the mail method to be used." msgstr "" #: include/class_core.inc:930 msgid "" "Enable slashes instead of dots as a name space separator for Cyrus IMAP." msgstr "" #: include/class_core.inc:940 msgid "" "Directory to store vacation templates. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:950 #, fuzzy msgid "Enable TLS for LDAP connections." msgstr "Conexión LDAP" #: include/class_core.inc:960 msgid "Enable IVBB used by german authorities." msgstr "" #: include/class_core.inc:970 msgid "" "Maintain sambaIdmapEntry objects to improve performance on some Samba " "versions." msgstr "" #: include/class_core.inc:980 msgid "Enable checks to determine whether an account is expired or not." msgstr "" #: include/class_core.inc:990 msgid "" "String containing the SID for Samba setups without the Domain object in LDAP." msgstr "" #: include/class_core.inc:1000 msgid "" "String containing the RID base for Samba setups without the Domain object in " "LDAP." msgstr "" #: include/class_core.inc:1010 #, fuzzy msgid "Enable manual object snapshots." msgstr "Creando instantaneas de objetos" #: include/class_core.inc:1020 msgid "Base DN for snapshot storage." msgstr "" #: include/class_core.inc:1030 #, fuzzy msgid "DN of the snapshot administrator." msgstr "Administradores del dominio" #: include/class_core.inc:1040 msgid "Password of the snapshot administrator." msgstr "" #: include/class_core.inc:1051 msgid "" "Method for user and group ID generation. Note: only the 'traditional' method " "is safe due to PHP limitations." msgstr "" #: include/class_core.inc:1060 msgid "URI of server to be used for snapshots." msgstr "" #: include/class_core.inc:1069 msgid "Enable transliteration of cyrillic characters for UID generation." msgstr "" #: include/class_config.inc:168 #, php-format msgid "XML error in gosa.conf: %s at line %d" msgstr "Error XML en gosa.conf: %s en la línea %d" #: include/class_config.inc:367 msgid "Cannot bind to LDAP!" msgstr "" #: include/class_config.inc:713 msgid "sambaSID and/or sambaRidBase missing in the configuration!" msgstr "¡sambaSID y/o sambaRidBase no aparece en la configuración!" #: include/class_config.inc:1132 msgid "Configuration" msgstr "Configuración" #: include/class_config.inc:1132 #, fuzzy msgid "" "The configuration file you are using is outdated. Please move the GOsa " "configuration file away to run the GOsa setup again." msgstr "" "El archivo de configuración que está usando es obsoleto. Por favor quite el " "archivo de configuración de GOsa y use el asistente de configuración." #: include/class_config.inc:1174 include/class_config.inc:1205 #, fuzzy, php-format msgid "" "The snapshot functionality is enabled, but the required variable %s is not " "set." msgstr "" "La funcionalidad de instancias esta activa, pero el valor requerido '%s' no " "está activo." #: include/class_config.inc:1187 #, fuzzy, php-format msgid "" "The snapshot functionality is enabled, but the required compression module " "is missing. Please install %s." msgstr "" "La funcionalidad de instancias esta activa, pero no se encuentra el módulo " "de compresión requerido. Por favor instale '%s'." #: include/exporter/class_PDF.inc:24 msgid "Page" msgstr "Página" #: include/exporter/class_cvsExporter.inc:48 msgid "CSV" msgstr "CSV" #: include/exporter/class_pdfExporter.inc:18 msgid "No PDF export possible: there is no FPDF library installed." msgstr "No se puede exportar a PDF: no se ha instalado la librería FPDF." #: include/exporter/class_pdfExporter.inc:145 msgid "PDF" msgstr "PDF" #: include/class_jsonRPC.inc:38 #, fuzzy, php-format msgid "The RPC connection (%s) specified for %s:%s is invalid: %s" msgstr "¡'%s' comando para la extensión %s no es válido!" #: include/class_jsonRPC.inc:333 #, fuzzy, php-format msgid "Unknown HTTP status code %s!" msgstr "¡Tipo de ACL desconocido '%s'!" #: include/class_ItemSelector.inc:299 include/class_baseSelector.inc:235 #: include/class_releaseSelector.inc:262 msgid "Submit" msgstr "Enviar" #: include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #, php-format msgid "Copy and paste failed!" msgstr "¡Ha fallado copiar y pegar! " #: include/class_CopyPasteHandler.inc:118 #, fuzzy, php-format msgid "Cannot set permission for %s" msgstr "No se pueden modificar los permisos para '%s'" #: include/class_CopyPasteHandler.inc:159 #, fuzzy, php-format msgid "'%s' is no valid LDAP object" msgstr "'%s' no es un objeto LDAP válido" #: include/class_CopyPasteHandler.inc:176 #, php-format msgid "No write permission in '%s'" msgstr "No tiene permiso de escritura en '%s'" #: include/class_CopyPasteHandler.inc:193 #, php-format msgid "Cannot set permission for '%s'" msgstr "No se pueden modificar los permisos para '%s'" #: include/class_CopyPasteHandler.inc:396 #, php-format msgid "These objects will be pasted: %s" msgstr "Estos objetos serán modificados: %s" #: include/class_CopyPasteHandler.inc:420 #, php-format msgid "This object will be pasted: %s" msgstr "Este objeto sera modificado: %s" #: include/class_CopyPasteHandler.inc:573 msgid "Cannot paste" msgstr "No puedo pegar" #: include/class_acl.inc:27 plugins/admin/acl/class_aclManagement.inc:25 msgid "Access control" msgstr "Control de acceso" #: include/class_acl.inc:28 msgid "Manage access control lists" msgstr "Gestión de las Listas de control de acceso" #: include/class_acl.inc:126 include/class_acl.inc:550 #: include/class_acl.inc:554 include/class_acl.inc:708 #: include/class_acl.inc:1138 include/class_acl.inc:1259 #, fuzzy, php-format msgid "All users" msgstr "usuarios" #: include/class_acl.inc:229 #: plugins/generic/references/class_aclResolver.inc:63 msgid "Reset ACLs" msgstr "Eliminar ACLs" #: include/class_acl.inc:230 plugins/admin/acl/class_aclRole.inc:139 #: plugins/generic/references/class_aclResolver.inc:64 msgid "One level" msgstr "Un nivel" #: include/class_acl.inc:231 include/class_acl.inc:236 #: plugins/admin/acl/class_aclRole.inc:140 #: plugins/generic/references/class_aclResolver.inc:65 msgid "Current object" msgstr "Objeto actual" #: include/class_acl.inc:232 plugins/admin/acl/class_aclRole.inc:141 #: plugins/generic/references/class_aclResolver.inc:66 msgid "Complete subtree" msgstr "Subárbol completo" #: include/class_acl.inc:233 plugins/admin/acl/class_aclRole.inc:142 #: plugins/generic/references/class_aclResolver.inc:67 msgid "Complete subtree (permanent)" msgstr "Subárbol completo (permanente)" #: include/class_acl.inc:234 include/class_acl.inc:237 #: plugins/generic/references/class_aclResolver.inc:68 msgid "Use ACL defined in role" msgstr "Utilizar las ACL definidas en el rol" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:297 #: plugins/personal/generic/class_user.inc:1676 #: plugins/admin/users/class_userManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:185 msgid "Users" msgstr "Usuarios" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:300 #: plugins/admin/groups/class_group.inc:1060 #: plugins/admin/groups/class_groupManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:177 msgid "Groups" msgstr "Grupos" #: include/class_acl.inc:255 #, fuzzy msgid "Section" msgstr "Acción" #: include/class_acl.inc:265 #, fuzzy msgid "Used" msgstr "Usar" #: include/class_acl.inc:277 plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "~" msgstr "" #: include/class_acl.inc:293 plugins/admin/ogroups/class_ogroup.inc:889 msgid "Member" msgstr "Miembro" #: include/class_acl.inc:293 plugins/admin/acl/class_aclRole.inc:182 #: plugins/admin/acl/class_aclRole.inc:744 msgid "Permissions" msgstr "Permisos" #: include/class_acl.inc:555 include/class_acl.inc:1260 msgid "Pseudo-group for all users." msgstr "" #: include/class_acl.inc:669 msgid "No ACL settings for this category!" msgstr "¡No hay ACL configuradas para esta categoría!" #: include/class_acl.inc:672 #, php-format msgid "ACLs for: %s" msgstr "" #: include/class_acl.inc:678 include/class_acl.inc:682 msgid "category ACL" msgstr "Categoría ACL" #: include/class_acl.inc:744 #, fuzzy, php-format msgid "Edit ACL for '%s' with scope '%s'" msgstr "Editar ACL para '%s', el ámbito es '%s'" #: include/class_acl.inc:906 include/class_acl.inc:913 msgid "Show/hide advanced settings" msgstr "Mostrar/ocultar caracteristicas avanzadas" #: include/class_acl.inc:924 msgid "Create objects" msgstr "Crear objetos" #: include/class_acl.inc:925 msgid "Move objects" msgstr "Mover objetos" #: include/class_acl.inc:926 msgid "Remove objects" msgstr "Eliminar Objetos" #: include/class_acl.inc:928 #: plugins/generic/references/class_aclResolver.inc:307 msgid "Restrict changes to user's own object" msgstr "" #: include/class_acl.inc:932 include/class_acl.inc:1041 #: include/class_acl.inc:1045 #: plugins/generic/references/class_aclResolver.inc:309 msgid "read" msgstr "leer" #: include/class_acl.inc:933 include/class_acl.inc:1043 #: include/class_acl.inc:1046 #: plugins/generic/references/class_aclResolver.inc:310 msgid "write" msgstr "escribir" #: include/class_acl.inc:937 msgid "Complete object" msgstr "Objeto completo" #: include/class_acl.inc:1089 #, fuzzy, php-format msgid "Unknown ACL type '%s'!" msgstr "¡Tipo de ACL desconocido '%s'!" #: include/class_acl.inc:1134 #, php-format msgid "Unknown entry '%s'!" msgstr "¡Entrada desconocida '%s'!" #: include/class_acl.inc:1198 include/class_acl.inc:1200 #, fuzzy, php-format msgid "ACL role: %s" msgstr "Roles ACL" #: include/class_acl.inc:1200 #, fuzzy msgid "unknown ACL role" msgstr "rol desconocido" #: include/class_acl.inc:1208 #, php-format msgid "Contains settings for these objects: %s" msgstr "Tiene configuraciones de los siguientes objetos: %s" #: include/class_acl.inc:1219 ihtml/themes/default/acl.tpl:53 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "Members" msgstr "Miembros" #: include/class_acl.inc:1225 msgid "inactive" msgstr "inactivo" #: include/class_acl.inc:1225 msgid "No members" msgstr "Sin miembros" #: include/class_acl.inc:1429 msgid "Access control list" msgstr "Lista de control de acceso" #: include/class_acl.inc:1435 msgid "ACL roles" msgstr "Roles ACL" #: include/class_acl.inc:1438 #, fuzzy msgid "ACL Entries" msgstr "Roles" #: include/class_socketClient.inc:108 #, fuzzy, php-format msgid "Socket connection to %s:%s failed: %s" msgstr "Ha fallado la conexión a la máquina '%s:%s': %s" #: include/class_socketClient.inc:191 #, fuzzy, php-format msgid "Socket timeout of %s seconds reached!" msgstr "Tiempo excedido de %s segundos para conexión alcanzado." #: include/class_userFilterEditor.inc:254 #, php-format msgid "Error in filter #%s: %s opening and %s closing brackets detected!" msgstr "" #: include/class_gosaSupportDaemon.inc:112 msgid "GOsa support daemon" msgstr "Demonio de soporte GOsa" #: include/class_gosaSupportDaemon.inc:787 msgid "Cannot not parse XML!" msgstr "¡No se puede analizar el XML!" #: include/class_gosaSupportDaemon.inc:1184 #, php-format msgid "Cannot send abort event for entry %s!" msgstr "¡No se puede enviar el evento abortar para la entrada %s!" #: include/class_gosaSupportDaemon.inc:1204 #, php-format msgid "Cannot remove entry %s!" msgstr "¡No se puede eliminar la entrada %s!" #: include/class_GOsaRegistration.inc:127 msgid "" "UNIX-timestamp pointing to the date GOsa will ask for a registration again " "(-1 to disable)" msgstr "" #: include/class_SnapshotHandler.inc:45 include/class_SnapshotHandler.inc:76 #, fuzzy, php-format msgid "" "The snapshot functionality is enabled but the required variable %s is not " "set!" msgstr "" "La funcionalidad de instancias esta activa, pero el valor requerido '%s' no " "está activo." #: include/class_SnapshotHandler.inc:58 #, fuzzy, php-format msgid "" "The snapshot functionality is enabled but the required PHP compression " "module is missing: %s!" msgstr "" "La funcionalidad de instancias esta activa, pero no se encuentra el módulo " "de compresión requerido. Por favor instale '%s'." #: ihtml/themes/default/userFilterEditor.tpl:1 #: ihtml/themes/default/userFilterEditor.tpl:5 #, fuzzy msgid "Filter editor" msgstr "Error del filtro" #: ihtml/themes/default/userFilterEditor.tpl:8 #, fuzzy msgid "Filter properties" msgstr "Editar características generales" #: ihtml/themes/default/userFilterEditor.tpl:40 #: plugins/personal/generic/class_user.inc:1664 #: plugins/personal/generic/generic.tpl:604 msgid "Public visible" msgstr "Visible por todos" #: ihtml/themes/default/userFilterEditor.tpl:45 msgid "Enabled" msgstr "Activado" #: ihtml/themes/default/userFilterEditor.tpl:49 msgid "Categories where the filter is visible" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:69 #, fuzzy msgid "Query" msgstr "usuario" #: ihtml/themes/default/acl.tpl:7 plugins/admin/acl/acl_role.tpl:3 #: plugins/admin/acl/acl_role.tpl:4 msgid "Assigned ACL for current entry" msgstr "Asignando ACL a la entrada actual" #: ihtml/themes/default/acl.tpl:10 plugins/admin/acl/acl_role.tpl:38 msgid "New ACL" msgstr "Nueva ACL" #: ihtml/themes/default/acl.tpl:19 plugins/admin/acl/acl_role.tpl:45 msgid "ACL type" msgstr "Tipo de ACL" #: ihtml/themes/default/acl.tpl:23 ihtml/themes/default/acl.tpl:28 #: plugins/admin/acl/acl_role.tpl:45 #, fuzzy msgid "Select an ACL type" msgstr "Seleccione un tipo de ACL" #: ihtml/themes/default/acl.tpl:40 msgid "Additional filter options" msgstr "Añadir opciones de filtrado" #: ihtml/themes/default/acl.tpl:61 #, fuzzy msgid "Add all users" msgstr "usuarios" #: ihtml/themes/default/acl.tpl:68 plugins/admin/acl/acl_role.tpl:51 msgid "List of available ACL categories" msgstr "Lista de categorías ACL disponibles" #: ihtml/themes/default/acl.tpl:76 msgid "ACL for this object" msgstr "ACL que tienen este objeto" #: ihtml/themes/default/acl.tpl:82 msgid "Available roles" msgstr "Roles disponibles" #: ihtml/themes/default/removeEntries.tpl:4 #: plugins/addons/propertyEditor/property-list.tpl:7 #, fuzzy msgid "Attention" msgstr "Autenticación" #: ihtml/themes/default/removeEntries.tpl:14 #, fuzzy msgid "" "If you're sure you want to do this press 'Delete' to continue or 'Cancel' to " "abort." msgstr "" "Entonces, si esta seguro, presione Eliminar para continuar o " "Cancelar para Abortar." #: ihtml/themes/default/userFilter.tpl:1 #, fuzzy msgid "List of defined filters" msgstr "Escribir archivo de configuración" #: ihtml/themes/default/snapshotdialog.tpl:3 msgid "Restoring object snapshots" msgstr "Recuperar instantanea de objetos" #: ihtml/themes/default/snapshotdialog.tpl:6 msgid "" "This procedure will restore a snapshot of the selected object. It will " "replace the existing object after pressing the restore button." msgstr "" "El procedimiento recuperara una instancia de los objetos seleccionados. " "Serán reemplazados los objetos actuales despues de presionar el botón " "recuperar." #: ihtml/themes/default/snapshotdialog.tpl:9 #, fuzzy msgid "" "DNS configuration and some database entries cannot be restored. They need to " "be recreated manually." msgstr "" "Recuerde que la configuración DNS y las entradas de la base de datos no " "pueden ser recuperados. Para algunos objetos es solo necesario abrirlos y " "grabarlos de nuevo (goFon), pero algunas entradas deben ser creadas " "manualmente (glpi)." #: ihtml/themes/default/snapshotdialog.tpl:12 msgid "" "Don't forget to check references to other objects, for example does the " "selected printer still exists ?" msgstr "" "No olvide comprobar referencias a otros objetos, por ejemplo ¿todavía " "existen las impresoras seleccionadas?" #: ihtml/themes/default/snapshotdialog.tpl:29 #, fuzzy msgid "There is no snapshot available that can be restored" msgstr "No hay instantaneas disponibles que puedan ser recuperadas" #: ihtml/themes/default/snapshotdialog.tpl:31 msgid "Choose a snapshot and click the folder image, to restore the snapshot" msgstr "" "Elija una instantanea y pulse en la imagen carpeta, para recuperar la " "instantanea" #: ihtml/themes/default/snapshotdialog.tpl:50 msgid "Creating object snapshots" msgstr "Creando instantaneas de objetos" #: ihtml/themes/default/snapshotdialog.tpl:53 msgid "" "This procedure will create a snapshot of the selected object. It will be " "stored inside a special branch of your directory system and can be restored " "later on." msgstr "" "Este procedimiento creará una instantánea de los objetos seleccionados. " "Serán guardados dentro de una carpeta especial de sus sistema de archivos y " "podrán recuperados posteriormente." #: ihtml/themes/default/snapshotdialog.tpl:56 msgid "" "Remember that database entries, DNS configurations and possibly created " "zones in server extensions will not be stored in the snapshot." msgstr "" "Recuerde que las entradas de base de datos, configuración DNS y zonas " "creadas en extensiones de servidor no serán guardadas en la instantánea." #: ihtml/themes/default/snapshotdialog.tpl:71 #, fuzzy msgid "Time stamp" msgstr "Marca de tiempo" #: ihtml/themes/default/snapshotdialog.tpl:80 msgid "Reason for generating this snapshot" msgstr "Razón para generar esta instantánea" #: ihtml/themes/default/snapshotdialog.tpl:88 #: plugins/admin/departments/class_department.inc:564 #: plugins/admin/departments/class_department.inc:646 #: plugins/admin/users/template.tpl:60 msgid "Continue" msgstr "Continuar" #: ihtml/themes/default/password.tpl:5 msgid "Change your password" msgstr "Cambie su contraseña" #: ihtml/themes/default/password.tpl:61 msgid "Your password has been changed successfully." msgstr "Su contraseña se ha cambiado correctamente." #: ihtml/themes/default/password.tpl:65 html/main.php:220 #: plugins/personal/password/class_password.inc:160 #: plugins/personal/password/class_password.inc:163 #: plugins/personal/password/class_password.inc:166 #: plugins/admin/users/class_userManagement.inc:400 msgid "Password change" msgstr "Cambio de contraseña" #: ihtml/themes/default/password.tpl:72 #, fuzzy msgid "" "Enter the current password and the new password (twice) in the fields below " "and press the 'Set password' button." msgstr "" "Este dialogo le permite cambiar de forma sencilla la contraseña. Introduzca " "la contraseña actual y la nueva contraseña (dos veces) en los campos " "siguientes y presione en el botón 'Cambiar'." #: ihtml/themes/default/password.tpl:74 #: plugins/personal/password/class_password.inc:26 #: plugins/admin/users/user-list.xml:128 plugins/admin/users/user-list.xml:230 msgid "Change password" msgstr "Cambiar contraseña" #: ihtml/themes/default/password.tpl:77 ihtml/themes/default/password.tpl:79 msgid "Directory" msgstr "Directorio" #: ihtml/themes/default/password.tpl:86 ihtml/themes/default/password.tpl:90 #: ihtml/themes/default/login.tpl:37 ihtml/themes/default/login.tpl:40 #, fuzzy msgid "User name" msgstr "Nombre de Usuario" #: ihtml/themes/default/password.tpl:97 #: plugins/personal/myaccount/password.tpl:12 #: plugins/personal/myaccount/password.tpl:41 #: plugins/personal/password/password.tpl:18 #: plugins/personal/password/password.tpl:47 msgid "Current password" msgstr "Contraseña actual" #: ihtml/themes/default/password.tpl:103 #: plugins/personal/myaccount/password.tpl:18 #: plugins/personal/myaccount/password.tpl:71 #: plugins/personal/password/password.tpl:24 #: plugins/personal/password/password.tpl:78 #: plugins/admin/users/password.tpl:13 plugins/admin/users/password.tpl:65 #: plugins/admin/users/class_userManagement.inc:319 msgid "New password" msgstr "Nueva contraseña" #: ihtml/themes/default/password.tpl:110 #: plugins/personal/myaccount/password.tpl:25 #: plugins/personal/myaccount/password.tpl:78 #: plugins/personal/password/password.tpl:31 #: plugins/personal/password/password.tpl:85 #: plugins/admin/users/password.tpl:20 plugins/admin/users/password.tpl:72 msgid "Repeat new password" msgstr "Reintroducir nueva contraseña" #: ihtml/themes/default/password.tpl:117 #: plugins/personal/myaccount/password.tpl:31 #: plugins/personal/myaccount/password.tpl:84 #: plugins/personal/password/password.tpl:37 #: plugins/personal/password/password.tpl:91 msgid "Password strength" msgstr "Seguridad de contraseña" #: ihtml/themes/default/password.tpl:131 msgid "Click here to change your password" msgstr "Pulse aquí para cambiar su contraseña" #: ihtml/themes/default/password.tpl:131 #: plugins/personal/myaccount/password.tpl:96 #: plugins/personal/password/password.tpl:103 #: plugins/admin/users/password.tpl:101 msgid "Set password" msgstr "Introducir contraseña" #: ihtml/themes/default/islocked.tpl:4 msgid "Locking conflict detected" msgstr "Detectado conflicto de Bloqueos" #: ihtml/themes/default/islocked.tpl:14 #, fuzzy msgid "" "If this lock detection is false, the other person has obviously closed the " "web browser during the edit operation. You may want to take over the lock by " "pressing the 'Edit anyway' button." msgstr "" "Si esta detección de bloqueo es falsa, la otra persona cerro su navegador " "mientras estaba editando. Puede eliminar el archivo de bloqueo en ese caso, " "pulsando en el botón Eliminar." #: ihtml/themes/default/islocked.tpl:23 msgid "Read only" msgstr "Solo lectura" #: ihtml/themes/default/copyPasteDialog.tpl:1 msgid "Copy & paste wizard" msgstr "Asistente para copiar y pegar" #: ihtml/themes/default/copyPasteDialog.tpl:7 #, fuzzy msgid "" "Some values need to be unique in the complete directory while some " "combinations make no sense. Please edit the values below to fulfill the " "policies." msgstr "" "Algunos valores necesitan ser únicos en todo el directorio mientras que " "algunas combinaciones no tienen sentido. GOsa mostrara los atributos " "importantes. Por favor no cambie los valores aquí indicados para cumplir las " "políticas." #: ihtml/themes/default/copyPasteDialog.tpl:9 msgid "Remember that some properties like taken snapshots will not be copied!" msgstr "" "¡Recuerde que propiedades como gestionar instantáneas no serán copiadas!" #: ihtml/themes/default/copyPasteDialog.tpl:10 msgid "" "Or if you copy or cut an entry within GOsa and delete the source object, you " "may get errors while pasting this object again!" msgstr "" "Si mueve o copia una entrada dentro de GOsa y elimina el objeto original," "¡tendrá errores al pegar el objeto!" #: ihtml/themes/default/copyPasteDialog.tpl:23 msgid "Cancel all" msgstr "Cancelar todo" #: ihtml/themes/default/copyPasteDialog.tpl:28 msgid "Operation complete" msgstr "Operación incompleta" #: ihtml/themes/default/copyPasteDialog.tpl:30 #: setup/class_setupStep_Finish.inc:39 msgid "Finish" msgstr "Terminar" #: ihtml/themes/default/logout.tpl:6 msgid "Your GOsa session has expired!" msgstr "¡Su sesión de GOsa ha caducado!" #: ihtml/themes/default/logout.tpl:9 #, fuzzy msgid "" "It has been a while since your last interaction with GOsa took place. Your " "session has been closed for security reasons. Please login again to continue " "with administrative tasks." msgstr "" "La última interacción con el interfaz web de GOsa fue hace ya bastante " "tiempo. Por razones de seguridad, la sesión ha sido cancelada. Para " "continuar con las tareas administrativas, vuelva a iniciar sesión de nuevo." #: ihtml/themes/default/logout.tpl:16 #, fuzzy msgid "Login again" msgstr "Entrando de nuevo" #: ihtml/themes/default/login.tpl:31 #, fuzzy msgid "Login to GOsa" msgstr "Bienvenidos al asistente de configuración de GOsa" #: ihtml/themes/default/login.tpl:47 setup/setup_migrate.tpl:53 #: plugins/personal/generic/paste_generic.tpl:21 #: plugins/generic/dashBoard/Register/register.tpl:53 msgid "Password" msgstr "Contraseña" #: ihtml/themes/default/login.tpl:61 msgid "Choose the directory to work on" msgstr "" #: ihtml/themes/default/login.tpl:66 msgid "Click here to log in" msgstr "Pulse aquí para iniciar sesión" #: ihtml/themes/default/login.tpl:66 ihtml/themes/default/login.tpl:67 #, fuzzy msgid "Log in" msgstr "Inicio" #: ihtml/themes/default/sizelimit.tpl:3 msgid "" "The size limit option makes LDAP operations faster and saves the LDAP server " "from getting too much load. The easiest way to handle big databases without " "long timeouts would be to limit your search to smaller values and use " "filters to get the entries you are looking for." msgstr "" "La opción 'tamaño limite' permite unas operaciones con LDAP mas rápidas y " "protege al servidor LDAP de tener una mayor carga. La manera mas fácil de " "manipular grandes bases de datos sin grandes perdidas de tiempo es limitar " "la búsqueda a valores pequeños y usar filtros para encontrar las entradas " "que este buscando." #: ihtml/themes/default/sizelimit.tpl:8 msgid "Please choose the way to react for this session" msgstr "Por favor elija la forma de reaccionar en esta sesión" #: ihtml/themes/default/sizelimit.tpl:10 msgid "ignore this error and show all entries the LDAP server returns" msgstr "" "ignore este error y muestre todas las entradas devueltas por el servidor LDAP" #: ihtml/themes/default/sizelimit.tpl:11 #, fuzzy msgid "" "ignore this error and show all entries that fit into the defined size limit" msgstr "" "ignore este error y muestre todas las entradas que coincidan con el tamaño " "limite definido y active el uso de filtros en su lugar" #: ihtml/themes/default/infoPage.tpl:4 #, fuzzy msgid "User information" msgstr "mostrar información" #: ihtml/themes/default/infoPage.tpl:17 setup/setup_migrate.tpl:49 #: plugins/personal/posix/class_posixAccount.inc:1369 msgid "User ID" msgstr "Identificador (ID) de usuario" #: ihtml/themes/default/infoPage.tpl:18 #: plugins/personal/generic/class_user.inc:1702 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:48 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:48 #: plugins/admin/users/user-list.xml:49 #: plugins/generic/references/class_reference.inc:87 msgid "Surname" msgstr "Apellido" #: ihtml/themes/default/infoPage.tpl:19 #: plugins/personal/generic/class_user.inc:1326 #: plugins/personal/generic/class_user.inc:1373 #: plugins/personal/generic/class_user.inc:1703 #: plugins/personal/generic/class_user.inc:1857 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:40 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:40 #: plugins/admin/users/class_userManagement.inc:552 #: plugins/admin/users/user-list.xml:57 #: plugins/generic/references/class_reference.inc:87 msgid "Given name" msgstr "Nombre de pila" #: ihtml/themes/default/infoPage.tpl:20 #: plugins/personal/generic/class_user.inc:1708 #: plugins/personal/generic/generic.tpl:92 msgid "Personal title" msgstr "Título Personal" #: ihtml/themes/default/infoPage.tpl:21 #: plugins/personal/generic/class_user.inc:1709 #: plugins/personal/generic/generic.tpl:102 msgid "Academic title" msgstr "Títulos académicos" #: ihtml/themes/default/infoPage.tpl:22 #: plugins/personal/generic/class_user.inc:1737 msgid "Home postal address" msgstr "Dirección Postal personal" #: ihtml/themes/default/infoPage.tpl:23 #: plugins/personal/generic/class_user.inc:1368 #: plugins/personal/generic/class_user.inc:1711 #: plugins/personal/generic/generic.tpl:117 msgid "Date of birth" msgstr "Fecha de nacimiento" #: ihtml/themes/default/infoPage.tpl:24 #: plugins/admin/groups/class_groupManagement.inc:165 #: plugins/admin/ogroups/tabs_ogroups.inc:155 #: plugins/admin/users/class_userManagement.inc:897 #: plugins/generic/infoPage/class_infoPage.inc:112 msgid "Mail" msgstr "Correo Electrónico" #: ihtml/themes/default/infoPage.tpl:25 #: plugins/personal/generic/class_user.inc:1738 msgid "Home phone number" msgstr "Número de teléfono personal" #: ihtml/themes/default/infoPage.tpl:30 setup/setup_feedback.tpl:10 #: setup/setup_feedback.tpl:12 plugins/personal/generic/class_user.inc:1720 #: plugins/personal/generic/generic.tpl:298 #: plugins/admin/departments/dep-filter.xml:91 #: plugins/admin/departments/dep-list.xml:47 #: plugins/admin/departments/dep-list.xml:131 #: plugins/admin/departments/organization.tpl:4 #: plugins/admin/departments/class_organizationGeneric.inc:113 #: plugins/admin/departments/class_organizationGeneric.inc:114 #: plugins/admin/departments/class_departmentManagement.inc:241 msgid "Organization" msgstr "Organización" #: ihtml/themes/default/infoPage.tpl:31 #: plugins/admin/departments/dep-filter.xml:35 #: plugins/admin/departments/generic.tpl:4 #, fuzzy msgid "Organizational Unit" msgstr "Nombre de la Organización" #: ihtml/themes/default/infoPage.tpl:32 #: plugins/personal/generic/class_user.inc:1734 #: plugins/personal/generic/generic.tpl:436 #: plugins/admin/departments/organization.tpl:82 #: plugins/admin/departments/organization.tpl:94 #: plugins/admin/departments/class_department.inc:680 #: plugins/admin/departments/class_organizationGeneric.inc:130 #: plugins/admin/departments/generic.tpl:83 #: plugins/admin/departments/generic.tpl:85 #: plugins/admin/departments/generic.tpl:95 #: plugins/admin/departments/class_localityGeneric.inc:91 msgid "Location" msgstr "Localización" #: ihtml/themes/default/infoPage.tpl:33 #: plugins/personal/generic/class_user.inc:1665 #: plugins/personal/generic/generic.tpl:535 msgid "Street" msgstr "Calle" #: ihtml/themes/default/infoPage.tpl:34 #: plugins/personal/generic/class_user.inc:1722 msgid "Department number" msgstr "Número del departamento" #: ihtml/themes/default/infoPage.tpl:36 #: plugins/personal/generic/class_user.inc:1724 msgid "Employee number" msgstr "Número de empleado" #: ihtml/themes/default/infoPage.tpl:37 #: plugins/personal/generic/class_user.inc:1725 #: plugins/personal/generic/generic.tpl:330 msgid "Employee type" msgstr "Funciones laborales" #: ihtml/themes/default/infoPage.tpl:48 #: plugins/personal/generic/paste_generic.tpl:1 msgid "User settings" msgstr "Caracteristicas del usuario" #: ihtml/themes/default/infoPage.tpl:55 #, fuzzy msgid "" "You have no permission to edit any properties. Please contact your " "administrator." msgstr "" "No puedo crear información de bloqueos en el árbol LDAP. ¡Por favor contacte " "con su Administrador!" #: ihtml/themes/default/infoPage.tpl:61 #, fuzzy msgid "Administrative contact" msgstr "Parámetros administrativos" #: ihtml/themes/default/infoPage.tpl:72 plugins/generic/welcome/welcome.tpl:8 msgid "The GOsa team" msgstr "El equipo de GOsa" #: ihtml/themes/default/msg_dialog.tpl:55 #: ihtml/themes/default/msg_dialog.tpl:103 msgid "Error message title" msgstr "" #: ihtml/themes/default/msg_dialog.tpl:66 #: ihtml/themes/default/msg_dialog.tpl:115 #, fuzzy msgid "Error message" msgstr "Enviar mensaje" #: ihtml/themes/default/ldifViewer.tpl:1 msgid "Raw LDAP entry" msgstr "" #: ihtml/themes/default/framework.tpl:9 #, fuzzy msgid "Log out" msgstr "Salir" #: ihtml/themes/default/framework.tpl:10 msgid "" "You are currently editing a database entry. Do you want to dismiss the " "changes?" msgstr "" "Esta actualmente editando una entrada de base de datos.¿Quiere desestimar " "los cambios?" #: ihtml/themes/default/framework.tpl:22 #, fuzzy, php-format msgid "Session expires in %d!" msgstr "¡La sesión no es codificada!" #: ihtml/themes/default/help.tpl:9 msgid "GOsa help viewer" msgstr "Ventana de ayuda de GOsa" #: ihtml/themes/default/help.tpl:15 msgid "Index" msgstr "índice" #: ihtml/themes/default/logout-close.tpl:5 msgid "Your GOsa session has been closed!" msgstr "¡Su sesión de GOsa se ha terminado!" #: ihtml/themes/default/logout-close.tpl:7 msgid "" "Please close this browser window and clean the authentication caches to " "avoid an automatic re-authentication by your browser." msgstr "" "Por favor cierre la ventana del navegador y limpie la cache para evitar una " "reautentificación automática de su navegador." #: setup/class_setupStep_Migrate.inc:51 setup/class_setupStep_Migrate.inc:52 msgid "LDAP inspection" msgstr "Inspección LDAP" #: setup/class_setupStep_Migrate.inc:53 msgid "Analyze your current LDAP for GOsa compatibility" msgstr "Analice la compatibilidad con GOsa de su directorio LDAP" #: setup/class_setupStep_Migrate.inc:59 msgid "Checking for root object" msgstr "Comprobando objeto raíz" #: setup/class_setupStep_Migrate.inc:65 msgid "Inspecting object classes in root object" msgstr "Analizando objetos en la entrada raíz" #: setup/class_setupStep_Migrate.inc:71 msgid "Checking permission for LDAP database" msgstr "Comprobando permisos en la base de datos LDAP" #: setup/class_setupStep_Migrate.inc:78 msgid "Checking for super administrator" msgstr "Comprobando súper administrador" #: setup/class_setupStep_Migrate.inc:118 setup/class_setupStep_Migrate.inc:186 #: setup/class_setupStep_Migrate.inc:709 msgid "LDAP query failed" msgstr "La consulta LDAP ha fallado" #: setup/class_setupStep_Migrate.inc:119 setup/class_setupStep_Migrate.inc:187 #: setup/class_setupStep_Migrate.inc:710 msgid "Possibly the 'root object' is missing." msgstr "Posiblemente el objeto raíz está desaparecido" #: setup/class_setupStep_Migrate.inc:132 setup/class_setupStep_Migrate.inc:145 #: setup/class_setupStep_Migrate.inc:307 setup/class_setupStep_Migrate.inc:661 #: setup/class_setupStep_Migrate.inc:674 setup/class_setupStep_Migrate.inc:729 #: setup/class_setupStep_Migrate.inc:750 setup/class_setupStep_Migrate.inc:802 msgid "Failed" msgstr "Error" #: setup/class_setupStep_Migrate.inc:134 setup/class_setupStep_Migrate.inc:147 #, fuzzy, php-format msgid "" "The specified user '%s' does not have full access to your LDAP database." msgstr "" "El usuario especificado '%s' no tiene acceso total a la base de datos LDAP." #: setup/class_setupStep_Migrate.inc:308 msgid "There is no GOsa administrator account inside your LDAP." msgstr "No hay cuenta de administrador GOsa en la base de datos LDAP." #: setup/class_setupStep_Migrate.inc:309 #: plugins/admin/groups/group-list.xml:73 #: plugins/admin/ogroups/ogroup-list.xml:73 plugins/admin/acl/acl-list.xml:76 #: plugins/admin/departments/dep-list.xml:98 #: plugins/admin/users/user-list.xml:89 msgid "Create" msgstr "Crear" #: setup/class_setupStep_Migrate.inc:377 msgid "Migration error" msgstr "Error de migración" #: setup/class_setupStep_Migrate.inc:377 #, php-format msgid "Cannot add ACL for user '%s':" msgstr "No se puede añadir ACL para el usuario '%s':" #: setup/class_setupStep_Migrate.inc:415 setup/class_setupStep_Migrate.inc:425 msgid "Input error" msgstr "Error de entrada" #: setup/class_setupStep_Migrate.inc:415 #: plugins/personal/posix/paste_generic.tpl:38 #: plugins/personal/posix/generic.tpl:64 #: plugins/personal/posix/class_posixAccount.inc:910 #: plugins/personal/posix/class_posixAccount.inc:913 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/generic/references/class_reference.inc:87 msgid "UID" msgstr "UID" #: setup/class_setupStep_Migrate.inc:420 msgid "Password error" msgstr "Error de contraseña" #: setup/class_setupStep_Migrate.inc:420 msgid "Provided passwords do not match!" msgstr "¡La contraseñas introducidas no coinciden!" #: setup/class_setupStep_Migrate.inc:425 msgid "Specify a valid user ID!" msgstr "¡Por favor especifique un ID de usuario válido!" #: setup/class_setupStep_Migrate.inc:450 #, php-format msgid "Adding an administrative user failed: object '%s' already exists!" msgstr "" "Ha fallado al añadir un usuario administrativo: ¡El objeto '%s' ya existe!" #: setup/class_setupStep_Migrate.inc:662 msgid "" "The LDAP root object is missing. It is required to use your LDAP service." msgstr "" "EL objeto raíz de LDAP ha desaparecido. Es necesario para poder usar el " "servicio LDAP." #: setup/class_setupStep_Migrate.inc:663 setup/class_setupStep_Migrate.inc:676 msgid "Try to create root object" msgstr "Intentando crear el objeto raíz" #: setup/class_setupStep_Migrate.inc:675 msgid "Root object couldn't be created, you should try it on your own." msgstr "" "El objeto raíz no ha podido ser creado, tendra que crearlo usted mismo." #: setup/class_setupStep_Migrate.inc:730 #, php-format msgid "Missing GOsa object class '%s'!" msgstr "¡No se ha encontrado la clase de objeto GOsa '%s'!" #: setup/class_setupStep_Migrate.inc:731 msgid "Please check your installation." msgstr "Por favor compruebe su instalación" #: setup/class_setupStep_Migrate.inc:752 #, php-format msgid "" "Cannot handle the structural object type of your root object. Please try to " "add the object class '%s' manually." msgstr "" "No se puede un tipo de objeto estructural en su entrada raíz. Por favor " "intente añadir la clase de objeto '%s' manualmente." #: setup/class_setupStep_Migrate.inc:804 setup/setup_migrate.tpl:32 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:181 msgid "Migrate" msgstr "Migrar" #: setup/setup_checks.tpl:2 msgid "" "This step checks if your PHP server has all required modules and " "configuration settings." msgstr "" #: setup/setup_checks.tpl:5 #, fuzzy msgid "Inspection" msgstr "Inspección LDAP" #: setup/setup_checks.tpl:8 msgid "PHP module and extension checks" msgstr "Comprobaciones de módulos y extensiones PHP" #: setup/setup_checks.tpl:10 msgid "Basic checks" msgstr "" #: setup/setup_checks.tpl:38 setup/setup_checks.tpl:79 msgid "GOsa will NOT run without fixing this." msgstr "GOsa NO funcionara si no arregla esto." #: setup/setup_checks.tpl:40 setup/setup_checks.tpl:81 msgid "GOsa will run without fixing this." msgstr "GOsa puede funcionar sin que se arregle esto." #: setup/setup_checks.tpl:50 msgid "PHP setup configuration" msgstr "Configuración de PHP" #: setup/setup_checks.tpl:50 msgid "show information" msgstr "mostrar información" #: setup/setup_checks.tpl:51 msgid "Extended checks" msgstr "" #: setup/class_setupStep_Finish.inc:40 msgid "Write configuration file" msgstr "Escribir archivo de configuración" #: setup/class_setupStep_Finish.inc:41 msgid "Finish - write the configuration file" msgstr "Terminar - Escribir el archivo de configuración" #: setup/class_setupStep_Finish.inc:106 msgid "" "Your configuration file is currently world readable. Please update the file " "permissions!" msgstr "" "El fichero de configuración es universalmente legible. ¡Por favor modifique " "los permisos del archivo!" #: setup/class_setupStep_Finish.inc:108 msgid "The configuration is currently not readable or it does not exists." msgstr "En estos momentos la configuración no es accesible o no existe." #: setup/class_setupStep_Finish.inc:117 #, fuzzy, php-format msgid "" "After downloading and placing the file under %s, please make sure that the " "user the web server is running with is able to read %s, while other users " "shouldn't. You may want to execute these commands to achieve this " "requirement:" msgstr "" "Despues de descargar y poner el fichero en %s, compruebe que el usuario del " "servicio web es capaz de leer %s, mientras que los otros usuarios no. Si " "quiere puede ejecutar los siguientes comandos para cumplir lo requerido:" #: setup/class_setupStep_Ldap.inc:54 msgid "LDAP setup" msgstr "Configuración LDAP" #: setup/class_setupStep_Ldap.inc:55 msgid "LDAP connection setup" msgstr "Conectividad LDAP" #: setup/class_setupStep_Ldap.inc:56 msgid "" "This dialog performs the basic configuration of the LDAP connectivity for " "GOsa." msgstr "" "Este asistente llevara a cabo la configuración de la conectividad entre GOsa " "y LDAP." #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:41 #: setup/setup_feedback.tpl:52 msgid "No" msgstr "No" #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:39 #: setup/setup_feedback.tpl:50 msgid "Yes" msgstr "Si" #: setup/class_setupStep_Ldap.inc:113 #, php-format msgid "Anonymous bind to server '%s' failed!" msgstr "¡La conexión anónima al servidor '%s' ha fallado!" #: setup/class_setupStep_Ldap.inc:115 #, php-format msgid "Bind as user '%s' failed!" msgstr "¡La conexión como usuario '%s' ha fallado!" #: setup/class_setupStep_Ldap.inc:120 #, php-format msgid "Anonymous bind to server '%s' succeeded." msgstr "La conexión anónima al servidor '%s' ha tenido exito." #: setup/class_setupStep_Ldap.inc:121 msgid "Please specify user and password!" msgstr "¡Por Favor especifique un usuario y contraseña!" #: setup/class_setupStep_Ldap.inc:123 #, php-format msgid "Bind as user '%s' to server '%s' succeeded!" msgstr "¡La conexión como usuario '%s' al servidor '%s' ha tenido exito!" #: setup/class_setupStep_Feedback.inc:94 msgid "UNIX accounts/groups" msgstr "Cuentas/Grupos UNIX" #: setup/class_setupStep_Feedback.inc:96 msgid "Samba management" msgstr "Administración Samba" #: setup/class_setupStep_Feedback.inc:98 #, fuzzy msgid "Mail system management" msgstr "Administración sistema de correo" #: setup/class_setupStep_Feedback.inc:100 msgid "FAX system administration" msgstr "Administración sistema de FAX" #: setup/class_setupStep_Feedback.inc:102 msgid "Asterisk administration" msgstr "Administración Asterisk" #: setup/class_setupStep_Feedback.inc:104 msgid "System inventory" msgstr "Inventario de sistemas" #: setup/class_setupStep_Feedback.inc:106 #, fuzzy msgid "System/Configuration management" msgstr "Sistemas-/Administración de Configuraciones" #: setup/class_setupStep_Feedback.inc:108 #, fuzzy msgid "Address book" msgstr "Libreta direcciones" #: setup/class_setupStep_Feedback.inc:114 msgid "Feedback" msgstr "Sugerencias" #: setup/class_setupStep_Feedback.inc:115 msgid "Get notifications or send feedback" msgstr "Recibir avisos o enviar sugerencias" #: setup/class_setupStep_Feedback.inc:116 msgid "Notification and feedback" msgstr "Avisos y sugerencias" #: setup/class_setupStep_Feedback.inc:132 setup/class_setup.inc:74 msgid "Setup error" msgstr "Error de configuración" #: setup/class_setupStep_Feedback.inc:140 #: setup/class_setupStep_Feedback.inc:147 msgid "Feedback error" msgstr "Error de envio de sugerencias" #: setup/class_setupStep_Feedback.inc:140 #, php-format msgid "Cannot send feedback to '%s': %s" msgstr "No se puede enviar sugerencia a '%s': %s" #: setup/class_setupStep_Feedback.inc:147 msgid "Cannot send feedback: service temporarily unavailable" msgstr "" "No se puede envíar su sugerencia. El servicio no se encuentre disponible" #: setup/class_setupStep_Feedback.inc:181 msgid "Please specify a valid email address." msgstr "Por favor indique una dirección de correo válida." #: setup/class_setupStep_Feedback.inc:185 msgid "" "You have to select at least one of both options, subscribe or send feedback." msgstr "" "Debe seleccionar al menos una opción de ambas, para suscribirse o enviar " "sugerencias." #: setup/setup_license.tpl:3 msgid "" "GOsa is developed under the terms of the GNU General Public License v2. " "Please accept the terms below." msgstr "" #: setup/setup_license.tpl:11 msgid "I have read the license and accept it" msgstr "He leido la licencia y la acepto" #: setup/setup_ldap.tpl:2 msgid "" "The main data source used in GOsa is LDAP. In order to access the " "information stored there, please enter the required information." msgstr "" #: setup/setup_ldap.tpl:9 msgid "Please choose the LDAP user to be used by GOsa" msgstr "." #: setup/setup_ldap.tpl:28 setup/setup_ldap.tpl:29 msgid "LDAP connection" msgstr "Conexión LDAP" #: setup/setup_ldap.tpl:31 msgid "Location name" msgstr "Nombre de la localización" #: setup/setup_ldap.tpl:35 msgid "Connection URI" msgstr "URI de conexión" #: setup/setup_ldap.tpl:39 msgid "TLS connection" msgstr "Conexión TLS" #: setup/setup_ldap.tpl:47 #: plugins/personal/posix/trustSelect/trust-list.tpl:12 #: plugins/personal/posix/groupSelect/group-list.tpl:12 #: plugins/personal/generic/class_user.inc:1714 #: plugins/personal/generic/generic.tpl:167 #: plugins/addons/dyngroup/dyngroup.tpl:5 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:127 #: plugins/admin/groups/singleUserSelect/singleUser-list.tpl:12 #: plugins/admin/groups/class_group.inc:1078 #: plugins/admin/groups/group-list.tpl:12 plugins/admin/groups/generic.tpl:39 #: plugins/admin/groups/userSelect/user-list.tpl:12 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.tpl:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.tpl:12 #: plugins/admin/ogroups/ogroup-list.tpl:12 #: plugins/admin/ogroups/generic.tpl:26 #: plugins/admin/ogroups/class_ogroup.inc:886 #: plugins/admin/acl/acl_role.tpl:27 plugins/admin/acl/acl-list.tpl:12 #: plugins/admin/acl/class_aclRole.inc:742 #: plugins/admin/departments/dcObject.tpl:28 #: plugins/admin/departments/country.tpl:28 #: plugins/admin/departments/class_countryGeneric.inc:94 #: plugins/admin/departments/organization.tpl:39 #: plugins/admin/departments/class_department.inc:677 #: plugins/admin/departments/class_domain.inc:92 #: plugins/admin/departments/class_organizationGeneric.inc:125 #: plugins/admin/departments/generic.tpl:39 #: plugins/admin/departments/locality.tpl:28 #: plugins/admin/departments/dep-list.tpl:12 #: plugins/admin/departments/class_localityGeneric.inc:94 #: plugins/admin/departments/class_dcObject.inc:93 #: plugins/admin/departments/domain.tpl:28 #: plugins/admin/users/user-list.tpl:12 msgid "Base" msgstr "Base" #: setup/setup_ldap.tpl:57 msgid "Reload" msgstr "Recargar" #: setup/setup_ldap.tpl:63 setup/setup_ldap.tpl:64 msgid "Authentication" msgstr "Autenticación" #: setup/setup_ldap.tpl:66 #, fuzzy msgid "Administrator DN" msgstr "DN del administrador" #: setup/setup_ldap.tpl:71 msgid "Select user" msgstr "Eliminar usuario" #: setup/setup_ldap.tpl:81 #, fuzzy msgid "Automatically append LDAP base to administrator DN" msgstr "Añadir automáticamente la base LDAP al DN administrador" #: setup/setup_ldap.tpl:85 #, fuzzy msgid "Administrator password" msgstr "Contraseña de administrador" #: setup/setup_ldap.tpl:91 setup/setup_ldap.tpl:92 msgid "Schema based settings" msgstr "Configuración basada en el esquema" #: setup/setup_ldap.tpl:94 #, fuzzy msgid "Use RFC 2307bis compliant groups" msgstr "Usar grupos conformes a rfc2307bis" #: setup/setup_ldap.tpl:105 setup/setup_ldap.tpl:106 msgid "Current status" msgstr "Estado actual" #: setup/setup_ldap.tpl:108 plugins/admin/ogroups/class_ogroup.inc:244 #: plugins/generic/dashBoard/dbInformation/contents.tpl:1 msgid "Information" msgstr "Información" #: setup/setup_language.tpl:3 msgid "Please select the preferred language" msgstr "Por favor seleccione su idioma preferido" #: setup/setup_language.tpl:5 #, fuzzy msgid "" "At this point, you can select the site wide default language. Choosing " "'automatic' will use the language requested by the browser. This setting can " "be overridden per user." msgstr "" "En este punto, puede seleccionar el idioma usado por defecto. Seleccionando " "'automático' obtendrá el lenguaje usado por el navedador. Esta configuración " "puede ser modificada por cada usuario." #: setup/setup_language.tpl:9 msgid "Please select your preferred language here" msgstr "Por favor seleccione su idioma preferido" #: setup/setup_welcome.tpl:3 msgid "How to get started" msgstr "" #: setup/setup_welcome.tpl:5 msgid "" "This seems to be the first time you run GOsa on this system. To start the " "GOsa web interface you need a working configuration file, which can be " "generated by this wizard." msgstr "" #: setup/setup_welcome.tpl:9 #, fuzzy msgid "What you need to generate a configuration file:" msgstr "Crear su fichero de configuración" #: setup/setup_welcome.tpl:13 #, fuzzy msgid "The hostname of your LDAP server" msgstr "mientras operaba en el servidor LDAP '%s'" #: setup/setup_welcome.tpl:14 msgid "Installed GOsa and supplementary schema" msgstr "" #: setup/setup_welcome.tpl:15 msgid "The LDAP base of your LDAP directory" msgstr "" #: setup/setup_welcome.tpl:16 msgid "The DN and the password of the LDAP administration user" msgstr "" #: setup/setup_welcome.tpl:20 msgid "" "If you've collected the needed information, unlock the setup process like " "shown in the next paragraph." msgstr "" #: setup/setup_welcome.tpl:24 #, fuzzy msgid "Starting the setup" msgstr "Selección de idiomas" #: setup/setup_welcome.tpl:26 #, fuzzy msgid "" "For security reasons you need to authenticate the installation by creating " "the file '/tmp/gosa.auth', containing the current session ID on the servers " "local filesystem. This can be done by executing the following command:" msgstr "" "Por razones de seguridad necesita autenticarse para la instalación, creando " "el archivo '/tmp/gosa.auth', que tendrá el ID de la sesión actual en el " "sistema de archivos del servidor. Esto puede ser hecho ejecutando el " "siguiente comando:" #: setup/setup_welcome.tpl:32 #, fuzzy msgid "Click the 'Next' button when you've finished." msgstr "Pulse en el botón 'Continuar' cuando haya terminado." #: setup/class_setupStep_Schema.inc:37 setup/class_setupStep_Schema.inc:38 msgid "LDAP schema check" msgstr "Comprobar esquemas LDAP" #: setup/class_setupStep_Schema.inc:39 msgid "Perform test on your current LDAP schema" msgstr "Efectuando comprobaciones en los esquemas actuales de LDAP" #: setup/class_setup.inc:183 msgid "Setup" msgstr "Configuración" #: setup/class_setup.inc:195 msgid "Completed" msgstr "Completado" #: setup/class_setup.inc:235 msgid "Check again" msgstr "Comprobar de nuevo" #: setup/class_setup.inc:238 msgid "Next" msgstr "Siguiente" #: setup/setup_migrate.tpl:2 msgid "" "During the LDAP inspection, we're going to check for several common pitfalls " "that may occur when migration to GOsa base LDAP administration. You may want " "to fix the problems below, in order to provide smooth services." msgstr "" "Durante la comprobación LDAP, vamos a comprobar algunos problemas comunes " "que suelen ocurrir cuando se hace la migración a la base administrativa LDAP " "de GOsa. Puede querer arreglar estos problemas aquí, para poder tener una " "administración mas fácil." #: setup/setup_migrate.tpl:5 #, fuzzy msgid "Checks" msgstr "Comprobar Estado" #: setup/setup_migrate.tpl:22 msgid "Add required object classes to the LDAP base" msgstr "Añadir las clases de objetos necesarias a la base LDAP" #: setup/setup_migrate.tpl:24 msgid "Current" msgstr "Actual" #: setup/setup_migrate.tpl:28 msgid "After migration" msgstr "Despues de migrar" #: setup/setup_migrate.tpl:35 msgid "Close" msgstr "Cerrar" #: setup/setup_migrate.tpl:40 msgid "Create a new GOsa administrator account" msgstr "Crear una nueva cuenta administrativa GOsa" #: setup/setup_migrate.tpl:41 msgid "" "This dialog will automatically add a new super administrator to your LDAP " "tree." msgstr "" "Este dialogo añadirá automáticamente un nuevo superadministrador a su árbol " "LDAP." #: setup/setup_migrate.tpl:57 msgid "Password (again)" msgstr "Contraseña (de nuevo)" #: setup/setup_finish.tpl:3 msgid "Create your configuration file" msgstr "Crear su fichero de configuración" #: setup/setup_finish.tpl:10 #, fuzzy msgid "Depending on the user name your web server is running on:" msgstr "" "Dependiendo del nombre de usuario sobre el que esta corriendo el servidor " "web:" #: setup/setup_finish.tpl:27 msgid "Download configuration" msgstr "Descargar configuración" #: setup/setup_finish.tpl:33 msgid "Status: " msgstr "Estado: " #: setup/class_setupStep_Checks.inc:40 setup/class_setupStep_Checks.inc:41 msgid "Installation check" msgstr "Comprobación de la instalación" #: setup/class_setupStep_Checks.inc:42 msgid "Basic checks for PHP compatibility and extensions" msgstr "Comprobación básica de la versión de PHP y las extensiones." #: setup/class_setupStep_Checks.inc:66 msgid "Checking PHP version" msgstr "Comprobando la versión de PHP" #: setup/class_setupStep_Checks.inc:67 #, php-format msgid "PHP must be of version %s or above." msgstr "PHP debe ser versión '%s' o superior." #: setup/class_setupStep_Checks.inc:68 msgid "Please upgrade to a supported version." msgstr "Por favor actualize a la versión soportada." #: setup/class_setupStep_Checks.inc:75 msgid "GOsa requires this module to talk with your LDAP server." msgstr "GOsa necesita este módulo para comunicarse con el servidor LDAP." #: setup/class_setupStep_Checks.inc:83 msgid "GOsa requires this module for an internationalized interface." msgstr "GOsa necesita este módulo para un interfaz internacionalizado." #: setup/class_setupStep_Checks.inc:91 #, fuzzy msgid "" "GOsa requires this module to communicate with different types of servers and " "protocols." msgstr "" "Gosa necesita este módulo para comunicarse con las bases de datos soportadas." #: setup/class_setupStep_Checks.inc:99 msgid "GOsa requires this module for the samba integration." msgstr "GOsa necesita este módulo para integración con samba." #: setup/class_setupStep_Checks.inc:107 #, fuzzy msgid "" "GOsa requires either 'mhash' or the 'sha1' module to make use of SSHA " "encryption." msgstr "" "GOsa necesita para poder hacer uso del método de codificación SSHA este " "módulo." #: setup/class_setupStep_Checks.inc:115 msgid "GOsa requires this module to talk to an IMAP server." msgstr "GOsa necesita este módulo para comunicarse con servidores IMAP." #: setup/class_setupStep_Checks.inc:122 msgid "mbstring" msgstr "mbstring" #: setup/class_setupStep_Checks.inc:123 #, fuzzy msgid "GOsa requires this module to handle Unicode strings." msgstr "GOsa necesita este módulo para manejar cadenas unicode." #: setup/class_setupStep_Checks.inc:130 msgid "Calendar" msgstr "" #: setup/class_setupStep_Checks.inc:131 #, fuzzy msgid "GOsa requires this module to calculate dates." msgstr "GOsa necesita este módulo para manejar cadenas unicode." #: setup/class_setupStep_Checks.inc:138 msgid "MySQL" msgstr "MySQL" #: setup/class_setupStep_Checks.inc:139 msgid "" "GOsa requires this module to communicate with several supported databases." msgstr "" "Gosa necesita este módulo para comunicarse con las bases de datos soportadas." #: setup/class_setupStep_Checks.inc:156 msgid "samba hash generator" msgstr "generador de hash de la contraseña SAMBA" #: setup/class_setupStep_Checks.inc:157 msgid "GOsa requires this command to synchronize POSIX and samba passwords." msgstr "GOsa necesita este comando para sincronizar contraseñas POSIX y samba." #: setup/class_setupStep_Checks.inc:158 #, fuzzy msgid "" "Deploy a gosa-si installation or install the Perl Crypt::SmbHash modules." msgstr "" "Desplegar una instalación gosa-si o instale el módulo PERL Crypt::SmbHash." #: setup/class_setupStep_Checks.inc:171 msgid "imagick" msgstr "imagick" #: setup/class_setupStep_Checks.inc:172 msgid "GOsa requires this extension to handle images." msgstr "GOsa necesita este módulo para manejar imágenes." #: setup/class_setupStep_Checks.inc:187 msgid "compression module" msgstr "modulo de compresión" #: setup/class_setupStep_Checks.inc:188 msgid "GOsa requires this extension to handle snapshots." msgstr "GOsa necesita este módulo para manejar instantaneas." #: setup/class_setupStep_Checks.inc:199 msgid "" "register_globals is a PHP mechanism to register all global variables to be " "accessible from scripts without changing the scope. This may be a security " "risk." msgstr "" "registr_globals es un mecanismo de PHP para registrar todas las variables " "globales de tal manera que sean accesible desde scripts sin que cambien su " "ámbito. Esto puede ser un problema de seguridad." #: setup/class_setupStep_Checks.inc:200 msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'." msgstr "Busque 'register_globals' en su php.ini y modifíquelo por 'Off'." #: setup/class_setupStep_Checks.inc:208 msgid "PHP uses this value for the garbage collector to delete old sessions." msgstr "" "PHP usa este valor en el recolector de basura para eliminar las sesiones " "antiguas." #: setup/class_setupStep_Checks.inc:209 msgid "" "Setting this value to one day will prevent loosing session and cookies " "before they really timeout." msgstr "" "Ajustando este valor a un día impedirá la perdida de sesiones y cookies " "antes de que realmente se desconecte por tiempo." #: setup/class_setupStep_Checks.inc:210 msgid "" "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or " "higher." msgstr "" "Busque 'sessio.gc_maxlifetime' en su php.ini y modifíquelo a 86400 o mayor." #: setup/class_setupStep_Checks.inc:217 setup/class_setupStep_Checks.inc:233 #: setup/class_setupStep_Checks.inc:249 setup/class_setupStep_Checks.inc:265 #: plugins/addons/propertyEditor/class_propertyEditor.inc:230 msgid "Off" msgstr "Off" #: setup/class_setupStep_Checks.inc:218 msgid "" "In Order to use GOsa without any trouble, the session.auto_register option " "in your php.ini should be set to 'Off'." msgstr "" "Si quiere usar GOsa sin problemas, debe modificar a 'Off' la opción 'session." "auto_register' en su php.ini." #: setup/class_setupStep_Checks.inc:219 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." msgstr "Busque 'session.auto_start' en su php.ini y modifíquelo a 'Off'." #: setup/class_setupStep_Checks.inc:226 #, fuzzy msgid "" "GOsa needs at least 32MB of memory. Setting it below this limit may cause " "errors that are not reproducible! Increase it for larger setups." msgstr "" "GOsa necesita al menos 32Mb de memoria. Teniéndola por debajo de ese limite " "provocara errores inesperados. Aumentar para configuraciones mayores." #: setup/class_setupStep_Checks.inc:227 msgid "" "Search for 'memory_limit' in your php.ini and set it to '32M' or higher." msgstr "Busque 'memory_limit' en su php.ini y modifíquelo a '32M' o mayor." #: setup/class_setupStep_Checks.inc:234 msgid "" "This option influences the PHP output handling. Turn this Option off, to " "increase performance." msgstr "" "Esta opción está relacionada con el manejo de salida de PHP. Desactive esta " "opción poniéndola en off para mejorar el rendimiento." #: setup/class_setupStep_Checks.inc:235 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'." msgstr "Busque 'implicit_flush' en su php.ini y modifíquelo a 'Off'." #: setup/class_setupStep_Checks.inc:242 msgid "The Execution time should be at least 30 seconds." msgstr "El tiempo de ejecución debe ser de al menos 30 segundos." #: setup/class_setupStep_Checks.inc:243 msgid "" "Search for 'max_execution_time' in your php.ini and set it to '30' or higher." msgstr "" "Busque 'max_execution_time' en su php.ini y modifíquelo a '30' o mayor." #: setup/class_setupStep_Checks.inc:250 msgid "" "Increase the server security by setting expose_php to 'off'. PHP won't send " "any information about the server you are running in this case." msgstr "" "Aumente la seguridad del servidor modificando el parámetro 'expose_php' a " "'off'. PHP no debería enviar ningún tipo de información sobre el servidor " "que esta ejecutando la aplicación." #: setup/class_setupStep_Checks.inc:251 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'." msgstr "Busque 'expose_php' en su php.ini y modifíquelo a 'Off'." #: setup/class_setupStep_Checks.inc:257 #: plugins/addons/propertyEditor/class_propertyEditor.inc:231 msgid "On" msgstr "On" #: setup/class_setupStep_Checks.inc:258 msgid "" "Increase your server security by setting magic_quotes_gpc to 'on'. PHP will " "escape all quotes in strings in this case." msgstr "" "Aumente la seguridad del servidor modificando el parámetro 'magic_quotes_gpc " "' a 'on'. PHP debería escapar todas las comillas de las cadenas en este caso." #: setup/class_setupStep_Checks.inc:259 msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." msgstr "Busque 'magic_quotes_gpc' en su php.ini y modifíquelo a 'On'." #: setup/class_setupStep_Checks.inc:266 msgid "Increase your server performance by setting magic_quotes_gpc to 'off'." msgstr "" "Aumente el rendimiento de su servidor modificando 'magic_quotes_gpc' a 'off'" #: setup/class_setupStep_Checks.inc:267 msgid "" "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to 'Off'." msgstr "" "Busque 'zend.ze1_compatibility_mode' en su php.ini y modifíquelo a 'Off'." #: setup/class_setupStep_Checks.inc:277 #, fuzzy msgid "Configuration writable" msgstr "Se puede escribir en la configuración" #: setup/class_setupStep_Checks.inc:278 msgid "The configuration file can't be written" msgstr "No se puede escribir en la configuración" #: setup/class_setupStep_Checks.inc:279 #, fuzzy, php-format msgid "" "GOsa reads its configuration from a file located in (%s/%s). The setup can " "write the configuration directly if it is writable." msgstr "" "GOsa lee la configuración desde un archivo colocado en (%s/%s). El asistente " "puede escribir la configuración directamente si tiene permisos de escritura." #: setup/class_setupStep_Welcome.inc:42 msgid "Welcome" msgstr "Bienvenido" #: setup/class_setupStep_Welcome.inc:43 msgid "The welcome message" msgstr "Mensaje de Bienvenida" #: setup/class_setupStep_Welcome.inc:44 #, fuzzy msgid "Welcome to the GOsa setup assistent" msgstr "Bienvenidos al asistente de configuración de GOsa" #: setup/class_setupStep_License.inc:56 setup/class_setupStep_License.inc:57 msgid "License" msgstr "Licencia" #: setup/class_setupStep_License.inc:58 msgid "Terms and conditions for usage" msgstr "Términos y condiciones de uso" #: setup/setup_schema.tpl:1 msgid "Schema specific settings" msgstr "Parametros específicos del esquema" #: setup/setup_schema.tpl:4 msgid "Schema check succeeded" msgstr "Comprobación de esquema correcta" #: setup/setup_schema.tpl:7 msgid "Schema check failed" msgstr "Ha fallado la comprobación del esquema" #: setup/setup_schema.tpl:11 #, fuzzy msgid "" "Could not read any schema information, all checks skipped. Adjust your LDAP " "ACLs." msgstr "" "No se puede acceder a la información de esquemas, todos las comprobaciones " "se suspenden. Ajuste las acl de ldap." #: setup/setup_schema.tpl:13 #, fuzzy msgid "" "It seems that your LDAP database wasn't initialized yet. This maybe the " "reason, why GOsa can't read your schema configuration!" msgstr "" "Parece que la base de datos ldap no ha sido inicializada. ¡Esta puede se la " "razón por la que GOsa no puede acceder a la configuración de esquemas!" #: setup/class_setupStep_Language.inc:40 setup/class_setupStep_Language.inc:41 msgid "Language setup" msgstr "Selección de idiomas" #: setup/class_setupStep_Language.inc:42 msgid "This step allows you to select your preferred language." msgstr "Este paso le permite seleccionar su idioma preferido" #: setup/setup_feedback.tpl:2 #, fuzzy msgid "Feedback successfully send" msgstr "Sugerencia enviada correctamente" #: setup/setup_feedback.tpl:6 #, fuzzy msgid "Subscribe to the gosa-announce mailing list" msgstr "Suscribirse a la lista de correo gosa-announce" #: setup/setup_feedback.tpl:8 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to subscribe you to the gosa-announce mailing list. You've to confirm " "this by mail." msgstr "" "Cuando seleccione esta opción, Gosa intentara conectar a http://oss.gonicus." "de para suscribirle a la lista de correo de gosa-announce. Tendrá que " "confirmar esto por correo electrónico." #: setup/setup_feedback.tpl:20 msgid "Mail address" msgstr "Dirección correo electrónico" #: setup/setup_feedback.tpl:28 msgid "Send feedback to the GOsa project team" msgstr "Enviar comentarios al equipo del proyecto GOsa" #: setup/setup_feedback.tpl:31 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to submit your form anonymously." msgstr "" "Cuando seleccione esta opción, Gosa intentara conectar a http://oss.gonicus." "de para enviar el formulario de comentarios de forma anónima." #: setup/setup_feedback.tpl:35 setup/setup_feedback.tpl:36 #: plugins/personal/posix/generic.tpl:5 #: plugins/personal/generic/class_user.inc:37 #: plugins/personal/generic/class_user.inc:1670 #: plugins/admin/groups/class_group.inc:1054 #: plugins/admin/ogroups/class_ogroup.inc:872 #: plugins/admin/departments/class_department.inc:659 #: plugins/admin/users/class_userManagement.inc:890 msgid "Generic" msgstr "Genérico" #: setup/setup_feedback.tpl:38 msgid "Did the setup procedure help you to get started?" msgstr "¿El procedimiento de configuración le ha ayudado?" #: setup/setup_feedback.tpl:44 msgid "If not, what problems did you encounter" msgstr "Si no, que problemas ha encontrado" #: setup/setup_feedback.tpl:48 msgid "Is this the first time you use GOsa?" msgstr "¿Es la primera vez que usa GOsa?" #: setup/setup_feedback.tpl:53 msgid "I use it since" msgstr "Lo uso desde" #: setup/setup_feedback.tpl:54 msgid "Select the year since when you are using GOsa" msgstr "Seleccione el año desde el cual ha estado usando GOsa" #: setup/setup_feedback.tpl:60 msgid "What operating system / distribution do you use?" msgstr "¿Que sistema operativo / distribución usa?" #: setup/setup_feedback.tpl:64 msgid "What web server do you use?" msgstr "¿Que servidor web usa?" #: setup/setup_feedback.tpl:68 msgid "What PHP version do you use?" msgstr "¿Que versión de PHP usa?" #: setup/setup_feedback.tpl:72 #, fuzzy msgid "GOsa version" msgstr "Configuración genérica de GOsa" #: setup/setup_feedback.tpl:78 setup/setup_feedback.tpl:79 msgid "LDAP" msgstr "LDAP" #: setup/setup_feedback.tpl:81 msgid "What kind of LDAP server(s) do you use?" msgstr "¿Que tipo de servidor(es) LDAP usa?" #: setup/setup_feedback.tpl:85 msgid "How many objects are in your LDAP?" msgstr "¿Cuantos objetos tiene en su servidor LDAP?" #: setup/setup_feedback.tpl:91 setup/setup_feedback.tpl:92 msgid "Features" msgstr "Características" #: setup/setup_feedback.tpl:94 msgid "What features of GOsa do you use?" msgstr "¿Que características de GOsa usa?" #: setup/setup_feedback.tpl:103 msgid "What features do you want to see in future versions of GOsa?" msgstr "¿Que características le gustaría ver en versiones futuras de GOsa?." #: setup/setup_feedback.tpl:107 msgid "Send feedback" msgstr "Enviar Comentario" #: html/password.php:63 html/index.php:157 #, php-format msgid "GOsa configuration %s/%s is not readable. Aborted." msgstr "No se puede acceder a la configuración de GOsa %s/%s. Cancelado" #: html/password.php:115 html/index.php:179 html/setup.php:73 #, fuzzy, php-format msgid "Compile directory %s is not accessible!" msgstr "¡No se puede acceder a el directorio de compilación '%s'!" #: html/password.php:194 plugins/personal/generic/class_user.inc:614 msgid "Password method" msgstr "Metodo de contraseña" #: html/password.php:195 msgid "Error: Password method not available!" msgstr "Error: ¡El método de contraseñas no esta disponible!" #: html/password.php:242 plugins/personal/generic/paste_generic.tpl:16 #: plugins/personal/generic/class_user.inc:1311 #: plugins/personal/generic/class_user.inc:1329 #: plugins/personal/generic/class_user.inc:1343 #: plugins/personal/generic/class_user.inc:1345 #: plugins/personal/generic/class_user.inc:1704 #: plugins/personal/generic/generic.tpl:65 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:56 #: plugins/admin/groups/userSelect/user-list.xml:56 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:65 #: plugins/admin/users/template.tpl:32 plugins/admin/users/user-list.xml:65 #: plugins/generic/dashBoard/Register/register.tpl:49 msgid "Login" msgstr "Inicio" #: html/password.php:244 plugins/personal/password/class_password.inc:124 msgid "You need to specify your current password in order to proceed." msgstr "Necesita introducir su contraseña actual para continuar." #: html/password.php:246 plugins/personal/password/class_password.inc:126 #: plugins/admin/users/class_userManagement.inc:316 msgid "" "The passwords you've entered as 'New password' and 'Repeated new password' " "do not match." msgstr "" "No coinciden las contraseñas introducidas como 'Nueva contraseña' y 'Repetir " "nueva contraseña'." #: html/password.php:248 plugins/personal/password/class_password.inc:128 msgid "The password you've entered as 'New password' is empty." msgstr "No se ha asignado ningún valor al campo 'Nueva contraseña'." #: html/password.php:250 plugins/personal/password/class_password.inc:130 msgid "The password used as new and current are too similar." msgstr "" "La contraseña actual y la introducida como nueva son demasiado parecidas." #: html/password.php:252 plugins/personal/password/class_password.inc:132 msgid "The password used as new is to short." msgstr "La nueva contraseña es demasiado corta." #: html/password.php:254 plugins/personal/password/class_password.inc:134 #, fuzzy msgid "The password contains possibly problematic Unicode characters!" msgstr "¡El campo '%s' tiene caracteres no validos!" #: html/password.php:261 html/index.php:311 #, fuzzy msgid "Please check the username/password combination!" msgstr "Por favor compruebe la combinación nombre de usuario/contraseña" #: html/password.php:268 #, fuzzy msgid "You have no permissions to change your password!" msgstr "No tiene permisos para cambiar su contraseña." #: html/password.php:280 plugins/personal/password/class_password.inc:141 #: plugins/admin/users/class_userManagement.inc:330 #, php-format msgid "Check-hook reported a problem: %s. Password change canceled!" msgstr "" #: html/password.php:315 msgid "Session will not be encrypted." msgstr "La sesión no será codificada." #: html/password.php:317 msgid "Enter SSL session" msgstr "Entrar en sesión SSL" #: html/index.php:45 #, php-format msgid "Your browser (%s) is blacklisted for the current theme!" msgstr "" #: html/index.php:72 #, php-format msgid "This session is not encrypted. Click %s to enter an encrypted session." msgstr "" #: html/index.php:72 #, fuzzy msgid "here" msgstr "Tema" #: html/index.php:78 #, fuzzy msgid "The configured session lifetime will be overridden by php.ini settings!" msgstr "" "El tiempo de vida de sesión es su gosa.conf sera sustituido por el valor de " "ini de php." #: html/index.php:179 msgid "Smarty error" msgstr "Error Smarty" #: html/index.php:202 #, fuzzy msgid "" "Your browser has cookies disabled: please enable cookies and reload this " "page before logging in!" msgstr "" "Su navegador tiene las cookies desactivadas. ¡Porfavor active las cookies y " "recargue esta página antes de iniciar sesión!" #: html/index.php:233 #, fuzzy msgid "Broken HTTP authentication setup!" msgstr "¡Hay un problema con la configuración de autenticación!" #: html/index.php:241 #, fuzzy msgid "Cannot find a valid user for the current HTTP authentication!" msgstr "" "¡No se puede encontrar un usuario válido para la configuración de " "autenticación seleccionada!" #: html/index.php:245 #, fuzzy msgid "Cannot find a unique user for the current HTTP authentication!" msgstr "" "¡No se puede encontrar un usuario válido para la configuración de " "autenticación seleccionada!" #: html/index.php:289 #, fuzzy msgid "Please specify a valid user name!" msgstr "¡Por favor introduzca un nombre de usuario válido!" #: html/index.php:292 msgid "Please specify your password!" msgstr "¡Por favor introduzca una contraseña!" #: html/index.php:304 msgid "Authentication error" msgstr "Error de Autenticación" #: html/index.php:304 #, fuzzy msgid "Cannot retrieve user information for HTTP authentication!" msgstr "" "¡No se puede recuperar la información de usuario para autenticación htaccess!" #: html/index.php:364 msgid "Account locked. Please contact your system administrator!" msgstr "" "Cuenta bloqueada. ¡Por favor contacte con su administrador de sistemas!" #: html/main.php:171 #, fuzzy, php-format msgid "Cannot locate file %s - please run %s to fix this" msgstr "" "No se puede encontrar el archivo '%s' - por favor ejecute '%s' para " "solucionarlo" #: html/main.php:190 msgid "PHP configuration" msgstr "Configuración PHP" #: html/main.php:191 msgid "" "Fatal error: Register globals is active. Please fix this in order to " "continue." msgstr "" #: html/main.php:220 msgid "Your password is about to expire, please change your password!" msgstr "" "Su contraseña va a caducar próximamente, ¡Por favor cambie su contraseña!" #: html/main.php:295 msgid "Running out of memory!" msgstr "¡Funcionando sin memoria!" #: html/main.php:355 #, php-format msgid "You're logged in as %s" msgstr "" #: html/main.php:358 #, fuzzy msgid "ACLs are disabled" msgstr "Desactivados chequeos de ACL de usuario" #: html/main.php:408 #, fuzzy msgid "Plug-in" msgstr "Extensión" #: html/main.php:409 #, fuzzy, php-format msgid "Fatal error: Cannot find any plugin definitions for plugin %s!" msgstr "" "FATAL: ¡No se puede encontrar ninguna definición de extensión para la " "extensión '%s'!" #: html/main.php:425 msgid "Configuration Error" msgstr "Error de configuración" #: html/main.php:426 #, fuzzy, php-format msgid "" "Fatal error: not all POST variables have been transfered by PHP - please " "inform your administrator!" msgstr "" "FATAL: No todos las variables POST han sido transferidas por PHP - ¡Por " "favor informe a su administrador!" #: html/setup.php:73 msgid "Smarty" msgstr "Smarty" #: html/helpviewer.php:64 msgid "Help browser" msgstr "Navegador de ayuda" #: html/helpviewer.php:118 #, fuzzy msgid "There is no help file specified for this class" msgstr "No hay archivo de ayuda disponible para esta clase" #: html/helpviewer.php:268 #, fuzzy, php-format msgid "Help directory '%s' is not accessible, can't read any help files." msgstr "" "El directorio de ayuda '%s' no está disponible, no podrá leer ningún archivo " "de ayuda." #: plugins/personal/myaccount/password.tpl:4 #: plugins/personal/password/password.tpl:4 msgid "" "To change your personal password use the fields below. The changes take " "effect immediately. Please memorize the new password, because you wouldn't " "be able to login without it." msgstr "" "Para cambiar su contraseña personal use los campos siguientes. Los cambios " "tendrán efecto inmediato. Por favor memorice la nueva contraseña, porque no " "podrá entrar sin ella." #: plugins/personal/myaccount/password.tpl:10 #: plugins/personal/myaccount/password.tpl:39 #: plugins/personal/password/password.tpl:16 #: plugins/personal/password/password.tpl:45 #, fuzzy msgid "Password change dialog" msgstr "Cambio de contraseña" #: plugins/personal/myaccount/password.tpl:49 #: plugins/personal/password/password.tpl:55 #: plugins/admin/users/password.tpl:43 #, fuzzy msgid "Use proposal" msgstr "grupos de usuarios" #: plugins/personal/myaccount/password.tpl:67 #: plugins/personal/password/password.tpl:74 #: plugins/admin/users/password.tpl:61 #, fuzzy msgid "Manually specify a password" msgstr "¡Por favor introduzca una contraseña!" #: plugins/personal/myaccount/password.tpl:97 #: plugins/personal/password/password.tpl:104 msgid "Clear fields" msgstr "Limpiar información" #: plugins/personal/myaccount/main.inc:118 #: plugins/personal/myaccount/class_MyAccount.inc:5 #: plugins/personal/posix/class_posixAccount.inc:1356 #: plugins/personal/password/class_password.inc:232 #: plugins/personal/generic/class_user.inc:1675 msgid "My account" msgstr "Mi cuenta" #: plugins/personal/myaccount/class_MyAccount.inc:6 #, fuzzy msgid "Edit personal settings" msgstr "Editar parametros de usuarios POSIX" #: plugins/personal/myaccount/nochange.tpl:2 #: plugins/personal/password/nochange.tpl:2 msgid "You have no permission to change your password at this time" msgstr "No tiene permisos para cambiar su contraseña en estos momentos" #: plugins/personal/myaccount/nochange.tpl:5 #, fuzzy msgid "Your password hash method will not be changed!" msgstr "Su contraseña se ha cambiado correctamente." #: plugins/personal/myaccount/changed.tpl:3 #: plugins/personal/password/changed.tpl:3 #, fuzzy msgid "" "You've successfully changed your password. Remember to change all programs " "configured to use it as well." msgstr "" "Su cambio de contraseña se ha realizado correctamente. Recuerde cambiarla en " "todos los programas configurados también." #: plugins/personal/posix/paste_generic.tpl:1 #: plugins/personal/posix/paste_generic.tpl:5 #: plugins/personal/posix/generic.tpl:1 msgid "POSIX settings" msgstr "Parametros POSIX" #: plugins/personal/posix/paste_generic.tpl:6 #: plugins/personal/posix/paste_generic.tpl:9 #: plugins/personal/posix/generic.tpl:8 #: plugins/personal/posix/class_posixAccount.inc:899 #: plugins/personal/posix/class_posixAccount.inc:902 #: plugins/personal/posix/class_posixAccount.inc:977 #: plugins/personal/posix/class_posixAccount.inc:980 #: plugins/personal/posix/class_posixAccount.inc:1366 msgid "Home directory" msgstr "Directorio de usuario" #: plugins/personal/posix/paste_generic.tpl:17 #: plugins/personal/posix/posix_shadow.tpl:2 #: plugins/personal/posix/generic.tpl:51 #: plugins/personal/generic/generic.tpl:34 #: plugins/personal/generic/generic.tpl:81 #, fuzzy msgid "Account settings" msgstr "Parametros de grupos" #: plugins/personal/posix/paste_generic.tpl:19 #: plugins/personal/posix/generic.tpl:26 #: plugins/personal/posix/class_posixAccount.inc:1367 msgid "Primary group" msgstr "Grupo primario" #: plugins/personal/posix/paste_generic.tpl:33 #: plugins/personal/posix/generic.tpl:60 msgid "Force UID/GID" msgstr "Forzar UID/GID" #: plugins/personal/posix/paste_generic.tpl:47 #: plugins/personal/posix/generic.tpl:75 #: plugins/personal/posix/class_posixAccount.inc:917 #: plugins/personal/posix/class_posixAccount.inc:920 #: plugins/admin/groups/class_group.inc:985 #: plugins/admin/groups/class_group.inc:988 #: plugins/admin/groups/class_group.inc:1080 msgid "GID" msgstr "GID" #: plugins/personal/posix/paste_generic.tpl:58 #: plugins/personal/posix/paste_generic.tpl:61 #: plugins/personal/posix/generic.tpl:89 #: plugins/generic/references/class_reference.inc:58 #: plugins/generic/references/class_reference.inc:64 msgid "Group membership" msgstr "Pertenencia a grupo" #: plugins/personal/posix/paste_generic.tpl:68 #: plugins/personal/posix/generic.tpl:92 msgid "(Warning: more than 16 groups are not supported by NFS!)" msgstr "(Aviso: NFS no soporta mas de 16 grupos)" #: plugins/personal/posix/trustSelect/trust-filter.xml:17 #: plugins/personal/posix/groupSelect/group-filter.xml:16 #: plugins/admin/groups/singleUserSelect/singleUser-filter.xml:20 #: plugins/admin/groups/group-filter.xml:17 #: plugins/admin/groups/userSelect/user-filter.xml:20 #: plugins/admin/groups/userGroupSelect/selectUserGroup-filter.xml:21 #: plugins/admin/ogroups/objectSelect/selectObject-filter.xml:32 #: plugins/admin/ogroups/ogroup-filter.xml:18 #: plugins/admin/acl/acl-filter.xml:18 #: plugins/admin/departments/dep-filter.xml:17 #: plugins/admin/users/user-filter.xml:19 #, fuzzy msgid "Default filter" msgstr "Parámetro" #: plugins/personal/posix/trustSelect/trust-list.xml:9 #: plugins/personal/posix/groupSelect/group-list.xml:10 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:10 #: plugins/admin/groups/userSelect/user-list.xml:10 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:11 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:11 msgid "Please select the desired entries" msgstr "Por favor seleccione las entradas que desee" #: plugins/personal/posix/trustSelect/trust-list.xml:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:23 #: plugins/admin/ogroups/class_ogroupManagement.inc:187 msgid "Server" msgstr "Servidor" #: plugins/personal/posix/trustSelect/trust-list.xml:19 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:31 #: plugins/admin/ogroups/class_ogroupManagement.inc:189 msgid "Workstation" msgstr "Estación de trabajo" #: plugins/personal/posix/trustSelect/trust-list.xml:26 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:39 #: plugins/admin/ogroups/class_ogroupManagement.inc:191 msgid "Terminal" msgstr "Terminal" #: plugins/personal/posix/trustSelect/class_trustSelect.inc:29 #, fuzzy msgid "Trust machine selection" msgstr "Parametros de grupos" #: plugins/personal/posix/groupSelect/class_groupSelect.inc:29 #, fuzzy msgid "Group selection" msgstr "Parametros de grupos" #: plugins/personal/posix/groupSelect/group-list.xml:13 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/addons/propertyEditor/property-list.xml:73 #: plugins/admin/groups/group-list.xml:15 #: plugins/admin/groups/group-list.xml:79 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:23 #: plugins/admin/ogroups/ogroup-list.xml:79 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:71 #: plugins/admin/ogroups/class_ogroupManagement.inc:184 msgid "Group" msgstr "Grupo" #: plugins/personal/posix/posix_shadow.tpl:12 msgid "User must change password on first login" msgstr "El usuario debe introducir la contraseña en el primer inicio de sesión" #: plugins/personal/posix/posix_shadow.tpl:59 #, fuzzy msgid "Password expiration settings" msgstr "Parámetros de Contraseña" #: plugins/personal/posix/posix_shadow.tpl:62 msgid "Password expires on" msgstr "La contraseña expira en" #: plugins/personal/posix/generic.tpl:6 plugins/admin/ogroups/generic.tpl:5 #, fuzzy msgid "Generic settings" msgstr "Parámetros genéricos del usuario" #: plugins/personal/posix/generic.tpl:16 #: plugins/personal/posix/class_posixAccount.inc:1368 msgid "Shell" msgstr "Shell" #: plugins/personal/posix/generic.tpl:37 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 msgid "Status" msgstr "Estado" #: plugins/personal/posix/generic.tpl:42 #, fuzzy msgid "Last log-on" msgstr "Último inicio de sesión" #: plugins/personal/posix/generic.tpl:108 #, fuzzy msgid "Account permissions" msgstr "Parametros de grupos" #: plugins/personal/posix/generic.tpl:113 msgid "SSH keys" msgstr "Claves SSH" #: plugins/personal/posix/generic.tpl:114 msgid "Edit public ssh keys..." msgstr "Editar claves SSH públicas..." #: plugins/personal/posix/class_posixAccount.inc:37 #: plugins/personal/posix/class_posixAccount.inc:291 #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/personal/posix/class_posixAccount.inc:313 #: plugins/personal/posix/class_posixAccount.inc:316 #: plugins/admin/groups/class_groupManagement.inc:157 #: plugins/admin/users/class_userManagement.inc:894 msgid "POSIX" msgstr "POSIX" #: plugins/personal/posix/class_posixAccount.inc:38 msgid "Edit users POSIX settings" msgstr "Editar parametros de usuarios POSIX" #: plugins/personal/posix/class_posixAccount.inc:152 msgid "expired" msgstr "expiró" #: plugins/personal/posix/class_posixAccount.inc:154 msgid "grace time active" msgstr "Periodo de gracia activado" #: plugins/personal/posix/class_posixAccount.inc:157 #: plugins/personal/posix/class_posixAccount.inc:159 #: plugins/personal/posix/class_posixAccount.inc:161 msgid "active" msgstr "activo" #: plugins/personal/posix/class_posixAccount.inc:157 msgid "password not changeable" msgstr "no puede cambiar la contraseña" #: plugins/personal/posix/class_posixAccount.inc:159 msgid "password expired" msgstr "la contraseña expiró" #: plugins/personal/posix/class_posixAccount.inc:235 msgid "automatic" msgstr "automático" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:173 #: plugins/admin/users/class_userManagement.inc:902 msgid "Samba" msgstr "Samba" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:197 #: plugins/admin/users/class_userManagement.inc:910 msgid "Environment" msgstr "Entorno" #: plugins/personal/posix/class_posixAccount.inc:415 #, php-format msgid "Password can't be changed up to %s days after last change" msgstr "" "La contraseñas no pueden ser cambiadas hasta %s días desde el último cambio" #: plugins/personal/posix/class_posixAccount.inc:419 #, php-format msgid "Password must be changed after %s days" msgstr "La contraseñas deben ser cambiadas despues de %s días" #: plugins/personal/posix/class_posixAccount.inc:423 #, php-format msgid "Disable account after %s days of inactivity after password expiry" msgstr "" "Desactivar cuenta despues de %s días de inactividad una vez caducada la " "contraseña" #: plugins/personal/posix/class_posixAccount.inc:427 #, php-format msgid "Warn user %s days before password expiry" msgstr "Avisar al usuario %s días antes de que la contraseña caduque" #: plugins/personal/posix/class_posixAccount.inc:692 msgid "Timeout while waiting for lock. Ignoring lock!" msgstr "Tiempo de espera agotado esperando un bloqueo. ¡Ignorando bloqueo!" #: plugins/personal/posix/class_posixAccount.inc:750 #: plugins/personal/posix/class_posixAccount.inc:1043 msgid "Group of user" msgstr "Grupo de usuarios" #: plugins/personal/posix/class_posixAccount.inc:815 msgid "" "A duplicated UID number was written for this user. If this was not intended " "please verify all used uidNumbers!" msgstr "" "UN número UID duplicado ha sido introducido para este usuario. ¡Si esto no " "es intencionado por favor verifique todos los uidNumbers usado!" #: plugins/personal/posix/class_posixAccount.inc:933 #: plugins/personal/posix/class_posixAccount.inc:986 msgid "shadowMin" msgstr "shadowMin" #: plugins/personal/posix/class_posixAccount.inc:938 #: plugins/personal/posix/class_posixAccount.inc:991 msgid "shadowMax" msgstr "shadowMax" #: plugins/personal/posix/class_posixAccount.inc:943 #: plugins/personal/posix/class_posixAccount.inc:996 msgid "shadowWarning" msgstr "shadowWarning" #: plugins/personal/posix/class_posixAccount.inc:957 #: plugins/personal/posix/class_posixAccount.inc:1010 msgid "shadowInactive" msgstr "shadowInactive" #: plugins/personal/posix/class_posixAccount.inc:1061 #: plugins/personal/posix/class_posixAccount.inc:1537 #, fuzzy msgid "all" msgstr "ACL" #: plugins/personal/posix/class_posixAccount.inc:1352 msgid "POSIX account" msgstr "Cuenta POSIX" #: plugins/personal/posix/class_posixAccount.inc:1370 msgid "Group ID" msgstr "Identificador (ID) de Grupo" #: plugins/personal/posix/class_posixAccount.inc:1372 #, fuzzy msgid "Shadow last changed" msgstr "Mostrar cambios" #: plugins/personal/posix/class_posixAccount.inc:1373 #, fuzzy msgid "Last login" msgstr "Último inicio de sesión" #: plugins/personal/posix/class_posixAccount.inc:1375 msgid "Force password change on login" msgstr "Forzar el cambio de contraseña al iniciar" #: plugins/personal/posix/class_posixAccount.inc:1376 msgid "Shadow min" msgstr "Shadow min" #: plugins/personal/posix/class_posixAccount.inc:1377 msgid "Shadow max" msgstr "Shadow max" #: plugins/personal/posix/class_posixAccount.inc:1378 msgid "Shadow warning" msgstr "Shadow warning" #: plugins/personal/posix/class_posixAccount.inc:1379 msgid "Shadow inactive" msgstr "Shadow inactive" #: plugins/personal/posix/class_posixAccount.inc:1380 msgid "Shadow expire" msgstr "Shadow expire" #: plugins/personal/posix/class_posixAccount.inc:1381 msgid "Public SSH key" msgstr "Clave pública SSH" #: plugins/personal/posix/class_posixAccount.inc:1382 msgid "System trust model" msgstr "Sistema de confianza" #: plugins/personal/posix/class_posixAccount.inc:1512 msgid "some" msgstr "" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "disabled" msgstr "desactivado" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "full access" msgstr "Acceso sin restricciones" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:174 msgid "allow access to these hosts" msgstr "Permitir el acceso a estos equipos" #: plugins/personal/posix/trustModeDialog/generic.tpl:2 #: plugins/admin/groups/class_group.inc:1084 #: plugins/admin/ogroups/class_ogroup.inc:888 msgid "System trust" msgstr "Sistema de seguridad" #: plugins/personal/posix/trustModeDialog/generic.tpl:5 #: plugins/personal/posix/trustModeDialog/generic.tpl:21 msgid "Trust mode" msgstr "Modo seguro" #: plugins/personal/password/password.tpl:10 #, fuzzy msgid "Your Password has expired. Please choose a new password." msgstr "Su contraseña ha caducado. ¡Por favor seleccione una nueva!" #: plugins/personal/password/class_password.inc:27 msgid "Change user password" msgstr "Cambiar contraseña de usuario" #: plugins/personal/password/class_password.inc:161 msgid "" "The password you've entered as your current password doesn't match the real " "one." msgstr "La contraseña introducida como contraseña actual no es correcta." #: plugins/personal/password/class_password.inc:164 msgid "You have no permission to change your password." msgstr "No tiene permisos para cambiar su contraseña." #: plugins/personal/password/class_password.inc:228 msgid "User password" msgstr "Contraseña del usuario" #: plugins/personal/password/class_password.inc:241 msgid "Script to be called before a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:250 msgid "Script to be called after a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:259 msgid "Script to be called before a password gets unlocked." msgstr "" #: plugins/personal/password/class_password.inc:268 msgid "Script to be called after a password gets unlocked." msgstr "" #: plugins/personal/generic/generic_certs.tpl:3 #: plugins/personal/generic/class_user.inc:550 #: plugins/personal/generic/class_user.inc:572 #: plugins/personal/generic/generic.tpl:226 msgid "Certificates" msgstr "Certificados" #: plugins/personal/generic/generic_certs.tpl:5 #, fuzzy msgid "The users standard certificate" msgstr "Certificado estándar" #: plugins/personal/generic/generic_certs.tpl:8 msgid "Standard certificate" msgstr "Certificado estándar" #: plugins/personal/generic/generic_certs.tpl:22 #: plugins/personal/generic/generic_certs.tpl:48 #: plugins/personal/generic/generic_certs.tpl:74 #: plugins/addons/propertyEditor/property-list.xml:109 #: plugins/admin/groups/group-list.xml:98 #: plugins/admin/ogroups/ogroup-list.xml:98 plugins/admin/acl/acl-list.xml:95 #: plugins/admin/acl/acl-list.xml:144 #: plugins/admin/departments/dep-list.xml:160 #: plugins/admin/departments/dep-list.xml:181 #: plugins/admin/users/user-list.xml:121 msgid "Remove" msgstr "Eliminar" #: plugins/personal/generic/generic_certs.tpl:31 #, fuzzy msgid "The users S/MIME certificate" msgstr "Certificado S/MIME" #: plugins/personal/generic/generic_certs.tpl:34 msgid "S/MIME certificate" msgstr "Certificado S/MIME" #: plugins/personal/generic/generic_certs.tpl:57 #, fuzzy msgid "The users PKCS12 certificate" msgstr "Certificado PKCS12" #: plugins/personal/generic/generic_certs.tpl:60 msgid "PKCS12 certificate" msgstr "Certificado PKCS12" #: plugins/personal/generic/generic_certs.tpl:83 #: plugins/personal/generic/class_user.inc:1663 msgid "Certificate serial number" msgstr "Número de serie del certificado" #: plugins/personal/generic/paste_generic.tpl:3 #, fuzzy msgid "Paste user" msgstr "Pegar" #: plugins/personal/generic/paste_generic.tpl:6 #: plugins/personal/generic/generic.tpl:1 #: plugins/personal/generic/generic.tpl:3 msgid "Personal information" msgstr "Información personal" #: plugins/personal/generic/paste_generic.tpl:8 #: plugins/personal/generic/generic.tpl:37 plugins/admin/users/template.tpl:23 msgid "Last name" msgstr "Apellido" #: plugins/personal/generic/paste_generic.tpl:12 #: plugins/personal/generic/generic.tpl:51 plugins/admin/users/template.tpl:27 msgid "First name" msgstr "Nombre" #: plugins/personal/generic/paste_generic.tpl:24 msgid "Clear password" msgstr "Borrar Contraseña" #: plugins/personal/generic/paste_generic.tpl:25 msgid "Set new password" msgstr "Introducir nueva contraseña" #: plugins/personal/generic/paste_generic.tpl:31 #: plugins/personal/generic/generic.tpl:8 #: plugins/personal/generic/generic_picture.tpl:2 #, fuzzy msgid "The users picture" msgstr "Foto del usuario" #: plugins/personal/generic/paste_generic.tpl:43 #: plugins/personal/generic/generic_picture.tpl:13 msgid "Remove picture" msgstr "Eliminar foto" #: plugins/personal/generic/class_user.inc:38 msgid "Edit organizational user settings" msgstr "Editar parámetros de usuarios administrativos" #: plugins/personal/generic/class_user.inc:297 #, fuzzy msgid "Please add a single IP address or a network/net mask combination!" msgstr "¡Por favor añada una IP única o una combinación red/mascara!" #: plugins/personal/generic/class_user.inc:339 msgid "female" msgstr "mujer" #: plugins/personal/generic/class_user.inc:339 msgid "male" msgstr "hombre" #: plugins/personal/generic/class_user.inc:395 #, fuzzy msgid "Password configuration" msgstr "Descargar configuración" #: plugins/personal/generic/class_user.inc:429 msgid "Cannot upload file!" msgstr "¡No se puede subir el archivo!" #: plugins/personal/generic/class_user.inc:522 msgid "Serial number" msgstr "Número serie" #: plugins/personal/generic/class_user.inc:544 #: plugins/personal/generic/class_user.inc:1716 #: plugins/personal/generic/generic_picture.tpl:1 msgid "User picture" msgstr "Foto del usuario" #: plugins/personal/generic/class_user.inc:569 msgid "(Not supported certificate types are marked as invalid.)" msgstr "" #: plugins/personal/generic/class_user.inc:579 #, php-format msgid "Certificate is valid from %s to %s and is currently %s." msgstr "El certificado es valido desde %s hasta %s y es actualmente %s." #: plugins/personal/generic/class_user.inc:582 msgid "valid" msgstr "válido" #: plugins/personal/generic/class_user.inc:583 msgid "invalid" msgstr "no válido" #: plugins/personal/generic/class_user.inc:588 msgid "No certificate installed" msgstr "No hay certificados instalados" #: plugins/personal/generic/class_user.inc:614 msgid "The selected password method is no longer available." msgstr "El método de contraseña seleccionado no está disponible." #: plugins/personal/generic/class_user.inc:1051 msgid "" "Cannot save user picture: GOsa requires the package 'imagemagick' or 'php5-" "imagick' to be installed!" msgstr "" #: plugins/personal/generic/class_user.inc:1177 msgid "Cannot build RDN: no + allowed to build sub RDN!" msgstr "No se puede construir RDN: ¡no se permite + para construir subRDN!" #: plugins/personal/generic/class_user.inc:1184 msgid "Cannot build RDN: attribute is not defined!" msgstr "No se puede construir RDN: ¡Atributo no definido!" #: plugins/personal/generic/class_user.inc:1202 msgid "Cannot build RDN: invalid attribute parameters!" msgstr "No se puede construir RDN: ¡Valor no válido del atributo!" #: plugins/personal/generic/class_user.inc:1273 msgid "The selected password method requires initial configuration!" msgstr "" "¡El método de contraseña seleccionado necesita una configuració inicial!" #: plugins/personal/generic/class_user.inc:1349 #: plugins/personal/generic/class_user.inc:1739 #: plugins/personal/generic/class_user.inc:1842 #: plugins/personal/generic/generic.tpl:201 msgid "Homepage" msgstr "Página Web" #: plugins/personal/generic/class_user.inc:1354 #: plugins/personal/generic/class_user.inc:1845 #: plugins/personal/generic/generic.tpl:394 #: plugins/personal/generic/generic.tpl:574 #: plugins/admin/groups/class_groupManagement.inc:181 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:55 #: plugins/admin/ogroups/class_ogroupManagement.inc:188 #: plugins/admin/departments/organization.tpl:109 #: plugins/admin/departments/class_department.inc:376 #: plugins/admin/departments/generic.tpl:110 #: plugins/admin/users/class_userManagement.inc:918 msgid "Phone" msgstr "Teléfono" #: plugins/personal/generic/class_user.inc:1357 #: plugins/personal/generic/class_user.inc:1848 #: plugins/personal/generic/generic.tpl:419 #: plugins/personal/generic/generic.tpl:586 #: plugins/admin/departments/organization.tpl:117 #: plugins/admin/departments/class_department.inc:379 #: plugins/admin/departments/class_department.inc:683 #: plugins/admin/departments/class_organizationGeneric.inc:133 #: plugins/admin/departments/generic.tpl:118 msgid "Fax" msgstr "Fax" #: plugins/personal/generic/class_user.inc:1360 #: plugins/personal/generic/class_user.inc:1851 #: plugins/personal/generic/generic.tpl:403 msgid "Mobile" msgstr "Móvil" #: plugins/personal/generic/class_user.inc:1363 #: plugins/personal/generic/class_user.inc:1854 #: plugins/personal/generic/generic.tpl:411 msgid "Pager" msgstr "Buscapersonas" #: plugins/personal/generic/class_user.inc:1483 msgid "Cannot open certificate!" msgstr "¡No puedo abrir el certificado!" #: plugins/personal/generic/class_user.inc:1655 #: plugins/personal/generic/generic.tpl:526 msgid "Unit" msgstr "Unidad" #: plugins/personal/generic/class_user.inc:1656 #: plugins/personal/generic/generic.tpl:551 msgid "House identifier" msgstr "Tipo de Vía" #: plugins/personal/generic/class_user.inc:1657 #: plugins/personal/generic/generic.tpl:468 msgid "Vocation" msgstr "Profesión" #: plugins/personal/generic/class_user.inc:1658 #: plugins/personal/generic/generic.tpl:595 msgid "Last delivery" msgstr "Última dirección conocida" #: plugins/personal/generic/class_user.inc:1659 #: plugins/personal/generic/generic.tpl:517 msgid "Person locality" msgstr "Lugar de residencia" #: plugins/personal/generic/class_user.inc:1660 #: plugins/personal/generic/generic.tpl:476 msgid "Unit description" msgstr "Descripción de la unidad" #: plugins/personal/generic/class_user.inc:1661 #: plugins/personal/generic/generic.tpl:485 msgid "Subject area" msgstr "Área de desarrollo" #: plugins/personal/generic/class_user.inc:1662 #: plugins/personal/generic/generic.tpl:494 msgid "Functional title" msgstr "Función" #: plugins/personal/generic/class_user.inc:1666 #: plugins/personal/generic/generic.tpl:503 plugins/admin/acl/acl-list.xml:23 #: plugins/admin/acl/acl-list.xml:82 plugins/admin/acl/class_aclRole.inc:714 msgid "Role" msgstr "Rol" #: plugins/personal/generic/class_user.inc:1667 #: plugins/personal/generic/generic.tpl:543 msgid "Postal code" msgstr "Código Postal" #: plugins/personal/generic/class_user.inc:1671 msgid "Generic user settings" msgstr "Parámetros genéricos del usuario" #: plugins/personal/generic/class_user.inc:1692 msgid "" "Pattern for the generation of user DNs. Please read the FAQ for details." msgstr "" #: plugins/personal/generic/class_user.inc:1706 #, fuzzy msgid "Allow definition of custom filters" msgstr "Escribir archivo de configuración" #: plugins/personal/generic/class_user.inc:1712 #: plugins/personal/generic/generic.tpl:140 msgid "Sex" msgstr "Sexo" #: plugins/personal/generic/class_user.inc:1713 #: plugins/personal/generic/generic.tpl:154 msgid "Preferred language" msgstr "Idioma preferido" #: plugins/personal/generic/class_user.inc:1718 #, fuzzy msgid "Login restrictions" msgstr "Restricciones de contraseña" #: plugins/personal/generic/class_user.inc:1721 #: plugins/personal/generic/generic.tpl:306 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:15 #: plugins/admin/ogroups/class_ogroupManagement.inc:186 #: plugins/admin/departments/dep-list.xml:55 #: plugins/admin/departments/dep-list.xml:71 #: plugins/admin/departments/dep-list.xml:138 #: plugins/admin/departments/class_departmentManagement.inc:253 msgid "Department" msgstr "Departamento" #: plugins/personal/generic/class_user.inc:1723 #: plugins/personal/generic/generic.tpl:339 #: plugins/personal/generic/generic.tpl:355 #: plugins/admin/departments/dcObject.tpl:39 #: plugins/admin/departments/country.tpl:39 #: plugins/admin/departments/class_countryGeneric.inc:93 #: plugins/admin/departments/organization.tpl:51 #: plugins/admin/departments/class_department.inc:684 #: plugins/admin/departments/class_domain.inc:93 #: plugins/admin/departments/class_organizationGeneric.inc:127 #: plugins/admin/departments/generic.tpl:51 #: plugins/admin/departments/locality.tpl:39 #: plugins/admin/departments/class_localityGeneric.inc:93 #: plugins/admin/departments/class_dcObject.inc:92 #: plugins/admin/departments/domain.tpl:39 #, fuzzy msgid "Manager" msgstr "Gestión de usuarios" #: plugins/personal/generic/class_user.inc:1727 msgid "Room number" msgstr "Número de habitación" #: plugins/personal/generic/class_user.inc:1728 #, fuzzy msgid "Telephone number" msgstr "Número de teléfono" #: plugins/personal/generic/class_user.inc:1729 msgid "Pager number" msgstr "Número del busca" #: plugins/personal/generic/class_user.inc:1730 msgid "Mobile number" msgstr "Teléfono móvil" #: plugins/personal/generic/class_user.inc:1731 msgid "Fax number" msgstr "Número de Fax" #: plugins/personal/generic/class_user.inc:1733 #: plugins/personal/generic/generic.tpl:444 #: plugins/admin/departments/organization.tpl:86 #: plugins/admin/departments/class_department.inc:679 #: plugins/admin/departments/class_organizationGeneric.inc:129 #: plugins/admin/departments/generic.tpl:87 msgid "State" msgstr "Provincia" #: plugins/personal/generic/class_user.inc:1735 #: plugins/personal/generic/generic.tpl:183 #: plugins/admin/departments/class_organizationGeneric.inc:131 msgid "Postal address" msgstr "Código Postal" #: plugins/personal/generic/class_user.inc:1740 msgid "User password method" msgstr "Metodo de contraseña de usuario" #: plugins/personal/generic/class_user.inc:1741 msgid "User certificates" msgstr "Certificados de usuario" #: plugins/personal/generic/class_user.inc:1949 #, fuzzy msgid "Entries differ" msgstr "Entradas por página" #: plugins/personal/generic/generic.tpl:21 msgid "Change picture" msgstr "Cambiar foto" #: plugins/personal/generic/generic.tpl:41 #: plugins/personal/generic/generic.tpl:55 #: plugins/personal/generic/generic.tpl:73 plugins/admin/groups/generic.tpl:14 msgid "Multiple edit" msgstr "Edición multiple" #: plugins/personal/generic/generic.tpl:83 msgid "Template name" msgstr "Nombre de la plantilla" #: plugins/personal/generic/generic.tpl:185 #: plugins/personal/generic/generic.tpl:452 #: plugins/admin/departments/organization.tpl:102 #: plugins/admin/departments/class_department.inc:681 #: plugins/admin/departments/generic.tpl:103 msgid "Address" msgstr "Dirección" #: plugins/personal/generic/generic.tpl:193 msgid "Private phone" msgstr "Teléfono privado" #: plugins/personal/generic/generic.tpl:209 msgid "Password storage" msgstr "Almacén de claves" #: plugins/personal/generic/generic.tpl:229 msgid "Edit certificates" msgstr "Editar certificados" #: plugins/personal/generic/generic.tpl:241 msgid "Restrict login to" msgstr "Restringir inicio de sesión a" #: plugins/personal/generic/generic.tpl:249 #: plugins/personal/generic/generic.tpl:269 msgid "IP or network" msgstr "IP o Red" #: plugins/personal/generic/generic.tpl:285 #: plugins/personal/generic/generic.tpl:288 #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 msgid "Organizational information" msgstr "Información corporativa" #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 #, fuzzy msgid "part" msgstr "Smarty" #: plugins/personal/generic/generic.tpl:314 msgid "Department No." msgstr "Número departamento" #: plugins/personal/generic/generic.tpl:322 msgid "Employee No." msgstr "Número empleado" #: plugins/personal/generic/generic.tpl:385 #: plugins/personal/generic/generic.tpl:566 msgid "Room No." msgstr "Número sala" #: plugins/personal/generic/generic.tpl:580 msgid "Please use the phone tab" msgstr "Por favor use la sección telefóno" #: plugins/addons/dyngroup/dyngroup.tpl:1 #, fuzzy msgid "List of dynamic rules" msgstr "Lista de acls" #: plugins/addons/dyngroup/dyngroup.tpl:3 msgid "Labeled URI definitions" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:6 #, fuzzy msgid "Scope" msgstr "copiar" #: plugins/addons/dyngroup/dyngroup.tpl:7 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:132 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:134 #, fuzzy msgid "Attribute" msgstr "Atributo de inicio de sesión" #: plugins/addons/dyngroup/dyngroup.tpl:8 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:139 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 #: plugins/generic/references/class_aclResolver.inc:169 msgid "Filter" msgstr "Filtro" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:118 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:340 msgid "Labeled URI" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 msgid "Surrounding brackets are required!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:149 #, php-format msgid "The given filter '%s' for entry %s seems to be invalid!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:179 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:181 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:332 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:333 #, fuzzy msgid "Dynamic object" msgstr "Objeto GOsa" #: plugins/addons/propertyEditor/property-filter.xml:15 #, fuzzy msgid "Effective properties" msgstr "Editar características generales" #: plugins/addons/propertyEditor/property-filter.xml:29 #, fuzzy msgid "Modified properties" msgstr "Editar características generales" #: plugins/addons/propertyEditor/property-filter.xml:43 #, fuzzy msgid "All properties" msgstr "Editar características generales" #: plugins/addons/propertyEditor/property-filter.xml:57 #, fuzzy msgid "LDAP properties" msgstr "Propiedades" #: plugins/addons/propertyEditor/property-filter.xml:71 #, fuzzy msgid "Search for property groups" msgstr "Mostrar grupos primarios" #: plugins/addons/propertyEditor/migrate.tpl:3 msgid "Property migration assistant" msgstr "" #: plugins/addons/propertyEditor/migrate.tpl:3 #, fuzzy msgid "Migration steps left" msgstr "Error de migración" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:31 #, fuzzy, php-format msgid "Migration of property '%s'" msgstr "Error de migración" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:34 #, fuzzy, php-format msgid "GOsa has detected objects outside of the configured storage point (%s)." msgstr "Encontrados '%s' grupos fuera del árbol configurado '%s'." #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:161 #, fuzzy msgid "Objects that will be added" msgstr "¡El objeto será eliminado!" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:169 #, fuzzy msgid "Objects that will be moved" msgstr "La estaciones de trabajo windows serán trasladadas desde" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:177 #, fuzzy, php-format msgid "Moving object '%s' to '%s'" msgstr "Moviendo '%s' a '%s'" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:204 #, fuzzy, php-format msgid "Migration failed for object %s: DN already exists!" msgstr "" "Ha fallado al añadir un usuario administrativo: ¡El objeto '%s' ya existe!" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:208 #, fuzzy, php-format msgid "Migration failed for object %s: please check if it already exists!" msgstr "" "Ha fallado al añadir un usuario administrativo: ¡El objeto '%s' ya existe!" #: plugins/addons/propertyEditor/property-list.tpl:3 #, fuzzy msgid "Warning message" msgstr "Enviar mensaje" #: plugins/addons/propertyEditor/property-list.tpl:9 msgid "" "Modifying properties may break your setup, destroy or mess up your LDAP " "database, lead to security holes or it can even make a login impossible!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:10 msgid "" "Since configuration properties are stored in the LDAP database a copy/backup " "can be handy." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:14 msgid "" "If you've debarred yourself, you can try to set 'ignoreLdapProperties' to " "'true' in your gosa.conf main section. This will make GOsa ignore LDAP based " "property values." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:22 msgid "" "I understand that there are certain risks, but I want to modify properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:38 msgid "Ignoring LDAP defined properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:77 msgid "Undo" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:1 msgid "Command verifier" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:3 msgid "" "Here you can execute commands in the way GOsa does and check the generated " "results or errors. This can be very useful especially for the post events " "(postcreate, postmodify and postremove) due to the fact that these hook are " "executed silently." msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:8 msgid "" "Please be careful here, all commands will really be executed on your machine " "and may break things!" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:15 msgid "The command to check for" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:17 #, fuzzy msgid "Test" msgstr "Marca de tiempo" #: plugins/addons/propertyEditor/class_commandVerifier.inc:56 msgid "Results" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:6 #, fuzzy msgid "Preferences" msgstr "Referencias" #: plugins/addons/propertyEditor/class_propertyEditor.inc:7 msgid "" "Configure global and special GOsa settings like hooks and plug-in parameters" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:206 #, fuzzy msgid "No description" msgstr "Descripción del Rol" #: plugins/addons/propertyEditor/class_propertyEditor.inc:251 msgid "Test the given command." msgstr "" #: plugins/addons/propertyEditor/property-list.xml:11 #, fuzzy msgid "List of configuration settings" msgstr "Caracteristicas del usuario" #: plugins/addons/propertyEditor/property-list.xml:16 #, fuzzy msgid "Property not used" msgstr "Grupo de usuarios" #: plugins/addons/propertyEditor/property-list.xml:24 #, fuzzy msgid "Property will be restored" msgstr "El grupo serán trasladado desde" #: plugins/addons/propertyEditor/property-list.xml:32 #, fuzzy msgid "Modified property" msgstr "modificación" #: plugins/addons/propertyEditor/property-list.xml:40 #, fuzzy msgid "Property configured in LDAP" msgstr "Crear su fichero de configuración" #: plugins/addons/propertyEditor/property-list.xml:48 #, fuzzy msgid "Property configured in config file" msgstr "Crear su fichero de configuración" #: plugins/addons/propertyEditor/property-list.xml:81 #, fuzzy msgid "Class" msgstr "clase" #: plugins/addons/propertyEditor/property-list.xml:89 #, fuzzy msgid "Value" msgstr "hombre" #: plugins/addons/propertyEditor/property-list.xml:125 msgid "Restore to default" msgstr "" #: plugins/admin/groups/paste_generic.tpl:1 msgid "Group settings" msgstr "Parametros de grupos" #: plugins/admin/groups/paste_generic.tpl:2 #, fuzzy msgid "Paste group settings" msgstr "Parametros de grupos" #: plugins/admin/groups/paste_generic.tpl:5 #: plugins/admin/groups/generic.tpl:11 #: plugins/admin/ogroups/paste_generic.tpl:4 #: plugins/admin/ogroups/generic.tpl:7 msgid "Group name" msgstr "Nombre del grupo" #: plugins/admin/groups/paste_generic.tpl:8 #: plugins/admin/groups/generic.tpl:17 #, fuzzy msgid "POSIX name of the group" msgstr "Nombre Posix del grupo" #: plugins/admin/groups/paste_generic.tpl:13 #: plugins/admin/groups/generic.tpl:59 #, fuzzy msgid "Normally IDs are auto-generated, select to specify manually" msgstr "" "Normalmente los IDs son generados automáticamente, seleccione para indicar " "manualmente" #: plugins/admin/groups/paste_generic.tpl:15 #: plugins/admin/groups/generic.tpl:62 msgid "Force GID" msgstr "Forzar GID" #: plugins/admin/groups/paste_generic.tpl:18 #: plugins/admin/groups/generic.tpl:65 msgid "Forced ID number" msgstr "Forzar número ID" #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:14 #: plugins/admin/groups/userSelect/user-list.xml:14 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:15 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:63 #: plugins/admin/ogroups/class_ogroupManagement.inc:183 #: plugins/admin/users/user-list.xml:23 plugins/admin/users/user-list.xml:95 msgid "User" msgstr "Usuario" #: plugins/admin/groups/singleUserSelect/class_singleUserSelect.inc:29 #: plugins/admin/groups/userSelect/class_userSelect.inc:26 #, fuzzy msgid "User selection" msgstr "Parametros de grupos" #: plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 msgid "Cannot find group SID in your configuration!" msgstr "¡No se puede encontrar SID de grupo en el archivo de configuración!" #: plugins/admin/groups/class_group.inc:310 msgid "Samba group" msgstr "Grupo de samba" #: plugins/admin/groups/class_group.inc:310 #, fuzzy msgid "Domain administrators" msgstr "Administradores del dominio" #: plugins/admin/groups/class_group.inc:310 msgid "Domain users" msgstr "Usuarios del dominio" #: plugins/admin/groups/class_group.inc:311 msgid "Domain guests" msgstr "Invitados del dominio" #: plugins/admin/groups/class_group.inc:316 #, php-format msgid "Special group (%d)" msgstr "Grupo especial (%d)" #: plugins/admin/groups/class_group.inc:483 #, php-format msgid "Adding UID '%s' to group '%s' failed: cannot find user object!" msgstr "" "¡Añadir UID '%s' al grupo '%s ha fallado: no podemos encontrar el objeto " "usuario!" #: plugins/admin/groups/class_group.inc:489 #, php-format msgid "Add UID '%s' to group '%s' failed: UID is used more than once!" msgstr "¡Añadir UID '%s' al grupo '%s ha fallado: UID es usado mas de una vez!" #: plugins/admin/groups/class_group.inc:772 #, php-format msgid "Cannot find any SID for '%s'!" msgstr "¡No se puede encontrar nigún SID para '%s'!" #: plugins/admin/groups/class_group.inc:777 #, php-format msgid "Cannot find any RIDBASE for '%s'!" msgstr "¡No se puede encontrar un RIDBASE para '%s'." #: plugins/admin/groups/class_group.inc:871 #, php-format msgid "The gidNumber '%s' is already in use by %s!" msgstr "¡El gidNumber '%s' introducido ya esta siendo usado por %s!" #: plugins/admin/groups/class_group.inc:1055 msgid "Generic group settings" msgstr "Parámetros genéricos del grupo" #: plugins/admin/groups/class_group.inc:1068 #, fuzzy msgid "RDN for object group storage." msgstr "Lista del grupo de objetos" #: plugins/admin/groups/class_group.inc:1082 msgid "Samba group type" msgstr "Tipo de grupo de samba" #: plugins/admin/groups/class_group.inc:1083 msgid "Samba domain name" msgstr "Nombre de dominio samba" #: plugins/admin/groups/class_group.inc:1085 msgid "Phone pickup group" msgstr "Miembros de grupo de salto telefónico" #: plugins/admin/groups/class_group.inc:1086 msgid "Nagios group" msgstr "Grupo Nagios" #: plugins/admin/groups/class_group.inc:1088 msgid "Group member" msgstr "Miembro del grupo" #: plugins/admin/groups/class_groupManagement.inc:26 msgid "" "Manage aspects of groups like members, POSIX, desktop, samba and mail " "settings" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:100 #: plugins/admin/ogroups/class_ogroupManagement.inc:115 #: plugins/admin/users/class_userManagement.inc:196 msgid "Infrastructure error" msgstr "error de infraestructura" #: plugins/admin/groups/class_groupManagement.inc:158 #: plugins/admin/users/class_userManagement.inc:895 msgid "Edit POSIX properties" msgstr "Editar características POSIX" #: plugins/admin/groups/class_groupManagement.inc:166 #: plugins/admin/users/class_userManagement.inc:899 msgid "Edit mail properties" msgstr "Editar características de correo electrónico" #: plugins/admin/groups/class_groupManagement.inc:174 #: plugins/admin/users/class_userManagement.inc:903 msgid "Edit samba properties" msgstr "Editar características samba" #: plugins/admin/groups/class_groupManagement.inc:182 #: plugins/admin/users/class_userManagement.inc:919 msgid "Edit phone properties" msgstr "Editar características telefónicas" #: plugins/admin/groups/class_groupManagement.inc:189 msgid "Menu" msgstr "Menú" #: plugins/admin/groups/class_groupManagement.inc:190 msgid "Edit start menu properties" msgstr "Editar propiedades iniciales del menú" #: plugins/admin/groups/class_groupManagement.inc:198 #: plugins/admin/users/class_userManagement.inc:911 msgid "Edit environment properties" msgstr "Editar características de entorno" #: plugins/admin/groups/group-filter.xml:31 #, fuzzy msgid "Default filter2" msgstr "Parámetro" #: plugins/admin/groups/generic.tpl:28 plugins/admin/ogroups/generic.tpl:18 msgid "Descriptive text for this group" msgstr "Descripción del grupo" #: plugins/admin/groups/generic.tpl:75 plugins/admin/groups/generic.tpl:102 msgid "Select to create a samba conform group" msgstr "Seleccione para crear un grupo conforme samba" #: plugins/admin/groups/generic.tpl:87 plugins/admin/groups/generic.tpl:110 msgid "in domain" msgstr "en dominio" #: plugins/admin/groups/generic.tpl:131 msgid "Members are in a phone pickup group" msgstr "Los miembros están en un grupo de salto telefónico" #: plugins/admin/groups/generic.tpl:146 #, fuzzy msgid "Members are in a Nagios group" msgstr "Los miembros están en un grupo Nagios" #: plugins/admin/groups/generic.tpl:175 plugins/admin/ogroups/generic.tpl:41 msgid "The group members are part of a dyn-group and cannot be managed!" msgstr "" #: plugins/admin/groups/generic.tpl:188 #, fuzzy msgid "Common group members" msgstr "Grupo común" #: plugins/admin/groups/generic.tpl:197 #, fuzzy msgid "Partial group members" msgstr "Miembros del grupo" #: plugins/admin/groups/generic.tpl:202 msgid "Group members" msgstr "Miembros del grupo" #: plugins/admin/groups/group-list.xml:11 msgid "List of groups" msgstr "Lista de grupos" #: plugins/admin/groups/group-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:57 #: plugins/admin/departments/dcObject.tpl:8 #: plugins/admin/departments/dcObject.tpl:9 #: plugins/admin/departments/country.tpl:8 #: plugins/admin/departments/country.tpl:9 #: plugins/admin/departments/organization.tpl:7 #: plugins/admin/departments/organization.tpl:9 #: plugins/admin/departments/generic.tpl:7 #: plugins/admin/departments/generic.tpl:9 #: plugins/admin/departments/locality.tpl:8 #: plugins/admin/departments/locality.tpl:9 #: plugins/admin/departments/domain.tpl:8 #: plugins/admin/departments/domain.tpl:9 plugins/admin/users/user-list.xml:73 msgid "Properties" msgstr "Propiedades" #: plugins/admin/groups/group-list.xml:91 #: plugins/admin/ogroups/ogroup-list.xml:91 plugins/admin/acl/acl-list.xml:131 #: plugins/admin/departments/dep-list.xml:172 #: plugins/admin/users/user-list.xml:114 msgid "Edit" msgstr "Editar" #: plugins/admin/groups/group-list.xml:106 #: plugins/admin/ogroups/ogroup-list.xml:106 #: plugins/admin/users/user-list.xml:156 msgid "Send message" msgstr "Enviar mensaje" #: plugins/admin/groups/group-list.xml:138 msgid "Edit group" msgstr "Editar grupo" #: plugins/admin/groups/group-list.xml:151 msgid "Remove group" msgstr "Eliminar grupo" #: plugins/admin/groups/userGroupSelect/class_userGroupSelect.inc:29 #, fuzzy msgid "User and group selection" msgstr "Parametros de grupos" #: plugins/admin/ogroups/ogroup-list.xml:11 msgid "List of object groups" msgstr "Lista del grupo de objetos" #: plugins/admin/ogroups/ogroup-list.xml:15 #: plugins/admin/ogroups/generic.tpl:1 msgid "Object group" msgstr "Grupo de objetos" #: plugins/admin/ogroups/ogroup-list.xml:142 msgid "Edit object group" msgstr "Editar grupo de objetos" #: plugins/admin/ogroups/ogroup-list.xml:155 msgid "Remove object group" msgstr "Eliminar grupo de objetos" #: plugins/admin/ogroups/paste_generic.tpl:1 #, fuzzy msgid "Paste object group" msgstr "Editar grupo de objetos" #: plugins/admin/ogroups/paste_generic.tpl:7 msgid "Please enter the new object group name" msgstr "Por favor introduzca un nuevo nombre del grupo de objetos" #: plugins/admin/ogroups/paste_generic.tpl:16 msgid "Warning: systems can only inherit from a single object group!" msgstr "" #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:47 #: plugins/admin/ogroups/class_ogroupManagement.inc:192 msgid "Printer" msgstr "Impresora" #: plugins/admin/ogroups/objectSelect/class_objectSelect.inc:29 #, fuzzy msgid "Object selection" msgstr "Parametros de grupos" #: plugins/admin/ogroups/tabs_ogroups.inc:139 msgid "Phone queue" msgstr "Cola telefónica" #: plugins/admin/ogroups/tabs_ogroups.inc:164 #, fuzzy msgid "Groupware" msgstr "Nombre del grupo" #: plugins/admin/ogroups/tabs_ogroups.inc:176 #, fuzzy msgid "System settings" msgstr "Caracteristicas del usuario" #: plugins/admin/ogroups/tabs_ogroups.inc:188 #: plugins/admin/ogroups/tabs_ogroups.inc:213 msgid "Recipe" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:200 #: plugins/admin/ogroups/tabs_ogroups.inc:222 msgid "Devices" msgstr "Dispositivos" #: plugins/admin/ogroups/tabs_ogroups.inc:232 #, fuzzy msgid "Deployment summary" msgstr "Número del departamento" #: plugins/admin/ogroups/tabs_ogroups.inc:242 msgid "Desktop" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:259 msgid "Applications" msgstr "Aplicaciones" #: plugins/admin/ogroups/generic.tpl:10 msgid "Name of the group" msgstr "Nombre del grupo" #: plugins/admin/ogroups/generic.tpl:46 msgid "Member objects" msgstr "Objetos miembros" #: plugins/admin/ogroups/class_ogroup.inc:244 msgid "You cannot combine terminals and workstations in one object group!" msgstr "" "¡No puede combinar terminales y estaciones de trabajo en un unico grupo de " "objetos!" #: plugins/admin/ogroups/class_ogroup.inc:318 #: plugins/admin/users/class_userManagement.inc:472 #: plugins/admin/users/class_userManagement.inc:507 #: plugins/admin/users/class_userManagement.inc:539 msgid "none" msgstr "ninguno" #: plugins/admin/ogroups/class_ogroup.inc:320 msgid "too many different objects!" msgstr "¡demasiados objetos diferentes!" #: plugins/admin/ogroups/class_ogroup.inc:322 msgid "users" msgstr "usuarios" #: plugins/admin/ogroups/class_ogroup.inc:323 msgid "groups" msgstr "grupos" #: plugins/admin/ogroups/class_ogroup.inc:324 msgid "applications" msgstr "aplicaciones" #: plugins/admin/ogroups/class_ogroup.inc:325 msgid "departments" msgstr "departamentos" #: plugins/admin/ogroups/class_ogroup.inc:326 msgid "servers" msgstr "servidores" #: plugins/admin/ogroups/class_ogroup.inc:327 msgid "workstations" msgstr "estaciones de trabajo" #: plugins/admin/ogroups/class_ogroup.inc:328 #, fuzzy msgid "Windows workstations" msgstr "grupos de estaciones de trabajo windows" #: plugins/admin/ogroups/class_ogroup.inc:329 msgid "terminals" msgstr "terminales" #: plugins/admin/ogroups/class_ogroup.inc:330 msgid "phones" msgstr "teléfonos" #: plugins/admin/ogroups/class_ogroup.inc:331 msgid "printers" msgstr "impresoras" #: plugins/admin/ogroups/class_ogroup.inc:555 #, fuzzy msgid "Non existing DN:" msgstr "No existe el 'dn':" #: plugins/admin/ogroups/class_ogroup.inc:673 #, php-format msgid "" "These systems are already configured by other object groups and cannot be " "added:" msgstr "" "Estos sistemas ya han sido configurados por otros grupos de objetos y no " "pueden ser añadidos:" #: plugins/admin/ogroups/class_ogroup.inc:707 msgid "You can combine two different object types at maximum, only!" msgstr "¡Solo se puede combiar dos tipos de objetos diferentes como máximo!" #: plugins/admin/ogroups/class_ogroup.inc:873 msgid "Object group generic" msgstr "Grupo de objetos genérico" #: plugins/admin/ogroups/class_ogroup.inc:882 #: plugins/admin/ogroups/class_ogroupManagement.inc:25 msgid "Object groups" msgstr "Grupos de objetos" #: plugins/admin/ogroups/class_ogroupManagement.inc:26 msgid "Combine different types of objects to make use of this relationship" msgstr "" #: plugins/admin/ogroups/class_ogroupManagement.inc:182 msgid "Templates" msgstr "Plantillas" #: plugins/admin/ogroups/class_ogroupManagement.inc:185 msgid "Application" msgstr "Aplicación" #: plugins/admin/ogroups/class_ogroupManagement.inc:190 msgid "Windows Install" msgstr "Instalación Windows" #: plugins/admin/acl/tabs_acl_role.inc:28 plugins/admin/acl/acl-filter.xml:33 msgid "ACL Templates" msgstr "Plantillas ACL" #: plugins/admin/acl/acl-list.xml:11 #, fuzzy msgid "List of ACLs" msgstr "Lista de acls" #: plugins/admin/acl/paste_role.tpl:1 #, fuzzy msgid "Paste ACL-role" msgstr "Eliminar rol" #: plugins/admin/acl/acl-filter.xml:48 #: plugins/admin/acl/class_aclManagement.inc:154 msgid "ACL Assignment" msgstr "Asignación de ACL" #: plugins/admin/acl/class_aclManagement.inc:26 msgid "" "Control access to GOsa managed objects down to attribute and action level" msgstr "" #: plugins/admin/acl/class_aclRole.inc:26 #: plugins/admin/acl/class_aclRole.inc:715 msgid "Access control roles" msgstr "Roles de control de acceso" #: plugins/admin/acl/class_aclRole.inc:27 msgid "Edit AC roles" msgstr "Editar roles CA" #: plugins/admin/acl/class_aclRole.inc:138 msgid "Reset ACL" msgstr "Eliminar ACL" #: plugins/admin/acl/class_aclRole.inc:411 msgid "No ACL settings for this category" msgstr "No hay ACL configuradas en esta categoría" #: plugins/admin/acl/class_aclRole.inc:413 #, php-format msgid "ACL for these objects: %s" msgstr "ACLs que tienen estos objetos: %s" #: plugins/admin/acl/class_aclRole.inc:418 msgid "Edit category ACL" msgstr "Editar la categoría ACL" #: plugins/admin/acl/class_aclRole.inc:421 #, fuzzy msgid "Delete category ACL" msgstr "Eliminar la categoría ACL" #: plugins/admin/acl/class_aclRole.inc:442 #, php-format msgid "Edit ACL for '%s', scope is '%s'" msgstr "Editar ACL para '%s', el ámbito es '%s'" #: plugins/admin/acl/class_aclRole.inc:635 msgid "Object in use" msgstr "Objeto en uso" #: plugins/admin/acl/class_aclRole.inc:635 #, php-format msgid "This role cannot be removed while it is in use by these objects:" msgstr "" "Este Rol no puede ser eliminado por estar siendo usado por los siguientes " "objetos:" #: plugins/admin/acl/class_aclRole.inc:731 #, fuzzy msgid "RDN for role storage." msgstr "Ruta del almacén de perfiles kiosk" #: plugins/admin/departments/dcObject.tpl:5 #: plugins/admin/departments/dep-filter.xml:77 #: plugins/admin/departments/dep-list.xml:23 #: plugins/admin/departments/dep-list.xml:110 msgid "Domain component" msgstr "Componente del dominio" #: plugins/admin/departments/dcObject.tpl:11 #: plugins/admin/departments/locality.tpl:11 msgid "Locality name" msgstr "Localidad" #: plugins/admin/departments/dcObject.tpl:14 #: plugins/admin/departments/locality.tpl:14 msgid "Name of locality to create" msgstr "Nombre de la localidad a crear" #: plugins/admin/departments/dcObject.tpl:22 #: plugins/admin/departments/country.tpl:22 #: plugins/admin/departments/organization.tpl:22 #: plugins/admin/departments/locality.tpl:22 #: plugins/admin/departments/domain.tpl:22 msgid "Descriptive text for department" msgstr "Descripción del departamento" #: plugins/admin/departments/dcObject.tpl:67 #: plugins/admin/departments/country.tpl:68 #: plugins/admin/departments/class_countryGeneric.inc:95 #: plugins/admin/departments/organization.tpl:132 #: plugins/admin/departments/class_department.inc:686 #: plugins/admin/departments/class_domain.inc:94 #: plugins/admin/departments/class_organizationGeneric.inc:135 #: plugins/admin/departments/generic.tpl:132 #: plugins/admin/departments/locality.tpl:67 #: plugins/admin/departments/class_localityGeneric.inc:95 #: plugins/admin/departments/class_dcObject.inc:94 #: plugins/admin/departments/domain.tpl:67 msgid "Administrative settings" msgstr "Parámetros administrativos" #: plugins/admin/departments/dcObject.tpl:70 #: plugins/admin/departments/country.tpl:71 #: plugins/admin/departments/organization.tpl:135 #: plugins/admin/departments/generic.tpl:135 #: plugins/admin/departments/locality.tpl:70 #: plugins/admin/departments/domain.tpl:70 msgid "Tag department as an independent administrative unit" msgstr "Marcar departamento como una unidad administrativa independiente" #: plugins/admin/departments/dep-filter.xml:49 #: plugins/admin/departments/country.tpl:5 #: plugins/admin/departments/class_countryGeneric.inc:82 #: plugins/admin/departments/class_countryGeneric.inc:83 #: plugins/admin/departments/dep-list.xml:31 #: plugins/admin/departments/dep-list.xml:117 #: plugins/admin/departments/class_departmentManagement.inc:217 msgid "Country" msgstr "País" #: plugins/admin/departments/dep-filter.xml:63 #: plugins/admin/departments/dep-list.xml:39 #: plugins/admin/departments/dep-list.xml:124 #: plugins/admin/departments/class_departmentManagement.inc:229 #: plugins/admin/departments/locality.tpl:5 #: plugins/admin/departments/class_localityGeneric.inc:82 #: plugins/admin/departments/class_localityGeneric.inc:83 msgid "Locality" msgstr "Localidad" #: plugins/admin/departments/dep-filter.xml:105 #: plugins/admin/departments/dep-list.xml:15 #: plugins/admin/departments/dep-list.xml:103 #: plugins/admin/departments/class_departmentManagement.inc:193 #: plugins/admin/departments/domain.tpl:5 msgid "Domain" msgstr "Dominio" #: plugins/admin/departments/country.tpl:11 #: plugins/admin/departments/class_countryGeneric.inc:91 msgid "Country name" msgstr "Nombre del País" #: plugins/admin/departments/country.tpl:14 msgid "Name of country to create" msgstr "Nombre del país a crear" #: plugins/admin/departments/dep-list.xml:11 #, fuzzy msgid "List of structural objects" msgstr "Lista del grupo de objetos" #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "You are currently moving/renaming this department." msgstr "Está actualmente moviendo/renombrando este departamento." #: plugins/admin/departments/dep_move_confirm.tpl:6 #, fuzzy msgid "" "Modifying a departments naming attribute 'ou' or base may corrupt ACLs and " "snapshot entries for all entire objects." msgstr "" "Modificar un atributo 'ou' de un departamento puede corromper acls e " "instantaneas de todos los objetos." #: plugins/admin/departments/dep_move_confirm.tpl:9 msgid "GOsa can NOT fix this for you, yet." msgstr "GOsa no puede solucionar este problema, aún." #: plugins/admin/departments/dep_move_confirm.tpl:12 msgid "" "Before you confirm this action, ensure that everything will be as expected, " "possibly the best solution is a backup." msgstr "" "Antes de que confirme la acción, asegurese que todo sera como espera, se " "recomienda que realize un backup." #: plugins/admin/departments/organization.tpl:11 msgid "Name of organization" msgstr "Nombre de la Organización" #: plugins/admin/departments/organization.tpl:14 msgid "Name of organization to create" msgstr "Nombre de la organización a crear" #: plugins/admin/departments/organization.tpl:30 #: plugins/admin/departments/generic.tpl:30 msgid "Category for this subtree" msgstr "Categoría para este subárbol" #: plugins/admin/departments/organization.tpl:89 #: plugins/admin/departments/generic.tpl:90 msgid "State where this subtree is located" msgstr "Estado donde está este subárbol localizado" #: plugins/admin/departments/organization.tpl:97 #: plugins/admin/departments/generic.tpl:98 msgid "Location of this subtree" msgstr "Localización de este subárbol" #: plugins/admin/departments/organization.tpl:105 #: plugins/admin/departments/generic.tpl:106 msgid "Postal address of this subtree" msgstr "Dirección postal de este subárbol" #: plugins/admin/departments/organization.tpl:112 #: plugins/admin/departments/generic.tpl:113 msgid "Base telephone number of this subtree" msgstr "Número base de teléfono de este subárbol" #: plugins/admin/departments/organization.tpl:120 #: plugins/admin/departments/generic.tpl:121 msgid "Base facsimile telephone number of this subtree" msgstr "Número base de fax de este subárbol" #: plugins/admin/departments/class_department.inc:439 msgid "Cannot find an unused tag for this administrative unit!" msgstr "" "¡No se puede encontrar una etiqueta sin usar para identificar la unidad " "administrativa!" #: plugins/admin/departments/class_department.inc:507 #, php-format msgid "Tagging '%s'." msgstr "Etiquetando '%s'." #: plugins/admin/departments/class_department.inc:588 #, php-format msgid "Moving '%s' to '%s'" msgstr "Moviendo '%s' a '%s'" #: plugins/admin/departments/class_department.inc:629 #, php-format msgid "FAILED to copy %s, aborting operation" msgstr "Ha fallado a copiar %s, operación abortada" #: plugins/admin/departments/class_department.inc:660 #: plugins/admin/departments/class_department.inc:671 msgid "Departments" msgstr "Departamentos" #: plugins/admin/departments/class_department.inc:674 msgid "Department name" msgstr "Nombre de departamento" #: plugins/admin/departments/class_department.inc:682 msgid "Telephone" msgstr "Teléfono" #: plugins/admin/departments/class_department.inc:737 #, php-format msgid "Object '%s' is already tagged" msgstr "El objeto '%s' está ya marcado" #: plugins/admin/departments/class_department.inc:744 #, php-format msgid "Adding tag (%s) to object '%s'" msgstr "Añadir marca (%s) al objeto '%s'" #: plugins/admin/departments/class_department.inc:776 #, php-format msgid "Removing tag from object '%s'" msgstr "Eliminando marca del objeto '%s'" #: plugins/admin/departments/dep_iframe.tpl:1 msgid "Processing the requested operation" msgstr "Procesando la operación solicitada" #: plugins/admin/departments/dep_iframe.tpl:7 #, fuzzy msgid "" "Your browser doesn't support IFRAME HTML elements. Please use this link to " "perform the requested operation." msgstr "" "Su navegador no soporta IFRAMES, porfavor use este enlace para ejecutar la " "operación solicitada." #: plugins/admin/departments/class_domain.inc:81 #: plugins/admin/departments/class_domain.inc:82 #: plugins/admin/departments/class_departmentManagement.inc:205 #: plugins/admin/departments/class_dcObject.inc:81 #: plugins/admin/departments/class_dcObject.inc:82 msgid "Domain Component" msgstr "Componentes del dominio" #: plugins/admin/departments/class_organizationGeneric.inc:122 msgid "Organization name" msgstr "Nombre de la Organización" #: plugins/admin/departments/class_organizationGeneric.inc:132 #: plugins/generic/infoPage/class_infoPage.inc:109 msgid "Phone number" msgstr "Número de teléfono" #: plugins/admin/departments/generic.tpl:11 msgid "Name of department" msgstr "Nombre del departamento" #: plugins/admin/departments/generic.tpl:14 msgid "Name of subtree to create" msgstr "Nombre del subárbol a crear" #: plugins/admin/departments/generic.tpl:22 msgid "Descriptive text for department" msgstr "Descripción del departamento" #: plugins/admin/departments/class_departmentManagement.inc:25 #, fuzzy msgid "Directory structure" msgstr "Directorio" #: plugins/admin/departments/class_departmentManagement.inc:26 msgid "" "Manage organizations, organizational units, localities, countries and more" msgstr "" #: plugins/admin/departments/class_departmentManagement.inc:125 msgid "" "As soon as the tag operation has finished, you can scroll down to end of the " "page and press the 'Continue' button to continue with the department " "management dialog." msgstr "" "Tan pronto como la operación de etiquetado termine, puede avanzar hasta el " "final de la página y presionar el botón 'Continuar' para continuar al " "dialogo de gestión de departamento." #: plugins/admin/departments/domain.tpl:11 msgid "Domain name" msgstr "Nombre de dominio" #: plugins/admin/departments/domain.tpl:14 msgid "Name of domain to create" msgstr "Nombre del dominio a crear" #: plugins/admin/users/password.tpl:4 msgid "" "To change the user password use the fields below. The changes take effect " "immediately. Please memorize the new password, because the user wouldn't be " "able to login without it." msgstr "" "Para cambiar la contraseña del usuario use los campos a continuación. Los " "cambios tomarán efecto inmediatamente. Por favor, recuerde la nueva " "contraseña, el usuario no podrá autenticarse sin ella." #: plugins/admin/users/password.tpl:11 plugins/admin/users/password.tpl:39 #, fuzzy msgid "Password input dialog" msgstr "Cambio de contraseña" #: plugins/admin/users/password.tpl:27 plugins/admin/users/password.tpl:79 msgid "Strength" msgstr "Seguridad" #: plugins/admin/users/password.tpl:95 #, fuzzy msgid "Enforce password change on next login." msgstr "Forzar el cambio de contraseña al iniciar" #: plugins/admin/users/templatize.tpl:2 msgid "Applying a template" msgstr "Aplicando una plantilla" #: plugins/admin/users/templatize.tpl:6 msgid "" "Applying a template to several users will replace all user attributes " "defined in the template." msgstr "" "Aplicar una plantilla a usuarios reemplazará los valores de estos por los " "definidos en la plantilla." #: plugins/admin/users/templatize.tpl:13 #, fuzzy msgid "Apply user template" msgstr "Aplicar plantilla" #: plugins/admin/users/templatize.tpl:15 plugins/admin/users/template.tpl:15 #: plugins/admin/users/class_userManagement.inc:546 #: plugins/admin/users/user-list.xml:15 plugins/admin/users/user-list.xml:102 msgid "Template" msgstr "Plantilla" #: plugins/admin/users/templatize.tpl:32 msgid "No templates available!" msgstr "¡No hay plantillas disponibles!" #: plugins/admin/users/user-filter.xml:33 msgid "Show templates" msgstr "Mostrar plantillas" #: plugins/admin/users/user-filter.xml:47 msgid "Show POSIX users" msgstr "Mostrar usuarios POSIX" #: plugins/admin/users/user-filter.xml:61 #, fuzzy msgid "Show SAMBA users" msgstr "Mostrar usuarios" #: plugins/admin/users/user-filter.xml:75 #, fuzzy msgid "Show mail users" msgstr "Mostrar los usuarios de correo" #: plugins/admin/users/template.tpl:2 msgid "Creating a new user using templates" msgstr "Crear un nuevo usuario usando plantillas" #: plugins/admin/users/template.tpl:6 msgid "" "Creating a new user can be assisted by using templates. Many database " "records will be filled automatically. Choose 'none' to skip the usage of " "templates." msgstr "" "Crear un nuevo usuario es mas fácil si usa plantillas. Algunos valores en la " "base de datos serán introducidos automáticamente. Elegir 'ninguno' para " "anular el uso de plantillas." #: plugins/admin/users/template.tpl:13 msgid "User template selection dialog" msgstr "" #: plugins/admin/users/template.tpl:43 #, fuzzy msgid "Modify the uid proposal" msgstr "Editar características generales" #: plugins/admin/users/class_userManagement.inc:26 msgid "" "Manage aspects of user accounts like generic, POSIX, samba and mail settings" msgstr "" #: plugins/admin/users/class_userManagement.inc:401 msgid "You have no permission to change this users password!" msgstr "¡No tiene permisos para cambiar la contraseña de este usuario!" #: plugins/admin/users/class_userManagement.inc:613 msgid "Cannot generate a unique id, please specify it manually!" msgstr "" #: plugins/admin/users/class_userManagement.inc:802 msgid "Account locking" msgstr "Bloqueo de cuenta" #: plugins/admin/users/class_userManagement.inc:803 #, php-format msgid "" "Password method '%s' does not support locking. Account (%s) has not been " "locked!" msgstr "" "El método de contraseña '%s' no soporta bloqueo. ¡La cuenta (%s) no ha sido " "bloqueada!" #: plugins/admin/users/class_userManagement.inc:876 msgid "Unlock account" msgstr "Desbloquear cuenta" #: plugins/admin/users/class_userManagement.inc:878 msgid "Lock account" msgstr "Bloquear cuenta" #: plugins/admin/users/class_userManagement.inc:891 msgid "Edit generic properties" msgstr "Editar características generales" #: plugins/admin/users/class_userManagement.inc:906 msgid "Netatalk" msgstr "Netatalk" #: plugins/admin/users/class_userManagement.inc:907 #, fuzzy msgid "Edit Netatalk properties" msgstr "Editar características netatalk" #: plugins/admin/users/class_userManagement.inc:914 msgid "FAX" msgstr "FAX" #: plugins/admin/users/class_userManagement.inc:915 msgid "Edit FAX properties" msgstr "Editar características FAX" #: plugins/admin/users/user-list.xml:11 msgid "List of users" msgstr "Lista de usuarios" #: plugins/admin/users/user-list.xml:140 msgid "Lock users" msgstr "Bloquear usuarios" #: plugins/admin/users/user-list.xml:148 msgid "Unlock users" msgstr "Desbloquear usuarios" #: plugins/admin/users/user-list.xml:167 msgid "Apply template" msgstr "Aplicar plantilla" #: plugins/admin/users/user-list.xml:199 msgid "New user from template" msgstr "Nuevo usuario desde plantilla" #: plugins/admin/users/user-list.xml:213 msgid "Edit user" msgstr "Editar usuario" #: plugins/admin/users/user-list.xml:222 msgid "%{filter:lockLabel(userPassword)}" msgstr "%{filter:lockLabel(userPassword)}" #: plugins/admin/users/user-list.xml:245 msgid "Remove user" msgstr "Eliminar usuario" #: plugins/generic/welcome/class_welcome.inc:5 #: plugins/generic/welcome/class_welcome.inc:6 #, fuzzy msgid "Back to main menu" msgstr "Menú inicial de GOsa" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:15 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:15 msgid "Maximum" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:16 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:16 msgid "Average" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:17 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:17 msgid "Minimum" msgstr "" #: plugins/generic/statistics/chartClasses/class_actionSelectChart.inc:104 #, fuzzy msgid "Action" msgstr "Acciones" #: plugins/generic/statistics/chartClasses/class_statChart.inc:73 msgid "Systems" msgstr "Sistemas" #: plugins/generic/statistics/statistics.tpl:2 #, fuzzy msgid "Usage statistics" msgstr "Registrar estadísticas LDAP" #: plugins/generic/statistics/statistics.tpl:5 #: plugins/generic/statistics/statistics.tpl:10 msgid "" "This feature is disabled. To enable it you have to register GOsa, you can " "initiate a registration using the dash-board plugin." msgstr "" #: plugins/generic/statistics/statistics.tpl:6 #: plugins/generic/statistics/statistics.tpl:12 #, fuzzy msgid "Dash board" msgstr "Asistente de configuración de GOsa" #: plugins/generic/statistics/statistics.tpl:16 #, fuzzy msgid "" "Communication with the GOsa-backend failed. Please check the RPC " "configuration!" msgstr "" "No hay definiciones de extensión para iniciar '%s', por favor compruebe su " "archivo de configuración." #: plugins/generic/statistics/statistics.tpl:22 msgid "Send" msgstr "" #: plugins/generic/statistics/statistics.tpl:28 msgid "Generate report for" msgstr "" #: plugins/generic/statistics/statistics.tpl:56 msgid "Update" msgstr "Actualizar" #: plugins/generic/statistics/statistics.tpl:69 #: plugins/generic/statistics/statistics.tpl:78 msgid "No statistic data for given period" msgstr "" #: plugins/generic/statistics/statistics.tpl:87 #, fuzzy msgid "Select report type" msgstr "Seleccione un tipo de ACL" #: plugins/generic/statistics/class_statistics.inc:263 #, fuzzy, php-format msgid "" "You have currently %s unsubmitted statistic collection, do you want to " "transmit them now?" msgstr "" "Esta actualmente editando una entrada de base de datos.¿Quiere desestimar " "los cambios?" #: plugins/generic/dashBoard/dbChannelStatus/contents.tpl:1 #, fuzzy msgid "Channels" msgstr "Cancelar" #: plugins/generic/dashBoard/Register/register.tpl:3 #, fuzzy msgid "GOsa registration" msgstr "Configuración genérica de GOsa" #: plugins/generic/dashBoard/Register/register.tpl:7 msgid "Do you want to register GOsa and benefit from the features it brings?" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:11 msgid "I do not want to register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:17 #: plugins/generic/dashBoard/dashBoard.tpl:5 msgid "Register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:19 msgid "Additionally to the 'Annonomous' account you can:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:21 msgid "Access to 'Premium-Channels'." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:22 msgid "" "Watch the status of current plugin updates/patches and the availability of " "new plugins." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:23 msgid "Recieve newsletter, if wanted." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:24 msgid "View several usefull statistics about your GOsa installation" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:29 msgid "What information will be transmitted to the backend and maybe stored:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:31 msgid "All personal information filled in the registration form." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:32 msgid "Information about the installed plugins and their version." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:33 msgid "" "The GOsa-UUID (will be generated during the registration) and a password, to " "authenticate." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:34 msgid "" "The bugs you will report and the corresponding trace. You can select what " "information you want to send in." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:35 msgid "" "When the statistics extension is used. GOsa will transmit information about " "plugins, their usage and the amount of objects present in your ldap " "database. No sensitive data is transmitted here, just the object type, the " "action performed, cpu usage, memory usage, elapsed time..." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:69 #: plugins/generic/dashBoard/Register/register.tpl:80 #, fuzzy msgid "Registration complete" msgstr "Operación incompleta" #: plugins/generic/dashBoard/Register/register.tpl:71 #, fuzzy msgid "GOsa instance successfully registered" msgstr "Sugerencia enviada correctamente" #: plugins/generic/dashBoard/Register/register.tpl:82 #, fuzzy msgid "GOsa instance will not be registered" msgstr "La sesión no será codificada." #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:54 msgid "" "Communciation with the backend failed! Please check your internet connection!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:56 msgid "" "Authentication failed, please check combination of username and password!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:58 msgid "" "Internal server error, please try again later. If the problem persists " "contact the GOsa-Team!" msgstr "" #: plugins/generic/dashBoard/dbNotifications/contents.tpl:1 #, fuzzy msgid "Notifications" msgstr "Script de notificación" #: plugins/generic/dashBoard/dashBoard.tpl:2 msgid "This feature is only accessible for registrated instances of GOsa" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:7 msgid "" "Unfortunately the registration server cannot be reached, maybe the server is " "down for maintaince or you've no internet access!" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:13 #, fuzzy msgid "GOsa dash board" msgstr "Asistente de configuración de GOsa" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:69 msgid "Version mismatch" msgstr "" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:73 #, fuzzy msgid "Schema missing" msgstr "Configuración basada en el esquema" #: plugins/generic/dashBoard/dbPluginStatus/contents.tpl:1 #, fuzzy msgid "Plugin status" msgstr "Estado actual" #: plugins/generic/references/class_reference.inc:70 #, fuzzy msgid "Role membership" msgstr "Pertenencia a grupo" #: plugins/generic/references/class_reference.inc:76 #, fuzzy msgid "Object group membership" msgstr "Grupo de objetos genérico" #: plugins/generic/references/class_reference.inc:82 #, fuzzy msgid "Department manager" msgstr "Administración de departamento" #: plugins/generic/references/class_reference.inc:88 #, fuzzy msgid "User manager" msgstr "Nombre de Usuario" #: plugins/generic/references/contents.tpl:2 #: plugins/generic/references/contents.tpl:3 #, fuzzy msgid "Object information" msgstr "Información de conexión" #: plugins/generic/references/contents.tpl:7 msgid "Show raw object entry" msgstr "" #: plugins/generic/references/contents.tpl:18 #: plugins/generic/references/contents.tpl:20 #, fuzzy msgid "Last modification" msgstr "Identificación de Usuario" #: plugins/generic/references/contents.tpl:29 #, fuzzy msgid "Object references" msgstr "Referencias" #: plugins/generic/references/contents.tpl:45 #, fuzzy msgid "ACL trace" msgstr "Tipo de ACL" #: plugins/generic/references/class_aclResolver.inc:143 msgid "Enter another user name" msgstr "" #: plugins/generic/references/class_aclResolver.inc:193 msgid "ACLs" msgstr "" #: plugins/generic/references/class_aclResolver.inc:198 #, php-format msgid "List of effective ACLs for '%s'" msgstr "" #: plugins/generic/references/class_aclResolver.inc:199 #: plugins/generic/references/class_aclResolver.inc:203 #, fuzzy msgid "Object permissions" msgstr "Parametros de grupos" #: plugins/generic/references/class_aclResolver.inc:311 #, fuzzy msgid "create" msgstr "Crear" #: plugins/generic/references/class_aclResolver.inc:312 #, fuzzy msgid "remove" msgstr "Eliminar" #: plugins/generic/references/class_aclResolver.inc:313 #, fuzzy msgid "move" msgstr "Eliminar" #, fuzzy #~ msgid "Member selection" #~ msgstr "Parametros de grupos" #~ msgid "Use members from" #~ msgstr "Usar miembros de" #~ msgid "List message possible targets" #~ msgstr "Mostrar mensaje de posibles destinos" #~ msgid "List message recipients" #~ msgstr "Lista de recipientes de mensajes" #~ msgid "Common group" #~ msgstr "Grupo común" #~ msgid "Groups differ" #~ msgstr "Grupo diferente" #, fuzzy #~ msgid "List of items" #~ msgstr "Lista de usuarios" #, fuzzy #~ msgid "Edit item" #~ msgstr "Editar certificados" #, fuzzy #~ msgid "Remove item" #~ msgstr "Eliminar foto" #, fuzzy #~ msgid "Container" #~ msgstr "Continuar" #, fuzzy #~ msgid "Config management" #~ msgstr "Sistemas-/Administración de Configuraciones" #, fuzzy #~ msgid "Distribution" #~ msgstr "Descripción" #, fuzzy #~ msgid "Component" #~ msgstr "Componentes del dominio" #, fuzzy #~ msgid "Home phone" #~ msgstr "Número de teléfono personal" #, fuzzy #~ msgid "Organizational unit" #~ msgstr "Nombre de la Organización" #, fuzzy #~ msgid "Max" #~ msgstr "Mayo" #, fuzzy #~ msgid "Min" #~ msgstr "Inicio" #~ msgid "Welcome %s!" #~ msgstr "¡Bienvenido %s!" #, fuzzy #~ msgid "The folder %s specified for %s:%s cannot be used for reading!" #~ msgstr "" #~ "¡El comando especificado como método %s para la extensión '%s' no existe!" #, fuzzy #~ msgid "Object info" #~ msgstr "Objeto en uso" #, fuzzy #~ msgid "Acls" #~ msgstr "ACL" #, fuzzy #~ msgid "" #~ "The file '%s' specified for '%s:%s' cannot be created neither be used for " #~ "writing!" #~ msgstr "" #~ "¡El comando especificado como método %s para la extensión '%s' no existe!" #, fuzzy #~ msgid "The rdn '%s' specified for '%s:%s' is invalid!" #~ msgstr "¡'%s' comando para la extensión %s no es válido!" #, fuzzy #~ msgid "The values for 'New password' and 'Repeated new password' differ!" #~ msgstr "" #~ "No coinciden las contraseñas introducidas como 'Nueva contraseña' y " #~ "'Repetir nueva contraseña'." #, fuzzy #~ msgid "The password used as new and current are too similar!" #~ msgstr "" #~ "La contraseña actual y la introducida como nueva son demasiado parecidas." #, fuzzy #~ msgid "The password used as new is to short!" #~ msgstr "La nueva contraseña es demasiado corta." #, fuzzy #~ msgid "External password changer reported a problem: %s" #~ msgstr "" #~ "El programa externo de cambio de contraseña informo de un problema: %s." #, fuzzy #~ msgid "" #~ "Command %s specified as post modify action for plugin %s does not exist!" #~ msgstr "" #~ "¡El comando especificado como método %s para la extensión '%s' no existe!" #, fuzzy #~ msgid "" #~ "Fatal error: no class locations defined - please run '%s' to fix this" #~ msgstr "" #~ "Error fatal: no se han definido un emplazamiento para las clases - por " #~ "favor ejecute '%s' para solucionar esto" #, fuzzy #~ msgid "" #~ "Fatal error: cannot instantiate class '%s' - try running '%s' to fix this" #~ msgstr "" #~ "Error fatal: no se puede instanciar la clase '%s' - intente solucionarlo " #~ "ejecutando '%s'" #, fuzzy #~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." #~ msgstr "" #~ "FATAL: Ha habido un error conectando a LDAP. El servidor comunicó '%s'." #~ msgid "Username / UID is not unique inside the LDAP tree!" #~ msgstr "¡El nombre de usuario / UID no es único dentro del árbol LDAP!" #~ msgid "" #~ "Username / UID is not unique inside the LDAP tree. Please contact your " #~ "Administrator." #~ msgstr "" #~ "El nombre de usuario / UID no es único dentro del árbol LDAP. Por favor " #~ "contacte con su Administrador." #~ msgid "Error while adding a lock. Contact the developers!" #~ msgstr "" #~ "Ha ocurrido un problema al añadir un bloqueo. ¡Contacte con los " #~ "desarrolladores!" #~ msgid "LDAP server returned: %s" #~ msgstr "El servidor LDAP devolvio: %s" #~ msgid "" #~ "Found multiple locks for object to be locked. This should not happen - " #~ "cleaning up multiple references." #~ msgstr "" #~ "Se han encontrado varios bloqueos para un objeto que iba a ser bloqueado. " #~ "Esto no debería ocurrir - limpiando referencias multiples." #, fuzzy #~ msgid "The size limit of %d entries is exceed!" #~ msgstr "¡El límite máximo de %d entradas se ha sobrepasado!" #~ msgid "" #~ "Set the new size limit to %s and show me this message if the limit still " #~ "exceeds" #~ msgstr "" #~ "Introduzca un nuevo límite máximo a %s y se volvera a mostrar este " #~ "mensaje si se supera el límite máximo" #~ msgid "incomplete" #~ msgstr "incompleto" #~ msgid "You're going to edit the LDAP entry/entries %s" #~ msgstr "Has decidido editar las siguientes entradas LDAP %s" #~ msgid "Apply filter" #~ msgstr "Aplicar filtro" #~ msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" #~ msgstr "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" #, fuzzy #~ msgid "File '%s' could not be deleted." #~ msgstr "El archivo '%s' no puede ser eliminado." #, fuzzy #~ msgid "Cannot write to revision file!" #~ msgstr "¡No se puede escribir en el archivo de revisión!" #~ msgid "LDAP warning" #~ msgstr "Aviso LDAP" #, fuzzy #~ msgid "Cannot get schema information from server. No schema check possible!" #~ msgstr "" #~ "No puedo obtener información de esquemas del servidor. ¡No es posible " #~ "comprobar los esquemas!" #~ msgid "Used to store account specific informations." #~ msgstr "Usado para guardar información específica de la cuenta." #, fuzzy #~ msgid "" #~ "Used to lock currently edited entries to avoid multiple changes at the " #~ "same time." #~ msgstr "" #~ "Usado para bloquear entradas editadas actualmente y así evitar múltiples " #~ "cambios simultáneos." #, fuzzy #~ msgid "Missing required object class '%s'!" #~ msgstr "¡No se ha encontrado la clase de objeto GOsa '%s'!" #, fuzzy #~ msgid "Missing optional object class '%s'!" #~ msgstr "¡No se ha encontrado la clase de objeto GOsa '%s'!" #, fuzzy #~ msgid "Version mismatch for required object class '%s' (!=%s)!" #~ msgstr "" #~ "¡Las versiones de la clase de objeto opcional no coinciden '%s' (!=%s)!" #, fuzzy #~ msgid "Class(es) available" #~ msgstr "Clase(s) disponibles" #~ msgid "" #~ "You have enabled the rfc2307bis option on the 'ldap setup' step, but your " #~ "schema configuration do not support this option." #~ msgstr "" #~ "Ha activado la opción rfc2307bis en el paso 'configuración ldap', pero su " #~ "configuración de esquemas no soporta esta opción." #, fuzzy #~ msgid "" #~ "In order to use rfc2307bis conform groups the objectClass 'posixGroup' " #~ "must be AUXILIARY" #~ msgstr "" #~ "Para poder usar grupos conforme a rfc2307bis, el objectClass 'posixGroup' " #~ "debe ser AUXILIARY" #~ msgid "" #~ "Your schema is configured to support the rfc2307bis group, but you have " #~ "disabled this option on the 'ldap setup' step." #~ msgstr "" #~ "Su esquema está configurado para soportar grupos rfc2307bis, pero ha " #~ "desactivado esta opción en el paso 'configuración ldap'." #, fuzzy #~ msgid "The objectClass 'posixGroup' must be STRUCTURAL" #~ msgstr "El objectClass 'posixGroup' debe ser STRUCTURAL" #~ msgid "" #~ "Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to " #~ "exist." #~ msgstr "" #~ "El comando '%s', utilizado como POSTMODIFY para la extensión '%s', no " #~ "parece existir." #, fuzzy #~ msgid "" #~ "Cannot generate samba hash: running '%s' failed, check the " #~ "'sambaHashHook'!" #~ msgstr "" #~ "¡No se puede generar la clave samba: la ejecución de '%s' ha fallado, " #~ "compruebe el 'sambaHashHook'!" #, fuzzy #~ msgid "Cannot allocate a free ID:" #~ msgstr "No se puede asignar un identificador (ID) libre:" #, fuzzy #~ msgid "maximum tries exceeded!" #~ msgstr "¡Excedido el número de intentos máximo!" #, fuzzy #~ msgid "Cannot allocate a free ID!" #~ msgstr "¡No se puede asignar un identificador (ID) libre!" #, fuzzy #~ msgid "Surename" #~ msgstr "Apellido" #~ msgid "External password changer reported a problem: %s." #~ msgstr "" #~ "El programa externo de cambio de contraseña informo de un problema: %s." #~ msgid "Username" #~ msgstr "Nombre de Usuario" #~ msgid "" #~ "You've successfully changed your password. Remember to change all " #~ "programms configured to use it as well." #~ msgstr "" #~ "Su cambio de contraseña se ha realizado correctamente. Recuerde cambiarla " #~ "en todos los programas configurados también." #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "Uid" #~ msgstr "Uid" #~ msgid "Grant permission to owner" #~ msgstr "Garantizar permiso al propietario" #~ msgid "Password change not allowed" #~ msgstr "No se permite modificar la contraseña" #~ msgid "Preferred langage" #~ msgstr "Idioma preferido" #~ msgid "Posix settings" #~ msgstr "Caracteristicas Posix" #~ msgid "You have no permission to set your password!" #~ msgstr "¡No tiene permisos para cambiar su contraseña!" #~ msgid "" #~ "You have changed the method your password is stored in the ldap database. " #~ "For that reason you've to enter your password at this point again. GOsa " #~ "will then encode it with the selected method." #~ msgstr "" #~ "Ha cambiado el método en que su clave es guardada en la base de datos " #~ "LDAP. Por esa razón tiene que volver a introducir su contraseña de nuevo. " #~ "Gosa codificara esta con el nuevo método seleccionado." #~ msgid "Posix" #~ msgstr "Posix" #~ msgid "Edit posix properties" #~ msgstr "Editar características posix" #~ msgid "Acl" #~ msgstr "ACL" #~ msgid "winstations" #~ msgstr "Estación de trabajo Windows" #~ msgid "Sytem trust" #~ msgstr "Sistema de confianza" #, fuzzy #~ msgid "Processing" #~ msgstr "Permiso" #, fuzzy #~ msgid "Created" #~ msgstr "Crear" #, fuzzy #~ msgid "No Content" #~ msgstr "Contenidos" #, fuzzy #~ msgid "Reset Content" #~ msgstr "Contenidos" #, fuzzy #~ msgid "Partial Content" #~ msgstr "Contenidos" #, fuzzy #~ msgid "Multi-Status" #~ msgstr "Estado" #, fuzzy #~ msgid "Multiple Choice" #~ msgstr "Edición multiple" #, fuzzy #~ msgid "See Other" #~ msgstr "Eliminar usuario" #, fuzzy #~ msgid "Not Modified" #~ msgstr "No permitido" #, fuzzy #~ msgid "Use Proxy" #~ msgstr "Proxy" #, fuzzy #~ msgid "(reserviert)" #~ msgstr "Servidor" #, fuzzy #~ msgid "Not Found" #~ msgstr "No permitido" #, fuzzy #~ msgid "Method Not Allowed" #~ msgstr "No permitido" #, fuzzy #~ msgid "Proxy Authentication Required" #~ msgstr "Error de Autenticación" #, fuzzy #~ msgid "Gone" #~ msgstr "ninguno" #, fuzzy #~ msgid "Precondition Failed" #~ msgstr "Escribir archivo de configuración" #, fuzzy #~ msgid "Expectation Failed" #~ msgstr "¡La consulta LDAP ha fallado!" #, fuzzy #~ msgid "Locked" #~ msgstr "Bloquear usuarios" #, fuzzy #~ msgid "Unordered Collection" #~ msgstr "Parametros de grupos" #, fuzzy #~ msgid "Internal Server Error" #~ msgstr "error interno" #, fuzzy #~ msgid "Not Implemented" #~ msgstr "Completado" #, fuzzy #~ msgid "Gateway Time-out" #~ msgstr "Tiempo máximo de respuesta de acceso al demonio" #~ msgid "GOsa settings 3/3" #~ msgstr "Configuración GOsa 3/3" #~ msgid "Tweak some GOsa core behaviour" #~ msgstr "Ajustar el comportamiento del núcleo común de GOsa" #~ msgid "Session lifetime must be a numeric value!" #~ msgstr "¡El tiempo de vida de sesión debe ser un valor numérico!" #~ msgid "Maximum LDAP query time must be a numeric value!" #~ msgstr "¡Máximo tiempo de consulta LDAP debe ser un valor numérico!" #~ msgid "" #~ "This seems to be the first time you start GOsa - we didn't find any " #~ "configuration right now. This simple wizard intends to help you while " #~ "setting it up." #~ msgstr "" #~ "Aparentemente es la primera vez que inicia GOsa - No se ha encontrado " #~ "ninguna configuración. Este asistente intentara ayudarle mientras se " #~ "configura." #~ msgid "What will the wizard do for you?" #~ msgstr "¿Que hará este asistente para usted?" #~ msgid "Create a basic, single site configuration" #~ msgstr "Creara una configuración básica para un único sitio" #~ msgid "Tries to find problems within your PHP and LDAP setup" #~ msgstr "Intentando encontrar problemas en la configuración de LDAP y de PHP" #~ msgid "" #~ "Let you choose from a set of basic and advanced configuration switches" #~ msgstr "Le permite seleccionar un juego de opciones básicas o avanzadas" #~ msgid "Guided migration of existing LDAP trees" #~ msgstr "Migración guiada de arboles LDAP existentes" #~ msgid "What will the wizard NOT do for you?" #~ msgstr "¿Que no hará este asistente por usted?" #~ msgid "Find every possible configuration error" #~ msgstr "Encontrar cada posible error de configuración" #~ msgid "Migrate every possible LDAP setup - create backup dumps!" #~ msgstr "" #~ "Migración asistidas de cualquier configuración LDAP - ¡creando copias de " #~ "seguridad!" #~ msgid "To continue..." #~ msgstr "Para continuar..." #~ msgid "Samba settings" #~ msgstr "Parametros de samba" #~ msgid "Samba hash generator" #~ msgstr "Generador clave hash de Samba" #~ msgid "Samba SID" #~ msgstr "Samba SID" #~ msgid "RID base" #~ msgstr "Base RID" #~ msgid "Workstation container" #~ msgstr "Contenedor de la estación de trabajo" #~ msgid "Samba SID mapping" #~ msgstr "Mapeando SID de Samba" #~ msgid "Timezone" #~ msgstr "Zona de uso horario" #~ msgid "Please choose your preferred timezone here" #~ msgstr "Por favor introduzca su zona horaria preferida aquí" #~ msgid "Additional GOsa settings" #~ msgstr "Configuración avanzada de GOsa" #~ msgid "Enable Copy & Paste" #~ msgstr "Activar Copiar y Pegar" #~ msgid "Government mode" #~ msgstr "Modo gubernamental" #~ msgid "GOsa logging" #~ msgstr "Registro de GOsa" #~ msgid "Mail settings" #~ msgstr "Parámetros de correo" #~ msgid "Mail method" #~ msgstr "Método de correo" #~ msgid "Account identification attribute" #~ msgstr "Modificar atributos existentes" #~ msgid "Vacation templates" #~ msgstr "Plantillas de ausencia" #~ msgid "Use Cyrus UNIX style" #~ msgstr "Usa estilo Cyrus UNIX" #~ msgid "Snapshots / Undo" #~ msgstr "Instantaneas / Deshacer" #~ msgid "Enable snapshots" #~ msgstr "Activar instantaneas" #~ msgid "Snapshot base" #~ msgstr "Base de instantaneas" #~ msgid "GOsa settings 2/3" #~ msgstr "Configuración GOsa 2/3" #~ msgid "Customize special parameters" #~ msgstr "Personalizar parametros especiales" #~ msgid "Enable schema validation when logging in" #~ msgstr "Activar validación de esquema cuando se registre" #~ msgid "Checking for invisible departments" #~ msgstr "Comprobando departamentos invisibles" #~ msgid "Checking for invisible users" #~ msgstr "Comprobando usuarios invisibles" #~ msgid "Checking for users outside the people tree" #~ msgstr "Comprobando cuentas fuera del árbol de usuarios" #~ msgid "Checking for groups outside the groups tree" #~ msgstr "Comprobando grupos fuera del árbol de grupos" #~ msgid "Checking for windows workstations outside the winstation tree" #~ msgstr "" #~ "Comprobando estaciones de trabajo windows fuera del árbol de estaciones " #~ "de trabajo windows" #~ msgid "Checking for duplicated UID numbers" #~ msgstr "Comprobando números UID duplicados" #~ msgid "Checking for duplicate GID numbers" #~ msgstr "Comprobando números GID duplicados" #~ msgid "Checking for old style USB devices" #~ msgstr "Comprobando dispositivos por método antiguo" #~ msgid "Checking for old services that have to be migrated" #~ msgstr "Comprobando servicios antiguos que deben ser migrados" #~ msgid "Checking for old style application menus" #~ msgstr "Comprobando por menús con estilo antiguo" #~ msgid "Found %s duplicate values for attribute 'uidNumber'." #~ msgstr "Encontrado '%s' valores duplicados del atributo 'uidNumber'." #~ msgid "Found %s duplicate values for attribute 'gidNumber'." #~ msgstr "Encontrado '%s' valores duplicados del atributo 'gidNumber'." #~ msgid "" #~ "Found %s winstations outside the predefined winstation department ou '%s'." #~ msgstr "" #~ "Se encontraron '%s' estaciones de trabajo windows fuera del contenedor ou " #~ "de estaciones de trabajo windows '%s'" #~ msgid "Move" #~ msgstr "Mover" #~ msgid "Found %s user(s) outside the configured tree '%s'." #~ msgstr "Encontrados '%s' usuario(s) fuera del árbol configurado '%s'." #~ msgid "Found %s user(s) that will not be visible in GOsa." #~ msgstr "Encontrados %s usuario(s) que nos son visibles para GOsa." #~ msgid "Cannot migrate department '%s':" #~ msgstr "No puede migrar el departamento '%s':" #~ msgid "Found %s department(s) that will not be visible in GOsa." #~ msgstr "Encontrados %s departamento(s) que nos son visibles para GOsa." #~ msgid "GOsa 2.5 administrative accounts found: %s" #~ msgstr "Encontrada cuenta administrativa GOsa 2.5: %s" #~ msgid "There is no valid GOsa 2.6 administrator account inside your LDAP." #~ msgstr "No hay cuenta de administrador GOsa 2.6 en la base de datos LDAP." #~ msgid "Cannot move users to the requested department!" #~ msgstr "¡No puedo mover los usuarios al departamento especificado!" #~ msgid "to" #~ msgstr "a" #~ msgid "Updating following references too" #~ msgstr "También se actualizaran las siguientes referencias" #~ msgid "User will be moved from" #~ msgstr "El usuario serán trasladado desde" #~ msgid "Copy '%s' to '%s' failed:" #~ msgstr "Copia fallida de '%s' a '%s':" #~ msgid "There are %s devices that need to be migrated." #~ msgstr "Hay %s dispositivos que necesitan ser migrados." #~ msgid "Adding '%s' to the LDAP failed: %s" #~ msgstr "Añadiendo '%s' a LDAP ha fallado: %s" #~ msgid "Updating '%s' failed: %s" #~ msgstr "Actualizando '%s' ha fallado: %s" #~ msgid "There are %s services that need to be migrated." #~ msgstr "Hay %s serviccios que necesitan ser migrados." #~ msgid "There are %s application menus which have to be migrated." #~ msgstr "Hay %s menu de aplicaciones que necesitan ser migrados." #~ msgid "Look and feel" #~ msgstr "Temas y apariencia" #~ msgid "Theme" #~ msgstr "Tema" #~ msgid "Apache" #~ msgstr "Apache" #~ msgid "Compress output send to browser" #~ msgstr "Salida de compresión enviada al navegador" #~ msgid "People and group storage" #~ msgstr "Almacén de grupos y usuarios" #~ msgid "People DN attribute" #~ msgstr "Atributo 'dn' de los usuarios" #~ msgid "People storage subtree" #~ msgstr "Subárbol de almacenamiento para los usuarios" #~ msgid "Group storage subtree" #~ msgstr "Subárbol de almacenamiento para los grupos" #~ msgid "Include personal title in user DN" #~ msgstr "Incluir el título personal en el DN de usuario" #~ msgid "Relaxed naming policies" #~ msgstr "Reglas no estrictas de nombres" #~ msgid "Automatic UIDs" #~ msgstr "UIDs Automaticas" #~ msgid "GID / UID min id" #~ msgstr "GID / UID min id" #~ msgid "Number base for people/groups" #~ msgstr "Número base para usuarios y grupos" #~ msgid "Hook for number base" #~ msgstr "Método para el número base" #~ msgid "Password settings" #~ msgstr "Parámetros de Contraseña" #~ msgid "Password encryption algorithm" #~ msgstr "Algoritmo de codificación de contraseña" #~ msgid "Password restrictions" #~ msgstr "Restricciones de contraseña" #~ msgid "Password minimum length" #~ msgstr "Longitud mínima de la contraseña" #~ msgid "Different characters from old password" #~ msgstr "Caracteres diferentes de la contraseña anterior" #~ msgid "Password change hook" #~ msgstr "Método de cambio de contraseña" #~ msgid "Use SASL for kerberos" #~ msgstr "Usar SASL para kerberos" #~ msgid "Use account expiration" #~ msgstr "Usar caducidad de cuenta" #~ msgid "" #~ "GOsa supports several encryption types for your passwords. Normally this " #~ "is adjustable via user templates, but you can specify a default method to " #~ "be used here, too." #~ msgstr "" #~ "Gosa soporta varios tipos diferentes de codificación para las " #~ "contraseñas. Normalmente esto es seleccionable a través de las plantillas " #~ "de usuario, pero también se puede introducir un método que sera usado por " #~ "defecto." #~ msgid "" #~ "GOsa always acts as admin and manages access rights internally. This is a " #~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " #~ "For this to work, we need the admin DN and the corresponding password." #~ msgstr "" #~ "GOsa siempre actúa en modo administrador y gestiona los permisos de " #~ "acceso internamente. Esto es una solución temporal hasta que las ACI " #~ "(Access control information) estén completamente implementadas en " #~ "OPENLDAP. Para que esto funcione, necesitamos el DN del administrador y " #~ "la contraseña correspondiente." #~ msgid "" #~ "Some basic LDAP parameters are tunable and affect the locations where " #~ "GOsa saves people and groups, including the way accounts get created. " #~ "Check the values below if the fit your needs." #~ msgstr "" #~ "Algunos parámetros básicos de LDAP son modificables y afectarán las " #~ "ubicaciones donde GOSa guarda los usuarios y los grupos, incluyendo la " #~ "manera en que las cuentas son creadas. Compruebe los valores a " #~ "continuación se ajustan a sus necesidades." #~ msgid "" #~ "GOsa has modular support for several mail methods. These methods provide " #~ "interfaces to users mailboxes and general handling for quotas. You can " #~ "choose the dummy plugin to leave all your mail settings untouched." #~ msgstr "" #~ "Gosa tiene un soporte modular para diferentes métodos de correo " #~ "electrónico. Estos son herramientas de control de la cuentas de correo y " #~ "control de cuotas. Puede elegir el método 'dummy' para dejar su " #~ "configuración de correo limpia." #~ msgid "Enable primary group filter" #~ msgstr "Activar filtro de grupo primario" #~ msgid "Display summary in listings" #~ msgstr "Mostrar resumen en listados" #~ msgid "Honour administrative units" #~ msgstr "Delegar en unidades administrativas" #~ msgid "SNMP community" #~ msgstr "Comunidad SNMP" #~ msgid "Path for PPD storage" #~ msgstr "Ruta del almacén PPD" #~ msgid "SUDO role base" #~ msgstr "Rol Base SUDO" #~ msgid "Mail queue script" #~ msgstr "Script de cola de correo" #~ msgid "Enable edit locking" #~ msgstr "Activar edición de bloqueo" #~ msgid "Gosa support daemon" #~ msgstr "Demonio de soporte GOsa" #~ msgid "Login and session" #~ msgstr "Inicio y sesión" #~ msgid "Enforce register_globals to be deactivated" #~ msgstr "Forzar register_globals para que sea desactivado" #~ msgid "Warn if session is not encrypted" #~ msgstr "Avisar si la sesión no esta codificada" #~ msgid "Remember dialog filter settings" #~ msgstr "Recordad los parámetros de filtro de los diálogos" #~ msgid "Session lifetime" #~ msgstr "Duración de sesiones." #~ msgid "Debugging" #~ msgstr "Depurando" #~ msgid "Show PHP errors" #~ msgstr "Mostrar errores PHP:" #~ msgid "Maximum LDAP query time" #~ msgstr "Tiempo de consulta máxima de LDAP" #~ msgid "Debug level" #~ msgstr "Nivel de depuración" #~ msgid "Disabled" #~ msgstr "Desactivado" #~ msgid "" #~ "Move windows workstations into a valid windows workstation department" #~ msgstr "" #~ "Mover estaciones de trabajo windows a un departamento de estaciones de " #~ "trabajo windows válido" #~ msgid "" #~ "This dialog allows you to move the displayed windows workstations into a " #~ "valid department" #~ msgstr "" #~ "Este dialogo le permite mover las estaciones de trabajo windows mostradas " #~ "a un departamente válido." #~ msgid "" #~ "Be careful with this tool, there may be references pointing to this " #~ "workstations that can't be migrated." #~ msgstr "" #~ "Tenga cuidado con esta herramienta, puede haber referencias apuntando a " #~ "estas estaciones de trabajo que no pueden ser migradas." #~ msgid "" #~ "Move selected windows workstations into the following GOsa department" #~ msgstr "" #~ "Mover las estaciones de trabajo windows seleccionadas a el siguiente " #~ "departamento GOsa." #~ msgid "Move selected workstations" #~ msgstr "Mover estaciones de trabajo seleccionadas" #~ msgid "What will be done here" #~ msgstr "Que se hará aquí" #~ msgid "Move groups into configured group tree" #~ msgstr "Mover grupos en el árbol de grupos configurado" #~ msgid "" #~ "This dialog allows moving a couple of groups to the configured group " #~ "tree. Doing this may straighten your LDAP service." #~ msgstr "" #~ "Este dialogo le permite mover una pareja de grupos al árbol de grupos " #~ "configurados. Hacer esto puede reforzar su servicio LDAP." #~ msgid "" #~ "Be careful with this option! There may be references pointing to these " #~ "groups. The GOsa setup can't migrate references, so you may want to " #~ "cancel the migration in this case." #~ msgstr "" #~ "¡Tenga cuidado con esta opción! Puede haber referencias apuntando a estos " #~ "grupos. La configuración de GOsa no puede migrar referencias, en este " #~ "caso puede cancelar la migración." #~ msgid "Move selected groups into this group tree" #~ msgstr "Mover grupos seleccionados en este árbol de grupos" #~ msgid "Hide changes" #~ msgstr "Ocultar cambios" #~ msgid "Show changes" #~ msgstr "Mostrar cambios" #~ msgid "Move users into configured user tree" #~ msgstr "Mover usuarios al árbol de usuarios configurado" #~ msgid "" #~ "This dialog allows moving a couple of users to the configured user tree. " #~ "Doing this may straighten your LDAP service." #~ msgstr "" #~ "Este dialogo le permite mover una pareja de usuarios al árbol de usuarios " #~ "configurados. Hacer esto puede reforzar su servicio LDAP." #~ msgid "" #~ "Be careful with this option! There may be references pointing to these " #~ "users. The GOsa setup can't migrate references, so you may want to cancel " #~ "the migration in this case." #~ msgstr "" #~ "¡Tenga cuidado con esta opción! Puede haber referencias apuntando a estos " #~ "usuarios. La configuración de GOsa no puede migrar referencias, por lo " #~ "que puede querer cancelar la migración." #~ msgid "Move selected users into this people tree" #~ msgstr "Mover usuarios seleccionados al árbol de usuarios" #~ msgid "Migrate GOsa 2.5 administrative accounts" #~ msgstr "Migrar cuentas administrativas GOsa versión 2.5" #~ msgid "" #~ "This dialog allows the migration of GOsa 2.5 admin accounts into GOsa 2.6 " #~ "useable accounts." #~ msgstr "" #~ "Este dialogo le permite migrar cuentas administrativas 2.5 a cuentas " #~ "utilizables en la versión 2.6" #~ msgid "Abort" #~ msgstr "Cancelar" #~ msgid "" #~ "The listed departments are currently invisible in the GOsa user " #~ "interface. If you want to change this for a couple of entries, select " #~ "them and use the migrate button below." #~ msgstr "" #~ "Actualmente los siguientes departamentos son invisibles en el interfaz de " #~ "GOsa. Si quiere modificar esto para algunas de las entradas, " #~ "seleccionelas y pulse el botón migrar." #~ msgid "" #~ "If you want to know what will be done when migrating the selected " #~ "entries, use the 'Show changes' button to see the LDIF." #~ msgstr "" #~ "Si quiere saber que se hará cuando se migren las entradas seleccionadas " #~ "use el botón 'Mostrar cambios' para ver el LDIF." #~ msgid "" #~ "The listed users are currently invisible in the GOsa user interface. If " #~ "you want to change this for a couple of users, just select them and use " #~ "the 'Migrate' button below." #~ msgstr "" #~ "Actualmente los siguientes usuarios son invisibles en el interfaz de " #~ "GOsa. Si quiere modificar esto para algunos de los usuarios, " #~ "seleccionelos y pulse el botón migrar." #~ msgid "" #~ "The listed devices are currently invisible in the GOsa interface. If you " #~ "want to change this for a couple of devices, just select them and use the " #~ "'Migrate' button below." #~ msgstr "" #~ "Actualmente los siguientes dispositivos son invisibles en el interfaz de " #~ "GOsa. Si quiere modificar esto para algunas de los dispositivos " #~ "seleccionelos y pulse el botón migrar." #~ msgid "Refresh" #~ msgstr "Refresco" #~ msgid "" #~ "The listed services are currently invalid for the GOsa version you are " #~ "going to install. If you want to update a couple of service, just select " #~ "them and use the 'Migrate' button below." #~ msgstr "" #~ "Actualmente los siguientes servicios son invisibles en el interfaz de " #~ "GOsa. Si quiere modificar esto para algunos de los servicios, " #~ "seleccionelos y pulse el botón migrar." #~ msgid "" #~ "The listed menus are currently invisible in the GOsa interface. If you " #~ "want to change this for a couple of devices, just select them and use the " #~ "'Migrate' button below." #~ msgstr "" #~ "Actualmente los siguientes menus son invisibles en el interfaz de GOsa. " #~ "Si quiere modificar esto para algunas de las entradas, seleccionelas y " #~ "pulse el botón migrar." #~ msgid "Installation" #~ msgstr "Instalación" #~ msgid "GOsa settings 1/3" #~ msgstr "Configuración GOsa 1/3" #~ msgid "The specified value for '%s' must be a numeric value" #~ msgstr "El valor especificado para '%s' debe ser una valor numérico" #~ msgid "Don't add a trailing comma to '%s'." #~ msgstr "No añada una coma final a '%s'" #~ msgid "People storage ou" #~ msgstr "OU de almacenamiento de Usuarios" #~ msgid "Group storage ou" #~ msgstr "OU de almacenamiento de Grupos" #~ msgid "Uid base must be numeric" #~ msgstr "El Uid base debe ser un valor numérico" #~ msgid "The given password minimum length is not numeric." #~ msgstr "" #~ "El valor indicado como longitud mínima de la contraseña no es un valor " #~ "numérico." #~ msgid "The given password differ value is not numeric." #~ msgstr "" #~ "El valor indicado como diferencias mínimas de la contraseña no es un " #~ "valor numérico." #~ msgid "Available members" #~ msgstr "Miembros disponibles" #~ msgid "GOsa login screen" #~ msgstr "Pantalla de inicio de GOsa" #~ msgid "Login screen" #~ msgstr "Pantalla de inicio" #~ msgid "" #~ "Please use your username and your password to log into the site " #~ "administration system." #~ msgstr "" #~ "Por favor use su nombre de usuario y contraseña para iniciar sesión en el " #~ "sistema de administración." #~ msgid "Sign in" #~ msgstr "Entrando" #~ msgid "" #~ "This may be used by several groups. Please double check if your really " #~ "want to do this since there is no way for GOsa to get your data back." #~ msgstr "" #~ "Esta puede ser usada por varios grupos. Si está seguro de lo que quiere " #~ "hacer pulse dos veces, ya que no hay manera de que GOsa recupere " #~ "posteriormente la información." #~ msgid "" #~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." #~ msgstr "" #~ "Entonces, si esta seguro, presione Eliminar para continuar o " #~ "Cancelar para Abortar." #~ msgid "Help" #~ msgstr "Ayuda" #~ msgid "Sign out" #~ msgstr "Salir" #~ msgid "Signed in:" #~ msgstr "Entrando" #~ msgid "Success" #~ msgstr "Correcto" #~ msgid "New password repeated" #~ msgstr "Repita la nueva contraseña" #~ msgid "Change" #~ msgstr "Cambiar" #~ msgid "UNIX" #~ msgstr "UNIX" #~ msgid "FTP" #~ msgstr "FTP" #~ msgid "Thin Client" #~ msgstr "Cliente ligero" #~ msgid "Object name" #~ msgstr "Nombre de objeto" #~ msgid "This object has no relationship to other objects." #~ msgstr "Este objeto no tiene relación con otros objetos" #~ msgid "" #~ "Changing the password affects your authentification on mail, proxy, samba " #~ "and unix services." #~ msgstr "" #~ "Cambiar la contraseña modifica la autenticación del usuario para el " #~ "correo, proxy, samba y los servicios unix." #~ msgid "" #~ "(Some types of certificates are currently not supported and may be " #~ "displayed as 'invalid'.)" #~ msgstr "" #~ "(Algunos tipos de certificados no están soportados y pueden ser mostrados " #~ "como no validos.)" #~ msgid "Personal picture" #~ msgstr "Foto" #~ msgid "In all groups" #~ msgstr "en todos los grupos" #~ msgid "Not in all groups" #~ msgstr "no en todos los grupos" #~ msgid "! unknown UID" #~ msgstr "¡UID desconocido!" #~ msgid "" #~ "Search returned too many results. Not displaying more than %s entries!" #~ msgstr "" #~ "La busqueda ha devuelto demasiados reultados.¡No se muestran mas de %s " #~ "entradas!" #~ msgid "All categories" #~ msgstr "Todas las categorías" #~ msgid "All objects in current subtree" #~ msgstr "Todos los objetos en el subárbol actual" #~ msgid "Startup" #~ msgstr "Inicio" #~ msgid "FAI summary" #~ msgstr "Sumario FAI" #~ msgid "Cannot bind to LDAP. Please contact the system administrator." #~ msgstr "" #~ "No se puede conectar a LDAP: Por favor consulte con el administrador de " #~ "sistemas." #~ msgid "The mcrypt module was not found. Please install php5-mcrypt." #~ msgstr "" #~ "El módulo mcrypt no ha sido encontrado. Por favor instale php-mcrypt." #~ msgid "Password reset" #~ msgstr "Reintroducir contraseña" #~ msgid "Up" #~ msgstr "Arriba" #~ msgid "Down" #~ msgstr "Abajo" #~ msgid "" #~ "The timezone setting '%s' in your gosa.conf is not valid. Cannot " #~ "calculate correct timezone offset." #~ msgstr "" #~ "El parámetro de zona horaria '%s' en gosa.conf no es válido. No se puede " #~ "calcular una compensación correcta para la zona horaria." #~ msgid "Select to list objects of type '%s'." #~ msgstr "Seleccione para mostrar objetos de tipo '%s'." #~ msgid "Select to list objects containig '%s'." #~ msgstr "Seleccione para mostrar objetos conteniendo '%s'." #~ msgid "Select to list objects that have '%s' enabled" #~ msgstr "Seleccione para mostrar objetos que tengan '%s' activado" #~ msgid "Select to search within subtrees" #~ msgstr "Seleccione para buscar dentro de subárboles" #~ msgid "in" #~ msgstr "en" #~ msgid "on line" #~ msgstr "En linea" #~ msgid "Contains ACLs for these objects: %s" #~ msgstr "Tiene ACLs para estos objetos: %s" #~ msgid "Role: %s" #~ msgstr "Rol: %s" #~ msgid "Go up one department" #~ msgstr "Subir un departamento" #~ msgid "Go to users department" #~ msgstr "Ir al departamento de usuarios" #~ msgid "Remove snapshot" #~ msgstr "Eliminar instantanea" #~ msgid "Send bug report to the GOsa Team" #~ msgstr "Enviar informe de errores al equipo de desarrollo de GOsa" #~ msgid "Toggle information" #~ msgstr "Modificar información" #~ msgid "All objects in this category" #~ msgstr "Todos los objetos en esta categoría" #~ msgid "" #~ "The object has changed since opened in GOsa. All changes that may be done " #~ "by others get lost if you save this entry!" #~ msgstr "" #~ "Este objeto ha cambiado desde que ha sido abierto en GOsa. ¡Todos los " #~ "cambios realizados por otros se perderán si graba esta entrada!" #~ msgid "Changing ACL dn" #~ msgstr "Modificando ACL dn" #~ msgid "from" #~ msgstr "desde" #~ msgid "Restore" #~ msgstr "Recuperar" #~ msgid "cut" #~ msgstr "mover" #~ msgid "User information is not unique accross the configured LDAP trees!" #~ msgstr "" #~ "¡La información del usuario no es única dentro del árbol LDAP selecionado!" #~ msgid "Your LDAP setup contains old schema definitions:" #~ msgstr "Su configuración LDAP tiene definiciones de esquemas antiguos:" #~ msgid "" #~ "FATAL: Register globals is on. GOsa will refuse to login unless this is " #~ "fixed by an administrator." #~ msgstr "" #~ "FATAL: 'Register globals' está activado. No se permitirá ninguna acceso " #~ "hasta que esto sea solucionado por un administrador." #, fuzzy #~ msgid "Prpperties" #~ msgstr "Propiedades" #~ msgid "Old password" #~ msgstr "Contraseña antigua" #~ msgid "Verify password" #~ msgstr "Confirmar contraseña" #~ msgid "Session conflict detected" #~ msgstr "Detectado conflicto de sesiones." #~ msgid "" #~ "Probably there's another active instance of your session. Multiple window " #~ "operation is technical not possible and heavily depends on the browser " #~ "you're using. Usage of different browsers at a time (i.e. IE and Mozilla) " #~ "is possible. Pressing the Logout button will close this session." #~ msgstr "" #~ "Probablemente exista otra instancia activa de sus sesión. Operaciones en " #~ "ventanas múltiples no son técnicamente posibles y dependen del navegador " #~ "utilizado. El uso de diferentes navegadores a la vez (por ejemplo: IE y " #~ "Mozilla) es posible. Presione el botón 'Salir' para cerrar esta sesión." #~ msgid "" #~ "Ignoring this message will change/destroy the data you're currently " #~ "editing, so please close multiple windows and log in again." #~ msgstr "" #~ "Ignorando este mensaje cambiara/eliminara los datos que esta actualmente " #~ "editando. Por favor, cierre las otras ventanas y vuelva a entrar." #~ msgid "External password changer reported a problem: " #~ msgstr "" #~ "El programa externo de cambio de contraseña informo de un problema: " #~ msgid "Show department" #~ msgstr "Mostrar departamento" #~ msgid "Show groups" #~ msgstr "Mostrar grupos" #~ msgid "Show server" #~ msgstr "Mostrar servidor" #~ msgid "Show workstation" #~ msgstr "Mostrar estación de trabajo" #~ msgid "Show terminal" #~ msgstr "Mostrar terminal" #~ msgid "Show printer" #~ msgstr "Mostrar impresora" #~ msgid "Show phone" #~ msgstr "Mostrar teléfono" #, fuzzy #~ msgid "Filter options" #~ msgstr "Eliminar opciones" #~ msgid "" #~ "Please double check if you really want to do this since there is no way " #~ "for GOsa to get your data back." #~ msgstr "" #~ "Si está seguro de lo que quiere hacer pulse dos veces, ya que no hay " #~ "forma de que GOsa pueda recuperar posteriormente esa información" #~ msgid "Manage object groups" #~ msgstr "Gestionar grupos de objetos" #~ msgid "nested groups" #~ msgstr "grupos anidados" #~ msgid "application groups" #~ msgstr "grupos de aplicacion" #~ msgid "department groups" #~ msgstr "grupos de departamento" #~ msgid "server groups" #~ msgstr "grupos de servidor" #~ msgid "workstation groups" #~ msgstr "grupos de estación de trabajo" #~ msgid "terminal groups" #~ msgstr "grupos de terminales" #~ msgid "printer groups" #~ msgstr "grupos de impresoras" #~ msgid "phone groups" #~ msgstr "grupos de teléfonos" #~ msgid "Select objects to add" #~ msgstr "Seleccione los objetos a añadir" #~ msgid "Filters" #~ msgstr "Filtros" #~ msgid "Display objects of department" #~ msgstr "Mostrar objetos del departamento" #~ msgid "Choose the department the search will be based on" #~ msgstr "Escoja el departamento base de la búsqueda" #~ msgid "Display objects matching" #~ msgstr "Mostrar objetos que coincidan" #~ msgid "Regular expression for matching object names" #~ msgstr "Expresiones regulares para buscar nombre de objetos" #~ msgid "Select systems to add" #~ msgstr "Seleccione los sistemas a añadir" #~ msgid "Display systems of department" #~ msgstr "Mostrar los sistemas del departamento" #~ msgid "Display systems matching" #~ msgstr "Mostrar sistemas que coincidan con" #~ msgid "Regular expression for matching addresses" #~ msgstr "Expresiones regulares para buscar direcciones" #~ msgid "" #~ "This may be a primary user group. Please double check if you really want " #~ "to do this since there is no way for GOsa to get your data back." #~ msgstr "" #~ "Este puede ser un grupo primario. Si está seguro de lo que quiere hacer " #~ "pulse dos veces, dado que GOsa no tiene manera de recuperar esta " #~ "información." #~ msgid "Show samba groups" #~ msgstr "Mostrar grupos de samba" #~ msgid "Show mail groups" #~ msgstr "Mostrar grupos de correo" #~ msgid "Group administration" #~ msgstr "Administración de grupo" #~ msgid "" #~ "This includes all account data, system access rules, imap settings, etc. " #~ "for this user. Please double check if your really want to do this since " #~ "there is no way for GOsa to get your data back." #~ msgstr "" #~ "Esto incluye toda las información de cuentas, reglas de acceso al " #~ "sistema, configuración IMAP, etc. de este usuario. Si está seguro de lo " #~ "que quiere hacer pulse dos veces, ya que no hay manera de que GOsa " #~ "recupere posteriormente la información." #~ msgid "Manage users" #~ msgstr "Gestión de usuarios" #~ msgid "" #~ "This includes 'all' accounts, systems, etc. in this subtree. Please " #~ "double check if your really want to do this since there is no way for " #~ "GOsa to get your data back." #~ msgstr "" #~ "Esto incluye 'todas' las cuentas, sistemas, etc. en este subárbol. Por " #~ "favor pulse dos veces si quiere realmente hacer esto, ya que no hay forma " #~ "de que GOsa recupere la información posteriormente." #~ msgid "" #~ "Best thing to do before performing this action would be to save the " #~ "current contents of your LDAP tree in a file. So - if you've done so - " #~ "press 'Delete' to continue or 'Cancel' to abort." #~ msgstr "" #~ "La mejor opción antes de ejecutar esta acción es haber grabado el " #~ "contenido actual de su árbol LDAP en un fichero. Entonces - Y solo " #~ "entonces - presione 'Eliminar' para continuar o 'Cancelar' para abortar." #~ msgid "List of departments" #~ msgstr "Lista de Departamentos" #~ msgid "Manage Departments" #~ msgstr "Gestionar Departamentos" #~ msgid "Show access control lists" #~ msgstr "Mostrar listas de control de acceso" #~ msgid "Show roles" #~ msgstr "Mostrar roles" #~ msgid "Bug submitter" #~ msgstr "Envío de fallos" #~ msgid "" #~ "Bugsubmitter" #~ msgstr "" #~ "Envío incidencias" #~ msgid "Show servers" #~ msgstr "Mostrar servidores" #~ msgid "Show workstations" #~ msgstr "Mostrar estaciones de trabajo" #~ msgid "Show terminals" #~ msgstr "Mostrar terminales" #, fuzzy #~ msgid "List navigation" #~ msgstr "Estación de trabajo Windows" #, fuzzy #~ msgid "Group selection filter" #~ msgstr "Parametros de grupos" #, fuzzy #~ msgid "Posix extension settings" #~ msgstr "Caracteristicas Posix" #, fuzzy #~ msgid "Account accessibility" #~ msgstr "Se puede escribir en la configuración" #~ msgid "Go to root department" #~ msgstr "Ir al departamento raíz" #~ msgid "Home" #~ msgstr "Inicio" #~ msgid "" #~ "This is the GOsa main menu. You can select your tasks from the menu on " #~ "the left, or by choosing one of the pictograms below. All changes apply " #~ "directly to your companies LDAP server." #~ msgstr "" #~ "Esta es la pantalla principal de GOsa. Puede seleccionar las tareas del " #~ "menú a la izquierda, o seleccionando entre los iconos siguientes. Todos " #~ "los cambios se aplican directamente sobre los servidores LDAP de su " #~ "compañía." #~ msgid "" #~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " #~ "get back to the pictogram view." #~ msgstr "" #~ "Para cerrar la conexión use Cerrar en la parte superior izquierda " #~ "y para volver a la vista de iconos use Principal" #~ msgid "Show functional users" #~ msgstr "Mostrar usuarios funcionales" #~ msgid "Show Samba users" #~ msgstr "Mostrar los usuarios samba" #~ msgid "Choose subtree to place user in" #~ msgstr "Elija el subárbol donde colocar al usuario" #~ msgid "Select a base" #~ msgstr "Seleccione una base" #~ msgid "Generic user information" #~ msgstr "Información genérica del usuario" #~ msgid "Account" #~ msgstr "Cuenta" #~ msgid "Select groups to add" #~ msgstr "Seleccione grupos a añadir" #~ msgid "Display groups of department" #~ msgstr "Mostrar grupos de departamentos" #~ msgid "Display groups matching" #~ msgstr "Mostrar grupos coincidentes" #~ msgid "Regular expression for matching group names" #~ msgstr "Expresión regular para buscar nombres de grupos" #~ msgid "Display groups of user" #~ msgstr "Mostrar grupos de usuarios" #~ msgid "User name of which groups are shown" #~ msgstr "Nombre de usuario de los grupos que se muestran" #~ msgid "Inconsistent DN encoding detected: '%s'" #~ msgstr "Se ha detectado una codificación de DN inconsistente: '%s'" #~ msgid "Choose a base" #~ msgstr "Elija una base" #~ msgid "Choose subtree to place group in" #~ msgstr "Elija el subárbol donde colocar el grupo" #~ msgid "Choose subtree to place department in" #~ msgstr "Elija subárbol para colocar el departamento" #~ msgid "Show %s" #~ msgstr "Mostrar %s" #~ msgid "people" #~ msgstr "usuarios" #~ msgid "Select users to add" #~ msgstr "Seleccione usuarios a añadir" #~ msgid "Select to see servers" #~ msgstr "Seleccione para ver los servidores" #~ msgid "Search within subtree" #~ msgstr "Buscar dentro del subárbol" #~ msgid "Display users of department" #~ msgstr "Mostrar usuarios del departamento" #~ msgid "Display users matching" #~ msgstr "Mostrar usuarios que coincidan con" #~ msgid "Regular expression for matching user names" #~ msgstr "Expresiones regulares para buscar nombre de usuarios" #, fuzzy #~ msgid "givenname" #~ msgstr "Nombre de pila" #, fuzzy #~ msgid "surename" #~ msgstr "Apellido" #~ msgid "" #~ "Step in the prefered tree and click save to use the current subtree as " #~ "base. Or click the image at the end of each entry." #~ msgstr "" #~ "Entrar en el árbol preferido y pulse grabar para usar el subárbol actual " #~ "como base. O pulse en la imagen al final de cada entrada" #~ msgid "Filter entries with this syntax" #~ msgstr "Filtrar entradas con esta sintaxis" #~ msgid "MySQL error" #~ msgstr "Error MySQL" #~ msgid "Logging to MySQL database will be disabled for server '%s'!" #~ msgstr "" #~ "¡La escritura del registro en la base de datos MySQL se desactivará para " #~ "el servidor '%s'!" #~ msgid "MySQL logging" #~ msgstr "Escritura del registro en MySQL" #~ msgid "Cannot add location to the database!" #~ msgstr "¡No se puede añadir la ubicación a la base de datos!" #~ msgid "Submit department" #~ msgstr "Enviar departamento" #~ msgid "edit" #~ msgstr "editar" #~ msgid "delete" #~ msgstr "eliminar" #~ msgid "Number of listed object groups" #~ msgstr "Número de grupo de objetos listados" #~ msgid "Number of listed departments" #~ msgstr "Número de departamentos" #~ msgid "Select to see groups that are primary groups of users" #~ msgstr "Seleccione para ver que grupos son grupos primarios de usuarios" #~ msgid "samba groups mappings" #~ msgstr "Mapeos de grupos de samba" #~ msgid "application settings" #~ msgstr "parámetros de aplicaciones" #~ msgid "mail settings" #~ msgstr "parámetros de correo" #~ msgid "Select to see normal groups that have only functional aspects" #~ msgstr "Seleccione para ver que grupos tienen solo aspectos funcionales" #~ msgid "functional groups" #~ msgstr "grupos funcionales" #~ msgid "Number of listed groups" #~ msgstr "Número de grupos mostrados" #~ msgid "Manage POSIX groups" #~ msgstr "Gestionar grupos POSIX" #~ msgid "group" #~ msgstr "grupo" #~ msgid "User administration" #~ msgstr "Administración de Usuario" #~ msgid "templates" #~ msgstr "plantillas" #~ msgid "functional users" #~ msgstr "usuarios funcionales" #~ msgid "POSIX users" #~ msgstr "Usuarios POSIX" #~ msgid "samba users" #~ msgstr "Usuarios samba" #~ msgid "proxy users" #~ msgstr "usuarios de proxy" #~ msgid "GOsa" #~ msgstr "GOsa" #~ msgid "Edit UNIX properties" #~ msgstr "Editar características UNIX" #~ msgid "Edit fax properies" #~ msgstr "Editar características de Fax" #~ msgid "Create user with this template" #~ msgstr "Crear usuario con esta plantilla" #~ msgid "password" #~ msgstr "contraseña" #~ msgid "Delete user" #~ msgstr "Eliminar usuario" #~ msgid "Number of listed users" #~ msgstr "Número de usuarios mostrados" #~ msgid "You have no permission to modify object '%s'!" #~ msgstr "¡No tiene permisos para modificar el objeto '%s'!" #~ msgid "You have no permission to use this template!" #~ msgstr "¡No tiene permisos para usar esta plantilla!" #~ msgid "You have no permission to change the lock status for this user!" #~ msgstr "" #~ "¡No tiene permisos para cambiar el estado de bloqueo de este usuario!" #~ msgid "Name / Department" #~ msgstr "Nombre / Departamento" #~ msgid "Regular expression for matching department names" #~ msgstr "Expresión regular para buscar el nombre del departamento" #~ msgid "" #~ "As soon as the move operation has finished, you can scroll down to end of " #~ "the page and press the 'Continue' button to continue with the department " #~ "management dialog." #~ msgstr "" #~ "Tan pronto como la termine la operación mover, podrá bajar al final de la " #~ "página y presionar el botón 'Continuar' para continuar con el asistente " #~ "de administración de departamento." #~ msgid "" #~ "This includes all system and setup informations. Please double check if " #~ "your really want to do this since there is no way for GOsa to get your " #~ "data back." #~ msgstr "" #~ "Esto incluye todos los sistemas e información de configuración. Por favor " #~ "pulse dos veces si quiere realmente hacer esto, ya que no hay forma de " #~ "que GOsa recupere la información posteriormente." #~ msgid "ACL role" #~ msgstr "Roles ACL" #~ msgid "Summary" #~ msgstr "Sumario" #~ msgid "Display acls matching" #~ msgstr "Mostrar las acl que coincidan con" #~ msgid "Edit acl role" #~ msgstr "Editar rol" #~ msgid "Edit acl" #~ msgstr "Editar acl" #~ msgid "Delete acl" #~ msgstr "Eliminar acl" #~ msgid "Gender" #~ msgstr "Sexo" #~ msgid "Logging options" #~ msgstr "Opciones de registro de eventos" #~ msgid "Syslog" #~ msgstr "Syslog" #~ msgid "ACL takes effect for all users" #~ msgstr "La ACL tendrá efecto para todos los usuarios" #, fuzzy #~ msgid "Non common group" #~ msgstr "no en todos los grupos" #~ msgid "Enable DNS extension" #~ msgstr "Activar extensión DNS" #~ msgid "Enable mime type management" #~ msgstr "Activar gestión tipos mime" #~ msgid "Enable FAI release management" #~ msgstr "Activar gestión de versiones FAI" #~ msgid "Enable user netatalk plugin" #~ msgstr "Activar extensión de usuario Netatalk" #, fuzzy #~ msgid "Missing GOsa class %s." #~ msgstr "¡No se ha encontrado la clase de objeto opcional '%s'!" #, fuzzy #~ msgid "Password locking" #~ msgstr "Cambio de contraseña" #, fuzzy #~ msgid "Create new" #~ msgstr "Crear" #~ msgid "" #~ "This account has %s features settings. To disable them, you'll need to " #~ "add the %s settings first!" #~ msgstr "" #~ "Esta cuenta tiene las características %s activadas. ¡Para desactivarlas, " #~ "necesita añadir las caracteristicas %s primero!" #, fuzzy #~ msgid "" #~ "GOsa requires this module to show printers that are not defined within " #~ "the LDAP." #~ msgstr "" #~ "MySQL es necesario para el acceso a algunas bases de datos soportadas." #~ msgid "Role name" #~ msgstr "Nombre del Rol" #, fuzzy #~ msgid "Override sudo role ou" #~ msgstr "¡id desconocido!" #, fuzzy #~ msgid "Select this base" #~ msgstr "Eliminar esta entrada" #, fuzzy #~ msgid "add" #~ msgstr "Añadir" #~ msgid "You're about to delete the whole LDAP subtree placed under '%s'." #~ msgstr "Ha decidido eliminar todo el subárbol LDAP colocado debajo de '%s'." #, fuzzy #~ msgid "Delete users" #~ msgstr "Eliminar usuario" #, fuzzy #~ msgid "Day" #~ msgstr "Mayo" #, fuzzy #~ msgid "Month" #~ msgstr "mes" #, fuzzy #~ msgid "Password end" #~ msgstr "Contraseña" #, fuzzy #~ msgid "Missing parameters!" #~ msgstr "Parámetro de la aplicación" #, fuzzy #~ msgid "You have no permission to create LDAP dumps!" #~ msgstr "No tiene permisos para eliminar este departamento." #, fuzzy #~ msgid "Error in ivbb parameter!" #~ msgstr "Parametros del Kernel" #, fuzzy #~ msgid "You have no permission to do LDAP exports!" #~ msgstr "No tiene permisos para eliminar este departamento." #, fuzzy #~ msgid "List of sudo roles" #~ msgstr "Lista de usuarios" #, fuzzy #~ msgid "Regular expression for matching role names" #~ msgstr "Expresión regular para buscar nombres de grupos" #, fuzzy #~ msgid "Regular expression for matching role member names" #~ msgstr "Expresión regular para buscar nombres de grupos" #, fuzzy #~ msgid "Number of listed roles" #~ msgstr "Eliminar grupo seleccionado" #, fuzzy #~ msgid "Sudo" #~ msgstr "Junio" #, fuzzy #~ msgid "Manage sudo roles" #~ msgstr "Usuarios del dominio" #, fuzzy #~ msgid "sudo role" #~ msgstr "¡id desconocido!" #, fuzzy #~ msgid "string" #~ msgstr "Aviso" #, fuzzy #~ msgid "integer" #~ msgstr "Impresora" #, fuzzy #~ msgid "Invalid" #~ msgstr "no válido" #, fuzzy #~ msgid "Run as user" #~ msgstr "Usuarios del dominio" #, fuzzy #~ msgid "Sudo role administration" #~ msgstr "Administración de grupo" #, fuzzy #~ msgid "Enable system deployment" #~ msgstr "Administración sistema de correo" #~ msgid "" #~ "GOsa requires functionality that is not available (or buggy) in older PHP " #~ "versions. Please update to a supported version." #~ msgstr "" #~ "GOsa necesita funcionalidades que no son disponibles (o son defectuosas) " #~ "en versiones antiguas de PHP. Por favor actualice a una versión soportada." #~ msgid "Checking for LDAP support" #~ msgstr "Comprobando el soporte de LDAP" #~ msgid "" #~ "This is the main extension used by GOsa and therefore really required." #~ msgstr "" #~ "Esta es la extensión principalmente usada por GOsa y por lo tanto " #~ "obligatoria." #, fuzzy #~ msgid "" #~ "The ldap extension (php5-ldap) is required to communicate with your LDAP " #~ "server." #~ msgstr "" #~ "La extensión LDAP (php4-ldap/php5-ldap) es necesaria para comunicarse con " #~ "el servidor LDAP." #~ msgid "Checking for gettext support" #~ msgstr "Comprobando soporte gettext" #~ msgid "Gettext support is required for internationalization." #~ msgstr "El soporte de gettext es necesario para soportar múltiples idiomas." #~ msgid "Please make sure that the extension is activated." #~ msgstr "Por favor asegúrese que esta extensión está activada." #~ msgid "Checking for iconv support" #~ msgstr "Comprobando soporte iconv" #~ msgid "" #~ "This module is used by GOsa to convert samba munged dial informations and " #~ "is therefore required. " #~ msgstr "" #~ "Este módulo es usado por GOsa para convertir munged dial de samba y es " #~ "por lo tanto necesario." #~ msgid "Checking for mhash support" #~ msgstr "Comprobando soporte mhash" #, fuzzy #~ msgid "" #~ "The mhash module for PHP 5 is not available.Please install php5-mhash." #~ msgstr "" #~ "El módulo mhash para PHP 4/5 no está disponible. Por favor instale php4-" #~ "mhash/php5-mhash." #~ msgid "Checking for IMAP support" #~ msgstr "Comprobando soporte IMAP" #~ msgid "" #~ "The IMAP module is needed to communicate with the IMAP server. GOsa " #~ "retrieves status information, creates and deletes mail users, etc." #~ msgstr "" #~ "El módulo IMAP es necesario para comunicar con un servidor IMAP, GOsa " #~ "recupera información de estado, crea y elimina usuarios de correo, etc." #, fuzzy #~ msgid "" #~ "This module is used to communicate with your mail server. Please install " #~ "php5-imap." #~ msgstr "" #~ "Este módulo se necesita para comunicarse con el servidor de correo. Por " #~ "favor instale php4-imap/php5-imap." #, fuzzy #~ msgid "Checking for multi byte support" #~ msgstr "Comprobando soporte gettext" #~ msgid "Checking for getacl in IMAP implementation" #~ msgstr "Comprobando getacl en la implementación de IMAP" #~ msgid "" #~ "The getacl support is needed to handle shared folder permissions. Old " #~ "IMAP extensions are not capable of reading acl's. You need a recent PHP " #~ "version to use this feature." #~ msgstr "" #~ "El soporte de getacl es necesario para manejar permisos en carpetas " #~ "compartidas. Versiones antiguas de la extensión IMAP no son capaces de " #~ "leer acls. Necesita una versión reciente de PHP para hacer uso de esta " #~ "característica." #~ msgid "Checking for MySQL support" #~ msgstr "Comprobando soporte MySQL" #, fuzzy #~ msgid "" #~ "This module is required to communicate with database servers (GOfax, " #~ "asterisk, GLPI, etc.). Please install php5-mysql" #~ msgstr "" #~ "Este módulo es necesario para comunicarse con servicios de bases de datos " #~ "(GOfax, asterisk, GLPI, etc.). Por favor instale php4-mysql/php5-mysql" #~ msgid "Checking for kadm5 support" #~ msgstr "Comprobando soporte kadm5" #~ msgid "" #~ "Managing users in kerberos requires the kadm5 module which is " #~ "downloadable via PEAR network." #~ msgstr "" #~ "Administrar cuentas en kerberos necesita el módulo kadm5, el cual se " #~ "puede descargar desde la red PEAR" #~ msgid "" #~ "This module is required to manage user in kerberos, it is downloadable " #~ "via PEAR network" #~ msgstr "" #~ "Este módulo es necesario para manejar cuentas kerberos, se puede " #~ "descargar a través de la red PEAR" #~ msgid "Checking for SNMP support" #~ msgstr "Comprobando soporte snmp" #~ msgid "" #~ "The simple network management protocol is needed to get status " #~ "information from clients." #~ msgstr "" #~ "El protocolo de gestión simple de red es necesario para obtener " #~ "información de los clientes." #, fuzzy #~ msgid "" #~ "This module is required for client monitoring. Please install php5-snmp." #~ msgstr "" #~ "El módulo es necesario para la monitorización de clientes. Por favor " #~ "instale php4-snmp/php5-snmp." #~ msgid "Checking for CUPS support" #~ msgstr "Comprobando soporte CUPS" #~ msgid "" #~ "In order to read available printers via the IPP protocol instead of " #~ "printcap files, you've to install the CUPS module." #~ msgstr "" #~ "Para poder leer la lista de impresoras disponibles a través del protocolo " #~ "IPP en vez de archivos de princap, necesita tener instalado el módulo " #~ "CUPS." #~ msgid "Checking for fping utility" #~ msgstr "Comprobando soporte fping" #~ msgid "" #~ "The fping utility is used if you've got a thin client based terminal " #~ "environment." #~ msgstr "" #~ "La utilidad fping es utilizada cuando se tiene un entorno de terminales " #~ "basados en clientes ligeros." #~ msgid "" #~ "The fping utility is only used in thin client based terminal environment." #~ msgstr "" #~ "La utilidad fping es solo utilizada en un entorno de terminales basados " #~ "en clientes ligeros." #~ msgid "" #~ "In order to use SAMBA 2/3 passwords, you've to install additional " #~ "packages to generate password hashes." #~ msgstr "" #~ "Para poder usar contraseñas en SAMBA 2/3 necesita instalar paquetes " #~ "adicionales que generen los hashes de las contraseñas." #~ msgid "" #~ "In order to use SAMBA 2/3 you've to install additional perl libraries. " #~ "Take a look at mkntpasswd." #~ msgstr "" #~ "Para poder usar SAMBA 2/3 necesita instalar ciertas librerías en perl. " #~ "Vea mkntpasswd." #, fuzzy #~ msgid "Show groups with '%s'" #~ msgstr "Mostrara estaciones de trabajo basadas en windows" #, fuzzy #~ msgid "Show %s user" #~ msgstr "Mostrar usuarios samba" #, fuzzy #~ msgid "functional" #~ msgstr "Función" #, fuzzy #~ msgid "posix" #~ msgstr "Posix" #, fuzzy #~ msgid "mail" #~ msgstr "hombre" #, fuzzy #~ msgid "samba" #~ msgstr "Samba" #, fuzzy #~ msgid "proxy" #~ msgstr "Proxy" #, fuzzy #~ msgid "primary" #~ msgstr "Sumario" #, fuzzy #~ msgid "application" #~ msgstr "Aplicación" #, fuzzy #~ msgid "Select to see groups containing '%s'." #~ msgstr "Seleccione para ver estaciones de trabajo basadas en Windows" #, fuzzy #~ msgid "Phones" #~ msgstr "Teléfono" #, fuzzy #~ msgid "Uid number" #~ msgstr "Número de Fax" #~ msgid "You are not allowed to set this users password!" #~ msgstr "¡No le estátá permitido cambiarle la contraseña de estos usuarios!" #, fuzzy #~ msgid "User delete" #~ msgstr "eliminar" #, fuzzy #~ msgid "User deleted" #~ msgstr "eliminar" #, fuzzy #~ msgid "Permission denied!" #~ msgstr "Permisos" #, fuzzy #~ msgid "You are not allowed to perform this action." #~ msgstr "No tiene permisos para editar esta acl." #, fuzzy #~ msgid "You are not allowed to create ldap dumps." #~ msgstr "No tiene permisos para crear un nuevo rol." #, fuzzy #~ msgid "Configuration warning" #~ msgstr "Se puede escribir en la configuración" #, fuzzy #~ msgid "Password reminder" #~ msgstr "La contraseña expira en" #, fuzzy #~ msgid "Configuration accessibility" #~ msgstr "Se puede escribir en la configuración" #~ msgid "Anonymous bind failed on server '%s'." #~ msgstr "Ha fallado la Autenticación Anónima en el servidor '%s'." #, fuzzy #~ msgid "Can't locate gotomasses queue file '%s'." #~ msgstr "No puedo crear el fichero '%s'." #, fuzzy #~ msgid "Can't read gotomasses queue file '%s'." #~ msgstr "No puedo crear el fichero '%s'." #, fuzzy #~ msgid "Can't read gotomasses storage file '%s'." #~ msgstr "No puedo crear el fichero '%s'." #, fuzzy #~ msgid "Can't write gotomasses queue file '%s'." #~ msgstr "No puedo crear el fichero '%s'." #~ msgid "Select to see template pseudo users" #~ msgstr "Seleccione para mostrar las plantillas de usuarios" #~ msgid "Select to see users that have only a GOsa object" #~ msgstr "Seleccione para ver los usuarios que solo tienen la extensión GOsa" #~ msgid "Select to see users that have posix settings" #~ msgstr "Seleccione para ver los usuarios que tienen extensiones Posix" #~ msgid "Show unix users" #~ msgstr "Mostrar los usuarios unix" #~ msgid "Select to see users that have mail settings" #~ msgstr "Seleccione para ver los usuarios que tienen extensiones de correo" #~ msgid "Select to see users that have samba settings" #~ msgstr "Seleccione para ver los usuarios que tienen extensiones samba" #~ msgid "Select to see users that have proxy settings" #~ msgstr "Seleccione para ver los usuarios que tienen extensiones proxy" #~ msgid "Select to see groups that have samba groups mappings" #~ msgstr "Seleccione para ver que grupos tienen asignado un grupo samba" #~ msgid "Select to see groups that have applications configured" #~ msgstr "Seleccione para ver que grupos tienen aplicaciones configuradas" #~ msgid "Select to see groups that have mail settings" #~ msgstr "Seleccione para ver que grupos tienen configuración de correo" #, fuzzy #~ msgid "acl" #~ msgstr "Cancelar" #~ msgid "Ignore subtrees" #~ msgstr "Ignorar subárboles" #, fuzzy #~ msgid "Cannot select database '%s' on server '%s': %s" #~ msgstr "" #~ "La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." #, fuzzy #~ msgid "Cannot query database '%s' on server '%s': %s" #~ msgstr "" #~ "La Autenticación como usuario '%s' en el servidor '%s'. ha tenido éxito." #, fuzzy #~ msgid "You are going to paste the following entries '%s'." #~ msgstr "Has decidido eliminar las siguientes entradas %s" #, fuzzy #~ msgid "You are going to paste the following entry '%s'." #~ msgstr "Has decidido eliminar la siguiente entrada %s" #, fuzzy #~ msgid "Back..." #~ msgstr "Atrás" #, fuzzy #~ msgid "Back %s..." #~ msgstr "Editar usuario" #, fuzzy #~ msgid "again" #~ msgstr "Administrador" #~ msgid "You are not allowed to change the password for this user." #~ msgstr "¡No tiene permisos para cambiar la contraseña de este usuario!" #~ msgid "You are not allowed to remove this user." #~ msgstr "No le está permitido eliminar este usuario." #~ msgid "You're about to delete the following entry: %s" #~ msgstr "Has decidido eliminar la entrada %s" #~ msgid "You're about to delete the following entries: %s" #~ msgstr "Has decidido eliminar las siguientes entradas: %s" #~ msgid "You are not allowed to delete the user '%s'!" #~ msgstr "¡No le está permitido eliminar el usuario '%s'!" #~ msgid "You're about to delete the user %s." #~ msgstr "Esta a punto de eliminar el usuario %s" #~ msgid "You are not allowed to delete this user!" #~ msgstr "¡No le está permitido eliminar este usuario!" #~ msgid "You're about to delete the following entry %s" #~ msgstr "Has decidido eliminar la siguiente entrada %s" #~ msgid "You're about to delete the following entries %s" #~ msgstr "Has decidido eliminar las siguientes entradas %s" #~ msgid "You're about to delete the group '%s'." #~ msgstr "Está a punto de borrar el grupo '%s'." #~ msgid "You're about to delete the acl %s." #~ msgstr "Va a eliminar la acl %s." #, fuzzy #~ msgid "You have no permission to delete this entry!" #~ msgstr "No tiene permisos para eliminar este departamento." #~ msgid "List of acl" #~ msgstr "Lista de acl" #~ msgid "Required field 'Name' is not set." #~ msgstr "No ha introducido el campo obligatorio 'Nombre'." #~ msgid "Required field 'Description' is not set." #~ msgstr "No ha introducido el campo obligatorio 'Descripción'." #, fuzzy #~ msgid "" #~ "Moving LDAP tree failed: destination tree is a subtree of the source!" #~ msgstr "" #~ "Ha fallado al mover el árbol. El árbol destino es subárbol del elegido." #~ msgid "Edit ACL" #~ msgstr "Editar ACL" #~ msgid "Delete ACL" #~ msgstr "Eliminar ACL" #~ msgid "Clear categories ACLs" #~ msgstr "Eliminar categorías ACLs" #~ msgid "Groupname / Department" #~ msgstr "Nombre de grupo / Departamento" #~ msgid "This 'dn' is no group." #~ msgstr "Este 'dn' no es un grupo." #, fuzzy #~ msgid "Deactivated" #~ msgstr "Activado" #, fuzzy #~ msgid "Removing a lock failed." #~ msgstr "Ha fallado la eliminación del antiguo archivo ppd'%s'." #, fuzzy #~ msgid "Setting the password failed!" #~ msgstr "activo, la contraseña expiró" #, fuzzy #~ msgid "Please enter a valid serial number!" #~ msgstr "Por favor introduzca un número de serie válido" #, fuzzy #~ msgid "You have no permission to move this object to '%s'!" #~ msgstr "No tiene permisos para mover este objeto a '%s'." #~ msgid "" #~ "This menu allows you to create, edit and delete selected users. Having a " #~ "great number of users, you may want to use the range selectors on top of " #~ "the user list." #~ msgstr "" #~ "Este menú permite crear, editar o eliminar los usuarios seleccionados. Si " #~ "tiene un gran numero de usuarios puede usar los selectores de rangos en " #~ "la parte superior del listado." #~ msgid "" #~ "This menu allows you to add, edit and remove selected groups. You may " #~ "want to use the range selector on top of the group listbox, when working " #~ "with a large number of groups." #~ msgstr "" #~ "Este menú le permite añadir, editar o eliminar los grupos seleccionados. " #~ "Cuando trabaje con un gran número de grupos puede usar el selector de " #~ "rango en la parte superior de la lista de grupos,." #~ msgid "This menu allows you to edit and delete selected acls." #~ msgstr "Este menú le permite editar y eliminar las acl seleccionadas." #~ msgid "" #~ "This menu allows you to create, delete and edit selected departments. " #~ "Having a large number of departments, you might prefer the range " #~ "selectors on top of the department list." #~ msgstr "" #~ "Este menú le permitirá crear, eliminar, y editar los departamentos " #~ "seleccionados. Puede preferir el selector de rango en la parte superior " #~ "de la lista de departamentos cuando maneje un gran número de " #~ "departamentos." #~ msgid "Removing of user/generic account with dn '%s' failed." #~ msgstr "" #~ "La eliminación de la cuenta genérica/usuario con dn '%s' ha fallado." #~ msgid "Saving of user/generic account with dn '%s' failed." #~ msgstr "La grabación de la cuenta genérica/usuario con dn '%s' ha fallado." #~ msgid "This account has no unix extensions." #~ msgstr "Este cuenta no tiene extensiones unix." #~ msgid "Remove posix account" #~ msgstr "Eliminar cuenta Posix" #~ msgid "Create posix account" #~ msgstr "Crear cuenta posix" #~ msgid "Removing of user/posix account with dn '%s' failed." #~ msgstr "" #~ "Ha fallado la eliminación de la cuenta de usuario / posix con dn '%s'." #~ msgid "Saving of user/posix account with dn '%s' failed." #~ msgstr "Ha fallado la grabación de la cuenta de usuario/posix con dn '%s'." #, fuzzy #~ msgid "Send user notifications" #~ msgstr "Identificación de Usuario" #~ msgid "Removing of department with dn '%s' failed." #~ msgstr "Ha fallado la eliminación del departamento con dn '%s'." #~ msgid "Saving of department with dn '%s' failed." #~ msgstr "Ha fallado la grabación del departamento con dn '%s'." #~ msgid "Saving ACLs with dn '%s' failed." #~ msgstr "Ha fallado la grabación de la ACLs con dn '%s'." #~ msgid "Removing of aclRole with dn '%s' failed." #~ msgstr "Ha fallado la eliminación de la ACLs con dn '%s'." #~ msgid "Removing aclRole from objectgroup '%s' failed" #~ msgstr "Ha fallado la eliminación del Rol en el grupo de objetos '%s'." #~ msgid "Removing of groups/generic with dn '%s' failed." #~ msgstr "Ha fallado la eliminación de los grupos/genericos con dn '%s'." #, fuzzy #~ msgid "'%s' should be smaller than '%s'!" #~ msgstr "" #~ "El valor especificado como 'shadowMin' debería ser menor que 'shadowMax'." #~ msgid "The required field 'Home directory' is not set." #~ msgstr "No se ha asignado ningún valor al campo 'Directorio de usuario'." #~ msgid "Please enter a valid path in 'Home directory' field." #~ msgstr "" #~ "Por favor introduzca una ruta valida en el campo 'Directorio de usuario'" #~ msgid "Value specified as 'UID' is not valid." #~ msgstr "El valor especificado como 'UID' no es valido." #~ msgid "Value specified as 'GID' is not valid." #~ msgstr "El valor especificado como 'GID' no es valido." #~ msgid "Value specified as 'GID' is too small." #~ msgstr "El valor especificado como 'GID' es demasiado pequeño." #~ msgid "Value specified as 'shadowMin' is not valid." #~ msgstr "El valor especificado como 'shadowMin' no es valido." #~ msgid "Value specified as 'shadowMax' is not valid." #~ msgstr "El valor especificado como 'shadowMax' no es valido." #~ msgid "Value specified as 'shadowWarning' is not valid." #~ msgstr "El valor especificado como 'shadowWarning' no es valido." #~ msgid "'shadowWarning' without 'shadowMax' makes no sense." #~ msgstr "'shadowWarning' sin 'shadowMax' no tiene sentido." #~ msgid "" #~ "Value specified as 'shadowWarning' should be smaller than 'shadowMax'." #~ msgstr "" #~ "El valor especificado como 'shadowWarning' debería ser menor que " #~ "'shadowMax'." #~ msgid "" #~ "Value specified as 'shadowWarning' should be greater than 'shadowMin'." #~ msgstr "" #~ "El valor especificado como 'shadowWarning' debería ser mayor que " #~ "'shadowMin'." #~ msgid "Value specified as 'shadowInactive' is not valid." #~ msgstr "El valor especificado como 'shadowInactive' no es valido." #~ msgid "'shadowInactive' without 'shadowMax' makes no sense." #~ msgstr "'shadowInactive' sin 'shadowMax' no tiene sentido." #~ msgid "The required field 'Given name' is not set." #~ msgstr "" #~ "No se ha asignado ningún valor al campo obligatorio 'Nombre de pila'." #~ msgid "The required field 'Login' is not set." #~ msgstr "No se ha asignado ningún valor al campo obligatorio 'Login'." #~ msgid "" #~ "There's already a person with this 'Name'/'Given name' combination in the " #~ "database." #~ msgstr "" #~ "Ya existe un usuario con la misma combinación 'Nombre' / 'Nombre de pila' " #~ "en la base de datos." #~ msgid "" #~ "The field 'Login' contains invalid characters. Lowercase, numbers and " #~ "dashes are allowed." #~ msgstr "" #~ "El campo 'Login' contiene caracteres no validos. Solo se permiten " #~ "minúsculas, números y guiones." #~ msgid "The field 'Homepage' contains an invalid URL definition." #~ msgstr "El campo 'Pagina web' contiene una URL no valida" #~ msgid "The field 'Given name' contains invalid characters." #~ msgstr "El campo 'Nombre de pila' contiene caracteres no validos" #~ msgid "The field 'Phone' contains an invalid phone number." #~ msgstr "El campo 'Teléfono' tiene un número de teléfono no valido." #~ msgid "The field 'Mobile' contains an invalid phone number." #~ msgstr "El campo 'Teléfono móvil' contiene un número de teléfono invalido." #~ msgid "The field 'Pager' contains an invalid phone number." #~ msgstr "" #~ "El campo 'Dispositivo de Búsqueda' contiene un número de teléfono " #~ "invalido." #~ msgid "" #~ "The field 'Name' contains invalid characters. Lowercase, numbers and " #~ "dashes are allowed." #~ msgstr "" #~ "El campo 'Nombre' contiene caracteres no validos. Solo puede utilizar " #~ "minúsculas, números y guiones." #~ msgid "Value specified as 'Name' is already used." #~ msgstr "El valor especificado como 'Nombre' ya esta siendo utilizado." #~ msgid "Please select a valid template." #~ msgstr "Por favor seleccione una plantilla válida." #~ msgid "A person with the choosen name is already used in this tree." #~ msgstr "Ya existe una persona con el nombre elegido en este árbol." #~ msgid "Department with that 'Name' already exists." #~ msgstr "Ya existe un departamente con ese 'Nombre'." #~ msgid "" #~ "The field 'Name' contains the reserved word '%s'. Please choose another " #~ "name." #~ msgstr "" #~ "El campo 'Nombre' tiene la palabra reservada '%s'. Por favor elija otro " #~ "nombre." #, fuzzy #~ msgid "You have no permission to copy and paste object '%s'!" #~ msgstr "No tiene permisos para crear componentes en esta 'Base'." #, fuzzy #~ msgid "User delted" #~ msgstr "Foto del usuario" #, fuzzy #~ msgid "System deployment" #~ msgstr "Sistema / Departamento" #, fuzzy #~ msgid "Your are about to delete the following tasks: %s" #~ msgstr "Has decidido eliminar las siguientes entradas: %s" #, fuzzy #~ msgid "" #~ "This menu allows you to remove and change the properties of GOsa deamon " #~ "tasks." #~ msgstr "" #~ "Este menú le permite añadir, eliminar o configurar las propiedades de un " #~ "servicioespecíficos." #, fuzzy #~ msgid "List of queued deamon jobs." #~ msgstr "Lista de Departamentos" #, fuzzy #~ msgid "Target" #~ msgstr "Juego de caracteres" #, fuzzy #~ msgid "Schedule" #~ msgstr "PHP Schedule it" #, fuzzy #~ msgid "Reomve" #~ msgstr "Eliminar" #, fuzzy #~ msgid "Say hello" #~ msgstr "Shell" #, fuzzy #~ msgid "Schedule Execution" #~ msgstr "PHP Schedule it" #, fuzzy #~ msgid "Tag" #~ msgstr "Juego de caracteres" #, fuzzy #~ msgid "Sekunde" #~ msgstr "Sexo" #, fuzzy #~ msgid "Mac" #~ msgstr "Marzo" #~ msgid "You are not allowed to delete this acl!" #~ msgstr "¡No tiene permisos para eliminar esta acl!" #~ msgid "You are not allowed to delete this acl role!" #~ msgstr "¡No tiene permisos para eliminar este rol!" #~ msgid "" #~ "Your search method returned more than '%s' users, only '%s' users are " #~ "shown." #~ msgstr "" #~ "Su sistema de busqueda ha devuelto mas de '%s' usuarios, se mostraran " #~ "solo '%s' usuarios." #~ msgid "No configured SID found for '%s'." #~ msgstr "No hay ningún SID configurado para '%s'." #~ msgid "You are not allowed to delete this group!" #~ msgstr "¡No le está permitido eliminar este grupo!" #~ msgid "You have no permission to remove this department." #~ msgstr "No tiene permisos para eliminar este departamento." #, fuzzy #~ msgid "Scalix" #~ msgstr "Cuenta Scalix" #~ msgid "Nagios" #~ msgstr "Nagios" #, fuzzy #~ msgid "Inventory" #~ msgstr "Añadir inventario" #~ msgid "Services" #~ msgstr "Servicios" gosa-core-2.7.4/locale/core/nl/0000755000175000017500000000000011752422546014647 5ustar mikemikegosa-core-2.7.4/locale/core/nl/LC_MESSAGES/0000755000175000017500000000000011752422546016434 5ustar mikemikegosa-core-2.7.4/locale/core/nl/LC_MESSAGES/messages.po0000644000175000017500000104033711651532471020610 0ustar mikemike# translation of messages.po to Dutch # GOsa2 Translations # Copyright (C) 2003 GONICUS GmbH, Germany # This file is distributed under the same license as the GOsa2 package. # Alfred Schroeder , 2004. # Cajus Pollmeier , 2004. # # Translator: # Niels Klomp (CareWorks ICT Services) , 2005. msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-25 15:08+0200\n" "PO-Revision-Date: 2006-06-02 16:58+0100\n" "Last-Translator: Niels Klomp (CareWorks ICT Services) \n" "Language-Team: CareWorks ICT Services \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: include/class_management.inc:32 include/class_management.inc:33 #: plugins/personal/posix/class_posixAccount.inc:224 msgid "unconfigured" msgstr "niet geconfigureerd" #: include/class_management.inc:324 include/class_management.inc:487 #: include/class_management.inc:534 include/class_management.inc:549 #: include/class_management.inc:586 include/class_management.inc:600 #: plugins/admin/users/class_userManagement.inc:228 #: plugins/admin/users/class_userManagement.inc:764 #, fuzzy msgid "Permission" msgstr "Rechten" #: include/class_management.inc:405 #: plugins/admin/acl/class_aclManagement.inc:98 #: plugins/admin/users/class_userManagement.inc:722 #: plugins/admin/users/class_userManagement.inc:726 #, fuzzy msgid "Permission error" msgstr "Rechten" #: include/class_management.inc:487 #, fuzzy, php-format msgid "You are not allowed to create a snapshot for %s!" msgstr "U heeft geen toestemming om uw wachtwoord te veranderen!" #: include/class_management.inc:508 include/class_management.inc:669 #: include/utils/class_msgPool.inc:137 include/utils/class_msgPool.inc:149 #: include/utils/class_msgPool.inc:167 include/utils/class_msgPool.inc:440 #: include/utils/class_msgPool.inc:462 include/utils/class_xml.inc:40 #: include/class_listing.inc:542 include/class_tabs.inc:71 #: include/class_msg_dialog.inc:99 include/class_plugin.inc:1698 #: include/class_plugin.inc:1705 #: include/password-methods/class_password-methods.inc:339 #: include/functions.inc:2911 include/functions.inc:3070 #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3422 include/functions.inc:3430 #: include/functions.inc:3442 include/functions.inc:3446 #: include/functions.inc:3461 include/functions.inc:3470 #: include/functions.inc:3530 include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #: include/class_CopyPasteHandler.inc:377 #: include/class_gosaSupportDaemon.inc:1184 #: include/class_gosaSupportDaemon.inc:1204 #: setup/class_setupStep_Migrate.inc:450 setup/setup_checks.tpl:25 #: setup/setup_checks.tpl:66 html/index.php:241 html/index.php:245 #: plugins/personal/password/class_password.inc:215 #: plugins/personal/generic/class_user.inc:297 #: plugins/personal/generic/class_user.inc:429 #: plugins/personal/generic/class_user.inc:522 #: plugins/personal/generic/class_user.inc:816 #: plugins/personal/generic/class_user.inc:1050 #: plugins/personal/generic/class_user.inc:1177 #: plugins/personal/generic/class_user.inc:1184 #: plugins/personal/generic/class_user.inc:1202 #: plugins/personal/generic/class_user.inc:1483 #: plugins/personal/generic/class_user.inc:1809 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:203 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:207 #: plugins/admin/groups/class_group.inc:482 #: plugins/admin/groups/class_group.inc:488 #: plugins/admin/groups/class_group.inc:676 #: plugins/admin/groups/class_group.inc:772 #: plugins/admin/groups/class_group.inc:777 #: plugins/admin/groups/class_group.inc:1115 #: plugins/admin/ogroups/class_ogroup.inc:424 #: plugins/admin/acl/class_aclRole.inc:670 #: plugins/admin/departments/class_department.inc:317 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:43 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:49 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:96 #: plugins/generic/statistics/class_statistics.inc:133 #: plugins/generic/statistics/class_statistics.inc:229 #: plugins/generic/statistics/class_statistics.inc:244 #: plugins/generic/references/class_ldifViewer.inc:20 #, php-format msgid "Error" msgstr "Fout" #: include/class_management.inc:534 include/class_management.inc:586 #: include/class_management.inc:600 #, fuzzy, php-format msgid "You are not allowed to restore a snapshot for %s!" msgstr "U heeft geen toestemming om uw wachtwoord te veranderen!" #: include/class_management.inc:549 #, fuzzy, php-format msgid "You are not allowed to remove a snapshot for %s!" msgstr "U heeft geen toestemming om uw wachtwoord te veranderen!" #: include/class_management.inc:659 include/class_management.inc:743 #: include/class_log.inc:87 include/class_session.inc:76 #: include/class_session.inc:101 include/class_session.inc:127 #: include/functions.inc:640 include/functions.inc:854 #: include/functions.inc:972 include/functions.inc:1367 #: include/functions.inc:2195 include/functions.inc:2225 #: include/functions.inc:2245 include/class_ldap.inc:807 #: include/class_ldap.inc:858 include/class_CopyPasteHandler.inc:160 #: include/class_CopyPasteHandler.inc:274 include/class_acl.inc:1089 #: plugins/personal/myaccount/main.inc:49 #, fuzzy msgid "Internal error" msgstr "Terminal server" #: include/class_management.inc:660 include/class_management.inc:744 #: plugins/personal/myaccount/main.inc:50 #, php-format msgid "" "Cannot instantiate tabbed-plug-in, the base plugin (%s) is not available!" msgstr "" #: include/class_management.inc:669 #, php-format msgid "" "No tab definition for %s found in configuration file: cannot create plugin " "instance!" msgstr "" #: include/class_pluglist.inc:146 include/utils/class_timezone.inc:47 #: include/password-methods/class_password-methods-sha.inc:48 #: include/password-methods/class_password-methods-ssha.inc:51 #: include/functions.inc:864 include/functions.inc:3085 #: include/functions.inc:3100 include/class_config.inc:171 #: include/class_config.inc:712 include/class_config.inc:1173 #: include/class_config.inc:1186 include/class_config.inc:1204 #: include/class_CopyPasteHandler.inc:119 #: include/class_CopyPasteHandler.inc:128 #: include/class_CopyPasteHandler.inc:177 #: include/class_CopyPasteHandler.inc:186 #: include/class_CopyPasteHandler.inc:194 include/class_SnapshotHandler.inc:44 #: include/class_SnapshotHandler.inc:57 include/class_SnapshotHandler.inc:75 #: html/password.php:113 html/index.php:157 html/index.php:233 #: html/main.php:295 plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 #, fuzzy msgid "Configuration error" msgstr "Configuratie bestand" #: include/class_pluglist.inc:147 msgid "The configuration format has changed: please run the setup again!" msgstr "" #: include/class_pluglist.inc:304 #, fuzzy msgid "" "You are currently editing a database entry. Do you want to discard the " "changes?" msgstr "" "U bent momenteel database gegevens aan het bewerken. Wilt u eventuele " "wijzigingen ongedaan maken?" #: include/class_pluglist.inc:479 plugins/admin/groups/class_group.inc:329 #: plugins/admin/groups/class_group.inc:352 #: plugins/admin/groups/class_group.inc:369 #: plugins/admin/departments/class_department.inc:152 #: plugins/generic/references/contents.tpl:18 msgid "Unknown" msgstr "Onbekend" #: include/utils/class_msgPool.inc:17 msgid "This object will be deleted!" msgstr "" #: include/utils/class_msgPool.inc:19 #, php-format msgid "This %s object will be deleted!" msgstr "" #: include/utils/class_msgPool.inc:24 #, php-format msgid "This object will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:26 #, php-format msgid "This %s object will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:31 msgid "This object will be deleted:" msgstr "" #: include/utils/class_msgPool.inc:33 #, php-format msgid "This %s object will be deleted:" msgstr "" #: include/utils/class_msgPool.inc:37 #, php-format msgid "These objects will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:39 #, php-format msgid "These %s objects will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:47 #, fuzzy msgid "You have no permission to delete this object!" msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #: include/utils/class_msgPool.inc:51 include/utils/class_msgPool.inc:55 #, fuzzy msgid "You have no permission to delete the object:" msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #: include/utils/class_msgPool.inc:58 #, fuzzy msgid "You have no permission to delete these objects:" msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #: include/utils/class_msgPool.inc:65 #, fuzzy msgid "You have no permission to create this object!" msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #: include/utils/class_msgPool.inc:69 include/utils/class_msgPool.inc:73 #, fuzzy msgid "You have no permission to create the object:" msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #: include/utils/class_msgPool.inc:76 #, fuzzy msgid "You have no permission to create these objects:" msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #: include/utils/class_msgPool.inc:83 #, fuzzy msgid "You have no permission to modify this object!" msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #: include/utils/class_msgPool.inc:87 include/utils/class_msgPool.inc:91 #, fuzzy msgid "You have no permission to modify the object:" msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #: include/utils/class_msgPool.inc:94 #, fuzzy msgid "You have no permission to modify these objects:" msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #: include/utils/class_msgPool.inc:101 #, fuzzy msgid "You have no permission to view this object!" msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #: include/utils/class_msgPool.inc:105 include/utils/class_msgPool.inc:109 #, fuzzy msgid "You have no permission to view the object:" msgstr "" "U heeft geen toestemming om een telefoon aan te maken onder deze 'Basis'." #: include/utils/class_msgPool.inc:112 #, fuzzy msgid "You have no permission to view these objects:" msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #: include/utils/class_msgPool.inc:119 #, fuzzy msgid "You have no permission to move this object!" msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #: include/utils/class_msgPool.inc:123 include/utils/class_msgPool.inc:127 #, fuzzy msgid "You have no permission to move the object:" msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #: include/utils/class_msgPool.inc:130 #, fuzzy msgid "You have no permission to move these objects:" msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #: include/utils/class_msgPool.inc:140 include/utils/class_msgPool.inc:152 #: include/utils/class_msgPool.inc:170 #, fuzzy msgid "Connection information" msgstr "Persoonlijke informatie" #: include/utils/class_msgPool.inc:142 #, fuzzy, php-format msgid "Cannot connect to %s database!" msgstr "Kan niet verbinden met de database server!" #: include/utils/class_msgPool.inc:154 #, fuzzy, php-format msgid "Cannot select %s database!" msgstr "De opgegeven database kon niet geselecteerd worden!" #: include/utils/class_msgPool.inc:160 #, php-format msgid "No %s server defined!" msgstr "" #: include/utils/class_msgPool.inc:172 #, fuzzy, php-format msgid "Cannot query %s database!" msgstr "De opgegeven database kon niet geselecteerd worden!" #: include/utils/class_msgPool.inc:178 #, fuzzy, php-format msgid "The field %s contains a reserved keyword!" msgstr "Het veld 'Fax' bevat een ongeldig Faxnummer." #: include/utils/class_msgPool.inc:184 #, fuzzy, php-format msgid "Command specified as %s hook for plugin %s does not exist!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/utils/class_msgPool.inc:191 #, fuzzy, php-format msgid "%s command is invalid!" msgstr "De opgegeven naam is ongeldig." #: include/utils/class_msgPool.inc:193 #, fuzzy, php-format msgid "%s command (%s) for plugin %s is invalid!" msgstr "De opgegeven naam is ongeldig." #: include/utils/class_msgPool.inc:195 #, fuzzy, php-format msgid "%s command for plugin %s is invalid!" msgstr "De opgegeven naam is ongeldig." #: include/utils/class_msgPool.inc:197 #, fuzzy, php-format msgid "%s command (%s) is invalid!" msgstr "De opgegeven naam is ongeldig." #: include/utils/class_msgPool.inc:205 #, fuzzy, php-format msgid "Cannot execute %s command!" msgstr "De opgegeven database kon niet geselecteerd worden!" #: include/utils/class_msgPool.inc:207 #, fuzzy, php-format msgid "Cannot execute %s command (%s) for plugin %s!" msgstr "De opgegeven database kon niet geselecteerd worden!" #: include/utils/class_msgPool.inc:209 #, fuzzy, php-format msgid "Cannot execute %s command for plugin %s!" msgstr "De opgegeven database kon niet geselecteerd worden!" #: include/utils/class_msgPool.inc:211 #, fuzzy, php-format msgid "Cannot execute %s command (%s)!" msgstr "De opgegeven database kon niet geselecteerd worden!" #: include/utils/class_msgPool.inc:219 #, fuzzy, php-format msgid "Value for %s is too large!" msgstr "De opgegeven 'UID' waarde is te klein." #: include/utils/class_msgPool.inc:221 #, fuzzy, php-format msgid "%s must be smaller than %s!" msgstr "" "De waarde opgegeven voor 'shadowMin' moet kleiner zijn dan 'shadowMax'." #: include/utils/class_msgPool.inc:229 #, fuzzy, php-format msgid "Value for %s is too small!" msgstr "De opgegeven 'UID' waarde is te klein." #: include/utils/class_msgPool.inc:231 #, fuzzy, php-format msgid "%s must be %s or above!" msgstr "" "PHP moet minimaal versienummer 4.1.0 hebben. GOsa gebruikt bepaalde " "functionaliteit die in voorgaande versies niet goed of helemaal niet " "voorhanden is." #: include/utils/class_msgPool.inc:238 #, php-format msgid "%s depends on %s - please provide both values!" msgstr "" #: include/utils/class_msgPool.inc:244 #, fuzzy, php-format msgid "There is already an entry with this %s attribute in the system!" msgstr "Er bestaat al een account met deze 'Inlog naam' in de database." #: include/utils/class_msgPool.inc:250 #, fuzzy, php-format msgid "The required field %s is empty!" msgstr "Het vereiste veld '(Achter)naam' is leeg." #: include/utils/class_msgPool.inc:258 include/class_core.inc:309 msgid "Example" msgstr "" #: include/utils/class_msgPool.inc:278 #, fuzzy, php-format msgid "The Field %s contains invalid characters" msgstr "Het veld 'Naam' bevat ongeldige karakters." #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s is not allowed:" msgstr "Het veranderen van het wachtwoord is niet toegestaan" #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s are not allowed!" msgstr "Het veranderen van het wachtwoord is niet toegestaan" #: include/utils/class_msgPool.inc:282 #, fuzzy, php-format msgid "The Field %s contains invalid characters!" msgstr "Het veld 'Naam' bevat ongeldige karakters." #: include/utils/class_msgPool.inc:289 #, fuzzy, php-format msgid "Missing %s PHP extension!" msgstr "Verwijder printer mogelijkheden" #: include/utils/class_msgPool.inc:295 ihtml/themes/default/acl.tpl:93 #: ihtml/themes/default/acl.tpl:109 ihtml/themes/default/snapshotdialog.tpl:44 #: ihtml/themes/default/snapshotdialog.tpl:90 #: ihtml/themes/default/islocked.tpl:26 #: ihtml/themes/default/copyPasteDialog.tpl:21 #: ihtml/themes/default/msg_dialog.tpl:80 #: ihtml/themes/default/msg_dialog.tpl:141 #: ihtml/themes/default/msg_dialog.tpl:146 setup/setup_ldap.tpl:20 #: setup/setup_migrate.tpl:71 #, php-format msgid "Cancel" msgstr "Annuleren" #: include/utils/class_msgPool.inc:301 ihtml/themes/default/msg_dialog.tpl:77 #: ihtml/themes/default/msg_dialog.tpl:79 #: ihtml/themes/default/msg_dialog.tpl:136 #: ihtml/themes/default/msg_dialog.tpl:139 #: ihtml/themes/default/msg_dialog.tpl:144 #: setup/class_setupStep_Migrate.inc:153 setup/class_setupStep_Migrate.inc:303 #: setup/class_setupStep_Migrate.inc:684 setup/class_setupStep_Migrate.inc:828 #: setup/setup_checks.tpl:21 setup/setup_checks.tpl:62 #, php-format msgid "OK" msgstr "" #: include/utils/class_msgPool.inc:307 ihtml/themes/default/acl.tpl:33 #: ihtml/themes/default/acl.tpl:89 ihtml/themes/default/acl.tpl:106 #: setup/setup_ldap.tpl:19 setup/setup_migrate.tpl:70 #, php-format msgid "Apply" msgstr "Toepassen" #: include/utils/class_msgPool.inc:313 #: ihtml/themes/default/copyPasteDialog.tpl:19 #, php-format msgid "Save" msgstr "Opslaan" #: include/utils/class_msgPool.inc:319 #: plugins/personal/generic/generic.tpl:252 #: plugins/personal/generic/generic.tpl:272 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:83 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:123 #, php-format msgid "Add" msgstr "Toevoegen" #: include/utils/class_msgPool.inc:319 #, fuzzy, php-format msgid "Add %s" msgstr "Toevoegen" #: include/utils/class_msgPool.inc:325 #, php-format msgid "Delete" msgstr "Verwijderen" #: include/utils/class_msgPool.inc:325 #, fuzzy, php-format msgid "Delete %s" msgstr "Verwijderen" #: include/utils/class_msgPool.inc:331 ihtml/themes/default/sizelimit.tpl:16 #, php-format msgid "Set" msgstr "Stel in" #: include/utils/class_msgPool.inc:331 #, fuzzy, php-format msgid "Set %s" msgstr "Stel in" #: include/utils/class_msgPool.inc:337 #, fuzzy, php-format msgid "Edit..." msgstr "Bewerken" #: include/utils/class_msgPool.inc:337 #, fuzzy, php-format msgid "Edit %s..." msgstr "Bewerk gebruiker" #: include/utils/class_msgPool.inc:343 msgid "Back" msgstr "Terug" #: include/utils/class_msgPool.inc:363 #, fuzzy, php-format msgid "This account has no valid %s extensions!" msgstr "Dit account heeft geen geldige GOsa extensies." #: include/utils/class_msgPool.inc:369 #, fuzzy, php-format msgid "" "This account has %s settings enabled. You can disable them by clicking below." msgstr "" "Dit account heeft POSIX mogelijkheden ingeschakeld. U kunt deze uitschakelen " "door de knop hieronder te gebruiken." #: include/utils/class_msgPool.inc:372 include/utils/class_msgPool.inc:379 #, fuzzy, php-format msgid "" "This account has %s settings enabled. To disable them, you'll need to remove " "the %s settings first!" msgstr "" "Dit account heeft Unix mogelijkheden ingeschakeld. Om deze te verwijderen " "moet u eerst het samba / omgevings account verwijderen." #: include/utils/class_msgPool.inc:388 #, fuzzy, php-format msgid "" "This account has %s settings disabled. You can enable them by clicking below." msgstr "" "Dit account heeft POSIX mogelijkheden uitgeschakeld. U kunt deze inschakelen " "door de knop hieronder te gebruiken." #: include/utils/class_msgPool.inc:391 include/utils/class_msgPool.inc:398 #, fuzzy, php-format msgid "" "This account has %s settings disabled. To enable them, you'll need to add " "the %s settings first!" msgstr "" "Dit account heeft Unix mogelijkheden ingeschakeld. Om deze te verwijderen " "moet u eerst het samba / omgevings account verwijderen." #: include/utils/class_msgPool.inc:406 #, fuzzy, php-format msgid "Add %s settings" msgstr "Programma instellingen" #: include/utils/class_msgPool.inc:412 #, fuzzy, php-format msgid "Remove %s settings" msgstr "Posix instellingen" #: include/utils/class_msgPool.inc:418 msgid "Click the 'Edit' button below to change informations in this dialog" msgstr "" "Gebruik de 'Bewerk' knop hieronder om de informatie in deze dialoog te " "veranderen" #: include/utils/class_msgPool.inc:424 msgid "January" msgstr "Januari" #: include/utils/class_msgPool.inc:424 msgid "February" msgstr "Februari" #: include/utils/class_msgPool.inc:424 msgid "March" msgstr "Maart" #: include/utils/class_msgPool.inc:424 msgid "April" msgstr "April" #: include/utils/class_msgPool.inc:425 msgid "May" msgstr "Mei" #: include/utils/class_msgPool.inc:425 msgid "June" msgstr "Juni" #: include/utils/class_msgPool.inc:425 msgid "July" msgstr "Juli" #: include/utils/class_msgPool.inc:425 msgid "August" msgstr "Augustus" #: include/utils/class_msgPool.inc:425 msgid "September" msgstr "September" #: include/utils/class_msgPool.inc:426 msgid "October" msgstr "Oktober" #: include/utils/class_msgPool.inc:426 msgid "November" msgstr "November" #: include/utils/class_msgPool.inc:426 msgid "December" msgstr "December" #: include/utils/class_msgPool.inc:432 #, fuzzy msgid "Sunday" msgstr "Achternaam" #: include/utils/class_msgPool.inc:432 #, fuzzy msgid "Monday" msgstr "maand" #: include/utils/class_msgPool.inc:432 msgid "Tuesday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Wednesday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Thursday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Friday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Saturday" msgstr "" #: include/utils/class_msgPool.inc:439 #, fuzzy msgid "MySQL operation failed!" msgstr "De database zoekopdracht is mislukt" #: include/utils/class_msgPool.inc:447 #, fuzzy msgid "read operation" msgstr "E-mail opties" #: include/utils/class_msgPool.inc:447 msgid "add operation" msgstr "" #: include/utils/class_msgPool.inc:447 #, fuzzy msgid "modify operation" msgstr "Persoonlijke informatie" #: include/utils/class_msgPool.inc:448 #, fuzzy msgid "delete operation" msgstr "Selecteer om werkstations te zien" #: include/utils/class_msgPool.inc:448 #, fuzzy msgid "search operation" msgstr "Het account verloopt op" #: include/utils/class_msgPool.inc:448 #, fuzzy msgid "authentication" msgstr "Nagios authenticatie" #: include/utils/class_msgPool.inc:451 #, fuzzy, php-format msgid "LDAP %s failed!" msgstr "De database zoekopdracht is mislukt" #: include/utils/class_msgPool.inc:453 #, fuzzy msgid "LDAP operation failed!" msgstr "De database zoekopdracht is mislukt" #: include/utils/class_msgPool.inc:459 include/class_acl.inc:904 #: include/class_acl.inc:911 include/class_acl.inc:918 #: ihtml/themes/default/snapshotdialog.tpl:20 #: ihtml/themes/default/snapshotdialog.tpl:63 #: plugins/admin/departments/class_department.inc:624 msgid "Object" msgstr "Object" #: include/utils/class_msgPool.inc:469 #, fuzzy msgid "Upload failed!" msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." #: include/utils/class_msgPool.inc:472 #, fuzzy, php-format msgid "Upload failed: %s" msgstr "Log DB gebruiker" #: include/utils/class_msgPool.inc:479 msgid "Communication failure with the infrastructure service!" msgstr "" #: include/utils/class_msgPool.inc:481 #, php-format msgid "Communication failure with the infrastructure service: %s" msgstr "" #: include/utils/class_msgPool.inc:488 msgid "Communication failure with the GOsa-NG service!" msgstr "" #: include/utils/class_msgPool.inc:490 #, php-format msgid "Communication failure with the GOsa-NG service: %s" msgstr "" #: include/utils/class_msgPool.inc:497 include/utils/class_msgPool.inc:500 #, fuzzy, php-format msgid "This %s is still in use by this object: %s" msgstr "Deze 'dn' is geen groep." #: include/utils/class_msgPool.inc:503 #, fuzzy, php-format msgid "This %s is still in use." msgstr "Deze 'dn' is geen groep." #: include/utils/class_msgPool.inc:505 #, fuzzy, php-format msgid "This %s is still in use by these objects: %s" msgstr "Deze 'dn' is geen groep." #: include/utils/class_msgPool.inc:511 #, php-format msgid "File %s does not exist!" msgstr "" #: include/utils/class_msgPool.inc:517 #, fuzzy, php-format msgid "Cannot open file %s for reading!" msgstr "Kan bestand '%s' niet openen." #: include/utils/class_msgPool.inc:523 #, fuzzy, php-format msgid "Cannot open file %s for writing!" msgstr "Kan bestand '%s' niet openen." #: include/utils/class_msgPool.inc:529 #, fuzzy, php-format msgid "" "The value for %s is currently unconfigured or invalid, please check your " "configuration file!" msgstr "" "Kan niet verbinden met de opgegeven database. Controleer uw GLPI " "configuratie a.u.b." #: include/utils/class_msgPool.inc:535 #, fuzzy, php-format msgid "Cannot delete file %s!" msgstr "Kan bestand '%s' niet openen." #: include/utils/class_msgPool.inc:541 #, fuzzy, php-format msgid "Cannot create folder %s!" msgstr "Ga naar basis afdelingen" #: include/utils/class_msgPool.inc:547 #, fuzzy, php-format msgid "Cannot delete folder %s!" msgstr "Kan bestand '%s' niet openen." #: include/utils/class_msgPool.inc:553 #, fuzzy, php-format msgid "Checking for %s support" msgstr "Zoeken naar iconv ondersteuning" #: include/utils/class_msgPool.inc:559 #, php-format msgid "Install and activate the %s PHP module." msgstr "" #: include/utils/class_msgPool.inc:565 #, php-format msgid "" "Cannot initialize class %s! Maybe there is a plugin missing in your gosa " "setup?" msgstr "" #: include/utils/class_msgPool.inc:571 msgid "" "The supplied base is not valid and has been reset to its previous value!" msgstr "" #: include/utils/class_timezone.inc:47 #, fuzzy, php-format msgid "The configured timezone %s is not valid!" msgstr "GOsa configuratie %s/gosa.conf is niet leesbaar. Geannuleerd." #: include/utils/class_xml.inc:37 include/class_tabs.inc:287 #: include/class_configRegistry.inc:689 include/class_configRegistry.inc:704 #: include/class_configRegistry.inc:719 include/class_configRegistry.inc:734 #: include/class_configRegistry.inc:750 include/class_configRegistry.inc:755 #: include/class_configRegistry.inc:775 include/class_configRegistry.inc:780 #: include/class_configRegistry.inc:797 include/class_configRegistry.inc:802 #: include/class_configRegistry.inc:820 include/class_configRegistry.inc:825 #: include/class_configRegistry.inc:841 include/class_configRegistry.inc:856 #: include/class_configRegistry.inc:871 include/functions.inc:2516 #: include/functions.inc:2520 include/functions.inc:2526 #: include/functions.inc:2550 include/class_jsonRPC.inc:37 #: setup/setup_checks.tpl:27 setup/setup_checks.tpl:68 html/password.php:315 #: plugins/personal/posix/class_posixAccount.inc:692 #: plugins/personal/posix/class_posixAccount.inc:815 #: plugins/admin/groups/class_group.inc:871 #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "Warning" msgstr "Waarschuwing" #: include/utils/class_xml.inc:43 include/functions.inc:482 #: html/password.php:61 html/main.php:170 #: plugins/admin/departments/class_department.inc:439 #, fuzzy msgid "Fatal error" msgstr "Terminal server" #: include/utils/class_xml.inc:51 #, fuzzy msgid "XML error" msgstr "LDAP fout:" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort ascending" msgstr "" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort descending" msgstr "" #: include/class_listing.inc:324 #, fuzzy msgid "Select all" msgstr "Selecteer" #: include/class_listing.inc:584 #, fuzzy msgid "created by" msgstr "Aanmaken" #: include/class_listing.inc:1081 include/class_listing.inc:1083 #: include/class_ItemSelector.inc:247 include/class_baseSelector.inc:188 #: include/class_releaseSelector.inc:214 msgid "Root" msgstr "Basis" #: include/class_listing.inc:1088 include/class_listing.inc:1090 msgid "Go to preceding level" msgstr "" #: include/class_listing.inc:1096 include/class_listing.inc:1098 msgid "Go to current users level" msgstr "" #: include/class_listing.inc:1103 msgid "Reload list" msgstr "Lijst herladen" #: include/class_listing.inc:1207 #: plugins/addons/propertyEditor/property-list.xml:97 #: plugins/admin/groups/group-list.xml:62 #: plugins/admin/ogroups/ogroup-list.xml:62 plugins/admin/acl/acl-list.xml:65 #: plugins/admin/departments/dep-list.xml:87 #: plugins/admin/users/user-list.xml:78 msgid "Actions" msgstr "Acties" #: include/class_listing.inc:1477 #, fuzzy msgid "Copy" msgstr "kopieer" #: include/class_listing.inc:1483 #, fuzzy msgid "Cut" msgstr "knippen" #: include/class_listing.inc:1491 include/class_listing.inc:1493 #: include/class_CopyPasteHandler.inc:571 msgid "Paste" msgstr "Plakken" #: include/class_listing.inc:1516 msgid "Cut this entry" msgstr "Deze invoer knippen" #: include/class_listing.inc:1525 msgid "Copy this entry" msgstr "Deze invoer kopieren" #: include/class_listing.inc:1557 include/class_listing.inc:1559 #, fuzzy msgid "Restore snapshots" msgstr "Nagios account aanmaken" #: include/class_listing.inc:1573 #, fuzzy msgid "Export list" msgstr "Exporteer" #: include/class_listing.inc:1607 include/class_SnapShotDialog.inc:142 msgid "Restore snapshot" msgstr "" #: include/class_listing.inc:1615 #, fuzzy msgid "Create new snapshot for this object" msgstr "Nieuw FAI object aanmaken" #: include/class_userFilter.inc:55 #: ihtml/themes/default/userFilterEditor.tpl:27 #, fuzzy msgid "Parent filter" msgstr "Parameters" #: include/class_userFilter.inc:55 include/class_userFilter.inc:150 #: include/class_SnapShotDialog.inc:55 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:236 #: include/class_userFilterEditor.inc:240 #: ihtml/themes/default/userFilterEditor.tpl:11 setup/setup_migrate.tpl:43 #: setup/setup_migrate.tpl:45 setup/setup_feedback.tpl:16 #: plugins/personal/posix/trustSelect/trust-list.xml:46 #: plugins/personal/posix/groupSelect/group-list.xml:33 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/personal/generic/class_user.inc:1316 #: plugins/personal/generic/class_user.inc:1334 #: plugins/personal/generic/class_user.inc:1376 #: plugins/personal/generic/class_user.inc:1860 #: plugins/addons/propertyEditor/property-list.xml:65 #: plugins/admin/groups/class_group.inc:925 #: plugins/admin/groups/class_group.inc:936 #: plugins/admin/groups/class_group.inc:938 #: plugins/admin/groups/class_group.inc:955 #: plugins/admin/groups/class_group.inc:969 #: plugins/admin/groups/class_group.inc:976 #: plugins/admin/groups/class_group.inc:1076 #: plugins/admin/groups/group-list.xml:41 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:49 #: plugins/admin/ogroups/ogroup-list.xml:41 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:97 #: plugins/admin/ogroups/class_ogroup.inc:157 #: plugins/admin/ogroups/class_ogroup.inc:683 #: plugins/admin/ogroups/class_ogroup.inc:698 #: plugins/admin/ogroups/class_ogroup.inc:702 #: plugins/admin/ogroups/class_ogroup.inc:885 plugins/admin/acl/acl_role.tpl:7 #: plugins/admin/acl/acl-list.xml:49 plugins/admin/acl/paste_role.tpl:4 #: plugins/admin/acl/class_aclRole.inc:741 #: plugins/admin/acl/class_aclRole.inc:753 #: plugins/admin/acl/class_aclRole.inc:763 #: plugins/admin/departments/class_countryGeneric.inc:47 #: plugins/admin/departments/class_countryGeneric.inc:49 #: plugins/admin/departments/class_countryGeneric.inc:54 #: plugins/admin/departments/class_countryGeneric.inc:56 #: plugins/admin/departments/class_countryGeneric.inc:58 #: plugins/admin/departments/class_department.inc:355 #: plugins/admin/departments/class_department.inc:357 #: plugins/admin/departments/class_department.inc:362 #: plugins/admin/departments/class_department.inc:369 #: plugins/admin/departments/class_department.inc:373 #: plugins/admin/departments/class_domain.inc:47 #: plugins/admin/departments/class_domain.inc:49 #: plugins/admin/departments/class_domain.inc:54 #: plugins/admin/departments/class_domain.inc:56 #: plugins/admin/departments/class_domain.inc:58 #: plugins/admin/departments/class_domain.inc:90 #: plugins/admin/departments/class_organizationGeneric.inc:79 #: plugins/admin/departments/class_organizationGeneric.inc:81 #: plugins/admin/departments/class_organizationGeneric.inc:86 #: plugins/admin/departments/class_organizationGeneric.inc:88 #: plugins/admin/departments/class_organizationGeneric.inc:90 #: plugins/admin/departments/class_localityGeneric.inc:48 #: plugins/admin/departments/class_localityGeneric.inc:50 #: plugins/admin/departments/class_localityGeneric.inc:55 #: plugins/admin/departments/class_localityGeneric.inc:57 #: plugins/admin/departments/class_localityGeneric.inc:59 #: plugins/admin/departments/class_dcObject.inc:47 #: plugins/admin/departments/class_dcObject.inc:49 #: plugins/admin/departments/class_dcObject.inc:54 #: plugins/admin/departments/class_dcObject.inc:56 #: plugins/admin/departments/class_dcObject.inc:58 #: plugins/admin/departments/class_dcObject.inc:90 #: plugins/admin/users/class_userManagement.inc:549 #: plugins/admin/users/class_userManagement.inc:597 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Name" msgstr "Naam" #: include/class_userFilter.inc:55 include/class_SnapShotDialog.inc:174 #: include/class_acl.inc:255 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:245 #: ihtml/themes/default/userFilterEditor.tpl:19 #: plugins/personal/posix/trustSelect/trust-list.xml:53 #: plugins/personal/posix/groupSelect/group-list.xml:40 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/admin/groups/class_group.inc:1077 #: plugins/admin/groups/generic.tpl:24 plugins/admin/groups/group-list.xml:49 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:49 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:105 #: plugins/admin/ogroups/generic.tpl:15 #: plugins/admin/ogroups/class_ogroup.inc:887 #: plugins/admin/acl/acl_role.tpl:17 plugins/admin/acl/acl-list.xml:57 #: plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/acl/class_aclRole.inc:743 #: plugins/admin/departments/dcObject.tpl:19 #: plugins/admin/departments/country.tpl:19 #: plugins/admin/departments/class_countryGeneric.inc:63 #: plugins/admin/departments/class_countryGeneric.inc:92 #: plugins/admin/departments/dep-list.xml:79 #: plugins/admin/departments/organization.tpl:19 #: plugins/admin/departments/class_department.inc:365 #: plugins/admin/departments/class_department.inc:675 #: plugins/admin/departments/class_domain.inc:63 #: plugins/admin/departments/class_domain.inc:91 #: plugins/admin/departments/class_organizationGeneric.inc:95 #: plugins/admin/departments/class_organizationGeneric.inc:123 #: plugins/admin/departments/generic.tpl:19 #: plugins/admin/departments/locality.tpl:19 #: plugins/admin/departments/class_localityGeneric.inc:64 #: plugins/admin/departments/class_localityGeneric.inc:92 #: plugins/admin/departments/class_dcObject.inc:63 #: plugins/admin/departments/class_dcObject.inc:91 #: plugins/admin/departments/domain.tpl:19 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Description" msgstr "Omschrijving" #: include/class_userFilter.inc:55 plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/departments/organization.tpl:27 #: plugins/admin/departments/class_department.inc:676 #: plugins/admin/departments/class_organizationGeneric.inc:124 #: plugins/admin/departments/generic.tpl:27 msgid "Category" msgstr "Categorie" #: include/class_userFilter.inc:55 ihtml/themes/default/acl.tpl:15 #: ihtml/themes/default/acl.tpl:16 msgid "Options" msgstr "Opties" #: include/class_userFilter.inc:275 include/functions.inc:511 #: include/functions.inc:546 include/functions.inc:554 #: include/functions.inc:600 include/functions.inc:879 #: include/functions.inc:928 include/functions.inc:985 #: include/functions.inc:1035 include/functions.inc:3304 #: include/class_ldap.inc:870 include/class_ldap.inc:1328 #: include/class_config.inc:367 include/class_acl.inc:1396 #: include/class_acl.inc:1492 include/class_SnapshotHandler.inc:123 #: include/class_SnapshotHandler.inc:280 include/class_SnapshotHandler.inc:329 #: include/class_SnapshotHandler.inc:333 include/class_SnapshotHandler.inc:346 #: include/class_SnapshotHandler.inc:380 include/class_SnapshotHandler.inc:435 #: include/class_SnapshotHandler.inc:500 include/class_SnapshotHandler.inc:515 #: setup/class_setupStep_Migrate.inc:461 setup/class_setupStep_Migrate.inc:814 #: html/index.php:271 plugins/personal/posix/class_posixAccount.inc:570 #: plugins/personal/posix/class_posixAccount.inc:832 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:253 #: plugins/personal/generic/class_user.inc:730 #: plugins/personal/generic/class_user.inc:1099 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:204 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:269 #: plugins/admin/groups/class_group.inc:619 #: plugins/admin/groups/class_group.inc:895 #: plugins/admin/ogroups/class_ogroup.inc:782 #: plugins/admin/ogroups/class_ogroup.inc:799 #: plugins/admin/acl/class_aclRole.inc:602 #: plugins/admin/acl/class_aclRole.inc:642 #: plugins/admin/acl/class_aclRole.inc:656 #: plugins/admin/departments/class_department.inc:285 #: plugins/admin/departments/class_department.inc:482 #: plugins/admin/departments/class_department.inc:759 #: plugins/admin/departments/class_department.inc:790 #: plugins/generic/references/class_reference.inc:97 #, fuzzy msgid "LDAP error" msgstr "LDAP fout:" #: include/class_log.inc:87 #, fuzzy, php-format msgid "Logging failed: %s" msgstr "Log DB gebruiker" #: include/class_log.inc:102 #, php-format msgid "Invalid option %s specified!" msgstr "" #: include/class_log.inc:106 #, fuzzy msgid "Specified 'objectType' is empty or invalid!" msgstr "De opgegeven naam is ongeldig." #: include/class_multi_plug.inc:362 #, fuzzy msgid "You are currently editing multiple entries." msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #: include/class_multi_plug.inc:394 #, fuzzy msgid "Reset password" msgstr "Wachtwoord instellen" #: include/class_multi_plug.inc:394 #, fuzzy msgid "The user password has been reset. Please set a new password!" msgstr "Uw wachtwoord is verlopen! Kies a.u.b. een nieuw wachtwoord. " #: include/class_tabs.inc:72 #, fuzzy, php-format msgid "No plugin definition for %s found: please check the configuration file!" msgstr "" "Kan niet verbinden met de opgegeven database. Controleer uw GLPI " "configuratie a.u.b." #: include/class_tabs.inc:287 #, fuzzy, php-format msgid "Delete process has been canceled by plugin %s: %s" msgstr "Het verwijder proces is geannuleerd door plugin '%s': %s" #: include/class_tabs.inc:420 include/class_acl.inc:1428 #: include/class_acl.inc:1429 include/class_acl.inc:1435 #: plugins/admin/acl/acl-list.xml:15 plugins/admin/acl/tabs_acl.inc:28 #: plugins/admin/acl/class_aclRole.inc:770 msgid "ACL" msgstr "Rechten" #: include/class_tabs.inc:425 msgid "References" msgstr "Referenties" #: include/functions_helpviewer.inc:45 #, fuzzy, php-format msgid "XML error in guide.xml: %s at line %s" msgstr "XML fout in guide.conf: %s op regel %d" #: include/functions_helpviewer.inc:88 #, fuzzy msgid "No help available for this plug-in." msgstr "Help is (nog) niet beschikbaar voor deze module." #: include/functions_helpviewer.inc:97 html/helpviewer.php:193 msgid "previous" msgstr "vorige" #: include/functions_helpviewer.inc:101 html/helpviewer.php:197 msgid "next" msgstr "volgende" #: include/functions_helpviewer.inc:388 #, php-format msgid "%s results for your search with the keyword %s" msgstr "%s resultaten voor uw zoekopdracht met sleutelwoord %s" #: include/functions_helpviewer.inc:461 #, php-format msgid "%s%% hit rate in file %s" msgstr "%s%% resultaat in bestand %s" #: include/class_msg_dialog.inc:124 msgid "Please fix the above error and reload the page." msgstr "" #: include/class_plugin.inc:581 msgid "" "The current object has been altered while beeing edited. If you save this " "entry, changes that have been made by others will be discarded!" msgstr "" #: include/class_plugin.inc:1411 #, php-format msgid "Changing ACL DN from %s to %s" msgstr "" #: include/class_SnapShotDialog.inc:55 #, fuzzy msgid "Date" msgstr "Plakken" #: include/class_SnapShotDialog.inc:94 #, fuzzy, php-format msgid "You are about to delete the snapshot %s." msgstr "U staat op het punt de macro '%s' te verwijderen." #: include/class_SnapShotDialog.inc:143 #, fuzzy msgid "Delete snapshot" msgstr "Nagios account aanmaken" #: include/class_SnapShotDialog.inc:144 include/class_SnapShotDialog.inc:162 msgid "Y-m-d, H:i:s" msgstr "" #: include/class_pathNavigator.inc:86 #, fuzzy msgid "Welcome to GOsa" msgstr "Welkom bij het GOsa installatie programma!" #: include/password-methods/class_password-methods.inc:339 msgid "Cannot find a suitable password method for the current hash!" msgstr "" #: include/class_sortableListing.inc:234 #, fuzzy msgid "Sortable list" msgstr "Exporteer" #: include/class_sortableListing.inc:239 msgid "Edit this entry" msgstr "Bewerk deze invoer" #: include/class_sortableListing.inc:244 msgid "Delete this entry" msgstr "Verwijder deze invoer" #: include/class_configRegistry.inc:194 #: plugins/personal/generic/class_user.inc:273 #: plugins/personal/generic/class_user.inc:1898 #, fuzzy msgid "unknown" msgstr "Onbekend" #: include/class_configRegistry.inc:197 #, php-format msgid "%s has version %s but %s is required!" msgstr "" #: include/class_configRegistry.inc:240 setup/class_setupStep_Schema.inc:96 msgid "The following object classes are missing:" msgstr "" #: include/class_configRegistry.inc:247 setup/class_setupStep_Schema.inc:99 msgid "The following object classes are outdated:" msgstr "" #: include/class_configRegistry.inc:253 msgid "" "Plugins that require one or more of the object classes above will be " "disabled until the object classes get updated." msgstr "" #: include/class_configRegistry.inc:255 #, fuzzy msgid "Schema validation error" msgstr "Nagios authenticatie" #: include/class_configRegistry.inc:690 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a bool value!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/class_configRegistry.inc:705 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a string!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/class_configRegistry.inc:720 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be numeric!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/class_configRegistry.inc:735 #, fuzzy, php-format msgid "The path %s specified for %s:%s is invalid!" msgstr "De opgegeven 'UID' waarde is niet correct." #: include/class_configRegistry.inc:751 include/class_configRegistry.inc:798 #, fuzzy, php-format msgid "The folder %s specified for %s:%s does not exists!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/class_configRegistry.inc:756 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not readable!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/class_configRegistry.inc:776 include/class_configRegistry.inc:781 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not writeable!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/class_configRegistry.inc:803 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not writeable!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/class_configRegistry.inc:821 #, fuzzy, php-format msgid "The file %s specified for %s:%s does not exists!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/class_configRegistry.inc:826 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not readable!" msgstr "" "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module '%s' " "bestaat niet." #: include/class_configRegistry.inc:842 #, fuzzy, php-format msgid "The command %s specified for %s:%s is invalid!" msgstr "De opgegeven 'UID' waarde is niet correct." #: include/class_configRegistry.inc:857 #, fuzzy, php-format msgid "The DN %s specified for %s:%s is invalid!" msgstr "De opgegeven 'UID' waarde is niet correct." #: include/class_configRegistry.inc:872 #, fuzzy, php-format msgid "The RDN %s specified for %s:%s is invalid!" msgstr "De opgegeven 'UID' waarde is niet correct." #: include/php_setup.inc:114 msgid "Generating this page caused the PHP interpreter to raise some errors!" msgstr "" "Er is minimaal één PHP fout opgetreden bij het genereren van deze pagina!" #: include/php_setup.inc:117 #, fuzzy msgid "Send bug report" msgstr "Afzender" #: include/php_setup.inc:121 msgid "Toggle details" msgstr "" #: include/php_setup.inc:130 msgid "PHP error" msgstr "PHP fout" #: include/php_setup.inc:149 msgid "class" msgstr "klasse" #: include/php_setup.inc:155 msgid "function" msgstr "functie" #: include/php_setup.inc:160 msgid "static" msgstr "statisch" #: include/php_setup.inc:164 msgid "method" msgstr "methode" #: include/php_setup.inc:197 #, fuzzy msgid "Traceback" msgstr "Trace" #: include/php_setup.inc:198 msgid "File" msgstr "Bestand" #: include/php_setup.inc:198 msgid "Line" msgstr "Regel" #: include/php_setup.inc:198 include/class_acl.inc:293 #: plugins/admin/acl/class_aclRole.inc:182 msgid "Type" msgstr "Type" #: include/php_setup.inc:199 msgid "Arguments" msgstr "Argumenten" #: include/class_certificate.inc:73 #, fuzzy msgid "Certificate is empty!" msgstr "Certificaten" #: include/class_certificate.inc:100 msgid "Cannot load certificate: only PEM and DER are supported!" msgstr "" #: include/class_certificate.inc:115 #, fuzzy msgid "Cannot extract information for non PEM certificates!" msgstr "Kan quota informatie niet ophaleven voor '%s'." #: include/class_certificate.inc:219 #, fuzzy msgid "No valid certificate loaded!" msgstr "Geen geldig certificaat geladen" #: include/class_session.inc:76 include/class_session.inc:101 #: include/class_session.inc:127 #, fuzzy msgid "Requested channel does not exist!" msgstr "Gebruikersnaam / UID is niet uniek. Controleer uw LDAP database a.u.b." #: include/functions.inc:151 #, php-format msgid "Fatal error: no class locations defined - please run %s to fix this" msgstr "" #: include/functions.inc:158 #, php-format msgid "Fatal error: cannot instantiate class %s - try running %s to fix this" msgstr "" #: include/functions.inc:483 #, fuzzy, php-format msgid "Error while connecting to LDAP: %s" msgstr "" "FATAAL: Fout bij het verbinden met de LDAP server. De server meldt: '%s'." #: include/functions.inc:554 include/functions.inc:640 #, fuzzy msgid "User ID is not unique!" msgstr "Gebruikersnaam / UID is niet uniek. Controleer uw LDAP database a.u.b." #: include/functions.inc:854 include/functions.inc:972 msgid "Error while locking entry!" msgstr "" #: include/functions.inc:864 #, fuzzy, php-format msgid "Cannot store lock information in LDAP!" msgstr "Kan quota informatie niet ophaleven voor '%s'." #: include/functions.inc:864 #, fuzzy, php-format msgid "Error: %s" msgstr "Fout" #: include/functions.inc:1294 #, fuzzy, php-format msgid "The current size limit of %d entries is exceeded!" msgstr "De hoeveelheidslimiet van %d invoeren is overschreden!" #: include/functions.inc:1296 #, php-format msgid "Set the size limit to %s" msgstr "" #: include/functions.inc:1308 plugins/personal/generic/generic.tpl:218 msgid "Configure" msgstr "Instellen" #: include/functions.inc:1313 #, fuzzy msgid "list is incomplete" msgstr "onvolledig" #: include/functions.inc:1663 msgid "Continue anyway" msgstr "Toch doorgaan" #: include/functions.inc:1665 msgid "Edit anyway" msgstr "Alsnog bewerken" #: include/functions.inc:1668 msgid "These entries are currently locked:" msgstr "" #: include/functions.inc:1909 msgid "Entries per page" msgstr "Regels per pagina" #: include/functions.inc:2087 #, fuzzy, php-format msgid "GOsa %s" msgstr "Log DB gebruiker" #: include/functions.inc:2094 #, fuzzy, php-format msgid "GOsa %s snapshot (Rev %s)" msgstr "GOsa ontwikkelversie (Revisie %s)" #: include/functions.inc:2099 #, php-format msgid "GOsa development snapshot (Rev %s)" msgstr "GOsa ontwikkelversie (Revisie %s)" #: include/functions.inc:2195 #, php-format msgid "File %s cannot be deleted!" msgstr "" #: include/functions.inc:2225 include/functions.inc:2245 #, fuzzy msgid "Cannot write revision file!" msgstr "Kan bestand '%s' niet aanmaken." #: include/functions.inc:2516 include/functions.inc:2520 #: include/functions.inc:2526 msgid "'baseIdHook' is not available. Using default base!" msgstr "" #: include/functions.inc:2550 #, fuzzy msgid "" "Cannot read schema information from LDAP. Schema validation is not possible!" msgstr "" "Kan de schema informatie niet ophalen van de server. Schema controle is " "onmogelijk!" #: include/functions.inc:2576 msgid "This class is used to make users appear in GOsa." msgstr "" #: include/functions.inc:2583 msgid "" "This class is used to lock entries in order to prevent multiple edits at a " "time." msgstr "" #: include/functions.inc:2628 #, fuzzy, php-format msgid "Required object class %s is missing!" msgstr "Toon FAI sjabloon objecten" #: include/functions.inc:2631 #, php-format msgid "Optional object class %s is missing!" msgstr "" #: include/functions.inc:2636 #, fuzzy, php-format msgid "Wrong version of required object class %s (!=%s) detected!" msgstr "Toon FAI sjabloon objecten" #: include/functions.inc:2639 #, fuzzy, php-format msgid "Class available" msgstr "Bestand is beschikbaar" #: include/functions.inc:2661 msgid "" "RFC2307bis schema is enabled, but the current LDAP configuration does not " "support it!" msgstr "" #: include/functions.inc:2662 msgid "" "To use RFC2307bis groups, the objectClass 'posixGroup' must be AUXILIARY." msgstr "" #: include/functions.inc:2666 msgid "" "RFC2307bis schema is disabled, but the current LDAP configuration supports " "it!" msgstr "" #: include/functions.inc:2667 msgid "To correct this, the objectClass 'posixGroup' must be STRUCTURAL." msgstr "" #: include/functions.inc:2692 msgid "German" msgstr "Duits" #: include/functions.inc:2693 msgid "French" msgstr "Frans" #: include/functions.inc:2694 msgid "Italian" msgstr "Italiaans" #: include/functions.inc:2695 msgid "Spanish" msgstr "Spaans" #: include/functions.inc:2696 msgid "English" msgstr "Engels" #: include/functions.inc:2697 msgid "Dutch" msgstr "Nederlands" #: include/functions.inc:2698 msgid "Polish" msgstr "Pools" #: include/functions.inc:2699 msgid "Brazilian Portuguese" msgstr "" #: include/functions.inc:2701 #, fuzzy msgid "Chinese" msgstr "Chipset" #: include/functions.inc:2702 #, fuzzy msgid "Vietnamese" msgstr "Naam" #: include/functions.inc:2703 msgid "Russian" msgstr "Russisch" #: include/functions.inc:2896 #, fuzzy msgid "Cannot detect password hash!" msgstr "De opgegeven database kon niet geselecteerd worden!" #: include/functions.inc:2911 include/functions.inc:3085 msgid "Cannot generate SAMBA hash!" msgstr "" #: include/functions.inc:2942 include/functions.inc:3017 #, php-format msgid "Pre-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:2973 #, fuzzy msgid "Password change failed!" msgstr "Het veranderen van het wachtwoord is niet toegestaan" #: include/functions.inc:2981 #, php-format msgid "Post-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:3100 #, php-format msgid "Generating SAMBA hash by running %s failed: check %s!" msgstr "" #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3430 include/functions.inc:3442 #: include/functions.inc:3446 include/functions.inc:3461 #: include/functions.inc:3470 #, fuzzy msgid "Cannot allocate free ID:" msgstr "" "Er zitten te veel gebruikers in de database. Kan geen vrij ID toewijzen!" #: include/functions.inc:3378 msgid "unknown idAllocation method!" msgstr "" #: include/functions.inc:3392 #, php-format msgid "%sPoolMin >= %sPoolMax!" msgstr "" #: include/functions.inc:3422 #, fuzzy msgid "Cannot create sambaUnixIdPool entry!" msgstr "Ga naar basis afdelingen" #: include/functions.inc:3430 msgid "sambaUnixIdPool is not unique!" msgstr "" #: include/functions.inc:3442 include/functions.inc:3446 #, fuzzy msgid "no ID available!" msgstr "Bestand is beschikbaar" #: include/functions.inc:3470 msgid "maximum number of tries exceeded!" msgstr "" #: include/functions.inc:3530 #, fuzzy msgid "Cannot allocate free ID!" msgstr "" "Er zitten te veel gebruikers in de database. Kan geen vrij ID toewijzen!" #: include/class_filter.inc:158 include/class_filter.inc:228 #: ihtml/themes/default/help.tpl:21 setup/setup_ldap.tpl:15 msgid "Search" msgstr "Zoeken" #: include/class_filter.inc:226 #, fuzzy msgid "Search filter" msgstr "Parameters" #: include/class_filter.inc:444 #, fuzzy msgid "Search in subtrees" msgstr "Zoek binnen subtree" #: include/class_filter.inc:449 #, fuzzy msgid "Edit filters" msgstr "Bewerk certificaten" #: include/class_ldap.inc:328 include/class_ldap.inc:365 msgid "Performance warning" msgstr "" #: include/class_ldap.inc:328 include/class_ldap.inc:365 #, php-format msgid "LDAP performance is poor: last query took %.2fs!" msgstr "" #: include/class_ldap.inc:807 #, php-format msgid "Cannot automatically create subtrees with RDN %s: no object class found" msgstr "" #: include/class_ldap.inc:858 #, php-format msgid "Cannot automatically create subtrees with RDN %s: not supported" msgstr "" #: include/class_ldap.inc:945 #, fuzzy, php-format msgid "while operating on %s using LDAP server %s" msgstr "bij het bewerken van '%s' op LDAP server '%s'" #: include/class_ldap.inc:947 #, php-format msgid "while operating on LDAP server %s" msgstr "bij het bewerken van LDAP server %s" #: include/class_ldap.inc:1000 #, php-format msgid "Command line programm %s is missing!" msgstr "" #: include/class_ldap.inc:1161 #, fuzzy, php-format msgid "" "Invalid DN %s: block to be imported should start with 'dn: ...' in line %s" msgstr "" "Dit is geen geldige DN: '%s'. Een blok dat geïmporteerd wordt, dient te " "beginnen met 'dn: ...' op regel %s" #: include/class_ldap.inc:1190 #, fuzzy, php-format msgid "Error while importing DN %s: please check LDIF from line %s on!" msgstr "" "Fout bij het importeren van dn: '%s', controleer uw LDIF bestand a.u.b. " "vanaf regel %s!" #: include/class_core.inc:113 include/class_core.inc:119 #: plugins/generic/references/class_aclResolver.inc:303 #, fuzzy msgid "All" msgstr "Alle" #: include/class_core.inc:114 #, fuzzy msgid "All objects" msgstr "Lidmaatschap objecten" #: include/class_core.inc:132 #, fuzzy msgid "Traditional" msgstr "Terminal" #: include/class_core.inc:132 msgid "Use samba pool" msgstr "" #: include/class_core.inc:164 include/class_core.inc:167 #, fuzzy msgid "hours" msgstr "uur" #: include/class_core.inc:184 #, fuzzy msgid "None" msgstr "geen" #: include/class_core.inc:188 setup/class_setupStep_Language.inc:47 #, fuzzy msgid "Automatic" msgstr "automatisch" #: include/class_core.inc:200 #, fuzzy msgid "User value" msgstr "Gebruikersnaam" #: include/class_core.inc:209 #, fuzzy msgid "Core" msgstr "Sluiten" #: include/class_core.inc:210 #, fuzzy msgid "GOsa core plugin" msgstr "E-mail instellingen" #: include/class_core.inc:238 msgid "" "Enables htaccess instead of LDAP authentication. This can be used to enable " "other authentication mechanisms like Kerberos for the GOsa login." msgstr "" #: include/class_core.inc:248 msgid "Enables the usage statistics module." msgstr "" #: include/class_core.inc:258 msgid "Database file to be used by the usage statistics module." msgstr "" #: include/class_core.inc:268 msgid "" "Enables event logging in GOsa. Setting it to 'On' make GOsa log every action " "a user performs via syslog. If you use this in combination with rsyslog and " "configure it to MySQL logging, you can browse all events in GOsa." msgstr "" #: include/class_core.inc:279 msgid "" "Enables a status bar on the bottom of lists displaying a summary of type and " "number of elements in the list." msgstr "" #: include/class_core.inc:289 msgid "Specify the minimum length for newly entered passwords." msgstr "" #: include/class_core.inc:299 msgid "" "Specify the minimum number of characters that have to differ between old and " "newly entered passwords." msgstr "" #: include/class_core.inc:309 msgid "" "Command to generate password proposals. If a command has been specified, the " "user can decide whether to use an automatic password or a manually specified " "one." msgstr "" #: include/class_core.inc:319 msgid "" "Enable display of PHP errors on the top of the page. Disable this feature in " "production environments to avoid the exposure of sensitive data." msgstr "" #: include/class_core.inc:319 #, fuzzy, php-format msgid "Related option" msgstr "Selecteer om werkstations te zien" #: include/class_core.inc:329 msgid "" "Show messages that may assist plugin development. Be aware that this option " "may produce some ACL related false error messages!" msgstr "" #: include/class_core.inc:340 msgid "" "Enable LDAP schema verification during login. The recommended setting is " "'On' because it enables efficient methods to create missing subtrees in the " "LDAP." msgstr "" #: include/class_core.inc:350 msgid "Enable copy and paste for most objects managed by GOsa." msgstr "" #: include/class_core.inc:360 msgid "Enable PHP security checks for disabled register_global settings." msgstr "" #: include/class_core.inc:370 msgid "Enable automatic redirection to HTTPS based administration." msgstr "" #: include/class_core.inc:380 msgid "Enable logging of detailed information of LDAP operations." msgstr "" #: include/class_core.inc:390 #, fuzzy msgid "Enable LDAP referral chasing." msgstr "Verwijder printer mogelijkheden" #: include/class_core.inc:400 msgid "" "Specify LDAP element filter limit. If the limit is not 0, GOsa speeds up " "group queries by putting several queries into a single query. This is known " "to produce problems on some LDAP servers (i.e. Sun DS) and needs to be " "lowered or disabled." msgstr "" #: include/class_core.inc:410 msgid "" "Specify the maximum number of entries GOsa will request from an LDAP server. " "A warning is displayed if this limit is exceeded." msgstr "" #: include/class_core.inc:420 msgid "Disable checks for LDAP size limits." msgstr "" #: include/class_core.inc:430 msgid "Enable warnings for non encrypted connections." msgstr "" #: include/class_core.inc:440 msgid "Enable compression for PPD files." msgstr "" #: include/class_core.inc:451 msgid "" "DN of user with ACL checks disabled. This should only be used to restore " "lost administrative ACLs." msgstr "" #: include/class_core.inc:462 msgid "Storage path for PPD files." msgstr "" #: include/class_core.inc:472 msgid "" "Number of seconds a LDAP query is allowed to take until GOsa aborts the " "request." msgstr "" #: include/class_core.inc:482 msgid "Enables storing of user filters in browser cookies." msgstr "" #: include/class_core.inc:492 msgid "Enables sending of compressed web page content." msgstr "" #: include/class_core.inc:502 msgid "" "Allows to modify uid-proposals when creating a new user from a user-template." msgstr "" #: include/class_core.inc:513 msgid "LDAP attribute which is used to detect changes." msgstr "" #: include/class_core.inc:524 msgid "" "ISO language code which is used to override the automatic language detection." msgstr "" #: include/class_core.inc:535 msgid "CSS and template theme to be used." msgstr "" #: include/class_core.inc:545 msgid "" "Number of seconds after an inactive session expires. This may be overridden " "by some systems php.ini/crontab mechanism." msgstr "" #: include/class_core.inc:555 #, fuzzy msgid "Template engine compile directory." msgstr "Persoonlijke map" #: include/class_core.inc:565 #, php-format msgid "" "Logical AND of the integer values below that controls the debug output on " "every page load: %s" msgstr "" #: include/class_core.inc:586 msgid "" "Command to create Samba NT/LM hashes. Required for password synchronization " "if you don't use supplementary services." msgstr "" #: include/class_core.inc:597 msgid "Default hash to be used for newly created user passwords." msgstr "" #: include/class_core.inc:606 msgid "" "Enable checking for the presence of problematic unicode characters in " "passwords." msgstr "" #: include/class_core.inc:617 msgid "" "Specify whether 'cn' or 'uid' style user DNs are generated. For more " "sophisticated control use the 'accountRDN' setting." msgstr "" #: include/class_core.inc:627 msgid "Location component for user storage inside of departments." msgstr "" #: include/class_core.inc:637 msgid "Location component for group storage inside of departments." msgstr "" #: include/class_core.inc:647 msgid "" "Count base for group IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:657 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:667 msgid "" "Lowest assignable group ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:677 msgid "" "Highest assignable group ID for use with the idAllocationMethod set to " "'pool'." msgstr "" #: include/class_core.inc:687 msgid "" "Lowest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:697 msgid "" "Highest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:707 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'baseIdHook' " "setting." msgstr "" #: include/class_core.inc:717 msgid "Connection URL for use with the gosa-ng service." msgstr "" #: include/class_core.inc:727 msgid "User name used to connect to the 'gosaRpcServer'." msgstr "" #: include/class_core.inc:737 #, fuzzy msgid "Password used to connect to the 'gosaRpcServer'." msgstr "Kan niet verbinden met de database server!" #: include/class_core.inc:747 msgid "Connection URI for use with the gosa-si service (obsolete)." msgstr "" #: include/class_core.inc:757 msgid "Number of seconds after a gosa-si connection is considered 'dead'." msgstr "" #: include/class_core.inc:768 msgid "User attribute which is used for log in." msgstr "" #: include/class_core.inc:779 #, fuzzy msgid "Local time zone." msgstr "Plaats" #: include/class_core.inc:789 msgid "" "Enable tagging of administrative units. This can be used in conjunction with " "ACLs (obsolete)." msgstr "" #: include/class_core.inc:799 msgid "Enable the use of {sasl} instead of {kerberos} for user realms." msgstr "" #: include/class_core.inc:809 msgid "" "Enable RFC 2307bis style groups. This combines the use of 'member' and " "'memberUid' attributes." msgstr "" #: include/class_core.inc:819 msgid "" "Adjusts the user DN generation to include the users personal title (only in " "conjunction with accountPrimaryAttribute)." msgstr "" #: include/class_core.inc:829 msgid "Script to be called for finding the next free id for groups or users." msgstr "" #: include/class_core.inc:838 msgid "" "Descriptive string for the automatic ID generator. Please read the FAQ file " "for more information." msgstr "" #: include/class_core.inc:848 msgid "Enable strict checking for user IDs and group names." msgstr "" #: include/class_core.inc:858 msgid "" "Lowest assignable user or group ID. Only active if idAllocationMethod is set " "to 'traditional'." msgstr "" #: include/class_core.inc:869 msgid "Attribute to be used for primary mail addresses." msgstr "" #: include/class_core.inc:879 msgid "Namespace used for shared folders." msgstr "" #: include/class_core.inc:889 msgid "" "Namespace rule to create user folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:899 msgid "" "Namespace rule to create folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:909 msgid "Seconds after an IMAP connection is considered dead." msgstr "" #: include/class_core.inc:920 msgid "Class name of the mail method to be used." msgstr "" #: include/class_core.inc:930 msgid "" "Enable slashes instead of dots as a name space separator for Cyrus IMAP." msgstr "" #: include/class_core.inc:940 msgid "" "Directory to store vacation templates. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:950 #, fuzzy msgid "Enable TLS for LDAP connections." msgstr "Max. verbrekingsduur" #: include/class_core.inc:960 msgid "Enable IVBB used by german authorities." msgstr "" #: include/class_core.inc:970 msgid "" "Maintain sambaIdmapEntry objects to improve performance on some Samba " "versions." msgstr "" #: include/class_core.inc:980 msgid "Enable checks to determine whether an account is expired or not." msgstr "" #: include/class_core.inc:990 msgid "" "String containing the SID for Samba setups without the Domain object in LDAP." msgstr "" #: include/class_core.inc:1000 msgid "" "String containing the RID base for Samba setups without the Domain object in " "LDAP." msgstr "" #: include/class_core.inc:1010 #, fuzzy msgid "Enable manual object snapshots." msgstr "Nieuwe objectgroep aanmaken" #: include/class_core.inc:1020 msgid "Base DN for snapshot storage." msgstr "" #: include/class_core.inc:1030 #, fuzzy msgid "DN of the snapshot administrator." msgstr "Windows beheerders" #: include/class_core.inc:1040 msgid "Password of the snapshot administrator." msgstr "" #: include/class_core.inc:1051 msgid "" "Method for user and group ID generation. Note: only the 'traditional' method " "is safe due to PHP limitations." msgstr "" #: include/class_core.inc:1060 msgid "URI of server to be used for snapshots." msgstr "" #: include/class_core.inc:1069 msgid "Enable transliteration of cyrillic characters for UID generation." msgstr "" #: include/class_config.inc:168 #, php-format msgid "XML error in gosa.conf: %s at line %d" msgstr "XML fout in gosa.conf: %s op regel %d" #: include/class_config.inc:367 msgid "Cannot bind to LDAP!" msgstr "" #: include/class_config.inc:713 #, fuzzy msgid "sambaSID and/or sambaRidBase missing in the configuration!" msgstr "SID en/of RIDBASE ontbreken in uw configuratie!" #: include/class_config.inc:1132 #, fuzzy msgid "Configuration" msgstr "Configuratie bestand" #: include/class_config.inc:1132 msgid "" "The configuration file you are using is outdated. Please move the GOsa " "configuration file away to run the GOsa setup again." msgstr "" #: include/class_config.inc:1174 include/class_config.inc:1205 #, php-format msgid "" "The snapshot functionality is enabled, but the required variable %s is not " "set." msgstr "" #: include/class_config.inc:1187 #, php-format msgid "" "The snapshot functionality is enabled, but the required compression module " "is missing. Please install %s." msgstr "" #: include/exporter/class_PDF.inc:24 #, fuzzy msgid "Page" msgstr "Pieper" #: include/exporter/class_cvsExporter.inc:48 msgid "CSV" msgstr "" #: include/exporter/class_pdfExporter.inc:18 msgid "No PDF export possible: there is no FPDF library installed." msgstr "" #: include/exporter/class_pdfExporter.inc:145 msgid "PDF" msgstr "" #: include/class_jsonRPC.inc:38 #, fuzzy, php-format msgid "The RPC connection (%s) specified for %s:%s is invalid: %s" msgstr "De opgegeven 'UID' waarde is niet correct." #: include/class_jsonRPC.inc:333 #, fuzzy, php-format msgid "Unknown HTTP status code %s!" msgstr "Onbekende FAI status %s" #: include/class_ItemSelector.inc:299 include/class_baseSelector.inc:235 #: include/class_releaseSelector.inc:262 msgid "Submit" msgstr "Verwerk" #: include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #, fuzzy, php-format msgid "Copy and paste failed!" msgstr "Kopieren & plakken wizard" #: include/class_CopyPasteHandler.inc:118 #, fuzzy, php-format msgid "Cannot set permission for %s" msgstr "Kan bestand '%s' niet aanmaken." #: include/class_CopyPasteHandler.inc:159 #, php-format msgid "'%s' is no valid LDAP object" msgstr "" #: include/class_CopyPasteHandler.inc:176 #, fuzzy, php-format msgid "No write permission in '%s'" msgstr "Kan bestand '%s' niet aanmaken." #: include/class_CopyPasteHandler.inc:193 #, fuzzy, php-format msgid "Cannot set permission for '%s'" msgstr "Kan bestand '%s' niet aanmaken." #: include/class_CopyPasteHandler.inc:396 #, php-format msgid "These objects will be pasted: %s" msgstr "" #: include/class_CopyPasteHandler.inc:420 #, php-format msgid "This object will be pasted: %s" msgstr "" #: include/class_CopyPasteHandler.inc:573 #, fuzzy msgid "Cannot paste" msgstr "Plakken onmogelijk" #: include/class_acl.inc:27 plugins/admin/acl/class_aclManagement.inc:25 #, fuzzy msgid "Access control" msgstr "Toegangsopties" #: include/class_acl.inc:28 #, fuzzy msgid "Manage access control lists" msgstr "Toegangsopties" #: include/class_acl.inc:126 include/class_acl.inc:550 #: include/class_acl.inc:554 include/class_acl.inc:708 #: include/class_acl.inc:1138 include/class_acl.inc:1259 #, fuzzy, php-format msgid "All users" msgstr "gebruikers" #: include/class_acl.inc:229 #: plugins/generic/references/class_aclResolver.inc:63 msgid "Reset ACLs" msgstr "" #: include/class_acl.inc:230 plugins/admin/acl/class_aclRole.inc:139 #: plugins/generic/references/class_aclResolver.inc:64 #, fuzzy msgid "One level" msgstr "Log prioriteit" #: include/class_acl.inc:231 include/class_acl.inc:236 #: plugins/admin/acl/class_aclRole.inc:140 #: plugins/generic/references/class_aclResolver.inc:65 #, fuzzy msgid "Current object" msgstr "Nieuw FAI object aanmaken" #: include/class_acl.inc:232 plugins/admin/acl/class_aclRole.inc:141 #: plugins/generic/references/class_aclResolver.inc:66 #, fuzzy msgid "Complete subtree" msgstr "Subonderdelen negeren" #: include/class_acl.inc:233 plugins/admin/acl/class_aclRole.inc:142 #: plugins/generic/references/class_aclResolver.inc:67 msgid "Complete subtree (permanent)" msgstr "" #: include/class_acl.inc:234 include/class_acl.inc:237 #: plugins/generic/references/class_aclResolver.inc:68 msgid "Use ACL defined in role" msgstr "" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:297 #: plugins/personal/generic/class_user.inc:1676 #: plugins/admin/users/class_userManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:185 msgid "Users" msgstr "Gebruikers" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:300 #: plugins/admin/groups/class_group.inc:1060 #: plugins/admin/groups/class_groupManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:177 msgid "Groups" msgstr "Groepen" #: include/class_acl.inc:255 #, fuzzy msgid "Section" msgstr "Actie" #: include/class_acl.inc:265 #, fuzzy msgid "Used" msgstr "Gebruiker" #: include/class_acl.inc:277 plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "~" msgstr "" #: include/class_acl.inc:293 plugins/admin/ogroups/class_ogroup.inc:889 #, fuzzy msgid "Member" msgstr "Groepsleden" #: include/class_acl.inc:293 plugins/admin/acl/class_aclRole.inc:182 #: plugins/admin/acl/class_aclRole.inc:744 #, fuzzy msgid "Permissions" msgstr "Rechten" #: include/class_acl.inc:555 include/class_acl.inc:1260 msgid "Pseudo-group for all users." msgstr "" #: include/class_acl.inc:669 msgid "No ACL settings for this category!" msgstr "" #: include/class_acl.inc:672 #, php-format msgid "ACLs for: %s" msgstr "" #: include/class_acl.inc:678 include/class_acl.inc:682 #, fuzzy msgid "category ACL" msgstr "Categorie" #: include/class_acl.inc:744 #, php-format msgid "Edit ACL for '%s' with scope '%s'" msgstr "" #: include/class_acl.inc:906 include/class_acl.inc:913 #, fuzzy msgid "Show/hide advanced settings" msgstr "Geavanceerde telefoon instellingen" #: include/class_acl.inc:924 #, fuzzy msgid "Create objects" msgstr "Nieuw FAI object aanmaken" #: include/class_acl.inc:925 #, fuzzy msgid "Move objects" msgstr "Lidmaatschap objecten" #: include/class_acl.inc:926 #, fuzzy msgid "Remove objects" msgstr "Lidmaatschap objecten" #: include/class_acl.inc:928 #: plugins/generic/references/class_aclResolver.inc:307 msgid "Restrict changes to user's own object" msgstr "" #: include/class_acl.inc:932 include/class_acl.inc:1041 #: include/class_acl.inc:1045 #: plugins/generic/references/class_aclResolver.inc:309 msgid "read" msgstr "alleen lezen" #: include/class_acl.inc:933 include/class_acl.inc:1043 #: include/class_acl.inc:1046 #: plugins/generic/references/class_aclResolver.inc:310 msgid "write" msgstr "afleveren, lezen & schrijven" #: include/class_acl.inc:937 #, fuzzy msgid "Complete object" msgstr "Nieuw FAI object aanmaken" #: include/class_acl.inc:1089 #, fuzzy, php-format msgid "Unknown ACL type '%s'!" msgstr "Onbekende FAI status %s" #: include/class_acl.inc:1134 #, fuzzy, php-format msgid "Unknown entry '%s'!" msgstr "Onbekende FAI status %s" #: include/class_acl.inc:1198 include/class_acl.inc:1200 #, fuzzy, php-format msgid "ACL role: %s" msgstr "Rechten" #: include/class_acl.inc:1200 #, fuzzy msgid "unknown ACL role" msgstr "! onbekend id" #: include/class_acl.inc:1208 #, php-format msgid "Contains settings for these objects: %s" msgstr "" #: include/class_acl.inc:1219 ihtml/themes/default/acl.tpl:53 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "Members" msgstr "Groepsleden" #: include/class_acl.inc:1225 #, fuzzy msgid "inactive" msgstr "actief" #: include/class_acl.inc:1225 #, fuzzy msgid "No members" msgstr "Groepsleden" #: include/class_acl.inc:1429 #, fuzzy msgid "Access control list" msgstr "Toegangsopties" #: include/class_acl.inc:1435 #, fuzzy msgid "ACL roles" msgstr "Rechten" #: include/class_acl.inc:1438 #, fuzzy msgid "ACL Entries" msgstr "Nieuw profiel" #: include/class_socketClient.inc:108 #, php-format msgid "Socket connection to %s:%s failed: %s" msgstr "" #: include/class_socketClient.inc:191 #, php-format msgid "Socket timeout of %s seconds reached!" msgstr "" #: include/class_userFilterEditor.inc:254 #, php-format msgid "Error in filter #%s: %s opening and %s closing brackets detected!" msgstr "" #: include/class_gosaSupportDaemon.inc:112 msgid "GOsa support daemon" msgstr "" #: include/class_gosaSupportDaemon.inc:787 #, fuzzy msgid "Cannot not parse XML!" msgstr "" "Er zitten te veel gebruikers in de database. Kan geen vrij ID toewijzen!" #: include/class_gosaSupportDaemon.inc:1184 #, fuzzy, php-format msgid "Cannot send abort event for entry %s!" msgstr "Kan bestand '%s' niet aanmaken." #: include/class_gosaSupportDaemon.inc:1204 #, fuzzy, php-format msgid "Cannot remove entry %s!" msgstr "Onbekende FAI status %s" #: include/class_GOsaRegistration.inc:127 msgid "" "UNIX-timestamp pointing to the date GOsa will ask for a registration again " "(-1 to disable)" msgstr "" #: include/class_SnapshotHandler.inc:45 include/class_SnapshotHandler.inc:76 #, php-format msgid "" "The snapshot functionality is enabled but the required variable %s is not " "set!" msgstr "" #: include/class_SnapshotHandler.inc:58 #, php-format msgid "" "The snapshot functionality is enabled but the required PHP compression " "module is missing: %s!" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:1 #: ihtml/themes/default/userFilterEditor.tpl:5 #, fuzzy msgid "Filter editor" msgstr "Terminal server" #: ihtml/themes/default/userFilterEditor.tpl:8 #, fuzzy msgid "Filter properties" msgstr "Bewerk algemene eigenschappen" #: ihtml/themes/default/userFilterEditor.tpl:40 #: plugins/personal/generic/class_user.inc:1664 #: plugins/personal/generic/generic.tpl:604 msgid "Public visible" msgstr "Publiek zichtbaar" #: ihtml/themes/default/userFilterEditor.tpl:45 #, fuzzy msgid "Enabled" msgstr "gedeactiveerd" #: ihtml/themes/default/userFilterEditor.tpl:49 msgid "Categories where the filter is visible" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:69 #, fuzzy msgid "Query" msgstr "gebruikers" #: ihtml/themes/default/acl.tpl:7 plugins/admin/acl/acl_role.tpl:3 #: plugins/admin/acl/acl_role.tpl:4 msgid "Assigned ACL for current entry" msgstr "" #: ihtml/themes/default/acl.tpl:10 plugins/admin/acl/acl_role.tpl:38 #, fuzzy msgid "New ACL" msgstr "Nieuw" #: ihtml/themes/default/acl.tpl:19 plugins/admin/acl/acl_role.tpl:45 #, fuzzy msgid "ACL type" msgstr "type" #: ihtml/themes/default/acl.tpl:23 ihtml/themes/default/acl.tpl:28 #: plugins/admin/acl/acl_role.tpl:45 #, fuzzy msgid "Select an ACL type" msgstr "Selecteer een basis" #: ihtml/themes/default/acl.tpl:40 #, fuzzy msgid "Additional filter options" msgstr "Programma instellingen" #: ihtml/themes/default/acl.tpl:61 #, fuzzy msgid "Add all users" msgstr "gebruikers" #: ihtml/themes/default/acl.tpl:68 plugins/admin/acl/acl_role.tpl:51 #, fuzzy msgid "List of available ACL categories" msgstr "Lijst met beschikbare pakketten" #: ihtml/themes/default/acl.tpl:76 #, fuzzy msgid "ACL for this object" msgstr "Zoeken naar iconv ondersteuning" #: ihtml/themes/default/acl.tpl:82 #, fuzzy msgid "Available roles" msgstr "Beschikbare programma's" #: ihtml/themes/default/removeEntries.tpl:4 #: plugins/addons/propertyEditor/property-list.tpl:7 #, fuzzy msgid "Attention" msgstr "Nagios authenticatie" #: ihtml/themes/default/removeEntries.tpl:14 #, fuzzy msgid "" "If you're sure you want to do this press 'Delete' to continue or 'Cancel' to " "abort." msgstr "" "Indien u zeker bent drukt u dan 'Verwijderen' om door te gaan of 'Annuleren' " "om te annuleren." #: ihtml/themes/default/userFilter.tpl:1 #, fuzzy msgid "List of defined filters" msgstr "Configuratie bestand" #: ihtml/themes/default/snapshotdialog.tpl:3 #, fuzzy msgid "Restoring object snapshots" msgstr "Nieuwe objectgroep aanmaken" #: ihtml/themes/default/snapshotdialog.tpl:6 msgid "" "This procedure will restore a snapshot of the selected object. It will " "replace the existing object after pressing the restore button." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:9 msgid "" "DNS configuration and some database entries cannot be restored. They need to " "be recreated manually." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:12 msgid "" "Don't forget to check references to other objects, for example does the " "selected printer still exists ?" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:29 #, fuzzy msgid "There is no snapshot available that can be restored" msgstr "" "Er is geen MySQL extensie beschikbaar. Controleer uw PHP installatie a.u.b." #: ihtml/themes/default/snapshotdialog.tpl:31 msgid "Choose a snapshot and click the folder image, to restore the snapshot" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:50 #, fuzzy msgid "Creating object snapshots" msgstr "Nieuwe objectgroep aanmaken" #: ihtml/themes/default/snapshotdialog.tpl:53 msgid "" "This procedure will create a snapshot of the selected object. It will be " "stored inside a special branch of your directory system and can be restored " "later on." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:56 msgid "" "Remember that database entries, DNS configurations and possibly created " "zones in server extensions will not be stored in the snapshot." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:71 #, fuzzy msgid "Time stamp" msgstr "Timeout" #: ihtml/themes/default/snapshotdialog.tpl:80 msgid "Reason for generating this snapshot" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:88 #: plugins/admin/departments/class_department.inc:564 #: plugins/admin/departments/class_department.inc:646 #: plugins/admin/users/template.tpl:60 msgid "Continue" msgstr "Doorgaan" #: ihtml/themes/default/password.tpl:5 #, fuzzy msgid "Change your password" msgstr "Verander wachtwoord" #: ihtml/themes/default/password.tpl:61 msgid "Your password has been changed successfully." msgstr "" #: ihtml/themes/default/password.tpl:65 html/main.php:220 #: plugins/personal/password/class_password.inc:160 #: plugins/personal/password/class_password.inc:163 #: plugins/personal/password/class_password.inc:166 #: plugins/admin/users/class_userManagement.inc:400 #, fuzzy msgid "Password change" msgstr "Het veranderen van het wachtwoord is niet toegestaan" #: ihtml/themes/default/password.tpl:72 msgid "" "Enter the current password and the new password (twice) in the fields below " "and press the 'Set password' button." msgstr "" #: ihtml/themes/default/password.tpl:74 #: plugins/personal/password/class_password.inc:26 #: plugins/admin/users/user-list.xml:128 plugins/admin/users/user-list.xml:230 msgid "Change password" msgstr "Verander wachtwoord" #: ihtml/themes/default/password.tpl:77 ihtml/themes/default/password.tpl:79 msgid "Directory" msgstr "Directory" #: ihtml/themes/default/password.tpl:86 ihtml/themes/default/password.tpl:90 #: ihtml/themes/default/login.tpl:37 ihtml/themes/default/login.tpl:40 #, fuzzy msgid "User name" msgstr "Gebruikersnaam" #: ihtml/themes/default/password.tpl:97 #: plugins/personal/myaccount/password.tpl:12 #: plugins/personal/myaccount/password.tpl:41 #: plugins/personal/password/password.tpl:18 #: plugins/personal/password/password.tpl:47 msgid "Current password" msgstr "Huidig wachtwoord" #: ihtml/themes/default/password.tpl:103 #: plugins/personal/myaccount/password.tpl:18 #: plugins/personal/myaccount/password.tpl:71 #: plugins/personal/password/password.tpl:24 #: plugins/personal/password/password.tpl:78 #: plugins/admin/users/password.tpl:13 plugins/admin/users/password.tpl:65 #: plugins/admin/users/class_userManagement.inc:319 msgid "New password" msgstr "Nieuw wachtwoord" #: ihtml/themes/default/password.tpl:110 #: plugins/personal/myaccount/password.tpl:25 #: plugins/personal/myaccount/password.tpl:78 #: plugins/personal/password/password.tpl:31 #: plugins/personal/password/password.tpl:85 #: plugins/admin/users/password.tpl:20 plugins/admin/users/password.tpl:72 msgid "Repeat new password" msgstr "Herhaal het nieuwe wachtwoord" #: ihtml/themes/default/password.tpl:117 #: plugins/personal/myaccount/password.tpl:31 #: plugins/personal/myaccount/password.tpl:84 #: plugins/personal/password/password.tpl:37 #: plugins/personal/password/password.tpl:91 #, fuzzy msgid "Password strength" msgstr "Wachtwoord encryptie" #: ihtml/themes/default/password.tpl:131 #, fuzzy msgid "Click here to change your password" msgstr "Klik hier om uw wachtwoord te veranderen." #: ihtml/themes/default/password.tpl:131 #: plugins/personal/myaccount/password.tpl:96 #: plugins/personal/password/password.tpl:103 #: plugins/admin/users/password.tpl:101 msgid "Set password" msgstr "Wachtwoord instellen" #: ihtml/themes/default/islocked.tpl:4 msgid "Locking conflict detected" msgstr "Er is een blokkade conflict gedetecteerd" #: ihtml/themes/default/islocked.tpl:14 #, fuzzy msgid "" "If this lock detection is false, the other person has obviously closed the " "web browser during the edit operation. You may want to take over the lock by " "pressing the 'Edit anyway' button." msgstr "" "Indien deze blokkade detectie foutief is dan heeft de andere persoon de " "webbrowser afgesloten tijdens de bewerking. U kunt de blokkade in dit geval " "overnemen door de Alsnog bewerken knop te gebruiken." #: ihtml/themes/default/islocked.tpl:23 #, fuzzy msgid "Read only" msgstr "Lijst herladen" #: ihtml/themes/default/copyPasteDialog.tpl:1 #, fuzzy msgid "Copy & paste wizard" msgstr "Kopieren & plakken wizard" #: ihtml/themes/default/copyPasteDialog.tpl:7 #, fuzzy msgid "" "Some values need to be unique in the complete directory while some " "combinations make no sense. Please edit the values below to fulfill the " "policies." msgstr "" "Somige waardes moeten uniek zijn binnen de gehele directory, terwijl sommige " "combinaties geen zin hebben. GOsa toont de relevante attributen. Bewaar de " "waardes hieronder a.u.b. om aan deze vereisten te voldoen." #: ihtml/themes/default/copyPasteDialog.tpl:9 msgid "Remember that some properties like taken snapshots will not be copied!" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:10 msgid "" "Or if you copy or cut an entry within GOsa and delete the source object, you " "may get errors while pasting this object again!" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:23 #, fuzzy msgid "Cancel all" msgstr "Annuleren" #: ihtml/themes/default/copyPasteDialog.tpl:28 msgid "Operation complete" msgstr "Bewerking afgerond" #: ihtml/themes/default/copyPasteDialog.tpl:30 #: setup/class_setupStep_Finish.inc:39 msgid "Finish" msgstr "Opslaan" #: ihtml/themes/default/logout.tpl:6 msgid "Your GOsa session has expired!" msgstr "Uw GOsa sessie is verlopen!" #: ihtml/themes/default/logout.tpl:9 #, fuzzy msgid "" "It has been a while since your last interaction with GOsa took place. Your " "session has been closed for security reasons. Please login again to continue " "with administrative tasks." msgstr "" "Uw laatste interactie met de GOsa webinterface is enige tijd geleden. Uit " "veiligheidsoverwegingen is de sessie gesloten. Om door te gaan met " "administratieve taken, dient u opnieuw in te loggen." #: ihtml/themes/default/logout.tpl:16 #, fuzzy msgid "Login again" msgstr "Opnieuw inloggen" #: ihtml/themes/default/login.tpl:31 #, fuzzy msgid "Login to GOsa" msgstr "Welkom bij het GOsa installatie programma!" #: ihtml/themes/default/login.tpl:47 setup/setup_migrate.tpl:53 #: plugins/personal/generic/paste_generic.tpl:21 #: plugins/generic/dashBoard/Register/register.tpl:53 msgid "Password" msgstr "Wachtwoord" #: ihtml/themes/default/login.tpl:61 msgid "Choose the directory to work on" msgstr "" #: ihtml/themes/default/login.tpl:66 msgid "Click here to log in" msgstr "Klik hier om in te loggen" #: ihtml/themes/default/login.tpl:66 ihtml/themes/default/login.tpl:67 #, fuzzy msgid "Log in" msgstr "Inlognaam" #: ihtml/themes/default/sizelimit.tpl:3 msgid "" "The size limit option makes LDAP operations faster and saves the LDAP server " "from getting too much load. The easiest way to handle big databases without " "long timeouts would be to limit your search to smaller values and use " "filters to get the entries you are looking for." msgstr "" "De grootte limiet optie maakt LDAP bewerkingen sneller en behoedt de LDAP " "server voor een te grote werkdruk. De eenvoudigste manier om met grote " "databases te werken zonder lange timeouts is door zoekopdrachten in grootte " "te beperken en door filters te gebruiken voor de informatie die u zoekt." #: ihtml/themes/default/sizelimit.tpl:8 msgid "Please choose the way to react for this session" msgstr "Kies a.u.b. de manier waarop gereageerd moet worden voor deze sessie" #: ihtml/themes/default/sizelimit.tpl:10 msgid "ignore this error and show all entries the LDAP server returns" msgstr "Negeer deze fout en toon alle gegevens die de LDAP server teruggeeft" #: ihtml/themes/default/sizelimit.tpl:11 #, fuzzy msgid "" "ignore this error and show all entries that fit into the defined size limit" msgstr "" "Negeer deze fout en toon alle gegevens die passen binnen de gedefiniëerde " "grootte limiet en laat me daarvoor in de plaats filters gebruiken" #: ihtml/themes/default/infoPage.tpl:4 #, fuzzy msgid "User information" msgstr "Persoonlijke informatie" #: ihtml/themes/default/infoPage.tpl:17 setup/setup_migrate.tpl:49 #: plugins/personal/posix/class_posixAccount.inc:1369 msgid "User ID" msgstr "Gebruikers ID" #: ihtml/themes/default/infoPage.tpl:18 #: plugins/personal/generic/class_user.inc:1702 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:48 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:48 #: plugins/admin/users/user-list.xml:49 #: plugins/generic/references/class_reference.inc:87 msgid "Surname" msgstr "Achternaam" #: ihtml/themes/default/infoPage.tpl:19 #: plugins/personal/generic/class_user.inc:1326 #: plugins/personal/generic/class_user.inc:1373 #: plugins/personal/generic/class_user.inc:1703 #: plugins/personal/generic/class_user.inc:1857 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:40 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:40 #: plugins/admin/users/class_userManagement.inc:552 #: plugins/admin/users/user-list.xml:57 #: plugins/generic/references/class_reference.inc:87 msgid "Given name" msgstr "Naam" #: ihtml/themes/default/infoPage.tpl:20 #: plugins/personal/generic/class_user.inc:1708 #: plugins/personal/generic/generic.tpl:92 msgid "Personal title" msgstr "Aanhef" #: ihtml/themes/default/infoPage.tpl:21 #: plugins/personal/generic/class_user.inc:1709 #: plugins/personal/generic/generic.tpl:102 msgid "Academic title" msgstr "Academische titel" #: ihtml/themes/default/infoPage.tpl:22 #: plugins/personal/generic/class_user.inc:1737 msgid "Home postal address" msgstr "Adres thuis" #: ihtml/themes/default/infoPage.tpl:23 #: plugins/personal/generic/class_user.inc:1368 #: plugins/personal/generic/class_user.inc:1711 #: plugins/personal/generic/generic.tpl:117 msgid "Date of birth" msgstr "Geboortedatum" #: ihtml/themes/default/infoPage.tpl:24 #: plugins/admin/groups/class_groupManagement.inc:165 #: plugins/admin/ogroups/tabs_ogroups.inc:155 #: plugins/admin/users/class_userManagement.inc:897 #: plugins/generic/infoPage/class_infoPage.inc:112 msgid "Mail" msgstr "E-mail" #: ihtml/themes/default/infoPage.tpl:25 #: plugins/personal/generic/class_user.inc:1738 #, fuzzy msgid "Home phone number" msgstr "Telefoonnummer" #: ihtml/themes/default/infoPage.tpl:30 setup/setup_feedback.tpl:10 #: setup/setup_feedback.tpl:12 plugins/personal/generic/class_user.inc:1720 #: plugins/personal/generic/generic.tpl:298 #: plugins/admin/departments/dep-filter.xml:91 #: plugins/admin/departments/dep-list.xml:47 #: plugins/admin/departments/dep-list.xml:131 #: plugins/admin/departments/organization.tpl:4 #: plugins/admin/departments/class_organizationGeneric.inc:113 #: plugins/admin/departments/class_organizationGeneric.inc:114 #: plugins/admin/departments/class_departmentManagement.inc:241 msgid "Organization" msgstr "Organisatie" #: ihtml/themes/default/infoPage.tpl:31 #: plugins/admin/departments/dep-filter.xml:35 #: plugins/admin/departments/generic.tpl:4 #, fuzzy msgid "Organizational Unit" msgstr "Afdeling" #: ihtml/themes/default/infoPage.tpl:32 #: plugins/personal/generic/class_user.inc:1734 #: plugins/personal/generic/generic.tpl:436 #: plugins/admin/departments/organization.tpl:82 #: plugins/admin/departments/organization.tpl:94 #: plugins/admin/departments/class_department.inc:680 #: plugins/admin/departments/class_organizationGeneric.inc:130 #: plugins/admin/departments/generic.tpl:83 #: plugins/admin/departments/generic.tpl:85 #: plugins/admin/departments/generic.tpl:95 #: plugins/admin/departments/class_localityGeneric.inc:91 msgid "Location" msgstr "Plaats" #: ihtml/themes/default/infoPage.tpl:33 #: plugins/personal/generic/class_user.inc:1665 #: plugins/personal/generic/generic.tpl:535 msgid "Street" msgstr "Straat" #: ihtml/themes/default/infoPage.tpl:34 #: plugins/personal/generic/class_user.inc:1722 #, fuzzy msgid "Department number" msgstr "Afdelingnaam" #: ihtml/themes/default/infoPage.tpl:36 #: plugins/personal/generic/class_user.inc:1724 #, fuzzy msgid "Employee number" msgstr "Functie" #: ihtml/themes/default/infoPage.tpl:37 #: plugins/personal/generic/class_user.inc:1725 #: plugins/personal/generic/generic.tpl:330 msgid "Employee type" msgstr "Functie" #: ihtml/themes/default/infoPage.tpl:48 #: plugins/personal/generic/paste_generic.tpl:1 msgid "User settings" msgstr "Gebruikersinstellingen" #: ihtml/themes/default/infoPage.tpl:55 #, fuzzy msgid "" "You have no permission to edit any properties. Please contact your " "administrator." msgstr "" "Kan de blokkade informatie niet ophalen uit de LDAP database. Controleer a.u." "b. de 'config' regel in gosa.conf!" #: ihtml/themes/default/infoPage.tpl:61 #, fuzzy msgid "Administrative contact" msgstr "Administratieve instellingen" #: ihtml/themes/default/infoPage.tpl:72 plugins/generic/welcome/welcome.tpl:8 msgid "The GOsa team" msgstr "Het GOsa team" #: ihtml/themes/default/msg_dialog.tpl:55 #: ihtml/themes/default/msg_dialog.tpl:103 msgid "Error message title" msgstr "" #: ihtml/themes/default/msg_dialog.tpl:66 #: ihtml/themes/default/msg_dialog.tpl:115 #, fuzzy msgid "Error message" msgstr "Bericht in wachtstand plaatsen" #: ihtml/themes/default/ldifViewer.tpl:1 msgid "Raw LDAP entry" msgstr "" #: ihtml/themes/default/framework.tpl:9 #, fuzzy msgid "Log out" msgstr "Uitloggen" #: ihtml/themes/default/framework.tpl:10 msgid "" "You are currently editing a database entry. Do you want to dismiss the " "changes?" msgstr "" "U bent momenteel database gegevens aan het bewerken. Wilt u eventuele " "wijzigingen ongedaan maken?" #: ihtml/themes/default/framework.tpl:22 #, fuzzy, php-format msgid "Session expires in %d!" msgstr "De sessie zal niet versleuteld zijn." #: ihtml/themes/default/help.tpl:9 msgid "GOsa help viewer" msgstr "GOsa help" #: ihtml/themes/default/help.tpl:15 msgid "Index" msgstr "Index" #: ihtml/themes/default/logout-close.tpl:5 #, fuzzy msgid "Your GOsa session has been closed!" msgstr "Uw GOsa sessie is verlopen!" #: ihtml/themes/default/logout-close.tpl:7 msgid "" "Please close this browser window and clean the authentication caches to " "avoid an automatic re-authentication by your browser." msgstr "" #: setup/class_setupStep_Migrate.inc:51 setup/class_setupStep_Migrate.inc:52 #, fuzzy msgid "LDAP inspection" msgstr "PHP configuratie inspectie" #: setup/class_setupStep_Migrate.inc:53 msgid "Analyze your current LDAP for GOsa compatibility" msgstr "" #: setup/class_setupStep_Migrate.inc:59 #, fuzzy msgid "Checking for root object" msgstr "Zoeken naar iconv ondersteuning" #: setup/class_setupStep_Migrate.inc:65 #, fuzzy msgid "Inspecting object classes in root object" msgstr "Zoeken naar iconv ondersteuning" #: setup/class_setupStep_Migrate.inc:71 #, fuzzy msgid "Checking permission for LDAP database" msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #: setup/class_setupStep_Migrate.inc:78 #, fuzzy msgid "Checking for super administrator" msgstr "Zoeken naar enkele additionele programma's" #: setup/class_setupStep_Migrate.inc:118 setup/class_setupStep_Migrate.inc:186 #: setup/class_setupStep_Migrate.inc:709 #, fuzzy msgid "LDAP query failed" msgstr "De database zoekopdracht is mislukt" #: setup/class_setupStep_Migrate.inc:119 setup/class_setupStep_Migrate.inc:187 #: setup/class_setupStep_Migrate.inc:710 msgid "Possibly the 'root object' is missing." msgstr "" #: setup/class_setupStep_Migrate.inc:132 setup/class_setupStep_Migrate.inc:145 #: setup/class_setupStep_Migrate.inc:307 setup/class_setupStep_Migrate.inc:661 #: setup/class_setupStep_Migrate.inc:674 setup/class_setupStep_Migrate.inc:729 #: setup/class_setupStep_Migrate.inc:750 setup/class_setupStep_Migrate.inc:802 msgid "Failed" msgstr "Mislukt" #: setup/class_setupStep_Migrate.inc:134 setup/class_setupStep_Migrate.inc:147 #, php-format msgid "" "The specified user '%s' does not have full access to your LDAP database." msgstr "" #: setup/class_setupStep_Migrate.inc:308 msgid "There is no GOsa administrator account inside your LDAP." msgstr "" #: setup/class_setupStep_Migrate.inc:309 #: plugins/admin/groups/group-list.xml:73 #: plugins/admin/ogroups/ogroup-list.xml:73 plugins/admin/acl/acl-list.xml:76 #: plugins/admin/departments/dep-list.xml:98 #: plugins/admin/users/user-list.xml:89 msgid "Create" msgstr "Aanmaken" #: setup/class_setupStep_Migrate.inc:377 #, fuzzy msgid "Migration error" msgstr "Aanmaken" #: setup/class_setupStep_Migrate.inc:377 #, php-format msgid "Cannot add ACL for user '%s':" msgstr "" #: setup/class_setupStep_Migrate.inc:415 setup/class_setupStep_Migrate.inc:425 #, fuzzy msgid "Input error" msgstr "PHP fout" #: setup/class_setupStep_Migrate.inc:415 #: plugins/personal/posix/paste_generic.tpl:38 #: plugins/personal/posix/generic.tpl:64 #: plugins/personal/posix/class_posixAccount.inc:910 #: plugins/personal/posix/class_posixAccount.inc:913 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/generic/references/class_reference.inc:87 msgid "UID" msgstr "UID" #: setup/class_setupStep_Migrate.inc:420 #, fuzzy msgid "Password error" msgstr "Wachtwoord verloopt op" #: setup/class_setupStep_Migrate.inc:420 #, fuzzy msgid "Provided passwords do not match!" msgstr "" "Het nieuwe wachtwoord en het herhaalde wachtwoord komen niet met elkaar " "overeen!" #: setup/class_setupStep_Migrate.inc:425 #, fuzzy msgid "Specify a valid user ID!" msgstr "Geef a.u.b. een geldige gebruikersnaam op!" #: setup/class_setupStep_Migrate.inc:450 #, php-format msgid "Adding an administrative user failed: object '%s' already exists!" msgstr "" #: setup/class_setupStep_Migrate.inc:662 msgid "" "The LDAP root object is missing. It is required to use your LDAP service." msgstr "" #: setup/class_setupStep_Migrate.inc:663 setup/class_setupStep_Migrate.inc:676 #, fuzzy msgid "Try to create root object" msgstr "Nieuw FAI object aanmaken" #: setup/class_setupStep_Migrate.inc:675 msgid "Root object couldn't be created, you should try it on your own." msgstr "" #: setup/class_setupStep_Migrate.inc:730 #, fuzzy, php-format msgid "Missing GOsa object class '%s'!" msgstr "Toon FAI sjabloon objecten" #: setup/class_setupStep_Migrate.inc:731 #, fuzzy msgid "Please check your installation." msgstr "Controleer a.u.b. de gebruikersnaam/wachtwoord combinatie." #: setup/class_setupStep_Migrate.inc:752 #, php-format msgid "" "Cannot handle the structural object type of your root object. Please try to " "add the object class '%s' manually." msgstr "" #: setup/class_setupStep_Migrate.inc:804 setup/setup_migrate.tpl:32 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:181 #, fuzzy msgid "Migrate" msgstr "Aanmaken" #: setup/setup_checks.tpl:2 msgid "" "This step checks if your PHP server has all required modules and " "configuration settings." msgstr "" #: setup/setup_checks.tpl:5 #, fuzzy msgid "Inspection" msgstr "PHP configuratie inspectie" #: setup/setup_checks.tpl:8 msgid "PHP module and extension checks" msgstr "" #: setup/setup_checks.tpl:10 msgid "Basic checks" msgstr "" #: setup/setup_checks.tpl:38 setup/setup_checks.tpl:79 msgid "GOsa will NOT run without fixing this." msgstr "" #: setup/setup_checks.tpl:40 setup/setup_checks.tpl:81 msgid "GOsa will run without fixing this." msgstr "" #: setup/setup_checks.tpl:50 #, fuzzy msgid "PHP setup configuration" msgstr "FAX database" #: setup/setup_checks.tpl:50 #, fuzzy msgid "show information" msgstr "Persoonlijke informatie" #: setup/setup_checks.tpl:51 msgid "Extended checks" msgstr "" #: setup/class_setupStep_Finish.inc:40 #, fuzzy msgid "Write configuration file" msgstr "Configuratie bestand" #: setup/class_setupStep_Finish.inc:41 #, fuzzy msgid "Finish - write the configuration file" msgstr "Configuratie bestand" #: setup/class_setupStep_Finish.inc:106 #, fuzzy msgid "" "Your configuration file is currently world readable. Please update the file " "permissions!" msgstr "GOsa configuratie %s/gosa.conf is niet leesbaar. Geannuleerd." #: setup/class_setupStep_Finish.inc:108 #, fuzzy msgid "The configuration is currently not readable or it does not exists." msgstr "GOsa configuratie %s/gosa.conf is niet leesbaar. Geannuleerd." #: setup/class_setupStep_Finish.inc:117 #, fuzzy, php-format msgid "" "After downloading and placing the file under %s, please make sure that the " "user the web server is running with is able to read %s, while other users " "shouldn't. You may want to execute these commands to achieve this " "requirement:" msgstr "" "Controleer dat de webserver het bestand kan lezen (zonder dat andere " "gebruikers dit kunnen) nadat u het bestand in de directory /etc/gosa " "geplaatst heeft. U wil misschien de volgende commando's uitvoeren om aan " "deze vereiste te voldoen: " #: setup/class_setupStep_Ldap.inc:54 #, fuzzy msgid "LDAP setup" msgstr "LDAP server" #: setup/class_setupStep_Ldap.inc:55 #, fuzzy msgid "LDAP connection setup" msgstr "Bel..." #: setup/class_setupStep_Ldap.inc:56 #, fuzzy msgid "" "This dialog performs the basic configuration of the LDAP connectivity for " "GOsa." msgstr "" "De volgende velden definiëren de basis configuratie van GOsa's gedrag en " "beïnvloeden diverse eigenschappen in uw hoofd configuratie." #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:41 #: setup/setup_feedback.tpl:52 msgid "No" msgstr "Nee" #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:39 #: setup/setup_feedback.tpl:50 msgid "Yes" msgstr "Ja" #: setup/class_setupStep_Ldap.inc:113 #, fuzzy, php-format msgid "Anonymous bind to server '%s' failed!" msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." #: setup/class_setupStep_Ldap.inc:115 #, fuzzy, php-format msgid "Bind as user '%s' failed!" msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." #: setup/class_setupStep_Ldap.inc:120 #, fuzzy, php-format msgid "Anonymous bind to server '%s' succeeded." msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." #: setup/class_setupStep_Ldap.inc:121 #, fuzzy msgid "Please specify user and password!" msgstr "Geef a.u.b. uw wachtwoord op!" #: setup/class_setupStep_Ldap.inc:123 #, fuzzy, php-format msgid "Bind as user '%s' to server '%s' succeeded!" msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." #: setup/class_setupStep_Feedback.inc:94 #, fuzzy msgid "UNIX accounts/groups" msgstr "Account code" #: setup/class_setupStep_Feedback.inc:96 #, fuzzy msgid "Samba management" msgstr "Systeembeheer" #: setup/class_setupStep_Feedback.inc:98 #, fuzzy msgid "Mail system management" msgstr "Systeembeheer" #: setup/class_setupStep_Feedback.inc:100 #, fuzzy msgid "FAX system administration" msgstr "Gebruikersbeheer" #: setup/class_setupStep_Feedback.inc:102 #, fuzzy msgid "Asterisk administration" msgstr "Gebruikersbeheer" #: setup/class_setupStep_Feedback.inc:104 #, fuzzy msgid "System inventory" msgstr "Inventaris verwijderen" #: setup/class_setupStep_Feedback.inc:106 #, fuzzy msgid "System/Configuration management" msgstr "Systeembeheer" #: setup/class_setupStep_Feedback.inc:108 #, fuzzy msgid "Address book" msgstr "Adresboek" #: setup/class_setupStep_Feedback.inc:114 msgid "Feedback" msgstr "" #: setup/class_setupStep_Feedback.inc:115 #, fuzzy msgid "Get notifications or send feedback" msgstr "Secties voor deze versie" #: setup/class_setupStep_Feedback.inc:116 #, fuzzy msgid "Notification and feedback" msgstr "Geen certificaat geinstalleerd" #: setup/class_setupStep_Feedback.inc:132 setup/class_setup.inc:74 #, fuzzy msgid "Setup error" msgstr "Systeem status" #: setup/class_setupStep_Feedback.inc:140 #: setup/class_setupStep_Feedback.inc:147 msgid "Feedback error" msgstr "" #: setup/class_setupStep_Feedback.inc:140 #, php-format msgid "Cannot send feedback to '%s': %s" msgstr "" #: setup/class_setupStep_Feedback.inc:147 msgid "Cannot send feedback: service temporarily unavailable" msgstr "" #: setup/class_setupStep_Feedback.inc:181 #, fuzzy msgid "Please specify a valid email address." msgstr "Geef a.u.b. een geldige scriptnaam op." #: setup/class_setupStep_Feedback.inc:185 msgid "" "You have to select at least one of both options, subscribe or send feedback." msgstr "" #: setup/setup_license.tpl:3 msgid "" "GOsa is developed under the terms of the GNU General Public License v2. " "Please accept the terms below." msgstr "" #: setup/setup_license.tpl:11 msgid "I have read the license and accept it" msgstr "" #: setup/setup_ldap.tpl:2 msgid "" "The main data source used in GOsa is LDAP. In order to access the " "information stored there, please enter the required information." msgstr "" #: setup/setup_ldap.tpl:9 msgid "Please choose the LDAP user to be used by GOsa" msgstr "" #: setup/setup_ldap.tpl:28 setup/setup_ldap.tpl:29 #, fuzzy msgid "LDAP connection" msgstr "Max. verbrekingsduur" #: setup/setup_ldap.tpl:31 msgid "Location name" msgstr "Naam van de locatie" #: setup/setup_ldap.tpl:35 #, fuzzy msgid "Connection URI" msgstr "Verbindingings URL" #: setup/setup_ldap.tpl:39 #, fuzzy msgid "TLS connection" msgstr "Bel..." #: setup/setup_ldap.tpl:47 #: plugins/personal/posix/trustSelect/trust-list.tpl:12 #: plugins/personal/posix/groupSelect/group-list.tpl:12 #: plugins/personal/generic/class_user.inc:1714 #: plugins/personal/generic/generic.tpl:167 #: plugins/addons/dyngroup/dyngroup.tpl:5 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:127 #: plugins/admin/groups/singleUserSelect/singleUser-list.tpl:12 #: plugins/admin/groups/class_group.inc:1078 #: plugins/admin/groups/group-list.tpl:12 plugins/admin/groups/generic.tpl:39 #: plugins/admin/groups/userSelect/user-list.tpl:12 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.tpl:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.tpl:12 #: plugins/admin/ogroups/ogroup-list.tpl:12 #: plugins/admin/ogroups/generic.tpl:26 #: plugins/admin/ogroups/class_ogroup.inc:886 #: plugins/admin/acl/acl_role.tpl:27 plugins/admin/acl/acl-list.tpl:12 #: plugins/admin/acl/class_aclRole.inc:742 #: plugins/admin/departments/dcObject.tpl:28 #: plugins/admin/departments/country.tpl:28 #: plugins/admin/departments/class_countryGeneric.inc:94 #: plugins/admin/departments/organization.tpl:39 #: plugins/admin/departments/class_department.inc:677 #: plugins/admin/departments/class_domain.inc:92 #: plugins/admin/departments/class_organizationGeneric.inc:125 #: plugins/admin/departments/generic.tpl:39 #: plugins/admin/departments/locality.tpl:28 #: plugins/admin/departments/dep-list.tpl:12 #: plugins/admin/departments/class_localityGeneric.inc:94 #: plugins/admin/departments/class_dcObject.inc:93 #: plugins/admin/departments/domain.tpl:28 #: plugins/admin/users/user-list.tpl:12 msgid "Base" msgstr "Basis" #: setup/setup_ldap.tpl:57 #, fuzzy msgid "Reload" msgstr "Lezen" #: setup/setup_ldap.tpl:63 setup/setup_ldap.tpl:64 #, fuzzy msgid "Authentication" msgstr "Nagios authenticatie" #: setup/setup_ldap.tpl:66 #, fuzzy msgid "Administrator DN" msgstr "Beheer" #: setup/setup_ldap.tpl:71 #, fuzzy msgid "Select user" msgstr "Verwijder gebruiker" #: setup/setup_ldap.tpl:81 msgid "Automatically append LDAP base to administrator DN" msgstr "" #: setup/setup_ldap.tpl:85 #, fuzzy msgid "Administrator password" msgstr "Beheerders wachtwoord" #: setup/setup_ldap.tpl:91 setup/setup_ldap.tpl:92 #, fuzzy msgid "Schema based settings" msgstr "Samba Instellingen" #: setup/setup_ldap.tpl:94 msgid "Use RFC 2307bis compliant groups" msgstr "" #: setup/setup_ldap.tpl:105 setup/setup_ldap.tpl:106 #, fuzzy msgid "Current status" msgstr "Systeem status" #: setup/setup_ldap.tpl:108 plugins/admin/ogroups/class_ogroup.inc:244 #: plugins/generic/dashBoard/dbInformation/contents.tpl:1 msgid "Information" msgstr "Informatie" #: setup/setup_language.tpl:3 #, fuzzy msgid "Please select the preferred language" msgstr "Voorkeurstaal" #: setup/setup_language.tpl:5 msgid "" "At this point, you can select the site wide default language. Choosing " "'automatic' will use the language requested by the browser. This setting can " "be overridden per user." msgstr "" #: setup/setup_language.tpl:9 #, fuzzy msgid "Please select your preferred language here" msgstr "Voorkeurstaal" #: setup/setup_welcome.tpl:3 msgid "How to get started" msgstr "" #: setup/setup_welcome.tpl:5 msgid "" "This seems to be the first time you run GOsa on this system. To start the " "GOsa web interface you need a working configuration file, which can be " "generated by this wizard." msgstr "" #: setup/setup_welcome.tpl:9 #, fuzzy msgid "What you need to generate a configuration file:" msgstr "Configuratie bestand" #: setup/setup_welcome.tpl:13 #, fuzzy msgid "The hostname of your LDAP server" msgstr "bij het bewerken van LDAP server %s" #: setup/setup_welcome.tpl:14 msgid "Installed GOsa and supplementary schema" msgstr "" #: setup/setup_welcome.tpl:15 msgid "The LDAP base of your LDAP directory" msgstr "" #: setup/setup_welcome.tpl:16 msgid "The DN and the password of the LDAP administration user" msgstr "" #: setup/setup_welcome.tpl:20 msgid "" "If you've collected the needed information, unlock the setup process like " "shown in the next paragraph." msgstr "" #: setup/setup_welcome.tpl:24 #, fuzzy msgid "Starting the setup" msgstr "Taal" #: setup/setup_welcome.tpl:26 msgid "" "For security reasons you need to authenticate the installation by creating " "the file '/tmp/gosa.auth', containing the current session ID on the servers " "local filesystem. This can be done by executing the following command:" msgstr "" #: setup/setup_welcome.tpl:32 msgid "Click the 'Next' button when you've finished." msgstr "" #: setup/class_setupStep_Schema.inc:37 setup/class_setupStep_Schema.inc:38 #, fuzzy msgid "LDAP schema check" msgstr "Ldap server" #: setup/class_setupStep_Schema.inc:39 msgid "Perform test on your current LDAP schema" msgstr "" #: setup/class_setup.inc:183 #, fuzzy msgid "Setup" msgstr "Stel in" #: setup/class_setup.inc:195 #, fuzzy msgid "Completed" msgstr "onvolledig" #: setup/class_setup.inc:235 #, fuzzy msgid "Check again" msgstr "Controleer" #: setup/class_setup.inc:238 #, fuzzy msgid "Next" msgstr "tekst" #: setup/setup_migrate.tpl:2 msgid "" "During the LDAP inspection, we're going to check for several common pitfalls " "that may occur when migration to GOsa base LDAP administration. You may want " "to fix the problems below, in order to provide smooth services." msgstr "" #: setup/setup_migrate.tpl:5 #, fuzzy msgid "Checks" msgstr "Systeem status" #: setup/setup_migrate.tpl:22 #, fuzzy msgid "Add required object classes to the LDAP base" msgstr "Toon FAI sjabloon objecten" #: setup/setup_migrate.tpl:24 #, fuzzy msgid "Current" msgstr "Nieuw FAI object aanmaken" #: setup/setup_migrate.tpl:28 #, fuzzy msgid "After migration" msgstr "Gebruikersbeheer" #: setup/setup_migrate.tpl:35 msgid "Close" msgstr "Sluiten" #: setup/setup_migrate.tpl:40 #, fuzzy msgid "Create a new GOsa administrator account" msgstr "Netatalk account aanmaken" #: setup/setup_migrate.tpl:41 msgid "" "This dialog will automatically add a new super administrator to your LDAP " "tree." msgstr "" #: setup/setup_migrate.tpl:57 #, fuzzy msgid "Password (again)" msgstr "Wachtwoord encryptie" #: setup/setup_finish.tpl:3 #, fuzzy msgid "Create your configuration file" msgstr "Configuratie bestand" #: setup/setup_finish.tpl:10 msgid "Depending on the user name your web server is running on:" msgstr "" #: setup/setup_finish.tpl:27 msgid "Download configuration" msgstr "Systeem configuratie" #: setup/setup_finish.tpl:33 #, fuzzy msgid "Status: " msgstr "Status" #: setup/class_setupStep_Checks.inc:40 setup/class_setupStep_Checks.inc:41 msgid "Installation check" msgstr "" #: setup/class_setupStep_Checks.inc:42 msgid "Basic checks for PHP compatibility and extensions" msgstr "" #: setup/class_setupStep_Checks.inc:66 #, fuzzy msgid "Checking PHP version" msgstr "Controle op PHP versie (>=4.1.0)" #: setup/class_setupStep_Checks.inc:67 #, fuzzy, php-format msgid "PHP must be of version %s or above." msgstr "" "PHP moet minimaal versienummer 4.1.0 hebben. GOsa gebruikt bepaalde " "functionaliteit die in voorgaande versies niet goed of helemaal niet " "voorhanden is." #: setup/class_setupStep_Checks.inc:68 msgid "Please upgrade to a supported version." msgstr "" #: setup/class_setupStep_Checks.inc:75 msgid "GOsa requires this module to talk with your LDAP server." msgstr "" #: setup/class_setupStep_Checks.inc:83 msgid "GOsa requires this module for an internationalized interface." msgstr "" #: setup/class_setupStep_Checks.inc:91 #, fuzzy msgid "" "GOsa requires this module to communicate with different types of servers and " "protocols." msgstr "" "MySQL ondersteuning is nodig voor het lezen van GOfax rapporten uit " "databases." #: setup/class_setupStep_Checks.inc:99 msgid "GOsa requires this module for the samba integration." msgstr "" #: setup/class_setupStep_Checks.inc:107 msgid "" "GOsa requires either 'mhash' or the 'sha1' module to make use of SSHA " "encryption." msgstr "" #: setup/class_setupStep_Checks.inc:115 msgid "GOsa requires this module to talk to an IMAP server." msgstr "" #: setup/class_setupStep_Checks.inc:122 #, fuzzy msgid "mbstring" msgstr "Samba Instellingen" #: setup/class_setupStep_Checks.inc:123 #, fuzzy msgid "GOsa requires this module to handle Unicode strings." msgstr "" "MySQL ondersteuning is nodig voor het lezen van GOfax rapporten uit " "databases." #: setup/class_setupStep_Checks.inc:130 msgid "Calendar" msgstr "" #: setup/class_setupStep_Checks.inc:131 #, fuzzy msgid "GOsa requires this module to calculate dates." msgstr "" "MySQL ondersteuning is nodig voor het lezen van GOfax rapporten uit " "databases." #: setup/class_setupStep_Checks.inc:138 #, fuzzy msgid "MySQL" msgstr "LDAP fout:" #: setup/class_setupStep_Checks.inc:139 #, fuzzy msgid "" "GOsa requires this module to communicate with several supported databases." msgstr "" "MySQL ondersteuning is nodig voor het lezen van GOfax rapporten uit " "databases." #: setup/class_setupStep_Checks.inc:156 msgid "samba hash generator" msgstr "" #: setup/class_setupStep_Checks.inc:157 msgid "GOsa requires this command to synchronize POSIX and samba passwords." msgstr "" #: setup/class_setupStep_Checks.inc:158 msgid "" "Deploy a gosa-si installation or install the Perl Crypt::SmbHash modules." msgstr "" #: setup/class_setupStep_Checks.inc:171 msgid "imagick" msgstr "" #: setup/class_setupStep_Checks.inc:172 msgid "GOsa requires this extension to handle images." msgstr "" #: setup/class_setupStep_Checks.inc:187 #, fuzzy msgid "compression module" msgstr "Toegangsopties" #: setup/class_setupStep_Checks.inc:188 msgid "GOsa requires this extension to handle snapshots." msgstr "" #: setup/class_setupStep_Checks.inc:199 #, fuzzy msgid "" "register_globals is a PHP mechanism to register all global variables to be " "accessible from scripts without changing the scope. This may be a security " "risk." msgstr "" "'register_globals' is een PHP mechanisme om alle globale variabelen te " "registreren zodat deze toegankelijk zijn voor scripts zonder dat de scope " "veranderd hoeft te worden. Dit is een veiligheidsrisico. GOsa zal in beide " "modi draaien." #: setup/class_setupStep_Checks.inc:200 #, fuzzy msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'." msgstr "Controle of 'register_globals' ingesteld staat op 'off'" #: setup/class_setupStep_Checks.inc:208 msgid "PHP uses this value for the garbage collector to delete old sessions." msgstr "" #: setup/class_setupStep_Checks.inc:209 #, fuzzy msgid "" "Setting this value to one day will prevent loosing session and cookies " "before they really timeout." msgstr "" "PHP gebruikt deze waarde voor de garbage collector om oude sessies op te " "ruimen. Door deze waarde op een dag te zetten, voorkomt u dat sessie en " "cookie informatie verloren gaan, voordat deze daadwerkelijk ongeldig zijn." #: setup/class_setupStep_Checks.inc:210 #, fuzzy msgid "" "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or " "higher." msgstr "" "Om GOsa zonder problemen te gebruiken, moet de session.auto_register optie " "in uw php.ini ingesteld zijn op 'Off'." #: setup/class_setupStep_Checks.inc:217 setup/class_setupStep_Checks.inc:233 #: setup/class_setupStep_Checks.inc:249 setup/class_setupStep_Checks.inc:265 #: plugins/addons/propertyEditor/class_propertyEditor.inc:230 #, fuzzy msgid "Off" msgstr "Offline" #: setup/class_setupStep_Checks.inc:218 #, fuzzy msgid "" "In Order to use GOsa without any trouble, the session.auto_register option " "in your php.ini should be set to 'Off'." msgstr "" "Om GOsa zonder problemen te gebruiken, moet de session.auto_register optie " "in uw php.ini ingesteld zijn op 'Off'." #: setup/class_setupStep_Checks.inc:219 #, fuzzy msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." msgstr "" "Om GOsa zonder problemen te gebruiken, moet de session.auto_register optie " "in uw php.ini ingesteld zijn op 'Off'." #: setup/class_setupStep_Checks.inc:226 #, fuzzy msgid "" "GOsa needs at least 32MB of memory. Setting it below this limit may cause " "errors that are not reproducible! Increase it for larger setups." msgstr "" "GOsa heeft tenminste 16MB geheugen nodig. Minder geheugen kan diverse " "onvoorspelbare fouten opleveren!.Verhoog deze waarde nog verder voor zeer " "grote omgevingen." #: setup/class_setupStep_Checks.inc:227 msgid "" "Search for 'memory_limit' in your php.ini and set it to '32M' or higher." msgstr "" #: setup/class_setupStep_Checks.inc:234 #, fuzzy msgid "" "This option influences the PHP output handling. Turn this Option off, to " "increase performance." msgstr "" "Deze Optie definieert Uitvoer afhandeling. Zet deze Optie uit om " "snelheiswinst te behalen" #: setup/class_setupStep_Checks.inc:235 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:242 #, fuzzy msgid "The Execution time should be at least 30 seconds." msgstr "" "De uitvoer tijd moet minimaal 30 seconden zijn, omdat sommige acties lang " "kunnen duren." #: setup/class_setupStep_Checks.inc:243 msgid "" "Search for 'max_execution_time' in your php.ini and set it to '30' or higher." msgstr "" #: setup/class_setupStep_Checks.inc:250 #, fuzzy msgid "" "Increase the server security by setting expose_php to 'off'. PHP won't send " "any information about the server you are running in this case." msgstr "" "Verhoog de server veiligheid door 'expose_php' op 'Off' in te stellen. PHP " "zal dan geen enkele informatie over de Server die u gebruikt weergeven." #: setup/class_setupStep_Checks.inc:251 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:257 #: plugins/addons/propertyEditor/class_propertyEditor.inc:231 #, fuzzy msgid "On" msgstr "Open" #: setup/class_setupStep_Checks.inc:258 msgid "" "Increase your server security by setting magic_quotes_gpc to 'on'. PHP will " "escape all quotes in strings in this case." msgstr "" "Verhoog de server veiligheid door 'magic_quotes_gpc op 'On' in te stellen." "PHP zal dan alle aanhalingstekens in strings omzetten." #: setup/class_setupStep_Checks.inc:259 #, fuzzy msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." msgstr "Controle of 'register_globals' ingesteld staat op 'off'" #: setup/class_setupStep_Checks.inc:266 #, fuzzy msgid "Increase your server performance by setting magic_quotes_gpc to 'off'." msgstr "" "Verhoog de server veiligheid door 'magic_quotes_gpc op 'On' in te stellen." "PHP zal dan alle aanhalingstekens in strings omzetten." #: setup/class_setupStep_Checks.inc:267 #, fuzzy msgid "" "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to 'Off'." msgstr "" "Om GOsa zonder problemen te gebruiken, moet de session.auto_register optie " "in uw php.ini ingesteld zijn op 'Off'." #: setup/class_setupStep_Checks.inc:277 #, fuzzy msgid "Configuration writable" msgstr "Configuratie bestand" #: setup/class_setupStep_Checks.inc:278 #, fuzzy msgid "The configuration file can't be written" msgstr "Configuratie bestand" #: setup/class_setupStep_Checks.inc:279 #, php-format msgid "" "GOsa reads its configuration from a file located in (%s/%s). The setup can " "write the configuration directly if it is writable." msgstr "" #: setup/class_setupStep_Welcome.inc:42 #, fuzzy msgid "Welcome" msgstr "Welkom %s!" #: setup/class_setupStep_Welcome.inc:43 #, fuzzy msgid "The welcome message" msgstr "Verwijder dit bericht" #: setup/class_setupStep_Welcome.inc:44 #, fuzzy msgid "Welcome to the GOsa setup assistent" msgstr "Welkom bij het GOsa installatie programma!" #: setup/class_setupStep_License.inc:56 setup/class_setupStep_License.inc:57 #, fuzzy msgid "License" msgstr "Regel" #: setup/class_setupStep_License.inc:58 msgid "Terms and conditions for usage" msgstr "" #: setup/setup_schema.tpl:1 #, fuzzy msgid "Schema specific settings" msgstr "Samba Instellingen" #: setup/setup_schema.tpl:4 msgid "Schema check succeeded" msgstr "" #: setup/setup_schema.tpl:7 #, fuzzy msgid "Schema check failed" msgstr "Het opslaan van de telefoon is mislukt" #: setup/setup_schema.tpl:11 msgid "" "Could not read any schema information, all checks skipped. Adjust your LDAP " "ACLs." msgstr "" #: setup/setup_schema.tpl:13 msgid "" "It seems that your LDAP database wasn't initialized yet. This maybe the " "reason, why GOsa can't read your schema configuration!" msgstr "" #: setup/class_setupStep_Language.inc:40 setup/class_setupStep_Language.inc:41 #, fuzzy msgid "Language setup" msgstr "Taal" #: setup/class_setupStep_Language.inc:42 #, fuzzy msgid "This step allows you to select your preferred language." msgstr "" "Deze dialoog maakt het mogelijk om een apparaat te verbinden aan de computer " "die u momenteel aan het bewerken bent." #: setup/setup_feedback.tpl:2 #, fuzzy msgid "Feedback successfully send" msgstr "Import was succesvol" #: setup/setup_feedback.tpl:6 msgid "Subscribe to the gosa-announce mailing list" msgstr "" #: setup/setup_feedback.tpl:8 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to subscribe you to the gosa-announce mailing list. You've to confirm " "this by mail." msgstr "" #: setup/setup_feedback.tpl:20 msgid "Mail address" msgstr "E-mail adres" #: setup/setup_feedback.tpl:28 msgid "Send feedback to the GOsa project team" msgstr "" #: setup/setup_feedback.tpl:31 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to submit your form anonymously." msgstr "" #: setup/setup_feedback.tpl:35 setup/setup_feedback.tpl:36 #: plugins/personal/posix/generic.tpl:5 #: plugins/personal/generic/class_user.inc:37 #: plugins/personal/generic/class_user.inc:1670 #: plugins/admin/groups/class_group.inc:1054 #: plugins/admin/ogroups/class_ogroup.inc:872 #: plugins/admin/departments/class_department.inc:659 #: plugins/admin/users/class_userManagement.inc:890 msgid "Generic" msgstr "Algemeen" #: setup/setup_feedback.tpl:38 msgid "Did the setup procedure help you to get started?" msgstr "" #: setup/setup_feedback.tpl:44 msgid "If not, what problems did you encounter" msgstr "" #: setup/setup_feedback.tpl:48 msgid "Is this the first time you use GOsa?" msgstr "" #: setup/setup_feedback.tpl:53 msgid "I use it since" msgstr "" #: setup/setup_feedback.tpl:54 msgid "Select the year since when you are using GOsa" msgstr "" #: setup/setup_feedback.tpl:60 msgid "What operating system / distribution do you use?" msgstr "" #: setup/setup_feedback.tpl:64 msgid "What web server do you use?" msgstr "" #: setup/setup_feedback.tpl:68 msgid "What PHP version do you use?" msgstr "" #: setup/setup_feedback.tpl:72 #, fuzzy msgid "GOsa version" msgstr "Algemene wachtrij instellingen" #: setup/setup_feedback.tpl:78 setup/setup_feedback.tpl:79 msgid "LDAP" msgstr "" #: setup/setup_feedback.tpl:81 msgid "What kind of LDAP server(s) do you use?" msgstr "" #: setup/setup_feedback.tpl:85 msgid "How many objects are in your LDAP?" msgstr "" #: setup/setup_feedback.tpl:91 setup/setup_feedback.tpl:92 #, fuzzy msgid "Features" msgstr "Toekomstig" #: setup/setup_feedback.tpl:94 msgid "What features of GOsa do you use?" msgstr "" #: setup/setup_feedback.tpl:103 msgid "What features do you want to see in future versions of GOsa?" msgstr "" #: setup/setup_feedback.tpl:107 msgid "Send feedback" msgstr "" #: html/password.php:63 html/index.php:157 #, fuzzy, php-format msgid "GOsa configuration %s/%s is not readable. Aborted." msgstr "GOsa configuratie %s/gosa.conf is niet leesbaar. Geannuleerd." #: html/password.php:115 html/index.php:179 html/setup.php:73 #, fuzzy, php-format msgid "Compile directory %s is not accessible!" msgstr "" "Directory '%s' die opgegeven is als compileer directory is niet toegankelijk!" #: html/password.php:194 plugins/personal/generic/class_user.inc:614 #, fuzzy msgid "Password method" msgstr "Wachtwoord encryptie" #: html/password.php:195 msgid "Error: Password method not available!" msgstr "" #: html/password.php:242 plugins/personal/generic/paste_generic.tpl:16 #: plugins/personal/generic/class_user.inc:1311 #: plugins/personal/generic/class_user.inc:1329 #: plugins/personal/generic/class_user.inc:1343 #: plugins/personal/generic/class_user.inc:1345 #: plugins/personal/generic/class_user.inc:1704 #: plugins/personal/generic/generic.tpl:65 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:56 #: plugins/admin/groups/userSelect/user-list.xml:56 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:65 #: plugins/admin/users/template.tpl:32 plugins/admin/users/user-list.xml:65 #: plugins/generic/dashBoard/Register/register.tpl:49 msgid "Login" msgstr "Inlognaam" #: html/password.php:244 plugins/personal/password/class_password.inc:124 msgid "You need to specify your current password in order to proceed." msgstr "U moet uw huidige wachtwoord opgeven om door te kunnen gaan." #: html/password.php:246 plugins/personal/password/class_password.inc:126 #: plugins/admin/users/class_userManagement.inc:316 msgid "" "The passwords you've entered as 'New password' and 'Repeated new password' " "do not match." msgstr "" "Het nieuwe wachtwoord en het herhaalde wachtwoord komen niet met elkaar " "overeen." #: html/password.php:248 plugins/personal/password/class_password.inc:128 msgid "The password you've entered as 'New password' is empty." msgstr "Het nieuw ingevoerde wachtwoord is leeg." #: html/password.php:250 plugins/personal/password/class_password.inc:130 msgid "The password used as new and current are too similar." msgstr "" "Het huidige wachtwoord en het nieuwe wachtwoord lijken te veel op elkaar." #: html/password.php:252 plugins/personal/password/class_password.inc:132 msgid "The password used as new is to short." msgstr "Het nieuw opgegeven wachtwoord is te kort." #: html/password.php:254 plugins/personal/password/class_password.inc:134 #, fuzzy msgid "The password contains possibly problematic Unicode characters!" msgstr "Het veld 'Naam' bevat ongeldige karakters." #: html/password.php:261 html/index.php:311 #, fuzzy msgid "Please check the username/password combination!" msgstr "Controleer a.u.b. de gebruikersnaam/wachtwoord combinatie." #: html/password.php:268 #, fuzzy msgid "You have no permissions to change your password!" msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." #: html/password.php:280 plugins/personal/password/class_password.inc:141 #: plugins/admin/users/class_userManagement.inc:330 #, php-format msgid "Check-hook reported a problem: %s. Password change canceled!" msgstr "" #: html/password.php:315 msgid "Session will not be encrypted." msgstr "De sessie zal niet versleuteld zijn." #: html/password.php:317 msgid "Enter SSL session" msgstr "Gebruik een SSL sessie" #: html/index.php:45 #, php-format msgid "Your browser (%s) is blacklisted for the current theme!" msgstr "" #: html/index.php:72 #, php-format msgid "This session is not encrypted. Click %s to enter an encrypted session." msgstr "" #: html/index.php:72 #, fuzzy msgid "here" msgstr "MIME" #: html/index.php:78 msgid "The configured session lifetime will be overridden by php.ini settings!" msgstr "" #: html/index.php:179 #, fuzzy msgid "Smarty error" msgstr "Systeem status" #: html/index.php:202 #, fuzzy msgid "" "Your browser has cookies disabled: please enable cookies and reload this " "page before logging in!" msgstr "" "Cookies zijn uitgeschakeld in uw browser. Schakel cookies a.u.b. in en " "herlaad deze pagina voordat u inlogt!" #: html/index.php:233 msgid "Broken HTTP authentication setup!" msgstr "" #: html/index.php:241 msgid "Cannot find a valid user for the current HTTP authentication!" msgstr "" #: html/index.php:245 #, fuzzy msgid "Cannot find a unique user for the current HTTP authentication!" msgstr "" "Fatale fout: Kon geen ongebruikte markering vinden om de administratieve " "eenheid te markeren!" #: html/index.php:289 #, fuzzy msgid "Please specify a valid user name!" msgstr "Geef a.u.b. een geldige gebruikersnaam op!" #: html/index.php:292 msgid "Please specify your password!" msgstr "Geef a.u.b. uw wachtwoord op!" #: html/index.php:304 #, fuzzy msgid "Authentication error" msgstr "Nagios authenticatie" #: html/index.php:304 #, fuzzy msgid "Cannot retrieve user information for HTTP authentication!" msgstr "Kan quota informatie niet ophaleven voor '%s'." #: html/index.php:364 #, fuzzy msgid "Account locked. Please contact your system administrator!" msgstr "" "Account is geblokkeerd. Neem a.u.b. contact op met de systeembeheerder." #: html/main.php:171 #, php-format msgid "Cannot locate file %s - please run %s to fix this" msgstr "" #: html/main.php:190 #, fuzzy msgid "PHP configuration" msgstr "FAX database" #: html/main.php:191 msgid "" "Fatal error: Register globals is active. Please fix this in order to " "continue." msgstr "" #: html/main.php:220 #, fuzzy msgid "Your password is about to expire, please change your password!" msgstr "Uw wachtwoord zal spoedig verlopen! Kies a.u.b. een nieuw wachtwoord." #: html/main.php:295 msgid "Running out of memory!" msgstr "" #: html/main.php:355 #, php-format msgid "You're logged in as %s" msgstr "" #: html/main.php:358 #, fuzzy msgid "ACLs are disabled" msgstr "gedeactiveerd" #: html/main.php:408 #, fuzzy msgid "Plug-in" msgstr "in" #: html/main.php:409 #, fuzzy, php-format msgid "Fatal error: Cannot find any plugin definitions for plugin %s!" msgstr "FATAAL: Kan geen enkele module defenities vinden voor module '%s'!" #: html/main.php:425 #, fuzzy msgid "Configuration Error" msgstr "Configuratie bestand" #: html/main.php:426 #, php-format msgid "" "Fatal error: not all POST variables have been transfered by PHP - please " "inform your administrator!" msgstr "" #: html/setup.php:73 #, fuzzy msgid "Smarty" msgstr "Samenvatting" #: html/helpviewer.php:64 msgid "Help browser" msgstr "Help verkenner" #: html/helpviewer.php:118 #, fuzzy msgid "There is no help file specified for this class" msgstr "Er is (nog) geen help bestand aanwezig voor deze klasse." #: html/helpviewer.php:268 #, fuzzy, php-format msgid "Help directory '%s' is not accessible, can't read any help files." msgstr "" "Help directory '%s' is niet toegankelijk. Er kunnen geen helpbestanden " "gelezen worden." #: plugins/personal/myaccount/password.tpl:4 #: plugins/personal/password/password.tpl:4 msgid "" "To change your personal password use the fields below. The changes take " "effect immediately. Please memorize the new password, because you wouldn't " "be able to login without it." msgstr "" "Gebruik het veld hieronder om uw persoonlijke wachtwoord te veranderen. De " "veranderingen worden direct doorgevoerd. Onthoud het nieuwe wachtwoord a.u." "b. aangezien u niet in zult kunnen loggen zonder dit wachtwoord." #: plugins/personal/myaccount/password.tpl:10 #: plugins/personal/myaccount/password.tpl:39 #: plugins/personal/password/password.tpl:16 #: plugins/personal/password/password.tpl:45 #, fuzzy msgid "Password change dialog" msgstr "Het veranderen van het wachtwoord is niet toegestaan" #: plugins/personal/myaccount/password.tpl:49 #: plugins/personal/password/password.tpl:55 #: plugins/admin/users/password.tpl:43 #, fuzzy msgid "Use proposal" msgstr "groepen" #: plugins/personal/myaccount/password.tpl:67 #: plugins/personal/password/password.tpl:74 #: plugins/admin/users/password.tpl:61 #, fuzzy msgid "Manually specify a password" msgstr "Geef a.u.b. uw wachtwoord op!" #: plugins/personal/myaccount/password.tpl:97 #: plugins/personal/password/password.tpl:104 msgid "Clear fields" msgstr "Wis velden" #: plugins/personal/myaccount/main.inc:118 #: plugins/personal/myaccount/class_MyAccount.inc:5 #: plugins/personal/posix/class_posixAccount.inc:1356 #: plugins/personal/password/class_password.inc:232 #: plugins/personal/generic/class_user.inc:1675 msgid "My account" msgstr "Mijn account" #: plugins/personal/myaccount/class_MyAccount.inc:6 #, fuzzy msgid "Edit personal settings" msgstr "Posix instellingen" #: plugins/personal/myaccount/nochange.tpl:2 #: plugins/personal/password/nochange.tpl:2 #, fuzzy msgid "You have no permission to change your password at this time" msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." #: plugins/personal/myaccount/nochange.tpl:5 #, fuzzy msgid "Your password hash method will not be changed!" msgstr "Uw wachtwoord is verlopen! Kies a.u.b. een nieuw wachtwoord. " #: plugins/personal/myaccount/changed.tpl:3 #: plugins/personal/password/changed.tpl:3 #, fuzzy msgid "" "You've successfully changed your password. Remember to change all programs " "configured to use it as well." msgstr "" "U heeft succesvol uw wachtwoord veranderd. Denkt u eraan dat u alle " "programma's die dit wachtwoord gebruiken ook aanpast!" #: plugins/personal/posix/paste_generic.tpl:1 #: plugins/personal/posix/paste_generic.tpl:5 #: plugins/personal/posix/generic.tpl:1 #, fuzzy msgid "POSIX settings" msgstr "Posix instellingen" #: plugins/personal/posix/paste_generic.tpl:6 #: plugins/personal/posix/paste_generic.tpl:9 #: plugins/personal/posix/generic.tpl:8 #: plugins/personal/posix/class_posixAccount.inc:899 #: plugins/personal/posix/class_posixAccount.inc:902 #: plugins/personal/posix/class_posixAccount.inc:977 #: plugins/personal/posix/class_posixAccount.inc:980 #: plugins/personal/posix/class_posixAccount.inc:1366 msgid "Home directory" msgstr "Persoonlijke map" #: plugins/personal/posix/paste_generic.tpl:17 #: plugins/personal/posix/posix_shadow.tpl:2 #: plugins/personal/posix/generic.tpl:51 #: plugins/personal/generic/generic.tpl:34 #: plugins/personal/generic/generic.tpl:81 #, fuzzy msgid "Account settings" msgstr "Groep instellingen" #: plugins/personal/posix/paste_generic.tpl:19 #: plugins/personal/posix/generic.tpl:26 #: plugins/personal/posix/class_posixAccount.inc:1367 msgid "Primary group" msgstr "Primaire groep" #: plugins/personal/posix/paste_generic.tpl:33 #: plugins/personal/posix/generic.tpl:60 msgid "Force UID/GID" msgstr "Forceer UID/GID" #: plugins/personal/posix/paste_generic.tpl:47 #: plugins/personal/posix/generic.tpl:75 #: plugins/personal/posix/class_posixAccount.inc:917 #: plugins/personal/posix/class_posixAccount.inc:920 #: plugins/admin/groups/class_group.inc:985 #: plugins/admin/groups/class_group.inc:988 #: plugins/admin/groups/class_group.inc:1080 msgid "GID" msgstr "GID" #: plugins/personal/posix/paste_generic.tpl:58 #: plugins/personal/posix/paste_generic.tpl:61 #: plugins/personal/posix/generic.tpl:89 #: plugins/generic/references/class_reference.inc:58 #: plugins/generic/references/class_reference.inc:64 msgid "Group membership" msgstr "Groep lidmaatschap" #: plugins/personal/posix/paste_generic.tpl:68 #: plugins/personal/posix/generic.tpl:92 msgid "(Warning: more than 16 groups are not supported by NFS!)" msgstr "(Waarschuwing: NFS ondersteunt niet meer dan 16 groepen!)" #: plugins/personal/posix/trustSelect/trust-filter.xml:17 #: plugins/personal/posix/groupSelect/group-filter.xml:16 #: plugins/admin/groups/singleUserSelect/singleUser-filter.xml:20 #: plugins/admin/groups/group-filter.xml:17 #: plugins/admin/groups/userSelect/user-filter.xml:20 #: plugins/admin/groups/userGroupSelect/selectUserGroup-filter.xml:21 #: plugins/admin/ogroups/objectSelect/selectObject-filter.xml:32 #: plugins/admin/ogroups/ogroup-filter.xml:18 #: plugins/admin/acl/acl-filter.xml:18 #: plugins/admin/departments/dep-filter.xml:17 #: plugins/admin/users/user-filter.xml:19 #, fuzzy msgid "Default filter" msgstr "Parameters" #: plugins/personal/posix/trustSelect/trust-list.xml:9 #: plugins/personal/posix/groupSelect/group-list.xml:10 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:10 #: plugins/admin/groups/userSelect/user-list.xml:10 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:11 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:11 #, fuzzy msgid "Please select the desired entries" msgstr "Voorkeurstaal" #: plugins/personal/posix/trustSelect/trust-list.xml:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:23 #: plugins/admin/ogroups/class_ogroupManagement.inc:187 msgid "Server" msgstr "Server" #: plugins/personal/posix/trustSelect/trust-list.xml:19 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:31 #: plugins/admin/ogroups/class_ogroupManagement.inc:189 msgid "Workstation" msgstr "Werkstation" #: plugins/personal/posix/trustSelect/trust-list.xml:26 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:39 #: plugins/admin/ogroups/class_ogroupManagement.inc:191 msgid "Terminal" msgstr "Terminal" #: plugins/personal/posix/trustSelect/class_trustSelect.inc:29 #, fuzzy msgid "Trust machine selection" msgstr "Groep instellingen" #: plugins/personal/posix/groupSelect/class_groupSelect.inc:29 #, fuzzy msgid "Group selection" msgstr "Groep instellingen" #: plugins/personal/posix/groupSelect/group-list.xml:13 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/addons/propertyEditor/property-list.xml:73 #: plugins/admin/groups/group-list.xml:15 #: plugins/admin/groups/group-list.xml:79 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:23 #: plugins/admin/ogroups/ogroup-list.xml:79 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:71 #: plugins/admin/ogroups/class_ogroupManagement.inc:184 msgid "Group" msgstr "Groep" #: plugins/personal/posix/posix_shadow.tpl:12 msgid "User must change password on first login" msgstr "Het wachtwoord moet bij de eerste aanmelding gewijzigd worden" #: plugins/personal/posix/posix_shadow.tpl:59 #, fuzzy msgid "Password expiration settings" msgstr "Gebruikersinstellingen" #: plugins/personal/posix/posix_shadow.tpl:62 msgid "Password expires on" msgstr "Wachtwoord verloopt op" #: plugins/personal/posix/generic.tpl:6 plugins/admin/ogroups/generic.tpl:5 #, fuzzy msgid "Generic settings" msgstr "Algemene wachtrij instellingen" #: plugins/personal/posix/generic.tpl:16 #: plugins/personal/posix/class_posixAccount.inc:1368 msgid "Shell" msgstr "Shell" #: plugins/personal/posix/generic.tpl:37 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 msgid "Status" msgstr "Status" #: plugins/personal/posix/generic.tpl:42 #, fuzzy msgid "Last log-on" msgstr "Achternaam" #: plugins/personal/posix/generic.tpl:108 #, fuzzy msgid "Account permissions" msgstr "Groep instellingen" #: plugins/personal/posix/generic.tpl:113 msgid "SSH keys" msgstr "" #: plugins/personal/posix/generic.tpl:114 msgid "Edit public ssh keys..." msgstr "" #: plugins/personal/posix/class_posixAccount.inc:37 #: plugins/personal/posix/class_posixAccount.inc:291 #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/personal/posix/class_posixAccount.inc:313 #: plugins/personal/posix/class_posixAccount.inc:316 #: plugins/admin/groups/class_groupManagement.inc:157 #: plugins/admin/users/class_userManagement.inc:894 msgid "POSIX" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:38 #, fuzzy msgid "Edit users POSIX settings" msgstr "Posix instellingen" #: plugins/personal/posix/class_posixAccount.inc:152 msgid "expired" msgstr "verlopen" #: plugins/personal/posix/class_posixAccount.inc:154 msgid "grace time active" msgstr "gratie tijd actief" #: plugins/personal/posix/class_posixAccount.inc:157 #: plugins/personal/posix/class_posixAccount.inc:159 #: plugins/personal/posix/class_posixAccount.inc:161 msgid "active" msgstr "actief" #: plugins/personal/posix/class_posixAccount.inc:157 #, fuzzy msgid "password not changeable" msgstr "actief, wachtwoord onveranderbaar" #: plugins/personal/posix/class_posixAccount.inc:159 #, fuzzy msgid "password expired" msgstr "actief, wachtwoord verlopen" #: plugins/personal/posix/class_posixAccount.inc:235 msgid "automatic" msgstr "automatisch" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:173 #: plugins/admin/users/class_userManagement.inc:902 msgid "Samba" msgstr "Samba" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:197 #: plugins/admin/users/class_userManagement.inc:910 msgid "Environment" msgstr "Omgeving" #: plugins/personal/posix/class_posixAccount.inc:415 #, php-format msgid "Password can't be changed up to %s days after last change" msgstr "" "Het wachtwoord kan pas %s dag(en) na de laatste wijziging gewijzigd worden" #: plugins/personal/posix/class_posixAccount.inc:419 #, php-format msgid "Password must be changed after %s days" msgstr "Het wachtwoord moet na %s dag(en) gewijzigd worden" #: plugins/personal/posix/class_posixAccount.inc:423 #, fuzzy, php-format msgid "Disable account after %s days of inactivity after password expiry" msgstr "" "Blokkeer het account na %s dag(en) inactiviteit nadat het wachtwoord " "verlopen is" #: plugins/personal/posix/class_posixAccount.inc:427 #, fuzzy, php-format msgid "Warn user %s days before password expiry" msgstr "Waarschuw de gebruiker %s dagen voordat het wachtwoord verloopt" #: plugins/personal/posix/class_posixAccount.inc:692 msgid "Timeout while waiting for lock. Ignoring lock!" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:750 #: plugins/personal/posix/class_posixAccount.inc:1043 msgid "Group of user" msgstr "Gebruikersgroep" #: plugins/personal/posix/class_posixAccount.inc:815 msgid "" "A duplicated UID number was written for this user. If this was not intended " "please verify all used uidNumbers!" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:933 #: plugins/personal/posix/class_posixAccount.inc:986 #, fuzzy msgid "shadowMin" msgstr "Schaduwen van andere sessie" #: plugins/personal/posix/class_posixAccount.inc:938 #: plugins/personal/posix/class_posixAccount.inc:991 #, fuzzy msgid "shadowMax" msgstr "Schaduwen van andere sessie" #: plugins/personal/posix/class_posixAccount.inc:943 #: plugins/personal/posix/class_posixAccount.inc:996 #, fuzzy msgid "shadowWarning" msgstr "Schaduwen van andere sessie" #: plugins/personal/posix/class_posixAccount.inc:957 #: plugins/personal/posix/class_posixAccount.inc:1010 #, fuzzy msgid "shadowInactive" msgstr "Schaduwen van andere sessie" #: plugins/personal/posix/class_posixAccount.inc:1061 #: plugins/personal/posix/class_posixAccount.inc:1537 #, fuzzy msgid "all" msgstr "Alle" #: plugins/personal/posix/class_posixAccount.inc:1352 #, fuzzy msgid "POSIX account" msgstr "GLPI account" #: plugins/personal/posix/class_posixAccount.inc:1370 #, fuzzy msgid "Group ID" msgstr "Groep" #: plugins/personal/posix/class_posixAccount.inc:1372 #, fuzzy msgid "Shadow last changed" msgstr "Toon pakketten" #: plugins/personal/posix/class_posixAccount.inc:1373 #, fuzzy msgid "Last login" msgstr "Achternaam" #: plugins/personal/posix/class_posixAccount.inc:1375 #, fuzzy msgid "Force password change on login" msgstr "Het veranderen van het wachtwoord is niet toegestaan" #: plugins/personal/posix/class_posixAccount.inc:1376 #, fuzzy msgid "Shadow min" msgstr "Schaduwen van andere sessie" #: plugins/personal/posix/class_posixAccount.inc:1377 #, fuzzy msgid "Shadow max" msgstr "Schaduwen van andere sessie" #: plugins/personal/posix/class_posixAccount.inc:1378 #, fuzzy msgid "Shadow warning" msgstr "Schaduwen van andere sessie" #: plugins/personal/posix/class_posixAccount.inc:1379 #, fuzzy msgid "Shadow inactive" msgstr "Schaduwen van andere sessie" #: plugins/personal/posix/class_posixAccount.inc:1380 #, fuzzy msgid "Shadow expire" msgstr "Toon personen" #: plugins/personal/posix/class_posixAccount.inc:1381 msgid "Public SSH key" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1382 #, fuzzy msgid "System trust model" msgstr "Systeem vertrouwen" #: plugins/personal/posix/class_posixAccount.inc:1512 msgid "some" msgstr "" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "disabled" msgstr "gedeactiveerd" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "full access" msgstr "volledige toegang" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:174 msgid "allow access to these hosts" msgstr "sta toegang op deze computers toe" #: plugins/personal/posix/trustModeDialog/generic.tpl:2 #: plugins/admin/groups/class_group.inc:1084 #: plugins/admin/ogroups/class_ogroup.inc:888 msgid "System trust" msgstr "Systeem vertrouwen" #: plugins/personal/posix/trustModeDialog/generic.tpl:5 #: plugins/personal/posix/trustModeDialog/generic.tpl:21 msgid "Trust mode" msgstr "Vertrouwensmodus" #: plugins/personal/password/password.tpl:10 #, fuzzy msgid "Your Password has expired. Please choose a new password." msgstr "Uw wachtwoord is verlopen! Kies a.u.b. een nieuw wachtwoord. " #: plugins/personal/password/class_password.inc:27 #, fuzzy msgid "Change user password" msgstr "Verander wachtwoord" #: plugins/personal/password/class_password.inc:161 msgid "" "The password you've entered as your current password doesn't match the real " "one." msgstr "" "Het wachtwoord dat u opgegeven heeft als uw huidige wachtwoord is niet " "correct." #: plugins/personal/password/class_password.inc:164 #, fuzzy msgid "You have no permission to change your password." msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." #: plugins/personal/password/class_password.inc:228 #, fuzzy msgid "User password" msgstr "Wachtwoord wissen" #: plugins/personal/password/class_password.inc:241 msgid "Script to be called before a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:250 msgid "Script to be called after a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:259 msgid "Script to be called before a password gets unlocked." msgstr "" #: plugins/personal/password/class_password.inc:268 msgid "Script to be called after a password gets unlocked." msgstr "" #: plugins/personal/generic/generic_certs.tpl:3 #: plugins/personal/generic/class_user.inc:550 #: plugins/personal/generic/class_user.inc:572 #: plugins/personal/generic/generic.tpl:226 msgid "Certificates" msgstr "Certificaten" #: plugins/personal/generic/generic_certs.tpl:5 #, fuzzy msgid "The users standard certificate" msgstr "Standaard certificaat" #: plugins/personal/generic/generic_certs.tpl:8 msgid "Standard certificate" msgstr "Standaard certificaat" #: plugins/personal/generic/generic_certs.tpl:22 #: plugins/personal/generic/generic_certs.tpl:48 #: plugins/personal/generic/generic_certs.tpl:74 #: plugins/addons/propertyEditor/property-list.xml:109 #: plugins/admin/groups/group-list.xml:98 #: plugins/admin/ogroups/ogroup-list.xml:98 plugins/admin/acl/acl-list.xml:95 #: plugins/admin/acl/acl-list.xml:144 #: plugins/admin/departments/dep-list.xml:160 #: plugins/admin/departments/dep-list.xml:181 #: plugins/admin/users/user-list.xml:121 msgid "Remove" msgstr "Verwijderen" #: plugins/personal/generic/generic_certs.tpl:31 #, fuzzy msgid "The users S/MIME certificate" msgstr "S/MIME certificaat" #: plugins/personal/generic/generic_certs.tpl:34 msgid "S/MIME certificate" msgstr "S/MIME certificaat" #: plugins/personal/generic/generic_certs.tpl:57 #, fuzzy msgid "The users PKCS12 certificate" msgstr "PKCS12 certificaat" #: plugins/personal/generic/generic_certs.tpl:60 msgid "PKCS12 certificate" msgstr "PKCS12 certificaat" #: plugins/personal/generic/generic_certs.tpl:83 #: plugins/personal/generic/class_user.inc:1663 msgid "Certificate serial number" msgstr "Certificaat serienummer" #: plugins/personal/generic/paste_generic.tpl:3 #, fuzzy msgid "Paste user" msgstr "Plakken" #: plugins/personal/generic/paste_generic.tpl:6 #: plugins/personal/generic/generic.tpl:1 #: plugins/personal/generic/generic.tpl:3 msgid "Personal information" msgstr "Persoonlijke informatie" #: plugins/personal/generic/paste_generic.tpl:8 #: plugins/personal/generic/generic.tpl:37 plugins/admin/users/template.tpl:23 msgid "Last name" msgstr "Achternaam" #: plugins/personal/generic/paste_generic.tpl:12 #: plugins/personal/generic/generic.tpl:51 plugins/admin/users/template.tpl:27 msgid "First name" msgstr "Voornaam" #: plugins/personal/generic/paste_generic.tpl:24 msgid "Clear password" msgstr "Wachtwoord wissen" #: plugins/personal/generic/paste_generic.tpl:25 msgid "Set new password" msgstr "Nieuw wachtwoord instellen" #: plugins/personal/generic/paste_generic.tpl:31 #: plugins/personal/generic/generic.tpl:8 #: plugins/personal/generic/generic_picture.tpl:2 #, fuzzy msgid "The users picture" msgstr "Persoonlijk plaatje" #: plugins/personal/generic/paste_generic.tpl:43 #: plugins/personal/generic/generic_picture.tpl:13 msgid "Remove picture" msgstr "Plaatje verwijderen" #: plugins/personal/generic/class_user.inc:38 #, fuzzy msgid "Edit organizational user settings" msgstr "Programma instellingen" #: plugins/personal/generic/class_user.inc:297 msgid "Please add a single IP address or a network/net mask combination!" msgstr "" #: plugins/personal/generic/class_user.inc:339 msgid "female" msgstr "vrouw" #: plugins/personal/generic/class_user.inc:339 msgid "male" msgstr "man" #: plugins/personal/generic/class_user.inc:395 #, fuzzy msgid "Password configuration" msgstr "Systeem configuratie" #: plugins/personal/generic/class_user.inc:429 msgid "Cannot upload file!" msgstr "" #: plugins/personal/generic/class_user.inc:522 #, fuzzy msgid "Serial number" msgstr "Telefoonnummer" #: plugins/personal/generic/class_user.inc:544 #: plugins/personal/generic/class_user.inc:1716 #: plugins/personal/generic/generic_picture.tpl:1 msgid "User picture" msgstr "Persoonlijk plaatje" #: plugins/personal/generic/class_user.inc:569 msgid "(Not supported certificate types are marked as invalid.)" msgstr "" #: plugins/personal/generic/class_user.inc:579 #, php-format msgid "Certificate is valid from %s to %s and is currently %s." msgstr "Certificaat is geldig van '%s' tot '%s' en de huidige status is '%s'." #: plugins/personal/generic/class_user.inc:582 msgid "valid" msgstr "geldig" #: plugins/personal/generic/class_user.inc:583 msgid "invalid" msgstr "ongeldig" #: plugins/personal/generic/class_user.inc:588 msgid "No certificate installed" msgstr "Geen certificaat geinstalleerd" #: plugins/personal/generic/class_user.inc:614 #, fuzzy msgid "The selected password method is no longer available." msgstr "Dit programma is niet meer beschikbaar." #: plugins/personal/generic/class_user.inc:1051 msgid "" "Cannot save user picture: GOsa requires the package 'imagemagick' or 'php5-" "imagick' to be installed!" msgstr "" #: plugins/personal/generic/class_user.inc:1177 msgid "Cannot build RDN: no + allowed to build sub RDN!" msgstr "" #: plugins/personal/generic/class_user.inc:1184 msgid "Cannot build RDN: attribute is not defined!" msgstr "" #: plugins/personal/generic/class_user.inc:1202 msgid "Cannot build RDN: invalid attribute parameters!" msgstr "" #: plugins/personal/generic/class_user.inc:1273 #, fuzzy msgid "The selected password method requires initial configuration!" msgstr "Dit programma is niet meer beschikbaar." #: plugins/personal/generic/class_user.inc:1349 #: plugins/personal/generic/class_user.inc:1739 #: plugins/personal/generic/class_user.inc:1842 #: plugins/personal/generic/generic.tpl:201 msgid "Homepage" msgstr "Homepage" #: plugins/personal/generic/class_user.inc:1354 #: plugins/personal/generic/class_user.inc:1845 #: plugins/personal/generic/generic.tpl:394 #: plugins/personal/generic/generic.tpl:574 #: plugins/admin/groups/class_groupManagement.inc:181 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:55 #: plugins/admin/ogroups/class_ogroupManagement.inc:188 #: plugins/admin/departments/organization.tpl:109 #: plugins/admin/departments/class_department.inc:376 #: plugins/admin/departments/generic.tpl:110 #: plugins/admin/users/class_userManagement.inc:918 msgid "Phone" msgstr "Telefoon" #: plugins/personal/generic/class_user.inc:1357 #: plugins/personal/generic/class_user.inc:1848 #: plugins/personal/generic/generic.tpl:419 #: plugins/personal/generic/generic.tpl:586 #: plugins/admin/departments/organization.tpl:117 #: plugins/admin/departments/class_department.inc:379 #: plugins/admin/departments/class_department.inc:683 #: plugins/admin/departments/class_organizationGeneric.inc:133 #: plugins/admin/departments/generic.tpl:118 msgid "Fax" msgstr "Fax" #: plugins/personal/generic/class_user.inc:1360 #: plugins/personal/generic/class_user.inc:1851 #: plugins/personal/generic/generic.tpl:403 msgid "Mobile" msgstr "GSM" #: plugins/personal/generic/class_user.inc:1363 #: plugins/personal/generic/class_user.inc:1854 #: plugins/personal/generic/generic.tpl:411 msgid "Pager" msgstr "Pieper" #: plugins/personal/generic/class_user.inc:1483 #, fuzzy msgid "Cannot open certificate!" msgstr "Het opgegeven certificaat kon geopend worden!" #: plugins/personal/generic/class_user.inc:1655 #: plugins/personal/generic/generic.tpl:526 msgid "Unit" msgstr "Eenheid" #: plugins/personal/generic/class_user.inc:1656 #: plugins/personal/generic/generic.tpl:551 msgid "House identifier" msgstr "Huis identificatie" #: plugins/personal/generic/class_user.inc:1657 #: plugins/personal/generic/generic.tpl:468 msgid "Vocation" msgstr "Beroep" #: plugins/personal/generic/class_user.inc:1658 #: plugins/personal/generic/generic.tpl:595 msgid "Last delivery" msgstr "Laatste levering" #: plugins/personal/generic/class_user.inc:1659 #: plugins/personal/generic/generic.tpl:517 msgid "Person locality" msgstr "Werkplaats" #: plugins/personal/generic/class_user.inc:1660 #: plugins/personal/generic/generic.tpl:476 msgid "Unit description" msgstr "Eenheid omschrijving" #: plugins/personal/generic/class_user.inc:1661 #: plugins/personal/generic/generic.tpl:485 msgid "Subject area" msgstr "Werkgebied" #: plugins/personal/generic/class_user.inc:1662 #: plugins/personal/generic/generic.tpl:494 msgid "Functional title" msgstr "Functionele titel" #: plugins/personal/generic/class_user.inc:1666 #: plugins/personal/generic/generic.tpl:503 plugins/admin/acl/acl-list.xml:23 #: plugins/admin/acl/acl-list.xml:82 plugins/admin/acl/class_aclRole.inc:714 msgid "Role" msgstr "Funktie" #: plugins/personal/generic/class_user.inc:1667 #: plugins/personal/generic/generic.tpl:543 msgid "Postal code" msgstr "Postcode" #: plugins/personal/generic/class_user.inc:1671 #, fuzzy msgid "Generic user settings" msgstr "Algemene wachtrij instellingen" #: plugins/personal/generic/class_user.inc:1692 msgid "" "Pattern for the generation of user DNs. Please read the FAQ for details." msgstr "" #: plugins/personal/generic/class_user.inc:1706 #, fuzzy msgid "Allow definition of custom filters" msgstr "Configuratie bestand" #: plugins/personal/generic/class_user.inc:1712 #: plugins/personal/generic/generic.tpl:140 msgid "Sex" msgstr "Geslacht" #: plugins/personal/generic/class_user.inc:1713 #: plugins/personal/generic/generic.tpl:154 #, fuzzy msgid "Preferred language" msgstr "Voorkeurstaal" #: plugins/personal/generic/class_user.inc:1718 #, fuzzy msgid "Login restrictions" msgstr "Wachtwoord verloopt op" #: plugins/personal/generic/class_user.inc:1721 #: plugins/personal/generic/generic.tpl:306 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:15 #: plugins/admin/ogroups/class_ogroupManagement.inc:186 #: plugins/admin/departments/dep-list.xml:55 #: plugins/admin/departments/dep-list.xml:71 #: plugins/admin/departments/dep-list.xml:138 #: plugins/admin/departments/class_departmentManagement.inc:253 msgid "Department" msgstr "Afdeling" #: plugins/personal/generic/class_user.inc:1723 #: plugins/personal/generic/generic.tpl:339 #: plugins/personal/generic/generic.tpl:355 #: plugins/admin/departments/dcObject.tpl:39 #: plugins/admin/departments/country.tpl:39 #: plugins/admin/departments/class_countryGeneric.inc:93 #: plugins/admin/departments/organization.tpl:51 #: plugins/admin/departments/class_department.inc:684 #: plugins/admin/departments/class_domain.inc:93 #: plugins/admin/departments/class_organizationGeneric.inc:127 #: plugins/admin/departments/generic.tpl:51 #: plugins/admin/departments/locality.tpl:39 #: plugins/admin/departments/class_localityGeneric.inc:93 #: plugins/admin/departments/class_dcObject.inc:92 #: plugins/admin/departments/domain.tpl:39 #, fuzzy msgid "Manager" msgstr "Windows gebruikers" #: plugins/personal/generic/class_user.inc:1727 #, fuzzy msgid "Room number" msgstr "Telefoonnummer" #: plugins/personal/generic/class_user.inc:1728 #, fuzzy msgid "Telephone number" msgstr "Telefoonnummer" #: plugins/personal/generic/class_user.inc:1729 #, fuzzy msgid "Pager number" msgstr "Telefoonnummer" #: plugins/personal/generic/class_user.inc:1730 #, fuzzy msgid "Mobile number" msgstr "GSM nummer" #: plugins/personal/generic/class_user.inc:1731 #, fuzzy msgid "Fax number" msgstr "Serienummer" #: plugins/personal/generic/class_user.inc:1733 #: plugins/personal/generic/generic.tpl:444 #: plugins/admin/departments/organization.tpl:86 #: plugins/admin/departments/class_department.inc:679 #: plugins/admin/departments/class_organizationGeneric.inc:129 #: plugins/admin/departments/generic.tpl:87 msgid "State" msgstr "Provincie" #: plugins/personal/generic/class_user.inc:1735 #: plugins/personal/generic/generic.tpl:183 #: plugins/admin/departments/class_organizationGeneric.inc:131 msgid "Postal address" msgstr "Adres thuis" #: plugins/personal/generic/class_user.inc:1740 #, fuzzy msgid "User password method" msgstr "Wachtwoord encryptie" #: plugins/personal/generic/class_user.inc:1741 #, fuzzy msgid "User certificates" msgstr "Standaard certificaat" #: plugins/personal/generic/class_user.inc:1949 #, fuzzy msgid "Entries differ" msgstr "Regels per pagina" #: plugins/personal/generic/generic.tpl:21 msgid "Change picture" msgstr "Verander plaatje" #: plugins/personal/generic/generic.tpl:41 #: plugins/personal/generic/generic.tpl:55 #: plugins/personal/generic/generic.tpl:73 plugins/admin/groups/generic.tpl:14 msgid "Multiple edit" msgstr "" #: plugins/personal/generic/generic.tpl:83 msgid "Template name" msgstr "Sjabloon naam" #: plugins/personal/generic/generic.tpl:185 #: plugins/personal/generic/generic.tpl:452 #: plugins/admin/departments/organization.tpl:102 #: plugins/admin/departments/class_department.inc:681 #: plugins/admin/departments/generic.tpl:103 msgid "Address" msgstr "Adres" #: plugins/personal/generic/generic.tpl:193 msgid "Private phone" msgstr "Telefoon privé" #: plugins/personal/generic/generic.tpl:209 msgid "Password storage" msgstr "Wachtwoord encryptie" #: plugins/personal/generic/generic.tpl:229 msgid "Edit certificates" msgstr "Bewerk certificaten" #: plugins/personal/generic/generic.tpl:241 msgid "Restrict login to" msgstr "" #: plugins/personal/generic/generic.tpl:249 #: plugins/personal/generic/generic.tpl:269 msgid "IP or network" msgstr "" #: plugins/personal/generic/generic.tpl:285 #: plugins/personal/generic/generic.tpl:288 #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 msgid "Organizational information" msgstr "Organisatie informatie" #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 #, fuzzy msgid "part" msgstr "Samenvatting" #: plugins/personal/generic/generic.tpl:314 msgid "Department No." msgstr "Afdeling nr." #: plugins/personal/generic/generic.tpl:322 msgid "Employee No." msgstr "Personeel nr." #: plugins/personal/generic/generic.tpl:385 #: plugins/personal/generic/generic.tpl:566 msgid "Room No." msgstr "Kamer nr." #: plugins/personal/generic/generic.tpl:580 msgid "Please use the phone tab" msgstr "Gebruik a.u.b. de telefoon tab" #: plugins/addons/dyngroup/dyngroup.tpl:1 #, fuzzy msgid "List of dynamic rules" msgstr "Lijst met macro's" #: plugins/addons/dyngroup/dyngroup.tpl:3 msgid "Labeled URI definitions" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:6 #, fuzzy msgid "Scope" msgstr "kopieer" #: plugins/addons/dyngroup/dyngroup.tpl:7 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:132 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:134 #, fuzzy msgid "Attribute" msgstr "Telefoon attributen " #: plugins/addons/dyngroup/dyngroup.tpl:8 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:139 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 #: plugins/generic/references/class_aclResolver.inc:169 #, fuzzy msgid "Filter" msgstr "Filters" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:118 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:340 msgid "Labeled URI" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 msgid "Surrounding brackets are required!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:149 #, php-format msgid "The given filter '%s' for entry %s seems to be invalid!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:179 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:181 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:332 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:333 #, fuzzy msgid "Dynamic object" msgstr "Object" #: plugins/addons/propertyEditor/property-filter.xml:15 #, fuzzy msgid "Effective properties" msgstr "Bewerk algemene eigenschappen" #: plugins/addons/propertyEditor/property-filter.xml:29 #, fuzzy msgid "Modified properties" msgstr "Bewerk algemene eigenschappen" #: plugins/addons/propertyEditor/property-filter.xml:43 #, fuzzy msgid "All properties" msgstr "Bewerk algemene eigenschappen" #: plugins/addons/propertyEditor/property-filter.xml:57 #, fuzzy msgid "LDAP properties" msgstr "Eigenschappen" #: plugins/addons/propertyEditor/property-filter.xml:71 #, fuzzy msgid "Search for property groups" msgstr "Toon primaire groepen" #: plugins/addons/propertyEditor/migrate.tpl:3 msgid "Property migration assistant" msgstr "" #: plugins/addons/propertyEditor/migrate.tpl:3 #, fuzzy msgid "Migration steps left" msgstr "Aanmaken" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:31 #, fuzzy, php-format msgid "Migration of property '%s'" msgstr "Aanmaken" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:34 #, fuzzy, php-format msgid "GOsa has detected objects outside of the configured storage point (%s)." msgstr "U staat op het punt de invoer '%s' te kopieren." #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:161 msgid "Objects that will be added" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:169 msgid "Objects that will be moved" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:177 #, fuzzy, php-format msgid "Moving object '%s' to '%s'" msgstr "Verplaatsen van %s naar %s" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:204 #, php-format msgid "Migration failed for object %s: DN already exists!" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:208 #, php-format msgid "Migration failed for object %s: please check if it already exists!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:3 #, fuzzy msgid "Warning message" msgstr "Bericht in wachtstand plaatsen" #: plugins/addons/propertyEditor/property-list.tpl:9 msgid "" "Modifying properties may break your setup, destroy or mess up your LDAP " "database, lead to security holes or it can even make a login impossible!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:10 msgid "" "Since configuration properties are stored in the LDAP database a copy/backup " "can be handy." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:14 msgid "" "If you've debarred yourself, you can try to set 'ignoreLdapProperties' to " "'true' in your gosa.conf main section. This will make GOsa ignore LDAP based " "property values." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:22 msgid "" "I understand that there are certain risks, but I want to modify properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:38 msgid "Ignoring LDAP defined properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:77 msgid "Undo" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:1 #, fuzzy msgid "Command verifier" msgstr "en" #: plugins/addons/propertyEditor/commandVerifier.tpl:3 msgid "" "Here you can execute commands in the way GOsa does and check the generated " "results or errors. This can be very useful especially for the post events " "(postcreate, postmodify and postremove) due to the fact that these hook are " "executed silently." msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:8 msgid "" "Please be careful here, all commands will really be executed on your machine " "and may break things!" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:15 msgid "The command to check for" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:17 #, fuzzy msgid "Test" msgstr "Timeout" #: plugins/addons/propertyEditor/class_commandVerifier.inc:56 msgid "Results" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:6 #, fuzzy msgid "Preferences" msgstr "Referenties" #: plugins/addons/propertyEditor/class_propertyEditor.inc:7 msgid "" "Configure global and special GOsa settings like hooks and plug-in parameters" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:206 #, fuzzy msgid "No description" msgstr "Eenheid omschrijving" #: plugins/addons/propertyEditor/class_propertyEditor.inc:251 msgid "Test the given command." msgstr "" #: plugins/addons/propertyEditor/property-list.xml:11 #, fuzzy msgid "List of configuration settings" msgstr "Gebruikersinstellingen" #: plugins/addons/propertyEditor/property-list.xml:16 #, fuzzy msgid "Property not used" msgstr "Gebruikersgroep" #: plugins/addons/propertyEditor/property-list.xml:24 msgid "Property will be restored" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:32 #, fuzzy msgid "Modified property" msgstr "Persoonlijke informatie" #: plugins/addons/propertyEditor/property-list.xml:40 #, fuzzy msgid "Property configured in LDAP" msgstr "Configuratie bestand" #: plugins/addons/propertyEditor/property-list.xml:48 #, fuzzy msgid "Property configured in config file" msgstr "Configuratie bestand" #: plugins/addons/propertyEditor/property-list.xml:81 #, fuzzy msgid "Class" msgstr "klasse" #: plugins/addons/propertyEditor/property-list.xml:89 #, fuzzy msgid "Value" msgstr "man" #: plugins/addons/propertyEditor/property-list.xml:125 msgid "Restore to default" msgstr "" #: plugins/admin/groups/paste_generic.tpl:1 msgid "Group settings" msgstr "Groep instellingen" #: plugins/admin/groups/paste_generic.tpl:2 #, fuzzy msgid "Paste group settings" msgstr "Groep instellingen" #: plugins/admin/groups/paste_generic.tpl:5 #: plugins/admin/groups/generic.tpl:11 #: plugins/admin/ogroups/paste_generic.tpl:4 #: plugins/admin/ogroups/generic.tpl:7 msgid "Group name" msgstr "Groepnaam" #: plugins/admin/groups/paste_generic.tpl:8 #: plugins/admin/groups/generic.tpl:17 #, fuzzy msgid "POSIX name of the group" msgstr "POSIX naam van de groep" #: plugins/admin/groups/paste_generic.tpl:13 #: plugins/admin/groups/generic.tpl:59 #, fuzzy msgid "Normally IDs are auto-generated, select to specify manually" msgstr "" "Normaliter worden IDs automatisch gegenereerd. Selecteer om handmatig te " "specificeren" #: plugins/admin/groups/paste_generic.tpl:15 #: plugins/admin/groups/generic.tpl:62 msgid "Force GID" msgstr "Forceer GID" #: plugins/admin/groups/paste_generic.tpl:18 #: plugins/admin/groups/generic.tpl:65 msgid "Forced ID number" msgstr "Geforceerd ID nummer" #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:14 #: plugins/admin/groups/userSelect/user-list.xml:14 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:15 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:63 #: plugins/admin/ogroups/class_ogroupManagement.inc:183 #: plugins/admin/users/user-list.xml:23 plugins/admin/users/user-list.xml:95 msgid "User" msgstr "Gebruiker" #: plugins/admin/groups/singleUserSelect/class_singleUserSelect.inc:29 #: plugins/admin/groups/userSelect/class_userSelect.inc:26 #, fuzzy msgid "User selection" msgstr "Groep instellingen" #: plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 #, fuzzy msgid "Cannot find group SID in your configuration!" msgstr "" "Kan de SID van deze groep niet vinden in de LDAP database of in uw " "configuratie bestand." #: plugins/admin/groups/class_group.inc:310 msgid "Samba group" msgstr "Samba groep" #: plugins/admin/groups/class_group.inc:310 #, fuzzy msgid "Domain administrators" msgstr "Windows beheerders" #: plugins/admin/groups/class_group.inc:310 msgid "Domain users" msgstr "Windows gebruikers" #: plugins/admin/groups/class_group.inc:311 msgid "Domain guests" msgstr "Windows gasten" #: plugins/admin/groups/class_group.inc:316 #, php-format msgid "Special group (%d)" msgstr "Speciale groep (%d)" #: plugins/admin/groups/class_group.inc:483 #, php-format msgid "Adding UID '%s' to group '%s' failed: cannot find user object!" msgstr "" #: plugins/admin/groups/class_group.inc:489 #, php-format msgid "Add UID '%s' to group '%s' failed: UID is used more than once!" msgstr "" #: plugins/admin/groups/class_group.inc:772 #, fuzzy, php-format msgid "Cannot find any SID for '%s'!" msgstr "Kan bestand '%s' niet aanmaken." #: plugins/admin/groups/class_group.inc:777 #, fuzzy, php-format msgid "Cannot find any RIDBASE for '%s'!" msgstr "Kan bestand '%s' niet aanmaken." #: plugins/admin/groups/class_group.inc:871 #, php-format msgid "The gidNumber '%s' is already in use by %s!" msgstr "" #: plugins/admin/groups/class_group.inc:1055 #, fuzzy msgid "Generic group settings" msgstr "Algemene wachtrij instellingen" #: plugins/admin/groups/class_group.inc:1068 #, fuzzy msgid "RDN for object group storage." msgstr "Naam van objectgroepen" #: plugins/admin/groups/class_group.inc:1082 #, fuzzy msgid "Samba group type" msgstr "Samba groep" #: plugins/admin/groups/class_group.inc:1083 #, fuzzy msgid "Samba domain name" msgstr "Samba home" #: plugins/admin/groups/class_group.inc:1085 #, fuzzy msgid "Phone pickup group" msgstr "Leden zitten in een telefoon beantwoordgroep" #: plugins/admin/groups/class_group.inc:1086 #, fuzzy msgid "Nagios group" msgstr "Nagios account" #: plugins/admin/groups/class_group.inc:1088 #, fuzzy msgid "Group member" msgstr "Groepsleden" #: plugins/admin/groups/class_groupManagement.inc:26 msgid "" "Manage aspects of groups like members, POSIX, desktop, samba and mail " "settings" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:100 #: plugins/admin/ogroups/class_ogroupManagement.inc:115 #: plugins/admin/users/class_userManagement.inc:196 #, fuzzy msgid "Infrastructure error" msgstr "PHP fout" #: plugins/admin/groups/class_groupManagement.inc:158 #: plugins/admin/users/class_userManagement.inc:895 #, fuzzy msgid "Edit POSIX properties" msgstr "Bewerk UNIX eigenschappen" #: plugins/admin/groups/class_groupManagement.inc:166 #: plugins/admin/users/class_userManagement.inc:899 msgid "Edit mail properties" msgstr "Bewerk E-mail eigenschappen" #: plugins/admin/groups/class_groupManagement.inc:174 #: plugins/admin/users/class_userManagement.inc:903 msgid "Edit samba properties" msgstr "Bewerk Samba eigenschappen" #: plugins/admin/groups/class_groupManagement.inc:182 #: plugins/admin/users/class_userManagement.inc:919 msgid "Edit phone properties" msgstr "Bewerk telefoon eigenschappen" #: plugins/admin/groups/class_groupManagement.inc:189 #, fuzzy msgid "Menu" msgstr "Printer" #: plugins/admin/groups/class_groupManagement.inc:190 #, fuzzy msgid "Edit start menu properties" msgstr "Bewerk Samba eigenschappen" #: plugins/admin/groups/class_groupManagement.inc:198 #: plugins/admin/users/class_userManagement.inc:911 msgid "Edit environment properties" msgstr "Bewerk omgeving eigenschappen" #: plugins/admin/groups/group-filter.xml:31 #, fuzzy msgid "Default filter2" msgstr "Parameters" #: plugins/admin/groups/generic.tpl:28 plugins/admin/ogroups/generic.tpl:18 msgid "Descriptive text for this group" msgstr "Omschrijving voor deze groep" #: plugins/admin/groups/generic.tpl:75 plugins/admin/groups/generic.tpl:102 msgid "Select to create a samba conform group" msgstr "Selecteer om een samba conforme groep te maken" #: plugins/admin/groups/generic.tpl:87 plugins/admin/groups/generic.tpl:110 msgid "in domain" msgstr "in domein" #: plugins/admin/groups/generic.tpl:131 msgid "Members are in a phone pickup group" msgstr "Leden zitten in een telefoon beantwoordgroep" #: plugins/admin/groups/generic.tpl:146 #, fuzzy msgid "Members are in a Nagios group" msgstr "Leden zitten in een systeeminformatie groep (Nagios)" #: plugins/admin/groups/generic.tpl:175 plugins/admin/ogroups/generic.tpl:41 msgid "The group members are part of a dyn-group and cannot be managed!" msgstr "" #: plugins/admin/groups/generic.tpl:188 #, fuzzy msgid "Common group members" msgstr "Toon groepen" #: plugins/admin/groups/generic.tpl:197 #, fuzzy msgid "Partial group members" msgstr "Groepsleden" #: plugins/admin/groups/generic.tpl:202 msgid "Group members" msgstr "Groepsleden" #: plugins/admin/groups/group-list.xml:11 msgid "List of groups" msgstr "Lijst met groepen" #: plugins/admin/groups/group-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:57 #: plugins/admin/departments/dcObject.tpl:8 #: plugins/admin/departments/dcObject.tpl:9 #: plugins/admin/departments/country.tpl:8 #: plugins/admin/departments/country.tpl:9 #: plugins/admin/departments/organization.tpl:7 #: plugins/admin/departments/organization.tpl:9 #: plugins/admin/departments/generic.tpl:7 #: plugins/admin/departments/generic.tpl:9 #: plugins/admin/departments/locality.tpl:8 #: plugins/admin/departments/locality.tpl:9 #: plugins/admin/departments/domain.tpl:8 #: plugins/admin/departments/domain.tpl:9 plugins/admin/users/user-list.xml:73 msgid "Properties" msgstr "Eigenschappen" #: plugins/admin/groups/group-list.xml:91 #: plugins/admin/ogroups/ogroup-list.xml:91 plugins/admin/acl/acl-list.xml:131 #: plugins/admin/departments/dep-list.xml:172 #: plugins/admin/users/user-list.xml:114 msgid "Edit" msgstr "Bewerken" #: plugins/admin/groups/group-list.xml:106 #: plugins/admin/ogroups/ogroup-list.xml:106 #: plugins/admin/users/user-list.xml:156 #, fuzzy msgid "Send message" msgstr "Bericht in wachtstand plaatsen" #: plugins/admin/groups/group-list.xml:138 #, fuzzy msgid "Edit group" msgstr "Primaire groep" #: plugins/admin/groups/group-list.xml:151 #, fuzzy msgid "Remove group" msgstr "servers" #: plugins/admin/groups/userGroupSelect/class_userGroupSelect.inc:29 #, fuzzy msgid "User and group selection" msgstr "Groep instellingen" #: plugins/admin/ogroups/ogroup-list.xml:11 msgid "List of object groups" msgstr "Lijst met objectgroepen" #: plugins/admin/ogroups/ogroup-list.xml:15 #: plugins/admin/ogroups/generic.tpl:1 msgid "Object group" msgstr "Objectgroep" #: plugins/admin/ogroups/ogroup-list.xml:142 #, fuzzy msgid "Edit object group" msgstr "Objectgroep" #: plugins/admin/ogroups/ogroup-list.xml:155 #, fuzzy msgid "Remove object group" msgstr "servers" #: plugins/admin/ogroups/paste_generic.tpl:1 #, fuzzy msgid "Paste object group" msgstr "Objectgroep" #: plugins/admin/ogroups/paste_generic.tpl:7 #, fuzzy msgid "Please enter the new object group name" msgstr "Geef a.u.b. een nieuwe naam op" #: plugins/admin/ogroups/paste_generic.tpl:16 msgid "Warning: systems can only inherit from a single object group!" msgstr "" #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:47 #: plugins/admin/ogroups/class_ogroupManagement.inc:192 msgid "Printer" msgstr "Printer" #: plugins/admin/ogroups/objectSelect/class_objectSelect.inc:29 #, fuzzy msgid "Object selection" msgstr "Groep instellingen" #: plugins/admin/ogroups/tabs_ogroups.inc:139 msgid "Phone queue" msgstr "Telefoonwachtrij" #: plugins/admin/ogroups/tabs_ogroups.inc:164 #, fuzzy msgid "Groupware" msgstr "Groepnaam" #: plugins/admin/ogroups/tabs_ogroups.inc:176 #, fuzzy msgid "System settings" msgstr "Gebruikersinstellingen" #: plugins/admin/ogroups/tabs_ogroups.inc:188 #: plugins/admin/ogroups/tabs_ogroups.inc:213 #, fuzzy msgid "Recipe" msgstr "Ontvanger" #: plugins/admin/ogroups/tabs_ogroups.inc:200 #: plugins/admin/ogroups/tabs_ogroups.inc:222 msgid "Devices" msgstr "Apparaten" #: plugins/admin/ogroups/tabs_ogroups.inc:232 #, fuzzy msgid "Deployment summary" msgstr "Afdelingnaam" #: plugins/admin/ogroups/tabs_ogroups.inc:242 msgid "Desktop" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:259 msgid "Applications" msgstr "Programma's" #: plugins/admin/ogroups/generic.tpl:10 msgid "Name of the group" msgstr "Naam van de groep" #: plugins/admin/ogroups/generic.tpl:46 msgid "Member objects" msgstr "Lidmaatschap objecten" #: plugins/admin/ogroups/class_ogroup.inc:244 msgid "You cannot combine terminals and workstations in one object group!" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:318 #: plugins/admin/users/class_userManagement.inc:472 #: plugins/admin/users/class_userManagement.inc:507 #: plugins/admin/users/class_userManagement.inc:539 msgid "none" msgstr "geen" #: plugins/admin/ogroups/class_ogroup.inc:320 msgid "too many different objects!" msgstr "te veel verschillende object tpyes!" #: plugins/admin/ogroups/class_ogroup.inc:322 msgid "users" msgstr "gebruikers" #: plugins/admin/ogroups/class_ogroup.inc:323 msgid "groups" msgstr "groepen" #: plugins/admin/ogroups/class_ogroup.inc:324 msgid "applications" msgstr "programma's" #: plugins/admin/ogroups/class_ogroup.inc:325 msgid "departments" msgstr "afdelingen" #: plugins/admin/ogroups/class_ogroup.inc:326 msgid "servers" msgstr "servers" #: plugins/admin/ogroups/class_ogroup.inc:327 msgid "workstations" msgstr "werkstations" #: plugins/admin/ogroups/class_ogroup.inc:328 #, fuzzy msgid "Windows workstations" msgstr "Toon werkstations" #: plugins/admin/ogroups/class_ogroup.inc:329 msgid "terminals" msgstr "terminals" #: plugins/admin/ogroups/class_ogroup.inc:330 msgid "phones" msgstr "telefoons" #: plugins/admin/ogroups/class_ogroup.inc:331 msgid "printers" msgstr "printers" #: plugins/admin/ogroups/class_ogroup.inc:555 #, fuzzy msgid "Non existing DN:" msgstr "Niet bestaande dn: " #: plugins/admin/ogroups/class_ogroup.inc:673 #, php-format msgid "" "These systems are already configured by other object groups and cannot be " "added:" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:707 #, fuzzy msgid "You can combine two different object types at maximum, only!" msgstr "U kunt maximaal twee verschillende object types tegelijk combineren!" #: plugins/admin/ogroups/class_ogroup.inc:873 #, fuzzy msgid "Object group generic" msgstr "Objectgroep" #: plugins/admin/ogroups/class_ogroup.inc:882 #: plugins/admin/ogroups/class_ogroupManagement.inc:25 msgid "Object groups" msgstr "Objectgroepen" #: plugins/admin/ogroups/class_ogroupManagement.inc:26 msgid "Combine different types of objects to make use of this relationship" msgstr "" #: plugins/admin/ogroups/class_ogroupManagement.inc:182 #, fuzzy msgid "Templates" msgstr "Sjabloon" #: plugins/admin/ogroups/class_ogroupManagement.inc:185 msgid "Application" msgstr "Programma" #: plugins/admin/ogroups/class_ogroupManagement.inc:190 #, fuzzy msgid "Windows Install" msgstr "Windows werkstation" #: plugins/admin/acl/tabs_acl_role.inc:28 plugins/admin/acl/acl-filter.xml:33 #, fuzzy msgid "ACL Templates" msgstr "Sjablonen" #: plugins/admin/acl/acl-list.xml:11 #, fuzzy msgid "List of ACLs" msgstr "Lijst met macro's" #: plugins/admin/acl/paste_role.tpl:1 #, fuzzy msgid "Paste ACL-role" msgstr "Verwijder gebruiker" #: plugins/admin/acl/acl-filter.xml:48 #: plugins/admin/acl/class_aclManagement.inc:154 #, fuzzy msgid "ACL Assignment" msgstr "Blokkeerlijst beheer" #: plugins/admin/acl/class_aclManagement.inc:26 msgid "" "Control access to GOsa managed objects down to attribute and action level" msgstr "" #: plugins/admin/acl/class_aclRole.inc:26 #: plugins/admin/acl/class_aclRole.inc:715 #, fuzzy msgid "Access control roles" msgstr "Toegangsopties" #: plugins/admin/acl/class_aclRole.inc:27 #, fuzzy msgid "Edit AC roles" msgstr "Rechten" #: plugins/admin/acl/class_aclRole.inc:138 #, fuzzy msgid "Reset ACL" msgstr "Verwijderen" #: plugins/admin/acl/class_aclRole.inc:411 msgid "No ACL settings for this category" msgstr "" #: plugins/admin/acl/class_aclRole.inc:413 #, fuzzy, php-format msgid "ACL for these objects: %s" msgstr "Nieuw FAI object aanmaken" #: plugins/admin/acl/class_aclRole.inc:418 #, fuzzy msgid "Edit category ACL" msgstr "Bewerk klasse" #: plugins/admin/acl/class_aclRole.inc:421 #, fuzzy msgid "Delete category ACL" msgstr "Categorie" #: plugins/admin/acl/class_aclRole.inc:442 #, php-format msgid "Edit ACL for '%s', scope is '%s'" msgstr "" #: plugins/admin/acl/class_aclRole.inc:635 #, fuzzy msgid "Object in use" msgstr "Objectnaam" #: plugins/admin/acl/class_aclRole.inc:635 #, php-format msgid "This role cannot be removed while it is in use by these objects:" msgstr "" #: plugins/admin/acl/class_aclRole.inc:731 #, fuzzy msgid "RDN for role storage." msgstr "Kiosk profiel instellingen" #: plugins/admin/departments/dcObject.tpl:5 #: plugins/admin/departments/dep-filter.xml:77 #: plugins/admin/departments/dep-list.xml:23 #: plugins/admin/departments/dep-list.xml:110 #, fuzzy msgid "Domain component" msgstr "Windows beheerders" #: plugins/admin/departments/dcObject.tpl:11 #: plugins/admin/departments/locality.tpl:11 #, fuzzy msgid "Locality name" msgstr "Naam van de locatie" #: plugins/admin/departments/dcObject.tpl:14 #: plugins/admin/departments/locality.tpl:14 #, fuzzy msgid "Name of locality to create" msgstr "Naam van de aan te maken subtree" #: plugins/admin/departments/dcObject.tpl:22 #: plugins/admin/departments/country.tpl:22 #: plugins/admin/departments/organization.tpl:22 #: plugins/admin/departments/locality.tpl:22 #: plugins/admin/departments/domain.tpl:22 msgid "Descriptive text for department" msgstr "Omschrijving voor de afdeling" #: plugins/admin/departments/dcObject.tpl:67 #: plugins/admin/departments/country.tpl:68 #: plugins/admin/departments/class_countryGeneric.inc:95 #: plugins/admin/departments/organization.tpl:132 #: plugins/admin/departments/class_department.inc:686 #: plugins/admin/departments/class_domain.inc:94 #: plugins/admin/departments/class_organizationGeneric.inc:135 #: plugins/admin/departments/generic.tpl:132 #: plugins/admin/departments/locality.tpl:67 #: plugins/admin/departments/class_localityGeneric.inc:95 #: plugins/admin/departments/class_dcObject.inc:94 #: plugins/admin/departments/domain.tpl:67 msgid "Administrative settings" msgstr "Administratieve instellingen" #: plugins/admin/departments/dcObject.tpl:70 #: plugins/admin/departments/country.tpl:71 #: plugins/admin/departments/organization.tpl:135 #: plugins/admin/departments/generic.tpl:135 #: plugins/admin/departments/locality.tpl:70 #: plugins/admin/departments/domain.tpl:70 msgid "Tag department as an independent administrative unit" msgstr "Markeer de afdeling als een onafhankelijke administratieve eenheid" #: plugins/admin/departments/dep-filter.xml:49 #: plugins/admin/departments/country.tpl:5 #: plugins/admin/departments/class_countryGeneric.inc:82 #: plugins/admin/departments/class_countryGeneric.inc:83 #: plugins/admin/departments/dep-list.xml:31 #: plugins/admin/departments/dep-list.xml:117 #: plugins/admin/departments/class_departmentManagement.inc:217 msgid "Country" msgstr "Land" #: plugins/admin/departments/dep-filter.xml:63 #: plugins/admin/departments/dep-list.xml:39 #: plugins/admin/departments/dep-list.xml:124 #: plugins/admin/departments/class_departmentManagement.inc:229 #: plugins/admin/departments/locality.tpl:5 #: plugins/admin/departments/class_localityGeneric.inc:82 #: plugins/admin/departments/class_localityGeneric.inc:83 #, fuzzy msgid "Locality" msgstr "Plaats" #: plugins/admin/departments/dep-filter.xml:105 #: plugins/admin/departments/dep-list.xml:15 #: plugins/admin/departments/dep-list.xml:103 #: plugins/admin/departments/class_departmentManagement.inc:193 #: plugins/admin/departments/domain.tpl:5 #, fuzzy msgid "Domain" msgstr "in domein" #: plugins/admin/departments/country.tpl:11 #: plugins/admin/departments/class_countryGeneric.inc:91 #, fuzzy msgid "Country name" msgstr "Land" #: plugins/admin/departments/country.tpl:14 #, fuzzy msgid "Name of country to create" msgstr "Naam van de aan te maken subtree" #: plugins/admin/departments/dep-list.xml:11 #, fuzzy msgid "List of structural objects" msgstr "Lijst met objectgroepen" #: plugins/admin/departments/dep_move_confirm.tpl:2 #, fuzzy msgid "You are currently moving/renaming this department." msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #: plugins/admin/departments/dep_move_confirm.tpl:6 msgid "" "Modifying a departments naming attribute 'ou' or base may corrupt ACLs and " "snapshot entries for all entire objects." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:9 msgid "GOsa can NOT fix this for you, yet." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:12 msgid "" "Before you confirm this action, ensure that everything will be as expected, " "possibly the best solution is a backup." msgstr "" #: plugins/admin/departments/organization.tpl:11 #, fuzzy msgid "Name of organization" msgstr "Organisatie" #: plugins/admin/departments/organization.tpl:14 #, fuzzy msgid "Name of organization to create" msgstr "Naam van de aan te maken subtree" #: plugins/admin/departments/organization.tpl:30 #: plugins/admin/departments/generic.tpl:30 msgid "Category for this subtree" msgstr "Categorie voor deze subtree" #: plugins/admin/departments/organization.tpl:89 #: plugins/admin/departments/generic.tpl:90 msgid "State where this subtree is located" msgstr "Provincie waar deze subtree zich bevindt" #: plugins/admin/departments/organization.tpl:97 #: plugins/admin/departments/generic.tpl:98 msgid "Location of this subtree" msgstr "Plaats van deze subtree" #: plugins/admin/departments/organization.tpl:105 #: plugins/admin/departments/generic.tpl:106 msgid "Postal address of this subtree" msgstr "Post adres van deze subtree" #: plugins/admin/departments/organization.tpl:112 #: plugins/admin/departments/generic.tpl:113 msgid "Base telephone number of this subtree" msgstr "Basis telefoonnummer van deze subtree" #: plugins/admin/departments/organization.tpl:120 #: plugins/admin/departments/generic.tpl:121 msgid "Base facsimile telephone number of this subtree" msgstr "Basis Fax nummer van deze subtree" #: plugins/admin/departments/class_department.inc:439 #, fuzzy msgid "Cannot find an unused tag for this administrative unit!" msgstr "" "Fatale fout: Kon geen ongebruikte markering vinden om de administratieve " "eenheid te markeren!" #: plugins/admin/departments/class_department.inc:507 #, php-format msgid "Tagging '%s'." msgstr "Markeren van '%s'." #: plugins/admin/departments/class_department.inc:588 #, php-format msgid "Moving '%s' to '%s'" msgstr "Verplaatsen van %s naar %s" #: plugins/admin/departments/class_department.inc:629 #, php-format msgid "FAILED to copy %s, aborting operation" msgstr "Kopieren van %s is mislukt. Bewerking afgebroken." #: plugins/admin/departments/class_department.inc:660 #: plugins/admin/departments/class_department.inc:671 msgid "Departments" msgstr "Afdelingen" #: plugins/admin/departments/class_department.inc:674 msgid "Department name" msgstr "Afdelingnaam" #: plugins/admin/departments/class_department.inc:682 msgid "Telephone" msgstr "Telefoon" #: plugins/admin/departments/class_department.inc:737 #, php-format msgid "Object '%s' is already tagged" msgstr "Object '%s' is al gemarkeerd" #: plugins/admin/departments/class_department.inc:744 #, php-format msgid "Adding tag (%s) to object '%s'" msgstr "Toevoegen van markering (%s) aan object '%s'" #: plugins/admin/departments/class_department.inc:776 #, php-format msgid "Removing tag from object '%s'" msgstr "Verwijderen van markering van object '%s'" #: plugins/admin/departments/dep_iframe.tpl:1 msgid "Processing the requested operation" msgstr "Bezig met verwerken van de gevraagde opdracht" #: plugins/admin/departments/dep_iframe.tpl:7 #, fuzzy msgid "" "Your browser doesn't support IFRAME HTML elements. Please use this link to " "perform the requested operation." msgstr "" "Uw browser heeft geen ondersteuning voor frames. Gebruik a.u.b. deze link om " "de gewenste opdracht uit te voeren." #: plugins/admin/departments/class_domain.inc:81 #: plugins/admin/departments/class_domain.inc:82 #: plugins/admin/departments/class_departmentManagement.inc:205 #: plugins/admin/departments/class_dcObject.inc:81 #: plugins/admin/departments/class_dcObject.inc:82 #, fuzzy msgid "Domain Component" msgstr "Windows beheerders" #: plugins/admin/departments/class_organizationGeneric.inc:122 #, fuzzy msgid "Organization name" msgstr "Organisatie" #: plugins/admin/departments/class_organizationGeneric.inc:132 #: plugins/generic/infoPage/class_infoPage.inc:109 msgid "Phone number" msgstr "Telefoonnummer" #: plugins/admin/departments/generic.tpl:11 msgid "Name of department" msgstr "Naam van de afdeling" #: plugins/admin/departments/generic.tpl:14 msgid "Name of subtree to create" msgstr "Naam van de aan te maken subtree" #: plugins/admin/departments/generic.tpl:22 #, fuzzy msgid "Descriptive text for department" msgstr "Omschrijving voor de afdeling" #: plugins/admin/departments/class_departmentManagement.inc:25 #, fuzzy msgid "Directory structure" msgstr "Directory" #: plugins/admin/departments/class_departmentManagement.inc:26 msgid "" "Manage organizations, organizational units, localities, countries and more" msgstr "" #: plugins/admin/departments/class_departmentManagement.inc:125 msgid "" "As soon as the tag operation has finished, you can scroll down to end of the " "page and press the 'Continue' button to continue with the department " "management dialog." msgstr "" #: plugins/admin/departments/domain.tpl:11 #, fuzzy msgid "Domain name" msgstr "Windows beheerders" #: plugins/admin/departments/domain.tpl:14 #, fuzzy msgid "Name of domain to create" msgstr "Naam van de aan te maken subtree" #: plugins/admin/users/password.tpl:4 msgid "" "To change the user password use the fields below. The changes take effect " "immediately. Please memorize the new password, because the user wouldn't be " "able to login without it." msgstr "" "Gebruik de velden hieronder om het gebruikers wachtwoord te veranderen. De " "veranderingen worden onmiddelijk doorgevoerd. Onthoud het nieuwe wachtwoord " "a.u.b. aangezien de gebruiker niet in kan loggen zonder dit wachtwoord." #: plugins/admin/users/password.tpl:11 plugins/admin/users/password.tpl:39 #, fuzzy msgid "Password input dialog" msgstr "Het veranderen van het wachtwoord is niet toegestaan" #: plugins/admin/users/password.tpl:27 plugins/admin/users/password.tpl:79 #, fuzzy msgid "Strength" msgstr "Straat" #: plugins/admin/users/password.tpl:95 #, fuzzy msgid "Enforce password change on next login." msgstr "Het veranderen van het wachtwoord is niet toegestaan" #: plugins/admin/users/templatize.tpl:2 #, fuzzy msgid "Applying a template" msgstr "Sjablonen" #: plugins/admin/users/templatize.tpl:6 msgid "" "Applying a template to several users will replace all user attributes " "defined in the template." msgstr "" #: plugins/admin/users/templatize.tpl:13 #, fuzzy msgid "Apply user template" msgstr "Sjablonen" #: plugins/admin/users/templatize.tpl:15 plugins/admin/users/template.tpl:15 #: plugins/admin/users/class_userManagement.inc:546 #: plugins/admin/users/user-list.xml:15 plugins/admin/users/user-list.xml:102 msgid "Template" msgstr "Sjabloon" #: plugins/admin/users/templatize.tpl:32 #, fuzzy msgid "No templates available!" msgstr "Bestand is beschikbaar" #: plugins/admin/users/user-filter.xml:33 msgid "Show templates" msgstr "Toon sjablonen" #: plugins/admin/users/user-filter.xml:47 #, fuzzy msgid "Show POSIX users" msgstr "Posix instellingen" #: plugins/admin/users/user-filter.xml:61 #, fuzzy msgid "Show SAMBA users" msgstr "Toon servers" #: plugins/admin/users/user-filter.xml:75 #, fuzzy msgid "Show mail users" msgstr "Toon E-mail gebruikers" #: plugins/admin/users/template.tpl:2 msgid "Creating a new user using templates" msgstr "Een nieuwe gebruiker aanmaken m.b.v. een sjabloon" #: plugins/admin/users/template.tpl:6 msgid "" "Creating a new user can be assisted by using templates. Many database " "records will be filled automatically. Choose 'none' to skip the usage of " "templates." msgstr "" "Het aanmaken van een nieuwe gebruiker kan m.b.v. sjablonen gebeuren. Veel " "database records zullen dan automatisch gevuld worden. Kies 'geen' om het " "gebruik van sjablonen over te slaan." #: plugins/admin/users/template.tpl:13 msgid "User template selection dialog" msgstr "" #: plugins/admin/users/template.tpl:43 #, fuzzy msgid "Modify the uid proposal" msgstr "Bewerk algemene eigenschappen" #: plugins/admin/users/class_userManagement.inc:26 msgid "" "Manage aspects of user accounts like generic, POSIX, samba and mail settings" msgstr "" #: plugins/admin/users/class_userManagement.inc:401 #, fuzzy msgid "You have no permission to change this users password!" msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." #: plugins/admin/users/class_userManagement.inc:613 msgid "Cannot generate a unique id, please specify it manually!" msgstr "" #: plugins/admin/users/class_userManagement.inc:802 #, fuzzy msgid "Account locking" msgstr "Account" #: plugins/admin/users/class_userManagement.inc:803 #, php-format msgid "" "Password method '%s' does not support locking. Account (%s) has not been " "locked!" msgstr "" #: plugins/admin/users/class_userManagement.inc:876 #, fuzzy msgid "Unlock account" msgstr "Mijn account" #: plugins/admin/users/class_userManagement.inc:878 #, fuzzy msgid "Lock account" msgstr "Mijn account" #: plugins/admin/users/class_userManagement.inc:891 msgid "Edit generic properties" msgstr "Bewerk algemene eigenschappen" #: plugins/admin/users/class_userManagement.inc:906 msgid "Netatalk" msgstr "Netatalk" #: plugins/admin/users/class_userManagement.inc:907 #, fuzzy msgid "Edit Netatalk properties" msgstr "Bewerk Netatalk eigenschappen" #: plugins/admin/users/class_userManagement.inc:914 msgid "FAX" msgstr "Fax" #: plugins/admin/users/class_userManagement.inc:915 #, fuzzy msgid "Edit FAX properties" msgstr "Bewerk UNIX eigenschappen" #: plugins/admin/users/user-list.xml:11 msgid "List of users" msgstr "Lijst met gebruikers" #: plugins/admin/users/user-list.xml:140 #, fuzzy msgid "Lock users" msgstr "Lijst met gebruikers" #: plugins/admin/users/user-list.xml:148 #, fuzzy msgid "Unlock users" msgstr "Windows gebruikers" #: plugins/admin/users/user-list.xml:167 #, fuzzy msgid "Apply template" msgstr "Sjablonen" #: plugins/admin/users/user-list.xml:199 #, fuzzy msgid "New user from template" msgstr "Maak gebruiker aan vanuit sjabloon" #: plugins/admin/users/user-list.xml:213 msgid "Edit user" msgstr "Bewerk gebruiker" #: plugins/admin/users/user-list.xml:222 msgid "%{filter:lockLabel(userPassword)}" msgstr "" #: plugins/admin/users/user-list.xml:245 #, fuzzy msgid "Remove user" msgstr "Plaatje verwijderen" #: plugins/generic/welcome/class_welcome.inc:5 #: plugins/generic/welcome/class_welcome.inc:6 msgid "Back to main menu" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:15 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:15 msgid "Maximum" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:16 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:16 msgid "Average" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:17 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:17 msgid "Minimum" msgstr "" #: plugins/generic/statistics/chartClasses/class_actionSelectChart.inc:104 #, fuzzy msgid "Action" msgstr "Acties" #: plugins/generic/statistics/chartClasses/class_statChart.inc:73 #, fuzzy msgid "Systems" msgstr "Systeem" #: plugins/generic/statistics/statistics.tpl:2 msgid "Usage statistics" msgstr "" #: plugins/generic/statistics/statistics.tpl:5 #: plugins/generic/statistics/statistics.tpl:10 msgid "" "This feature is disabled. To enable it you have to register GOsa, you can " "initiate a registration using the dash-board plugin." msgstr "" #: plugins/generic/statistics/statistics.tpl:6 #: plugins/generic/statistics/statistics.tpl:12 #, fuzzy msgid "Dash board" msgstr "GOsa help" #: plugins/generic/statistics/statistics.tpl:16 #, fuzzy msgid "" "Communication with the GOsa-backend failed. Please check the RPC " "configuration!" msgstr "" "Kan niet verbinden met de opgegeven database. Controleer uw GLPI " "configuratie a.u.b." #: plugins/generic/statistics/statistics.tpl:22 msgid "Send" msgstr "" #: plugins/generic/statistics/statistics.tpl:28 msgid "Generate report for" msgstr "" #: plugins/generic/statistics/statistics.tpl:56 msgid "Update" msgstr "" #: plugins/generic/statistics/statistics.tpl:69 #: plugins/generic/statistics/statistics.tpl:78 msgid "No statistic data for given period" msgstr "" #: plugins/generic/statistics/statistics.tpl:87 #, fuzzy msgid "Select report type" msgstr "Selecteer een basis" #: plugins/generic/statistics/class_statistics.inc:263 #, fuzzy, php-format msgid "" "You have currently %s unsubmitted statistic collection, do you want to " "transmit them now?" msgstr "" "U bent momenteel database gegevens aan het bewerken. Wilt u eventuele " "wijzigingen ongedaan maken?" #: plugins/generic/dashBoard/dbChannelStatus/contents.tpl:1 #, fuzzy msgid "Channels" msgstr "Annuleren" #: plugins/generic/dashBoard/Register/register.tpl:3 #, fuzzy msgid "GOsa registration" msgstr "Algemene wachtrij instellingen" #: plugins/generic/dashBoard/Register/register.tpl:7 msgid "Do you want to register GOsa and benefit from the features it brings?" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:11 msgid "I do not want to register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:17 #: plugins/generic/dashBoard/dashBoard.tpl:5 msgid "Register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:19 msgid "Additionally to the 'Annonomous' account you can:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:21 msgid "Access to 'Premium-Channels'." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:22 msgid "" "Watch the status of current plugin updates/patches and the availability of " "new plugins." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:23 msgid "Recieve newsletter, if wanted." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:24 msgid "View several usefull statistics about your GOsa installation" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:29 msgid "What information will be transmitted to the backend and maybe stored:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:31 msgid "All personal information filled in the registration form." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:32 msgid "Information about the installed plugins and their version." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:33 msgid "" "The GOsa-UUID (will be generated during the registration) and a password, to " "authenticate." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:34 msgid "" "The bugs you will report and the corresponding trace. You can select what " "information you want to send in." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:35 msgid "" "When the statistics extension is used. GOsa will transmit information about " "plugins, their usage and the amount of objects present in your ldap " "database. No sensitive data is transmitted here, just the object type, the " "action performed, cpu usage, memory usage, elapsed time..." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:69 #: plugins/generic/dashBoard/Register/register.tpl:80 #, fuzzy msgid "Registration complete" msgstr "Bewerking afgerond" #: plugins/generic/dashBoard/Register/register.tpl:71 #, fuzzy msgid "GOsa instance successfully registered" msgstr "De sessie zal niet versleuteld zijn." #: plugins/generic/dashBoard/Register/register.tpl:82 #, fuzzy msgid "GOsa instance will not be registered" msgstr "De sessie zal niet versleuteld zijn." #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:54 msgid "" "Communciation with the backend failed! Please check your internet connection!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:56 msgid "" "Authentication failed, please check combination of username and password!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:58 msgid "" "Internal server error, please try again later. If the problem persists " "contact the GOsa-Team!" msgstr "" #: plugins/generic/dashBoard/dbNotifications/contents.tpl:1 #, fuzzy msgid "Notifications" msgstr "Beroep" #: plugins/generic/dashBoard/dashBoard.tpl:2 msgid "This feature is only accessible for registrated instances of GOsa" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:7 msgid "" "Unfortunately the registration server cannot be reached, maybe the server is " "down for maintaince or you've no internet access!" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:13 #, fuzzy msgid "GOsa dash board" msgstr "GOsa help" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:69 msgid "Version mismatch" msgstr "" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:73 #, fuzzy msgid "Schema missing" msgstr "Samba Instellingen" #: plugins/generic/dashBoard/dbPluginStatus/contents.tpl:1 #, fuzzy msgid "Plugin status" msgstr "Systeem status" #: plugins/generic/references/class_reference.inc:70 #, fuzzy msgid "Role membership" msgstr "Groep lidmaatschap" #: plugins/generic/references/class_reference.inc:76 #, fuzzy msgid "Object group membership" msgstr "Objectgroep" #: plugins/generic/references/class_reference.inc:82 #, fuzzy msgid "Department manager" msgstr "Afdeling beheer" #: plugins/generic/references/class_reference.inc:88 #, fuzzy msgid "User manager" msgstr "Gebruikersnaam" #: plugins/generic/references/contents.tpl:2 #: plugins/generic/references/contents.tpl:3 #, fuzzy msgid "Object information" msgstr "Persoonlijke informatie" #: plugins/generic/references/contents.tpl:7 #, fuzzy msgid "Show raw object entry" msgstr "Objectgroepen" #: plugins/generic/references/contents.tpl:18 #: plugins/generic/references/contents.tpl:20 #, fuzzy msgid "Last modification" msgstr "Beroep" #: plugins/generic/references/contents.tpl:29 #, fuzzy msgid "Object references" msgstr "Referenties" #: plugins/generic/references/contents.tpl:45 #, fuzzy msgid "ACL trace" msgstr "type" #: plugins/generic/references/class_aclResolver.inc:143 msgid "Enter another user name" msgstr "" #: plugins/generic/references/class_aclResolver.inc:193 #, fuzzy msgid "ACLs" msgstr "Rechten" #: plugins/generic/references/class_aclResolver.inc:198 #, php-format msgid "List of effective ACLs for '%s'" msgstr "" #: plugins/generic/references/class_aclResolver.inc:199 #: plugins/generic/references/class_aclResolver.inc:203 #, fuzzy msgid "Object permissions" msgstr "Groep instellingen" #: plugins/generic/references/class_aclResolver.inc:311 #, fuzzy msgid "create" msgstr "Aanmaken" #: plugins/generic/references/class_aclResolver.inc:312 #, fuzzy msgid "remove" msgstr "Verwijderen" #: plugins/generic/references/class_aclResolver.inc:313 #, fuzzy msgid "move" msgstr "Verwijderen" #, fuzzy #~ msgid "Member selection" #~ msgstr "Groep instellingen" #, fuzzy #~ msgid "Common group" #~ msgstr "Toon groepen" #, fuzzy #~ msgid "Groups differ" #~ msgstr "Gebruikersgroep" #, fuzzy #~ msgid "List of items" #~ msgstr "Lijst met gebruikers" #, fuzzy #~ msgid "Edit item" #~ msgstr "Bewerk certificaten" #, fuzzy #~ msgid "Remove item" #~ msgstr "Plaatje verwijderen" #, fuzzy #~ msgid "Container" #~ msgstr "Doorgaan" #, fuzzy #~ msgid "Config management" #~ msgstr "Systeembeheer" #, fuzzy #~ msgid "Distribution" #~ msgstr "Omschrijving" #, fuzzy #~ msgid "Component" #~ msgstr "Windows beheerders" #~ msgid "Home phone" #~ msgstr "Telefoon Privé" #~ msgid "Organizational unit" #~ msgstr "Afdeling" #, fuzzy #~ msgid "Max" #~ msgstr "Mei" #, fuzzy #~ msgid "Min" #~ msgstr "Hoofdmenu" #~ msgid "Welcome %s!" #~ msgstr "Welkom %s!" #, fuzzy #~ msgid "The folder %s specified for %s:%s cannot be used for reading!" #~ msgstr "" #~ "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module " #~ "'%s' bestaat niet." #, fuzzy #~ msgid "Object info" #~ msgstr "Objectnaam" #, fuzzy #~ msgid "Acls" #~ msgstr "Alle" #, fuzzy #~ msgid "" #~ "The file '%s' specified for '%s:%s' cannot be created neither be used for " #~ "writing!" #~ msgstr "" #~ "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module " #~ "'%s' bestaat niet." #, fuzzy #~ msgid "The values for 'New password' and 'Repeated new password' differ!" #~ msgstr "" #~ "Het nieuwe wachtwoord en het herhaalde wachtwoord komen niet met elkaar " #~ "overeen." #, fuzzy #~ msgid "The password used as new and current are too similar!" #~ msgstr "" #~ "Het huidige wachtwoord en het nieuwe wachtwoord lijken te veel op elkaar." #, fuzzy #~ msgid "The password used as new is to short!" #~ msgstr "Het nieuw opgegeven wachtwoord is te kort." #, fuzzy #~ msgid "External password changer reported a problem: %s" #~ msgstr "Extern wachtwoord verander mechanisme rapporteerde een probleem:" #, fuzzy #~ msgid "" #~ "Command %s specified as post modify action for plugin %s does not exist!" #~ msgstr "" #~ "Het commando '%s' dat gespecificeerd is als CHECK inhaker voor module " #~ "'%s' bestaat niet." #, fuzzy #~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." #~ msgstr "" #~ "FATAAL: Fout bij het verbinden met de LDAP server. De server meldt: '%s'." #, fuzzy #~ msgid "Username / UID is not unique inside the LDAP tree!" #~ msgstr "" #~ "Gebruikersnaam / UID is niet uniek. Controleer uw LDAP database a.u.b." #, fuzzy #~ msgid "" #~ "Username / UID is not unique inside the LDAP tree. Please contact your " #~ "Administrator." #~ msgstr "" #~ "Gebruikersnaam / UID is niet uniek. Controleer uw LDAP database a.u.b." #, fuzzy #~ msgid "LDAP server returned: %s" #~ msgstr "LDAP server" #, fuzzy #~ msgid "" #~ "Found multiple locks for object to be locked. This should not happen - " #~ "cleaning up multiple references." #~ msgstr "" #~ "Er zijn meerdere blokkades voor het te blokkeren object gevonden. Dat zou " #~ "niet mogelijk moeten zijn. Meervoudige verwijzingen worden opgeschoond." #, fuzzy #~ msgid "The size limit of %d entries is exceed!" #~ msgstr "De hoeveelheidslimiet van %d invoeren is overschreden!" #~ msgid "" #~ "Set the new size limit to %s and show me this message if the limit still " #~ "exceeds" #~ msgstr "" #~ "Stel de nieuwe hoeveelheidslimiet in op %s en toon me dit bericht indien " #~ "de limiet nog steeds overschreden wordt." #, fuzzy #~ msgid "incomplete" #~ msgstr "onvolledig" #, fuzzy #~ msgid "You're going to edit the LDAP entry/entries %s" #~ msgstr "U staat op het punt de invoer '%s' te kopieren." #~ msgid "Apply filter" #~ msgstr "Filter toepassen" #~ msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" #~ msgstr "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" #, fuzzy #~ msgid "Cannot write to revision file!" #~ msgstr "Kan bestand '%s' niet aanmaken." #, fuzzy #~ msgid "LDAP warning" #~ msgstr "LDAP beheer" #, fuzzy #~ msgid "Cannot get schema information from server. No schema check possible!" #~ msgstr "" #~ "Kan de schema informatie niet ophalen van de server. Schema controle is " #~ "onmogelijk!" #, fuzzy #~ msgid "Used to store account specific informations." #~ msgstr "Het account verloopt op" #, fuzzy #~ msgid "Missing required object class '%s'!" #~ msgstr "Toon FAI sjabloon objecten" #, fuzzy #~ msgid "Missing optional object class '%s'!" #~ msgstr "Toon FAI sjabloon objecten" #, fuzzy #~ msgid "Version mismatch for required object class '%s' (!=%s)!" #~ msgstr "Toon FAI sjabloon objecten" #, fuzzy #~ msgid "Class(es) available" #~ msgstr "Bestand is beschikbaar" #~ msgid "" #~ "Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to " #~ "exist." #~ msgstr "" #~ "Het commando '%s' dat gespecificeerd is als POSTMODIFY voor module '%s' " #~ "bestaat niet." #, fuzzy #~ msgid "Cannot allocate a free ID:" #~ msgstr "" #~ "Er zitten te veel gebruikers in de database. Kan geen vrij ID toewijzen!" #, fuzzy #~ msgid "Cannot allocate a free ID!" #~ msgstr "" #~ "Er zitten te veel gebruikers in de database. Kan geen vrij ID toewijzen!" #, fuzzy #~ msgid "Surename" #~ msgstr "Achternaam" #, fuzzy #~ msgid "External password changer reported a problem: %s." #~ msgstr "Extern wachtwoord verander mechanisme rapporteerde een probleem:" #~ msgid "Username" #~ msgstr "Gebruikersnaam" #~ msgid "" #~ "You've successfully changed your password. Remember to change all " #~ "programms configured to use it as well." #~ msgstr "" #~ "U heeft succesvol uw wachtwoord veranderd. Denkt u eraan dat u alle " #~ "programma's die dit wachtwoord gebruiken ook aanpast!" #~ msgid "Admin DN" #~ msgstr "Beheerders DN" #, fuzzy #~ msgid "Grant permission to owner" #~ msgstr "Kan bestand '%s' niet aanmaken." #~ msgid "Password change not allowed" #~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" #~ msgid "Preferred langage" #~ msgstr "Voorkeurstaal" #~ msgid "Posix settings" #~ msgstr "Posix instellingen" #, fuzzy #~ msgid "You have no permission to set your password!" #~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." #~ msgid "" #~ "You have changed the method your password is stored in the ldap database. " #~ "For that reason you've to enter your password at this point again. GOsa " #~ "will then encode it with the selected method." #~ msgstr "" #~ "U heeft de manier waarop uw wachtwoord wordt opgeslagen in de LDAP " #~ "database veranderd. Daarom moet u het wachtwoord op dit moment opnieuw " #~ "invoeren. GOsa zal dan het wachtwoord versleutelen op de door u " #~ "geselecteerde methode." #~ msgid "Posix" #~ msgstr "Posix" #, fuzzy #~ msgid "Edit posix properties" #~ msgstr "Bewerk telefoon eigenschappen" #, fuzzy #~ msgid "Acl" #~ msgstr "Alle" #, fuzzy #~ msgid "winstations" #~ msgstr "Windows werkstation" #, fuzzy #~ msgid "Sytem trust" #~ msgstr "Systeem vertrouwen" #, fuzzy #~ msgid "Processing" #~ msgstr "Rechten" #, fuzzy #~ msgid "Created" #~ msgstr "Aanmaken" #, fuzzy #~ msgid "No Content" #~ msgstr "Inhoud" #, fuzzy #~ msgid "Reset Content" #~ msgstr "Inhoud" #, fuzzy #~ msgid "Partial Content" #~ msgstr "Postcode" #, fuzzy #~ msgid "Multi-Status" #~ msgstr "Status" #, fuzzy #~ msgid "See Other" #~ msgstr "Verwijder gebruiker" #, fuzzy #~ msgid "Not Modified" #~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" #, fuzzy #~ msgid "Use Proxy" #~ msgstr "Proxy" #, fuzzy #~ msgid "(reserviert)" #~ msgstr "servers" #, fuzzy #~ msgid "Not Found" #~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" #, fuzzy #~ msgid "Method Not Allowed" #~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" #, fuzzy #~ msgid "Proxy Authentication Required" #~ msgstr "Nagios authenticatie" #, fuzzy #~ msgid "Gone" #~ msgstr "geen" #, fuzzy #~ msgid "Precondition Failed" #~ msgstr "Configuratie bestand" #, fuzzy #~ msgid "Expectation Failed" #~ msgstr "De database zoekopdracht is mislukt" #, fuzzy #~ msgid "Locked" #~ msgstr "Lijst met gebruikers" #, fuzzy #~ msgid "Unordered Collection" #~ msgstr "Groep instellingen" #, fuzzy #~ msgid "Internal Server Error" #~ msgstr "Terminal server" #, fuzzy #~ msgid "Not Implemented" #~ msgstr "onvolledig" #, fuzzy #~ msgid "Service Unavailable" #~ msgstr "Servernaam" #, fuzzy #~ msgid "Gateway Time-out" #~ msgstr "Omlaag" #, fuzzy #~ msgid "GOsa settings 3/3" #~ msgstr "Gebruikersinstellingen" #, fuzzy #~ msgid "Session lifetime must be a numeric value!" #~ msgstr "Toekomstige dagen moet een waarde bevatten." #, fuzzy #~ msgid "Maximum LDAP query time must be a numeric value!" #~ msgstr "Toekomstige dagen moet een waarde bevatten." #, fuzzy #~ msgid "Create a basic, single site configuration" #~ msgstr "FAX database" #, fuzzy #~ msgid "Find every possible configuration error" #~ msgstr "Configuratie bestand" #, fuzzy #~ msgid "To continue..." #~ msgstr "Installatie vervolg..." #~ msgid "Samba settings" #~ msgstr "Samba Instellingen" #, fuzzy #~ msgid "Samba SID" #~ msgstr "Samba" #, fuzzy #~ msgid "RID base" #~ msgstr "Database" #, fuzzy #~ msgid "Workstation container" #~ msgstr "Werkstation naam" #, fuzzy #~ msgid "Samba SID mapping" #~ msgstr "Samba" #, fuzzy #~ msgid "Timezone" #~ msgstr "Tijdzone" #, fuzzy #~ msgid "Please choose your preferred timezone here" #~ msgstr "Voorkeurstaal" #, fuzzy #~ msgid "Additional GOsa settings" #~ msgstr "Programma instellingen" #, fuzzy #~ msgid "Government mode" #~ msgstr "naar map" #, fuzzy #~ msgid "GOsa logging" #~ msgstr "GOsa" #~ msgid "Mail settings" #~ msgstr "E-mail instellingen" #~ msgid "Mail method" #~ msgstr "E-mail methode" #, fuzzy #~ msgid "Vacation templates" #~ msgstr "Werkstation sjabloon" #, fuzzy #~ msgid "Snapshots / Undo" #~ msgstr "Het opslaan van de telefoon is mislukt" #, fuzzy #~ msgid "Enable snapshots" #~ msgstr "Nagios account aanmaken" #, fuzzy #~ msgid "Snapshot base" #~ msgstr "Het opslaan van de telefoon is mislukt" #, fuzzy #~ msgid "GOsa settings 2/3" #~ msgstr "Gebruikersinstellingen" #, fuzzy #~ msgid "Customize special parameters" #~ msgstr "Controleer parameter" #, fuzzy #~ msgid "Checking for invisible departments" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "Checking for invisible users" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "Checking for users outside the people tree" #~ msgstr "Zoeken naar CUPS module" #, fuzzy #~ msgid "Checking for groups outside the groups tree" #~ msgstr "Zoeken naar CUPS module" #, fuzzy #~ msgid "Checking for duplicated UID numbers" #~ msgstr "Zoeken naar functie %s" #, fuzzy #~ msgid "Checking for duplicate GID numbers" #~ msgstr "Zoeken naar functie %s" #, fuzzy #~ msgid "Checking for old style USB devices" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "Checking for old services that have to be migrated" #~ msgstr "Zoeken naar CUPS module" #, fuzzy #~ msgid "Checking for old style application menus" #~ msgstr "Zoeken naar functie %s" #, fuzzy #~ msgid "Found %s duplicate values for attribute 'uidNumber'." #~ msgstr "Er is een dubbele waarde gevonden voor record type '%s'." #, fuzzy #~ msgid "Found %s duplicate values for attribute 'gidNumber'." #~ msgstr "Er is een dubbele waarde gevonden voor record type '%s'." #, fuzzy #~ msgid "Move" #~ msgstr "Modus" #, fuzzy #~ msgid "Cannot migrate department '%s':" #~ msgstr "Ga naar basis afdelingen" #, fuzzy #~ msgid "GOsa 2.5 administrative accounts found: %s" #~ msgstr "Netatalk account aanmaken" #, fuzzy #~ msgid "There is no valid GOsa 2.6 administrator account inside your LDAP." #~ msgstr "Netatalk account aanmaken" #, fuzzy #~ msgid "Cannot move users to the requested department!" #~ msgstr "Ga naar de afdeling van de gebruiker" #, fuzzy #~ msgid "to" #~ msgstr "Stop" #, fuzzy #~ msgid "Copy '%s' to '%s' failed:" #~ msgstr "Verplaatsen van %s naar %s" #, fuzzy #~ msgid "Updating '%s' failed: %s" #~ msgstr "Log DB gebruiker" #, fuzzy #~ msgid "Theme" #~ msgstr "MIME" #, fuzzy #~ msgid "Apache" #~ msgstr "Cache" #, fuzzy #~ msgid "People and group storage" #~ msgstr "OU voor gebruikers opslag" #, fuzzy #~ msgid "People DN attribute" #~ msgstr "DN atribuut voor gebruikers" #, fuzzy #~ msgid "People storage subtree" #~ msgstr "OU voor gebruikers opslag" #, fuzzy #~ msgid "Group storage subtree" #~ msgstr "OU voor groepen opslag" #, fuzzy #~ msgid "Automatic UIDs" #~ msgstr "Automatische modusregels" #, fuzzy #~ msgid "Number base for people/groups" #~ msgstr "ID basis voor gebruikers/groepen" #, fuzzy #~ msgid "Password settings" #~ msgstr "Gebruikersinstellingen" #, fuzzy #~ msgid "Password encryption algorithm" #~ msgstr "Encryptie algoritme" #, fuzzy #~ msgid "Password restrictions" #~ msgstr "Wachtwoord verloopt op" #, fuzzy #~ msgid "Password change hook" #~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" #~ msgid "" #~ "GOsa supports several encryption types for your passwords. Normally this " #~ "is adjustable via user templates, but you can specify a default method to " #~ "be used here, too." #~ msgstr "" #~ "GOsa ondersteunt diverse encryptie types voor uw wachtwoorden. Normaliter " #~ "is dit aanpasbaar via gebruikerssjablonen. Hier kunt u echter een " #~ "standaard te gebruiken methode opgeven." #, fuzzy #~ msgid "" #~ "GOsa always acts as admin and manages access rights internally. This is a " #~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " #~ "For this to work, we need the admin DN and the corresponding password." #~ msgstr "" #~ "GOsa werkt altijd als een beheerder en verzorgt het toegangsbeheer " #~ "intern. Dit is een tijdelijke oplossing totdat directory ACIs volledig " #~ "geïmplementeerd zijn in OpenLDAP. Om dit te kunnen laten werken is een " #~ "beheerders DN en het bijbehorende wachtwoord nodig." #~ msgid "" #~ "Some basic LDAP parameters are tunable and affect the locations where " #~ "GOsa saves people and groups, including the way accounts get created. " #~ "Check the values below if the fit your needs." #~ msgstr "" #~ "Sommige LDAP parameters zijn aan te passen en bepalen de locaties waar " #~ "GOsa gebruikers en groepen opslaat, evenals de manier waarop gebruikers " #~ "aangemaakt worden. Controleer of de waardes hieronder in uw behoeften " #~ "voorzien." #, fuzzy #~ msgid "" #~ "GOsa has modular support for several mail methods. These methods provide " #~ "interfaces to users mailboxes and general handling for quotas. You can " #~ "choose the dummy plugin to leave all your mail settings untouched." #~ msgstr "" #~ "GOsa heeft modulaire ondersteuning voor diverse E-mail methodes. Deze " #~ "methodes leveren toegang tot gebruikers mailboxen en algemene afhandeling " #~ "voor quota's. U kunt de dummy module kiezen om alle E-mail instellingen " #~ "ongewijzigd te laten." #, fuzzy #~ msgid "Enable primary group filter" #~ msgstr "Toon groepen van gebruiker" #, fuzzy #~ msgid "Display summary in listings" #~ msgstr "Toon overeenkomende macro's" #, fuzzy #~ msgid "Honour administrative units" #~ msgstr "Groepen beheer" #, fuzzy #~ msgid "Path for PPD storage" #~ msgstr "Wachtwoord encryptie" #, fuzzy #~ msgid "Mail queue script" #~ msgstr "Inlogscript" #, fuzzy #~ msgid "Notification script" #~ msgstr "Geen certificaat geinstalleerd" #, fuzzy #~ msgid "Warn if session is not encrypted" #~ msgstr "De sessie zal niet versleuteld zijn." #, fuzzy #~ msgid "Remember dialog filter settings" #~ msgstr "Algemene wachtrij instellingen" #, fuzzy #~ msgid "Session lifetime" #~ msgstr "Er is een sessie conflict gedetecteerd" #, fuzzy #~ msgid "Show PHP errors" #~ msgstr "PHP fout" #, fuzzy #~ msgid "Maximum LDAP query time" #~ msgstr "E-mail grootte" #, fuzzy #~ msgid "Debug level" #~ msgstr "Log prioriteit" #, fuzzy #~ msgid "Disabled" #~ msgstr "gedeactiveerd" #, fuzzy #~ msgid "Move selected workstations" #~ msgstr "Selecteer om werkstations te zien" #, fuzzy #~ msgid "Hide changes" #~ msgstr "Open-Xchange" #, fuzzy #~ msgid "Show changes" #~ msgstr "Toon pakketten" #, fuzzy #~ msgid "Move selected users into this people tree" #~ msgstr "Maak gebruiker aan met dit sjabloon" #, fuzzy #~ msgid "Migrate GOsa 2.5 administrative accounts" #~ msgstr "Netatalk account aanmaken" #, fuzzy #~ msgid "Abort" #~ msgstr "Poort" #, fuzzy #~ msgid "Refresh" #~ msgstr "Referenties" #, fuzzy #~ msgid "Installation" #~ msgstr "Windows werkstation" #, fuzzy #~ msgid "GOsa settings 1/3" #~ msgstr "Gebruikersinstellingen" #, fuzzy #~ msgid "The specified value for '%s' must be a numeric value" #~ msgstr "De sieve poort dient nummeriek te zijn." #~ msgid "People storage ou" #~ msgstr "OU voor gebruikers opslag" #~ msgid "Group storage ou" #~ msgstr "OU voor groepen opslag" #, fuzzy #~ msgid "Uid base must be numeric" #~ msgstr "Timeout dient nummeriek te zijn" #, fuzzy #~ msgid "The given password minimum length is not numeric." #~ msgstr "De sieve poort dient nummeriek te zijn." #, fuzzy #~ msgid "The given password differ value is not numeric." #~ msgstr "De sieve poort dient nummeriek te zijn." #, fuzzy #~ msgid "Login screen" #~ msgstr "Log DB gebruiker" #, fuzzy #~ msgid "" #~ "Please use your username and your password to log into the site " #~ "administration system." #~ msgstr "Voer uw gebruikersnaam en wachtwoord in" #~ msgid "Sign in" #~ msgstr "Inloggen" #~ msgid "" #~ "This may be used by several groups. Please double check if your really " #~ "want to do this since there is no way for GOsa to get your data back." #~ msgstr "" #~ "Dit kan gebruikt worden door meerdere groepen. Verzeker uzelf ervan dat " #~ "dit is wat u wil, aangezien er geen mogelijkheid voor GOsa is om uw date " #~ "terug te halen." #~ msgid "" #~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." #~ msgstr "" #~ "Indien u zeker bent drukt u dan 'Verwijderen' om door te gaan of " #~ "'Annuleren' om te annuleren." #~ msgid "Help" #~ msgstr "Help" #~ msgid "Sign out" #~ msgstr "Uitloggen" #~ msgid "Signed in:" #~ msgstr "Aangemeld:" #, fuzzy #~ msgid "Success" #~ msgstr "Export was succesvol" #, fuzzy #~ msgid "New password repeated" #~ msgstr "Nieuw wachtwoord" #, fuzzy #~ msgid "Change" #~ msgstr "Kanaal" #~ msgid "UNIX" #~ msgstr "Unix" #~ msgid "FTP" #~ msgstr "Ftp" #~ msgid "Thin Client" #~ msgstr "Thin Client" #~ msgid "Object name" #~ msgstr "Objectnaam" #~ msgid "This object has no relationship to other objects." #~ msgstr "Dit object heeft geen relatie met andere objecten." #~ msgid "" #~ "Changing the password affects your authentification on mail, proxy, samba " #~ "and unix services." #~ msgstr "" #~ "Het veranderen van het wachtwoord is van invloed op E-mail, proxy, samba " #~ "en Unix diensten." #, fuzzy #~ msgid "User identification" #~ msgstr "Gebruikersinformatie" #~ msgid "Personal picture" #~ msgstr "Persoonlijk plaatje" #, fuzzy #~ msgid "In all groups" #~ msgstr "Primaire groep" #, fuzzy #~ msgid "Not in all groups" #~ msgstr "Toon E-mail groepen" #, fuzzy #~ msgid "! unknown UID" #~ msgstr "! onbekend id" #, fuzzy #~ msgid "All categories" #~ msgstr "Categorie toevoegen" #~ msgid "Startup" #~ msgstr "Opstarten" #~ msgid "FAI summary" #~ msgstr "FAI samenvatting" #, fuzzy #~ msgid "Cannot bind to LDAP. Please contact the system administrator." #~ msgstr "" #~ "Kan niet verbinden met de LDAP server. Neem a.u.b. contact op met de " #~ "systeembeheerder." #, fuzzy #~ msgid "Password reset" #~ msgstr "Wachtwoord verloopt op" #~ msgid "Up" #~ msgstr "Omhoog" #~ msgid "Down" #~ msgstr "Omlaag" #, fuzzy #~ msgid "Select to list objects of type '%s'." #~ msgstr "Selecteer de toe te voegen objecten" #, fuzzy #~ msgid "Select to list objects containig '%s'." #~ msgstr "Selecteer om groepen die gebruikers bevatten te tonen" #, fuzzy #~ msgid "Select to list objects that have '%s' enabled" #~ msgstr "Selecteer de toe te voegen objecten" #~ msgid "Select to search within subtrees" #~ msgstr "Selecteer om binnen subonderdelen te zoeken" #, fuzzy #~ msgid "in" #~ msgstr "Hoofdmenu" #, fuzzy #~ msgid "on line" #~ msgstr "Doorgaan" #, fuzzy #~ msgid "Role: %s" #~ msgstr "Funktie" #~ msgid "Go up one department" #~ msgstr "Ga een afdeling omhoog" #~ msgid "Go to users department" #~ msgstr "Ga naar gebruikers afdeling" #, fuzzy #~ msgid "Remove snapshot" #~ msgstr "Nagios account aanmaken" #~ msgid "Toggle information" #~ msgstr "Informatie weergeven/verbergen" #, fuzzy #~ msgid "from" #~ msgstr "willekeurig" #, fuzzy #~ msgid "Restore" #~ msgstr "Opnieuw proberen" #~ msgid "cut" #~ msgstr "knippen" #, fuzzy #~ msgid "Your LDAP setup contains old schema definitions:" #~ msgstr "" #~ "Uw LDAP installatie bevat oude schema definities. Draai het installatie " #~ "programma a.u.b. opnieuw." #~ msgid "" #~ "FATAL: Register globals is on. GOsa will refuse to login unless this is " #~ "fixed by an administrator." #~ msgstr "" #~ "FATAAL: 'Register globals' is geactiveerd in PHP. GOsa zal niemand laten " #~ "inloggen totdat dit opgelost is door een systeembeheerder." #, fuzzy #~ msgid "Prpperties" #~ msgstr "Eigenschappen" #, fuzzy #~ msgid "Old password" #~ msgstr "Oud wachtwoord" #, fuzzy #~ msgid "Verify password" #~ msgstr "Nogmaals wachtwoord" #~ msgid "Session conflict detected" #~ msgstr "Er is een sessie conflict gedetecteerd" #, fuzzy #~ msgid "" #~ "Probably there's another active instance of your session. Multiple window " #~ "operation is technical not possible and heavily depends on the browser " #~ "you're using. Usage of different browsers at a time (i.e. IE and Mozilla) " #~ "is possible. Pressing the Logout button will close this session." #~ msgstr "" #~ "Er is vermoedelijk een andere actieve instantiatie van uw sessie. Werken " #~ "m.b.v. meerdere schermen is technisch onmogelijk en is sterk afhankelijk " #~ "van de gebruikte browser. Gelijktijdig gebruik van verschillende browsers " #~ "(bijvoorbeeld Internet Explorer en Mozilla) is wel mogelijk. Via de " #~ "Uitloggen knop wordt deze sessie afgesloten." #~ msgid "" #~ "Ignoring this message will change/destroy the data you're currently " #~ "editing, so please close multiple windows and log in again." #~ msgstr "" #~ "Het negeren van dit bericht zal de data die u op dit moment aan het " #~ "bewerken bent veranderen/vernietigen, dus sluit a.u.b. enige overige " #~ "vensters en log opnieuw in." #~ msgid "External password changer reported a problem: " #~ msgstr "Extern wachtwoord verander mechanisme rapporteerde een probleem:" #, fuzzy #~ msgid "Show department" #~ msgstr "Toon afdelingen" #, fuzzy #~ msgid "Show groups" #~ msgstr "Toon Samba groepen" #, fuzzy #~ msgid "Show server" #~ msgstr "Toon servers" #, fuzzy #~ msgid "Show workstation" #~ msgstr "Toon werkstations" #, fuzzy #~ msgid "Show terminal" #~ msgstr "Toon terminals" #, fuzzy #~ msgid "Show printer" #~ msgstr "Toon printers" #, fuzzy #~ msgid "Show phone" #~ msgstr "Toon pakketten" #, fuzzy #~ msgid "Filter options" #~ msgstr "Beschikbare programma's" #~ msgid "" #~ "Please double check if you really want to do this since there is no way " #~ "for GOsa to get your data back." #~ msgstr "" #~ "Controleer a.u.b. of u dit daadwerkelijk wil doen, aangezien er geen " #~ "mogelijkheid voor GOsa is om uw data terug te krijgen." #, fuzzy #~ msgid "Manage object groups" #~ msgstr "Naam van objectgroepen" #, fuzzy #~ msgid "nested groups" #~ msgstr "Objectgroepen" #, fuzzy #~ msgid "application groups" #~ msgstr "Toon programma groepen" #, fuzzy #~ msgid "department groups" #~ msgstr "afdelingen" #, fuzzy #~ msgid "server groups" #~ msgstr "servers" #, fuzzy #~ msgid "workstation groups" #~ msgstr "werkstations" #, fuzzy #~ msgid "terminal groups" #~ msgstr "Toon E-mail groepen" #, fuzzy #~ msgid "printer groups" #~ msgstr "Primaire groep" #, fuzzy #~ msgid "phone groups" #~ msgstr "Toon groepen" #~ msgid "Select objects to add" #~ msgstr "Selecteer de toe te voegen objecten" #~ msgid "Filters" #~ msgstr "Filters" #~ msgid "Display objects of department" #~ msgstr "Toon objecten van afdeling" #~ msgid "Choose the department the search will be based on" #~ msgstr "Selecteer de afdeling waarbinnen gezocht zal worden" #~ msgid "Display objects matching" #~ msgstr "Toon overeenkomende objecten" #~ msgid "Regular expression for matching object names" #~ msgstr "Reguliere expressie voor overeenkomende objectnamen" #~ msgid "Select systems to add" #~ msgstr "Selecteer de toe te voegen systemen" #~ msgid "Display systems of department" #~ msgstr "Toon systemen van afdeling" #~ msgid "Display systems matching" #~ msgstr "Toon de overeenkomende systemen" #~ msgid "Regular expression for matching addresses" #~ msgstr "Reguliere expresie voor overeenkomende adressen" #~ msgid "" #~ "This may be a primary user group. Please double check if you really want " #~ "to do this since there is no way for GOsa to get your data back." #~ msgstr "" #~ "Dit kan een primaire groep zijn. Verzeker uzelf ervan dat dit is wat u " #~ "wilt, aangezien er geen mogelijkheid voor GOsa is om deze gegevens terug " #~ "te halen." #~ msgid "Show samba groups" #~ msgstr "Toon Samba groepen" #, fuzzy #~ msgid "Show mail groups" #~ msgstr "Toon Samba groepen" #~ msgid "Group administration" #~ msgstr "Groepen beheer" #~ msgid "" #~ "This includes all account data, system access rules, imap settings, etc. " #~ "for this user. Please double check if your really want to do this since " #~ "there is no way for GOsa to get your data back." #~ msgstr "" #~ "Dit omvat alle account gegevens, systeem toegangsregels, imap " #~ "instellingen etc. voor deze gebruiker. Verzeker uzelf hiervan, aangezien " #~ "er geen mogelijkheid voor GOsa is om deze informatie terug te halen." #, fuzzy #~ msgid "Manage users" #~ msgstr "Windows gebruikers" #~ msgid "" #~ "This includes 'all' accounts, systems, etc. in this subtree. Please " #~ "double check if your really want to do this since there is no way for " #~ "GOsa to get your data back." #~ msgstr "" #~ "Dit omvat 'alle' accounts, systemen etc. in deze subtree. Verzeker uzelf " #~ "er van dat dit is wat u wilt, aangezien er geen mogelijkheid voor GOsa is " #~ "om deze gegevens terug te halen." #~ msgid "" #~ "Best thing to do before performing this action would be to save the " #~ "current contents of your LDAP tree in a file. So - if you've done so - " #~ "press 'Delete' to continue or 'Cancel' to abort." #~ msgstr "" #~ "Het is aan te raden de huidige inhoud van uw LDAP database op te slaan " #~ "alvorens u doorgaat. Indien u dat gedaan heeft drukt u op 'Verwijderen' " #~ "om door te gaan of op 'Annuleren' om te annuleren." #~ msgid "List of departments" #~ msgstr "Lijst met afdelingen" #, fuzzy #~ msgid "Manage Departments" #~ msgstr "Afdelingen" #, fuzzy #~ msgid "Show access control lists" #~ msgstr "Toegangsopties" #, fuzzy #~ msgid "Show roles" #~ msgstr "Toon telefoons" #~ msgid "Show servers" #~ msgstr "Toon servers" #~ msgid "Show workstations" #~ msgstr "Toon werkstations" #~ msgid "Show terminals" #~ msgstr "Toon terminals" #, fuzzy #~ msgid "List navigation" #~ msgstr "Windows werkstation" #, fuzzy #~ msgid "Group selection filter" #~ msgstr "Groep instellingen" #, fuzzy #~ msgid "Posix extension settings" #~ msgstr "Posix instellingen" #, fuzzy #~ msgid "Account accessibility" #~ msgstr "Configuratie bestand" #~ msgid "Go to root department" #~ msgstr "Ga naar basis afdelingen" #~ msgid "Home" #~ msgstr "Home" #~ msgid "" #~ "This is the GOsa main menu. You can select your tasks from the menu on " #~ "the left, or by choosing one of the pictograms below. All changes apply " #~ "directly to your companies LDAP server." #~ msgstr "" #~ "Dit is het GOsa hoofdmenu. U kunt taken selecteren door het menu aan de " #~ "linkerzijde te gebruiken of door een van de pictogrammen hieronder te " #~ "selecteren. Alle veranderingen worden direct op de LDAP server van uw " #~ "bedrijf doorgevoerd." #~ msgid "" #~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " #~ "get back to the pictogram view." #~ msgstr "" #~ "Gebruik 'Uitloggen' bovenin om de verbinding te verbreken en 'Hoofdmenu' " #~ "om terug te keren naar het onderstaande pictogrammen overzicht." #, fuzzy #~ msgid "Show functional users" #~ msgstr "Toon functionele gebruikers" #, fuzzy #~ msgid "Show Samba users" #~ msgstr "Toon E-mail gebruikers" #~ msgid "Choose subtree to place user in" #~ msgstr "Kies de subtree waaronder de gebruiker geplaatst wordt" #~ msgid "Select a base" #~ msgstr "Selecteer een basis" #~ msgid "Generic user information" #~ msgstr "Algemene gebruikersinformatie" #~ msgid "Account" #~ msgstr "Account" #~ msgid "Select groups to add" #~ msgstr "Selecteer de toe te voegen groepen" #~ msgid "Display groups of department" #~ msgstr "Toon groepen van afdeling" #~ msgid "Display groups matching" #~ msgstr "Toon overeenkomende groepen" #~ msgid "Regular expression for matching group names" #~ msgstr "Reguliere expressie voor overeenkomende groepnamen" #~ msgid "Display groups of user" #~ msgstr "Toon groepen van gebruiker" #~ msgid "User name of which groups are shown" #~ msgstr "Gebruikersnaam van wie de groepen getoond worden" #, fuzzy #~ msgid "Choose a base" #~ msgstr "Selecteer een basis" #~ msgid "Choose subtree to place group in" #~ msgstr "Selecteer de subtree waaronder deze groep geplaatst wordt" #~ msgid "Choose subtree to place department in" #~ msgstr "Selecteer de subtree waaronder deze afdeling geplaatst wordt" #, fuzzy #~ msgid "Show %s" #~ msgstr "Toon groepen" #, fuzzy #~ msgid "people" #~ msgstr "Toon personen" #, fuzzy #~ msgid "printer" #~ msgstr "printers" #~ msgid "Select users to add" #~ msgstr "Selecteer de toe te voegen gebruikers" #~ msgid "Select to see servers" #~ msgstr "Selecteer om servers te zien" #~ msgid "Search within subtree" #~ msgstr "Zoek binnen subtree" #~ msgid "Display users of department" #~ msgstr "Toon gebruikers van afdeling" #~ msgid "Display users matching" #~ msgstr "Toon overeenkomende gebruikers" #~ msgid "Regular expression for matching user names" #~ msgstr "Reguliere expressie voor overeenkomende gebruikersnamen" #, fuzzy #~ msgid "givenname" #~ msgstr "Naam" #, fuzzy #~ msgid "surename" #~ msgstr "Achternaam" #, fuzzy #~ msgid "Edit ogroup" #~ msgstr "Lijst met groepen" #, fuzzy #~ msgid "List of ogroups" #~ msgstr "Lijst met groepen" #, fuzzy #~ msgid "Filter entries with this syntax" #~ msgstr "Filter regels met deze syntax" #, fuzzy #~ msgid "MySQL error" #~ msgstr "LDAP fout:" #, fuzzy #~ msgid "Cannot add location to the database!" #~ msgstr "Kan niet verbinden met de database server!" #~ msgid "Submit department" #~ msgstr "Verwerk afdeling" #~ msgid "edit" #~ msgstr "Bewerk" #~ msgid "delete" #~ msgstr "Verwijder" #, fuzzy #~ msgid "Number of listed object groups" #~ msgstr "Naam van objectgroepen" #, fuzzy #~ msgid "Number of listed departments" #~ msgstr "Naam van de afdeling" #~ msgid "Select to see groups that are primary groups of users" #~ msgstr "" #~ "Selecteer om de groepen te zien die primaire groepen van gebruikers zijn" #, fuzzy #~ msgid "primary groups" #~ msgstr "Primaire groep" #, fuzzy #~ msgid "samba groups mappings" #~ msgstr "Samba" #, fuzzy #~ msgid "samba groups" #~ msgstr "Samba groep" #, fuzzy #~ msgid "application settings" #~ msgstr "programma's" #, fuzzy #~ msgid "mail settings" #~ msgstr "E-mail instellingen" #, fuzzy #~ msgid "mail groups" #~ msgstr "Toon E-mail groepen" #~ msgid "Select to see normal groups that have only functional aspects" #~ msgstr "" #~ "Selecteer om normale groepen die alleen functionele aspecten hebben te " #~ "zien" #, fuzzy #~ msgid "functional groups" #~ msgstr "Toon functionele groepen" #, fuzzy #~ msgid "Number of listed groups" #~ msgstr "Naam van de groep" #, fuzzy #~ msgid "group" #~ msgstr "groepen" #~ msgid "User administration" #~ msgstr "Gebruikersbeheer" #, fuzzy #~ msgid "templates" #~ msgstr "Sjablonen" #, fuzzy #~ msgid "functional users" #~ msgstr "Toon functionele gebruikers" #, fuzzy #~ msgid "POSIX users" #~ msgstr "Posix instellingen" #, fuzzy #~ msgid "samba users" #~ msgstr "Windows gebruikers" #, fuzzy #~ msgid "proxy users" #~ msgstr "Toon Proxy gebruikers" #, fuzzy #~ msgid "phone users" #~ msgstr "Toon Proxy gebruikers" #~ msgid "GOsa" #~ msgstr "GOsa" #~ msgid "Edit UNIX properties" #~ msgstr "Bewerk UNIX eigenschappen" #~ msgid "Edit fax properies" #~ msgstr "Bewerk Fax eigenschappen" #~ msgid "Create user with this template" #~ msgstr "Maak gebruiker aan met dit sjabloon" #~ msgid "password" #~ msgstr "wachtwoord" #~ msgid "Delete user" #~ msgstr "Verwijder gebruiker" #, fuzzy #~ msgid "Number of listed users" #~ msgstr "Naam van de afdeling" #, fuzzy #~ msgid "You have no permission to modify object '%s'!" #~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #, fuzzy #~ msgid "You have no permission to use this template!" #~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #, fuzzy #~ msgid "You have no permission to change the lock status for this user!" #~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen." #, fuzzy #~ msgid "Name / Department" #~ msgstr "Naam van de afdeling" #~ msgid "Regular expression for matching department names" #~ msgstr "Reguliere expressie voor overeenkomende afdelingen" #, fuzzy #~ msgid "" #~ "This includes all system and setup informations. Please double check if " #~ "your really want to do this since there is no way for GOsa to get your " #~ "data back." #~ msgstr "" #~ "Dit omvat alle systeem en configuratie informatie. Verzeker uzelf " #~ "hiervan, aangezien er geen manier is voor GOsa om deze gegevens terug te " #~ "halen." #, fuzzy #~ msgid "ACL role" #~ msgstr "Rechten" #~ msgid "Summary" #~ msgstr "Samenvatting" #, fuzzy #~ msgid "Display acls matching" #~ msgstr "Toon overeenkomende macro's" #, fuzzy #~ msgid "Edit acl role" #~ msgstr "Bewerk share" #, fuzzy #~ msgid "Edit acl" #~ msgstr "Bewerk klasse" #, fuzzy #~ msgid "Delete acl" #~ msgstr "Verwijder klasse" #, fuzzy #~ msgid "Gender" #~ msgstr "Afzender" #, fuzzy #~ msgid "Logging options" #~ msgstr "Onbekend" #, fuzzy #~ msgid "Syslog" #~ msgstr "Systeem logs" #, fuzzy #~ msgid "Non common group" #~ msgstr "Toon E-mail groepen" #, fuzzy #~ msgid "Enable DNS extension" #~ msgstr "Verwijder printer mogelijkheden" #, fuzzy #~ msgid "Enable mime type management" #~ msgstr "Systeembeheer" #, fuzzy #~ msgid "Enable FAI release management" #~ msgstr "Blokkeerlijst beheer" #, fuzzy #~ msgid "Enable user netatalk plugin" #~ msgstr "Netatalk account beheren" #, fuzzy #~ msgid "Password locking" #~ msgstr "Het veranderen van het wachtwoord is niet toegestaan" #, fuzzy #~ msgid "Create new" #~ msgstr "Aanmaken" #, fuzzy #~ msgid "" #~ "This account has %s features settings. To disable them, you'll need to " #~ "add the %s settings first!" #~ msgstr "" #~ "Dit account heeft Unix mogelijkheden ingeschakeld. Om deze te verwijderen " #~ "moet u eerst het samba / omgevings account verwijderen." #, fuzzy #~ msgid "" #~ "GOsa requires this module to show printers that are not defined within " #~ "the LDAP." #~ msgstr "" #~ "MySQL ondersteuning is nodig voor het lezen van GOfax rapporten uit " #~ "databases." #, fuzzy #~ msgid "Role name" #~ msgstr "Hernoemen" #, fuzzy #~ msgid "Override sudo role ou" #~ msgstr "! onbekend id" #~ msgid "Terminals" #~ msgstr "Terminals" #, fuzzy #~ msgid "Select this base" #~ msgstr "Selecteer een basis" #, fuzzy #~ msgid "add" #~ msgstr "Toevoegen" #~ msgid "You're about to delete the whole LDAP subtree placed under '%s'." #~ msgstr "U staat op het punt de hele LDAP subtree onder '%s' te verwijderen." #~ msgid "department" #~ msgstr "afdeling" #, fuzzy #~ msgid "Steps" #~ msgstr "Systemen" #, fuzzy #~ msgid "Move object" #~ msgstr "Lidmaatschap objecten" #, fuzzy #~ msgid "Remove object" #~ msgstr "Lidmaatschap objecten" #, fuzzy #~ msgid "Repository" #~ msgstr "Opnieuw proberen" #, fuzzy #~ msgid "DAK repository" #~ msgstr "Directory" #, fuzzy #~ msgid "Delete users" #~ msgstr "Verwijder gebruiker" #, fuzzy #~ msgid "Heimdal options" #~ msgstr "E-mail opties" #, fuzzy #~ msgid "Day" #~ msgstr "dag" #, fuzzy #~ msgid "Month" #~ msgstr "maand" #, fuzzy #~ msgid "Year" #~ msgstr "Zoeken" #, fuzzy #~ msgid "Password end" #~ msgstr "Wachtwoord" #, fuzzy #~ msgid "Missing parameters!" #~ msgstr "Programmanaam" #, fuzzy #~ msgid "Error in ivbb parameter!" #~ msgstr "Controleer parameter" #~ msgid "Birthday" #~ msgstr "Geboortedatum" #~ msgid "Language" #~ msgstr "Taal" #~ msgid "User list of %s on %s" #~ msgstr "Gebruikerslijst van %s in %s " #~ msgid "Groups of %s on %s" #~ msgstr "Groepen van %s in %s" #~ msgid "Servers" #~ msgstr "Servers" #~ msgid "Computers" #~ msgstr "Computers" #~ msgid "Common name" #~ msgstr "Algemene naam" #~ msgid "Servers of %s on %s" #~ msgstr "Servers van %s in %s" #~ msgid "Display name" #~ msgstr "Getoonde naam" #~ msgid "Initials" #~ msgstr "Initialen" #~ msgid "Mobile phone" #~ msgstr "GSM nummer" #~ msgid "City" #~ msgstr "Plaats" #~ msgid "Function" #~ msgstr "Functie" #~ msgid "Adressbook" #~ msgstr "Adresboek" #~ msgid "Adressbook of %s on %s" #~ msgstr "Adresboek van %s in %s" #~ msgid "Common Name" #~ msgstr "Algemene naam" #~ msgid "Day of birth" #~ msgstr "Geboortedatum" #~ msgid "Email address" #~ msgstr "E-mail adres" #~ msgid "Title" #~ msgstr "Titel" #~ msgid "Full" #~ msgstr "Volledig" #~ msgid "Computers of %s on %s" #~ msgstr "Computers van %s in %s" #, fuzzy #~ msgid "You have no permission to do LDAP exports!" #~ msgstr "" #~ "U heeft geen toestemming om een gebruiker aan te maken onder deze 'Basis'." #~ msgid "Could not select database!" #~ msgstr "De opgegeven database kon niet geselecteerd worden!" #~ msgid "Database query failed!" #~ msgstr "De database zoekopdracht is mislukt" #, fuzzy #~ msgid "List of sudo roles" #~ msgstr "Lijst met gebruikers" #, fuzzy #~ msgid "Regular expression for matching role names" #~ msgstr "Reguliere expressie voor overeenkomende groepnamen" #, fuzzy #~ msgid "Regular expression for matching role member names" #~ msgstr "Reguliere expressie voor overeenkomende objectnamen" #, fuzzy #~ msgid "Number of listed roles" #~ msgstr "Naam van de groep" #, fuzzy #~ msgid "Sudo" #~ msgstr "Achternaam" #, fuzzy #~ msgid "Manage sudo roles" #~ msgstr "Windows gebruikers" #, fuzzy #~ msgid "sudo role" #~ msgstr "! onbekend id" #, fuzzy #~ msgid "string" #~ msgstr "Waarschuwing" #, fuzzy #~ msgid "integer" #~ msgstr "printers" #, fuzzy #~ msgid "lists" #~ msgstr "klasse" #, fuzzy #~ msgid "Invalid" #~ msgstr "ongeldig" #, fuzzy #~ msgid "Sudo role" #~ msgstr "! onbekend id" #, fuzzy #~ msgid "Host" #~ msgstr "Inhakers" #, fuzzy #~ msgid "Run as user" #~ msgstr "Windows gebruikers" #, fuzzy #~ msgid "Sudo role administration" #~ msgstr "Groepen beheer" #, fuzzy #~ msgid "Flags" #~ msgstr "klasse" #, fuzzy #~ msgid "Enable system deployment" #~ msgstr "Systeembeheer" #, fuzzy #~ msgid "Checking for LDAP support" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "" #~ "This is the main extension used by GOsa and therefore really required." #~ msgstr "Dit is hoofd module die GOsa nodig heeft en is daarom noodzakelijk." #~ msgid "Checking for gettext support" #~ msgstr "Zoeken naar gettext ondersteuning" #, fuzzy #~ msgid "Gettext support is required for internationalization." #~ msgstr "" #~ "Gettext ondersteuning is vereist voor ondersteuning van meerdere talen in " #~ "GOsa." #~ msgid "Checking for iconv support" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "" #~ "This module is used by GOsa to convert samba munged dial informations and " #~ "is therefore required. " #~ msgstr "" #~ "Deze module wordt gebruikt door GOsa om samba munged dial informatie " #~ "(terminal server) te converteren en is daarom vereist." #, fuzzy #~ msgid "Checking for mhash support" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "Checking for IMAP support" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "" #~ "The IMAP module is needed to communicate with the IMAP server. GOsa " #~ "retrieves status information, creates and deletes mail users, etc." #~ msgstr "" #~ "De IMAP module is benodigd om met de IMAP server te communiceren. Het " #~ "ontvangt status informatie, maakt E-mail gebruikers aan en verwijdert E-" #~ "mail gebruikers." #, fuzzy #~ msgid "Checking for multi byte support" #~ msgstr "Zoeken naar gettext ondersteuning" #, fuzzy #~ msgid "Checking for getacl in IMAP implementation" #~ msgstr "Controle op getacl in imap" #, fuzzy #~ msgid "" #~ "The getacl support is needed to handle shared folder permissions. Old " #~ "IMAP extensions are not capable of reading acl's. You need a recent PHP " #~ "version to use this feature." #~ msgstr "" #~ "De getacl ondersteuning is nodig voor gedeelde map permissies. De " #~ "standaard IMAP module is niet in staat om acl's te lezen. U heeft een " #~ "recente PHP versie nodig voor deze mogelijkheid." #, fuzzy #~ msgid "Checking for MySQL support" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "Checking for kadm5 support" #~ msgstr "Zoeken naar iconv ondersteuning" #~ msgid "" #~ "Managing users in kerberos requires the kadm5 module which is " #~ "downloadable via PEAR network." #~ msgstr "" #~ "Het beheren van gebruikers in kerberos vereist de kadm5 module welke via " #~ "het PEAR netwerk te downloaden is." #, fuzzy #~ msgid "" #~ "This module is required to manage user in kerberos, it is downloadable " #~ "via PEAR network" #~ msgstr "" #~ "Het beheren van gebruikers in kerberos vereist de kadm5 module welke via " #~ "het PEAR netwerk te downloaden is." #, fuzzy #~ msgid "Checking for SNMP support" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "" #~ "The simple network management protocol is needed to get status " #~ "information from clients." #~ msgstr "" #~ "Het Simple Network Management Protocol (SNMP) is vereist voor werkstation " #~ "monitoring." #, fuzzy #~ msgid "Checking for CUPS support" #~ msgstr "Zoeken naar iconv ondersteuning" #, fuzzy #~ msgid "" #~ "In order to read available printers via the IPP protocol instead of " #~ "printcap files, you've to install the CUPS module." #~ msgstr "" #~ "U moet de CUPS module installeren om beschikbare printers via het IPP " #~ "protocol te kunnen aflezen i.p.v. via printcap bestanden." #~ msgid "Checking for fping utility" #~ msgstr "Zoeken naar het fping programma" #, fuzzy #~ msgid "" #~ "The fping utility is used if you've got a thin client based terminal " #~ "environment." #~ msgstr "" #~ "Het fping programma wordt alleen gebruikt indien u een thin client " #~ "gebaseerde terminal omgeving heeft draaien." #, fuzzy #~ msgid "" #~ "The fping utility is only used in thin client based terminal environment." #~ msgstr "" #~ "Het fping programma wordt alleen gebruikt indien u een thin client " #~ "gebaseerde terminal omgeving heeft draaien." #, fuzzy #~ msgid "" #~ "In order to use SAMBA 2/3 passwords, you've to install additional " #~ "packages to generate password hashes." #~ msgstr "" #~ "Om Samba 2.x/3.x te gebruiken moet u enkele additionele pakketten " #~ "installeren om wachtwoord hashes te genereren" #, fuzzy #~ msgid "" #~ "In order to use SAMBA 2/3 you've to install additional perl libraries. " #~ "Take a look at mkntpasswd." #~ msgstr "" #~ "Om Samba 2.x/3.x te gebruiken moet u enkele additionele pakketten " #~ "installeren om wachtwoord hashes te genereren" #, fuzzy #~ msgid "Choose subtree to place %s in" #~ msgstr "Kies de subtree waaronder de gebruiker geplaatst wordt" #, fuzzy #~ msgid "Show groups with '%s'" #~ msgstr "Toon groepen die gebruikers bevatten" #, fuzzy #~ msgid "Show %s user" #~ msgstr "Toon Samba gebruikers" #, fuzzy #~ msgid "functional" #~ msgstr "functie" #, fuzzy #~ msgid "posix" #~ msgstr "Posix" #, fuzzy #~ msgid "mail" #~ msgstr "man" #, fuzzy #~ msgid "samba" #~ msgstr "Samba" #, fuzzy #~ msgid "proxy" #~ msgstr "Proxy" #, fuzzy #~ msgid "primary" #~ msgstr "Samenvatting" #, fuzzy #~ msgid "application" #~ msgstr "programma's" #, fuzzy #~ msgid "Select to see groups containing '%s'." #~ msgstr "Selecteer om groepen die gebruikers bevatten te tonen" #, fuzzy #~ msgid "Workstations" #~ msgstr "Werkstation" #, fuzzy #~ msgid "Phones" #~ msgstr "Telefoon" #~ msgid "Click here to Change your password" #~ msgstr "Klik hier om uw wachtwoord te veranderen." #~ msgid "Can't open specified file, check accessibility and or existence" #~ msgstr "" #~ "Kan het opgegeven bestand niet openen. Controleer of het bestand bestaat " #~ "en toegankelijk is." #~ msgid "Can't read specified certificate / or empty string given" #~ msgstr "" #~ "Kan het opgegeven certificaat niet lezen of er is een lege string " #~ "opgegeven." #~ msgid "Can't load certificate, possibly unsupported format (use PEM/DER) " #~ msgstr "" #~ "Kan het certificaat niet laden. Mogelijk is een niet ondersteund formaat " #~ "gebruikt (gebruik PEM/DER)." #~ msgid "The Format must be PEM, to output certificate informations" #~ msgstr "Het formaat moet PEM zijn om certificaat informatie te tonen" #~ msgid "Can't create/open File" #~ msgstr "Kan bestand niet aanmaken/openen" #~ msgid "LDAP error:" #~ msgstr "LDAP fout:" #~ msgid "" #~ "Problems with the LDAP server mean that you probably lost the last " #~ "changes. Please check your LDAP setup for possible errors and try again." #~ msgstr "" #~ "Problemen met de LDAP server betekenen meestal dat de laatste wijzigingen " #~ "verloren gegaan zijn. Controleer uw LDAP instellingen voor mogelijke " #~ "fouten en probeer het opnieuw." #~ msgid "" #~ "Please check your input and fix the error. Press 'OK' to close this " #~ "message box." #~ msgstr "" #~ "Controleer uw invoer a.u.b. en verbeter de fout. Druk 'OK' om dit " #~ "berichtvenster te sluiten." #~ msgid "You are not allowed to change your password at this time" #~ msgstr "U heeft momenteel geen toestemming om uw wachtwoord te veranderen" #, fuzzy #~ msgid "Uid number" #~ msgstr "Serienummer" #, fuzzy #~ msgid "Service infrastructure" #~ msgstr "Zoek binnen subtree" #~ msgid "You are not allowed to set this users password!" #~ msgstr "" #~ "U heeft geen toestemming om het wachtwoord van deze gebruiker veranderen!" #, fuzzy #~ msgid "User delete" #~ msgstr "Verwijder" #, fuzzy #~ msgid "User deleted" #~ msgstr "Verwijder" #~ msgid "User List of %s on %s" #~ msgstr "Gebruikerslijst van %s in %s" #, fuzzy #~ msgid "Permission denied!" #~ msgstr "Rechten" #, fuzzy #~ msgid "You are not allowed to perform this action." #~ msgstr "U heeft geen toestemming om deze macro te verwijderen!" #, fuzzy #~ msgid "You are not allowed to create ldap dumps." #~ msgstr "U heeft geen toestemming om uw wachtwoord te veranderen!" #, fuzzy #~ msgid "Configuration warning" #~ msgstr "Configuratie bestand" #, fuzzy #~ msgid "Password reminder" #~ msgstr "Wachtwoord verloopt op" #, fuzzy #~ msgid "Configuration accessibility" #~ msgstr "Configuratie bestand" #, fuzzy #~ msgid "Anonymous bind failed on server '%s'." #~ msgstr "Gebruikers inlog mislukt. De LDAP server meldt: '%s'." #~ msgid "New Password" #~ msgstr "Nieuw wachtwoord" #~ msgid "Change Password" #~ msgstr "Wachtwoord veranderen" #, fuzzy #~ msgid "Can't locate gotomasses queue file '%s'." #~ msgstr "Kan bestand '%s' niet aanmaken." #, fuzzy #~ msgid "Can't read gotomasses queue file '%s'." #~ msgstr "Kan bestand '%s' niet aanmaken." #, fuzzy #~ msgid "Can't read gotomasses storage file '%s'." #~ msgstr "Kan bestand '%s' niet aanmaken." #, fuzzy #~ msgid "Can't write gotomasses queue file '%s'." #~ msgstr "Kan bestand '%s' niet aanmaken." #, fuzzy #~ msgid "Entry with id '%s' not found." #~ msgstr "Het opslaan van de printer is mislukt" #, fuzzy #~ msgid "Can't set priority for ID '%s'. ID does not exist." #~ msgstr "Pakketbestand '%s' bestaat niet." #~ msgid "Select to see template pseudo users" #~ msgstr "Selecteer om sjabloon pseudo gebruikers te zien" #~ msgid "Select to see users that have only a GOsa object" #~ msgstr "Selecteer om gebruikers te zien die alleen een GOsa object hebben" #~ msgid "Select to see users that have posix settings" #~ msgstr "Selecteer om gebruikers te zien die POSIX instellingen hebben" #~ msgid "Show unix users" #~ msgstr "Toon Unix gebruikers" #~ msgid "Select to see users that have mail settings" #~ msgstr "Selecteer om gebruikers te zien die E-mail instellingen hebben" #~ msgid "Select to see users that have samba settings" #~ msgstr "Selecteer om gebruikers te zien die Samba instellingen hebben" #~ msgid "Select to see users that have proxy settings" #~ msgstr "Selecteer om gebruikers te zien die Proxy instellingen hebben" #~ msgid "Select to see groups that have samba groups mappings" #~ msgstr "Selecteer om groepen te zien die Samba groep verbindingen hebben" #~ msgid "Select to see groups that have applications configured" #~ msgstr "Selecteer om groepen te zien die programma's geconfigureerd hebben" #~ msgid "Select to see groups that have mail settings" #~ msgstr "Selecteer om groepen te zien die E-mail instellingen hebben" #, fuzzy #~ msgid "acl" #~ msgstr "Annuleren" #~ msgid "Ignore subtrees" #~ msgstr "Subonderdelen negeren" #~ msgid "Select to see departments" #~ msgstr "Selecteer om afdelingen te zien" #~ msgid "Select to see GOsa accounts" #~ msgstr "Selecteer om GOsa accounts te zien" #~ msgid "Select to see GOsa groups" #~ msgstr "Selecteer om GOsa groepen te zien" #~ msgid "Select to see applications" #~ msgstr "Selecteer om programma's te zien" #~ msgid "Show applications" #~ msgstr "Toon programma's" #~ msgid "Select to see workstations" #~ msgstr "Selecteer om werkstations te zien" #~ msgid "Select to see terminals" #~ msgstr "Selecteer om terminals te zien" #~ msgid "Select to see printers" #~ msgstr "Selecteer om printers te zien" #~ msgid "Select to see phones" #~ msgstr "Selecteer om telefoons te zien" #, fuzzy #~ msgid "Cannot connect to logging server '%s'." #~ msgstr "Kan niet verbinden met de database server!" #, fuzzy #~ msgid "Cannot select database '%s' on server '%s': %s" #~ msgstr "Kan de database %s op %s niet selecteren." #, fuzzy #~ msgid "Cannot query database '%s' on server '%s': %s" #~ msgstr "Kan de database %s op %s niet selecteren." #, fuzzy #~ msgid "You are going to paste the following entries '%s'." #~ msgstr "U staat op het punt de invoer '%s' te kopieren." #, fuzzy #~ msgid "You are going to paste the following entry '%s'." #~ msgstr "U staat op het punt de invoer '%s' te kopieren." #, fuzzy #~ msgid "Back..." #~ msgstr "Terug" #, fuzzy #~ msgid "Back %s..." #~ msgstr "Bewerk gebruiker" #, fuzzy #~ msgid "again" #~ msgstr "Hoofdmenu" #, fuzzy #~ msgid "You are not allowed to change the password for this user." #~ msgstr "U heeft momenteel geen toestemming om uw wachtwoord te veranderen" #, fuzzy #~ msgid "You are not allowed to remove this user." #~ msgstr "U heeft geen toestemming om deze gebruiker te verwijderen!" #, fuzzy #~ msgid "You're about to delete the following entry: %s" #~ msgstr "U staat op het punt de invoer %s te verwijderen." #, fuzzy #~ msgid "You're about to delete the following entries: %s" #~ msgstr "U staat op het punt de invoer %s te verwijderen." #, fuzzy #~ msgid "You are not allowed to delete the user '%s'!" #~ msgstr "U heeft geen toestemming om deze gebruiker te verwijderen!" #~ msgid "You're about to delete the user %s." #~ msgstr "U staat op het punt gebruiker %s te verwijderen." #~ msgid "You are not allowed to delete this user!" #~ msgstr "U heeft geen toestemming om deze gebruiker te verwijderen!" #, fuzzy #~ msgid "You're about to delete the following entry %s" #~ msgstr "U staat op het punt de invoer %s te verwijderen." #, fuzzy #~ msgid "You're about to delete the following entries %s" #~ msgstr "U staat op het punt de invoer %s te verwijderen." #~ msgid "You're about to delete the group '%s'." #~ msgstr "U staat op het punt de groep '%s' te verwijderen." #, fuzzy #~ msgid "You have no permission to edit this ACL!" #~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #, fuzzy #~ msgid "You're about to delete the acl %s." #~ msgstr "U staat op het punt de macro '%s' te verwijderen." #, fuzzy #~ msgid "You have no permission to delete this entry!" #~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #, fuzzy #~ msgid "List of acl" #~ msgstr "Lijst met macro's" #~ msgid "Required field 'Name' is not set." #~ msgstr "Vereist veld 'Naam' is leeg." #~ msgid "Required field 'Description' is not set." #~ msgstr "Vereist veld 'Omschrijving' is leeg." #, fuzzy #~ msgid "" #~ "Moving LDAP tree failed: destination tree is a subtree of the source!" #~ msgstr "" #~ "Het verplaatsen van de tree is mislukt. Bestemmings-tree is een subtree " #~ "van de bron-tree." #~ msgid "This 'dn' is no object group." #~ msgstr "Deze 'dn' is geen objectgroep." #, fuzzy #~ msgid "You're about to delete the following object entry %s" #~ msgstr "U staat op het punt de invoer %s te verwijderen." #, fuzzy #~ msgid "You're about to delete the following object entries %s" #~ msgstr "U staat op het punt de objectgroep '%s' te verwijderen." #~ msgid "You're about to delete the object group '%s'." #~ msgstr "U staat op het punt de objectgroep '%s' te verwijderen." #~ msgid "Select to see groups containing groups" #~ msgstr "Selecteer om groepen die groepen bevatten te tonen" #~ msgid "Show groups containing groups" #~ msgstr "Toon groepen die groepen bevatten" #~ msgid "Select to see groups containing applications" #~ msgstr "Selecteer om groepen die programma's bevatten te tonen" #~ msgid "Show groups containing applications" #~ msgstr "Toon groepen die programma's bevatten" #~ msgid "Select to see groups containing departments" #~ msgstr "Selecteer om groepen die afdelingen bevatten te tonen" #~ msgid "Show groups containing departments" #~ msgstr "Toon groepen die afdelingen bevatten" #~ msgid "Select to see groups containing servers" #~ msgstr "Selecteer om groepen die servers bevatten te tonen" #~ msgid "Show groups containing servers" #~ msgstr "Toon groepen die servers bevatten" #~ msgid "Select to see groups containing workstations" #~ msgstr "Selecteer om groepen die werkstations bevatten te tonen" #~ msgid "Show groups containing workstations" #~ msgstr "Toon groepen die werkstations bevatten" #, fuzzy #~ msgid "Select to see groups containing windows workstations" #~ msgstr "Selecteer om groepen die werkstations bevatten te tonen" #, fuzzy #~ msgid "Show groups containing windows workstations" #~ msgstr "Toon groepen die werkstations bevatten" #~ msgid "Select to see groups containing terminals" #~ msgstr "Selecteer om groepen die terminals bevatten te tonen" #~ msgid "Show groups containing terminals" #~ msgstr "Toon groepen die terminals bevatten" #~ msgid "Select to see groups containing printer" #~ msgstr "Selecteer om groepen die printers bevatten te tonen" #~ msgid "Show groups containing printer" #~ msgstr "Toon groepen die printers bevatten" #~ msgid "Select to see groups containing phones" #~ msgstr "Selecteer om groepen die printers bevatten te tonen" #~ msgid "Show groups containing phones" #~ msgstr "Toon groepen die telefoons bevatten" #, fuzzy #~ msgid "You are not allowed to remove this entry." #~ msgstr "U heeft geen toestemming om deze gegevens te verwijderen!" #, fuzzy #~ msgid "Edit ACL" #~ msgstr "Bewerken" #~ msgid "Groupname / Department" #~ msgstr "Groepsnaam / Afdeling" #, fuzzy #~ msgid "Deactivated" #~ msgstr "Geactiveerd" #~ msgid "Active" #~ msgstr "Actief" #, fuzzy #~ msgid "Members:" #~ msgstr "Groepsleden" #, fuzzy #~ msgid "Adding a lock failed." #~ msgstr "Het opslaan van de FAI inhaker is mislukt" #, fuzzy #~ msgid "Access control list templates" #~ msgstr "Toegangsopties" #, fuzzy #~ msgid "Removing a lock failed." #~ msgstr "Het verwijderen van de FAI inhaker is mislukt" #, fuzzy #~ msgid "Setting the password failed!" #~ msgstr "" #~ "Instellen van het wachtwoord is mislukt. De LDAP server meldt: '%s'." #, fuzzy #~ msgid "Please enter a valid serial number!" #~ msgstr "Geef a.u.b. een geldig serienummer op" #, fuzzy #~ msgid "You have no permission to move this object to '%s'!" #~ msgstr "U heeft geen toestemming om deze blokkeerlijst te verwijderen." #~ msgid "" #~ "This menu allows you to create, edit and delete selected users. Having a " #~ "great number of users, you may want to use the range selectors on top of " #~ "the user list." #~ msgstr "" #~ "Dit menu maakt het mogelijk om geselecteerde gebruikers toe te voegen, " #~ "bewerken of verwijderen. Indien u veel gebruikers heeft, dan is het aan " #~ "te raden de selectie mogelijkheden te gebruiken." #~ msgid "" #~ "This menu allows you to add, edit and remove selected groups. You may " #~ "want to use the range selector on top of the group listbox, when working " #~ "with a large number of groups." #~ msgstr "" #~ "Dit menu maakt het mogelijk om geselecteerde groepen toe te voegen, " #~ "bewerken of verwijderen. Indien u veel groepen heeft, dan is het aan te " #~ "raden de selectie mogelijkheden te gebruiken." #, fuzzy #~ msgid "This menu allows you to edit and delete selected acls." #~ msgstr "" #~ "Dit menu maakt het mogelijk om FAI klassen aan te maken, bewerken en " #~ "verwijderen." #, fuzzy #~ msgid "" #~ "This menu allows you to create, delete and edit selected departments. " #~ "Having a large number of departments, you might prefer the range " #~ "selectors on top of the department list." #~ msgstr "" #~ "Dit menu maakt het mogelijk om geselecteerde afdelingen toe te voegen, " #~ "bewerken of verwijderen. Indien u veel afdelingen heeft is het aan te " #~ "raden de selectie mogelijkheden te gebruiken." #~ msgid "" #~ "This menu allows you to add, edit or remove selected groups. You may want " #~ "to use the range selector on top of the group listbox, when working with " #~ "a large number of groups." #~ msgstr "" #~ "Dit menu maakt het mogelijk om geselecteerde groepen toe te voegen, " #~ "bewerken of verwijderen. Indien u veel groepen heeft is het aan te raden " #~ "de selectie mogelijkheden te gebruiken." #~ msgid "Can't bind to LDAP. Please contact the system administrator." #~ msgstr "" #~ "Kan niet verbinden met de LDAP server. Neem a.u.b. contact op met de " #~ "systeembeheerder." #, fuzzy #~ msgid "Removing of user/generic account with dn '%s' failed." #~ msgstr "Het verwijderen van het algemene gebruikers account is mislukt" #, fuzzy #~ msgid "Saving of user/generic account with dn '%s' failed." #~ msgstr "Het opslaan van het algemene gerbuikers account is mislukt" #~ msgid "This account has no unix extensions." #~ msgstr "Dit account heeft geen Unix mogelijkheden." #~ msgid "Remove posix account" #~ msgstr "Verwijder POSIX account" #~ msgid "Create posix account" #~ msgstr "POSIX account aanmaken" #, fuzzy #~ msgid "Removing of user/posix account with dn '%s' failed." #~ msgstr "Het verwijderen van het proxy account is mislukt" #, fuzzy #~ msgid "Saving of user/posix account with dn '%s' failed." #~ msgstr "Het opslaan van het Open-Xchange account is mislukt" #~ msgid "Unix settings" #~ msgstr "Unix instellingen" #, fuzzy #~ msgid "Send user notifications" #~ msgstr "Gebruikersinformatie" #, fuzzy #~ msgid "Please specify at least one recipient to send a message!" #~ msgstr "Geef a.u.b. een geldige scriptnaam op." #, fuzzy #~ msgid "Cannot find a DESC tag in file '%s'!" #~ msgstr "Kan bestand '%s' niet aanmaken." #, fuzzy #~ msgid "Notification plugin" #~ msgstr "Geen certificaat geinstalleerd" #, fuzzy #~ msgid "Allow sending notifications" #~ msgstr "Host notificatie opties" #, fuzzy #~ msgid "Notification target" #~ msgstr "Geen certificaat geinstalleerd" #~ msgid "Message" #~ msgstr "Bericht" #~ msgid "Import" #~ msgstr "Importeren" #, fuzzy #~ msgid "Notification send!" #~ msgstr "Geen certificaat geinstalleerd" #, fuzzy #~ msgid "Saving of object group/generic with dn '%s' failed." #~ msgstr "Het opslaan van de objectgroep is mislukt" #, fuzzy #~ msgid "Removing of object group/generic with dn '%s' failed." #~ msgstr "Het verwijderen van de objectgroep is mislukt" #, fuzzy #~ msgid "Removing of department with dn '%s' failed." #~ msgstr "Het verwijderen van de afdeling is mislukt" #, fuzzy #~ msgid "Saving of department with dn '%s' failed." #~ msgstr "Het opslaan van de afdeling is mislukt" #, fuzzy #~ msgid "Handle object tagging with dn '%s' failed." #~ msgstr "Het verwerken van object markeringen is mislukt" #, fuzzy #~ msgid "Saving ACLs with dn '%s' failed." #~ msgstr "Het opslaan van de ACL informatie is mislukt" #, fuzzy #~ msgid "Removing of aclRole with dn '%s' failed." #~ msgstr "Het verwijderen van het blokeerlijst object is mislukt" #, fuzzy #~ msgid "Removing aclRole from objectgroup '%s' failed" #~ msgstr "Het verwijderen van het programma van objectgroep '%s' is mislukt" #, fuzzy #~ msgid "Removing of groups/generic with dn '%s' failed." #~ msgstr "Het verwijderen van het programma van groep '%s' is mislukt" #, fuzzy #~ msgid "Saving object snapshot with dn '%s' failed." #~ msgstr "Het opslaan van de objectgroep is mislukt" #, fuzzy #~ msgid "Restore snapshot with dn '%s' failed." #~ msgstr "Het verwijderen van de telefoon is mislukt" #, fuzzy #~ msgid "Creating subtree '%s' failed." #~ msgstr "Het aanmaken van de FAI script basis is mislukt" #, fuzzy #~ msgid "Ldap import with dn '%s' failed." #~ msgstr "Het opslaan van de printer is mislukt" #~ msgid "This does something" #~ msgstr "Dit doet iets" #~ msgid "The required field 'Home directory' is not set." #~ msgstr "Het vereiste veld 'Persoonlijke map' is leeg." #~ msgid "Please enter a valid path in 'Home directory' field." #~ msgstr "Geef a.u.b. een geldige map op in het 'Persoonlijke map' veld." #~ msgid "Value specified as 'GID' is not valid." #~ msgstr "De opgegeven 'GID' waarde is niet geldig." #~ msgid "Value specified as 'GID' is too small." #~ msgstr "De opgegeven 'GID' waarde is te klein." #~ msgid "Value specified as 'shadowMin' is not valid." #~ msgstr "De opgegeven 'shadowMin' waarde is niet geldig." #~ msgid "Value specified as 'shadowMax' is not valid." #~ msgstr "De opgegeven 'shadowMax' waarde is niet geldig." #~ msgid "Value specified as 'shadowWarning' is not valid." #~ msgstr "De opgegeven 'shadowWarning' waarde is niet geldig." #~ msgid "'shadowWarning' without 'shadowMax' makes no sense." #~ msgstr "'shadowWarning' zonder 'shadowMax' is niet logisch." #~ msgid "" #~ "Value specified as 'shadowWarning' should be smaller than 'shadowMax'." #~ msgstr "" #~ "De waarde opgegeven voor 'shadowWarning' moet kleiner zijn dan " #~ "'shadowMax'." #~ msgid "" #~ "Value specified as 'shadowWarning' should be greater than 'shadowMin'." #~ msgstr "" #~ "De waarde opgegeven voor 'shadowWarning' moet groter dan 'shadowMin' zijn." #~ msgid "Value specified as 'shadowInactive' is not valid." #~ msgstr "De waarde opgegeven voor 'shadowInactive' is niet geldig." #~ msgid "'shadowInactive' without 'shadowMax' makes no sense." #~ msgstr "'shadowInactive' zonder 'shadowMax' is niet logisch." #~ msgid "The required field 'Given name' is not set." #~ msgstr "Het vereiste veld 'Voornaam' is leeg." #~ msgid "The required field 'Login' is not set." #~ msgstr "Het vereiste veld 'Inlog naam' is leeg." #~ msgid "" #~ "There's already a person with this 'Name'/'Given name' combination in the " #~ "database." #~ msgstr "" #~ "Er bestaat al een persoon met deze '(Achter)naam'/'Voornaam' combinatie " #~ "in de database." #~ msgid "" #~ "The field 'Login' contains invalid characters. Lowercase, numbers and " #~ "dashes are allowed." #~ msgstr "" #~ "Het veld 'Inlog naam' bevat ongeldige karakters. Kleine letters, nummers " #~ "en liggende streepjes zijn toegestaan." #~ msgid "The field 'Homepage' contains an invalid URL definition." #~ msgstr "Het veld 'Website' bevat een ongeldige URL." #~ msgid "The field 'Given name' contains invalid characters." #~ msgstr "Het veld 'Voornaam' bevat ongeldige karakters." #~ msgid "The field 'Phone' contains an invalid phone number." #~ msgstr "Het veld 'Telefoon' bevat een ongeldig telefoonnummer." #~ msgid "The field 'Mobile' contains an invalid phone number." #~ msgstr "Het veld 'GSM' bevat een ongeldig telefoonnummer" #~ msgid "The field 'Pager' contains an invalid phone number." #~ msgstr "Het veld 'Pieper' bevat een ongeldig telefoonnummer." #~ msgid "" #~ "The field 'Name' contains invalid characters. Lowercase, numbers and " #~ "dashes are allowed." #~ msgstr "" #~ "Het veld 'Naam' bevat ongeldige karakters. Kleine letters, cijfers en " #~ "liggende streepjes zijn toegestaan." #~ msgid "Value specified as 'Name' is already used." #~ msgstr "De waarde die opgegeven is voor de naam wordt al gebruikt." #, fuzzy #~ msgid "Please select a valid template." #~ msgstr "Selecteer a.u.b. een geldig bestand." #~ msgid "A person with the choosen name is already used in this tree." #~ msgstr "Er bestaat al een persoon met deze naam in deze tree." #~ msgid "Department with that 'Name' already exists." #~ msgstr "Er bestaat al een afdeling met deze 'Naam'." #~ msgid "" #~ "The field 'Name' contains the reserved word '%s'. Please choose another " #~ "name." #~ msgstr "" #~ "Het veld 'Naam' bevat het gereserveerde woord '%s'. Kies a.u.b. een " #~ "andere naam." #~ msgid "There is already an object with this cn." #~ msgstr "Er bestaat al een object met deze cn." #, fuzzy #~ msgid "Cannot use %s encryption: no PHP functions for sha1/mhash available" #~ msgstr "" #~ "Kan SHA niet gebruiken voor encryptie. Functie sha1 / mhash / crypt " #~ "ontbreekt." #~ msgid "" #~ "Command '%s', specified as POSTCREATE for plugin '%s' doesn't seem to " #~ "exist." #~ msgstr "" #~ "Het commando '%s' dat gespecificeerd is als POSTCREATE voor module '%s' " #~ "bestaat niet." #~ msgid "" #~ "Command '%s', specified as POSTREMOVE for plugin '%s' doesn't seem to " #~ "exist." #~ msgstr "" #~ "Het commando '%s' dat gespecificeerd is als POSTREMOVE voor module '%s' " #~ "bestaat niet." #, fuzzy #~ msgid "You are going to paste the cutted entry '%s'." #~ msgstr "U staat op het punt de invoer '%s' te kopieren." #, fuzzy #~ msgid "You have no permission to copy and paste object '%s'!" #~ msgstr "" #~ "U heeft geen toestemming om een gebruiker aan te maken onder deze 'Basis'." #, fuzzy #~ msgid "Please specify a valid description for this snapshot." #~ msgstr "Geef a.u.b. een geldige naam op voor deze bijlage." #, fuzzy #~ msgid "" #~ "Setting for SMBHASH in gosa.conf is incorrect! Cannot change Samba " #~ "password." #~ msgstr "" #~ "De instelling voor 'SMBHASH' in gosa.conf is niet correct. Kan het samba " #~ "wachtwoord niet veranderen." #, fuzzy #~ msgid "User delted" #~ msgstr "Persoonlijk plaatje" #, fuzzy #~ msgid "System deployment" #~ msgstr "Systeembeheer" #, fuzzy #~ msgid "Your are about to delete the following tasks: %s" #~ msgstr "U staat op het punt de invoer %s te verwijderen." #, fuzzy #~ msgid "" #~ "This menu allows you to remove and change the properties of GOsa deamon " #~ "tasks." #~ msgstr "" #~ "Dit menu maakt het mogelijk om specifieke systemen toe te voegen, " #~ "bewerken en verwijderen. U kunt alleen systemen toevoegen die al eens " #~ "opgestart geweest zijn." #, fuzzy #~ msgid "List of queued deamon jobs." #~ msgstr "Lijst met afdelingen" #, fuzzy #~ msgid "Target" #~ msgstr "Chipset" #~ msgid "Task" #~ msgstr "Taak" #, fuzzy #~ msgid "Schedule" #~ msgstr "PHPScheduleIt" #, fuzzy #~ msgid "Reomve" #~ msgstr "Verwijderen" #, fuzzy #~ msgid "Say hello" #~ msgstr "Shell" #, fuzzy #~ msgid "System mass deployment" #~ msgstr "Systeembeheer" #, fuzzy #~ msgid "Header Tag" #~ msgstr "header" #, fuzzy #~ msgid "Schedule Execution" #~ msgstr "PHPScheduleIt" #, fuzzy #~ msgid "Tag" #~ msgstr "Chipset" #, fuzzy #~ msgid "Sekunde" #~ msgstr "Afzender" #, fuzzy #~ msgid "Mac" #~ msgstr "Maart" #, fuzzy #~ msgid "Available targets" #~ msgstr "Beschikbare programma's" #, fuzzy #~ msgid "You are not allowed to delete this acl!" #~ msgstr "U heeft geen toestemming om deze macro te verwijderen!" #, fuzzy #~ msgid "You are not allowed to delete this acl role!" #~ msgstr "U heeft geen toestemming om deze macro te verwijderen!" #~ msgid "" #~ "Your search method returned more than '%s' users, only '%s' users are " #~ "shown." #~ msgstr "" #~ "Uw zoekopdracht gaf meer dan '%s' gebruikers terug. Slechts '%s' " #~ "gebruikers worden getoond." #~ msgid "No configured SID found for '%s'." #~ msgstr "Er kon geen geconfigureerde SID gevonden worden voor '%s'." #~ msgid "No configured RIDBASE found for '%s'." #~ msgstr "Er kon geen geconfigureerde RIDBASE gevonden worden voor '%s'." #~ msgid "You are not allowed to delete this group!" #~ msgstr "U heeft geen toestemming om deze groep te verwijderen!" #~ msgid "You have no permission to remove this department." #~ msgstr "U heeft geen toestemming om deze afdeling te verwijderen." #~ msgid "You are not allowed to delete this object group!" #~ msgstr "U heeft geen toestemming deze objectgroep te verwijderen!" #, fuzzy #~ msgid "Network resolv hook" #~ msgstr "Netwerkadres" #~ msgid "Addons" #~ msgstr "Plugins" #, fuzzy #~ msgid "ACL Role" #~ msgstr "Rechten" #~ msgid "Unix" #~ msgstr "Unix" #~ msgid "Connectivity" #~ msgstr "Verbindingen" #, fuzzy #~ msgid "Scalix" #~ msgstr "Speciaal" #~ msgid "Nagios" #~ msgstr "Nagios" #, fuzzy #~ msgid "Inventory" #~ msgstr "Inventaris toevoegen" #~ msgid "Services" #~ msgstr "Services" #~ msgid "OGo" #~ msgstr "OGo" #~ msgid "Excel Export" #~ msgstr "Excel Export" #~ msgid "CSV Import" #~ msgstr "CSV Import" #~ msgid "Partitions" #~ msgstr "Partities" #~ msgid "Script" #~ msgstr "Script" #~ msgid "Variables" #~ msgstr "Variabelen" #~ msgid "Profiles" #~ msgstr "Profielen" #~ msgid "Packages" #~ msgstr "Pakketten" #~ msgid "" #~ "Can't connect to glpi database, there is no mysl extension available in " #~ "your php setup." #~ msgstr "" #~ "Kan niet verbinden met de GLPI database. Er is geen MySQL extensie " #~ "beschikbaar. Controleer uw PHP installatie." #~ msgid "Can't get specified attachment file, there is no entry with this id." #~ msgstr "" #~ "Kan het opgegeven bijlage bestand niet openen. Er is geen invoer met dit " #~ "ID beschikbaar." #~ msgid "Can't open file '%s', possibly the file does not exist." #~ msgstr "Kan '%s' niet openen. Het is mogelijk dat het bestand niet bestaat." #~ msgid "Can't read file '%s', check permissions." #~ msgstr "" #~ "Kan bestand '%s' niet openen. Controleer de bestandspermissies a.u.b." gosa-core-2.7.4/locale/core/it/0000755000175000017500000000000011752422546014652 5ustar mikemikegosa-core-2.7.4/locale/core/it/LC_MESSAGES/0000755000175000017500000000000011752422547016440 5ustar mikemikegosa-core-2.7.4/locale/core/it/LC_MESSAGES/messages.po0000644000175000017500000074713111651532471020620 0ustar mikemike# translation of messages.po to Italian # Copyright (c) 2005 B-Open Solutions srl - http://www.bopen.it/ # Copyright (c) 2005 Alessandro Amici # Alessandro Amici , 2005. msgid "" msgstr "" "Project-Id-Version: messages\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-25 15:08+0200\n" "PO-Revision-Date: 2005-11-18 15:26+0100\n" "Last-Translator: Alessandro Amici \n" "Language-Team: Italian\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.9.1\n" #: include/class_management.inc:32 include/class_management.inc:33 #: plugins/personal/posix/class_posixAccount.inc:224 msgid "unconfigured" msgstr "non configurata" #: include/class_management.inc:324 include/class_management.inc:487 #: include/class_management.inc:534 include/class_management.inc:549 #: include/class_management.inc:586 include/class_management.inc:600 #: plugins/admin/users/class_userManagement.inc:228 #: plugins/admin/users/class_userManagement.inc:764 #, fuzzy msgid "Permission" msgstr "Permessi" #: include/class_management.inc:405 #: plugins/admin/acl/class_aclManagement.inc:98 #: plugins/admin/users/class_userManagement.inc:722 #: plugins/admin/users/class_userManagement.inc:726 #, fuzzy msgid "Permission error" msgstr "Permessi" #: include/class_management.inc:487 #, fuzzy, php-format msgid "You are not allowed to create a snapshot for %s!" msgstr "Non hai il permesso di cambiare la tua password." #: include/class_management.inc:508 include/class_management.inc:669 #: include/utils/class_msgPool.inc:137 include/utils/class_msgPool.inc:149 #: include/utils/class_msgPool.inc:167 include/utils/class_msgPool.inc:440 #: include/utils/class_msgPool.inc:462 include/utils/class_xml.inc:40 #: include/class_listing.inc:542 include/class_tabs.inc:71 #: include/class_msg_dialog.inc:99 include/class_plugin.inc:1698 #: include/class_plugin.inc:1705 #: include/password-methods/class_password-methods.inc:339 #: include/functions.inc:2911 include/functions.inc:3070 #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3422 include/functions.inc:3430 #: include/functions.inc:3442 include/functions.inc:3446 #: include/functions.inc:3461 include/functions.inc:3470 #: include/functions.inc:3530 include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #: include/class_CopyPasteHandler.inc:377 #: include/class_gosaSupportDaemon.inc:1184 #: include/class_gosaSupportDaemon.inc:1204 #: setup/class_setupStep_Migrate.inc:450 setup/setup_checks.tpl:25 #: setup/setup_checks.tpl:66 html/index.php:241 html/index.php:245 #: plugins/personal/password/class_password.inc:215 #: plugins/personal/generic/class_user.inc:297 #: plugins/personal/generic/class_user.inc:429 #: plugins/personal/generic/class_user.inc:522 #: plugins/personal/generic/class_user.inc:816 #: plugins/personal/generic/class_user.inc:1050 #: plugins/personal/generic/class_user.inc:1177 #: plugins/personal/generic/class_user.inc:1184 #: plugins/personal/generic/class_user.inc:1202 #: plugins/personal/generic/class_user.inc:1483 #: plugins/personal/generic/class_user.inc:1809 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:203 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:207 #: plugins/admin/groups/class_group.inc:482 #: plugins/admin/groups/class_group.inc:488 #: plugins/admin/groups/class_group.inc:676 #: plugins/admin/groups/class_group.inc:772 #: plugins/admin/groups/class_group.inc:777 #: plugins/admin/groups/class_group.inc:1115 #: plugins/admin/ogroups/class_ogroup.inc:424 #: plugins/admin/acl/class_aclRole.inc:670 #: plugins/admin/departments/class_department.inc:317 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:43 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:49 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:96 #: plugins/generic/statistics/class_statistics.inc:133 #: plugins/generic/statistics/class_statistics.inc:229 #: plugins/generic/statistics/class_statistics.inc:244 #: plugins/generic/references/class_ldifViewer.inc:20 #, php-format msgid "Error" msgstr "" #: include/class_management.inc:534 include/class_management.inc:586 #: include/class_management.inc:600 #, fuzzy, php-format msgid "You are not allowed to restore a snapshot for %s!" msgstr "Non hai il permesso di cambiare la tua password." #: include/class_management.inc:549 #, fuzzy, php-format msgid "You are not allowed to remove a snapshot for %s!" msgstr "Non hai il permesso di cambiare la tua password." #: include/class_management.inc:659 include/class_management.inc:743 #: include/class_log.inc:87 include/class_session.inc:76 #: include/class_session.inc:101 include/class_session.inc:127 #: include/functions.inc:640 include/functions.inc:854 #: include/functions.inc:972 include/functions.inc:1367 #: include/functions.inc:2195 include/functions.inc:2225 #: include/functions.inc:2245 include/class_ldap.inc:807 #: include/class_ldap.inc:858 include/class_CopyPasteHandler.inc:160 #: include/class_CopyPasteHandler.inc:274 include/class_acl.inc:1089 #: plugins/personal/myaccount/main.inc:49 #, fuzzy msgid "Internal error" msgstr "Terminal Server" #: include/class_management.inc:660 include/class_management.inc:744 #: plugins/personal/myaccount/main.inc:50 #, php-format msgid "" "Cannot instantiate tabbed-plug-in, the base plugin (%s) is not available!" msgstr "" #: include/class_management.inc:669 #, php-format msgid "" "No tab definition for %s found in configuration file: cannot create plugin " "instance!" msgstr "" #: include/class_pluglist.inc:146 include/utils/class_timezone.inc:47 #: include/password-methods/class_password-methods-sha.inc:48 #: include/password-methods/class_password-methods-ssha.inc:51 #: include/functions.inc:864 include/functions.inc:3085 #: include/functions.inc:3100 include/class_config.inc:171 #: include/class_config.inc:712 include/class_config.inc:1173 #: include/class_config.inc:1186 include/class_config.inc:1204 #: include/class_CopyPasteHandler.inc:119 #: include/class_CopyPasteHandler.inc:128 #: include/class_CopyPasteHandler.inc:177 #: include/class_CopyPasteHandler.inc:186 #: include/class_CopyPasteHandler.inc:194 include/class_SnapshotHandler.inc:44 #: include/class_SnapshotHandler.inc:57 include/class_SnapshotHandler.inc:75 #: html/password.php:113 html/index.php:157 html/index.php:233 #: html/main.php:295 plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 #, fuzzy msgid "Configuration error" msgstr "File di configurazione" #: include/class_pluglist.inc:147 msgid "The configuration format has changed: please run the setup again!" msgstr "" #: include/class_pluglist.inc:304 #, fuzzy msgid "" "You are currently editing a database entry. Do you want to discard the " "changes?" msgstr "" "Stai modificando un campo del database. Vuoi abbandonare i cambiamenti?" #: include/class_pluglist.inc:479 plugins/admin/groups/class_group.inc:329 #: plugins/admin/groups/class_group.inc:352 #: plugins/admin/groups/class_group.inc:369 #: plugins/admin/departments/class_department.inc:152 #: plugins/generic/references/contents.tpl:18 msgid "Unknown" msgstr "" #: include/utils/class_msgPool.inc:17 msgid "This object will be deleted!" msgstr "" #: include/utils/class_msgPool.inc:19 #, php-format msgid "This %s object will be deleted!" msgstr "" #: include/utils/class_msgPool.inc:24 #, php-format msgid "This object will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:26 #, php-format msgid "This %s object will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:31 msgid "This object will be deleted:" msgstr "" #: include/utils/class_msgPool.inc:33 #, php-format msgid "This %s object will be deleted:" msgstr "" #: include/utils/class_msgPool.inc:37 #, php-format msgid "These objects will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:39 #, php-format msgid "These %s objects will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:47 #, fuzzy msgid "You have no permission to delete this object!" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:51 include/utils/class_msgPool.inc:55 #, fuzzy msgid "You have no permission to delete the object:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:58 #, fuzzy msgid "You have no permission to delete these objects:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:65 #, fuzzy msgid "You have no permission to create this object!" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:69 include/utils/class_msgPool.inc:73 #, fuzzy msgid "You have no permission to create the object:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:76 #, fuzzy msgid "You have no permission to create these objects:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:83 #, fuzzy msgid "You have no permission to modify this object!" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:87 include/utils/class_msgPool.inc:91 #, fuzzy msgid "You have no permission to modify the object:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:94 #, fuzzy msgid "You have no permission to modify these objects:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:101 #, fuzzy msgid "You have no permission to view this object!" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:105 include/utils/class_msgPool.inc:109 #, fuzzy msgid "You have no permission to view the object:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:112 #, fuzzy msgid "You have no permission to view these objects:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:119 #, fuzzy msgid "You have no permission to move this object!" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:123 include/utils/class_msgPool.inc:127 #, fuzzy msgid "You have no permission to move the object:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:130 #, fuzzy msgid "You have no permission to move these objects:" msgstr "Non hai il permesso di cambiare la tua password." #: include/utils/class_msgPool.inc:140 include/utils/class_msgPool.inc:152 #: include/utils/class_msgPool.inc:170 #, fuzzy msgid "Connection information" msgstr "Informazioni personali" #: include/utils/class_msgPool.inc:142 #, fuzzy, php-format msgid "Cannot connect to %s database!" msgstr "Impossibile connettersi al server del database!" #: include/utils/class_msgPool.inc:154 #, fuzzy, php-format msgid "Cannot select %s database!" msgstr "Impossibile selezionare il database!" #: include/utils/class_msgPool.inc:160 #, php-format msgid "No %s server defined!" msgstr "" #: include/utils/class_msgPool.inc:172 #, fuzzy, php-format msgid "Cannot query %s database!" msgstr "Impossibile selezionare il database!" #: include/utils/class_msgPool.inc:178 #, php-format msgid "The field %s contains a reserved keyword!" msgstr "" #: include/utils/class_msgPool.inc:184 #, php-format msgid "Command specified as %s hook for plugin %s does not exist!" msgstr "" #: include/utils/class_msgPool.inc:191 #, fuzzy, php-format msgid "%s command is invalid!" msgstr "Il valore specificato per l'UID non è valido." #: include/utils/class_msgPool.inc:193 #, fuzzy, php-format msgid "%s command (%s) for plugin %s is invalid!" msgstr "Il valore specificato per l'UID non è valido." #: include/utils/class_msgPool.inc:195 #, fuzzy, php-format msgid "%s command for plugin %s is invalid!" msgstr "Il valore specificato per l'UID non è valido." #: include/utils/class_msgPool.inc:197 #, fuzzy, php-format msgid "%s command (%s) is invalid!" msgstr "Il valore specificato per l'UID non è valido." #: include/utils/class_msgPool.inc:205 #, fuzzy, php-format msgid "Cannot execute %s command!" msgstr "Impossibile selezionare il database!" #: include/utils/class_msgPool.inc:207 #, fuzzy, php-format msgid "Cannot execute %s command (%s) for plugin %s!" msgstr "Impossibile selezionare il database!" #: include/utils/class_msgPool.inc:209 #, fuzzy, php-format msgid "Cannot execute %s command for plugin %s!" msgstr "Impossibile selezionare il database!" #: include/utils/class_msgPool.inc:211 #, fuzzy, php-format msgid "Cannot execute %s command (%s)!" msgstr "Impossibile selezionare il database!" #: include/utils/class_msgPool.inc:219 #, fuzzy, php-format msgid "Value for %s is too large!" msgstr "Il valore specificato per l'UID è troppo basso." #: include/utils/class_msgPool.inc:221 #, fuzzy, php-format msgid "%s must be smaller than %s!" msgstr "PHP deve essere la versione 4.1.0 o superiore." #: include/utils/class_msgPool.inc:229 #, fuzzy, php-format msgid "Value for %s is too small!" msgstr "Il valore specificato per l'UID è troppo basso." #: include/utils/class_msgPool.inc:231 #, fuzzy, php-format msgid "%s must be %s or above!" msgstr "PHP deve essere la versione 4.1.0 o superiore." #: include/utils/class_msgPool.inc:238 #, php-format msgid "%s depends on %s - please provide both values!" msgstr "" #: include/utils/class_msgPool.inc:244 #, php-format msgid "There is already an entry with this %s attribute in the system!" msgstr "" #: include/utils/class_msgPool.inc:250 #, fuzzy, php-format msgid "The required field %s is empty!" msgstr "Il campo necessario 'Home directory' non è vuoto" #: include/utils/class_msgPool.inc:258 include/class_core.inc:309 msgid "Example" msgstr "" #: include/utils/class_msgPool.inc:278 #, php-format msgid "The Field %s contains invalid characters" msgstr "" #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s is not allowed:" msgstr "Cambia la password" #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s are not allowed!" msgstr "Cambia la password" #: include/utils/class_msgPool.inc:282 #, php-format msgid "The Field %s contains invalid characters!" msgstr "" #: include/utils/class_msgPool.inc:289 #, fuzzy, php-format msgid "Missing %s PHP extension!" msgstr "Elimina foto" #: include/utils/class_msgPool.inc:295 ihtml/themes/default/acl.tpl:93 #: ihtml/themes/default/acl.tpl:109 ihtml/themes/default/snapshotdialog.tpl:44 #: ihtml/themes/default/snapshotdialog.tpl:90 #: ihtml/themes/default/islocked.tpl:26 #: ihtml/themes/default/copyPasteDialog.tpl:21 #: ihtml/themes/default/msg_dialog.tpl:80 #: ihtml/themes/default/msg_dialog.tpl:141 #: ihtml/themes/default/msg_dialog.tpl:146 setup/setup_ldap.tpl:20 #: setup/setup_migrate.tpl:71 #, php-format msgid "Cancel" msgstr "Annulla" #: include/utils/class_msgPool.inc:301 ihtml/themes/default/msg_dialog.tpl:77 #: ihtml/themes/default/msg_dialog.tpl:79 #: ihtml/themes/default/msg_dialog.tpl:136 #: ihtml/themes/default/msg_dialog.tpl:139 #: ihtml/themes/default/msg_dialog.tpl:144 #: setup/class_setupStep_Migrate.inc:153 setup/class_setupStep_Migrate.inc:303 #: setup/class_setupStep_Migrate.inc:684 setup/class_setupStep_Migrate.inc:828 #: setup/setup_checks.tpl:21 setup/setup_checks.tpl:62 #, php-format msgid "OK" msgstr "" #: include/utils/class_msgPool.inc:307 ihtml/themes/default/acl.tpl:33 #: ihtml/themes/default/acl.tpl:89 ihtml/themes/default/acl.tpl:106 #: setup/setup_ldap.tpl:19 setup/setup_migrate.tpl:70 #, php-format msgid "Apply" msgstr "Applica" #: include/utils/class_msgPool.inc:313 #: ihtml/themes/default/copyPasteDialog.tpl:19 #, php-format msgid "Save" msgstr "Salva" #: include/utils/class_msgPool.inc:319 #: plugins/personal/generic/generic.tpl:252 #: plugins/personal/generic/generic.tpl:272 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:83 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:123 #, php-format msgid "Add" msgstr "Aggiungi" #: include/utils/class_msgPool.inc:319 #, fuzzy, php-format msgid "Add %s" msgstr "Aggiungi" #: include/utils/class_msgPool.inc:325 #, php-format msgid "Delete" msgstr "Rimuovi" #: include/utils/class_msgPool.inc:325 #, fuzzy, php-format msgid "Delete %s" msgstr "Rimuovi" #: include/utils/class_msgPool.inc:331 ihtml/themes/default/sizelimit.tpl:16 #, php-format msgid "Set" msgstr "Imposta" #: include/utils/class_msgPool.inc:331 #, fuzzy, php-format msgid "Set %s" msgstr "Imposta" #: include/utils/class_msgPool.inc:337 #, fuzzy, php-format msgid "Edit..." msgstr "Modifica" #: include/utils/class_msgPool.inc:337 #, fuzzy, php-format msgid "Edit %s..." msgstr "Modifica contatto" #: include/utils/class_msgPool.inc:343 msgid "Back" msgstr "Indietro" #: include/utils/class_msgPool.inc:363 #, fuzzy, php-format msgid "This account has no valid %s extensions!" msgstr "Questa identità non possiede estensioni GOsa." #: include/utils/class_msgPool.inc:369 #, fuzzy, php-format msgid "" "This account has %s settings enabled. You can disable them by clicking below." msgstr "Questa identià possiede estensioni Unix." #: include/utils/class_msgPool.inc:372 include/utils/class_msgPool.inc:379 #, fuzzy, php-format msgid "" "This account has %s settings enabled. To disable them, you'll need to remove " "the %s settings first!" msgstr "" "Questa identià possiede estensioni Unix. Per eliminarle devi eliminare prima " "le estensioni Samba / ambiente." #: include/utils/class_msgPool.inc:388 #, fuzzy, php-format msgid "" "This account has %s settings disabled. You can enable them by clicking below." msgstr "Questa identità non possiede estensioni Unix" #: include/utils/class_msgPool.inc:391 include/utils/class_msgPool.inc:398 #, fuzzy, php-format msgid "" "This account has %s settings disabled. To enable them, you'll need to add " "the %s settings first!" msgstr "" "Questa identià possiede estensioni Unix. Per eliminarle devi eliminare prima " "le estensioni Samba / ambiente." #: include/utils/class_msgPool.inc:406 #, fuzzy, php-format msgid "Add %s settings" msgstr "Opzioni applicazione" #: include/utils/class_msgPool.inc:412 #, fuzzy, php-format msgid "Remove %s settings" msgstr "Impostazioni Unix" #: include/utils/class_msgPool.inc:418 msgid "Click the 'Edit' button below to change informations in this dialog" msgstr "" "Click sul bottone 'Modifica' qui sotto per cambiare le informazioni in " "questo dialogo" #: include/utils/class_msgPool.inc:424 msgid "January" msgstr "Gennaio" #: include/utils/class_msgPool.inc:424 msgid "February" msgstr "Febbraio" #: include/utils/class_msgPool.inc:424 msgid "March" msgstr "Marzo" #: include/utils/class_msgPool.inc:424 msgid "April" msgstr "Aprile" #: include/utils/class_msgPool.inc:425 msgid "May" msgstr "Maggio" #: include/utils/class_msgPool.inc:425 msgid "June" msgstr "Giugno" #: include/utils/class_msgPool.inc:425 msgid "July" msgstr "Luglio" #: include/utils/class_msgPool.inc:425 msgid "August" msgstr "Agosto" #: include/utils/class_msgPool.inc:425 msgid "September" msgstr "Settembre" #: include/utils/class_msgPool.inc:426 msgid "October" msgstr "Ottobre" #: include/utils/class_msgPool.inc:426 msgid "November" msgstr "Novembre" #: include/utils/class_msgPool.inc:426 msgid "December" msgstr "Dicembre" #: include/utils/class_msgPool.inc:432 #, fuzzy msgid "Sunday" msgstr "Cognome" #: include/utils/class_msgPool.inc:432 #, fuzzy msgid "Monday" msgstr "mese" #: include/utils/class_msgPool.inc:432 msgid "Tuesday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Wednesday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Thursday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Friday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Saturday" msgstr "" #: include/utils/class_msgPool.inc:439 #, fuzzy msgid "MySQL operation failed!" msgstr "La query al database è fallita!" #: include/utils/class_msgPool.inc:447 #, fuzzy msgid "read operation" msgstr "Opzioni di posta" #: include/utils/class_msgPool.inc:447 msgid "add operation" msgstr "" #: include/utils/class_msgPool.inc:447 #, fuzzy msgid "modify operation" msgstr "Informazioni personali" #: include/utils/class_msgPool.inc:448 #, fuzzy msgid "delete operation" msgstr "Selezione le workstation da aggiungere" #: include/utils/class_msgPool.inc:448 #, fuzzy msgid "search operation" msgstr "L'account spira dopo" #: include/utils/class_msgPool.inc:448 #, fuzzy msgid "authentication" msgstr "Destinazione" #: include/utils/class_msgPool.inc:451 #, fuzzy, php-format msgid "LDAP %s failed!" msgstr "La query al database è fallita!" #: include/utils/class_msgPool.inc:453 #, fuzzy msgid "LDAP operation failed!" msgstr "La query al database è fallita!" #: include/utils/class_msgPool.inc:459 include/class_acl.inc:904 #: include/class_acl.inc:911 include/class_acl.inc:918 #: ihtml/themes/default/snapshotdialog.tpl:20 #: ihtml/themes/default/snapshotdialog.tpl:63 #: plugins/admin/departments/class_department.inc:624 msgid "Object" msgstr "Oggetto" #: include/utils/class_msgPool.inc:469 #, fuzzy msgid "Upload failed!" msgstr "Nome applicazione" #: include/utils/class_msgPool.inc:472 #, fuzzy, php-format msgid "Upload failed: %s" msgstr "Utenti di Dominio" #: include/utils/class_msgPool.inc:479 msgid "Communication failure with the infrastructure service!" msgstr "" #: include/utils/class_msgPool.inc:481 #, php-format msgid "Communication failure with the infrastructure service: %s" msgstr "" #: include/utils/class_msgPool.inc:488 msgid "Communication failure with the GOsa-NG service!" msgstr "" #: include/utils/class_msgPool.inc:490 #, php-format msgid "Communication failure with the GOsa-NG service: %s" msgstr "" #: include/utils/class_msgPool.inc:497 include/utils/class_msgPool.inc:500 #, fuzzy, php-format msgid "This %s is still in use by this object: %s" msgstr "Nome descrittivo del gruppo" #: include/utils/class_msgPool.inc:503 #, fuzzy, php-format msgid "This %s is still in use." msgstr "Nome descrittivo del gruppo" #: include/utils/class_msgPool.inc:505 #, fuzzy, php-format msgid "This %s is still in use by these objects: %s" msgstr "Nome descrittivo del gruppo" #: include/utils/class_msgPool.inc:511 #, php-format msgid "File %s does not exist!" msgstr "" #: include/utils/class_msgPool.inc:517 #, fuzzy, php-format msgid "Cannot open file %s for reading!" msgstr "Rimuovi" #: include/utils/class_msgPool.inc:523 #, fuzzy, php-format msgid "Cannot open file %s for writing!" msgstr "Rimuovi" #: include/utils/class_msgPool.inc:529 #, fuzzy, php-format msgid "" "The value for %s is currently unconfigured or invalid, please check your " "configuration file!" msgstr "Impossibile connettersi al server del database!" #: include/utils/class_msgPool.inc:535 #, fuzzy, php-format msgid "Cannot delete file %s!" msgstr "Rimuovi" #: include/utils/class_msgPool.inc:541 #, fuzzy, php-format msgid "Cannot create folder %s!" msgstr "Vai al dipartimento base" #: include/utils/class_msgPool.inc:547 #, fuzzy, php-format msgid "Cannot delete folder %s!" msgstr "Rimuovi" #: include/utils/class_msgPool.inc:553 #, fuzzy, php-format msgid "Checking for %s support" msgstr "Controllo il supporto per iconv" #: include/utils/class_msgPool.inc:559 #, php-format msgid "Install and activate the %s PHP module." msgstr "" #: include/utils/class_msgPool.inc:565 #, php-format msgid "" "Cannot initialize class %s! Maybe there is a plugin missing in your gosa " "setup?" msgstr "" #: include/utils/class_msgPool.inc:571 msgid "" "The supplied base is not valid and has been reset to its previous value!" msgstr "" #: include/utils/class_timezone.inc:47 #, fuzzy, php-format msgid "The configured timezone %s is not valid!" msgstr "Il file di configurazione di GOsa %s/gosa.conf non è legibile." #: include/utils/class_xml.inc:37 include/class_tabs.inc:287 #: include/class_configRegistry.inc:689 include/class_configRegistry.inc:704 #: include/class_configRegistry.inc:719 include/class_configRegistry.inc:734 #: include/class_configRegistry.inc:750 include/class_configRegistry.inc:755 #: include/class_configRegistry.inc:775 include/class_configRegistry.inc:780 #: include/class_configRegistry.inc:797 include/class_configRegistry.inc:802 #: include/class_configRegistry.inc:820 include/class_configRegistry.inc:825 #: include/class_configRegistry.inc:841 include/class_configRegistry.inc:856 #: include/class_configRegistry.inc:871 include/functions.inc:2516 #: include/functions.inc:2520 include/functions.inc:2526 #: include/functions.inc:2550 include/class_jsonRPC.inc:37 #: setup/setup_checks.tpl:27 setup/setup_checks.tpl:68 html/password.php:315 #: plugins/personal/posix/class_posixAccount.inc:692 #: plugins/personal/posix/class_posixAccount.inc:815 #: plugins/admin/groups/class_group.inc:871 #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "Warning" msgstr "Attenzione" #: include/utils/class_xml.inc:43 include/functions.inc:482 #: html/password.php:61 html/main.php:170 #: plugins/admin/departments/class_department.inc:439 #, fuzzy msgid "Fatal error" msgstr "Terminal Server" #: include/utils/class_xml.inc:51 #, fuzzy msgid "XML error" msgstr "Errore LDAP" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort ascending" msgstr "" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort descending" msgstr "" #: include/class_listing.inc:324 #, fuzzy msgid "Select all" msgstr "Rimuovi" #: include/class_listing.inc:584 #, fuzzy msgid "created by" msgstr "Creare" #: include/class_listing.inc:1081 include/class_listing.inc:1083 #: include/class_ItemSelector.inc:247 include/class_baseSelector.inc:188 #: include/class_releaseSelector.inc:214 msgid "Root" msgstr "Root" #: include/class_listing.inc:1088 include/class_listing.inc:1090 msgid "Go to preceding level" msgstr "" #: include/class_listing.inc:1096 include/class_listing.inc:1098 msgid "Go to current users level" msgstr "" #: include/class_listing.inc:1103 msgid "Reload list" msgstr "" #: include/class_listing.inc:1207 #: plugins/addons/propertyEditor/property-list.xml:97 #: plugins/admin/groups/group-list.xml:62 #: plugins/admin/ogroups/ogroup-list.xml:62 plugins/admin/acl/acl-list.xml:65 #: plugins/admin/departments/dep-list.xml:87 #: plugins/admin/users/user-list.xml:78 msgid "Actions" msgstr "Azioni" #: include/class_listing.inc:1477 #, fuzzy msgid "Copy" msgstr "Azienda" #: include/class_listing.inc:1483 #, fuzzy msgid "Cut" msgstr "Esegui" #: include/class_listing.inc:1491 include/class_listing.inc:1493 #: include/class_CopyPasteHandler.inc:571 #, fuzzy msgid "Paste" msgstr "Data" #: include/class_listing.inc:1516 #, fuzzy msgid "Cut this entry" msgstr "Modifica questo record" #: include/class_listing.inc:1525 #, fuzzy msgid "Copy this entry" msgstr "Modifica questo record" #: include/class_listing.inc:1557 include/class_listing.inc:1559 #, fuzzy msgid "Restore snapshots" msgstr "Crea estensioni di posta" #: include/class_listing.inc:1573 #, fuzzy msgid "Export list" msgstr "Esporta" #: include/class_listing.inc:1607 include/class_SnapShotDialog.inc:142 msgid "Restore snapshot" msgstr "" #: include/class_listing.inc:1615 #, fuzzy msgid "Create new snapshot for this object" msgstr "Gruppo di oggetti" #: include/class_userFilter.inc:55 #: ihtml/themes/default/userFilterEditor.tpl:27 #, fuzzy msgid "Parent filter" msgstr "Parametro" #: include/class_userFilter.inc:55 include/class_userFilter.inc:150 #: include/class_SnapShotDialog.inc:55 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:236 #: include/class_userFilterEditor.inc:240 #: ihtml/themes/default/userFilterEditor.tpl:11 setup/setup_migrate.tpl:43 #: setup/setup_migrate.tpl:45 setup/setup_feedback.tpl:16 #: plugins/personal/posix/trustSelect/trust-list.xml:46 #: plugins/personal/posix/groupSelect/group-list.xml:33 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/personal/generic/class_user.inc:1316 #: plugins/personal/generic/class_user.inc:1334 #: plugins/personal/generic/class_user.inc:1376 #: plugins/personal/generic/class_user.inc:1860 #: plugins/addons/propertyEditor/property-list.xml:65 #: plugins/admin/groups/class_group.inc:925 #: plugins/admin/groups/class_group.inc:936 #: plugins/admin/groups/class_group.inc:938 #: plugins/admin/groups/class_group.inc:955 #: plugins/admin/groups/class_group.inc:969 #: plugins/admin/groups/class_group.inc:976 #: plugins/admin/groups/class_group.inc:1076 #: plugins/admin/groups/group-list.xml:41 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:49 #: plugins/admin/ogroups/ogroup-list.xml:41 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:97 #: plugins/admin/ogroups/class_ogroup.inc:157 #: plugins/admin/ogroups/class_ogroup.inc:683 #: plugins/admin/ogroups/class_ogroup.inc:698 #: plugins/admin/ogroups/class_ogroup.inc:702 #: plugins/admin/ogroups/class_ogroup.inc:885 plugins/admin/acl/acl_role.tpl:7 #: plugins/admin/acl/acl-list.xml:49 plugins/admin/acl/paste_role.tpl:4 #: plugins/admin/acl/class_aclRole.inc:741 #: plugins/admin/acl/class_aclRole.inc:753 #: plugins/admin/acl/class_aclRole.inc:763 #: plugins/admin/departments/class_countryGeneric.inc:47 #: plugins/admin/departments/class_countryGeneric.inc:49 #: plugins/admin/departments/class_countryGeneric.inc:54 #: plugins/admin/departments/class_countryGeneric.inc:56 #: plugins/admin/departments/class_countryGeneric.inc:58 #: plugins/admin/departments/class_department.inc:355 #: plugins/admin/departments/class_department.inc:357 #: plugins/admin/departments/class_department.inc:362 #: plugins/admin/departments/class_department.inc:369 #: plugins/admin/departments/class_department.inc:373 #: plugins/admin/departments/class_domain.inc:47 #: plugins/admin/departments/class_domain.inc:49 #: plugins/admin/departments/class_domain.inc:54 #: plugins/admin/departments/class_domain.inc:56 #: plugins/admin/departments/class_domain.inc:58 #: plugins/admin/departments/class_domain.inc:90 #: plugins/admin/departments/class_organizationGeneric.inc:79 #: plugins/admin/departments/class_organizationGeneric.inc:81 #: plugins/admin/departments/class_organizationGeneric.inc:86 #: plugins/admin/departments/class_organizationGeneric.inc:88 #: plugins/admin/departments/class_organizationGeneric.inc:90 #: plugins/admin/departments/class_localityGeneric.inc:48 #: plugins/admin/departments/class_localityGeneric.inc:50 #: plugins/admin/departments/class_localityGeneric.inc:55 #: plugins/admin/departments/class_localityGeneric.inc:57 #: plugins/admin/departments/class_localityGeneric.inc:59 #: plugins/admin/departments/class_dcObject.inc:47 #: plugins/admin/departments/class_dcObject.inc:49 #: plugins/admin/departments/class_dcObject.inc:54 #: plugins/admin/departments/class_dcObject.inc:56 #: plugins/admin/departments/class_dcObject.inc:58 #: plugins/admin/departments/class_dcObject.inc:90 #: plugins/admin/users/class_userManagement.inc:549 #: plugins/admin/users/class_userManagement.inc:597 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Name" msgstr "Cognome" #: include/class_userFilter.inc:55 include/class_SnapShotDialog.inc:174 #: include/class_acl.inc:255 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:245 #: ihtml/themes/default/userFilterEditor.tpl:19 #: plugins/personal/posix/trustSelect/trust-list.xml:53 #: plugins/personal/posix/groupSelect/group-list.xml:40 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/admin/groups/class_group.inc:1077 #: plugins/admin/groups/generic.tpl:24 plugins/admin/groups/group-list.xml:49 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:49 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:105 #: plugins/admin/ogroups/generic.tpl:15 #: plugins/admin/ogroups/class_ogroup.inc:887 #: plugins/admin/acl/acl_role.tpl:17 plugins/admin/acl/acl-list.xml:57 #: plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/acl/class_aclRole.inc:743 #: plugins/admin/departments/dcObject.tpl:19 #: plugins/admin/departments/country.tpl:19 #: plugins/admin/departments/class_countryGeneric.inc:63 #: plugins/admin/departments/class_countryGeneric.inc:92 #: plugins/admin/departments/dep-list.xml:79 #: plugins/admin/departments/organization.tpl:19 #: plugins/admin/departments/class_department.inc:365 #: plugins/admin/departments/class_department.inc:675 #: plugins/admin/departments/class_domain.inc:63 #: plugins/admin/departments/class_domain.inc:91 #: plugins/admin/departments/class_organizationGeneric.inc:95 #: plugins/admin/departments/class_organizationGeneric.inc:123 #: plugins/admin/departments/generic.tpl:19 #: plugins/admin/departments/locality.tpl:19 #: plugins/admin/departments/class_localityGeneric.inc:64 #: plugins/admin/departments/class_localityGeneric.inc:92 #: plugins/admin/departments/class_dcObject.inc:63 #: plugins/admin/departments/class_dcObject.inc:91 #: plugins/admin/departments/domain.tpl:19 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Description" msgstr "Descrizione" #: include/class_userFilter.inc:55 plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/departments/organization.tpl:27 #: plugins/admin/departments/class_department.inc:676 #: plugins/admin/departments/class_organizationGeneric.inc:124 #: plugins/admin/departments/generic.tpl:27 msgid "Category" msgstr "" #: include/class_userFilter.inc:55 ihtml/themes/default/acl.tpl:15 #: ihtml/themes/default/acl.tpl:16 msgid "Options" msgstr "Opzioni" #: include/class_userFilter.inc:275 include/functions.inc:511 #: include/functions.inc:546 include/functions.inc:554 #: include/functions.inc:600 include/functions.inc:879 #: include/functions.inc:928 include/functions.inc:985 #: include/functions.inc:1035 include/functions.inc:3304 #: include/class_ldap.inc:870 include/class_ldap.inc:1328 #: include/class_config.inc:367 include/class_acl.inc:1396 #: include/class_acl.inc:1492 include/class_SnapshotHandler.inc:123 #: include/class_SnapshotHandler.inc:280 include/class_SnapshotHandler.inc:329 #: include/class_SnapshotHandler.inc:333 include/class_SnapshotHandler.inc:346 #: include/class_SnapshotHandler.inc:380 include/class_SnapshotHandler.inc:435 #: include/class_SnapshotHandler.inc:500 include/class_SnapshotHandler.inc:515 #: setup/class_setupStep_Migrate.inc:461 setup/class_setupStep_Migrate.inc:814 #: html/index.php:271 plugins/personal/posix/class_posixAccount.inc:570 #: plugins/personal/posix/class_posixAccount.inc:832 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:253 #: plugins/personal/generic/class_user.inc:730 #: plugins/personal/generic/class_user.inc:1099 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:204 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:269 #: plugins/admin/groups/class_group.inc:619 #: plugins/admin/groups/class_group.inc:895 #: plugins/admin/ogroups/class_ogroup.inc:782 #: plugins/admin/ogroups/class_ogroup.inc:799 #: plugins/admin/acl/class_aclRole.inc:602 #: plugins/admin/acl/class_aclRole.inc:642 #: plugins/admin/acl/class_aclRole.inc:656 #: plugins/admin/departments/class_department.inc:285 #: plugins/admin/departments/class_department.inc:482 #: plugins/admin/departments/class_department.inc:759 #: plugins/admin/departments/class_department.inc:790 #: plugins/generic/references/class_reference.inc:97 #, fuzzy msgid "LDAP error" msgstr "Errore LDAP" #: include/class_log.inc:87 #, fuzzy, php-format msgid "Logging failed: %s" msgstr "Utenti di Dominio" #: include/class_log.inc:102 #, fuzzy, php-format msgid "Invalid option %s specified!" msgstr "L'uid contiene dei caratteri invalidi!" #: include/class_log.inc:106 #, fuzzy msgid "Specified 'objectType' is empty or invalid!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_multi_plug.inc:362 msgid "You are currently editing multiple entries." msgstr "" #: include/class_multi_plug.inc:394 #, fuzzy msgid "Reset password" msgstr "Cambia password" #: include/class_multi_plug.inc:394 #, fuzzy msgid "The user password has been reset. Please set a new password!" msgstr "Non hai il permesso di cambiare la tua password." #: include/class_tabs.inc:72 #, fuzzy, php-format msgid "No plugin definition for %s found: please check the configuration file!" msgstr "Impossibile connettersi al server del database!" #: include/class_tabs.inc:287 #, php-format msgid "Delete process has been canceled by plugin %s: %s" msgstr "" #: include/class_tabs.inc:420 include/class_acl.inc:1428 #: include/class_acl.inc:1429 include/class_acl.inc:1435 #: plugins/admin/acl/acl-list.xml:15 plugins/admin/acl/tabs_acl.inc:28 #: plugins/admin/acl/class_aclRole.inc:770 msgid "ACL" msgstr "ACL" #: include/class_tabs.inc:425 msgid "References" msgstr "Riferimenti" #: include/functions_helpviewer.inc:45 #, php-format msgid "XML error in guide.xml: %s at line %s" msgstr "" #: include/functions_helpviewer.inc:88 msgid "No help available for this plug-in." msgstr "" #: include/functions_helpviewer.inc:97 html/helpviewer.php:193 msgid "previous" msgstr "" #: include/functions_helpviewer.inc:101 html/helpviewer.php:197 msgid "next" msgstr "" #: include/functions_helpviewer.inc:388 #, php-format msgid "%s results for your search with the keyword %s" msgstr "" #: include/functions_helpviewer.inc:461 #, php-format msgid "%s%% hit rate in file %s" msgstr "" #: include/class_msg_dialog.inc:124 msgid "Please fix the above error and reload the page." msgstr "" #: include/class_plugin.inc:581 msgid "" "The current object has been altered while beeing edited. If you save this " "entry, changes that have been made by others will be discarded!" msgstr "" #: include/class_plugin.inc:1411 #, php-format msgid "Changing ACL DN from %s to %s" msgstr "" #: include/class_SnapShotDialog.inc:55 #, fuzzy msgid "Date" msgstr "Data" #: include/class_SnapShotDialog.inc:94 #, fuzzy, php-format msgid "You are about to delete the snapshot %s." msgstr "Non hai il permesso di cambiare la tua password." #: include/class_SnapShotDialog.inc:143 #, fuzzy msgid "Delete snapshot" msgstr "Crea estensioni di posta" #: include/class_SnapShotDialog.inc:144 include/class_SnapShotDialog.inc:162 msgid "Y-m-d, H:i:s" msgstr "" #: include/class_pathNavigator.inc:86 #, fuzzy msgid "Welcome to GOsa" msgstr "Benvenuto nel setup di GOsa!" #: include/password-methods/class_password-methods.inc:339 msgid "Cannot find a suitable password method for the current hash!" msgstr "" #: include/class_sortableListing.inc:234 #, fuzzy msgid "Sortable list" msgstr "Esporta" #: include/class_sortableListing.inc:239 msgid "Edit this entry" msgstr "Modifica questo record" #: include/class_sortableListing.inc:244 msgid "Delete this entry" msgstr "Elimina questo record" #: include/class_configRegistry.inc:194 #: plugins/personal/generic/class_user.inc:273 #: plugins/personal/generic/class_user.inc:1898 msgid "unknown" msgstr "" #: include/class_configRegistry.inc:197 #, php-format msgid "%s has version %s but %s is required!" msgstr "" #: include/class_configRegistry.inc:240 setup/class_setupStep_Schema.inc:96 msgid "The following object classes are missing:" msgstr "" #: include/class_configRegistry.inc:247 setup/class_setupStep_Schema.inc:99 msgid "The following object classes are outdated:" msgstr "" #: include/class_configRegistry.inc:253 msgid "" "Plugins that require one or more of the object classes above will be " "disabled until the object classes get updated." msgstr "" #: include/class_configRegistry.inc:255 #, fuzzy msgid "Schema validation error" msgstr "Destinazione" #: include/class_configRegistry.inc:690 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a bool value!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:705 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a string!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:720 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be numeric!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:735 #, fuzzy, php-format msgid "The path %s specified for %s:%s is invalid!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:751 include/class_configRegistry.inc:798 #, fuzzy, php-format msgid "The folder %s specified for %s:%s does not exists!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:756 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not readable!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:776 include/class_configRegistry.inc:781 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not writeable!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:803 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not writeable!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:821 #, fuzzy, php-format msgid "The file %s specified for %s:%s does not exists!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:826 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not readable!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:842 #, fuzzy, php-format msgid "The command %s specified for %s:%s is invalid!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:857 #, fuzzy, php-format msgid "The DN %s specified for %s:%s is invalid!" msgstr "Il valore specificato per l'UID non è valido." #: include/class_configRegistry.inc:872 #, fuzzy, php-format msgid "The RDN %s specified for %s:%s is invalid!" msgstr "Il valore specificato per l'UID non è valido." #: include/php_setup.inc:114 msgid "Generating this page caused the PHP interpreter to raise some errors!" msgstr "" #: include/php_setup.inc:117 msgid "Send bug report" msgstr "" #: include/php_setup.inc:121 msgid "Toggle details" msgstr "" #: include/php_setup.inc:130 msgid "PHP error" msgstr "Errore PHP" #: include/php_setup.inc:149 msgid "class" msgstr "classe" #: include/php_setup.inc:155 msgid "function" msgstr "funzione" #: include/php_setup.inc:160 msgid "static" msgstr "statico" #: include/php_setup.inc:164 msgid "method" msgstr "metodo" #: include/php_setup.inc:197 msgid "Traceback" msgstr "" #: include/php_setup.inc:198 msgid "File" msgstr "" #: include/php_setup.inc:198 msgid "Line" msgstr "" #: include/php_setup.inc:198 include/class_acl.inc:293 #: plugins/admin/acl/class_aclRole.inc:182 msgid "Type" msgstr "Tipo" #: include/php_setup.inc:199 msgid "Arguments" msgstr "Argomenti" #: include/class_certificate.inc:73 #, fuzzy msgid "Certificate is empty!" msgstr "Certificati" #: include/class_certificate.inc:100 msgid "Cannot load certificate: only PEM and DER are supported!" msgstr "" #: include/class_certificate.inc:115 #, fuzzy msgid "Cannot extract information for non PEM certificates!" msgstr "Rimuovi" #: include/class_certificate.inc:219 #, fuzzy msgid "No valid certificate loaded!" msgstr "Non ci sono certificati installati" #: include/class_session.inc:76 include/class_session.inc:101 #: include/class_session.inc:127 #, fuzzy msgid "Requested channel does not exist!" msgstr "" "Errore di connessione al server LDAP. Contatta l'amministratore del sistema." #: include/functions.inc:151 #, php-format msgid "Fatal error: no class locations defined - please run %s to fix this" msgstr "" #: include/functions.inc:158 #, php-format msgid "Fatal error: cannot instantiate class %s - try running %s to fix this" msgstr "" #: include/functions.inc:483 #, fuzzy, php-format msgid "Error while connecting to LDAP: %s" msgstr "Errore durante la connessione al server LDAP. Il server dice: '%s'" #: include/functions.inc:554 include/functions.inc:640 #, fuzzy msgid "User ID is not unique!" msgstr "" "Errore di connessione al server LDAP. Contatta l'amministratore del sistema." #: include/functions.inc:854 include/functions.inc:972 msgid "Error while locking entry!" msgstr "" #: include/functions.inc:864 #, fuzzy, php-format msgid "Cannot store lock information in LDAP!" msgstr "Rimuovi" #: include/functions.inc:864 #, fuzzy, php-format msgid "Error: %s" msgstr "Home Page" #: include/functions.inc:1294 #, php-format msgid "The current size limit of %d entries is exceeded!" msgstr "" #: include/functions.inc:1296 #, php-format msgid "Set the size limit to %s" msgstr "" #: include/functions.inc:1308 plugins/personal/generic/generic.tpl:218 msgid "Configure" msgstr "Configura" #: include/functions.inc:1313 #, fuzzy msgid "list is incomplete" msgstr "incompleto" #: include/functions.inc:1663 #, fuzzy msgid "Continue anyway" msgstr "Continua" #: include/functions.inc:1665 #, fuzzy msgid "Edit anyway" msgstr "Modifica contatto" #: include/functions.inc:1668 msgid "These entries are currently locked:" msgstr "" #: include/functions.inc:1909 msgid "Entries per page" msgstr "" #: include/functions.inc:2087 #, fuzzy, php-format msgid "GOsa %s" msgstr "Utenti di Dominio" #: include/functions.inc:2094 #, fuzzy, php-format msgid "GOsa %s snapshot (Rev %s)" msgstr "versione di sviluppo di GOsa (Rev %s)" #: include/functions.inc:2099 #, php-format msgid "GOsa development snapshot (Rev %s)" msgstr "versione di sviluppo di GOsa (Rev %s)" #: include/functions.inc:2195 #, php-format msgid "File %s cannot be deleted!" msgstr "" #: include/functions.inc:2225 include/functions.inc:2245 #, fuzzy msgid "Cannot write revision file!" msgstr "Rimuovi" #: include/functions.inc:2516 include/functions.inc:2520 #: include/functions.inc:2526 msgid "'baseIdHook' is not available. Using default base!" msgstr "" #: include/functions.inc:2550 msgid "" "Cannot read schema information from LDAP. Schema validation is not possible!" msgstr "" #: include/functions.inc:2576 msgid "This class is used to make users appear in GOsa." msgstr "" #: include/functions.inc:2583 msgid "" "This class is used to lock entries in order to prevent multiple edits at a " "time." msgstr "" #: include/functions.inc:2628 #, fuzzy, php-format msgid "Required object class %s is missing!" msgstr "Lista dei dipartimenti" #: include/functions.inc:2631 #, php-format msgid "Optional object class %s is missing!" msgstr "" #: include/functions.inc:2636 #, fuzzy, php-format msgid "Wrong version of required object class %s (!=%s) detected!" msgstr "Lista dei dipartimenti" #: include/functions.inc:2639 #, php-format msgid "Class available" msgstr "" #: include/functions.inc:2661 msgid "" "RFC2307bis schema is enabled, but the current LDAP configuration does not " "support it!" msgstr "" #: include/functions.inc:2662 msgid "" "To use RFC2307bis groups, the objectClass 'posixGroup' must be AUXILIARY." msgstr "" #: include/functions.inc:2666 msgid "" "RFC2307bis schema is disabled, but the current LDAP configuration supports " "it!" msgstr "" #: include/functions.inc:2667 msgid "To correct this, the objectClass 'posixGroup' must be STRUCTURAL." msgstr "" #: include/functions.inc:2692 msgid "German" msgstr "Tedesco" #: include/functions.inc:2693 msgid "French" msgstr "Francese" #: include/functions.inc:2694 msgid "Italian" msgstr "Italiano" #: include/functions.inc:2695 msgid "Spanish" msgstr "Spagnolo" #: include/functions.inc:2696 msgid "English" msgstr "Inglese" #: include/functions.inc:2697 msgid "Dutch" msgstr "Tedesco" #: include/functions.inc:2698 #, fuzzy msgid "Polish" msgstr "Inglese" #: include/functions.inc:2699 msgid "Brazilian Portuguese" msgstr "" #: include/functions.inc:2701 #, fuzzy msgid "Chinese" msgstr "reset" #: include/functions.inc:2702 #, fuzzy msgid "Vietnamese" msgstr "Nome" #: include/functions.inc:2703 msgid "Russian" msgstr "Russo" #: include/functions.inc:2896 #, fuzzy msgid "Cannot detect password hash!" msgstr "Impossibile selezionare il database!" #: include/functions.inc:2911 include/functions.inc:3085 msgid "Cannot generate SAMBA hash!" msgstr "" #: include/functions.inc:2942 include/functions.inc:3017 #, php-format msgid "Pre-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:2973 #, fuzzy msgid "Password change failed!" msgstr "Cambia la password" #: include/functions.inc:2981 #, php-format msgid "Post-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:3100 #, php-format msgid "Generating SAMBA hash by running %s failed: check %s!" msgstr "" #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3430 include/functions.inc:3442 #: include/functions.inc:3446 include/functions.inc:3461 #: include/functions.inc:3470 #, fuzzy msgid "Cannot allocate free ID:" msgstr "Troppi utenti non posso allocare un ID libero!" #: include/functions.inc:3378 msgid "unknown idAllocation method!" msgstr "" #: include/functions.inc:3392 #, php-format msgid "%sPoolMin >= %sPoolMax!" msgstr "" #: include/functions.inc:3422 #, fuzzy msgid "Cannot create sambaUnixIdPool entry!" msgstr "Vai al dipartimento base" #: include/functions.inc:3430 msgid "sambaUnixIdPool is not unique!" msgstr "" #: include/functions.inc:3442 include/functions.inc:3446 msgid "no ID available!" msgstr "" #: include/functions.inc:3470 msgid "maximum number of tries exceeded!" msgstr "" #: include/functions.inc:3530 #, fuzzy msgid "Cannot allocate free ID!" msgstr "Troppi utenti non posso allocare un ID libero!" #: include/class_filter.inc:158 include/class_filter.inc:228 #: ihtml/themes/default/help.tpl:21 setup/setup_ldap.tpl:15 msgid "Search" msgstr "Cerca" #: include/class_filter.inc:226 #, fuzzy msgid "Search filter" msgstr "Parametro" #: include/class_filter.inc:444 #, fuzzy msgid "Search in subtrees" msgstr "Seleziona per mostrare le applicazioni" #: include/class_filter.inc:449 #, fuzzy msgid "Edit filters" msgstr "Modifica certificati" #: include/class_ldap.inc:328 include/class_ldap.inc:365 msgid "Performance warning" msgstr "" #: include/class_ldap.inc:328 include/class_ldap.inc:365 #, php-format msgid "LDAP performance is poor: last query took %.2fs!" msgstr "" #: include/class_ldap.inc:807 #, php-format msgid "Cannot automatically create subtrees with RDN %s: no object class found" msgstr "" #: include/class_ldap.inc:858 #, php-format msgid "Cannot automatically create subtrees with RDN %s: not supported" msgstr "" #: include/class_ldap.inc:945 #, fuzzy, php-format msgid "while operating on %s using LDAP server %s" msgstr "Errore durante la connessione al server LDAP. Il server dice: '%s'" #: include/class_ldap.inc:947 #, fuzzy, php-format msgid "while operating on LDAP server %s" msgstr "Errore durante la connessione al server LDAP. Il server dice: '%s'" #: include/class_ldap.inc:1000 #, php-format msgid "Command line programm %s is missing!" msgstr "" #: include/class_ldap.inc:1161 #, php-format msgid "" "Invalid DN %s: block to be imported should start with 'dn: ...' in line %s" msgstr "" #: include/class_ldap.inc:1190 #, php-format msgid "Error while importing DN %s: please check LDIF from line %s on!" msgstr "" #: include/class_core.inc:113 include/class_core.inc:119 #: plugins/generic/references/class_aclResolver.inc:303 #, fuzzy msgid "All" msgstr "Annulla" #: include/class_core.inc:114 #, fuzzy msgid "All objects" msgstr "Oggetti membri" #: include/class_core.inc:132 #, fuzzy msgid "Traditional" msgstr "Terminali" #: include/class_core.inc:132 msgid "Use samba pool" msgstr "" #: include/class_core.inc:164 include/class_core.inc:167 #, fuzzy msgid "hours" msgstr "ora" #: include/class_core.inc:184 #, fuzzy msgid "None" msgstr "nessuno" #: include/class_core.inc:188 setup/class_setupStep_Language.inc:47 #, fuzzy msgid "Automatic" msgstr "automatico" #: include/class_core.inc:200 #, fuzzy msgid "User value" msgstr "Nome utente" #: include/class_core.inc:209 #, fuzzy msgid "Core" msgstr "Scegli" #: include/class_core.inc:210 #, fuzzy msgid "GOsa core plugin" msgstr "Opzioni di posta dell'identità" #: include/class_core.inc:238 msgid "" "Enables htaccess instead of LDAP authentication. This can be used to enable " "other authentication mechanisms like Kerberos for the GOsa login." msgstr "" #: include/class_core.inc:248 msgid "Enables the usage statistics module." msgstr "" #: include/class_core.inc:258 msgid "Database file to be used by the usage statistics module." msgstr "" #: include/class_core.inc:268 msgid "" "Enables event logging in GOsa. Setting it to 'On' make GOsa log every action " "a user performs via syslog. If you use this in combination with rsyslog and " "configure it to MySQL logging, you can browse all events in GOsa." msgstr "" #: include/class_core.inc:279 msgid "" "Enables a status bar on the bottom of lists displaying a summary of type and " "number of elements in the list." msgstr "" #: include/class_core.inc:289 msgid "Specify the minimum length for newly entered passwords." msgstr "" #: include/class_core.inc:299 msgid "" "Specify the minimum number of characters that have to differ between old and " "newly entered passwords." msgstr "" #: include/class_core.inc:309 msgid "" "Command to generate password proposals. If a command has been specified, the " "user can decide whether to use an automatic password or a manually specified " "one." msgstr "" #: include/class_core.inc:319 msgid "" "Enable display of PHP errors on the top of the page. Disable this feature in " "production environments to avoid the exposure of sensitive data." msgstr "" #: include/class_core.inc:319 #, fuzzy, php-format msgid "Related option" msgstr "Selezione le workstation da aggiungere" #: include/class_core.inc:329 msgid "" "Show messages that may assist plugin development. Be aware that this option " "may produce some ACL related false error messages!" msgstr "" #: include/class_core.inc:340 msgid "" "Enable LDAP schema verification during login. The recommended setting is " "'On' because it enables efficient methods to create missing subtrees in the " "LDAP." msgstr "" #: include/class_core.inc:350 msgid "Enable copy and paste for most objects managed by GOsa." msgstr "" #: include/class_core.inc:360 msgid "Enable PHP security checks for disabled register_global settings." msgstr "" #: include/class_core.inc:370 msgid "Enable automatic redirection to HTTPS based administration." msgstr "" #: include/class_core.inc:380 msgid "Enable logging of detailed information of LDAP operations." msgstr "" #: include/class_core.inc:390 #, fuzzy msgid "Enable LDAP referral chasing." msgstr "Elimina foto" #: include/class_core.inc:400 msgid "" "Specify LDAP element filter limit. If the limit is not 0, GOsa speeds up " "group queries by putting several queries into a single query. This is known " "to produce problems on some LDAP servers (i.e. Sun DS) and needs to be " "lowered or disabled." msgstr "" #: include/class_core.inc:410 msgid "" "Specify the maximum number of entries GOsa will request from an LDAP server. " "A warning is displayed if this limit is exceeded." msgstr "" #: include/class_core.inc:420 msgid "Disable checks for LDAP size limits." msgstr "" #: include/class_core.inc:430 msgid "Enable warnings for non encrypted connections." msgstr "" #: include/class_core.inc:440 msgid "Enable compression for PPD files." msgstr "" #: include/class_core.inc:451 msgid "" "DN of user with ACL checks disabled. This should only be used to restore " "lost administrative ACLs." msgstr "" #: include/class_core.inc:462 msgid "Storage path for PPD files." msgstr "" #: include/class_core.inc:472 msgid "" "Number of seconds a LDAP query is allowed to take until GOsa aborts the " "request." msgstr "" #: include/class_core.inc:482 msgid "Enables storing of user filters in browser cookies." msgstr "" #: include/class_core.inc:492 msgid "Enables sending of compressed web page content." msgstr "" #: include/class_core.inc:502 msgid "" "Allows to modify uid-proposals when creating a new user from a user-template." msgstr "" #: include/class_core.inc:513 msgid "LDAP attribute which is used to detect changes." msgstr "" #: include/class_core.inc:524 msgid "" "ISO language code which is used to override the automatic language detection." msgstr "" #: include/class_core.inc:535 msgid "CSS and template theme to be used." msgstr "" #: include/class_core.inc:545 msgid "" "Number of seconds after an inactive session expires. This may be overridden " "by some systems php.ini/crontab mechanism." msgstr "" #: include/class_core.inc:555 #, fuzzy msgid "Template engine compile directory." msgstr "Home directory" #: include/class_core.inc:565 #, php-format msgid "" "Logical AND of the integer values below that controls the debug output on " "every page load: %s" msgstr "" #: include/class_core.inc:586 msgid "" "Command to create Samba NT/LM hashes. Required for password synchronization " "if you don't use supplementary services." msgstr "" #: include/class_core.inc:597 msgid "Default hash to be used for newly created user passwords." msgstr "" #: include/class_core.inc:606 msgid "" "Enable checking for the presence of problematic unicode characters in " "passwords." msgstr "" #: include/class_core.inc:617 msgid "" "Specify whether 'cn' or 'uid' style user DNs are generated. For more " "sophisticated control use the 'accountRDN' setting." msgstr "" #: include/class_core.inc:627 msgid "Location component for user storage inside of departments." msgstr "" #: include/class_core.inc:637 msgid "Location component for group storage inside of departments." msgstr "" #: include/class_core.inc:647 msgid "" "Count base for group IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:657 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:667 msgid "" "Lowest assignable group ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:677 msgid "" "Highest assignable group ID for use with the idAllocationMethod set to " "'pool'." msgstr "" #: include/class_core.inc:687 msgid "" "Lowest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:697 msgid "" "Highest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:707 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'baseIdHook' " "setting." msgstr "" #: include/class_core.inc:717 msgid "Connection URL for use with the gosa-ng service." msgstr "" #: include/class_core.inc:727 msgid "User name used to connect to the 'gosaRpcServer'." msgstr "" #: include/class_core.inc:737 #, fuzzy msgid "Password used to connect to the 'gosaRpcServer'." msgstr "Impossibile connettersi al server del database!" #: include/class_core.inc:747 msgid "Connection URI for use with the gosa-si service (obsolete)." msgstr "" #: include/class_core.inc:757 msgid "Number of seconds after a gosa-si connection is considered 'dead'." msgstr "" #: include/class_core.inc:768 msgid "User attribute which is used for log in." msgstr "" #: include/class_core.inc:779 #, fuzzy msgid "Local time zone." msgstr "Località" #: include/class_core.inc:789 msgid "" "Enable tagging of administrative units. This can be used in conjunction with " "ACLs (obsolete)." msgstr "" #: include/class_core.inc:799 msgid "Enable the use of {sasl} instead of {kerberos} for user realms." msgstr "" #: include/class_core.inc:809 msgid "" "Enable RFC 2307bis style groups. This combines the use of 'member' and " "'memberUid' attributes." msgstr "" #: include/class_core.inc:819 msgid "" "Adjusts the user DN generation to include the users personal title (only in " "conjunction with accountPrimaryAttribute)." msgstr "" #: include/class_core.inc:829 msgid "Script to be called for finding the next free id for groups or users." msgstr "" #: include/class_core.inc:838 msgid "" "Descriptive string for the automatic ID generator. Please read the FAQ file " "for more information." msgstr "" #: include/class_core.inc:848 msgid "Enable strict checking for user IDs and group names." msgstr "" #: include/class_core.inc:858 msgid "" "Lowest assignable user or group ID. Only active if idAllocationMethod is set " "to 'traditional'." msgstr "" #: include/class_core.inc:869 msgid "Attribute to be used for primary mail addresses." msgstr "" #: include/class_core.inc:879 msgid "Namespace used for shared folders." msgstr "" #: include/class_core.inc:889 msgid "" "Namespace rule to create user folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:899 msgid "" "Namespace rule to create folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:909 msgid "Seconds after an IMAP connection is considered dead." msgstr "" #: include/class_core.inc:920 msgid "Class name of the mail method to be used." msgstr "" #: include/class_core.inc:930 msgid "" "Enable slashes instead of dots as a name space separator for Cyrus IMAP." msgstr "" #: include/class_core.inc:940 msgid "" "Directory to store vacation templates. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:950 #, fuzzy msgid "Enable TLS for LDAP connections." msgstr "Disconnessione " #: include/class_core.inc:960 msgid "Enable IVBB used by german authorities." msgstr "" #: include/class_core.inc:970 msgid "" "Maintain sambaIdmapEntry objects to improve performance on some Samba " "versions." msgstr "" #: include/class_core.inc:980 msgid "Enable checks to determine whether an account is expired or not." msgstr "" #: include/class_core.inc:990 msgid "" "String containing the SID for Samba setups without the Domain object in LDAP." msgstr "" #: include/class_core.inc:1000 msgid "" "String containing the RID base for Samba setups without the Domain object in " "LDAP." msgstr "" #: include/class_core.inc:1010 #, fuzzy msgid "Enable manual object snapshots." msgstr "Gruppo di oggetti" #: include/class_core.inc:1020 msgid "Base DN for snapshot storage." msgstr "" #: include/class_core.inc:1030 #, fuzzy msgid "DN of the snapshot administrator." msgstr "Amministratori di Dominio" #: include/class_core.inc:1040 msgid "Password of the snapshot administrator." msgstr "" #: include/class_core.inc:1051 msgid "" "Method for user and group ID generation. Note: only the 'traditional' method " "is safe due to PHP limitations." msgstr "" #: include/class_core.inc:1060 msgid "URI of server to be used for snapshots." msgstr "" #: include/class_core.inc:1069 msgid "Enable transliteration of cyrillic characters for UID generation." msgstr "" #: include/class_config.inc:168 #, php-format msgid "XML error in gosa.conf: %s at line %d" msgstr "" #: include/class_config.inc:367 msgid "Cannot bind to LDAP!" msgstr "" #: include/class_config.inc:713 #, fuzzy msgid "sambaSID and/or sambaRidBase missing in the configuration!" msgstr "Scarica il file di configurazione" #: include/class_config.inc:1132 #, fuzzy msgid "Configuration" msgstr "File di configurazione" #: include/class_config.inc:1132 msgid "" "The configuration file you are using is outdated. Please move the GOsa " "configuration file away to run the GOsa setup again." msgstr "" #: include/class_config.inc:1174 include/class_config.inc:1205 #, php-format msgid "" "The snapshot functionality is enabled, but the required variable %s is not " "set." msgstr "" #: include/class_config.inc:1187 #, php-format msgid "" "The snapshot functionality is enabled, but the required compression module " "is missing. Please install %s." msgstr "" #: include/exporter/class_PDF.inc:24 #, fuzzy msgid "Page" msgstr "Pager" #: include/exporter/class_cvsExporter.inc:48 msgid "CSV" msgstr "" #: include/exporter/class_pdfExporter.inc:18 msgid "No PDF export possible: there is no FPDF library installed." msgstr "" #: include/exporter/class_pdfExporter.inc:145 msgid "PDF" msgstr "" #: include/class_jsonRPC.inc:38 #, fuzzy, php-format msgid "The RPC connection (%s) specified for %s:%s is invalid: %s" msgstr "Il valore specificato per l'UID non è valido." #: include/class_jsonRPC.inc:333 #, fuzzy, php-format msgid "Unknown HTTP status code %s!" msgstr "ACL" #: include/class_ItemSelector.inc:299 include/class_baseSelector.inc:235 #: include/class_releaseSelector.inc:262 msgid "Submit" msgstr "" #: include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #, fuzzy, php-format msgid "Copy and paste failed!" msgstr "Nome applicazione" #: include/class_CopyPasteHandler.inc:118 #, fuzzy, php-format msgid "Cannot set permission for %s" msgstr "Rimuovi" #: include/class_CopyPasteHandler.inc:159 #, php-format msgid "'%s' is no valid LDAP object" msgstr "" #: include/class_CopyPasteHandler.inc:176 #, fuzzy, php-format msgid "No write permission in '%s'" msgstr "Rimuovi" #: include/class_CopyPasteHandler.inc:193 #, fuzzy, php-format msgid "Cannot set permission for '%s'" msgstr "Rimuovi" #: include/class_CopyPasteHandler.inc:396 #, php-format msgid "These objects will be pasted: %s" msgstr "" #: include/class_CopyPasteHandler.inc:420 #, php-format msgid "This object will be pasted: %s" msgstr "" #: include/class_CopyPasteHandler.inc:573 #, fuzzy msgid "Cannot paste" msgstr "Crea estensioni telefoniche" #: include/class_acl.inc:27 plugins/admin/acl/class_aclManagement.inc:25 #, fuzzy msgid "Access control" msgstr "Opzioni di accesso" #: include/class_acl.inc:28 #, fuzzy msgid "Manage access control lists" msgstr "Opzioni di accesso" #: include/class_acl.inc:126 include/class_acl.inc:550 #: include/class_acl.inc:554 include/class_acl.inc:708 #: include/class_acl.inc:1138 include/class_acl.inc:1259 #, fuzzy, php-format msgid "All users" msgstr "utenti" #: include/class_acl.inc:229 #: plugins/generic/references/class_aclResolver.inc:63 msgid "Reset ACLs" msgstr "" #: include/class_acl.inc:230 plugins/admin/acl/class_aclRole.inc:139 #: plugins/generic/references/class_aclResolver.inc:64 msgid "One level" msgstr "" #: include/class_acl.inc:231 include/class_acl.inc:236 #: plugins/admin/acl/class_aclRole.inc:140 #: plugins/generic/references/class_aclResolver.inc:65 #, fuzzy msgid "Current object" msgstr "Password attuale" #: include/class_acl.inc:232 plugins/admin/acl/class_aclRole.inc:141 #: plugins/generic/references/class_aclResolver.inc:66 #, fuzzy msgid "Complete subtree" msgstr "incompleto" #: include/class_acl.inc:233 plugins/admin/acl/class_aclRole.inc:142 #: plugins/generic/references/class_aclResolver.inc:67 msgid "Complete subtree (permanent)" msgstr "" #: include/class_acl.inc:234 include/class_acl.inc:237 #: plugins/generic/references/class_aclResolver.inc:68 msgid "Use ACL defined in role" msgstr "" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:297 #: plugins/personal/generic/class_user.inc:1676 #: plugins/admin/users/class_userManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:185 msgid "Users" msgstr "Utenti" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:300 #: plugins/admin/groups/class_group.inc:1060 #: plugins/admin/groups/class_groupManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:177 msgid "Groups" msgstr "Gruppi di utenti" #: include/class_acl.inc:255 #, fuzzy msgid "Section" msgstr "Azione" #: include/class_acl.inc:265 #, fuzzy msgid "Used" msgstr "Utenti" #: include/class_acl.inc:277 plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "~" msgstr "" #: include/class_acl.inc:293 plugins/admin/ogroups/class_ogroup.inc:889 #, fuzzy msgid "Member" msgstr "Membri" #: include/class_acl.inc:293 plugins/admin/acl/class_aclRole.inc:182 #: plugins/admin/acl/class_aclRole.inc:744 #, fuzzy msgid "Permissions" msgstr "Permessi" #: include/class_acl.inc:555 include/class_acl.inc:1260 msgid "Pseudo-group for all users." msgstr "" #: include/class_acl.inc:669 #, fuzzy msgid "No ACL settings for this category!" msgstr "Nome descrittivo del gruppo" #: include/class_acl.inc:672 #, php-format msgid "ACLs for: %s" msgstr "" #: include/class_acl.inc:678 include/class_acl.inc:682 #, fuzzy msgid "category ACL" msgstr "classe" #: include/class_acl.inc:744 #, php-format msgid "Edit ACL for '%s' with scope '%s'" msgstr "" #: include/class_acl.inc:906 include/class_acl.inc:913 #, fuzzy msgid "Show/hide advanced settings" msgstr "Opzioni di posta avanzate" #: include/class_acl.inc:924 #, fuzzy msgid "Create objects" msgstr "Gruppo di oggetti" #: include/class_acl.inc:925 #, fuzzy msgid "Move objects" msgstr "Oggetti membri" #: include/class_acl.inc:926 #, fuzzy msgid "Remove objects" msgstr "Oggetti membri" #: include/class_acl.inc:928 #: plugins/generic/references/class_aclResolver.inc:307 msgid "Restrict changes to user's own object" msgstr "" #: include/class_acl.inc:932 include/class_acl.inc:1041 #: include/class_acl.inc:1045 #: plugins/generic/references/class_aclResolver.inc:309 msgid "read" msgstr "leggere" #: include/class_acl.inc:933 include/class_acl.inc:1043 #: include/class_acl.inc:1046 #: plugins/generic/references/class_aclResolver.inc:310 msgid "write" msgstr "scrivere" #: include/class_acl.inc:937 #, fuzzy msgid "Complete object" msgstr "Gruppo di oggetti" #: include/class_acl.inc:1089 #, fuzzy, php-format msgid "Unknown ACL type '%s'!" msgstr "ACL" #: include/class_acl.inc:1134 #, php-format msgid "Unknown entry '%s'!" msgstr "" #: include/class_acl.inc:1198 include/class_acl.inc:1200 #, fuzzy, php-format msgid "ACL role: %s" msgstr "ACL" #: include/class_acl.inc:1200 #, fuzzy msgid "unknown ACL role" msgstr "ACL" #: include/class_acl.inc:1208 #, fuzzy, php-format msgid "Contains settings for these objects: %s" msgstr "Nome descrittivo del gruppo" #: include/class_acl.inc:1219 ihtml/themes/default/acl.tpl:53 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "Members" msgstr "Membri" #: include/class_acl.inc:1225 #, fuzzy msgid "inactive" msgstr "Privato" #: include/class_acl.inc:1225 #, fuzzy msgid "No members" msgstr "Membri del gruppo" #: include/class_acl.inc:1429 #, fuzzy msgid "Access control list" msgstr "Opzioni di accesso" #: include/class_acl.inc:1435 #, fuzzy msgid "ACL roles" msgstr "ACL" #: include/class_acl.inc:1438 #, fuzzy msgid "ACL Entries" msgstr "Riferimenti" #: include/class_socketClient.inc:108 #, php-format msgid "Socket connection to %s:%s failed: %s" msgstr "" #: include/class_socketClient.inc:191 #, php-format msgid "Socket timeout of %s seconds reached!" msgstr "" #: include/class_userFilterEditor.inc:254 #, php-format msgid "Error in filter #%s: %s opening and %s closing brackets detected!" msgstr "" #: include/class_gosaSupportDaemon.inc:112 msgid "GOsa support daemon" msgstr "" #: include/class_gosaSupportDaemon.inc:787 #, fuzzy msgid "Cannot not parse XML!" msgstr "Troppi utenti non posso allocare un ID libero!" #: include/class_gosaSupportDaemon.inc:1184 #, fuzzy, php-format msgid "Cannot send abort event for entry %s!" msgstr "Rimuovi" #: include/class_gosaSupportDaemon.inc:1204 #, php-format msgid "Cannot remove entry %s!" msgstr "" #: include/class_GOsaRegistration.inc:127 msgid "" "UNIX-timestamp pointing to the date GOsa will ask for a registration again " "(-1 to disable)" msgstr "" #: include/class_SnapshotHandler.inc:45 include/class_SnapshotHandler.inc:76 #, php-format msgid "" "The snapshot functionality is enabled but the required variable %s is not " "set!" msgstr "" #: include/class_SnapshotHandler.inc:58 #, php-format msgid "" "The snapshot functionality is enabled but the required PHP compression " "module is missing: %s!" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:1 #: ihtml/themes/default/userFilterEditor.tpl:5 #, fuzzy msgid "Filter editor" msgstr "Terminal Server" #: ihtml/themes/default/userFilterEditor.tpl:8 #, fuzzy msgid "Filter properties" msgstr "Modifica proprietà" #: ihtml/themes/default/userFilterEditor.tpl:40 #: plugins/personal/generic/class_user.inc:1664 #: plugins/personal/generic/generic.tpl:604 msgid "Public visible" msgstr "Pubblico" #: ihtml/themes/default/userFilterEditor.tpl:45 #, fuzzy msgid "Enabled" msgstr "disabilitato" #: ihtml/themes/default/userFilterEditor.tpl:49 msgid "Categories where the filter is visible" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:69 #, fuzzy msgid "Query" msgstr "utenti" #: ihtml/themes/default/acl.tpl:7 plugins/admin/acl/acl_role.tpl:3 #: plugins/admin/acl/acl_role.tpl:4 msgid "Assigned ACL for current entry" msgstr "" #: ihtml/themes/default/acl.tpl:10 plugins/admin/acl/acl_role.tpl:38 #, fuzzy msgid "New ACL" msgstr "Nuovo" #: ihtml/themes/default/acl.tpl:19 plugins/admin/acl/acl_role.tpl:45 #, fuzzy msgid "ACL type" msgstr "Tipo" #: ihtml/themes/default/acl.tpl:23 ihtml/themes/default/acl.tpl:28 #: plugins/admin/acl/acl_role.tpl:45 #, fuzzy msgid "Select an ACL type" msgstr "Rimuovi" #: ihtml/themes/default/acl.tpl:40 #, fuzzy msgid "Additional filter options" msgstr "Opzioni applicazione" #: ihtml/themes/default/acl.tpl:61 #, fuzzy msgid "Add all users" msgstr "utenti" #: ihtml/themes/default/acl.tpl:68 plugins/admin/acl/acl_role.tpl:51 #, fuzzy msgid "List of available ACL categories" msgstr "Scegli il tuo numero di telefono personale" #: ihtml/themes/default/acl.tpl:76 #, fuzzy msgid "ACL for this object" msgstr "Controllo il supporto per iconv" #: ihtml/themes/default/acl.tpl:82 #, fuzzy msgid "Available roles" msgstr "Applicazioni disponibili" #: ihtml/themes/default/removeEntries.tpl:4 #: plugins/addons/propertyEditor/property-list.tpl:7 #, fuzzy msgid "Attention" msgstr "Destinazione" #: ihtml/themes/default/removeEntries.tpl:14 #, fuzzy msgid "" "If you're sure you want to do this press 'Delete' to continue or 'Cancel' to " "abort." msgstr "" "Quindi - Se sei sicuro - premi Rimuovi per continuare o Annulla per abortire." #: ihtml/themes/default/userFilter.tpl:1 #, fuzzy msgid "List of defined filters" msgstr "File di configurazione" #: ihtml/themes/default/snapshotdialog.tpl:3 #, fuzzy msgid "Restoring object snapshots" msgstr "Gruppo di oggetti" #: ihtml/themes/default/snapshotdialog.tpl:6 msgid "" "This procedure will restore a snapshot of the selected object. It will " "replace the existing object after pressing the restore button." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:9 msgid "" "DNS configuration and some database entries cannot be restored. They need to " "be recreated manually." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:12 msgid "" "Don't forget to check references to other objects, for example does the " "selected printer still exists ?" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:29 msgid "There is no snapshot available that can be restored" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:31 msgid "Choose a snapshot and click the folder image, to restore the snapshot" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:50 #, fuzzy msgid "Creating object snapshots" msgstr "Gruppo di oggetti" #: ihtml/themes/default/snapshotdialog.tpl:53 msgid "" "This procedure will create a snapshot of the selected object. It will be " "stored inside a special branch of your directory system and can be restored " "later on." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:56 msgid "" "Remember that database entries, DNS configurations and possibly created " "zones in server extensions will not be stored in the snapshot." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:71 #, fuzzy msgid "Time stamp" msgstr "Timeout" #: ihtml/themes/default/snapshotdialog.tpl:80 msgid "Reason for generating this snapshot" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:88 #: plugins/admin/departments/class_department.inc:564 #: plugins/admin/departments/class_department.inc:646 #: plugins/admin/users/template.tpl:60 msgid "Continue" msgstr "Continua" #: ihtml/themes/default/password.tpl:5 #, fuzzy msgid "Change your password" msgstr "Cambia la password" #: ihtml/themes/default/password.tpl:61 msgid "Your password has been changed successfully." msgstr "" #: ihtml/themes/default/password.tpl:65 html/main.php:220 #: plugins/personal/password/class_password.inc:160 #: plugins/personal/password/class_password.inc:163 #: plugins/personal/password/class_password.inc:166 #: plugins/admin/users/class_userManagement.inc:400 #, fuzzy msgid "Password change" msgstr "Cambia la password" #: ihtml/themes/default/password.tpl:72 msgid "" "Enter the current password and the new password (twice) in the fields below " "and press the 'Set password' button." msgstr "" #: ihtml/themes/default/password.tpl:74 #: plugins/personal/password/class_password.inc:26 #: plugins/admin/users/user-list.xml:128 plugins/admin/users/user-list.xml:230 msgid "Change password" msgstr "Cambia la password" #: ihtml/themes/default/password.tpl:77 ihtml/themes/default/password.tpl:79 msgid "Directory" msgstr "Directory" #: ihtml/themes/default/password.tpl:86 ihtml/themes/default/password.tpl:90 #: ihtml/themes/default/login.tpl:37 ihtml/themes/default/login.tpl:40 #, fuzzy msgid "User name" msgstr "Nome utente" #: ihtml/themes/default/password.tpl:97 #: plugins/personal/myaccount/password.tpl:12 #: plugins/personal/myaccount/password.tpl:41 #: plugins/personal/password/password.tpl:18 #: plugins/personal/password/password.tpl:47 msgid "Current password" msgstr "Password attuale" #: ihtml/themes/default/password.tpl:103 #: plugins/personal/myaccount/password.tpl:18 #: plugins/personal/myaccount/password.tpl:71 #: plugins/personal/password/password.tpl:24 #: plugins/personal/password/password.tpl:78 #: plugins/admin/users/password.tpl:13 plugins/admin/users/password.tpl:65 #: plugins/admin/users/class_userManagement.inc:319 msgid "New password" msgstr "Nuova password" #: ihtml/themes/default/password.tpl:110 #: plugins/personal/myaccount/password.tpl:25 #: plugins/personal/myaccount/password.tpl:78 #: plugins/personal/password/password.tpl:31 #: plugins/personal/password/password.tpl:85 #: plugins/admin/users/password.tpl:20 plugins/admin/users/password.tpl:72 msgid "Repeat new password" msgstr "Ripeti la password" #: ihtml/themes/default/password.tpl:117 #: plugins/personal/myaccount/password.tpl:31 #: plugins/personal/myaccount/password.tpl:84 #: plugins/personal/password/password.tpl:37 #: plugins/personal/password/password.tpl:91 #, fuzzy msgid "Password strength" msgstr "Algorimo password" #: ihtml/themes/default/password.tpl:131 #, fuzzy msgid "Click here to change your password" msgstr "Non hai il permesso di cambiare la tua password." #: ihtml/themes/default/password.tpl:131 #: plugins/personal/myaccount/password.tpl:96 #: plugins/personal/password/password.tpl:103 #: plugins/admin/users/password.tpl:101 msgid "Set password" msgstr "Cambia password" #: ihtml/themes/default/islocked.tpl:4 msgid "Locking conflict detected" msgstr "Rilevato un conflitto di accesso" #: ihtml/themes/default/islocked.tpl:14 msgid "" "If this lock detection is false, the other person has obviously closed the " "web browser during the edit operation. You may want to take over the lock by " "pressing the 'Edit anyway' button." msgstr "" #: ihtml/themes/default/islocked.tpl:23 msgid "Read only" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:1 msgid "Copy & paste wizard" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:7 msgid "" "Some values need to be unique in the complete directory while some " "combinations make no sense. Please edit the values below to fulfill the " "policies." msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:9 msgid "Remember that some properties like taken snapshots will not be copied!" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:10 msgid "" "Or if you copy or cut an entry within GOsa and delete the source object, you " "may get errors while pasting this object again!" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:23 #, fuzzy msgid "Cancel all" msgstr "Annulla" #: ihtml/themes/default/copyPasteDialog.tpl:28 #, fuzzy msgid "Operation complete" msgstr "incompleto" #: ihtml/themes/default/copyPasteDialog.tpl:30 #: setup/class_setupStep_Finish.inc:39 msgid "Finish" msgstr "Esegui" #: ihtml/themes/default/logout.tpl:6 msgid "Your GOsa session has expired!" msgstr "" #: ihtml/themes/default/logout.tpl:9 msgid "" "It has been a while since your last interaction with GOsa took place. Your " "session has been closed for security reasons. Please login again to continue " "with administrative tasks." msgstr "" #: ihtml/themes/default/logout.tpl:16 #, fuzzy msgid "Login again" msgstr "Entra" #: ihtml/themes/default/login.tpl:31 #, fuzzy msgid "Login to GOsa" msgstr "Benvenuto nel setup di GOsa!" #: ihtml/themes/default/login.tpl:47 setup/setup_migrate.tpl:53 #: plugins/personal/generic/paste_generic.tpl:21 #: plugins/generic/dashBoard/Register/register.tpl:53 msgid "Password" msgstr "Password" #: ihtml/themes/default/login.tpl:61 msgid "Choose the directory to work on" msgstr "" #: ihtml/themes/default/login.tpl:66 msgid "Click here to log in" msgstr "Clicca qui per connetterti" #: ihtml/themes/default/login.tpl:66 ihtml/themes/default/login.tpl:67 #, fuzzy msgid "Log in" msgstr "Nome utente" #: ihtml/themes/default/sizelimit.tpl:3 msgid "" "The size limit option makes LDAP operations faster and saves the LDAP server " "from getting too much load. The easiest way to handle big databases without " "long timeouts would be to limit your search to smaller values and use " "filters to get the entries you are looking for." msgstr "" #: ihtml/themes/default/sizelimit.tpl:8 msgid "Please choose the way to react for this session" msgstr "" #: ihtml/themes/default/sizelimit.tpl:10 msgid "ignore this error and show all entries the LDAP server returns" msgstr "" #: ihtml/themes/default/sizelimit.tpl:11 msgid "" "ignore this error and show all entries that fit into the defined size limit" msgstr "" #: ihtml/themes/default/infoPage.tpl:4 #, fuzzy msgid "User information" msgstr "Informazioni personali" #: ihtml/themes/default/infoPage.tpl:17 setup/setup_migrate.tpl:49 #: plugins/personal/posix/class_posixAccount.inc:1369 msgid "User ID" msgstr "" #: ihtml/themes/default/infoPage.tpl:18 #: plugins/personal/generic/class_user.inc:1702 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:48 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:48 #: plugins/admin/users/user-list.xml:49 #: plugins/generic/references/class_reference.inc:87 msgid "Surname" msgstr "Cognome" #: ihtml/themes/default/infoPage.tpl:19 #: plugins/personal/generic/class_user.inc:1326 #: plugins/personal/generic/class_user.inc:1373 #: plugins/personal/generic/class_user.inc:1703 #: plugins/personal/generic/class_user.inc:1857 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:40 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:40 #: plugins/admin/users/class_userManagement.inc:552 #: plugins/admin/users/user-list.xml:57 #: plugins/generic/references/class_reference.inc:87 msgid "Given name" msgstr "Nome" #: ihtml/themes/default/infoPage.tpl:20 #: plugins/personal/generic/class_user.inc:1708 #: plugins/personal/generic/generic.tpl:92 msgid "Personal title" msgstr "Titolo onorifico" #: ihtml/themes/default/infoPage.tpl:21 #: plugins/personal/generic/class_user.inc:1709 #: plugins/personal/generic/generic.tpl:102 msgid "Academic title" msgstr "Titolo di studio" #: ihtml/themes/default/infoPage.tpl:22 #: plugins/personal/generic/class_user.inc:1737 msgid "Home postal address" msgstr "" #: ihtml/themes/default/infoPage.tpl:23 #: plugins/personal/generic/class_user.inc:1368 #: plugins/personal/generic/class_user.inc:1711 #: plugins/personal/generic/generic.tpl:117 msgid "Date of birth" msgstr "Data di nascita" #: ihtml/themes/default/infoPage.tpl:24 #: plugins/admin/groups/class_groupManagement.inc:165 #: plugins/admin/ogroups/tabs_ogroups.inc:155 #: plugins/admin/users/class_userManagement.inc:897 #: plugins/generic/infoPage/class_infoPage.inc:112 msgid "Mail" msgstr "Posta" #: ihtml/themes/default/infoPage.tpl:25 #: plugins/personal/generic/class_user.inc:1738 #, fuzzy msgid "Home phone number" msgstr "Numero di telefono" #: ihtml/themes/default/infoPage.tpl:30 setup/setup_feedback.tpl:10 #: setup/setup_feedback.tpl:12 plugins/personal/generic/class_user.inc:1720 #: plugins/personal/generic/generic.tpl:298 #: plugins/admin/departments/dep-filter.xml:91 #: plugins/admin/departments/dep-list.xml:47 #: plugins/admin/departments/dep-list.xml:131 #: plugins/admin/departments/organization.tpl:4 #: plugins/admin/departments/class_organizationGeneric.inc:113 #: plugins/admin/departments/class_organizationGeneric.inc:114 #: plugins/admin/departments/class_departmentManagement.inc:241 msgid "Organization" msgstr "Organizzazione" #: ihtml/themes/default/infoPage.tpl:31 #: plugins/admin/departments/dep-filter.xml:35 #: plugins/admin/departments/generic.tpl:4 #, fuzzy msgid "Organizational Unit" msgstr "Unità del'organizzazione" #: ihtml/themes/default/infoPage.tpl:32 #: plugins/personal/generic/class_user.inc:1734 #: plugins/personal/generic/generic.tpl:436 #: plugins/admin/departments/organization.tpl:82 #: plugins/admin/departments/organization.tpl:94 #: plugins/admin/departments/class_department.inc:680 #: plugins/admin/departments/class_organizationGeneric.inc:130 #: plugins/admin/departments/generic.tpl:83 #: plugins/admin/departments/generic.tpl:85 #: plugins/admin/departments/generic.tpl:95 #: plugins/admin/departments/class_localityGeneric.inc:91 msgid "Location" msgstr "Località" #: ihtml/themes/default/infoPage.tpl:33 #: plugins/personal/generic/class_user.inc:1665 #: plugins/personal/generic/generic.tpl:535 msgid "Street" msgstr "Strada" #: ihtml/themes/default/infoPage.tpl:34 #: plugins/personal/generic/class_user.inc:1722 #, fuzzy msgid "Department number" msgstr "Dipartimento" #: ihtml/themes/default/infoPage.tpl:36 #: plugins/personal/generic/class_user.inc:1724 #, fuzzy msgid "Employee number" msgstr "Qualifica" #: ihtml/themes/default/infoPage.tpl:37 #: plugins/personal/generic/class_user.inc:1725 #: plugins/personal/generic/generic.tpl:330 msgid "Employee type" msgstr "Qualifica" #: ihtml/themes/default/infoPage.tpl:48 #: plugins/personal/generic/paste_generic.tpl:1 #, fuzzy msgid "User settings" msgstr "Opzioni di posta dell'identità" #: ihtml/themes/default/infoPage.tpl:55 #, fuzzy msgid "" "You have no permission to edit any properties. Please contact your " "administrator." msgstr "" "Errore di connessione al server LDAP. Contatta l'amministratore del sistema." #: ihtml/themes/default/infoPage.tpl:61 #, fuzzy msgid "Administrative contact" msgstr "Amministrazione" #: ihtml/themes/default/infoPage.tpl:72 plugins/generic/welcome/welcome.tpl:8 msgid "The GOsa team" msgstr "Il team di GOsa" #: ihtml/themes/default/msg_dialog.tpl:55 #: ihtml/themes/default/msg_dialog.tpl:103 msgid "Error message title" msgstr "" #: ihtml/themes/default/msg_dialog.tpl:66 #: ihtml/themes/default/msg_dialog.tpl:115 #, fuzzy msgid "Error message" msgstr "Home Page" #: ihtml/themes/default/ldifViewer.tpl:1 msgid "Raw LDAP entry" msgstr "" #: ihtml/themes/default/framework.tpl:9 #, fuzzy msgid "Log out" msgstr "Termina sessione" #: ihtml/themes/default/framework.tpl:10 msgid "" "You are currently editing a database entry. Do you want to dismiss the " "changes?" msgstr "" "Stai modificando un campo del database. Vuoi abbandonare i cambiamenti?" #: ihtml/themes/default/framework.tpl:22 #, fuzzy, php-format msgid "Session expires in %d!" msgstr "Rilevato un conflitto di sessione" #: ihtml/themes/default/help.tpl:9 msgid "GOsa help viewer" msgstr "" #: ihtml/themes/default/help.tpl:15 msgid "Index" msgstr "" #: ihtml/themes/default/logout-close.tpl:5 msgid "Your GOsa session has been closed!" msgstr "" #: ihtml/themes/default/logout-close.tpl:7 msgid "" "Please close this browser window and clean the authentication caches to " "avoid an automatic re-authentication by your browser." msgstr "" #: setup/class_setupStep_Migrate.inc:51 setup/class_setupStep_Migrate.inc:52 #, fuzzy msgid "LDAP inspection" msgstr "Ispezione della configurazione PHP" #: setup/class_setupStep_Migrate.inc:53 msgid "Analyze your current LDAP for GOsa compatibility" msgstr "" #: setup/class_setupStep_Migrate.inc:59 #, fuzzy msgid "Checking for root object" msgstr "Controllo il supporto per iconv" #: setup/class_setupStep_Migrate.inc:65 #, fuzzy msgid "Inspecting object classes in root object" msgstr "Controllo il supporto per iconv" #: setup/class_setupStep_Migrate.inc:71 #, fuzzy msgid "Checking permission for LDAP database" msgstr "Non hai il permesso di cambiare la tua password." #: setup/class_setupStep_Migrate.inc:78 #, fuzzy msgid "Checking for super administrator" msgstr "Controllo la presenza di alcuni programmi addizionali" #: setup/class_setupStep_Migrate.inc:118 setup/class_setupStep_Migrate.inc:186 #: setup/class_setupStep_Migrate.inc:709 #, fuzzy msgid "LDAP query failed" msgstr "La query al database è fallita!" #: setup/class_setupStep_Migrate.inc:119 setup/class_setupStep_Migrate.inc:187 #: setup/class_setupStep_Migrate.inc:710 msgid "Possibly the 'root object' is missing." msgstr "" #: setup/class_setupStep_Migrate.inc:132 setup/class_setupStep_Migrate.inc:145 #: setup/class_setupStep_Migrate.inc:307 setup/class_setupStep_Migrate.inc:661 #: setup/class_setupStep_Migrate.inc:674 setup/class_setupStep_Migrate.inc:729 #: setup/class_setupStep_Migrate.inc:750 setup/class_setupStep_Migrate.inc:802 msgid "Failed" msgstr "Fallito" #: setup/class_setupStep_Migrate.inc:134 setup/class_setupStep_Migrate.inc:147 #, php-format msgid "" "The specified user '%s' does not have full access to your LDAP database." msgstr "" #: setup/class_setupStep_Migrate.inc:308 msgid "There is no GOsa administrator account inside your LDAP." msgstr "" #: setup/class_setupStep_Migrate.inc:309 #: plugins/admin/groups/group-list.xml:73 #: plugins/admin/ogroups/ogroup-list.xml:73 plugins/admin/acl/acl-list.xml:76 #: plugins/admin/departments/dep-list.xml:98 #: plugins/admin/users/user-list.xml:89 msgid "Create" msgstr "Creare" #: setup/class_setupStep_Migrate.inc:377 #, fuzzy msgid "Migration error" msgstr "Creare" #: setup/class_setupStep_Migrate.inc:377 #, php-format msgid "Cannot add ACL for user '%s':" msgstr "" #: setup/class_setupStep_Migrate.inc:415 setup/class_setupStep_Migrate.inc:425 #, fuzzy msgid "Input error" msgstr "Errore PHP" #: setup/class_setupStep_Migrate.inc:415 #: plugins/personal/posix/paste_generic.tpl:38 #: plugins/personal/posix/generic.tpl:64 #: plugins/personal/posix/class_posixAccount.inc:910 #: plugins/personal/posix/class_posixAccount.inc:913 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/generic/references/class_reference.inc:87 msgid "UID" msgstr "UID" #: setup/class_setupStep_Migrate.inc:420 #, fuzzy msgid "Password error" msgstr "La password spira il" #: setup/class_setupStep_Migrate.inc:420 #, fuzzy msgid "Provided passwords do not match!" msgstr "Le password nuova e ripetuta non corrispondono" #: setup/class_setupStep_Migrate.inc:425 #, fuzzy msgid "Specify a valid user ID!" msgstr "Prego inserire un numero di telefono valido!" #: setup/class_setupStep_Migrate.inc:450 #, php-format msgid "Adding an administrative user failed: object '%s' already exists!" msgstr "" #: setup/class_setupStep_Migrate.inc:662 msgid "" "The LDAP root object is missing. It is required to use your LDAP service." msgstr "" #: setup/class_setupStep_Migrate.inc:663 setup/class_setupStep_Migrate.inc:676 #, fuzzy msgid "Try to create root object" msgstr "Gruppo di oggetti" #: setup/class_setupStep_Migrate.inc:675 msgid "Root object couldn't be created, you should try it on your own." msgstr "" #: setup/class_setupStep_Migrate.inc:730 #, fuzzy, php-format msgid "Missing GOsa object class '%s'!" msgstr "Lista dei dipartimenti" #: setup/class_setupStep_Migrate.inc:731 msgid "Please check your installation." msgstr "" #: setup/class_setupStep_Migrate.inc:752 #, php-format msgid "" "Cannot handle the structural object type of your root object. Please try to " "add the object class '%s' manually." msgstr "" #: setup/class_setupStep_Migrate.inc:804 setup/setup_migrate.tpl:32 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:181 #, fuzzy msgid "Migrate" msgstr "Creare" #: setup/setup_checks.tpl:2 msgid "" "This step checks if your PHP server has all required modules and " "configuration settings." msgstr "" #: setup/setup_checks.tpl:5 #, fuzzy msgid "Inspection" msgstr "Ispezione della configurazione PHP" #: setup/setup_checks.tpl:8 msgid "PHP module and extension checks" msgstr "" #: setup/setup_checks.tpl:10 msgid "Basic checks" msgstr "" #: setup/setup_checks.tpl:38 setup/setup_checks.tpl:79 msgid "GOsa will NOT run without fixing this." msgstr "" #: setup/setup_checks.tpl:40 setup/setup_checks.tpl:81 msgid "GOsa will run without fixing this." msgstr "" #: setup/setup_checks.tpl:50 #, fuzzy msgid "PHP setup configuration" msgstr "Scarica il file di configurazione" #: setup/setup_checks.tpl:50 #, fuzzy msgid "show information" msgstr "Informazioni personali" #: setup/setup_checks.tpl:51 msgid "Extended checks" msgstr "" #: setup/class_setupStep_Finish.inc:40 #, fuzzy msgid "Write configuration file" msgstr "File di configurazione" #: setup/class_setupStep_Finish.inc:41 #, fuzzy msgid "Finish - write the configuration file" msgstr "File di configurazione" #: setup/class_setupStep_Finish.inc:106 #, fuzzy msgid "" "Your configuration file is currently world readable. Please update the file " "permissions!" msgstr "Il file di configurazione di GOsa %s/gosa.conf non è legibile." #: setup/class_setupStep_Finish.inc:108 #, fuzzy msgid "The configuration is currently not readable or it does not exists." msgstr "Il file di configurazione di GOsa %s/gosa.conf non è legibile." #: setup/class_setupStep_Finish.inc:117 #, fuzzy, php-format msgid "" "After downloading and placing the file under %s, please make sure that the " "user the web server is running with is able to read %s, while other users " "shouldn't. You may want to execute these commands to achieve this " "requirement:" msgstr "" "Dopo averlo scaricato dentro /etc/gosa/, assicurati che l'utente del " "webserver sia in grado di leggerlo mentre tutti gli altri utenti non " "possono. In molti casi è sufficiente eseguire i comandi seguenti." #: setup/class_setupStep_Ldap.inc:54 #, fuzzy msgid "LDAP setup" msgstr "Dispositivi" #: setup/class_setupStep_Ldap.inc:55 #, fuzzy msgid "LDAP connection setup" msgstr "Disconnessione " #: setup/class_setupStep_Ldap.inc:56 #, fuzzy msgid "" "This dialog performs the basic configuration of the LDAP connectivity for " "GOsa." msgstr "I campi seguenti permettono una configurazione base di GOsa." #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:41 #: setup/setup_feedback.tpl:52 #, fuzzy msgid "No" msgstr "nessuno" #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:39 #: setup/setup_feedback.tpl:50 #, fuzzy msgid "Yes" msgstr "Sistemi" #: setup/class_setupStep_Ldap.inc:113 #, php-format msgid "Anonymous bind to server '%s' failed!" msgstr "" #: setup/class_setupStep_Ldap.inc:115 #, fuzzy, php-format msgid "Bind as user '%s' failed!" msgstr "Impossibile selezionare il database!" #: setup/class_setupStep_Ldap.inc:120 #, fuzzy, php-format msgid "Anonymous bind to server '%s' succeeded." msgstr "Impossibile selezionare il database!" #: setup/class_setupStep_Ldap.inc:121 #, fuzzy msgid "Please specify user and password!" msgstr "Prego inserire un numero di telefono valido!" #: setup/class_setupStep_Ldap.inc:123 #, fuzzy, php-format msgid "Bind as user '%s' to server '%s' succeeded!" msgstr "Impossibile selezionare il database!" #: setup/class_setupStep_Feedback.inc:94 #, fuzzy msgid "UNIX accounts/groups" msgstr "Account Unix" #: setup/class_setupStep_Feedback.inc:96 #, fuzzy msgid "Samba management" msgstr "Dirigenza" #: setup/class_setupStep_Feedback.inc:98 #, fuzzy msgid "Mail system management" msgstr "Riferimenti" #: setup/class_setupStep_Feedback.inc:100 #, fuzzy msgid "FAX system administration" msgstr "Amministrazione utenti" #: setup/class_setupStep_Feedback.inc:102 #, fuzzy msgid "Asterisk administration" msgstr "Amministrazione utenti" #: setup/class_setupStep_Feedback.inc:104 #, fuzzy msgid "System inventory" msgstr "Elimina contatto" #: setup/class_setupStep_Feedback.inc:106 #, fuzzy msgid "System/Configuration management" msgstr "Riferimenti" #: setup/class_setupStep_Feedback.inc:108 #, fuzzy msgid "Address book" msgstr "Rubrica" #: setup/class_setupStep_Feedback.inc:114 msgid "Feedback" msgstr "" #: setup/class_setupStep_Feedback.inc:115 #, fuzzy msgid "Get notifications or send feedback" msgstr "Non ci sono certificati installati" #: setup/class_setupStep_Feedback.inc:116 #, fuzzy msgid "Notification and feedback" msgstr "Non ci sono certificati installati" #: setup/class_setupStep_Feedback.inc:132 setup/class_setup.inc:74 #, fuzzy msgid "Setup error" msgstr "Stato" #: setup/class_setupStep_Feedback.inc:140 #: setup/class_setupStep_Feedback.inc:147 msgid "Feedback error" msgstr "" #: setup/class_setupStep_Feedback.inc:140 #, php-format msgid "Cannot send feedback to '%s': %s" msgstr "" #: setup/class_setupStep_Feedback.inc:147 msgid "Cannot send feedback: service temporarily unavailable" msgstr "" #: setup/class_setupStep_Feedback.inc:181 #, fuzzy msgid "Please specify a valid email address." msgstr "Prego inserire un numero di telefono valido!" #: setup/class_setupStep_Feedback.inc:185 msgid "" "You have to select at least one of both options, subscribe or send feedback." msgstr "" #: setup/setup_license.tpl:3 msgid "" "GOsa is developed under the terms of the GNU General Public License v2. " "Please accept the terms below." msgstr "" #: setup/setup_license.tpl:11 msgid "I have read the license and accept it" msgstr "" #: setup/setup_ldap.tpl:2 msgid "" "The main data source used in GOsa is LDAP. In order to access the " "information stored there, please enter the required information." msgstr "" #: setup/setup_ldap.tpl:9 msgid "Please choose the LDAP user to be used by GOsa" msgstr "" #: setup/setup_ldap.tpl:28 setup/setup_ldap.tpl:29 #, fuzzy msgid "LDAP connection" msgstr "Disconnessione " #: setup/setup_ldap.tpl:31 msgid "Location name" msgstr "Nome locazione" #: setup/setup_ldap.tpl:35 #, fuzzy msgid "Connection URI" msgstr "Connessione" #: setup/setup_ldap.tpl:39 #, fuzzy msgid "TLS connection" msgstr "Connessione" #: setup/setup_ldap.tpl:47 #: plugins/personal/posix/trustSelect/trust-list.tpl:12 #: plugins/personal/posix/groupSelect/group-list.tpl:12 #: plugins/personal/generic/class_user.inc:1714 #: plugins/personal/generic/generic.tpl:167 #: plugins/addons/dyngroup/dyngroup.tpl:5 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:127 #: plugins/admin/groups/singleUserSelect/singleUser-list.tpl:12 #: plugins/admin/groups/class_group.inc:1078 #: plugins/admin/groups/group-list.tpl:12 plugins/admin/groups/generic.tpl:39 #: plugins/admin/groups/userSelect/user-list.tpl:12 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.tpl:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.tpl:12 #: plugins/admin/ogroups/ogroup-list.tpl:12 #: plugins/admin/ogroups/generic.tpl:26 #: plugins/admin/ogroups/class_ogroup.inc:886 #: plugins/admin/acl/acl_role.tpl:27 plugins/admin/acl/acl-list.tpl:12 #: plugins/admin/acl/class_aclRole.inc:742 #: plugins/admin/departments/dcObject.tpl:28 #: plugins/admin/departments/country.tpl:28 #: plugins/admin/departments/class_countryGeneric.inc:94 #: plugins/admin/departments/organization.tpl:39 #: plugins/admin/departments/class_department.inc:677 #: plugins/admin/departments/class_domain.inc:92 #: plugins/admin/departments/class_organizationGeneric.inc:125 #: plugins/admin/departments/generic.tpl:39 #: plugins/admin/departments/locality.tpl:28 #: plugins/admin/departments/dep-list.tpl:12 #: plugins/admin/departments/class_localityGeneric.inc:94 #: plugins/admin/departments/class_dcObject.inc:93 #: plugins/admin/departments/domain.tpl:28 #: plugins/admin/users/user-list.tpl:12 msgid "Base" msgstr "Base" #: setup/setup_ldap.tpl:57 #, fuzzy msgid "Reload" msgstr "leggere" #: setup/setup_ldap.tpl:63 setup/setup_ldap.tpl:64 #, fuzzy msgid "Authentication" msgstr "Destinazione" #: setup/setup_ldap.tpl:66 #, fuzzy msgid "Administrator DN" msgstr "Amministrazione" #: setup/setup_ldap.tpl:71 #, fuzzy msgid "Select user" msgstr "Rimuovi" #: setup/setup_ldap.tpl:81 msgid "Automatically append LDAP base to administrator DN" msgstr "" #: setup/setup_ldap.tpl:85 #, fuzzy msgid "Administrator password" msgstr "Password dell'amministratore" #: setup/setup_ldap.tpl:91 setup/setup_ldap.tpl:92 #, fuzzy msgid "Schema based settings" msgstr "Impostazioni Samba" #: setup/setup_ldap.tpl:94 msgid "Use RFC 2307bis compliant groups" msgstr "" #: setup/setup_ldap.tpl:105 setup/setup_ldap.tpl:106 #, fuzzy msgid "Current status" msgstr "Stato" #: setup/setup_ldap.tpl:108 plugins/admin/ogroups/class_ogroup.inc:244 #: plugins/generic/dashBoard/dbInformation/contents.tpl:1 msgid "Information" msgstr "Informazioni" #: setup/setup_language.tpl:3 #, fuzzy msgid "Please select the preferred language" msgstr "Lingua preferita" #: setup/setup_language.tpl:5 msgid "" "At this point, you can select the site wide default language. Choosing " "'automatic' will use the language requested by the browser. This setting can " "be overridden per user." msgstr "" #: setup/setup_language.tpl:9 #, fuzzy msgid "Please select your preferred language here" msgstr "Lingua preferita" #: setup/setup_welcome.tpl:3 msgid "How to get started" msgstr "" #: setup/setup_welcome.tpl:5 msgid "" "This seems to be the first time you run GOsa on this system. To start the " "GOsa web interface you need a working configuration file, which can be " "generated by this wizard." msgstr "" #: setup/setup_welcome.tpl:9 #, fuzzy msgid "What you need to generate a configuration file:" msgstr "File di configurazione" #: setup/setup_welcome.tpl:13 #, fuzzy msgid "The hostname of your LDAP server" msgstr "Errore durante la connessione al server LDAP. Il server dice: '%s'" #: setup/setup_welcome.tpl:14 msgid "Installed GOsa and supplementary schema" msgstr "" #: setup/setup_welcome.tpl:15 msgid "The LDAP base of your LDAP directory" msgstr "" #: setup/setup_welcome.tpl:16 msgid "The DN and the password of the LDAP administration user" msgstr "" #: setup/setup_welcome.tpl:20 msgid "" "If you've collected the needed information, unlock the setup process like " "shown in the next paragraph." msgstr "" #: setup/setup_welcome.tpl:24 #, fuzzy msgid "Starting the setup" msgstr "Lingua" #: setup/setup_welcome.tpl:26 msgid "" "For security reasons you need to authenticate the installation by creating " "the file '/tmp/gosa.auth', containing the current session ID on the servers " "local filesystem. This can be done by executing the following command:" msgstr "" #: setup/setup_welcome.tpl:32 msgid "Click the 'Next' button when you've finished." msgstr "" #: setup/class_setupStep_Schema.inc:37 setup/class_setupStep_Schema.inc:38 #, fuzzy msgid "LDAP schema check" msgstr "Server" #: setup/class_setupStep_Schema.inc:39 msgid "Perform test on your current LDAP schema" msgstr "" #: setup/class_setup.inc:183 #, fuzzy msgid "Setup" msgstr "Imposta" #: setup/class_setup.inc:195 #, fuzzy msgid "Completed" msgstr "incompleto" #: setup/class_setup.inc:235 #, fuzzy msgid "Check again" msgstr "Continua" #: setup/class_setup.inc:238 msgid "Next" msgstr "" #: setup/setup_migrate.tpl:2 msgid "" "During the LDAP inspection, we're going to check for several common pitfalls " "that may occur when migration to GOsa base LDAP administration. You may want " "to fix the problems below, in order to provide smooth services." msgstr "" #: setup/setup_migrate.tpl:5 #, fuzzy msgid "Checks" msgstr "Stato" #: setup/setup_migrate.tpl:22 #, fuzzy msgid "Add required object classes to the LDAP base" msgstr "Lista dei dipartimenti" #: setup/setup_migrate.tpl:24 #, fuzzy msgid "Current" msgstr "Password attuale" #: setup/setup_migrate.tpl:28 #, fuzzy msgid "After migration" msgstr "Amministrazione utenti" #: setup/setup_migrate.tpl:35 #, fuzzy msgid "Close" msgstr "Scegli" #: setup/setup_migrate.tpl:40 #, fuzzy msgid "Create a new GOsa administrator account" msgstr "Crea estensioni di posta" #: setup/setup_migrate.tpl:41 msgid "" "This dialog will automatically add a new super administrator to your LDAP " "tree." msgstr "" #: setup/setup_migrate.tpl:57 #, fuzzy msgid "Password (again)" msgstr "Algorimo password" #: setup/setup_finish.tpl:3 #, fuzzy msgid "Create your configuration file" msgstr "File di configurazione" #: setup/setup_finish.tpl:10 msgid "Depending on the user name your web server is running on:" msgstr "" #: setup/setup_finish.tpl:27 msgid "Download configuration" msgstr "Scarica il file di configurazione" #: setup/setup_finish.tpl:33 #, fuzzy msgid "Status: " msgstr "Stato" #: setup/class_setupStep_Checks.inc:40 setup/class_setupStep_Checks.inc:41 msgid "Installation check" msgstr "" #: setup/class_setupStep_Checks.inc:42 msgid "Basic checks for PHP compatibility and extensions" msgstr "" #: setup/class_setupStep_Checks.inc:66 #, fuzzy msgid "Checking PHP version" msgstr "Controllo della versione di PHP (>=4.1.0)" #: setup/class_setupStep_Checks.inc:67 #, fuzzy, php-format msgid "PHP must be of version %s or above." msgstr "PHP deve essere la versione 4.1.0 o superiore." #: setup/class_setupStep_Checks.inc:68 msgid "Please upgrade to a supported version." msgstr "" #: setup/class_setupStep_Checks.inc:75 msgid "GOsa requires this module to talk with your LDAP server." msgstr "" #: setup/class_setupStep_Checks.inc:83 msgid "GOsa requires this module for an internationalized interface." msgstr "" #: setup/class_setupStep_Checks.inc:91 #, fuzzy msgid "" "GOsa requires this module to communicate with different types of servers and " "protocols." msgstr "" "Queso modulo serve a leggere i report di GOfax dal database.GOsa funziona " "correttamente anche senza." #: setup/class_setupStep_Checks.inc:99 msgid "GOsa requires this module for the samba integration." msgstr "" #: setup/class_setupStep_Checks.inc:107 msgid "" "GOsa requires either 'mhash' or the 'sha1' module to make use of SSHA " "encryption." msgstr "" #: setup/class_setupStep_Checks.inc:115 msgid "GOsa requires this module to talk to an IMAP server." msgstr "" #: setup/class_setupStep_Checks.inc:122 #, fuzzy msgid "mbstring" msgstr "Impostazioni Samba" #: setup/class_setupStep_Checks.inc:123 #, fuzzy msgid "GOsa requires this module to handle Unicode strings." msgstr "" "Queso modulo serve a leggere i report di GOfax dal database.GOsa funziona " "correttamente anche senza." #: setup/class_setupStep_Checks.inc:130 msgid "Calendar" msgstr "" #: setup/class_setupStep_Checks.inc:131 #, fuzzy msgid "GOsa requires this module to calculate dates." msgstr "" "Queso modulo serve a leggere i report di GOfax dal database.GOsa funziona " "correttamente anche senza." #: setup/class_setupStep_Checks.inc:138 #, fuzzy msgid "MySQL" msgstr "Errore LDAP" #: setup/class_setupStep_Checks.inc:139 #, fuzzy msgid "" "GOsa requires this module to communicate with several supported databases." msgstr "" "Queso modulo serve a leggere i report di GOfax dal database.GOsa funziona " "correttamente anche senza." #: setup/class_setupStep_Checks.inc:156 msgid "samba hash generator" msgstr "" #: setup/class_setupStep_Checks.inc:157 msgid "GOsa requires this command to synchronize POSIX and samba passwords." msgstr "" #: setup/class_setupStep_Checks.inc:158 msgid "" "Deploy a gosa-si installation or install the Perl Crypt::SmbHash modules." msgstr "" #: setup/class_setupStep_Checks.inc:171 msgid "imagick" msgstr "" #: setup/class_setupStep_Checks.inc:172 msgid "GOsa requires this extension to handle images." msgstr "" #: setup/class_setupStep_Checks.inc:187 #, fuzzy msgid "compression module" msgstr "Opzioni di accesso" #: setup/class_setupStep_Checks.inc:188 msgid "GOsa requires this extension to handle snapshots." msgstr "" #: setup/class_setupStep_Checks.inc:199 #, fuzzy msgid "" "register_globals is a PHP mechanism to register all global variables to be " "accessible from scripts without changing the scope. This may be a security " "risk." msgstr "" "register_globals è un meccanismo PHP che può comportare maggiori rischi per " "la sicurezza. GOsa funziona in entrambe le modalità" #: setup/class_setupStep_Checks.inc:200 #, fuzzy msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'." msgstr "Controllo se register_globals e impostato su 'off'" #: setup/class_setupStep_Checks.inc:208 msgid "PHP uses this value for the garbage collector to delete old sessions." msgstr "" #: setup/class_setupStep_Checks.inc:209 msgid "" "Setting this value to one day will prevent loosing session and cookies " "before they really timeout." msgstr "" #: setup/class_setupStep_Checks.inc:210 #, fuzzy msgid "" "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or " "higher." msgstr "" "Per non avere problemi con GOsa è necessario impostare l'opzione session." "auto_register su 'off' nel file php.ini" #: setup/class_setupStep_Checks.inc:217 setup/class_setupStep_Checks.inc:233 #: setup/class_setupStep_Checks.inc:249 setup/class_setupStep_Checks.inc:265 #: plugins/addons/propertyEditor/class_propertyEditor.inc:230 msgid "Off" msgstr "" #: setup/class_setupStep_Checks.inc:218 #, fuzzy msgid "" "In Order to use GOsa without any trouble, the session.auto_register option " "in your php.ini should be set to 'Off'." msgstr "" "Per non avere problemi con GOsa è necessario impostare l'opzione session." "auto_register su 'off' nel file php.ini" #: setup/class_setupStep_Checks.inc:219 #, fuzzy msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." msgstr "" "Per non avere problemi con GOsa è necessario impostare l'opzione session." "auto_register su 'off' nel file php.ini" #: setup/class_setupStep_Checks.inc:226 #, fuzzy msgid "" "GOsa needs at least 32MB of memory. Setting it below this limit may cause " "errors that are not reproducible! Increase it for larger setups." msgstr "" "Per non avere problemi con GOsa è necessario impostare l'opzione " "memory_limit a 16MB o più nel file php.ini" #: setup/class_setupStep_Checks.inc:227 msgid "" "Search for 'memory_limit' in your php.ini and set it to '32M' or higher." msgstr "" #: setup/class_setupStep_Checks.inc:234 #, fuzzy msgid "" "This option influences the PHP output handling. Turn this Option off, to " "increase performance." msgstr "" "Per motivi di performance è consigliato di impostare l'opzione " "implicit_flush su 'off' nel file php.ini." #: setup/class_setupStep_Checks.inc:235 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:242 #, fuzzy msgid "The Execution time should be at least 30 seconds." msgstr "" "Per non avere problemi con GOsa è necessario impostare l'opzione " "max_execution_time a 30 secondi o più nel file php.ini" #: setup/class_setupStep_Checks.inc:243 msgid "" "Search for 'max_execution_time' in your php.ini and set it to '30' or higher." msgstr "" #: setup/class_setupStep_Checks.inc:250 #, fuzzy msgid "" "Increase the server security by setting expose_php to 'off'. PHP won't send " "any information about the server you are running in this case." msgstr "" "Per motivi di sicurezza è consigliato di impostare l'opzione expose_php su " "'off' nel file php.ini." #: setup/class_setupStep_Checks.inc:251 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:257 #: plugins/addons/propertyEditor/class_propertyEditor.inc:231 #, fuzzy msgid "On" msgstr "Opzioni" #: setup/class_setupStep_Checks.inc:258 msgid "" "Increase your server security by setting magic_quotes_gpc to 'on'. PHP will " "escape all quotes in strings in this case." msgstr "" "Per motivi di sicurezza è consigliato di impostare l'opzione " "magic_quotes_gpc su 'on' nel file php.ini." #: setup/class_setupStep_Checks.inc:259 #, fuzzy msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." msgstr "Controllo se register_globals e impostato su 'off'" #: setup/class_setupStep_Checks.inc:266 #, fuzzy msgid "Increase your server performance by setting magic_quotes_gpc to 'off'." msgstr "" "Per motivi di sicurezza è consigliato di impostare l'opzione " "magic_quotes_gpc su 'on' nel file php.ini." #: setup/class_setupStep_Checks.inc:267 #, fuzzy msgid "" "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to 'Off'." msgstr "" "Per non avere problemi con GOsa è necessario impostare l'opzione session." "auto_register su 'off' nel file php.ini" #: setup/class_setupStep_Checks.inc:277 #, fuzzy msgid "Configuration writable" msgstr "File di configurazione" #: setup/class_setupStep_Checks.inc:278 #, fuzzy msgid "The configuration file can't be written" msgstr "File di configurazione" #: setup/class_setupStep_Checks.inc:279 #, php-format msgid "" "GOsa reads its configuration from a file located in (%s/%s). The setup can " "write the configuration directly if it is writable." msgstr "" #: setup/class_setupStep_Welcome.inc:42 #, fuzzy msgid "Welcome" msgstr "Benvenuto %s!" #: setup/class_setupStep_Welcome.inc:43 #, fuzzy msgid "The welcome message" msgstr "Elimina questo record" #: setup/class_setupStep_Welcome.inc:44 #, fuzzy msgid "Welcome to the GOsa setup assistent" msgstr "Benvenuto nel setup di GOsa!" #: setup/class_setupStep_License.inc:56 setup/class_setupStep_License.inc:57 msgid "License" msgstr "" #: setup/class_setupStep_License.inc:58 msgid "Terms and conditions for usage" msgstr "" #: setup/setup_schema.tpl:1 #, fuzzy msgid "Schema specific settings" msgstr "Impostazioni Samba" #: setup/setup_schema.tpl:4 msgid "Schema check succeeded" msgstr "" #: setup/setup_schema.tpl:7 #, fuzzy msgid "Schema check failed" msgstr "Server" #: setup/setup_schema.tpl:11 msgid "" "Could not read any schema information, all checks skipped. Adjust your LDAP " "ACLs." msgstr "" #: setup/setup_schema.tpl:13 msgid "" "It seems that your LDAP database wasn't initialized yet. This maybe the " "reason, why GOsa can't read your schema configuration!" msgstr "" #: setup/class_setupStep_Language.inc:40 setup/class_setupStep_Language.inc:41 #, fuzzy msgid "Language setup" msgstr "Lingua" #: setup/class_setupStep_Language.inc:42 #, fuzzy msgid "This step allows you to select your preferred language." msgstr "Lingua preferita" #: setup/setup_feedback.tpl:2 #, fuzzy msgid "Feedback successfully send" msgstr "Setup completato" #: setup/setup_feedback.tpl:6 msgid "Subscribe to the gosa-announce mailing list" msgstr "" #: setup/setup_feedback.tpl:8 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to subscribe you to the gosa-announce mailing list. You've to confirm " "this by mail." msgstr "" #: setup/setup_feedback.tpl:20 msgid "Mail address" msgstr "Indirizzo principale" #: setup/setup_feedback.tpl:28 msgid "Send feedback to the GOsa project team" msgstr "" #: setup/setup_feedback.tpl:31 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to submit your form anonymously." msgstr "" #: setup/setup_feedback.tpl:35 setup/setup_feedback.tpl:36 #: plugins/personal/posix/generic.tpl:5 #: plugins/personal/generic/class_user.inc:37 #: plugins/personal/generic/class_user.inc:1670 #: plugins/admin/groups/class_group.inc:1054 #: plugins/admin/ogroups/class_ogroup.inc:872 #: plugins/admin/departments/class_department.inc:659 #: plugins/admin/users/class_userManagement.inc:890 msgid "Generic" msgstr "Generale" #: setup/setup_feedback.tpl:38 msgid "Did the setup procedure help you to get started?" msgstr "" #: setup/setup_feedback.tpl:44 msgid "If not, what problems did you encounter" msgstr "" #: setup/setup_feedback.tpl:48 msgid "Is this the first time you use GOsa?" msgstr "" #: setup/setup_feedback.tpl:53 msgid "I use it since" msgstr "" #: setup/setup_feedback.tpl:54 msgid "Select the year since when you are using GOsa" msgstr "" #: setup/setup_feedback.tpl:60 msgid "What operating system / distribution do you use?" msgstr "" #: setup/setup_feedback.tpl:64 msgid "What web server do you use?" msgstr "" #: setup/setup_feedback.tpl:68 msgid "What PHP version do you use?" msgstr "" #: setup/setup_feedback.tpl:72 #, fuzzy msgid "GOsa version" msgstr "Impostazioni generali delle code" #: setup/setup_feedback.tpl:78 setup/setup_feedback.tpl:79 msgid "LDAP" msgstr "" #: setup/setup_feedback.tpl:81 msgid "What kind of LDAP server(s) do you use?" msgstr "" #: setup/setup_feedback.tpl:85 msgid "How many objects are in your LDAP?" msgstr "" #: setup/setup_feedback.tpl:91 setup/setup_feedback.tpl:92 #, fuzzy msgid "Features" msgstr "Futuro" #: setup/setup_feedback.tpl:94 msgid "What features of GOsa do you use?" msgstr "" #: setup/setup_feedback.tpl:103 msgid "What features do you want to see in future versions of GOsa?" msgstr "" #: setup/setup_feedback.tpl:107 msgid "Send feedback" msgstr "" #: html/password.php:63 html/index.php:157 #, fuzzy, php-format msgid "GOsa configuration %s/%s is not readable. Aborted." msgstr "Il file di configurazione di GOsa %s/gosa.conf non è legibile." #: html/password.php:115 html/index.php:179 html/setup.php:73 #, php-format msgid "Compile directory %s is not accessible!" msgstr "" #: html/password.php:194 plugins/personal/generic/class_user.inc:614 #, fuzzy msgid "Password method" msgstr "Algorimo password" #: html/password.php:195 msgid "Error: Password method not available!" msgstr "" #: html/password.php:242 plugins/personal/generic/paste_generic.tpl:16 #: plugins/personal/generic/class_user.inc:1311 #: plugins/personal/generic/class_user.inc:1329 #: plugins/personal/generic/class_user.inc:1343 #: plugins/personal/generic/class_user.inc:1345 #: plugins/personal/generic/class_user.inc:1704 #: plugins/personal/generic/generic.tpl:65 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:56 #: plugins/admin/groups/userSelect/user-list.xml:56 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:65 #: plugins/admin/users/template.tpl:32 plugins/admin/users/user-list.xml:65 #: plugins/generic/dashBoard/Register/register.tpl:49 msgid "Login" msgstr "Nome utente" #: html/password.php:244 plugins/personal/password/class_password.inc:124 msgid "You need to specify your current password in order to proceed." msgstr "Devi specificare la tua 'Password attuale' per procedere." #: html/password.php:246 plugins/personal/password/class_password.inc:126 #: plugins/admin/users/class_userManagement.inc:316 msgid "" "The passwords you've entered as 'New password' and 'Repeated new password' " "do not match." msgstr "Le password nuova e ripetuta non corrispondono" #: html/password.php:248 plugins/personal/password/class_password.inc:128 msgid "The password you've entered as 'New password' is empty." msgstr "La password immessa come 'Nuova password' è vuota" #: html/password.php:250 plugins/personal/password/class_password.inc:130 msgid "The password used as new and current are too similar." msgstr "" "La password immessa come 'Nuova password' è troppo simile a quella attuale." #: html/password.php:252 plugins/personal/password/class_password.inc:132 msgid "The password used as new is to short." msgstr "La 'Nuova password' immessa è troppo corta." #: html/password.php:254 plugins/personal/password/class_password.inc:134 msgid "The password contains possibly problematic Unicode characters!" msgstr "" #: html/password.php:261 html/index.php:311 #, fuzzy msgid "Please check the username/password combination!" msgstr "Prego inserire un numero di telefono valido!" #: html/password.php:268 #, fuzzy msgid "You have no permissions to change your password!" msgstr "Non hai il permesso di cambiare la tua password." #: html/password.php:280 plugins/personal/password/class_password.inc:141 #: plugins/admin/users/class_userManagement.inc:330 #, php-format msgid "Check-hook reported a problem: %s. Password change canceled!" msgstr "" #: html/password.php:315 msgid "Session will not be encrypted." msgstr "" #: html/password.php:317 msgid "Enter SSL session" msgstr "" #: html/index.php:45 #, php-format msgid "Your browser (%s) is blacklisted for the current theme!" msgstr "" #: html/index.php:72 #, php-format msgid "This session is not encrypted. Click %s to enter an encrypted session." msgstr "" #: html/index.php:72 #, fuzzy msgid "here" msgstr "Cellulare" #: html/index.php:78 msgid "The configured session lifetime will be overridden by php.ini settings!" msgstr "" #: html/index.php:179 #, fuzzy msgid "Smarty error" msgstr "Stato" #: html/index.php:202 msgid "" "Your browser has cookies disabled: please enable cookies and reload this " "page before logging in!" msgstr "" #: html/index.php:233 msgid "Broken HTTP authentication setup!" msgstr "" #: html/index.php:241 msgid "Cannot find a valid user for the current HTTP authentication!" msgstr "" #: html/index.php:245 msgid "Cannot find a unique user for the current HTTP authentication!" msgstr "" #: html/index.php:289 #, fuzzy msgid "Please specify a valid user name!" msgstr "Prego inserire un numero di telefono valido!" #: html/index.php:292 msgid "Please specify your password!" msgstr "" #: html/index.php:304 #, fuzzy msgid "Authentication error" msgstr "Destinazione" #: html/index.php:304 #, fuzzy msgid "Cannot retrieve user information for HTTP authentication!" msgstr "Rimuovi" #: html/index.php:364 #, fuzzy msgid "Account locked. Please contact your system administrator!" msgstr "" "Errore di connessione al server LDAP. Contatta l'amministratore del sistema." #: html/main.php:171 #, php-format msgid "Cannot locate file %s - please run %s to fix this" msgstr "" #: html/main.php:190 #, fuzzy msgid "PHP configuration" msgstr "Scarica il file di configurazione" #: html/main.php:191 msgid "" "Fatal error: Register globals is active. Please fix this in order to " "continue." msgstr "" #: html/main.php:220 #, fuzzy msgid "Your password is about to expire, please change your password!" msgstr "Non hai il permesso di cambiare la tua password." #: html/main.php:295 msgid "Running out of memory!" msgstr "" #: html/main.php:355 #, php-format msgid "You're logged in as %s" msgstr "" #: html/main.php:358 #, fuzzy msgid "ACLs are disabled" msgstr "disabilitato" #: html/main.php:408 #, fuzzy msgid "Plug-in" msgstr "Ricerca" #: html/main.php:409 #, php-format msgid "Fatal error: Cannot find any plugin definitions for plugin %s!" msgstr "" #: html/main.php:425 #, fuzzy msgid "Configuration Error" msgstr "File di configurazione" #: html/main.php:426 #, php-format msgid "" "Fatal error: not all POST variables have been transfered by PHP - please " "inform your administrator!" msgstr "" #: html/setup.php:73 #, fuzzy msgid "Smarty" msgstr "Avvio" #: html/helpviewer.php:64 msgid "Help browser" msgstr "" #: html/helpviewer.php:118 msgid "There is no help file specified for this class" msgstr "" #: html/helpviewer.php:268 #, php-format msgid "Help directory '%s' is not accessible, can't read any help files." msgstr "" #: plugins/personal/myaccount/password.tpl:4 #: plugins/personal/password/password.tpl:4 msgid "" "To change your personal password use the fields below. The changes take " "effect immediately. Please memorize the new password, because you wouldn't " "be able to login without it." msgstr "" "Per cambiare la tua password usa i campi qui sotto. I cambiamenti avrenno " "effetto immediatamente. Memorizza la nuova password perché non sarai in " "grado di connetterti senza di essa." #: plugins/personal/myaccount/password.tpl:10 #: plugins/personal/myaccount/password.tpl:39 #: plugins/personal/password/password.tpl:16 #: plugins/personal/password/password.tpl:45 #, fuzzy msgid "Password change dialog" msgstr "Cambia la password" #: plugins/personal/myaccount/password.tpl:49 #: plugins/personal/password/password.tpl:55 #: plugins/admin/users/password.tpl:43 #, fuzzy msgid "Use proposal" msgstr "gruppi" #: plugins/personal/myaccount/password.tpl:67 #: plugins/personal/password/password.tpl:74 #: plugins/admin/users/password.tpl:61 #, fuzzy msgid "Manually specify a password" msgstr "Prego inserire un numero di telefono valido!" #: plugins/personal/myaccount/password.tpl:97 #: plugins/personal/password/password.tpl:104 msgid "Clear fields" msgstr "Ripulisci i campi" #: plugins/personal/myaccount/main.inc:118 #: plugins/personal/myaccount/class_MyAccount.inc:5 #: plugins/personal/posix/class_posixAccount.inc:1356 #: plugins/personal/password/class_password.inc:232 #: plugins/personal/generic/class_user.inc:1675 msgid "My account" msgstr "Identità" #: plugins/personal/myaccount/class_MyAccount.inc:6 #, fuzzy msgid "Edit personal settings" msgstr "Impostazioni Unix" #: plugins/personal/myaccount/nochange.tpl:2 #: plugins/personal/password/nochange.tpl:2 #, fuzzy msgid "You have no permission to change your password at this time" msgstr "Non hai il permesso di cambiare la tua password." #: plugins/personal/myaccount/nochange.tpl:5 #, fuzzy msgid "Your password hash method will not be changed!" msgstr "Non hai il permesso di cambiare la tua password." #: plugins/personal/myaccount/changed.tpl:3 #: plugins/personal/password/changed.tpl:3 #, fuzzy msgid "" "You've successfully changed your password. Remember to change all programs " "configured to use it as well." msgstr "" "Hai cambiato con successo la tua password. Ricorda di cambiare tutto i " "programmmi configurati per usarla." #: plugins/personal/posix/paste_generic.tpl:1 #: plugins/personal/posix/paste_generic.tpl:5 #: plugins/personal/posix/generic.tpl:1 #, fuzzy msgid "POSIX settings" msgstr "Impostazioni Unix" #: plugins/personal/posix/paste_generic.tpl:6 #: plugins/personal/posix/paste_generic.tpl:9 #: plugins/personal/posix/generic.tpl:8 #: plugins/personal/posix/class_posixAccount.inc:899 #: plugins/personal/posix/class_posixAccount.inc:902 #: plugins/personal/posix/class_posixAccount.inc:977 #: plugins/personal/posix/class_posixAccount.inc:980 #: plugins/personal/posix/class_posixAccount.inc:1366 msgid "Home directory" msgstr "Home directory" #: plugins/personal/posix/paste_generic.tpl:17 #: plugins/personal/posix/posix_shadow.tpl:2 #: plugins/personal/posix/generic.tpl:51 #: plugins/personal/generic/generic.tpl:34 #: plugins/personal/generic/generic.tpl:81 #, fuzzy msgid "Account settings" msgstr "Impostazioni FAX" #: plugins/personal/posix/paste_generic.tpl:19 #: plugins/personal/posix/generic.tpl:26 #: plugins/personal/posix/class_posixAccount.inc:1367 msgid "Primary group" msgstr "Gruppo primario" #: plugins/personal/posix/paste_generic.tpl:33 #: plugins/personal/posix/generic.tpl:60 msgid "Force UID/GID" msgstr "Forza UID/GID" #: plugins/personal/posix/paste_generic.tpl:47 #: plugins/personal/posix/generic.tpl:75 #: plugins/personal/posix/class_posixAccount.inc:917 #: plugins/personal/posix/class_posixAccount.inc:920 #: plugins/admin/groups/class_group.inc:985 #: plugins/admin/groups/class_group.inc:988 #: plugins/admin/groups/class_group.inc:1080 msgid "GID" msgstr "GID" #: plugins/personal/posix/paste_generic.tpl:58 #: plugins/personal/posix/paste_generic.tpl:61 #: plugins/personal/posix/generic.tpl:89 #: plugins/generic/references/class_reference.inc:58 #: plugins/generic/references/class_reference.inc:64 msgid "Group membership" msgstr "Gruppi di appartenenza" #: plugins/personal/posix/paste_generic.tpl:68 #: plugins/personal/posix/generic.tpl:92 msgid "(Warning: more than 16 groups are not supported by NFS!)" msgstr "(Attenzione: L'NFS non supporta più di 16 gruppi!)" #: plugins/personal/posix/trustSelect/trust-filter.xml:17 #: plugins/personal/posix/groupSelect/group-filter.xml:16 #: plugins/admin/groups/singleUserSelect/singleUser-filter.xml:20 #: plugins/admin/groups/group-filter.xml:17 #: plugins/admin/groups/userSelect/user-filter.xml:20 #: plugins/admin/groups/userGroupSelect/selectUserGroup-filter.xml:21 #: plugins/admin/ogroups/objectSelect/selectObject-filter.xml:32 #: plugins/admin/ogroups/ogroup-filter.xml:18 #: plugins/admin/acl/acl-filter.xml:18 #: plugins/admin/departments/dep-filter.xml:17 #: plugins/admin/users/user-filter.xml:19 #, fuzzy msgid "Default filter" msgstr "Parametro" #: plugins/personal/posix/trustSelect/trust-list.xml:9 #: plugins/personal/posix/groupSelect/group-list.xml:10 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:10 #: plugins/admin/groups/userSelect/user-list.xml:10 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:11 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:11 #, fuzzy msgid "Please select the desired entries" msgstr "Lingua preferita" #: plugins/personal/posix/trustSelect/trust-list.xml:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:23 #: plugins/admin/ogroups/class_ogroupManagement.inc:187 msgid "Server" msgstr "Server" #: plugins/personal/posix/trustSelect/trust-list.xml:19 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:31 #: plugins/admin/ogroups/class_ogroupManagement.inc:189 msgid "Workstation" msgstr "" #: plugins/personal/posix/trustSelect/trust-list.xml:26 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:39 #: plugins/admin/ogroups/class_ogroupManagement.inc:191 #, fuzzy msgid "Terminal" msgstr "Terminali" #: plugins/personal/posix/trustSelect/class_trustSelect.inc:29 #, fuzzy msgid "Trust machine selection" msgstr "Impostazioni FAX" #: plugins/personal/posix/groupSelect/class_groupSelect.inc:29 #, fuzzy msgid "Group selection" msgstr "Impostazioni FAX" #: plugins/personal/posix/groupSelect/group-list.xml:13 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/addons/propertyEditor/property-list.xml:73 #: plugins/admin/groups/group-list.xml:15 #: plugins/admin/groups/group-list.xml:79 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:23 #: plugins/admin/ogroups/ogroup-list.xml:79 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:71 #: plugins/admin/ogroups/class_ogroupManagement.inc:184 msgid "Group" msgstr "Gruppo" #: plugins/personal/posix/posix_shadow.tpl:12 msgid "User must change password on first login" msgstr "L'utente deve cambiare la password alla prima connessione" #: plugins/personal/posix/posix_shadow.tpl:59 #, fuzzy msgid "Password expiration settings" msgstr "Opzioni di posta dell'identità" #: plugins/personal/posix/posix_shadow.tpl:62 msgid "Password expires on" msgstr "La password spira il" #: plugins/personal/posix/generic.tpl:6 plugins/admin/ogroups/generic.tpl:5 #, fuzzy msgid "Generic settings" msgstr "Impostazioni generali delle code" #: plugins/personal/posix/generic.tpl:16 #: plugins/personal/posix/class_posixAccount.inc:1368 msgid "Shell" msgstr "Shell" #: plugins/personal/posix/generic.tpl:37 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 msgid "Status" msgstr "Stato" #: plugins/personal/posix/generic.tpl:42 #, fuzzy msgid "Last log-on" msgstr "Scegli il tuo numero di telefono personale" #: plugins/personal/posix/generic.tpl:108 #, fuzzy msgid "Account permissions" msgstr "Impostazioni FAX" #: plugins/personal/posix/generic.tpl:113 msgid "SSH keys" msgstr "" #: plugins/personal/posix/generic.tpl:114 msgid "Edit public ssh keys..." msgstr "" #: plugins/personal/posix/class_posixAccount.inc:37 #: plugins/personal/posix/class_posixAccount.inc:291 #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/personal/posix/class_posixAccount.inc:313 #: plugins/personal/posix/class_posixAccount.inc:316 #: plugins/admin/groups/class_groupManagement.inc:157 #: plugins/admin/users/class_userManagement.inc:894 msgid "POSIX" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:38 #, fuzzy msgid "Edit users POSIX settings" msgstr "Impostazioni Unix" #: plugins/personal/posix/class_posixAccount.inc:152 #, fuzzy msgid "expired" msgstr "Esporta" #: plugins/personal/posix/class_posixAccount.inc:154 msgid "grace time active" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:157 #: plugins/personal/posix/class_posixAccount.inc:159 #: plugins/personal/posix/class_posixAccount.inc:161 #, fuzzy msgid "active" msgstr "Privato" #: plugins/personal/posix/class_posixAccount.inc:157 #, fuzzy msgid "password not changeable" msgstr "Nuova password" #: plugins/personal/posix/class_posixAccount.inc:159 #, fuzzy msgid "password expired" msgstr "La password spira il" #: plugins/personal/posix/class_posixAccount.inc:235 msgid "automatic" msgstr "automatico" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:173 #: plugins/admin/users/class_userManagement.inc:902 msgid "Samba" msgstr "Samba" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:197 #: plugins/admin/users/class_userManagement.inc:910 msgid "Environment" msgstr "Ambiente" #: plugins/personal/posix/class_posixAccount.inc:415 #, php-format msgid "Password can't be changed up to %s days after last change" msgstr "" "La password non può essere cambiata per %s giorni dall'ultimo cambiamento" #: plugins/personal/posix/class_posixAccount.inc:419 #, php-format msgid "Password must be changed after %s days" msgstr "La password deve essere cambiata dopo %s giorni" #: plugins/personal/posix/class_posixAccount.inc:423 #, fuzzy, php-format msgid "Disable account after %s days of inactivity after password expiry" msgstr "" "Disabilita l'account dopo %s giorni di inattività dopo che la password è " "spirata" #: plugins/personal/posix/class_posixAccount.inc:427 #, fuzzy, php-format msgid "Warn user %s days before password expiry" msgstr "Avvisa l'utente %s giorni prima che la password spiri" #: plugins/personal/posix/class_posixAccount.inc:692 msgid "Timeout while waiting for lock. Ignoring lock!" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:750 #: plugins/personal/posix/class_posixAccount.inc:1043 msgid "Group of user" msgstr "Gruppo di utenti" #: plugins/personal/posix/class_posixAccount.inc:815 msgid "" "A duplicated UID number was written for this user. If this was not intended " "please verify all used uidNumbers!" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:933 #: plugins/personal/posix/class_posixAccount.inc:986 #, fuzzy msgid "shadowMin" msgstr "Mostra terminali" #: plugins/personal/posix/class_posixAccount.inc:938 #: plugins/personal/posix/class_posixAccount.inc:991 msgid "shadowMax" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:943 #: plugins/personal/posix/class_posixAccount.inc:996 #, fuzzy msgid "shadowWarning" msgstr "Mostra workstation" #: plugins/personal/posix/class_posixAccount.inc:957 #: plugins/personal/posix/class_posixAccount.inc:1010 #, fuzzy msgid "shadowInactive" msgstr "Mostra stampanti" #: plugins/personal/posix/class_posixAccount.inc:1061 #: plugins/personal/posix/class_posixAccount.inc:1537 #, fuzzy msgid "all" msgstr "Annulla" #: plugins/personal/posix/class_posixAccount.inc:1352 #, fuzzy msgid "POSIX account" msgstr "Estenzioni FTP" #: plugins/personal/posix/class_posixAccount.inc:1370 #, fuzzy msgid "Group ID" msgstr "Gruppo" #: plugins/personal/posix/class_posixAccount.inc:1372 #, fuzzy msgid "Shadow last changed" msgstr "Mostra telefoni" #: plugins/personal/posix/class_posixAccount.inc:1373 #, fuzzy msgid "Last login" msgstr "Scegli il tuo numero di telefono personale" #: plugins/personal/posix/class_posixAccount.inc:1375 #, fuzzy msgid "Force password change on login" msgstr "Cambia la password" #: plugins/personal/posix/class_posixAccount.inc:1376 #, fuzzy msgid "Shadow min" msgstr "Mostra terminali" #: plugins/personal/posix/class_posixAccount.inc:1377 msgid "Shadow max" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1378 #, fuzzy msgid "Shadow warning" msgstr "Mostra workstation" #: plugins/personal/posix/class_posixAccount.inc:1379 #, fuzzy msgid "Shadow inactive" msgstr "Mostra stampanti" #: plugins/personal/posix/class_posixAccount.inc:1380 #, fuzzy msgid "Shadow expire" msgstr "Mostra persone" #: plugins/personal/posix/class_posixAccount.inc:1381 msgid "Public SSH key" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1382 #, fuzzy msgid "System trust model" msgstr "Accesso ai sistemi" #: plugins/personal/posix/class_posixAccount.inc:1512 msgid "some" msgstr "" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "disabled" msgstr "disabilitato" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "full access" msgstr "accesso completo" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:174 msgid "allow access to these hosts" msgstr "accesso limitato ai seguenti host" #: plugins/personal/posix/trustModeDialog/generic.tpl:2 #: plugins/admin/groups/class_group.inc:1084 #: plugins/admin/ogroups/class_ogroup.inc:888 msgid "System trust" msgstr "Accesso ai sistemi" #: plugins/personal/posix/trustModeDialog/generic.tpl:5 #: plugins/personal/posix/trustModeDialog/generic.tpl:21 msgid "Trust mode" msgstr "" #: plugins/personal/password/password.tpl:10 #, fuzzy msgid "Your Password has expired. Please choose a new password." msgstr "Non hai il permesso di cambiare la tua password." #: plugins/personal/password/class_password.inc:27 #, fuzzy msgid "Change user password" msgstr "Cambia la password" #: plugins/personal/password/class_password.inc:161 msgid "" "The password you've entered as your current password doesn't match the real " "one." msgstr "La password immessa come 'Password attuale' è errata" #: plugins/personal/password/class_password.inc:164 #, fuzzy msgid "You have no permission to change your password." msgstr "Non hai il permesso di cambiare la tua password." #: plugins/personal/password/class_password.inc:228 #, fuzzy msgid "User password" msgstr "Nuova password" #: plugins/personal/password/class_password.inc:241 msgid "Script to be called before a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:250 msgid "Script to be called after a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:259 msgid "Script to be called before a password gets unlocked." msgstr "" #: plugins/personal/password/class_password.inc:268 msgid "Script to be called after a password gets unlocked." msgstr "" #: plugins/personal/generic/generic_certs.tpl:3 #: plugins/personal/generic/class_user.inc:550 #: plugins/personal/generic/class_user.inc:572 #: plugins/personal/generic/generic.tpl:226 msgid "Certificates" msgstr "Certificati" #: plugins/personal/generic/generic_certs.tpl:5 #, fuzzy msgid "The users standard certificate" msgstr "Certificato standard" #: plugins/personal/generic/generic_certs.tpl:8 msgid "Standard certificate" msgstr "Certificato standard" #: plugins/personal/generic/generic_certs.tpl:22 #: plugins/personal/generic/generic_certs.tpl:48 #: plugins/personal/generic/generic_certs.tpl:74 #: plugins/addons/propertyEditor/property-list.xml:109 #: plugins/admin/groups/group-list.xml:98 #: plugins/admin/ogroups/ogroup-list.xml:98 plugins/admin/acl/acl-list.xml:95 #: plugins/admin/acl/acl-list.xml:144 #: plugins/admin/departments/dep-list.xml:160 #: plugins/admin/departments/dep-list.xml:181 #: plugins/admin/users/user-list.xml:121 msgid "Remove" msgstr "Rimuovi" #: plugins/personal/generic/generic_certs.tpl:31 #, fuzzy msgid "The users S/MIME certificate" msgstr "Certificato S/MIME" #: plugins/personal/generic/generic_certs.tpl:34 msgid "S/MIME certificate" msgstr "Certificato S/MIME" #: plugins/personal/generic/generic_certs.tpl:57 #, fuzzy msgid "The users PKCS12 certificate" msgstr "Certificato PKCS12" #: plugins/personal/generic/generic_certs.tpl:60 msgid "PKCS12 certificate" msgstr "Certificato PKCS12" #: plugins/personal/generic/generic_certs.tpl:83 #: plugins/personal/generic/class_user.inc:1663 msgid "Certificate serial number" msgstr "Numero seriale del certificato" #: plugins/personal/generic/paste_generic.tpl:3 #, fuzzy msgid "Paste user" msgstr "Data" #: plugins/personal/generic/paste_generic.tpl:6 #: plugins/personal/generic/generic.tpl:1 #: plugins/personal/generic/generic.tpl:3 msgid "Personal information" msgstr "Informazioni personali" #: plugins/personal/generic/paste_generic.tpl:8 #: plugins/personal/generic/generic.tpl:37 plugins/admin/users/template.tpl:23 #, fuzzy msgid "Last name" msgstr "Scegli il tuo numero di telefono personale" #: plugins/personal/generic/paste_generic.tpl:12 #: plugins/personal/generic/generic.tpl:51 plugins/admin/users/template.tpl:27 #, fuzzy msgid "First name" msgstr "Liste di blocco" #: plugins/personal/generic/paste_generic.tpl:24 #, fuzzy msgid "Clear password" msgstr "Nuova password" #: plugins/personal/generic/paste_generic.tpl:25 #, fuzzy msgid "Set new password" msgstr "Cambia password" #: plugins/personal/generic/paste_generic.tpl:31 #: plugins/personal/generic/generic.tpl:8 #: plugins/personal/generic/generic_picture.tpl:2 #, fuzzy msgid "The users picture" msgstr "Foto personale" #: plugins/personal/generic/paste_generic.tpl:43 #: plugins/personal/generic/generic_picture.tpl:13 msgid "Remove picture" msgstr "Elimina foto" #: plugins/personal/generic/class_user.inc:38 #, fuzzy msgid "Edit organizational user settings" msgstr "Opzioni applicazione" #: plugins/personal/generic/class_user.inc:297 msgid "Please add a single IP address or a network/net mask combination!" msgstr "" #: plugins/personal/generic/class_user.inc:339 msgid "female" msgstr "femmina" #: plugins/personal/generic/class_user.inc:339 msgid "male" msgstr "maschio" #: plugins/personal/generic/class_user.inc:395 #, fuzzy msgid "Password configuration" msgstr "Scarica il file di configurazione" #: plugins/personal/generic/class_user.inc:429 msgid "Cannot upload file!" msgstr "" #: plugins/personal/generic/class_user.inc:522 #, fuzzy msgid "Serial number" msgstr "Numero di telefono" #: plugins/personal/generic/class_user.inc:544 #: plugins/personal/generic/class_user.inc:1716 #: plugins/personal/generic/generic_picture.tpl:1 #, fuzzy msgid "User picture" msgstr "Foto personale" #: plugins/personal/generic/class_user.inc:569 msgid "(Not supported certificate types are marked as invalid.)" msgstr "" #: plugins/personal/generic/class_user.inc:579 #, php-format msgid "Certificate is valid from %s to %s and is currently %s." msgstr "" #: plugins/personal/generic/class_user.inc:582 msgid "valid" msgstr "valido" #: plugins/personal/generic/class_user.inc:583 msgid "invalid" msgstr "invalido" #: plugins/personal/generic/class_user.inc:588 msgid "No certificate installed" msgstr "Non ci sono certificati installati" #: plugins/personal/generic/class_user.inc:614 msgid "The selected password method is no longer available." msgstr "" #: plugins/personal/generic/class_user.inc:1051 msgid "" "Cannot save user picture: GOsa requires the package 'imagemagick' or 'php5-" "imagick' to be installed!" msgstr "" #: plugins/personal/generic/class_user.inc:1177 msgid "Cannot build RDN: no + allowed to build sub RDN!" msgstr "" #: plugins/personal/generic/class_user.inc:1184 msgid "Cannot build RDN: attribute is not defined!" msgstr "" #: plugins/personal/generic/class_user.inc:1202 msgid "Cannot build RDN: invalid attribute parameters!" msgstr "" #: plugins/personal/generic/class_user.inc:1273 msgid "The selected password method requires initial configuration!" msgstr "" #: plugins/personal/generic/class_user.inc:1349 #: plugins/personal/generic/class_user.inc:1739 #: plugins/personal/generic/class_user.inc:1842 #: plugins/personal/generic/generic.tpl:201 msgid "Homepage" msgstr "Home Page" #: plugins/personal/generic/class_user.inc:1354 #: plugins/personal/generic/class_user.inc:1845 #: plugins/personal/generic/generic.tpl:394 #: plugins/personal/generic/generic.tpl:574 #: plugins/admin/groups/class_groupManagement.inc:181 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:55 #: plugins/admin/ogroups/class_ogroupManagement.inc:188 #: plugins/admin/departments/organization.tpl:109 #: plugins/admin/departments/class_department.inc:376 #: plugins/admin/departments/generic.tpl:110 #: plugins/admin/users/class_userManagement.inc:918 msgid "Phone" msgstr "Telefono" #: plugins/personal/generic/class_user.inc:1357 #: plugins/personal/generic/class_user.inc:1848 #: plugins/personal/generic/generic.tpl:419 #: plugins/personal/generic/generic.tpl:586 #: plugins/admin/departments/organization.tpl:117 #: plugins/admin/departments/class_department.inc:379 #: plugins/admin/departments/class_department.inc:683 #: plugins/admin/departments/class_organizationGeneric.inc:133 #: plugins/admin/departments/generic.tpl:118 msgid "Fax" msgstr "Fax" #: plugins/personal/generic/class_user.inc:1360 #: plugins/personal/generic/class_user.inc:1851 #: plugins/personal/generic/generic.tpl:403 msgid "Mobile" msgstr "Cellulare" #: plugins/personal/generic/class_user.inc:1363 #: plugins/personal/generic/class_user.inc:1854 #: plugins/personal/generic/generic.tpl:411 msgid "Pager" msgstr "Pager" #: plugins/personal/generic/class_user.inc:1483 #, fuzzy msgid "Cannot open certificate!" msgstr "Impossibile aprite il certificato selezionato!" #: plugins/personal/generic/class_user.inc:1655 #: plugins/personal/generic/generic.tpl:526 msgid "Unit" msgstr "Unità" #: plugins/personal/generic/class_user.inc:1656 #: plugins/personal/generic/generic.tpl:551 msgid "House identifier" msgstr "Identificativo della casa" #: plugins/personal/generic/class_user.inc:1657 #: plugins/personal/generic/generic.tpl:468 msgid "Vocation" msgstr "" #: plugins/personal/generic/class_user.inc:1658 #: plugins/personal/generic/generic.tpl:595 msgid "Last delivery" msgstr "Ultimo recapito" #: plugins/personal/generic/class_user.inc:1659 #: plugins/personal/generic/generic.tpl:517 msgid "Person locality" msgstr "Località personale" #: plugins/personal/generic/class_user.inc:1660 #: plugins/personal/generic/generic.tpl:476 msgid "Unit description" msgstr "Descrizoione unità" #: plugins/personal/generic/class_user.inc:1661 #: plugins/personal/generic/generic.tpl:485 msgid "Subject area" msgstr "" #: plugins/personal/generic/class_user.inc:1662 #: plugins/personal/generic/generic.tpl:494 msgid "Functional title" msgstr "Funzione" #: plugins/personal/generic/class_user.inc:1666 #: plugins/personal/generic/generic.tpl:503 plugins/admin/acl/acl-list.xml:23 #: plugins/admin/acl/acl-list.xml:82 plugins/admin/acl/class_aclRole.inc:714 msgid "Role" msgstr "Ruolo" #: plugins/personal/generic/class_user.inc:1667 #: plugins/personal/generic/generic.tpl:543 msgid "Postal code" msgstr "CAP" #: plugins/personal/generic/class_user.inc:1671 #, fuzzy msgid "Generic user settings" msgstr "Impostazioni generali delle code" #: plugins/personal/generic/class_user.inc:1692 msgid "" "Pattern for the generation of user DNs. Please read the FAQ for details." msgstr "" #: plugins/personal/generic/class_user.inc:1706 #, fuzzy msgid "Allow definition of custom filters" msgstr "File di configurazione" #: plugins/personal/generic/class_user.inc:1712 #: plugins/personal/generic/generic.tpl:140 msgid "Sex" msgstr "Sesso" #: plugins/personal/generic/class_user.inc:1713 #: plugins/personal/generic/generic.tpl:154 #, fuzzy msgid "Preferred language" msgstr "Lingua preferita" #: plugins/personal/generic/class_user.inc:1718 #, fuzzy msgid "Login restrictions" msgstr "La password spira il" #: plugins/personal/generic/class_user.inc:1721 #: plugins/personal/generic/generic.tpl:306 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:15 #: plugins/admin/ogroups/class_ogroupManagement.inc:186 #: plugins/admin/departments/dep-list.xml:55 #: plugins/admin/departments/dep-list.xml:71 #: plugins/admin/departments/dep-list.xml:138 #: plugins/admin/departments/class_departmentManagement.inc:253 msgid "Department" msgstr "Dipartimento" #: plugins/personal/generic/class_user.inc:1723 #: plugins/personal/generic/generic.tpl:339 #: plugins/personal/generic/generic.tpl:355 #: plugins/admin/departments/dcObject.tpl:39 #: plugins/admin/departments/country.tpl:39 #: plugins/admin/departments/class_countryGeneric.inc:93 #: plugins/admin/departments/organization.tpl:51 #: plugins/admin/departments/class_department.inc:684 #: plugins/admin/departments/class_domain.inc:93 #: plugins/admin/departments/class_organizationGeneric.inc:127 #: plugins/admin/departments/generic.tpl:51 #: plugins/admin/departments/locality.tpl:39 #: plugins/admin/departments/class_localityGeneric.inc:93 #: plugins/admin/departments/class_dcObject.inc:92 #: plugins/admin/departments/domain.tpl:39 #, fuzzy msgid "Manager" msgstr "Utenti di Dominio" #: plugins/personal/generic/class_user.inc:1727 #, fuzzy msgid "Room number" msgstr "Numero di telefono" #: plugins/personal/generic/class_user.inc:1728 #, fuzzy msgid "Telephone number" msgstr "Numero di telefono" #: plugins/personal/generic/class_user.inc:1729 #, fuzzy msgid "Pager number" msgstr "Numero di telefono" #: plugins/personal/generic/class_user.inc:1730 #, fuzzy msgid "Mobile number" msgstr "Cellulare" #: plugins/personal/generic/class_user.inc:1731 #, fuzzy msgid "Fax number" msgstr "Numero di telefono" #: plugins/personal/generic/class_user.inc:1733 #: plugins/personal/generic/generic.tpl:444 #: plugins/admin/departments/organization.tpl:86 #: plugins/admin/departments/class_department.inc:679 #: plugins/admin/departments/class_organizationGeneric.inc:129 #: plugins/admin/departments/generic.tpl:87 msgid "State" msgstr "Stato" #: plugins/personal/generic/class_user.inc:1735 #: plugins/personal/generic/generic.tpl:183 #: plugins/admin/departments/class_organizationGeneric.inc:131 msgid "Postal address" msgstr "CAP" #: plugins/personal/generic/class_user.inc:1740 #, fuzzy msgid "User password method" msgstr "Algorimo password" #: plugins/personal/generic/class_user.inc:1741 #, fuzzy msgid "User certificates" msgstr "Certificato standard" #: plugins/personal/generic/class_user.inc:1949 #, fuzzy msgid "Entries differ" msgstr "Gruppo di utenti" #: plugins/personal/generic/generic.tpl:21 msgid "Change picture" msgstr "Cambia foto" #: plugins/personal/generic/generic.tpl:41 #: plugins/personal/generic/generic.tpl:55 #: plugins/personal/generic/generic.tpl:73 plugins/admin/groups/generic.tpl:14 msgid "Multiple edit" msgstr "" #: plugins/personal/generic/generic.tpl:83 #, fuzzy msgid "Template name" msgstr "Template" #: plugins/personal/generic/generic.tpl:185 #: plugins/personal/generic/generic.tpl:452 #: plugins/admin/departments/organization.tpl:102 #: plugins/admin/departments/class_department.inc:681 #: plugins/admin/departments/generic.tpl:103 msgid "Address" msgstr "Indirizzo" #: plugins/personal/generic/generic.tpl:193 msgid "Private phone" msgstr "Telefono privato" #: plugins/personal/generic/generic.tpl:209 msgid "Password storage" msgstr "Algorimo password" #: plugins/personal/generic/generic.tpl:229 msgid "Edit certificates" msgstr "Modifica certificati" #: plugins/personal/generic/generic.tpl:241 msgid "Restrict login to" msgstr "" #: plugins/personal/generic/generic.tpl:249 #: plugins/personal/generic/generic.tpl:269 msgid "IP or network" msgstr "" #: plugins/personal/generic/generic.tpl:285 #: plugins/personal/generic/generic.tpl:288 #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 msgid "Organizational information" msgstr "Informazioni organizzazione" #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 #, fuzzy msgid "part" msgstr "Avvio" #: plugins/personal/generic/generic.tpl:314 msgid "Department No." msgstr "Dipartimento No." #: plugins/personal/generic/generic.tpl:322 msgid "Employee No." msgstr "Matricola" #: plugins/personal/generic/generic.tpl:385 #: plugins/personal/generic/generic.tpl:566 msgid "Room No." msgstr "Stanza No." #: plugins/personal/generic/generic.tpl:580 msgid "Please use the phone tab" msgstr "Usa il tab del telefono" #: plugins/addons/dyngroup/dyngroup.tpl:1 #, fuzzy msgid "List of dynamic rules" msgstr "Lista dei gruppi" #: plugins/addons/dyngroup/dyngroup.tpl:3 msgid "Labeled URI definitions" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:6 msgid "Scope" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:7 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:132 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:134 #, fuzzy msgid "Attribute" msgstr "Attributo DN delle persone" #: plugins/addons/dyngroup/dyngroup.tpl:8 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:139 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 #: plugins/generic/references/class_aclResolver.inc:169 #, fuzzy msgid "Filter" msgstr "Filtri" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:118 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:340 msgid "Labeled URI" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 msgid "Surrounding brackets are required!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:149 #, php-format msgid "The given filter '%s' for entry %s seems to be invalid!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:179 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:181 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:332 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:333 #, fuzzy msgid "Dynamic object" msgstr "Oggetto" #: plugins/addons/propertyEditor/property-filter.xml:15 #, fuzzy msgid "Effective properties" msgstr "Modifica proprietà" #: plugins/addons/propertyEditor/property-filter.xml:29 #, fuzzy msgid "Modified properties" msgstr "Modifica proprietà" #: plugins/addons/propertyEditor/property-filter.xml:43 #, fuzzy msgid "All properties" msgstr "Modifica proprietà" #: plugins/addons/propertyEditor/property-filter.xml:57 #, fuzzy msgid "LDAP properties" msgstr "Modifica proprietà" #: plugins/addons/propertyEditor/property-filter.xml:71 #, fuzzy msgid "Search for property groups" msgstr "Mostra gruppi principali" #: plugins/addons/propertyEditor/migrate.tpl:3 msgid "Property migration assistant" msgstr "" #: plugins/addons/propertyEditor/migrate.tpl:3 #, fuzzy msgid "Migration steps left" msgstr "Creare" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:31 #, fuzzy, php-format msgid "Migration of property '%s'" msgstr "Creare" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:34 #, fuzzy, php-format msgid "GOsa has detected objects outside of the configured storage point (%s)." msgstr "Non hai il permesso di cambiare la tua password." #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:161 msgid "Objects that will be added" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:169 msgid "Objects that will be moved" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:177 #, fuzzy, php-format msgid "Moving object '%s' to '%s'" msgstr "Lista dei dipartimenti" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:204 #, php-format msgid "Migration failed for object %s: DN already exists!" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:208 #, php-format msgid "Migration failed for object %s: please check if it already exists!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:3 #, fuzzy msgid "Warning message" msgstr "Home Page" #: plugins/addons/propertyEditor/property-list.tpl:9 msgid "" "Modifying properties may break your setup, destroy or mess up your LDAP " "database, lead to security holes or it can even make a login impossible!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:10 msgid "" "Since configuration properties are stored in the LDAP database a copy/backup " "can be handy." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:14 msgid "" "If you've debarred yourself, you can try to set 'ignoreLdapProperties' to " "'true' in your gosa.conf main section. This will make GOsa ignore LDAP based " "property values." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:22 msgid "" "I understand that there are certain risks, but I want to modify properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:38 msgid "Ignoring LDAP defined properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:77 msgid "Undo" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:1 #, fuzzy msgid "Command verifier" msgstr "e" #: plugins/addons/propertyEditor/commandVerifier.tpl:3 msgid "" "Here you can execute commands in the way GOsa does and check the generated " "results or errors. This can be very useful especially for the post events " "(postcreate, postmodify and postremove) due to the fact that these hook are " "executed silently." msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:8 msgid "" "Please be careful here, all commands will really be executed on your machine " "and may break things!" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:15 msgid "The command to check for" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:17 #, fuzzy msgid "Test" msgstr "Timeout" #: plugins/addons/propertyEditor/class_commandVerifier.inc:56 msgid "Results" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:6 #, fuzzy msgid "Preferences" msgstr "Riferimenti" #: plugins/addons/propertyEditor/class_propertyEditor.inc:7 msgid "" "Configure global and special GOsa settings like hooks and plug-in parameters" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:206 #, fuzzy msgid "No description" msgstr "Descrizoione unità" #: plugins/addons/propertyEditor/class_propertyEditor.inc:251 msgid "Test the given command." msgstr "" #: plugins/addons/propertyEditor/property-list.xml:11 #, fuzzy msgid "List of configuration settings" msgstr "Opzioni di posta dell'identità" #: plugins/addons/propertyEditor/property-list.xml:16 #, fuzzy msgid "Property not used" msgstr "Gruppo di utenti" #: plugins/addons/propertyEditor/property-list.xml:24 msgid "Property will be restored" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:32 #, fuzzy msgid "Modified property" msgstr "Informazioni personali" #: plugins/addons/propertyEditor/property-list.xml:40 #, fuzzy msgid "Property configured in LDAP" msgstr "File di configurazione" #: plugins/addons/propertyEditor/property-list.xml:48 #, fuzzy msgid "Property configured in config file" msgstr "File di configurazione" #: plugins/addons/propertyEditor/property-list.xml:81 #, fuzzy msgid "Class" msgstr "classe" #: plugins/addons/propertyEditor/property-list.xml:89 #, fuzzy msgid "Value" msgstr "maschio" #: plugins/addons/propertyEditor/property-list.xml:125 msgid "Restore to default" msgstr "" #: plugins/admin/groups/paste_generic.tpl:1 #, fuzzy msgid "Group settings" msgstr "Impostazioni FAX" #: plugins/admin/groups/paste_generic.tpl:2 #, fuzzy msgid "Paste group settings" msgstr "Impostazioni FAX" #: plugins/admin/groups/paste_generic.tpl:5 #: plugins/admin/groups/generic.tpl:11 #: plugins/admin/ogroups/paste_generic.tpl:4 #: plugins/admin/ogroups/generic.tpl:7 msgid "Group name" msgstr "Nome gruppo" #: plugins/admin/groups/paste_generic.tpl:8 #: plugins/admin/groups/generic.tpl:17 #, fuzzy msgid "POSIX name of the group" msgstr "Nome Unix del gruppo" #: plugins/admin/groups/paste_generic.tpl:13 #: plugins/admin/groups/generic.tpl:59 #, fuzzy msgid "Normally IDs are auto-generated, select to specify manually" msgstr "" "Normalmente le ID sono autogenerate, selezionare per specificarelo " "manulamente" #: plugins/admin/groups/paste_generic.tpl:15 #: plugins/admin/groups/generic.tpl:62 msgid "Force GID" msgstr "Forza GID" #: plugins/admin/groups/paste_generic.tpl:18 #: plugins/admin/groups/generic.tpl:65 msgid "Forced ID number" msgstr "Forza numero ID" #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:14 #: plugins/admin/groups/userSelect/user-list.xml:14 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:15 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:63 #: plugins/admin/ogroups/class_ogroupManagement.inc:183 #: plugins/admin/users/user-list.xml:23 plugins/admin/users/user-list.xml:95 msgid "User" msgstr "" #: plugins/admin/groups/singleUserSelect/class_singleUserSelect.inc:29 #: plugins/admin/groups/userSelect/class_userSelect.inc:26 #, fuzzy msgid "User selection" msgstr "Impostazioni FAX" #: plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 msgid "Cannot find group SID in your configuration!" msgstr "" #: plugins/admin/groups/class_group.inc:310 msgid "Samba group" msgstr "Gruppo Samba" #: plugins/admin/groups/class_group.inc:310 #, fuzzy msgid "Domain administrators" msgstr "Amministratori di Dominio" #: plugins/admin/groups/class_group.inc:310 msgid "Domain users" msgstr "Utenti di Dominio" #: plugins/admin/groups/class_group.inc:311 msgid "Domain guests" msgstr "Ospiti di Dominio" #: plugins/admin/groups/class_group.inc:316 #, php-format msgid "Special group (%d)" msgstr "Gruppo speciale (%d)" #: plugins/admin/groups/class_group.inc:483 #, php-format msgid "Adding UID '%s' to group '%s' failed: cannot find user object!" msgstr "" #: plugins/admin/groups/class_group.inc:489 #, php-format msgid "Add UID '%s' to group '%s' failed: UID is used more than once!" msgstr "" #: plugins/admin/groups/class_group.inc:772 #, fuzzy, php-format msgid "Cannot find any SID for '%s'!" msgstr "Rimuovi" #: plugins/admin/groups/class_group.inc:777 #, fuzzy, php-format msgid "Cannot find any RIDBASE for '%s'!" msgstr "Rimuovi" #: plugins/admin/groups/class_group.inc:871 #, php-format msgid "The gidNumber '%s' is already in use by %s!" msgstr "" #: plugins/admin/groups/class_group.inc:1055 #, fuzzy msgid "Generic group settings" msgstr "Impostazioni generali delle code" #: plugins/admin/groups/class_group.inc:1068 #, fuzzy msgid "RDN for object group storage." msgstr "Nome del gruppo" #: plugins/admin/groups/class_group.inc:1082 #, fuzzy msgid "Samba group type" msgstr "Gruppo Samba" #: plugins/admin/groups/class_group.inc:1083 #, fuzzy msgid "Samba domain name" msgstr "Home di Samba" #: plugins/admin/groups/class_group.inc:1085 #, fuzzy msgid "Phone pickup group" msgstr "I membri sono in un gruppo di risposta telefonica" #: plugins/admin/groups/class_group.inc:1086 #, fuzzy msgid "Nagios group" msgstr "Contatto" #: plugins/admin/groups/class_group.inc:1088 #, fuzzy msgid "Group member" msgstr "Membri del gruppo" #: plugins/admin/groups/class_groupManagement.inc:26 msgid "" "Manage aspects of groups like members, POSIX, desktop, samba and mail " "settings" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:100 #: plugins/admin/ogroups/class_ogroupManagement.inc:115 #: plugins/admin/users/class_userManagement.inc:196 #, fuzzy msgid "Infrastructure error" msgstr "Errore PHP" #: plugins/admin/groups/class_groupManagement.inc:158 #: plugins/admin/users/class_userManagement.inc:895 #, fuzzy msgid "Edit POSIX properties" msgstr "Modifica proprietà" #: plugins/admin/groups/class_groupManagement.inc:166 #: plugins/admin/users/class_userManagement.inc:899 #, fuzzy msgid "Edit mail properties" msgstr "Modifica proprietà" #: plugins/admin/groups/class_groupManagement.inc:174 #: plugins/admin/users/class_userManagement.inc:903 #, fuzzy msgid "Edit samba properties" msgstr "Modifica proprietà" #: plugins/admin/groups/class_groupManagement.inc:182 #: plugins/admin/users/class_userManagement.inc:919 #, fuzzy msgid "Edit phone properties" msgstr "Modifica proprietà" #: plugins/admin/groups/class_groupManagement.inc:189 #, fuzzy msgid "Menu" msgstr "Stampante" #: plugins/admin/groups/class_groupManagement.inc:190 #, fuzzy msgid "Edit start menu properties" msgstr "Modifica proprietà" #: plugins/admin/groups/class_groupManagement.inc:198 #: plugins/admin/users/class_userManagement.inc:911 #, fuzzy msgid "Edit environment properties" msgstr "Modifica proprietà" #: plugins/admin/groups/group-filter.xml:31 #, fuzzy msgid "Default filter2" msgstr "Parametro" #: plugins/admin/groups/generic.tpl:28 plugins/admin/ogroups/generic.tpl:18 msgid "Descriptive text for this group" msgstr "Nome descrittivo del gruppo" #: plugins/admin/groups/generic.tpl:75 plugins/admin/groups/generic.tpl:102 msgid "Select to create a samba conform group" msgstr "Seleziona per creare un gruppo conforme Samba" #: plugins/admin/groups/generic.tpl:87 plugins/admin/groups/generic.tpl:110 msgid "in domain" msgstr "nel dominio" #: plugins/admin/groups/generic.tpl:131 msgid "Members are in a phone pickup group" msgstr "I membri sono in un gruppo di risposta telefonica" #: plugins/admin/groups/generic.tpl:146 #, fuzzy msgid "Members are in a Nagios group" msgstr "I membri sono in un gruppo di risposta telefonica" #: plugins/admin/groups/generic.tpl:175 plugins/admin/ogroups/generic.tpl:41 msgid "The group members are part of a dyn-group and cannot be managed!" msgstr "" #: plugins/admin/groups/generic.tpl:188 #, fuzzy msgid "Common group members" msgstr "Mostra gruppi" #: plugins/admin/groups/generic.tpl:197 #, fuzzy msgid "Partial group members" msgstr "Membri del gruppo" #: plugins/admin/groups/generic.tpl:202 msgid "Group members" msgstr "Membri del gruppo" #: plugins/admin/groups/group-list.xml:11 msgid "List of groups" msgstr "Lista dei gruppi" #: plugins/admin/groups/group-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:57 #: plugins/admin/departments/dcObject.tpl:8 #: plugins/admin/departments/dcObject.tpl:9 #: plugins/admin/departments/country.tpl:8 #: plugins/admin/departments/country.tpl:9 #: plugins/admin/departments/organization.tpl:7 #: plugins/admin/departments/organization.tpl:9 #: plugins/admin/departments/generic.tpl:7 #: plugins/admin/departments/generic.tpl:9 #: plugins/admin/departments/locality.tpl:8 #: plugins/admin/departments/locality.tpl:9 #: plugins/admin/departments/domain.tpl:8 #: plugins/admin/departments/domain.tpl:9 plugins/admin/users/user-list.xml:73 msgid "Properties" msgstr "" #: plugins/admin/groups/group-list.xml:91 #: plugins/admin/ogroups/ogroup-list.xml:91 plugins/admin/acl/acl-list.xml:131 #: plugins/admin/departments/dep-list.xml:172 #: plugins/admin/users/user-list.xml:114 msgid "Edit" msgstr "Modifica" #: plugins/admin/groups/group-list.xml:106 #: plugins/admin/ogroups/ogroup-list.xml:106 #: plugins/admin/users/user-list.xml:156 #, fuzzy msgid "Send message" msgstr "Home Page" #: plugins/admin/groups/group-list.xml:138 #, fuzzy msgid "Edit group" msgstr "Gruppo primario" #: plugins/admin/groups/group-list.xml:151 #, fuzzy msgid "Remove group" msgstr "server" #: plugins/admin/groups/userGroupSelect/class_userGroupSelect.inc:29 #, fuzzy msgid "User and group selection" msgstr "Impostazioni FAX" #: plugins/admin/ogroups/ogroup-list.xml:11 #, fuzzy msgid "List of object groups" msgstr "Nome del gruppo" #: plugins/admin/ogroups/ogroup-list.xml:15 #: plugins/admin/ogroups/generic.tpl:1 msgid "Object group" msgstr "Gruppo di oggetti" #: plugins/admin/ogroups/ogroup-list.xml:142 #, fuzzy msgid "Edit object group" msgstr "Gruppo di oggetti" #: plugins/admin/ogroups/ogroup-list.xml:155 #, fuzzy msgid "Remove object group" msgstr "server" #: plugins/admin/ogroups/paste_generic.tpl:1 #, fuzzy msgid "Paste object group" msgstr "Gruppo di oggetti" #: plugins/admin/ogroups/paste_generic.tpl:7 #, fuzzy msgid "Please enter the new object group name" msgstr "Inserisci la URI del server LDAP" #: plugins/admin/ogroups/paste_generic.tpl:16 msgid "Warning: systems can only inherit from a single object group!" msgstr "" #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:47 #: plugins/admin/ogroups/class_ogroupManagement.inc:192 msgid "Printer" msgstr "Stampante" #: plugins/admin/ogroups/objectSelect/class_objectSelect.inc:29 #, fuzzy msgid "Object selection" msgstr "Impostazioni FAX" #: plugins/admin/ogroups/tabs_ogroups.inc:139 #, fuzzy msgid "Phone queue" msgstr "Numero di telefono" #: plugins/admin/ogroups/tabs_ogroups.inc:164 #, fuzzy msgid "Groupware" msgstr "Nome gruppo" #: plugins/admin/ogroups/tabs_ogroups.inc:176 #, fuzzy msgid "System settings" msgstr "Opzioni di posta dell'identità" #: plugins/admin/ogroups/tabs_ogroups.inc:188 #: plugins/admin/ogroups/tabs_ogroups.inc:213 #, fuzzy msgid "Recipe" msgstr "Descrizione" #: plugins/admin/ogroups/tabs_ogroups.inc:200 #: plugins/admin/ogroups/tabs_ogroups.inc:222 msgid "Devices" msgstr "Dispositivi" #: plugins/admin/ogroups/tabs_ogroups.inc:232 #, fuzzy msgid "Deployment summary" msgstr "Dipartimento" #: plugins/admin/ogroups/tabs_ogroups.inc:242 msgid "Desktop" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:259 msgid "Applications" msgstr "Applicazioni" #: plugins/admin/ogroups/generic.tpl:10 msgid "Name of the group" msgstr "Nome del gruppo" #: plugins/admin/ogroups/generic.tpl:46 msgid "Member objects" msgstr "Oggetti membri" #: plugins/admin/ogroups/class_ogroup.inc:244 msgid "You cannot combine terminals and workstations in one object group!" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:318 #: plugins/admin/users/class_userManagement.inc:472 #: plugins/admin/users/class_userManagement.inc:507 #: plugins/admin/users/class_userManagement.inc:539 msgid "none" msgstr "nessuno" #: plugins/admin/ogroups/class_ogroup.inc:320 msgid "too many different objects!" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:322 msgid "users" msgstr "utenti" #: plugins/admin/ogroups/class_ogroup.inc:323 msgid "groups" msgstr "gruppi" #: plugins/admin/ogroups/class_ogroup.inc:324 msgid "applications" msgstr "applicazioni" #: plugins/admin/ogroups/class_ogroup.inc:325 msgid "departments" msgstr "dipartimenti" #: plugins/admin/ogroups/class_ogroup.inc:326 msgid "servers" msgstr "server" #: plugins/admin/ogroups/class_ogroup.inc:327 msgid "workstations" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:328 #, fuzzy msgid "Windows workstations" msgstr "Mostra workstation" #: plugins/admin/ogroups/class_ogroup.inc:329 msgid "terminals" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:330 msgid "phones" msgstr "telefoni" #: plugins/admin/ogroups/class_ogroup.inc:331 msgid "printers" msgstr "stampanti" #: plugins/admin/ogroups/class_ogroup.inc:555 msgid "Non existing DN:" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:673 #, php-format msgid "" "These systems are already configured by other object groups and cannot be " "added:" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:707 msgid "You can combine two different object types at maximum, only!" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:873 #, fuzzy msgid "Object group generic" msgstr "Gruppo di oggetti" #: plugins/admin/ogroups/class_ogroup.inc:882 #: plugins/admin/ogroups/class_ogroupManagement.inc:25 msgid "Object groups" msgstr "Gruppi di oggetti" #: plugins/admin/ogroups/class_ogroupManagement.inc:26 msgid "Combine different types of objects to make use of this relationship" msgstr "" #: plugins/admin/ogroups/class_ogroupManagement.inc:182 #, fuzzy msgid "Templates" msgstr "Template" #: plugins/admin/ogroups/class_ogroupManagement.inc:185 msgid "Application" msgstr "Applicazione" #: plugins/admin/ogroups/class_ogroupManagement.inc:190 msgid "Windows Install" msgstr "" #: plugins/admin/acl/tabs_acl_role.inc:28 plugins/admin/acl/acl-filter.xml:33 #, fuzzy msgid "ACL Templates" msgstr "Template" #: plugins/admin/acl/acl-list.xml:11 #, fuzzy msgid "List of ACLs" msgstr "Lista dei gruppi" #: plugins/admin/acl/paste_role.tpl:1 #, fuzzy msgid "Paste ACL-role" msgstr "Rimuovi" #: plugins/admin/acl/acl-filter.xml:48 #: plugins/admin/acl/class_aclManagement.inc:154 #, fuzzy msgid "ACL Assignment" msgstr "Riferimenti" #: plugins/admin/acl/class_aclManagement.inc:26 msgid "" "Control access to GOsa managed objects down to attribute and action level" msgstr "" #: plugins/admin/acl/class_aclRole.inc:26 #: plugins/admin/acl/class_aclRole.inc:715 #, fuzzy msgid "Access control roles" msgstr "Opzioni di accesso" #: plugins/admin/acl/class_aclRole.inc:27 #, fuzzy msgid "Edit AC roles" msgstr "ACL" #: plugins/admin/acl/class_aclRole.inc:138 #, fuzzy msgid "Reset ACL" msgstr "Rimuovi" #: plugins/admin/acl/class_aclRole.inc:411 #, fuzzy msgid "No ACL settings for this category" msgstr "Nome descrittivo del gruppo" #: plugins/admin/acl/class_aclRole.inc:413 #, fuzzy, php-format msgid "ACL for these objects: %s" msgstr "Nome descrittivo del gruppo" #: plugins/admin/acl/class_aclRole.inc:418 #, fuzzy msgid "Edit category ACL" msgstr "classe" #: plugins/admin/acl/class_aclRole.inc:421 #, fuzzy msgid "Delete category ACL" msgstr "classe" #: plugins/admin/acl/class_aclRole.inc:442 #, php-format msgid "Edit ACL for '%s', scope is '%s'" msgstr "" #: plugins/admin/acl/class_aclRole.inc:635 #, fuzzy msgid "Object in use" msgstr "Nome dell'oggetto" #: plugins/admin/acl/class_aclRole.inc:635 #, php-format msgid "This role cannot be removed while it is in use by these objects:" msgstr "" #: plugins/admin/acl/class_aclRole.inc:731 #, fuzzy msgid "RDN for role storage." msgstr "Opzioni di posta dell'identità" #: plugins/admin/departments/dcObject.tpl:5 #: plugins/admin/departments/dep-filter.xml:77 #: plugins/admin/departments/dep-list.xml:23 #: plugins/admin/departments/dep-list.xml:110 #, fuzzy msgid "Domain component" msgstr "Amministratori di Dominio" #: plugins/admin/departments/dcObject.tpl:11 #: plugins/admin/departments/locality.tpl:11 #, fuzzy msgid "Locality name" msgstr "Nome locazione" #: plugins/admin/departments/dcObject.tpl:14 #: plugins/admin/departments/locality.tpl:14 msgid "Name of locality to create" msgstr "" #: plugins/admin/departments/dcObject.tpl:22 #: plugins/admin/departments/country.tpl:22 #: plugins/admin/departments/organization.tpl:22 #: plugins/admin/departments/locality.tpl:22 #: plugins/admin/departments/domain.tpl:22 msgid "Descriptive text for department" msgstr "" #: plugins/admin/departments/dcObject.tpl:67 #: plugins/admin/departments/country.tpl:68 #: plugins/admin/departments/class_countryGeneric.inc:95 #: plugins/admin/departments/organization.tpl:132 #: plugins/admin/departments/class_department.inc:686 #: plugins/admin/departments/class_domain.inc:94 #: plugins/admin/departments/class_organizationGeneric.inc:135 #: plugins/admin/departments/generic.tpl:132 #: plugins/admin/departments/locality.tpl:67 #: plugins/admin/departments/class_localityGeneric.inc:95 #: plugins/admin/departments/class_dcObject.inc:94 #: plugins/admin/departments/domain.tpl:67 #, fuzzy msgid "Administrative settings" msgstr "Amministrazione" #: plugins/admin/departments/dcObject.tpl:70 #: plugins/admin/departments/country.tpl:71 #: plugins/admin/departments/organization.tpl:135 #: plugins/admin/departments/generic.tpl:135 #: plugins/admin/departments/locality.tpl:70 #: plugins/admin/departments/domain.tpl:70 msgid "Tag department as an independent administrative unit" msgstr "" #: plugins/admin/departments/dep-filter.xml:49 #: plugins/admin/departments/country.tpl:5 #: plugins/admin/departments/class_countryGeneric.inc:82 #: plugins/admin/departments/class_countryGeneric.inc:83 #: plugins/admin/departments/dep-list.xml:31 #: plugins/admin/departments/dep-list.xml:117 #: plugins/admin/departments/class_departmentManagement.inc:217 msgid "Country" msgstr "Paese" #: plugins/admin/departments/dep-filter.xml:63 #: plugins/admin/departments/dep-list.xml:39 #: plugins/admin/departments/dep-list.xml:124 #: plugins/admin/departments/class_departmentManagement.inc:229 #: plugins/admin/departments/locality.tpl:5 #: plugins/admin/departments/class_localityGeneric.inc:82 #: plugins/admin/departments/class_localityGeneric.inc:83 #, fuzzy msgid "Locality" msgstr "Località" #: plugins/admin/departments/dep-filter.xml:105 #: plugins/admin/departments/dep-list.xml:15 #: plugins/admin/departments/dep-list.xml:103 #: plugins/admin/departments/class_departmentManagement.inc:193 #: plugins/admin/departments/domain.tpl:5 #, fuzzy msgid "Domain" msgstr "nel dominio" #: plugins/admin/departments/country.tpl:11 #: plugins/admin/departments/class_countryGeneric.inc:91 #, fuzzy msgid "Country name" msgstr "Paese" #: plugins/admin/departments/country.tpl:14 msgid "Name of country to create" msgstr "" #: plugins/admin/departments/dep-list.xml:11 #, fuzzy msgid "List of structural objects" msgstr "Nome del gruppo" #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "You are currently moving/renaming this department." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:6 msgid "" "Modifying a departments naming attribute 'ou' or base may corrupt ACLs and " "snapshot entries for all entire objects." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:9 msgid "GOsa can NOT fix this for you, yet." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:12 msgid "" "Before you confirm this action, ensure that everything will be as expected, " "possibly the best solution is a backup." msgstr "" #: plugins/admin/departments/organization.tpl:11 #, fuzzy msgid "Name of organization" msgstr "Organizzazione" #: plugins/admin/departments/organization.tpl:14 msgid "Name of organization to create" msgstr "" #: plugins/admin/departments/organization.tpl:30 #: plugins/admin/departments/generic.tpl:30 msgid "Category for this subtree" msgstr "" #: plugins/admin/departments/organization.tpl:89 #: plugins/admin/departments/generic.tpl:90 msgid "State where this subtree is located" msgstr "" #: plugins/admin/departments/organization.tpl:97 #: plugins/admin/departments/generic.tpl:98 msgid "Location of this subtree" msgstr "" #: plugins/admin/departments/organization.tpl:105 #: plugins/admin/departments/generic.tpl:106 msgid "Postal address of this subtree" msgstr "" #: plugins/admin/departments/organization.tpl:112 #: plugins/admin/departments/generic.tpl:113 msgid "Base telephone number of this subtree" msgstr "" #: plugins/admin/departments/organization.tpl:120 #: plugins/admin/departments/generic.tpl:121 msgid "Base facsimile telephone number of this subtree" msgstr "" #: plugins/admin/departments/class_department.inc:439 msgid "Cannot find an unused tag for this administrative unit!" msgstr "" #: plugins/admin/departments/class_department.inc:507 #, php-format msgid "Tagging '%s'." msgstr "" #: plugins/admin/departments/class_department.inc:588 #, php-format msgid "Moving '%s' to '%s'" msgstr "" #: plugins/admin/departments/class_department.inc:629 #, php-format msgid "FAILED to copy %s, aborting operation" msgstr "" #: plugins/admin/departments/class_department.inc:660 #: plugins/admin/departments/class_department.inc:671 msgid "Departments" msgstr "Dipartimenti" #: plugins/admin/departments/class_department.inc:674 #, fuzzy msgid "Department name" msgstr "Dipartimento" #: plugins/admin/departments/class_department.inc:682 msgid "Telephone" msgstr "Telefono" #: plugins/admin/departments/class_department.inc:737 #, php-format msgid "Object '%s' is already tagged" msgstr "" #: plugins/admin/departments/class_department.inc:744 #, php-format msgid "Adding tag (%s) to object '%s'" msgstr "" #: plugins/admin/departments/class_department.inc:776 #, php-format msgid "Removing tag from object '%s'" msgstr "" #: plugins/admin/departments/dep_iframe.tpl:1 msgid "Processing the requested operation" msgstr "" #: plugins/admin/departments/dep_iframe.tpl:7 msgid "" "Your browser doesn't support IFRAME HTML elements. Please use this link to " "perform the requested operation." msgstr "" #: plugins/admin/departments/class_domain.inc:81 #: plugins/admin/departments/class_domain.inc:82 #: plugins/admin/departments/class_departmentManagement.inc:205 #: plugins/admin/departments/class_dcObject.inc:81 #: plugins/admin/departments/class_dcObject.inc:82 #, fuzzy msgid "Domain Component" msgstr "Amministratori di Dominio" #: plugins/admin/departments/class_organizationGeneric.inc:122 #, fuzzy msgid "Organization name" msgstr "Organizzazione" #: plugins/admin/departments/class_organizationGeneric.inc:132 #: plugins/generic/infoPage/class_infoPage.inc:109 msgid "Phone number" msgstr "Numero di telefono" #: plugins/admin/departments/generic.tpl:11 msgid "Name of department" msgstr "" #: plugins/admin/departments/generic.tpl:14 msgid "Name of subtree to create" msgstr "" #: plugins/admin/departments/generic.tpl:22 #, fuzzy msgid "Descriptive text for department" msgstr "Nome descrittivo del gruppo" #: plugins/admin/departments/class_departmentManagement.inc:25 #, fuzzy msgid "Directory structure" msgstr "Directory" #: plugins/admin/departments/class_departmentManagement.inc:26 msgid "" "Manage organizations, organizational units, localities, countries and more" msgstr "" #: plugins/admin/departments/class_departmentManagement.inc:125 msgid "" "As soon as the tag operation has finished, you can scroll down to end of the " "page and press the 'Continue' button to continue with the department " "management dialog." msgstr "" #: plugins/admin/departments/domain.tpl:11 #, fuzzy msgid "Domain name" msgstr "Amministratori di Dominio" #: plugins/admin/departments/domain.tpl:14 msgid "Name of domain to create" msgstr "" #: plugins/admin/users/password.tpl:4 msgid "" "To change the user password use the fields below. The changes take effect " "immediately. Please memorize the new password, because the user wouldn't be " "able to login without it." msgstr "" #: plugins/admin/users/password.tpl:11 plugins/admin/users/password.tpl:39 #, fuzzy msgid "Password input dialog" msgstr "Cambia la password" #: plugins/admin/users/password.tpl:27 plugins/admin/users/password.tpl:79 #, fuzzy msgid "Strength" msgstr "Strada" #: plugins/admin/users/password.tpl:95 #, fuzzy msgid "Enforce password change on next login." msgstr "Cambia la password" #: plugins/admin/users/templatize.tpl:2 #, fuzzy msgid "Applying a template" msgstr "Template" #: plugins/admin/users/templatize.tpl:6 msgid "" "Applying a template to several users will replace all user attributes " "defined in the template." msgstr "" #: plugins/admin/users/templatize.tpl:13 #, fuzzy msgid "Apply user template" msgstr "Template" #: plugins/admin/users/templatize.tpl:15 plugins/admin/users/template.tpl:15 #: plugins/admin/users/class_userManagement.inc:546 #: plugins/admin/users/user-list.xml:15 plugins/admin/users/user-list.xml:102 msgid "Template" msgstr "" #: plugins/admin/users/templatize.tpl:32 msgid "No templates available!" msgstr "" #: plugins/admin/users/user-filter.xml:33 msgid "Show templates" msgstr "Mostra utenti template" #: plugins/admin/users/user-filter.xml:47 #, fuzzy msgid "Show POSIX users" msgstr "Impostazioni Unix" #: plugins/admin/users/user-filter.xml:61 #, fuzzy msgid "Show SAMBA users" msgstr "Mostra server" #: plugins/admin/users/user-filter.xml:75 #, fuzzy msgid "Show mail users" msgstr "Mostra utenti di posta" #: plugins/admin/users/template.tpl:2 msgid "Creating a new user using templates" msgstr "Crea un nuovo utente usando i template" #: plugins/admin/users/template.tpl:6 msgid "" "Creating a new user can be assisted by using templates. Many database " "records will be filled automatically. Choose 'none' to skip the usage of " "templates." msgstr "" #: plugins/admin/users/template.tpl:13 msgid "User template selection dialog" msgstr "" #: plugins/admin/users/template.tpl:43 #, fuzzy msgid "Modify the uid proposal" msgstr "Modifica proprietà" #: plugins/admin/users/class_userManagement.inc:26 msgid "" "Manage aspects of user accounts like generic, POSIX, samba and mail settings" msgstr "" #: plugins/admin/users/class_userManagement.inc:401 #, fuzzy msgid "You have no permission to change this users password!" msgstr "Non hai il permesso di cambiare la tua password." #: plugins/admin/users/class_userManagement.inc:613 msgid "Cannot generate a unique id, please specify it manually!" msgstr "" #: plugins/admin/users/class_userManagement.inc:802 #, fuzzy msgid "Account locking" msgstr "Sicurezza" #: plugins/admin/users/class_userManagement.inc:803 #, php-format msgid "" "Password method '%s' does not support locking. Account (%s) has not been " "locked!" msgstr "" #: plugins/admin/users/class_userManagement.inc:876 #, fuzzy msgid "Unlock account" msgstr "Identità" #: plugins/admin/users/class_userManagement.inc:878 #, fuzzy msgid "Lock account" msgstr "Identità" #: plugins/admin/users/class_userManagement.inc:891 #, fuzzy msgid "Edit generic properties" msgstr "Modifica proprietà" #: plugins/admin/users/class_userManagement.inc:906 msgid "Netatalk" msgstr "" #: plugins/admin/users/class_userManagement.inc:907 #, fuzzy msgid "Edit Netatalk properties" msgstr "Modifica proprietà" #: plugins/admin/users/class_userManagement.inc:914 msgid "FAX" msgstr "FAX" #: plugins/admin/users/class_userManagement.inc:915 #, fuzzy msgid "Edit FAX properties" msgstr "Modifica proprietà" #: plugins/admin/users/user-list.xml:11 msgid "List of users" msgstr "Lista degli utenti" #: plugins/admin/users/user-list.xml:140 #, fuzzy msgid "Lock users" msgstr "Lista degli utenti" #: plugins/admin/users/user-list.xml:148 #, fuzzy msgid "Unlock users" msgstr "Utenti di Dominio" #: plugins/admin/users/user-list.xml:167 #, fuzzy msgid "Apply template" msgstr "Template" #: plugins/admin/users/user-list.xml:199 #, fuzzy msgid "New user from template" msgstr "Nuovo template" #: plugins/admin/users/user-list.xml:213 #, fuzzy msgid "Edit user" msgstr "Modifica contatto" #: plugins/admin/users/user-list.xml:222 msgid "%{filter:lockLabel(userPassword)}" msgstr "" #: plugins/admin/users/user-list.xml:245 #, fuzzy msgid "Remove user" msgstr "Elimina foto" #: plugins/generic/welcome/class_welcome.inc:5 #: plugins/generic/welcome/class_welcome.inc:6 msgid "Back to main menu" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:15 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:15 msgid "Maximum" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:16 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:16 msgid "Average" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:17 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:17 msgid "Minimum" msgstr "" #: plugins/generic/statistics/chartClasses/class_actionSelectChart.inc:104 #, fuzzy msgid "Action" msgstr "Azioni" #: plugins/generic/statistics/chartClasses/class_statChart.inc:73 #, fuzzy msgid "Systems" msgstr "Sistemi" #: plugins/generic/statistics/statistics.tpl:2 msgid "Usage statistics" msgstr "" #: plugins/generic/statistics/statistics.tpl:5 #: plugins/generic/statistics/statistics.tpl:10 msgid "" "This feature is disabled. To enable it you have to register GOsa, you can " "initiate a registration using the dash-board plugin." msgstr "" #: plugins/generic/statistics/statistics.tpl:6 #: plugins/generic/statistics/statistics.tpl:12 #, fuzzy msgid "Dash board" msgstr "Opzioni di posta dell'identità" #: plugins/generic/statistics/statistics.tpl:16 #, fuzzy msgid "" "Communication with the GOsa-backend failed. Please check the RPC " "configuration!" msgstr "Impossibile connettersi al server del database!" #: plugins/generic/statistics/statistics.tpl:22 msgid "Send" msgstr "" #: plugins/generic/statistics/statistics.tpl:28 msgid "Generate report for" msgstr "" #: plugins/generic/statistics/statistics.tpl:56 msgid "Update" msgstr "" #: plugins/generic/statistics/statistics.tpl:69 #: plugins/generic/statistics/statistics.tpl:78 msgid "No statistic data for given period" msgstr "" #: plugins/generic/statistics/statistics.tpl:87 #, fuzzy msgid "Select report type" msgstr "Rimuovi" #: plugins/generic/statistics/class_statistics.inc:263 #, fuzzy, php-format msgid "" "You have currently %s unsubmitted statistic collection, do you want to " "transmit them now?" msgstr "" "Stai modificando un campo del database. Vuoi abbandonare i cambiamenti?" #: plugins/generic/dashBoard/dbChannelStatus/contents.tpl:1 #, fuzzy msgid "Channels" msgstr "Annulla" #: plugins/generic/dashBoard/Register/register.tpl:3 #, fuzzy msgid "GOsa registration" msgstr "Impostazioni generali delle code" #: plugins/generic/dashBoard/Register/register.tpl:7 msgid "Do you want to register GOsa and benefit from the features it brings?" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:11 msgid "I do not want to register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:17 #: plugins/generic/dashBoard/dashBoard.tpl:5 msgid "Register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:19 msgid "Additionally to the 'Annonomous' account you can:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:21 msgid "Access to 'Premium-Channels'." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:22 msgid "" "Watch the status of current plugin updates/patches and the availability of " "new plugins." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:23 msgid "Recieve newsletter, if wanted." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:24 msgid "View several usefull statistics about your GOsa installation" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:29 msgid "What information will be transmitted to the backend and maybe stored:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:31 msgid "All personal information filled in the registration form." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:32 msgid "Information about the installed plugins and their version." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:33 msgid "" "The GOsa-UUID (will be generated during the registration) and a password, to " "authenticate." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:34 msgid "" "The bugs you will report and the corresponding trace. You can select what " "information you want to send in." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:35 msgid "" "When the statistics extension is used. GOsa will transmit information about " "plugins, their usage and the amount of objects present in your ldap " "database. No sensitive data is transmitted here, just the object type, the " "action performed, cpu usage, memory usage, elapsed time..." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:69 #: plugins/generic/dashBoard/Register/register.tpl:80 #, fuzzy msgid "Registration complete" msgstr "incompleto" #: plugins/generic/dashBoard/Register/register.tpl:71 #, fuzzy msgid "GOsa instance successfully registered" msgstr "Setup completato" #: plugins/generic/dashBoard/Register/register.tpl:82 msgid "GOsa instance will not be registered" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:54 msgid "" "Communciation with the backend failed! Please check your internet connection!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:56 msgid "" "Authentication failed, please check combination of username and password!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:58 msgid "" "Internal server error, please try again later. If the problem persists " "contact the GOsa-Team!" msgstr "" #: plugins/generic/dashBoard/dbNotifications/contents.tpl:1 #, fuzzy msgid "Notifications" msgstr "Località" #: plugins/generic/dashBoard/dashBoard.tpl:2 msgid "This feature is only accessible for registrated instances of GOsa" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:7 msgid "" "Unfortunately the registration server cannot be reached, maybe the server is " "down for maintaince or you've no internet access!" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:13 #, fuzzy msgid "GOsa dash board" msgstr "Opzioni di posta dell'identità" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:69 msgid "Version mismatch" msgstr "" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:73 #, fuzzy msgid "Schema missing" msgstr "Impostazioni Samba" #: plugins/generic/dashBoard/dbPluginStatus/contents.tpl:1 #, fuzzy msgid "Plugin status" msgstr "Stato" #: plugins/generic/references/class_reference.inc:70 #, fuzzy msgid "Role membership" msgstr "Gruppi di appartenenza" #: plugins/generic/references/class_reference.inc:76 #, fuzzy msgid "Object group membership" msgstr "Gruppo di oggetti" #: plugins/generic/references/class_reference.inc:82 #, fuzzy msgid "Department manager" msgstr "Dipartimento" #: plugins/generic/references/class_reference.inc:88 #, fuzzy msgid "User manager" msgstr "Nome utente" #: plugins/generic/references/contents.tpl:2 #: plugins/generic/references/contents.tpl:3 #, fuzzy msgid "Object information" msgstr "Informazioni personali" #: plugins/generic/references/contents.tpl:7 #, fuzzy msgid "Show raw object entry" msgstr "Gruppi di oggetti" #: plugins/generic/references/contents.tpl:18 #: plugins/generic/references/contents.tpl:20 #, fuzzy msgid "Last modification" msgstr "Località" #: plugins/generic/references/contents.tpl:29 #, fuzzy msgid "Object references" msgstr "Riferimenti" #: plugins/generic/references/contents.tpl:45 #, fuzzy msgid "ACL trace" msgstr "Tipo" #: plugins/generic/references/class_aclResolver.inc:143 msgid "Enter another user name" msgstr "" #: plugins/generic/references/class_aclResolver.inc:193 #, fuzzy msgid "ACLs" msgstr "ACL" #: plugins/generic/references/class_aclResolver.inc:198 #, php-format msgid "List of effective ACLs for '%s'" msgstr "" #: plugins/generic/references/class_aclResolver.inc:199 #: plugins/generic/references/class_aclResolver.inc:203 #, fuzzy msgid "Object permissions" msgstr "Impostazioni FAX" #: plugins/generic/references/class_aclResolver.inc:311 #, fuzzy msgid "create" msgstr "Creare" #: plugins/generic/references/class_aclResolver.inc:312 #, fuzzy msgid "remove" msgstr "Rimuovi" #: plugins/generic/references/class_aclResolver.inc:313 #, fuzzy msgid "move" msgstr "Rimuovi" #, fuzzy #~ msgid "Member selection" #~ msgstr "Impostazioni FAX" #, fuzzy #~ msgid "Common group" #~ msgstr "Mostra gruppi" #, fuzzy #~ msgid "Groups differ" #~ msgstr "Gruppo di utenti" #, fuzzy #~ msgid "List of items" #~ msgstr "Lista degli utenti" #, fuzzy #~ msgid "Edit item" #~ msgstr "Modifica certificati" #, fuzzy #~ msgid "Remove item" #~ msgstr "Elimina foto" #, fuzzy #~ msgid "Container" #~ msgstr "Continua" #, fuzzy #~ msgid "Config management" #~ msgstr "Riferimenti" #, fuzzy #~ msgid "Distribution" #~ msgstr "Descrizione" #, fuzzy #~ msgid "Component" #~ msgstr "Amministratori di Dominio" #~ msgid "Home phone" #~ msgstr "Telefono privato" #~ msgid "Organizational unit" #~ msgstr "Unità del'organizzazione" #, fuzzy #~ msgid "Max" #~ msgstr "Maggio" #, fuzzy #~ msgid "Min" #~ msgstr "Principale" #~ msgid "Welcome %s!" #~ msgstr "Benvenuto %s!" #, fuzzy #~ msgid "The folder %s specified for %s:%s cannot be used for reading!" #~ msgstr "Il valore specificato per l'UID non è valido." #, fuzzy #~ msgid "Object info" #~ msgstr "Nome dell'oggetto" #, fuzzy #~ msgid "Acls" #~ msgstr "Annulla" #, fuzzy #~ msgid "The values for 'New password' and 'Repeated new password' differ!" #~ msgstr "Le password nuova e ripetuta non corrispondono" #, fuzzy #~ msgid "The password used as new and current are too similar!" #~ msgstr "" #~ "La password immessa come 'Nuova password' è troppo simile a quella " #~ "attuale." #, fuzzy #~ msgid "The password used as new is to short!" #~ msgstr "La 'Nuova password' immessa è troppo corta." #, fuzzy #~ msgid "External password changer reported a problem: %s" #~ msgstr "Il programma esterno per cambiare la password ha avuto un problema:" #, fuzzy #~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." #~ msgstr "Errore durante la connessione al server LDAP. Il server dice: '%s'" #, fuzzy #~ msgid "Username / UID is not unique inside the LDAP tree!" #~ msgstr "" #~ "Errore di connessione al server LDAP. Contatta l'amministratore del " #~ "sistema." #, fuzzy #~ msgid "" #~ "Username / UID is not unique inside the LDAP tree. Please contact your " #~ "Administrator." #~ msgstr "" #~ "Errore di connessione al server LDAP. Contatta l'amministratore del " #~ "sistema." #, fuzzy #~ msgid "incomplete" #~ msgstr "incompleto" #, fuzzy #~ msgid "You're going to edit the LDAP entry/entries %s" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "Apply filter" #~ msgstr "Template" #, fuzzy #~ msgid "Cannot write to revision file!" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "LDAP warning" #~ msgstr "Amministrazione LDAP" #, fuzzy #~ msgid "Used to store account specific informations." #~ msgstr "L'account spira dopo" #, fuzzy #~ msgid "Missing required object class '%s'!" #~ msgstr "Lista dei dipartimenti" #, fuzzy #~ msgid "Missing optional object class '%s'!" #~ msgstr "Lista dei dipartimenti" #, fuzzy #~ msgid "Version mismatch for required object class '%s' (!=%s)!" #~ msgstr "Lista dei dipartimenti" #, fuzzy #~ msgid "Cannot allocate a free ID:" #~ msgstr "Troppi utenti non posso allocare un ID libero!" #, fuzzy #~ msgid "Cannot allocate a free ID!" #~ msgstr "Troppi utenti non posso allocare un ID libero!" #, fuzzy #~ msgid "Surename" #~ msgstr "Cognome" #, fuzzy #~ msgid "External password changer reported a problem: %s." #~ msgstr "Il programma esterno per cambiare la password ha avuto un problema:" #~ msgid "Username" #~ msgstr "Nome utente" #~ msgid "" #~ "You've successfully changed your password. Remember to change all " #~ "programms configured to use it as well." #~ msgstr "" #~ "Hai cambiato con successo la tua password. Ricorda di cambiare tutto i " #~ "programmmi configurati per usarla." #~ msgid "Admin DN" #~ msgstr "DN dell'amministratore" #, fuzzy #~ msgid "Grant permission to owner" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Password change not allowed" #~ msgstr "Cambia la password" #~ msgid "Preferred langage" #~ msgstr "Lingua preferita" #, fuzzy #~ msgid "Posix settings" #~ msgstr "Impostazioni Unix" #, fuzzy #~ msgid "You have no permission to set your password!" #~ msgstr "Non hai il permesso di cambiare la tua password." #~ msgid "" #~ "You have changed the method your password is stored in the ldap database. " #~ "For that reason you've to enter your password at this point again. GOsa " #~ "will then encode it with the selected method." #~ msgstr "" #~ "Hai modificato il metodo con cui la tua password è immagazzinata nel " #~ "database LDAP. Per questo motivo devi inserire nuovamnete la tua password." #, fuzzy #~ msgid "Posix" #~ msgstr "Proxy" #, fuzzy #~ msgid "Edit posix properties" #~ msgstr "Modifica proprietà" #, fuzzy #~ msgid "Acl" #~ msgstr "Annulla" #, fuzzy #~ msgid "winstations" #~ msgstr "Amministrazione" #, fuzzy #~ msgid "Sytem trust" #~ msgstr "Accesso ai sistemi" #, fuzzy #~ msgid "Processing" #~ msgstr "Permessi" #, fuzzy #~ msgid "Created" #~ msgstr "Creare" #, fuzzy #~ msgid "No Content" #~ msgstr "Contenuti" #, fuzzy #~ msgid "Reset Content" #~ msgstr "Contenuti" #, fuzzy #~ msgid "Partial Content" #~ msgstr "CAP" #, fuzzy #~ msgid "Multi-Status" #~ msgstr "Stato" #, fuzzy #~ msgid "See Other" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Not Modified" #~ msgstr "Cambia la password" #, fuzzy #~ msgid "Use Proxy" #~ msgstr "Proxy" #, fuzzy #~ msgid "(reserviert)" #~ msgstr "server" #, fuzzy #~ msgid "Not Found" #~ msgstr "Cambia la password" #, fuzzy #~ msgid "Method Not Allowed" #~ msgstr "Cambia la password" #, fuzzy #~ msgid "Proxy Authentication Required" #~ msgstr "Destinazione" #, fuzzy #~ msgid "Gone" #~ msgstr "nessuno" #, fuzzy #~ msgid "Precondition Failed" #~ msgstr "File di configurazione" #, fuzzy #~ msgid "Expectation Failed" #~ msgstr "La query al database è fallita!" #, fuzzy #~ msgid "Locked" #~ msgstr "Lista degli utenti" #, fuzzy #~ msgid "Unordered Collection" #~ msgstr "Impostazioni FAX" #, fuzzy #~ msgid "Internal Server Error" #~ msgstr "Terminal Server" #, fuzzy #~ msgid "Not Implemented" #~ msgstr "incompleto" #, fuzzy #~ msgid "Gateway Time-out" #~ msgstr "Dominio" #, fuzzy #~ msgid "GOsa settings 3/3" #~ msgstr "Opzioni di posta dell'identità" #, fuzzy #~ msgid "Maximum LDAP query time must be a numeric value!" #~ msgstr "Inoltra i messaggi a" #, fuzzy #~ msgid "Create a basic, single site configuration" #~ msgstr "Scarica il file di configurazione" #, fuzzy #~ msgid "Find every possible configuration error" #~ msgstr "File di configurazione" #, fuzzy #~ msgid "To continue..." #~ msgstr "Configurazione continua..." #~ msgid "Samba settings" #~ msgstr "Impostazioni Samba" #, fuzzy #~ msgid "Samba SID" #~ msgstr "Samba" #, fuzzy #~ msgid "RID base" #~ msgstr "Database" #, fuzzy #~ msgid "Workstation container" #~ msgstr "Mostra workstation" #, fuzzy #~ msgid "Samba SID mapping" #~ msgstr "Samba" #, fuzzy #~ msgid "Timezone" #~ msgstr "Cellulare" #, fuzzy #~ msgid "Please choose your preferred timezone here" #~ msgstr "Lingua preferita" #, fuzzy #~ msgid "Additional GOsa settings" #~ msgstr "Opzioni applicazione" #, fuzzy #~ msgid "Government mode" #~ msgstr "nella cartella" #, fuzzy #~ msgid "GOsa logging" #~ msgstr "Opzioni di posta dell'identità" #, fuzzy #~ msgid "Mail settings" #~ msgstr "Opzioni di posta dell'identità" #~ msgid "Mail method" #~ msgstr "Metodo di amministrazione della posta" #, fuzzy #~ msgid "Vacation templates" #~ msgstr "Messaggio di di risposta automatica" #, fuzzy #~ msgid "Snapshots / Undo" #~ msgstr "Nome applicazione" #, fuzzy #~ msgid "Enable snapshots" #~ msgstr "Crea estensioni di posta" #, fuzzy #~ msgid "Snapshot base" #~ msgstr "Nome applicazione" #, fuzzy #~ msgid "GOsa settings 2/3" #~ msgstr "Opzioni di posta dell'identità" #, fuzzy #~ msgid "Customize special parameters" #~ msgstr "Parametro" #, fuzzy #~ msgid "Checking for invisible departments" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "Checking for invisible users" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "Checking for users outside the people tree" #~ msgstr "Controllo il modulo cups" #, fuzzy #~ msgid "Checking for groups outside the groups tree" #~ msgstr "Controllo il modulo cups" #, fuzzy #~ msgid "Checking for duplicated UID numbers" #~ msgstr "Controllo il supporto per %s" #, fuzzy #~ msgid "Checking for duplicate GID numbers" #~ msgstr "Controllo il supporto per %s" #, fuzzy #~ msgid "Checking for old style USB devices" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "Checking for old services that have to be migrated" #~ msgstr "Controllo il modulo cups" #, fuzzy #~ msgid "Checking for old style application menus" #~ msgstr "Controllo il supporto per %s" #, fuzzy #~ msgid "Found %s duplicate values for attribute 'uidNumber'." #~ msgstr "Prego inserire un numero di telefono valido!" #, fuzzy #~ msgid "Found %s duplicate values for attribute 'gidNumber'." #~ msgstr "Prego inserire un numero di telefono valido!" #, fuzzy #~ msgid "Move" #~ msgstr "Dominio" #, fuzzy #~ msgid "Cannot migrate department '%s':" #~ msgstr "Vai al dipartimento base" #, fuzzy #~ msgid "GOsa 2.5 administrative accounts found: %s" #~ msgstr "Crea estensioni di posta" #, fuzzy #~ msgid "There is no valid GOsa 2.6 administrator account inside your LDAP." #~ msgstr "Crea estensioni di posta" #, fuzzy #~ msgid "Cannot move users to the requested department!" #~ msgstr "Mostra utenti del dipartimento" #, fuzzy #~ msgid "to" #~ msgstr "Rapporto" #, fuzzy #~ msgid "Updating '%s' failed: %s" #~ msgstr "Utenti di Dominio" #, fuzzy #~ msgid "Theme" #~ msgstr "Cellulare" #, fuzzy #~ msgid "Apache" #~ msgstr "Annulla" #, fuzzy #~ msgid "People and group storage" #~ msgstr "Ou delle persone" #, fuzzy #~ msgid "People DN attribute" #~ msgstr "Attributo DN delle persone" #, fuzzy #~ msgid "People storage subtree" #~ msgstr "Ou delle persone" #, fuzzy #~ msgid "Group storage subtree" #~ msgstr "Ou dei gruppi" #, fuzzy #~ msgid "Automatic UIDs" #~ msgstr "automatico" #, fuzzy #~ msgid "Number base for people/groups" #~ msgstr "UID di base per utenti/gruppi" #, fuzzy #~ msgid "Password settings" #~ msgstr "Opzioni di posta dell'identità" #, fuzzy #~ msgid "Password encryption algorithm" #~ msgstr "Algoritmo di criptaggio" #, fuzzy #~ msgid "Password restrictions" #~ msgstr "La password spira il" #, fuzzy #~ msgid "Password change hook" #~ msgstr "Cambia la password" #~ msgid "" #~ "GOsa supports several encryption types for your passwords. Normally this " #~ "is adjustable via user templates, but you can specify a default method to " #~ "be used here, too." #~ msgstr "" #~ "GOsa supporta numerosi algoritmi di criptaggio per le password. Imposta " #~ "quello di default." #, fuzzy #~ msgid "" #~ "GOsa always acts as admin and manages access rights internally. This is a " #~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " #~ "For this to work, we need the admin DN and the corresponding password." #~ msgstr "" #~ "GOsa agisce sul DIT tramite l'utente di amministrazione e possiede uno " #~ "schema di permessi interno. Questo è un workaround finché non sarà " #~ "completato il supportp per le ACL all'interno del DIT in OpenLDAP." #~ msgid "" #~ "Some basic LDAP parameters are tunable and affect the locations where " #~ "GOsa saves people and groups, including the way accounts get created. " #~ "Check the values below if the fit your needs." #~ msgstr "" #~ "Alcuni parametri di LDAP sono selezionabili e influenzano il posto in cui " #~ "GOsa salva le identità e i gruppi. Controlla che i valori riportati " #~ "corrispondano alle impostaioni del tuo DIT." #, fuzzy #~ msgid "" #~ "GOsa has modular support for several mail methods. These methods provide " #~ "interfaces to users mailboxes and general handling for quotas. You can " #~ "choose the dummy plugin to leave all your mail settings untouched." #~ msgstr "" #~ "GOsa supporta numerosi metodi per amministrare la posta. Questi metodi " #~ "possiedono interfacce per impostare opzioni come ad esempio la quota. " #~ "Puoi impostare il metodo 'dummy' per mantenere tutte le impostazioni." #, fuzzy #~ msgid "Enable primary group filter" #~ msgstr "Mostra gruppi di utenti" #, fuzzy #~ msgid "Display summary in listings" #~ msgstr "Mosra gruppi corrispondenti a" #, fuzzy #~ msgid "Honour administrative units" #~ msgstr "Amministrazione dei gruppi di utenti" #, fuzzy #~ msgid "Path for PPD storage" #~ msgstr "Algorimo password" #, fuzzy #~ msgid "Mail queue script" #~ msgstr "Script path" #, fuzzy #~ msgid "Notification script" #~ msgstr "Non ci sono certificati installati" #, fuzzy #~ msgid "Remember dialog filter settings" #~ msgstr "Impostazioni generali delle code" #, fuzzy #~ msgid "Session lifetime" #~ msgstr "Rilevato un conflitto di sessione" #, fuzzy #~ msgid "Show PHP errors" #~ msgstr "Errore PHP" #, fuzzy #~ msgid "Maximum LDAP query time" #~ msgstr "Inoltra i messaggi a" #, fuzzy #~ msgid "Debug level" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Disabled" #~ msgstr "disabilitato" #, fuzzy #~ msgid "Move selected workstations" #~ msgstr "Selezione le workstation da aggiungere" #, fuzzy #~ msgid "Hide changes" #~ msgstr "Open-Xchange" #, fuzzy #~ msgid "Show changes" #~ msgstr "Mostra telefoni" #, fuzzy #~ msgid "Move selected users into this people tree" #~ msgstr "Nuovo template" #, fuzzy #~ msgid "Migrate GOsa 2.5 administrative accounts" #~ msgstr "Crea estensioni di posta" #, fuzzy #~ msgid "Refresh" #~ msgstr "Riferimenti" #, fuzzy #~ msgid "Installation" #~ msgstr "Amministrazione" #, fuzzy #~ msgid "GOsa settings 1/3" #~ msgstr "Opzioni di posta dell'identità" #~ msgid "People storage ou" #~ msgstr "Ou delle persone" #~ msgid "Group storage ou" #~ msgstr "Ou dei gruppi" #, fuzzy #~ msgid "Login screen" #~ msgstr "Utenti di Dominio" #, fuzzy #~ msgid "" #~ "Please use your username and your password to log into the site " #~ "administration system." #~ msgstr "Usa il tuo nome utente e password per connetterti" #~ msgid "Sign in" #~ msgstr "Entra" #, fuzzy #~ msgid "" #~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." #~ msgstr "" #~ "Quindi - Se sei sicuro - premi Rimuovi per continuare o " #~ "Annulla per abortire." #~ msgid "Help" #~ msgstr "Aiuto" #~ msgid "Sign out" #~ msgstr "Termina la sessione" #~ msgid "Signed in:" #~ msgstr "Connesso:" #, fuzzy #~ msgid "Success" #~ msgstr "Setup completato" #, fuzzy #~ msgid "New password repeated" #~ msgstr "Nuova password" #, fuzzy #~ msgid "Change" #~ msgstr "Annulla" #~ msgid "UNIX" #~ msgstr "Unix" #~ msgid "FTP" #~ msgstr "FTP" #~ msgid "Object name" #~ msgstr "Nome dell'oggetto" #~ msgid "This object has no relationship to other objects." #~ msgstr "Questo oggetto non ha relazioni con altri oggetti." #~ msgid "" #~ "Changing the password affects your authentification on mail, proxy, samba " #~ "and unix services." #~ msgstr "" #~ "Cambiare la passord influisce sull'autenticazione su posta, proxu " #~ "Internet, Samba e Unix." #, fuzzy #~ msgid "User identification" #~ msgstr "Amministrazione utenti" #~ msgid "Personal picture" #~ msgstr "Foto personale" #, fuzzy #~ msgid "In all groups" #~ msgstr "Gruppo primario" #, fuzzy #~ msgid "Not in all groups" #~ msgstr "Mostra gruppi di posta" #, fuzzy #~ msgid "All categories" #~ msgstr "Aggiungi contatto" #~ msgid "Startup" #~ msgstr "Avvio" #, fuzzy #~ msgid "Cannot bind to LDAP. Please contact the system administrator." #~ msgstr "" #~ "Errore di connessione al server LDAP. Contatta l'amministratore del " #~ "sistema." #, fuzzy #~ msgid "Password reset" #~ msgstr "La password spira il" #, fuzzy #~ msgid "Down" #~ msgstr "Dominio" #, fuzzy #~ msgid "Select to list objects of type '%s'." #~ msgstr "Gruppo di oggetti" #, fuzzy #~ msgid "Select to list objects containig '%s'." #~ msgstr "Mostra gruppi che contengono utenti" #, fuzzy #~ msgid "Select to list objects that have '%s' enabled" #~ msgstr "Gruppo di oggetti" #, fuzzy #~ msgid "Select to search within subtrees" #~ msgstr "Seleziona per mostrare le applicazioni" #, fuzzy #~ msgid "in" #~ msgstr "Principale" #, fuzzy #~ msgid "on line" #~ msgstr "Continua" #, fuzzy #~ msgid "Role: %s" #~ msgstr "Ruolo" #~ msgid "Go up one department" #~ msgstr "Sali di dipartimento" #~ msgid "Go to users department" #~ msgstr "Vai agli utenti del dipartimento" #, fuzzy #~ msgid "Remove snapshot" #~ msgstr "Crea estensioni di posta" #, fuzzy #~ msgid "All objects in this category" #~ msgstr "Nome descrittivo del gruppo" #, fuzzy #~ msgid "from" #~ msgstr "e" #, fuzzy #~ msgid "Restore" #~ msgstr "Riprova" #, fuzzy #~ msgid "cut" #~ msgstr "Esegui" #, fuzzy #~ msgid "Old password" #~ msgstr "Password" #, fuzzy #~ msgid "Verify password" #~ msgstr "Password" #~ msgid "Session conflict detected" #~ msgstr "Rilevato un conflitto di sessione" #~ msgid "External password changer reported a problem: " #~ msgstr "Il programma esterno per cambiare la password ha avuto un problema:" #, fuzzy #~ msgid "Show department" #~ msgstr "Mostra dipartimenti" #, fuzzy #~ msgid "Show groups" #~ msgstr "Mostra gruppi samba" #, fuzzy #~ msgid "Show server" #~ msgstr "Mostra server" #, fuzzy #~ msgid "Show workstation" #~ msgstr "Mostra workstation" #, fuzzy #~ msgid "Show terminal" #~ msgstr "Mostra terminali" #, fuzzy #~ msgid "Show printer" #~ msgstr "Mostra stampanti" #, fuzzy #~ msgid "Show phone" #~ msgstr "Mostra telefoni" #, fuzzy #~ msgid "Filter options" #~ msgstr "Applicazioni disponibili" #, fuzzy #~ msgid "Manage object groups" #~ msgstr "Nome del gruppo" #, fuzzy #~ msgid "nested groups" #~ msgstr "Gruppi di oggetti" #, fuzzy #~ msgid "application groups" #~ msgstr "Mostra gruppi di applicazioni" #, fuzzy #~ msgid "department groups" #~ msgstr "dipartimenti" #, fuzzy #~ msgid "server groups" #~ msgstr "server" #, fuzzy #~ msgid "workstation groups" #~ msgstr "Mostra workstation" #, fuzzy #~ msgid "terminal groups" #~ msgstr "Mostra gruppi di posta" #, fuzzy #~ msgid "printer groups" #~ msgstr "Gruppo primario" #, fuzzy #~ msgid "phone groups" #~ msgstr "Mostra gruppi" #~ msgid "Filters" #~ msgstr "Filtri" #~ msgid "Choose the department the search will be based on" #~ msgstr "Scegli il dipartimento di base per la ricerca" #~ msgid "Select systems to add" #~ msgstr "Seleziona un sistema da aggiungere" #~ msgid "Display systems of department" #~ msgstr "Mostra i sistemi del dipartimento" #~ msgid "Display systems matching" #~ msgstr "Mostra i sistemi che corrispondono a:" #~ msgid "Regular expression for matching addresses" #~ msgstr "Espressione regolare per selezionare l'indirizzo" #~ msgid "Show samba groups" #~ msgstr "Mostra gruppi samba" #, fuzzy #~ msgid "Show mail groups" #~ msgstr "Mostra gruppi samba" #~ msgid "Group administration" #~ msgstr "Amministrazione dei gruppi di utenti" #, fuzzy #~ msgid "Manage users" #~ msgstr "Utenti di Dominio" #~ msgid "List of departments" #~ msgstr "Lista dei dipartimenti" #, fuzzy #~ msgid "Manage Departments" #~ msgstr "Dipartimenti" #, fuzzy #~ msgid "Show access control lists" #~ msgstr "Opzioni di accesso" #, fuzzy #~ msgid "Show roles" #~ msgstr "Mostra telefoni" #~ msgid "Show servers" #~ msgstr "Mostra server" #~ msgid "Show workstations" #~ msgstr "Mostra workstation" #~ msgid "Show terminals" #~ msgstr "Mostra terminali" #, fuzzy #~ msgid "List navigation" #~ msgstr "Amministrazione" #, fuzzy #~ msgid "Group selection filter" #~ msgstr "Impostazioni FAX" #, fuzzy #~ msgid "Posix extension settings" #~ msgstr "Impostazioni Unix" #, fuzzy #~ msgid "Account accessibility" #~ msgstr "File di configurazione" #~ msgid "Go to root department" #~ msgstr "Vai al dipartimento base" #~ msgid "Home" #~ msgstr "Home" #, fuzzy #~ msgid "" #~ "This is the GOsa main menu. You can select your tasks from the menu on " #~ "the left, or by choosing one of the pictograms below. All changes apply " #~ "directly to your companies LDAP server." #~ msgstr "" #~ "Questa è la schermata principale di GOsa. Puoi selezionare le attività " #~ "tramite il menù sulla sinitra o cliccando slle icone qui sotto. Tutti i " #~ "cambiamenti sono applicati immediatamente al server LDAP." #~ msgid "" #~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " #~ "get back to the pictogram view." #~ msgstr "" #~ "Usa Termina la sessione in alto a sinistra per uscire e " #~ "Principale per tornare alla schermata principale." #, fuzzy #~ msgid "Show functional users" #~ msgstr "Mostra utenti funzionali" #, fuzzy #~ msgid "Show Samba users" #~ msgstr "Mostra utenti di posta" #~ msgid "Choose subtree to place user in" #~ msgstr "Scegli il subtree per l'utente" #, fuzzy #~ msgid "Select a base" #~ msgstr "Rimuovi" #~ msgid "Generic user information" #~ msgstr "Informazioni generali" #~ msgid "Account" #~ msgstr "Sicurezza" #~ msgid "Select groups to add" #~ msgstr "Seleziona un gruppo da aggiungere" #~ msgid "Display groups of department" #~ msgstr "Mostra gruppi di dipartimenti" #~ msgid "Display groups matching" #~ msgstr "Mosra gruppi corrispondenti a" #~ msgid "Regular expression for matching group names" #~ msgstr "Espressioni regolare per selezionare il nome del gruppo" #~ msgid "Display groups of user" #~ msgstr "Mostra gruppi di utenti" #~ msgid "User name of which groups are shown" #~ msgstr "Nome dell'utente del quale mostrare i gruppi" #, fuzzy #~ msgid "Choose a base" #~ msgstr "Rimuovi" #~ msgid "Choose subtree to place group in" #~ msgstr "Scegli il subtree dove mettere il gruppo" #, fuzzy #~ msgid "Show %s" #~ msgstr "Mostra gruppi" #, fuzzy #~ msgid "people" #~ msgstr "Mostra persone" #, fuzzy #~ msgid "printer" #~ msgstr "stampanti" #~ msgid "Select users to add" #~ msgstr "Selezioni utenti da aggiungere" #~ msgid "Display users of department" #~ msgstr "Mostra utenti del dipartimento" #~ msgid "Display users matching" #~ msgstr "Mostra utenti che corrispondono a" #, fuzzy #~ msgid "givenname" #~ msgstr "Nome" #, fuzzy #~ msgid "surename" #~ msgstr "Cognome" #, fuzzy #~ msgid "Edit ogroup" #~ msgstr "Lista dei gruppi" #, fuzzy #~ msgid "List of ogroups" #~ msgstr "Lista dei gruppi" #, fuzzy #~ msgid "Filter entries with this syntax" #~ msgstr "Mostra gli indirizzi che corrispondono" #, fuzzy #~ msgid "MySQL error" #~ msgstr "Errore LDAP" #, fuzzy #~ msgid "Cannot add location to the database!" #~ msgstr "Impossibile connettersi al server del database!" #~ msgid "Submit department" #~ msgstr "Imposta dipartimento" #~ msgid "edit" #~ msgstr "modifica" #~ msgid "delete" #~ msgstr "elimina" #, fuzzy #~ msgid "Number of listed object groups" #~ msgstr "Nome del gruppo" #, fuzzy #~ msgid "Number of listed departments" #~ msgstr "Imposta dipartimento" #~ msgid "Select to see groups that are primary groups of users" #~ msgstr "" #~ "Selezione per mostrare i gruppi che sono gruppi primari per gli utenti" #, fuzzy #~ msgid "primary groups" #~ msgstr "Gruppo primario" #, fuzzy #~ msgid "samba groups mappings" #~ msgstr "Samba" #, fuzzy #~ msgid "samba groups" #~ msgstr "Gruppo Samba" #, fuzzy #~ msgid "application settings" #~ msgstr "applicazioni" #, fuzzy #~ msgid "mail settings" #~ msgstr "Opzioni di posta dell'identità" #, fuzzy #~ msgid "mail groups" #~ msgstr "Mostra gruppi di posta" #~ msgid "Select to see normal groups that have only functional aspects" #~ msgstr "Seleziona per mostrare i gruppi che hanno solo aspetti funzionali" #, fuzzy #~ msgid "functional groups" #~ msgstr "Mostra gruppi funzionali" #, fuzzy #~ msgid "Number of listed groups" #~ msgstr "Nome del gruppo" #, fuzzy #~ msgid "group" #~ msgstr "gruppi" #~ msgid "User administration" #~ msgstr "Amministrazione utenti" #, fuzzy #~ msgid "templates" #~ msgstr "Template" #, fuzzy #~ msgid "functional users" #~ msgstr "Mostra utenti funzionali" #, fuzzy #~ msgid "POSIX users" #~ msgstr "Impostazioni Unix" #, fuzzy #~ msgid "samba users" #~ msgstr "Utenti di Dominio" #, fuzzy #~ msgid "proxy users" #~ msgstr "Mostra utenti proxy" #, fuzzy #~ msgid "phone users" #~ msgstr "Mostra utenti proxy" #, fuzzy #~ msgid "Edit UNIX properties" #~ msgstr "Modifica proprietà" #, fuzzy #~ msgid "Edit fax properies" #~ msgstr "Modifica proprietà" #, fuzzy #~ msgid "Create user with this template" #~ msgstr "Nuovo template" #, fuzzy #~ msgid "password" #~ msgstr "Password" #, fuzzy #~ msgid "Delete user" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "You have no permission to modify object '%s'!" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You have no permission to use this template!" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You have no permission to change the lock status for this user!" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "Name / Department" #~ msgstr "Sali di dipartimento" #, fuzzy #~ msgid "Display acls matching" #~ msgstr "Mosra gruppi corrispondenti a" #, fuzzy #~ msgid "Edit acl role" #~ msgstr "Modifica contatto" #, fuzzy #~ msgid "Edit acl" #~ msgstr "classe" #, fuzzy #~ msgid "Delete acl" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Gender" #~ msgstr "Generale" #, fuzzy #~ msgid "Logging options" #~ msgstr "Utenti di Dominio" #, fuzzy #~ msgid "Syslog" #~ msgstr "Log di sitema" #, fuzzy #~ msgid "Non common group" #~ msgstr "Mostra gruppi di posta" #, fuzzy #~ msgid "Enable DNS extension" #~ msgstr "Elimina foto" #, fuzzy #~ msgid "Enable mime type management" #~ msgstr "Riferimenti" #, fuzzy #~ msgid "Enable FAI release management" #~ msgstr "Riferimenti" #, fuzzy #~ msgid "Enable user netatalk plugin" #~ msgstr "Crea estensioni telefoniche" #, fuzzy #~ msgid "Password locking" #~ msgstr "Cambia la password" #, fuzzy #~ msgid "Create new" #~ msgstr "Creare" #, fuzzy #~ msgid "" #~ "This account has %s features settings. To disable them, you'll need to " #~ "add the %s settings first!" #~ msgstr "" #~ "Questa identià possiede estensioni Unix. Per eliminarle devi eliminare " #~ "prima le estensioni Samba / ambiente." #, fuzzy #~ msgid "" #~ "GOsa requires this module to show printers that are not defined within " #~ "the LDAP." #~ msgstr "" #~ "Queso modulo serve a leggere i report di GOfax dal database.GOsa funziona " #~ "correttamente anche senza." #, fuzzy #~ msgid "Role name" #~ msgstr "Cognome" #~ msgid "Terminals" #~ msgstr "Terminali" #, fuzzy #~ msgid "Select this base" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "add" #~ msgstr "Aggiungi" #, fuzzy #~ msgid "department" #~ msgstr "dipartimenti" #, fuzzy #~ msgid "Steps" #~ msgstr "Sistemi" #, fuzzy #~ msgid "Move object" #~ msgstr "Oggetti membri" #, fuzzy #~ msgid "Remove object" #~ msgstr "Oggetti membri" #, fuzzy #~ msgid "Repository" #~ msgstr "Riprova" #, fuzzy #~ msgid "DAK repository" #~ msgstr "Directory" #, fuzzy #~ msgid "Delete users" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Heimdal options" #~ msgstr "Opzioni di posta" #, fuzzy #~ msgid "Day" #~ msgstr "giorno" #, fuzzy #~ msgid "Month" #~ msgstr "mese" #, fuzzy #~ msgid "Year" #~ msgstr "Cerca" #, fuzzy #~ msgid "Password end" #~ msgstr "Password" #, fuzzy #~ msgid "Missing parameters!" #~ msgstr "Nome applicazione" #, fuzzy #~ msgid "Error in ivbb parameter!" #~ msgstr "Parametro" #~ msgid "Language" #~ msgstr "Lingua" #~ msgid "User list of %s on %s" #~ msgstr "Lista degli utenti di %s su %s" #~ msgid "Groups of %s on %s" #~ msgstr "Gruppi di %s su %s" #~ msgid "Computers" #~ msgstr "Computer" #~ msgid "Common name" #~ msgstr "Nome comune" #~ msgid "Servers of %s on %s" #~ msgstr "Server di %s su %s" #~ msgid "Display name" #~ msgstr "Mostra il nome" #~ msgid "Initials" #~ msgstr "Iniziali" #~ msgid "Mobile phone" #~ msgstr "Cellulare" #~ msgid "City" #~ msgstr "Città" #~ msgid "Function" #~ msgstr "Funzione" #~ msgid "Adressbook" #~ msgstr "Rubrica" #~ msgid "Adressbook of %s on %s" #~ msgstr "Rubrica di %s su %s" #~ msgid "Common Name" #~ msgstr "Nome comune" #~ msgid "Day of birth" #~ msgstr "Data di nascita" #~ msgid "Email address" #~ msgstr "Indirizzo principale" #~ msgid "Title" #~ msgstr "Titolo" #~ msgid "Computers of %s on %s" #~ msgstr "Computer di %s su %s" #, fuzzy #~ msgid "You have no permission to do LDAP exports!" #~ msgstr "Non hai il permesso di cambiare la tua password." #~ msgid "Could not select database!" #~ msgstr "Impossibile selezionare il database!" #~ msgid "Database query failed!" #~ msgstr "La query al database è fallita!" #, fuzzy #~ msgid "List of sudo roles" #~ msgstr "Lista degli utenti" #, fuzzy #~ msgid "Regular expression for matching role names" #~ msgstr "Espressioni regolare per selezionare il nome del gruppo" #, fuzzy #~ msgid "Regular expression for matching role member names" #~ msgstr "Espressioni regolare per selezionare il nome del gruppo" #, fuzzy #~ msgid "Number of listed roles" #~ msgstr "Nome del gruppo" #, fuzzy #~ msgid "Sudo" #~ msgstr "Cognome" #, fuzzy #~ msgid "Manage sudo roles" #~ msgstr "Utenti di Dominio" #, fuzzy #~ msgid "string" #~ msgstr "Attenzione" #, fuzzy #~ msgid "integer" #~ msgstr "stampanti" #, fuzzy #~ msgid "lists" #~ msgstr "classe" #, fuzzy #~ msgid "Invalid" #~ msgstr "invalido" #, fuzzy #~ msgid "Run as user" #~ msgstr "Utenti di Dominio" #, fuzzy #~ msgid "Sudo role administration" #~ msgstr "Amministrazione dei gruppi di utenti" #, fuzzy #~ msgid "Flags" #~ msgstr "classe" #, fuzzy #~ msgid "Enable system deployment" #~ msgstr "Dipartimento" #, fuzzy #~ msgid "Checking for LDAP support" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "" #~ "This is the main extension used by GOsa and therefore really required." #~ msgstr "" #~ "Questo è il modulo più importante usato da GOsa ed è quindi necessario." #~ msgid "Checking for gettext support" #~ msgstr "Controllo il support per gettext" #, fuzzy #~ msgid "Gettext support is required for internationalization." #~ msgstr "Gettext è necessario al supporto per le lingue." #~ msgid "Checking for iconv support" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "" #~ "This module is used by GOsa to convert samba munged dial informations and " #~ "is therefore required. " #~ msgstr "" #~ "Questo modulo è usato da GOsa per convertire alcune informazioni usate da " #~ "samba ed è necessario." #, fuzzy #~ msgid "Checking for mhash support" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "Checking for IMAP support" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "" #~ "The IMAP module is needed to communicate with the IMAP server. GOsa " #~ "retrieves status information, creates and deletes mail users, etc." #~ msgstr "Questo modulo è necessario per comunicare con il server di posta." #, fuzzy #~ msgid "Checking for multi byte support" #~ msgstr "Controllo il support per gettext" #, fuzzy #~ msgid "Checking for getacl in IMAP implementation" #~ msgstr "Controllo il supporto per getacl" #, fuzzy #~ msgid "" #~ "The getacl support is needed to handle shared folder permissions. Old " #~ "IMAP extensions are not capable of reading acl's. You need a recent PHP " #~ "version to use this feature." #~ msgstr "" #~ "Il support per getacl serve a ottenere i permessi di accesso delle " #~ "cartelle di posta sul server. GOsa funziona correttamente anche senza." #, fuzzy #~ msgid "Checking for MySQL support" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "Checking for kadm5 support" #~ msgstr "Controllo il supporto per iconv" #~ msgid "" #~ "Managing users in kerberos requires the kadm5 module which is " #~ "downloadable via PEAR network." #~ msgstr "" #~ "Questo modulo serve ad amministrare gli utenti in un dominio Kerberos. " #~ "GOsa funziona correttamente anche senza." #, fuzzy #~ msgid "" #~ "This module is required to manage user in kerberos, it is downloadable " #~ "via PEAR network" #~ msgstr "" #~ "Questo modulo serve ad amministrare gli utenti in un dominio Kerberos. " #~ "GOsa funziona correttamente anche senza." #, fuzzy #~ msgid "Checking for SNMP support" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "Checking for CUPS support" #~ msgstr "Controllo il supporto per iconv" #, fuzzy #~ msgid "" #~ "In order to read available printers via the IPP protocol instead of " #~ "printcap files, you've to install the CUPS module." #~ msgstr "" #~ "Questo modulo serve a ottenere le informazioni sulle stampanti di rete. " #~ "GOsa funziona correttamente anche senza." #~ msgid "Checking for fping utility" #~ msgstr "Controllo il supporto per fping" #, fuzzy #~ msgid "" #~ "The fping utility is used if you've got a thin client based terminal " #~ "environment." #~ msgstr "" #~ "Il programma fping è usato solo nel caso di ambienti basati su terminali " #~ "'thin client'." #, fuzzy #~ msgid "" #~ "The fping utility is only used in thin client based terminal environment." #~ msgstr "" #~ "Il programma fping è usato solo nel caso di ambienti basati su terminali " #~ "'thin client'." #, fuzzy #~ msgid "" #~ "In order to use SAMBA 2/3 passwords, you've to install additional " #~ "packages to generate password hashes." #~ msgstr "" #~ "Un programma in grado di generare password con algoritmo LM/NT è " #~ "necessario per poter usare Samba 2 o 3." #, fuzzy #~ msgid "" #~ "In order to use SAMBA 2/3 you've to install additional perl libraries. " #~ "Take a look at mkntpasswd." #~ msgstr "" #~ "Un programma in grado di generare password con algoritmo LM/NT è " #~ "necessario per poter usare Samba 2 o 3." #, fuzzy #~ msgid "Choose subtree to place %s in" #~ msgstr "Scegli il subtree per l'utente" #, fuzzy #~ msgid "Show groups with '%s'" #~ msgstr "Mostra gruppi che contengono utenti" #, fuzzy #~ msgid "Show %s user" #~ msgstr "Mostra utenti Samba" #, fuzzy #~ msgid "functional" #~ msgstr "funzione" #, fuzzy #~ msgid "posix" #~ msgstr "Proxy" #, fuzzy #~ msgid "mail" #~ msgstr "maschio" #, fuzzy #~ msgid "samba" #~ msgstr "Samba" #, fuzzy #~ msgid "proxy" #~ msgstr "Proxy" #, fuzzy #~ msgid "primary" #~ msgstr "Avvio" #, fuzzy #~ msgid "application" #~ msgstr "applicazioni" #, fuzzy #~ msgid "Select to see groups containing '%s'." #~ msgstr "Mostra gruppi che contengono utenti" #, fuzzy #~ msgid "Phones" #~ msgstr "Telefono" #, fuzzy #~ msgid "Click here to Change your password" #~ msgstr "Non hai il permesso di cambiare la tua password." #~ msgid "Can't create/open File" #~ msgstr "Errore nella creazione/apertura del file" #~ msgid "LDAP error:" #~ msgstr "Errore LDAP" #, fuzzy #~ msgid "You are not allowed to change your password at this time" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "Uid number" #~ msgstr "Numero di telefono" #, fuzzy #~ msgid "Service infrastructure" #~ msgstr "Seleziona per mostrare le applicazioni" #, fuzzy #~ msgid "User delete" #~ msgstr "elimina" #, fuzzy #~ msgid "User deleted" #~ msgstr "elimina" #~ msgid "User List of %s on %s" #~ msgstr "Lista degli utenti di %s su %s" #, fuzzy #~ msgid "Permission denied!" #~ msgstr "Permessi" #, fuzzy #~ msgid "You are not allowed to perform this action." #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You are not allowed to create ldap dumps." #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "Configuration warning" #~ msgstr "File di configurazione" #, fuzzy #~ msgid "Password reminder" #~ msgstr "La password spira il" #, fuzzy #~ msgid "Configuration accessibility" #~ msgstr "File di configurazione" #, fuzzy #~ msgid "New Password" #~ msgstr "Nuova password" #, fuzzy #~ msgid "Change Password" #~ msgstr "Cambia la password" #, fuzzy #~ msgid "Can't locate gotomasses queue file '%s'." #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Can't read gotomasses queue file '%s'." #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Can't read gotomasses storage file '%s'." #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Can't write gotomasses queue file '%s'." #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Entry with id '%s' not found." #~ msgstr "Imposta dipartimento" #~ msgid "Select to see template pseudo users" #~ msgstr "Seleziona per vedere gli utenti template" #, fuzzy #~ msgid "Select to see users that have only a GOsa object" #~ msgstr "Seleziona per vedere gli utenti funzionali" #~ msgid "Select to see users that have posix settings" #~ msgstr "Seleziona per vedere gli utenti Unix" #~ msgid "Show unix users" #~ msgstr "Mostra utenti Unix" #~ msgid "Select to see users that have mail settings" #~ msgstr "Seleziona per vedere gli utenti di posta" #~ msgid "Select to see users that have samba settings" #~ msgstr "Seleziona per vedere gli utenti Samba" #~ msgid "Select to see users that have proxy settings" #~ msgstr "Seleziona per vedere gli utenti proxy" #~ msgid "Select to see groups that have samba groups mappings" #~ msgstr "" #~ "Seleziona per mostrare i gruppi che sono gruppi samba per gli utenti" #~ msgid "Select to see groups that have applications configured" #~ msgstr "" #~ "Seleziona per mostrare i gruppi che hanno configurate delle applicazioni" #~ msgid "Select to see groups that have mail settings" #~ msgstr "Seleziona per mostrare i gruppi che hanno configurata la posta" #~ msgid "Select to see applications" #~ msgstr "Seleziona per mostrare le applicazioni" #~ msgid "Show applications" #~ msgstr "Mostra applicazioni" #, fuzzy #~ msgid "Cannot connect to logging server '%s'." #~ msgstr "Impossibile connettersi al server del database!" #, fuzzy #~ msgid "Cannot select database '%s' on server '%s': %s" #~ msgstr "Impossibile selezionare il database!" #, fuzzy #~ msgid "Cannot query database '%s' on server '%s': %s" #~ msgstr "Impossibile selezionare il database!" #, fuzzy #~ msgid "You are going to paste the following entries '%s'." #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You are going to paste the following entry '%s'." #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "Back..." #~ msgstr "Indietro" #, fuzzy #~ msgid "Back %s..." #~ msgstr "Modifica contatto" #, fuzzy #~ msgid "again" #~ msgstr "Principale" #, fuzzy #~ msgid "You are not allowed to change the password for this user." #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You are not allowed to remove this user." #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You're about to delete the following entry: %s" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You're about to delete the following entries: %s" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You are not allowed to delete the user '%s'!" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You're about to delete the following entry %s" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You're about to delete the following entries %s" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You have no permission to edit this ACL!" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You have no permission to delete this entry!" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "List of acl" #~ msgstr "Lista dei gruppi" #, fuzzy #~ msgid "You're about to delete the following object entry %s" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You're about to delete the following object entries %s" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "Select to see groups containing groups" #~ msgstr "Mostra gruppi che contengono gruppi" #~ msgid "Show groups containing groups" #~ msgstr "Mostra gruppi che contengono gruppi" #, fuzzy #~ msgid "Select to see groups containing applications" #~ msgstr "Mostra gruppi che contengono applicazioni" #~ msgid "Show groups containing applications" #~ msgstr "Mostra gruppi che contengono applicazioni" #, fuzzy #~ msgid "Select to see groups containing departments" #~ msgstr "Mostra gruppi che contengono dipartimenti" #~ msgid "Show groups containing departments" #~ msgstr "Mostra gruppi che contengono dipartimenti" #, fuzzy #~ msgid "Select to see groups containing servers" #~ msgstr "Mostra gruppi che contengono server" #~ msgid "Show groups containing servers" #~ msgstr "Mostra gruppi che contengono server" #, fuzzy #~ msgid "Select to see groups containing workstations" #~ msgstr "Mostra gruppi che contengono workstation" #~ msgid "Show groups containing workstations" #~ msgstr "Mostra gruppi che contengono workstation" #, fuzzy #~ msgid "Select to see groups containing windows workstations" #~ msgstr "Mostra gruppi che contengono workstation" #, fuzzy #~ msgid "Show groups containing windows workstations" #~ msgstr "Mostra gruppi che contengono workstation" #, fuzzy #~ msgid "Select to see groups containing terminals" #~ msgstr "Mostra gruppi che contengono terminali" #~ msgid "Show groups containing terminals" #~ msgstr "Mostra gruppi che contengono terminali" #, fuzzy #~ msgid "Select to see groups containing printer" #~ msgstr "Mostra gruppi che contengono stampanti" #, fuzzy #~ msgid "Show groups containing printer" #~ msgstr "Mostra gruppi che contengono stampanti" #, fuzzy #~ msgid "Select to see groups containing phones" #~ msgstr "Mostra gruppi che contengono stampanti" #, fuzzy #~ msgid "Show groups containing phones" #~ msgstr "Mostra gruppi che contengono stampanti" #, fuzzy #~ msgid "You are not allowed to remove this entry." #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "Edit ACL" #~ msgstr "Modifica" #, fuzzy #~ msgid "Deactivated" #~ msgstr "Privato" #, fuzzy #~ msgid "Active" #~ msgstr "Privato" #, fuzzy #~ msgid "Members:" #~ msgstr "Membri" #, fuzzy #~ msgid "Adding a lock failed." #~ msgstr "Imposta dipartimento" #, fuzzy #~ msgid "Access control list templates" #~ msgstr "Opzioni di accesso" #, fuzzy #~ msgid "Removing a lock failed." #~ msgstr "Elimina estensioni per le applicazioni" #, fuzzy #~ msgid "Setting the password failed!" #~ msgstr "Estenzioni Proxy Internet" #, fuzzy #~ msgid "Please enter a valid serial number!" #~ msgstr "Prego inserire un numero di telefono valido!" #, fuzzy #~ msgid "You have no permission to move this object to '%s'!" #~ msgstr "Non hai il permesso di cambiare la tua password." #~ msgid "" #~ "This menu allows you to create, edit and delete selected users. Having a " #~ "great number of users, you may want to use the range selectors on top of " #~ "the user list." #~ msgstr "" #~ "Questo menù permette di creare, modificare e cancellare gli utenti " #~ "selezionati. Avendo un gran numero di utenti, puoi usare i selettori di " #~ "intervalli in cima alla lista degli utenti." #~ msgid "" #~ "This menu allows you to add, edit and remove selected groups. You may " #~ "want to use the range selector on top of the group listbox, when working " #~ "with a large number of groups." #~ msgstr "" #~ "Questo menù permette di creare, modificare e cancellare i gruppi " #~ "selezionati. Avendo un gran numero di gruppi, puoi usare i selettori di " #~ "intervalli in cima alla lista dei gruppi." #, fuzzy #~ msgid "" #~ "This menu allows you to create, delete and edit selected departments. " #~ "Having a large number of departments, you might prefer the range " #~ "selectors on top of the department list." #~ msgstr "" #~ "Questo menù permette di creare, modificare e cancellare gli utenti " #~ "selezionati. Avendo un gran numero di utenti, puoi usare i selettori di " #~ "intervalli in cima alla lista degli utenti." #, fuzzy #~ msgid "" #~ "This menu allows you to add, edit or remove selected groups. You may want " #~ "to use the range selector on top of the group listbox, when working with " #~ "a large number of groups." #~ msgstr "" #~ "Questo menù permette di creare, modificare e cancellare i gruppi " #~ "selezionati. Avendo un gran numero di gruppi, puoi usare i selettori di " #~ "intervalli in cima alla lista dei gruppi." #~ msgid "Can't bind to LDAP. Please contact the system administrator." #~ msgstr "" #~ "Errore di connessione al server LDAP. Contatta l'amministratore del " #~ "sistema." #, fuzzy #~ msgid "Removing of user/generic account with dn '%s' failed." #~ msgstr "Elimina estensioni Unix" #, fuzzy #~ msgid "Saving of user/generic account with dn '%s' failed." #~ msgstr "Estenzioni Proxy Internet" #~ msgid "This account has no unix extensions." #~ msgstr "Questa identità non possiede estensioni Unix" #~ msgid "Remove posix account" #~ msgstr "Elimina estensioni Unix" #~ msgid "Create posix account" #~ msgstr "Crea estensioni Unix" #, fuzzy #~ msgid "Removing of user/posix account with dn '%s' failed." #~ msgstr "Elimina estensioni Unix" #, fuzzy #~ msgid "Saving of user/posix account with dn '%s' failed." #~ msgstr "Estenzioni Proxy Internet" #~ msgid "Unix settings" #~ msgstr "Impostazioni Unix" #, fuzzy #~ msgid "Send user notifications" #~ msgstr "Amministrazione utenti" #, fuzzy #~ msgid "Please specify at least one recipient to send a message!" #~ msgstr "Prego inserire un numero di telefono valido!" #, fuzzy #~ msgid "Cannot find a DESC tag in file '%s'!" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Notification plugin" #~ msgstr "Non ci sono certificati installati" #, fuzzy #~ msgid "Allow sending notifications" #~ msgstr "Opzioni applicazione" #, fuzzy #~ msgid "Notification target" #~ msgstr "Non ci sono certificati installati" #~ msgid "Import" #~ msgstr "Importa" #, fuzzy #~ msgid "Notification send!" #~ msgstr "Non ci sono certificati installati" #, fuzzy #~ msgid "Saving of object group/generic with dn '%s' failed." #~ msgstr "Account Kolab" #, fuzzy #~ msgid "Removing of object group/generic with dn '%s' failed." #~ msgstr "Elimina estensioni Unix" #, fuzzy #~ msgid "Removing of department with dn '%s' failed." #~ msgstr "Imposta dipartimento" #, fuzzy #~ msgid "Saving of department with dn '%s' failed." #~ msgstr "Imposta dipartimento" #, fuzzy #~ msgid "Saving ACLs with dn '%s' failed." #~ msgstr "Nome applicazione" #, fuzzy #~ msgid "Removing of aclRole with dn '%s' failed." #~ msgstr "Elimina estensioni per le applicazioni" #, fuzzy #~ msgid "Removing aclRole from objectgroup '%s' failed" #~ msgstr "Mostra gruppi di applicazioni" #, fuzzy #~ msgid "Removing of groups/generic with dn '%s' failed." #~ msgstr "Mostra gruppi di applicazioni" #, fuzzy #~ msgid "Saving object snapshot with dn '%s' failed." #~ msgstr "Account Kolab" #, fuzzy #~ msgid "Restore snapshot with dn '%s' failed." #~ msgstr "Elimina estensioni per le applicazioni" #, fuzzy #~ msgid "Creating subtree '%s' failed." #~ msgstr "Gruppo di oggetti" #, fuzzy #~ msgid "Ldap import with dn '%s' failed." #~ msgstr "Imposta dipartimento" #~ msgid "This does something" #~ msgstr "Questo fa qualcosa" #~ msgid "Please enter a valid path in 'Home directory' field." #~ msgstr "Inserire un nome cartella valido per il campo 'Home directory'." #~ msgid "Value specified as 'GID' is not valid." #~ msgstr "Il valore specificato per il GID non è valido." #~ msgid "Value specified as 'GID' is too small." #~ msgstr "Il valore specificato per il GID è troppo basso." #~ msgid "Value specified as 'shadowMin' is not valid." #~ msgstr "Il valore specificato come 'shadowMin' non è valido" #~ msgid "Value specified as 'shadowMax' is not valid." #~ msgstr "Il valore specificato come 'shadowMax' non è valido" #~ msgid "Value specified as 'shadowWarning' is not valid." #~ msgstr "Il valore specificato come 'shadowWarning' non è valido" #~ msgid "'shadowWarning' without 'shadowMax' makes no sense." #~ msgstr "'shadowWarning' senza 'shadowMax' non ha senso." #, fuzzy #~ msgid "Please select a valid template." #~ msgstr "Prego inserire un numero di telefono valido!" #, fuzzy #~ msgid "You are going to paste the cutted entry '%s'." #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You have no permission to copy and paste object '%s'!" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "Please specify a valid description for this snapshot." #~ msgstr "Specificare una dimenzione valida per le mail da rigettare." #, fuzzy #~ msgid "User delted" #~ msgstr "Foto personale" #, fuzzy #~ msgid "System deployment" #~ msgstr "Dipartimento" #, fuzzy #~ msgid "Your are about to delete the following tasks: %s" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "List of queued deamon jobs." #~ msgstr "Lista dei dipartimenti" #, fuzzy #~ msgid "Target" #~ msgstr "reset" #, fuzzy #~ msgid "Schedule" #~ msgstr "Estenzioni PHPGroupware" #, fuzzy #~ msgid "Reomve" #~ msgstr "Rimuovi" #, fuzzy #~ msgid "Say hello" #~ msgstr "Shell" #, fuzzy #~ msgid "System mass deployment" #~ msgstr "Dipartimento" #, fuzzy #~ msgid "Header Tag" #~ msgstr "leggere" #, fuzzy #~ msgid "Schedule Execution" #~ msgstr "Estenzioni PHPGroupware" #, fuzzy #~ msgid "Tag" #~ msgstr "reset" #, fuzzy #~ msgid "Sekunde" #~ msgstr "Generale" #, fuzzy #~ msgid "Mac" #~ msgstr "Marzo" #, fuzzy #~ msgid "Available targets" #~ msgstr "Applicazioni disponibili" #, fuzzy #~ msgid "You are not allowed to delete this acl!" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "You are not allowed to delete this acl role!" #~ msgstr "Non hai il permesso di cambiare la tua password." #, fuzzy #~ msgid "Network resolv hook" #~ msgstr "Mostra dispositiva di rete" #~ msgid "Addons" #~ msgstr "Extra" #, fuzzy #~ msgid "ACL Role" #~ msgstr "ACL" #~ msgid "Unix" #~ msgstr "Unix" #~ msgid "Connectivity" #~ msgstr "Connettività" #, fuzzy #~ msgid "Scalix" #~ msgstr "Terminali" #~ msgid "Nagios" #~ msgstr "Nagios" #, fuzzy #~ msgid "Inventory" #~ msgstr "Aggiungi contatto" #~ msgid "Services" #~ msgstr "Servizi" #~ msgid "Excel Export" #~ msgstr "Esporta in formato Excel" #~ msgid "CSV Import" #~ msgstr "Importa da CSV" #~ msgid "Partitions" #~ msgstr "Partizioni" #~ msgid "Script" #~ msgstr "Script" #~ msgid "Variables" #~ msgstr "Variabili" #~ msgid "Profiles" #~ msgstr "Profili" #~ msgid "Packages" #~ msgstr "Pacchetti" #, fuzzy #~ msgid "" #~ "Can't connect to glpi database, there is no mysl extension available in " #~ "your php setup." #~ msgstr "Impossibile connettersi al server del database!" #, fuzzy #~ msgid "Can't read file '%s', check permissions." #~ msgstr "Rimuovi" gosa-core-2.7.4/locale/core/en/0000755000175000017500000000000011752422546014640 5ustar mikemikegosa-core-2.7.4/locale/core/en/LC_MESSAGES/0000755000175000017500000000000011752422546016425 5ustar mikemikegosa-core-2.7.4/locale/core/messages.po0000644000175000017500000052674711651532471016427 0ustar mikemike# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-25 15:08+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: include/class_management.inc:32 include/class_management.inc:33 #: plugins/personal/posix/class_posixAccount.inc:224 msgid "unconfigured" msgstr "" #: include/class_management.inc:324 include/class_management.inc:487 #: include/class_management.inc:534 include/class_management.inc:549 #: include/class_management.inc:586 include/class_management.inc:600 #: plugins/admin/users/class_userManagement.inc:228 #: plugins/admin/users/class_userManagement.inc:764 msgid "Permission" msgstr "" #: include/class_management.inc:405 #: plugins/admin/acl/class_aclManagement.inc:98 #: plugins/admin/users/class_userManagement.inc:722 #: plugins/admin/users/class_userManagement.inc:726 msgid "Permission error" msgstr "" #: include/class_management.inc:487 #, php-format msgid "You are not allowed to create a snapshot for %s!" msgstr "" #: include/class_management.inc:508 include/class_management.inc:669 #: include/utils/class_msgPool.inc:137 include/utils/class_msgPool.inc:149 #: include/utils/class_msgPool.inc:167 include/utils/class_msgPool.inc:440 #: include/utils/class_msgPool.inc:462 include/utils/class_xml.inc:40 #: include/class_listing.inc:542 include/class_tabs.inc:71 #: include/class_msg_dialog.inc:99 include/class_plugin.inc:1698 #: include/class_plugin.inc:1705 #: include/password-methods/class_password-methods.inc:339 #: include/functions.inc:2911 include/functions.inc:3070 #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3422 include/functions.inc:3430 #: include/functions.inc:3442 include/functions.inc:3446 #: include/functions.inc:3461 include/functions.inc:3470 #: include/functions.inc:3530 include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #: include/class_CopyPasteHandler.inc:377 #: include/class_gosaSupportDaemon.inc:1184 #: include/class_gosaSupportDaemon.inc:1204 #: setup/class_setupStep_Migrate.inc:450 setup/setup_checks.tpl:25 #: setup/setup_checks.tpl:66 html/index.php:241 html/index.php:245 #: plugins/personal/password/class_password.inc:215 #: plugins/personal/generic/class_user.inc:297 #: plugins/personal/generic/class_user.inc:429 #: plugins/personal/generic/class_user.inc:522 #: plugins/personal/generic/class_user.inc:816 #: plugins/personal/generic/class_user.inc:1050 #: plugins/personal/generic/class_user.inc:1177 #: plugins/personal/generic/class_user.inc:1184 #: plugins/personal/generic/class_user.inc:1202 #: plugins/personal/generic/class_user.inc:1483 #: plugins/personal/generic/class_user.inc:1809 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:203 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:207 #: plugins/admin/groups/class_group.inc:482 #: plugins/admin/groups/class_group.inc:488 #: plugins/admin/groups/class_group.inc:676 #: plugins/admin/groups/class_group.inc:772 #: plugins/admin/groups/class_group.inc:777 #: plugins/admin/groups/class_group.inc:1115 #: plugins/admin/ogroups/class_ogroup.inc:424 #: plugins/admin/acl/class_aclRole.inc:670 #: plugins/admin/departments/class_department.inc:317 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:43 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:49 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:96 #: plugins/generic/statistics/class_statistics.inc:133 #: plugins/generic/statistics/class_statistics.inc:229 #: plugins/generic/statistics/class_statistics.inc:244 #: plugins/generic/references/class_ldifViewer.inc:20 #, php-format msgid "Error" msgstr "" #: include/class_management.inc:534 include/class_management.inc:586 #: include/class_management.inc:600 #, php-format msgid "You are not allowed to restore a snapshot for %s!" msgstr "" #: include/class_management.inc:549 #, php-format msgid "You are not allowed to remove a snapshot for %s!" msgstr "" #: include/class_management.inc:659 include/class_management.inc:743 #: include/class_log.inc:87 include/class_session.inc:76 #: include/class_session.inc:101 include/class_session.inc:127 #: include/functions.inc:640 include/functions.inc:854 #: include/functions.inc:972 include/functions.inc:1367 #: include/functions.inc:2195 include/functions.inc:2225 #: include/functions.inc:2245 include/class_ldap.inc:807 #: include/class_ldap.inc:858 include/class_CopyPasteHandler.inc:160 #: include/class_CopyPasteHandler.inc:274 include/class_acl.inc:1089 #: plugins/personal/myaccount/main.inc:49 msgid "Internal error" msgstr "" #: include/class_management.inc:660 include/class_management.inc:744 #: plugins/personal/myaccount/main.inc:50 #, php-format msgid "" "Cannot instantiate tabbed-plug-in, the base plugin (%s) is not available!" msgstr "" #: include/class_management.inc:669 #, php-format msgid "" "No tab definition for %s found in configuration file: cannot create plugin " "instance!" msgstr "" #: include/class_pluglist.inc:146 include/utils/class_timezone.inc:47 #: include/password-methods/class_password-methods-sha.inc:48 #: include/password-methods/class_password-methods-ssha.inc:51 #: include/functions.inc:864 include/functions.inc:3085 #: include/functions.inc:3100 include/class_config.inc:171 #: include/class_config.inc:712 include/class_config.inc:1173 #: include/class_config.inc:1186 include/class_config.inc:1204 #: include/class_CopyPasteHandler.inc:119 #: include/class_CopyPasteHandler.inc:128 #: include/class_CopyPasteHandler.inc:177 #: include/class_CopyPasteHandler.inc:186 #: include/class_CopyPasteHandler.inc:194 include/class_SnapshotHandler.inc:44 #: include/class_SnapshotHandler.inc:57 include/class_SnapshotHandler.inc:75 #: html/password.php:113 html/index.php:157 html/index.php:233 #: html/main.php:295 plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 msgid "Configuration error" msgstr "" #: include/class_pluglist.inc:147 msgid "The configuration format has changed: please run the setup again!" msgstr "" #: include/class_pluglist.inc:304 msgid "" "You are currently editing a database entry. Do you want to discard the " "changes?" msgstr "" #: include/class_pluglist.inc:479 plugins/admin/groups/class_group.inc:329 #: plugins/admin/groups/class_group.inc:352 #: plugins/admin/groups/class_group.inc:369 #: plugins/admin/departments/class_department.inc:152 #: plugins/generic/references/contents.tpl:18 msgid "Unknown" msgstr "" #: include/utils/class_msgPool.inc:17 msgid "This object will be deleted!" msgstr "" #: include/utils/class_msgPool.inc:19 #, php-format msgid "This %s object will be deleted!" msgstr "" #: include/utils/class_msgPool.inc:24 #, php-format msgid "This object will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:26 #, php-format msgid "This %s object will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:31 msgid "This object will be deleted:" msgstr "" #: include/utils/class_msgPool.inc:33 #, php-format msgid "This %s object will be deleted:" msgstr "" #: include/utils/class_msgPool.inc:37 #, php-format msgid "These objects will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:39 #, php-format msgid "These %s objects will be deleted: %s" msgstr "" #: include/utils/class_msgPool.inc:47 msgid "You have no permission to delete this object!" msgstr "" #: include/utils/class_msgPool.inc:51 include/utils/class_msgPool.inc:55 msgid "You have no permission to delete the object:" msgstr "" #: include/utils/class_msgPool.inc:58 msgid "You have no permission to delete these objects:" msgstr "" #: include/utils/class_msgPool.inc:65 msgid "You have no permission to create this object!" msgstr "" #: include/utils/class_msgPool.inc:69 include/utils/class_msgPool.inc:73 msgid "You have no permission to create the object:" msgstr "" #: include/utils/class_msgPool.inc:76 msgid "You have no permission to create these objects:" msgstr "" #: include/utils/class_msgPool.inc:83 msgid "You have no permission to modify this object!" msgstr "" #: include/utils/class_msgPool.inc:87 include/utils/class_msgPool.inc:91 msgid "You have no permission to modify the object:" msgstr "" #: include/utils/class_msgPool.inc:94 msgid "You have no permission to modify these objects:" msgstr "" #: include/utils/class_msgPool.inc:101 msgid "You have no permission to view this object!" msgstr "" #: include/utils/class_msgPool.inc:105 include/utils/class_msgPool.inc:109 msgid "You have no permission to view the object:" msgstr "" #: include/utils/class_msgPool.inc:112 msgid "You have no permission to view these objects:" msgstr "" #: include/utils/class_msgPool.inc:119 msgid "You have no permission to move this object!" msgstr "" #: include/utils/class_msgPool.inc:123 include/utils/class_msgPool.inc:127 msgid "You have no permission to move the object:" msgstr "" #: include/utils/class_msgPool.inc:130 msgid "You have no permission to move these objects:" msgstr "" #: include/utils/class_msgPool.inc:140 include/utils/class_msgPool.inc:152 #: include/utils/class_msgPool.inc:170 msgid "Connection information" msgstr "" #: include/utils/class_msgPool.inc:142 #, php-format msgid "Cannot connect to %s database!" msgstr "" #: include/utils/class_msgPool.inc:154 #, php-format msgid "Cannot select %s database!" msgstr "" #: include/utils/class_msgPool.inc:160 #, php-format msgid "No %s server defined!" msgstr "" #: include/utils/class_msgPool.inc:172 #, php-format msgid "Cannot query %s database!" msgstr "" #: include/utils/class_msgPool.inc:178 #, php-format msgid "The field %s contains a reserved keyword!" msgstr "" #: include/utils/class_msgPool.inc:184 #, php-format msgid "Command specified as %s hook for plugin %s does not exist!" msgstr "" #: include/utils/class_msgPool.inc:191 #, php-format msgid "%s command is invalid!" msgstr "" #: include/utils/class_msgPool.inc:193 #, php-format msgid "%s command (%s) for plugin %s is invalid!" msgstr "" #: include/utils/class_msgPool.inc:195 #, php-format msgid "%s command for plugin %s is invalid!" msgstr "" #: include/utils/class_msgPool.inc:197 #, php-format msgid "%s command (%s) is invalid!" msgstr "" #: include/utils/class_msgPool.inc:205 #, php-format msgid "Cannot execute %s command!" msgstr "" #: include/utils/class_msgPool.inc:207 #, php-format msgid "Cannot execute %s command (%s) for plugin %s!" msgstr "" #: include/utils/class_msgPool.inc:209 #, php-format msgid "Cannot execute %s command for plugin %s!" msgstr "" #: include/utils/class_msgPool.inc:211 #, php-format msgid "Cannot execute %s command (%s)!" msgstr "" #: include/utils/class_msgPool.inc:219 #, php-format msgid "Value for %s is too large!" msgstr "" #: include/utils/class_msgPool.inc:221 #, php-format msgid "%s must be smaller than %s!" msgstr "" #: include/utils/class_msgPool.inc:229 #, php-format msgid "Value for %s is too small!" msgstr "" #: include/utils/class_msgPool.inc:231 #, php-format msgid "%s must be %s or above!" msgstr "" #: include/utils/class_msgPool.inc:238 #, php-format msgid "%s depends on %s - please provide both values!" msgstr "" #: include/utils/class_msgPool.inc:244 #, php-format msgid "There is already an entry with this %s attribute in the system!" msgstr "" #: include/utils/class_msgPool.inc:250 #, php-format msgid "The required field %s is empty!" msgstr "" #: include/utils/class_msgPool.inc:258 include/class_core.inc:309 msgid "Example" msgstr "" #: include/utils/class_msgPool.inc:278 #, php-format msgid "The Field %s contains invalid characters" msgstr "" #: include/utils/class_msgPool.inc:279 #, php-format msgid "%s is not allowed:" msgstr "" #: include/utils/class_msgPool.inc:279 #, php-format msgid "%s are not allowed!" msgstr "" #: include/utils/class_msgPool.inc:282 #, php-format msgid "The Field %s contains invalid characters!" msgstr "" #: include/utils/class_msgPool.inc:289 #, php-format msgid "Missing %s PHP extension!" msgstr "" #: include/utils/class_msgPool.inc:295 ihtml/themes/default/acl.tpl:93 #: ihtml/themes/default/acl.tpl:109 ihtml/themes/default/snapshotdialog.tpl:44 #: ihtml/themes/default/snapshotdialog.tpl:90 #: ihtml/themes/default/islocked.tpl:26 #: ihtml/themes/default/copyPasteDialog.tpl:21 #: ihtml/themes/default/msg_dialog.tpl:80 #: ihtml/themes/default/msg_dialog.tpl:141 #: ihtml/themes/default/msg_dialog.tpl:146 setup/setup_ldap.tpl:20 #: setup/setup_migrate.tpl:71 #, php-format msgid "Cancel" msgstr "" #: include/utils/class_msgPool.inc:301 ihtml/themes/default/msg_dialog.tpl:77 #: ihtml/themes/default/msg_dialog.tpl:79 #: ihtml/themes/default/msg_dialog.tpl:136 #: ihtml/themes/default/msg_dialog.tpl:139 #: ihtml/themes/default/msg_dialog.tpl:144 #: setup/class_setupStep_Migrate.inc:153 setup/class_setupStep_Migrate.inc:303 #: setup/class_setupStep_Migrate.inc:684 setup/class_setupStep_Migrate.inc:828 #: setup/setup_checks.tpl:21 setup/setup_checks.tpl:62 #, php-format msgid "OK" msgstr "" #: include/utils/class_msgPool.inc:307 ihtml/themes/default/acl.tpl:33 #: ihtml/themes/default/acl.tpl:89 ihtml/themes/default/acl.tpl:106 #: setup/setup_ldap.tpl:19 setup/setup_migrate.tpl:70 #, php-format msgid "Apply" msgstr "" #: include/utils/class_msgPool.inc:313 #: ihtml/themes/default/copyPasteDialog.tpl:19 #, php-format msgid "Save" msgstr "" #: include/utils/class_msgPool.inc:319 #: plugins/personal/generic/generic.tpl:252 #: plugins/personal/generic/generic.tpl:272 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:83 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:123 #, php-format msgid "Add" msgstr "" #: include/utils/class_msgPool.inc:319 #, php-format msgid "Add %s" msgstr "" #: include/utils/class_msgPool.inc:325 #, php-format msgid "Delete" msgstr "" #: include/utils/class_msgPool.inc:325 #, php-format msgid "Delete %s" msgstr "" #: include/utils/class_msgPool.inc:331 ihtml/themes/default/sizelimit.tpl:16 #, php-format msgid "Set" msgstr "" #: include/utils/class_msgPool.inc:331 #, php-format msgid "Set %s" msgstr "" #: include/utils/class_msgPool.inc:337 #, php-format msgid "Edit..." msgstr "" #: include/utils/class_msgPool.inc:337 #, php-format msgid "Edit %s..." msgstr "" #: include/utils/class_msgPool.inc:343 msgid "Back" msgstr "" #: include/utils/class_msgPool.inc:363 #, php-format msgid "This account has no valid %s extensions!" msgstr "" #: include/utils/class_msgPool.inc:369 #, php-format msgid "" "This account has %s settings enabled. You can disable them by clicking below." msgstr "" #: include/utils/class_msgPool.inc:372 include/utils/class_msgPool.inc:379 #, php-format msgid "" "This account has %s settings enabled. To disable them, you'll need to remove " "the %s settings first!" msgstr "" #: include/utils/class_msgPool.inc:388 #, php-format msgid "" "This account has %s settings disabled. You can enable them by clicking below." msgstr "" #: include/utils/class_msgPool.inc:391 include/utils/class_msgPool.inc:398 #, php-format msgid "" "This account has %s settings disabled. To enable them, you'll need to add " "the %s settings first!" msgstr "" #: include/utils/class_msgPool.inc:406 #, php-format msgid "Add %s settings" msgstr "" #: include/utils/class_msgPool.inc:412 #, php-format msgid "Remove %s settings" msgstr "" #: include/utils/class_msgPool.inc:418 msgid "Click the 'Edit' button below to change informations in this dialog" msgstr "" #: include/utils/class_msgPool.inc:424 msgid "January" msgstr "" #: include/utils/class_msgPool.inc:424 msgid "February" msgstr "" #: include/utils/class_msgPool.inc:424 msgid "March" msgstr "" #: include/utils/class_msgPool.inc:424 msgid "April" msgstr "" #: include/utils/class_msgPool.inc:425 msgid "May" msgstr "" #: include/utils/class_msgPool.inc:425 msgid "June" msgstr "" #: include/utils/class_msgPool.inc:425 msgid "July" msgstr "" #: include/utils/class_msgPool.inc:425 msgid "August" msgstr "" #: include/utils/class_msgPool.inc:425 msgid "September" msgstr "" #: include/utils/class_msgPool.inc:426 msgid "October" msgstr "" #: include/utils/class_msgPool.inc:426 msgid "November" msgstr "" #: include/utils/class_msgPool.inc:426 msgid "December" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Sunday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Monday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Tuesday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Wednesday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Thursday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Friday" msgstr "" #: include/utils/class_msgPool.inc:432 msgid "Saturday" msgstr "" #: include/utils/class_msgPool.inc:439 msgid "MySQL operation failed!" msgstr "" #: include/utils/class_msgPool.inc:447 msgid "read operation" msgstr "" #: include/utils/class_msgPool.inc:447 msgid "add operation" msgstr "" #: include/utils/class_msgPool.inc:447 msgid "modify operation" msgstr "" #: include/utils/class_msgPool.inc:448 msgid "delete operation" msgstr "" #: include/utils/class_msgPool.inc:448 msgid "search operation" msgstr "" #: include/utils/class_msgPool.inc:448 msgid "authentication" msgstr "" #: include/utils/class_msgPool.inc:451 #, php-format msgid "LDAP %s failed!" msgstr "" #: include/utils/class_msgPool.inc:453 msgid "LDAP operation failed!" msgstr "" #: include/utils/class_msgPool.inc:459 include/class_acl.inc:904 #: include/class_acl.inc:911 include/class_acl.inc:918 #: ihtml/themes/default/snapshotdialog.tpl:20 #: ihtml/themes/default/snapshotdialog.tpl:63 #: plugins/admin/departments/class_department.inc:624 msgid "Object" msgstr "" #: include/utils/class_msgPool.inc:469 msgid "Upload failed!" msgstr "" #: include/utils/class_msgPool.inc:472 #, php-format msgid "Upload failed: %s" msgstr "" #: include/utils/class_msgPool.inc:479 msgid "Communication failure with the infrastructure service!" msgstr "" #: include/utils/class_msgPool.inc:481 #, php-format msgid "Communication failure with the infrastructure service: %s" msgstr "" #: include/utils/class_msgPool.inc:488 msgid "Communication failure with the GOsa-NG service!" msgstr "" #: include/utils/class_msgPool.inc:490 #, php-format msgid "Communication failure with the GOsa-NG service: %s" msgstr "" #: include/utils/class_msgPool.inc:497 include/utils/class_msgPool.inc:500 #, php-format msgid "This %s is still in use by this object: %s" msgstr "" #: include/utils/class_msgPool.inc:503 #, php-format msgid "This %s is still in use." msgstr "" #: include/utils/class_msgPool.inc:505 #, php-format msgid "This %s is still in use by these objects: %s" msgstr "" #: include/utils/class_msgPool.inc:511 #, php-format msgid "File %s does not exist!" msgstr "" #: include/utils/class_msgPool.inc:517 #, php-format msgid "Cannot open file %s for reading!" msgstr "" #: include/utils/class_msgPool.inc:523 #, php-format msgid "Cannot open file %s for writing!" msgstr "" #: include/utils/class_msgPool.inc:529 #, php-format msgid "" "The value for %s is currently unconfigured or invalid, please check your " "configuration file!" msgstr "" #: include/utils/class_msgPool.inc:535 #, php-format msgid "Cannot delete file %s!" msgstr "" #: include/utils/class_msgPool.inc:541 #, php-format msgid "Cannot create folder %s!" msgstr "" #: include/utils/class_msgPool.inc:547 #, php-format msgid "Cannot delete folder %s!" msgstr "" #: include/utils/class_msgPool.inc:553 #, php-format msgid "Checking for %s support" msgstr "" #: include/utils/class_msgPool.inc:559 #, php-format msgid "Install and activate the %s PHP module." msgstr "" #: include/utils/class_msgPool.inc:565 #, php-format msgid "" "Cannot initialize class %s! Maybe there is a plugin missing in your gosa " "setup?" msgstr "" #: include/utils/class_msgPool.inc:571 msgid "" "The supplied base is not valid and has been reset to its previous value!" msgstr "" #: include/utils/class_timezone.inc:47 #, php-format msgid "The configured timezone %s is not valid!" msgstr "" #: include/utils/class_xml.inc:37 include/class_tabs.inc:287 #: include/class_configRegistry.inc:689 include/class_configRegistry.inc:704 #: include/class_configRegistry.inc:719 include/class_configRegistry.inc:734 #: include/class_configRegistry.inc:750 include/class_configRegistry.inc:755 #: include/class_configRegistry.inc:775 include/class_configRegistry.inc:780 #: include/class_configRegistry.inc:797 include/class_configRegistry.inc:802 #: include/class_configRegistry.inc:820 include/class_configRegistry.inc:825 #: include/class_configRegistry.inc:841 include/class_configRegistry.inc:856 #: include/class_configRegistry.inc:871 include/functions.inc:2516 #: include/functions.inc:2520 include/functions.inc:2526 #: include/functions.inc:2550 include/class_jsonRPC.inc:37 #: setup/setup_checks.tpl:27 setup/setup_checks.tpl:68 html/password.php:315 #: plugins/personal/posix/class_posixAccount.inc:692 #: plugins/personal/posix/class_posixAccount.inc:815 #: plugins/admin/groups/class_group.inc:871 #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "Warning" msgstr "" #: include/utils/class_xml.inc:43 include/functions.inc:482 #: html/password.php:61 html/main.php:170 #: plugins/admin/departments/class_department.inc:439 msgid "Fatal error" msgstr "" #: include/utils/class_xml.inc:51 msgid "XML error" msgstr "" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort ascending" msgstr "" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort descending" msgstr "" #: include/class_listing.inc:324 msgid "Select all" msgstr "" #: include/class_listing.inc:584 msgid "created by" msgstr "" #: include/class_listing.inc:1081 include/class_listing.inc:1083 #: include/class_ItemSelector.inc:247 include/class_baseSelector.inc:188 #: include/class_releaseSelector.inc:214 msgid "Root" msgstr "" #: include/class_listing.inc:1088 include/class_listing.inc:1090 msgid "Go to preceding level" msgstr "" #: include/class_listing.inc:1096 include/class_listing.inc:1098 msgid "Go to current users level" msgstr "" #: include/class_listing.inc:1103 msgid "Reload list" msgstr "" #: include/class_listing.inc:1207 #: plugins/addons/propertyEditor/property-list.xml:97 #: plugins/admin/groups/group-list.xml:62 #: plugins/admin/ogroups/ogroup-list.xml:62 plugins/admin/acl/acl-list.xml:65 #: plugins/admin/departments/dep-list.xml:87 #: plugins/admin/users/user-list.xml:78 msgid "Actions" msgstr "" #: include/class_listing.inc:1477 msgid "Copy" msgstr "" #: include/class_listing.inc:1483 msgid "Cut" msgstr "" #: include/class_listing.inc:1491 include/class_listing.inc:1493 #: include/class_CopyPasteHandler.inc:571 msgid "Paste" msgstr "" #: include/class_listing.inc:1516 msgid "Cut this entry" msgstr "" #: include/class_listing.inc:1525 msgid "Copy this entry" msgstr "" #: include/class_listing.inc:1557 include/class_listing.inc:1559 msgid "Restore snapshots" msgstr "" #: include/class_listing.inc:1573 msgid "Export list" msgstr "" #: include/class_listing.inc:1607 include/class_SnapShotDialog.inc:142 msgid "Restore snapshot" msgstr "" #: include/class_listing.inc:1615 msgid "Create new snapshot for this object" msgstr "" #: include/class_userFilter.inc:55 #: ihtml/themes/default/userFilterEditor.tpl:27 msgid "Parent filter" msgstr "" #: include/class_userFilter.inc:55 include/class_userFilter.inc:150 #: include/class_SnapShotDialog.inc:55 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:236 #: include/class_userFilterEditor.inc:240 #: ihtml/themes/default/userFilterEditor.tpl:11 setup/setup_migrate.tpl:43 #: setup/setup_migrate.tpl:45 setup/setup_feedback.tpl:16 #: plugins/personal/posix/trustSelect/trust-list.xml:46 #: plugins/personal/posix/groupSelect/group-list.xml:33 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/personal/generic/class_user.inc:1316 #: plugins/personal/generic/class_user.inc:1334 #: plugins/personal/generic/class_user.inc:1376 #: plugins/personal/generic/class_user.inc:1860 #: plugins/addons/propertyEditor/property-list.xml:65 #: plugins/admin/groups/class_group.inc:925 #: plugins/admin/groups/class_group.inc:936 #: plugins/admin/groups/class_group.inc:938 #: plugins/admin/groups/class_group.inc:955 #: plugins/admin/groups/class_group.inc:969 #: plugins/admin/groups/class_group.inc:976 #: plugins/admin/groups/class_group.inc:1076 #: plugins/admin/groups/group-list.xml:41 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:49 #: plugins/admin/ogroups/ogroup-list.xml:41 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:97 #: plugins/admin/ogroups/class_ogroup.inc:157 #: plugins/admin/ogroups/class_ogroup.inc:683 #: plugins/admin/ogroups/class_ogroup.inc:698 #: plugins/admin/ogroups/class_ogroup.inc:702 #: plugins/admin/ogroups/class_ogroup.inc:885 plugins/admin/acl/acl_role.tpl:7 #: plugins/admin/acl/acl-list.xml:49 plugins/admin/acl/paste_role.tpl:4 #: plugins/admin/acl/class_aclRole.inc:741 #: plugins/admin/acl/class_aclRole.inc:753 #: plugins/admin/acl/class_aclRole.inc:763 #: plugins/admin/departments/class_countryGeneric.inc:47 #: plugins/admin/departments/class_countryGeneric.inc:49 #: plugins/admin/departments/class_countryGeneric.inc:54 #: plugins/admin/departments/class_countryGeneric.inc:56 #: plugins/admin/departments/class_countryGeneric.inc:58 #: plugins/admin/departments/class_department.inc:355 #: plugins/admin/departments/class_department.inc:357 #: plugins/admin/departments/class_department.inc:362 #: plugins/admin/departments/class_department.inc:369 #: plugins/admin/departments/class_department.inc:373 #: plugins/admin/departments/class_domain.inc:47 #: plugins/admin/departments/class_domain.inc:49 #: plugins/admin/departments/class_domain.inc:54 #: plugins/admin/departments/class_domain.inc:56 #: plugins/admin/departments/class_domain.inc:58 #: plugins/admin/departments/class_domain.inc:90 #: plugins/admin/departments/class_organizationGeneric.inc:79 #: plugins/admin/departments/class_organizationGeneric.inc:81 #: plugins/admin/departments/class_organizationGeneric.inc:86 #: plugins/admin/departments/class_organizationGeneric.inc:88 #: plugins/admin/departments/class_organizationGeneric.inc:90 #: plugins/admin/departments/class_localityGeneric.inc:48 #: plugins/admin/departments/class_localityGeneric.inc:50 #: plugins/admin/departments/class_localityGeneric.inc:55 #: plugins/admin/departments/class_localityGeneric.inc:57 #: plugins/admin/departments/class_localityGeneric.inc:59 #: plugins/admin/departments/class_dcObject.inc:47 #: plugins/admin/departments/class_dcObject.inc:49 #: plugins/admin/departments/class_dcObject.inc:54 #: plugins/admin/departments/class_dcObject.inc:56 #: plugins/admin/departments/class_dcObject.inc:58 #: plugins/admin/departments/class_dcObject.inc:90 #: plugins/admin/users/class_userManagement.inc:549 #: plugins/admin/users/class_userManagement.inc:597 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Name" msgstr "" #: include/class_userFilter.inc:55 include/class_SnapShotDialog.inc:174 #: include/class_acl.inc:255 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:245 #: ihtml/themes/default/userFilterEditor.tpl:19 #: plugins/personal/posix/trustSelect/trust-list.xml:53 #: plugins/personal/posix/groupSelect/group-list.xml:40 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/admin/groups/class_group.inc:1077 #: plugins/admin/groups/generic.tpl:24 plugins/admin/groups/group-list.xml:49 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:49 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:105 #: plugins/admin/ogroups/generic.tpl:15 #: plugins/admin/ogroups/class_ogroup.inc:887 #: plugins/admin/acl/acl_role.tpl:17 plugins/admin/acl/acl-list.xml:57 #: plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/acl/class_aclRole.inc:743 #: plugins/admin/departments/dcObject.tpl:19 #: plugins/admin/departments/country.tpl:19 #: plugins/admin/departments/class_countryGeneric.inc:63 #: plugins/admin/departments/class_countryGeneric.inc:92 #: plugins/admin/departments/dep-list.xml:79 #: plugins/admin/departments/organization.tpl:19 #: plugins/admin/departments/class_department.inc:365 #: plugins/admin/departments/class_department.inc:675 #: plugins/admin/departments/class_domain.inc:63 #: plugins/admin/departments/class_domain.inc:91 #: plugins/admin/departments/class_organizationGeneric.inc:95 #: plugins/admin/departments/class_organizationGeneric.inc:123 #: plugins/admin/departments/generic.tpl:19 #: plugins/admin/departments/locality.tpl:19 #: plugins/admin/departments/class_localityGeneric.inc:64 #: plugins/admin/departments/class_localityGeneric.inc:92 #: plugins/admin/departments/class_dcObject.inc:63 #: plugins/admin/departments/class_dcObject.inc:91 #: plugins/admin/departments/domain.tpl:19 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Description" msgstr "" #: include/class_userFilter.inc:55 plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/departments/organization.tpl:27 #: plugins/admin/departments/class_department.inc:676 #: plugins/admin/departments/class_organizationGeneric.inc:124 #: plugins/admin/departments/generic.tpl:27 msgid "Category" msgstr "" #: include/class_userFilter.inc:55 ihtml/themes/default/acl.tpl:15 #: ihtml/themes/default/acl.tpl:16 msgid "Options" msgstr "" #: include/class_userFilter.inc:275 include/functions.inc:511 #: include/functions.inc:546 include/functions.inc:554 #: include/functions.inc:600 include/functions.inc:879 #: include/functions.inc:928 include/functions.inc:985 #: include/functions.inc:1035 include/functions.inc:3304 #: include/class_ldap.inc:870 include/class_ldap.inc:1328 #: include/class_config.inc:367 include/class_acl.inc:1396 #: include/class_acl.inc:1492 include/class_SnapshotHandler.inc:123 #: include/class_SnapshotHandler.inc:280 include/class_SnapshotHandler.inc:329 #: include/class_SnapshotHandler.inc:333 include/class_SnapshotHandler.inc:346 #: include/class_SnapshotHandler.inc:380 include/class_SnapshotHandler.inc:435 #: include/class_SnapshotHandler.inc:500 include/class_SnapshotHandler.inc:515 #: setup/class_setupStep_Migrate.inc:461 setup/class_setupStep_Migrate.inc:814 #: html/index.php:271 plugins/personal/posix/class_posixAccount.inc:570 #: plugins/personal/posix/class_posixAccount.inc:832 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:253 #: plugins/personal/generic/class_user.inc:730 #: plugins/personal/generic/class_user.inc:1099 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:204 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:269 #: plugins/admin/groups/class_group.inc:619 #: plugins/admin/groups/class_group.inc:895 #: plugins/admin/ogroups/class_ogroup.inc:782 #: plugins/admin/ogroups/class_ogroup.inc:799 #: plugins/admin/acl/class_aclRole.inc:602 #: plugins/admin/acl/class_aclRole.inc:642 #: plugins/admin/acl/class_aclRole.inc:656 #: plugins/admin/departments/class_department.inc:285 #: plugins/admin/departments/class_department.inc:482 #: plugins/admin/departments/class_department.inc:759 #: plugins/admin/departments/class_department.inc:790 #: plugins/generic/references/class_reference.inc:97 msgid "LDAP error" msgstr "" #: include/class_log.inc:87 #, php-format msgid "Logging failed: %s" msgstr "" #: include/class_log.inc:102 #, php-format msgid "Invalid option %s specified!" msgstr "" #: include/class_log.inc:106 msgid "Specified 'objectType' is empty or invalid!" msgstr "" #: include/class_multi_plug.inc:362 msgid "You are currently editing multiple entries." msgstr "" #: include/class_multi_plug.inc:394 msgid "Reset password" msgstr "" #: include/class_multi_plug.inc:394 msgid "The user password has been reset. Please set a new password!" msgstr "" #: include/class_tabs.inc:72 #, php-format msgid "No plugin definition for %s found: please check the configuration file!" msgstr "" #: include/class_tabs.inc:287 #, php-format msgid "Delete process has been canceled by plugin %s: %s" msgstr "" #: include/class_tabs.inc:420 include/class_acl.inc:1428 #: include/class_acl.inc:1429 include/class_acl.inc:1435 #: plugins/admin/acl/acl-list.xml:15 plugins/admin/acl/tabs_acl.inc:28 #: plugins/admin/acl/class_aclRole.inc:770 msgid "ACL" msgstr "" #: include/class_tabs.inc:425 msgid "References" msgstr "" #: include/functions_helpviewer.inc:45 #, php-format msgid "XML error in guide.xml: %s at line %s" msgstr "" #: include/functions_helpviewer.inc:88 msgid "No help available for this plug-in." msgstr "" #: include/functions_helpviewer.inc:97 html/helpviewer.php:193 msgid "previous" msgstr "" #: include/functions_helpviewer.inc:101 html/helpviewer.php:197 msgid "next" msgstr "" #: include/functions_helpviewer.inc:388 #, php-format msgid "%s results for your search with the keyword %s" msgstr "" #: include/functions_helpviewer.inc:461 #, php-format msgid "%s%% hit rate in file %s" msgstr "" #: include/class_msg_dialog.inc:124 msgid "Please fix the above error and reload the page." msgstr "" #: include/class_plugin.inc:581 msgid "" "The current object has been altered while beeing edited. If you save this " "entry, changes that have been made by others will be discarded!" msgstr "" #: include/class_plugin.inc:1411 #, php-format msgid "Changing ACL DN from %s to %s" msgstr "" #: include/class_SnapShotDialog.inc:55 msgid "Date" msgstr "" #: include/class_SnapShotDialog.inc:94 #, php-format msgid "You are about to delete the snapshot %s." msgstr "" #: include/class_SnapShotDialog.inc:143 msgid "Delete snapshot" msgstr "" #: include/class_SnapShotDialog.inc:144 include/class_SnapShotDialog.inc:162 msgid "Y-m-d, H:i:s" msgstr "" #: include/class_pathNavigator.inc:86 msgid "Welcome to GOsa" msgstr "" #: include/password-methods/class_password-methods.inc:339 msgid "Cannot find a suitable password method for the current hash!" msgstr "" #: include/class_sortableListing.inc:234 msgid "Sortable list" msgstr "" #: include/class_sortableListing.inc:239 msgid "Edit this entry" msgstr "" #: include/class_sortableListing.inc:244 msgid "Delete this entry" msgstr "" #: include/class_configRegistry.inc:194 #: plugins/personal/generic/class_user.inc:273 #: plugins/personal/generic/class_user.inc:1898 msgid "unknown" msgstr "" #: include/class_configRegistry.inc:197 #, php-format msgid "%s has version %s but %s is required!" msgstr "" #: include/class_configRegistry.inc:240 setup/class_setupStep_Schema.inc:96 msgid "The following object classes are missing:" msgstr "" #: include/class_configRegistry.inc:247 setup/class_setupStep_Schema.inc:99 msgid "The following object classes are outdated:" msgstr "" #: include/class_configRegistry.inc:253 msgid "" "Plugins that require one or more of the object classes above will be " "disabled until the object classes get updated." msgstr "" #: include/class_configRegistry.inc:255 msgid "Schema validation error" msgstr "" #: include/class_configRegistry.inc:690 #, php-format msgid "The value %s specified for %s:%s needs to be a bool value!" msgstr "" #: include/class_configRegistry.inc:705 #, php-format msgid "The value %s specified for %s:%s needs to be a string!" msgstr "" #: include/class_configRegistry.inc:720 #, php-format msgid "The value %s specified for %s:%s needs to be numeric!" msgstr "" #: include/class_configRegistry.inc:735 #, php-format msgid "The path %s specified for %s:%s is invalid!" msgstr "" #: include/class_configRegistry.inc:751 include/class_configRegistry.inc:798 #, php-format msgid "The folder %s specified for %s:%s does not exists!" msgstr "" #: include/class_configRegistry.inc:756 #, php-format msgid "The folder %s specified for %s:%s is not readable!" msgstr "" #: include/class_configRegistry.inc:776 include/class_configRegistry.inc:781 #, php-format msgid "The file %s specified for %s:%s is not writeable!" msgstr "" #: include/class_configRegistry.inc:803 #, php-format msgid "The folder %s specified for %s:%s is not writeable!" msgstr "" #: include/class_configRegistry.inc:821 #, php-format msgid "The file %s specified for %s:%s does not exists!" msgstr "" #: include/class_configRegistry.inc:826 #, php-format msgid "The file %s specified for %s:%s is not readable!" msgstr "" #: include/class_configRegistry.inc:842 #, php-format msgid "The command %s specified for %s:%s is invalid!" msgstr "" #: include/class_configRegistry.inc:857 #, php-format msgid "The DN %s specified for %s:%s is invalid!" msgstr "" #: include/class_configRegistry.inc:872 #, php-format msgid "The RDN %s specified for %s:%s is invalid!" msgstr "" #: include/php_setup.inc:114 msgid "Generating this page caused the PHP interpreter to raise some errors!" msgstr "" #: include/php_setup.inc:117 msgid "Send bug report" msgstr "" #: include/php_setup.inc:121 msgid "Toggle details" msgstr "" #: include/php_setup.inc:130 msgid "PHP error" msgstr "" #: include/php_setup.inc:149 msgid "class" msgstr "" #: include/php_setup.inc:155 msgid "function" msgstr "" #: include/php_setup.inc:160 msgid "static" msgstr "" #: include/php_setup.inc:164 msgid "method" msgstr "" #: include/php_setup.inc:197 msgid "Traceback" msgstr "" #: include/php_setup.inc:198 msgid "File" msgstr "" #: include/php_setup.inc:198 msgid "Line" msgstr "" #: include/php_setup.inc:198 include/class_acl.inc:293 #: plugins/admin/acl/class_aclRole.inc:182 msgid "Type" msgstr "" #: include/php_setup.inc:199 msgid "Arguments" msgstr "" #: include/class_certificate.inc:73 msgid "Certificate is empty!" msgstr "" #: include/class_certificate.inc:100 msgid "Cannot load certificate: only PEM and DER are supported!" msgstr "" #: include/class_certificate.inc:115 msgid "Cannot extract information for non PEM certificates!" msgstr "" #: include/class_certificate.inc:219 msgid "No valid certificate loaded!" msgstr "" #: include/class_session.inc:76 include/class_session.inc:101 #: include/class_session.inc:127 msgid "Requested channel does not exist!" msgstr "" #: include/functions.inc:151 #, php-format msgid "Fatal error: no class locations defined - please run %s to fix this" msgstr "" #: include/functions.inc:158 #, php-format msgid "Fatal error: cannot instantiate class %s - try running %s to fix this" msgstr "" #: include/functions.inc:483 #, php-format msgid "Error while connecting to LDAP: %s" msgstr "" #: include/functions.inc:554 include/functions.inc:640 msgid "User ID is not unique!" msgstr "" #: include/functions.inc:854 include/functions.inc:972 msgid "Error while locking entry!" msgstr "" #: include/functions.inc:864 #, php-format msgid "Cannot store lock information in LDAP!" msgstr "" #: include/functions.inc:864 #, php-format msgid "Error: %s" msgstr "" #: include/functions.inc:1294 #, php-format msgid "The current size limit of %d entries is exceeded!" msgstr "" #: include/functions.inc:1296 #, php-format msgid "Set the size limit to %s" msgstr "" #: include/functions.inc:1308 plugins/personal/generic/generic.tpl:218 msgid "Configure" msgstr "" #: include/functions.inc:1313 msgid "list is incomplete" msgstr "" #: include/functions.inc:1663 msgid "Continue anyway" msgstr "" #: include/functions.inc:1665 msgid "Edit anyway" msgstr "" #: include/functions.inc:1668 msgid "These entries are currently locked:" msgstr "" #: include/functions.inc:1909 msgid "Entries per page" msgstr "" #: include/functions.inc:2087 #, php-format msgid "GOsa %s" msgstr "" #: include/functions.inc:2094 #, php-format msgid "GOsa %s snapshot (Rev %s)" msgstr "" #: include/functions.inc:2099 #, php-format msgid "GOsa development snapshot (Rev %s)" msgstr "" #: include/functions.inc:2195 #, php-format msgid "File %s cannot be deleted!" msgstr "" #: include/functions.inc:2225 include/functions.inc:2245 msgid "Cannot write revision file!" msgstr "" #: include/functions.inc:2516 include/functions.inc:2520 #: include/functions.inc:2526 msgid "'baseIdHook' is not available. Using default base!" msgstr "" #: include/functions.inc:2550 msgid "" "Cannot read schema information from LDAP. Schema validation is not possible!" msgstr "" #: include/functions.inc:2576 msgid "This class is used to make users appear in GOsa." msgstr "" #: include/functions.inc:2583 msgid "" "This class is used to lock entries in order to prevent multiple edits at a " "time." msgstr "" #: include/functions.inc:2628 #, php-format msgid "Required object class %s is missing!" msgstr "" #: include/functions.inc:2631 #, php-format msgid "Optional object class %s is missing!" msgstr "" #: include/functions.inc:2636 #, php-format msgid "Wrong version of required object class %s (!=%s) detected!" msgstr "" #: include/functions.inc:2639 #, php-format msgid "Class available" msgstr "" #: include/functions.inc:2661 msgid "" "RFC2307bis schema is enabled, but the current LDAP configuration does not " "support it!" msgstr "" #: include/functions.inc:2662 msgid "" "To use RFC2307bis groups, the objectClass 'posixGroup' must be AUXILIARY." msgstr "" #: include/functions.inc:2666 msgid "" "RFC2307bis schema is disabled, but the current LDAP configuration supports " "it!" msgstr "" #: include/functions.inc:2667 msgid "To correct this, the objectClass 'posixGroup' must be STRUCTURAL." msgstr "" #: include/functions.inc:2692 msgid "German" msgstr "" #: include/functions.inc:2693 msgid "French" msgstr "" #: include/functions.inc:2694 msgid "Italian" msgstr "" #: include/functions.inc:2695 msgid "Spanish" msgstr "" #: include/functions.inc:2696 msgid "English" msgstr "" #: include/functions.inc:2697 msgid "Dutch" msgstr "" #: include/functions.inc:2698 msgid "Polish" msgstr "" #: include/functions.inc:2699 msgid "Brazilian Portuguese" msgstr "" #: include/functions.inc:2701 msgid "Chinese" msgstr "" #: include/functions.inc:2702 msgid "Vietnamese" msgstr "" #: include/functions.inc:2703 msgid "Russian" msgstr "" #: include/functions.inc:2896 msgid "Cannot detect password hash!" msgstr "" #: include/functions.inc:2911 include/functions.inc:3085 msgid "Cannot generate SAMBA hash!" msgstr "" #: include/functions.inc:2942 include/functions.inc:3017 #, php-format msgid "Pre-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:2973 msgid "Password change failed!" msgstr "" #: include/functions.inc:2981 #, php-format msgid "Post-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:3100 #, php-format msgid "Generating SAMBA hash by running %s failed: check %s!" msgstr "" #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3430 include/functions.inc:3442 #: include/functions.inc:3446 include/functions.inc:3461 #: include/functions.inc:3470 msgid "Cannot allocate free ID:" msgstr "" #: include/functions.inc:3378 msgid "unknown idAllocation method!" msgstr "" #: include/functions.inc:3392 #, php-format msgid "%sPoolMin >= %sPoolMax!" msgstr "" #: include/functions.inc:3422 msgid "Cannot create sambaUnixIdPool entry!" msgstr "" #: include/functions.inc:3430 msgid "sambaUnixIdPool is not unique!" msgstr "" #: include/functions.inc:3442 include/functions.inc:3446 msgid "no ID available!" msgstr "" #: include/functions.inc:3470 msgid "maximum number of tries exceeded!" msgstr "" #: include/functions.inc:3530 msgid "Cannot allocate free ID!" msgstr "" #: include/class_filter.inc:158 include/class_filter.inc:228 #: ihtml/themes/default/help.tpl:21 setup/setup_ldap.tpl:15 msgid "Search" msgstr "" #: include/class_filter.inc:226 msgid "Search filter" msgstr "" #: include/class_filter.inc:444 msgid "Search in subtrees" msgstr "" #: include/class_filter.inc:449 msgid "Edit filters" msgstr "" #: include/class_ldap.inc:328 include/class_ldap.inc:365 msgid "Performance warning" msgstr "" #: include/class_ldap.inc:328 include/class_ldap.inc:365 #, php-format msgid "LDAP performance is poor: last query took %.2fs!" msgstr "" #: include/class_ldap.inc:807 #, php-format msgid "Cannot automatically create subtrees with RDN %s: no object class found" msgstr "" #: include/class_ldap.inc:858 #, php-format msgid "Cannot automatically create subtrees with RDN %s: not supported" msgstr "" #: include/class_ldap.inc:945 #, php-format msgid "while operating on %s using LDAP server %s" msgstr "" #: include/class_ldap.inc:947 #, php-format msgid "while operating on LDAP server %s" msgstr "" #: include/class_ldap.inc:1000 #, php-format msgid "Command line programm %s is missing!" msgstr "" #: include/class_ldap.inc:1161 #, php-format msgid "" "Invalid DN %s: block to be imported should start with 'dn: ...' in line %s" msgstr "" #: include/class_ldap.inc:1190 #, php-format msgid "Error while importing DN %s: please check LDIF from line %s on!" msgstr "" #: include/class_core.inc:113 include/class_core.inc:119 #: plugins/generic/references/class_aclResolver.inc:303 msgid "All" msgstr "" #: include/class_core.inc:114 msgid "All objects" msgstr "" #: include/class_core.inc:132 msgid "Traditional" msgstr "" #: include/class_core.inc:132 msgid "Use samba pool" msgstr "" #: include/class_core.inc:164 include/class_core.inc:167 msgid "hours" msgstr "" #: include/class_core.inc:184 msgid "None" msgstr "" #: include/class_core.inc:188 setup/class_setupStep_Language.inc:47 msgid "Automatic" msgstr "" #: include/class_core.inc:200 msgid "User value" msgstr "" #: include/class_core.inc:209 msgid "Core" msgstr "" #: include/class_core.inc:210 msgid "GOsa core plugin" msgstr "" #: include/class_core.inc:238 msgid "" "Enables htaccess instead of LDAP authentication. This can be used to enable " "other authentication mechanisms like Kerberos for the GOsa login." msgstr "" #: include/class_core.inc:248 msgid "Enables the usage statistics module." msgstr "" #: include/class_core.inc:258 msgid "Database file to be used by the usage statistics module." msgstr "" #: include/class_core.inc:268 msgid "" "Enables event logging in GOsa. Setting it to 'On' make GOsa log every action " "a user performs via syslog. If you use this in combination with rsyslog and " "configure it to MySQL logging, you can browse all events in GOsa." msgstr "" #: include/class_core.inc:279 msgid "" "Enables a status bar on the bottom of lists displaying a summary of type and " "number of elements in the list." msgstr "" #: include/class_core.inc:289 msgid "Specify the minimum length for newly entered passwords." msgstr "" #: include/class_core.inc:299 msgid "" "Specify the minimum number of characters that have to differ between old and " "newly entered passwords." msgstr "" #: include/class_core.inc:309 msgid "" "Command to generate password proposals. If a command has been specified, the " "user can decide whether to use an automatic password or a manually specified " "one." msgstr "" #: include/class_core.inc:319 msgid "" "Enable display of PHP errors on the top of the page. Disable this feature in " "production environments to avoid the exposure of sensitive data." msgstr "" #: include/class_core.inc:319 #, php-format msgid "Related option" msgstr "" #: include/class_core.inc:329 msgid "" "Show messages that may assist plugin development. Be aware that this option " "may produce some ACL related false error messages!" msgstr "" #: include/class_core.inc:340 msgid "" "Enable LDAP schema verification during login. The recommended setting is " "'On' because it enables efficient methods to create missing subtrees in the " "LDAP." msgstr "" #: include/class_core.inc:350 msgid "Enable copy and paste for most objects managed by GOsa." msgstr "" #: include/class_core.inc:360 msgid "Enable PHP security checks for disabled register_global settings." msgstr "" #: include/class_core.inc:370 msgid "Enable automatic redirection to HTTPS based administration." msgstr "" #: include/class_core.inc:380 msgid "Enable logging of detailed information of LDAP operations." msgstr "" #: include/class_core.inc:390 msgid "Enable LDAP referral chasing." msgstr "" #: include/class_core.inc:400 msgid "" "Specify LDAP element filter limit. If the limit is not 0, GOsa speeds up " "group queries by putting several queries into a single query. This is known " "to produce problems on some LDAP servers (i.e. Sun DS) and needs to be " "lowered or disabled." msgstr "" #: include/class_core.inc:410 msgid "" "Specify the maximum number of entries GOsa will request from an LDAP server. " "A warning is displayed if this limit is exceeded." msgstr "" #: include/class_core.inc:420 msgid "Disable checks for LDAP size limits." msgstr "" #: include/class_core.inc:430 msgid "Enable warnings for non encrypted connections." msgstr "" #: include/class_core.inc:440 msgid "Enable compression for PPD files." msgstr "" #: include/class_core.inc:451 msgid "" "DN of user with ACL checks disabled. This should only be used to restore " "lost administrative ACLs." msgstr "" #: include/class_core.inc:462 msgid "Storage path for PPD files." msgstr "" #: include/class_core.inc:472 msgid "" "Number of seconds a LDAP query is allowed to take until GOsa aborts the " "request." msgstr "" #: include/class_core.inc:482 msgid "Enables storing of user filters in browser cookies." msgstr "" #: include/class_core.inc:492 msgid "Enables sending of compressed web page content." msgstr "" #: include/class_core.inc:502 msgid "" "Allows to modify uid-proposals when creating a new user from a user-template." msgstr "" #: include/class_core.inc:513 msgid "LDAP attribute which is used to detect changes." msgstr "" #: include/class_core.inc:524 msgid "" "ISO language code which is used to override the automatic language detection." msgstr "" #: include/class_core.inc:535 msgid "CSS and template theme to be used." msgstr "" #: include/class_core.inc:545 msgid "" "Number of seconds after an inactive session expires. This may be overridden " "by some systems php.ini/crontab mechanism." msgstr "" #: include/class_core.inc:555 msgid "Template engine compile directory." msgstr "" #: include/class_core.inc:565 #, php-format msgid "" "Logical AND of the integer values below that controls the debug output on " "every page load: %s" msgstr "" #: include/class_core.inc:586 msgid "" "Command to create Samba NT/LM hashes. Required for password synchronization " "if you don't use supplementary services." msgstr "" #: include/class_core.inc:597 msgid "Default hash to be used for newly created user passwords." msgstr "" #: include/class_core.inc:606 msgid "" "Enable checking for the presence of problematic unicode characters in " "passwords." msgstr "" #: include/class_core.inc:617 msgid "" "Specify whether 'cn' or 'uid' style user DNs are generated. For more " "sophisticated control use the 'accountRDN' setting." msgstr "" #: include/class_core.inc:627 msgid "Location component for user storage inside of departments." msgstr "" #: include/class_core.inc:637 msgid "Location component for group storage inside of departments." msgstr "" #: include/class_core.inc:647 msgid "" "Count base for group IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:657 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:667 msgid "" "Lowest assignable group ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:677 msgid "" "Highest assignable group ID for use with the idAllocationMethod set to " "'pool'." msgstr "" #: include/class_core.inc:687 msgid "" "Lowest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:697 msgid "" "Highest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:707 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'baseIdHook' " "setting." msgstr "" #: include/class_core.inc:717 msgid "Connection URL for use with the gosa-ng service." msgstr "" #: include/class_core.inc:727 msgid "User name used to connect to the 'gosaRpcServer'." msgstr "" #: include/class_core.inc:737 msgid "Password used to connect to the 'gosaRpcServer'." msgstr "" #: include/class_core.inc:747 msgid "Connection URI for use with the gosa-si service (obsolete)." msgstr "" #: include/class_core.inc:757 msgid "Number of seconds after a gosa-si connection is considered 'dead'." msgstr "" #: include/class_core.inc:768 msgid "User attribute which is used for log in." msgstr "" #: include/class_core.inc:779 msgid "Local time zone." msgstr "" #: include/class_core.inc:789 msgid "" "Enable tagging of administrative units. This can be used in conjunction with " "ACLs (obsolete)." msgstr "" #: include/class_core.inc:799 msgid "Enable the use of {sasl} instead of {kerberos} for user realms." msgstr "" #: include/class_core.inc:809 msgid "" "Enable RFC 2307bis style groups. This combines the use of 'member' and " "'memberUid' attributes." msgstr "" #: include/class_core.inc:819 msgid "" "Adjusts the user DN generation to include the users personal title (only in " "conjunction with accountPrimaryAttribute)." msgstr "" #: include/class_core.inc:829 msgid "Script to be called for finding the next free id for groups or users." msgstr "" #: include/class_core.inc:838 msgid "" "Descriptive string for the automatic ID generator. Please read the FAQ file " "for more information." msgstr "" #: include/class_core.inc:848 msgid "Enable strict checking for user IDs and group names." msgstr "" #: include/class_core.inc:858 msgid "" "Lowest assignable user or group ID. Only active if idAllocationMethod is set " "to 'traditional'." msgstr "" #: include/class_core.inc:869 msgid "Attribute to be used for primary mail addresses." msgstr "" #: include/class_core.inc:879 msgid "Namespace used for shared folders." msgstr "" #: include/class_core.inc:889 msgid "" "Namespace rule to create user folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:899 msgid "" "Namespace rule to create folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:909 msgid "Seconds after an IMAP connection is considered dead." msgstr "" #: include/class_core.inc:920 msgid "Class name of the mail method to be used." msgstr "" #: include/class_core.inc:930 msgid "" "Enable slashes instead of dots as a name space separator for Cyrus IMAP." msgstr "" #: include/class_core.inc:940 msgid "" "Directory to store vacation templates. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:950 msgid "Enable TLS for LDAP connections." msgstr "" #: include/class_core.inc:960 msgid "Enable IVBB used by german authorities." msgstr "" #: include/class_core.inc:970 msgid "" "Maintain sambaIdmapEntry objects to improve performance on some Samba " "versions." msgstr "" #: include/class_core.inc:980 msgid "Enable checks to determine whether an account is expired or not." msgstr "" #: include/class_core.inc:990 msgid "" "String containing the SID for Samba setups without the Domain object in LDAP." msgstr "" #: include/class_core.inc:1000 msgid "" "String containing the RID base for Samba setups without the Domain object in " "LDAP." msgstr "" #: include/class_core.inc:1010 msgid "Enable manual object snapshots." msgstr "" #: include/class_core.inc:1020 msgid "Base DN for snapshot storage." msgstr "" #: include/class_core.inc:1030 msgid "DN of the snapshot administrator." msgstr "" #: include/class_core.inc:1040 msgid "Password of the snapshot administrator." msgstr "" #: include/class_core.inc:1051 msgid "" "Method for user and group ID generation. Note: only the 'traditional' method " "is safe due to PHP limitations." msgstr "" #: include/class_core.inc:1060 msgid "URI of server to be used for snapshots." msgstr "" #: include/class_core.inc:1069 msgid "Enable transliteration of cyrillic characters for UID generation." msgstr "" #: include/class_config.inc:168 #, php-format msgid "XML error in gosa.conf: %s at line %d" msgstr "" #: include/class_config.inc:367 msgid "Cannot bind to LDAP!" msgstr "" #: include/class_config.inc:713 msgid "sambaSID and/or sambaRidBase missing in the configuration!" msgstr "" #: include/class_config.inc:1132 msgid "Configuration" msgstr "" #: include/class_config.inc:1132 msgid "" "The configuration file you are using is outdated. Please move the GOsa " "configuration file away to run the GOsa setup again." msgstr "" #: include/class_config.inc:1174 include/class_config.inc:1205 #, php-format msgid "" "The snapshot functionality is enabled, but the required variable %s is not " "set." msgstr "" #: include/class_config.inc:1187 #, php-format msgid "" "The snapshot functionality is enabled, but the required compression module " "is missing. Please install %s." msgstr "" #: include/exporter/class_PDF.inc:24 msgid "Page" msgstr "" #: include/exporter/class_cvsExporter.inc:48 msgid "CSV" msgstr "" #: include/exporter/class_pdfExporter.inc:18 msgid "No PDF export possible: there is no FPDF library installed." msgstr "" #: include/exporter/class_pdfExporter.inc:145 msgid "PDF" msgstr "" #: include/class_jsonRPC.inc:38 #, php-format msgid "The RPC connection (%s) specified for %s:%s is invalid: %s" msgstr "" #: include/class_jsonRPC.inc:333 #, php-format msgid "Unknown HTTP status code %s!" msgstr "" #: include/class_ItemSelector.inc:299 include/class_baseSelector.inc:235 #: include/class_releaseSelector.inc:262 msgid "Submit" msgstr "" #: include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #, php-format msgid "Copy and paste failed!" msgstr "" #: include/class_CopyPasteHandler.inc:118 #, php-format msgid "Cannot set permission for %s" msgstr "" #: include/class_CopyPasteHandler.inc:159 #, php-format msgid "'%s' is no valid LDAP object" msgstr "" #: include/class_CopyPasteHandler.inc:176 #, php-format msgid "No write permission in '%s'" msgstr "" #: include/class_CopyPasteHandler.inc:193 #, php-format msgid "Cannot set permission for '%s'" msgstr "" #: include/class_CopyPasteHandler.inc:396 #, php-format msgid "These objects will be pasted: %s" msgstr "" #: include/class_CopyPasteHandler.inc:420 #, php-format msgid "This object will be pasted: %s" msgstr "" #: include/class_CopyPasteHandler.inc:573 msgid "Cannot paste" msgstr "" #: include/class_acl.inc:27 plugins/admin/acl/class_aclManagement.inc:25 msgid "Access control" msgstr "" #: include/class_acl.inc:28 msgid "Manage access control lists" msgstr "" #: include/class_acl.inc:126 include/class_acl.inc:550 #: include/class_acl.inc:554 include/class_acl.inc:708 #: include/class_acl.inc:1138 include/class_acl.inc:1259 #, php-format msgid "All users" msgstr "" #: include/class_acl.inc:229 #: plugins/generic/references/class_aclResolver.inc:63 msgid "Reset ACLs" msgstr "" #: include/class_acl.inc:230 plugins/admin/acl/class_aclRole.inc:139 #: plugins/generic/references/class_aclResolver.inc:64 msgid "One level" msgstr "" #: include/class_acl.inc:231 include/class_acl.inc:236 #: plugins/admin/acl/class_aclRole.inc:140 #: plugins/generic/references/class_aclResolver.inc:65 msgid "Current object" msgstr "" #: include/class_acl.inc:232 plugins/admin/acl/class_aclRole.inc:141 #: plugins/generic/references/class_aclResolver.inc:66 msgid "Complete subtree" msgstr "" #: include/class_acl.inc:233 plugins/admin/acl/class_aclRole.inc:142 #: plugins/generic/references/class_aclResolver.inc:67 msgid "Complete subtree (permanent)" msgstr "" #: include/class_acl.inc:234 include/class_acl.inc:237 #: plugins/generic/references/class_aclResolver.inc:68 msgid "Use ACL defined in role" msgstr "" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:297 #: plugins/personal/generic/class_user.inc:1676 #: plugins/admin/users/class_userManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:185 msgid "Users" msgstr "" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:300 #: plugins/admin/groups/class_group.inc:1060 #: plugins/admin/groups/class_groupManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:177 msgid "Groups" msgstr "" #: include/class_acl.inc:255 msgid "Section" msgstr "" #: include/class_acl.inc:265 msgid "Used" msgstr "" #: include/class_acl.inc:277 plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "~" msgstr "" #: include/class_acl.inc:293 plugins/admin/ogroups/class_ogroup.inc:889 msgid "Member" msgstr "" #: include/class_acl.inc:293 plugins/admin/acl/class_aclRole.inc:182 #: plugins/admin/acl/class_aclRole.inc:744 msgid "Permissions" msgstr "" #: include/class_acl.inc:555 include/class_acl.inc:1260 msgid "Pseudo-group for all users." msgstr "" #: include/class_acl.inc:669 msgid "No ACL settings for this category!" msgstr "" #: include/class_acl.inc:672 #, php-format msgid "ACLs for: %s" msgstr "" #: include/class_acl.inc:678 include/class_acl.inc:682 msgid "category ACL" msgstr "" #: include/class_acl.inc:744 #, php-format msgid "Edit ACL for '%s' with scope '%s'" msgstr "" #: include/class_acl.inc:906 include/class_acl.inc:913 msgid "Show/hide advanced settings" msgstr "" #: include/class_acl.inc:924 msgid "Create objects" msgstr "" #: include/class_acl.inc:925 msgid "Move objects" msgstr "" #: include/class_acl.inc:926 msgid "Remove objects" msgstr "" #: include/class_acl.inc:928 #: plugins/generic/references/class_aclResolver.inc:307 msgid "Restrict changes to user's own object" msgstr "" #: include/class_acl.inc:932 include/class_acl.inc:1041 #: include/class_acl.inc:1045 #: plugins/generic/references/class_aclResolver.inc:309 msgid "read" msgstr "" #: include/class_acl.inc:933 include/class_acl.inc:1043 #: include/class_acl.inc:1046 #: plugins/generic/references/class_aclResolver.inc:310 msgid "write" msgstr "" #: include/class_acl.inc:937 msgid "Complete object" msgstr "" #: include/class_acl.inc:1089 #, php-format msgid "Unknown ACL type '%s'!" msgstr "" #: include/class_acl.inc:1134 #, php-format msgid "Unknown entry '%s'!" msgstr "" #: include/class_acl.inc:1198 include/class_acl.inc:1200 #, php-format msgid "ACL role: %s" msgstr "" #: include/class_acl.inc:1200 msgid "unknown ACL role" msgstr "" #: include/class_acl.inc:1208 #, php-format msgid "Contains settings for these objects: %s" msgstr "" #: include/class_acl.inc:1219 ihtml/themes/default/acl.tpl:53 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "Members" msgstr "" #: include/class_acl.inc:1225 msgid "inactive" msgstr "" #: include/class_acl.inc:1225 msgid "No members" msgstr "" #: include/class_acl.inc:1429 msgid "Access control list" msgstr "" #: include/class_acl.inc:1435 msgid "ACL roles" msgstr "" #: include/class_acl.inc:1438 msgid "ACL Entries" msgstr "" #: include/class_socketClient.inc:108 #, php-format msgid "Socket connection to %s:%s failed: %s" msgstr "" #: include/class_socketClient.inc:191 #, php-format msgid "Socket timeout of %s seconds reached!" msgstr "" #: include/class_userFilterEditor.inc:254 #, php-format msgid "Error in filter #%s: %s opening and %s closing brackets detected!" msgstr "" #: include/class_gosaSupportDaemon.inc:112 msgid "GOsa support daemon" msgstr "" #: include/class_gosaSupportDaemon.inc:787 msgid "Cannot not parse XML!" msgstr "" #: include/class_gosaSupportDaemon.inc:1184 #, php-format msgid "Cannot send abort event for entry %s!" msgstr "" #: include/class_gosaSupportDaemon.inc:1204 #, php-format msgid "Cannot remove entry %s!" msgstr "" #: include/class_GOsaRegistration.inc:127 msgid "" "UNIX-timestamp pointing to the date GOsa will ask for a registration again " "(-1 to disable)" msgstr "" #: include/class_SnapshotHandler.inc:45 include/class_SnapshotHandler.inc:76 #, php-format msgid "" "The snapshot functionality is enabled but the required variable %s is not " "set!" msgstr "" #: include/class_SnapshotHandler.inc:58 #, php-format msgid "" "The snapshot functionality is enabled but the required PHP compression " "module is missing: %s!" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:1 #: ihtml/themes/default/userFilterEditor.tpl:5 msgid "Filter editor" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:8 msgid "Filter properties" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:40 #: plugins/personal/generic/class_user.inc:1664 #: plugins/personal/generic/generic.tpl:604 msgid "Public visible" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:45 msgid "Enabled" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:49 msgid "Categories where the filter is visible" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:69 msgid "Query" msgstr "" #: ihtml/themes/default/acl.tpl:7 plugins/admin/acl/acl_role.tpl:3 #: plugins/admin/acl/acl_role.tpl:4 msgid "Assigned ACL for current entry" msgstr "" #: ihtml/themes/default/acl.tpl:10 plugins/admin/acl/acl_role.tpl:38 msgid "New ACL" msgstr "" #: ihtml/themes/default/acl.tpl:19 plugins/admin/acl/acl_role.tpl:45 msgid "ACL type" msgstr "" #: ihtml/themes/default/acl.tpl:23 ihtml/themes/default/acl.tpl:28 #: plugins/admin/acl/acl_role.tpl:45 msgid "Select an ACL type" msgstr "" #: ihtml/themes/default/acl.tpl:40 msgid "Additional filter options" msgstr "" #: ihtml/themes/default/acl.tpl:61 msgid "Add all users" msgstr "" #: ihtml/themes/default/acl.tpl:68 plugins/admin/acl/acl_role.tpl:51 msgid "List of available ACL categories" msgstr "" #: ihtml/themes/default/acl.tpl:76 msgid "ACL for this object" msgstr "" #: ihtml/themes/default/acl.tpl:82 msgid "Available roles" msgstr "" #: ihtml/themes/default/removeEntries.tpl:4 #: plugins/addons/propertyEditor/property-list.tpl:7 msgid "Attention" msgstr "" #: ihtml/themes/default/removeEntries.tpl:14 msgid "" "If you're sure you want to do this press 'Delete' to continue or 'Cancel' to " "abort." msgstr "" #: ihtml/themes/default/userFilter.tpl:1 msgid "List of defined filters" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:3 msgid "Restoring object snapshots" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:6 msgid "" "This procedure will restore a snapshot of the selected object. It will " "replace the existing object after pressing the restore button." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:9 msgid "" "DNS configuration and some database entries cannot be restored. They need to " "be recreated manually." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:12 msgid "" "Don't forget to check references to other objects, for example does the " "selected printer still exists ?" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:29 msgid "There is no snapshot available that can be restored" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:31 msgid "Choose a snapshot and click the folder image, to restore the snapshot" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:50 msgid "Creating object snapshots" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:53 msgid "" "This procedure will create a snapshot of the selected object. It will be " "stored inside a special branch of your directory system and can be restored " "later on." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:56 msgid "" "Remember that database entries, DNS configurations and possibly created " "zones in server extensions will not be stored in the snapshot." msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:71 msgid "Time stamp" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:80 msgid "Reason for generating this snapshot" msgstr "" #: ihtml/themes/default/snapshotdialog.tpl:88 #: plugins/admin/departments/class_department.inc:564 #: plugins/admin/departments/class_department.inc:646 #: plugins/admin/users/template.tpl:60 msgid "Continue" msgstr "" #: ihtml/themes/default/password.tpl:5 msgid "Change your password" msgstr "" #: ihtml/themes/default/password.tpl:61 msgid "Your password has been changed successfully." msgstr "" #: ihtml/themes/default/password.tpl:65 html/main.php:220 #: plugins/personal/password/class_password.inc:160 #: plugins/personal/password/class_password.inc:163 #: plugins/personal/password/class_password.inc:166 #: plugins/admin/users/class_userManagement.inc:400 msgid "Password change" msgstr "" #: ihtml/themes/default/password.tpl:72 msgid "" "Enter the current password and the new password (twice) in the fields below " "and press the 'Set password' button." msgstr "" #: ihtml/themes/default/password.tpl:74 #: plugins/personal/password/class_password.inc:26 #: plugins/admin/users/user-list.xml:128 plugins/admin/users/user-list.xml:230 msgid "Change password" msgstr "" #: ihtml/themes/default/password.tpl:77 ihtml/themes/default/password.tpl:79 msgid "Directory" msgstr "" #: ihtml/themes/default/password.tpl:86 ihtml/themes/default/password.tpl:90 #: ihtml/themes/default/login.tpl:37 ihtml/themes/default/login.tpl:40 msgid "User name" msgstr "" #: ihtml/themes/default/password.tpl:97 #: plugins/personal/myaccount/password.tpl:12 #: plugins/personal/myaccount/password.tpl:41 #: plugins/personal/password/password.tpl:18 #: plugins/personal/password/password.tpl:47 msgid "Current password" msgstr "" #: ihtml/themes/default/password.tpl:103 #: plugins/personal/myaccount/password.tpl:18 #: plugins/personal/myaccount/password.tpl:71 #: plugins/personal/password/password.tpl:24 #: plugins/personal/password/password.tpl:78 #: plugins/admin/users/password.tpl:13 plugins/admin/users/password.tpl:65 #: plugins/admin/users/class_userManagement.inc:319 msgid "New password" msgstr "" #: ihtml/themes/default/password.tpl:110 #: plugins/personal/myaccount/password.tpl:25 #: plugins/personal/myaccount/password.tpl:78 #: plugins/personal/password/password.tpl:31 #: plugins/personal/password/password.tpl:85 #: plugins/admin/users/password.tpl:20 plugins/admin/users/password.tpl:72 msgid "Repeat new password" msgstr "" #: ihtml/themes/default/password.tpl:117 #: plugins/personal/myaccount/password.tpl:31 #: plugins/personal/myaccount/password.tpl:84 #: plugins/personal/password/password.tpl:37 #: plugins/personal/password/password.tpl:91 msgid "Password strength" msgstr "" #: ihtml/themes/default/password.tpl:131 msgid "Click here to change your password" msgstr "" #: ihtml/themes/default/password.tpl:131 #: plugins/personal/myaccount/password.tpl:96 #: plugins/personal/password/password.tpl:103 #: plugins/admin/users/password.tpl:101 msgid "Set password" msgstr "" #: ihtml/themes/default/islocked.tpl:4 msgid "Locking conflict detected" msgstr "" #: ihtml/themes/default/islocked.tpl:14 msgid "" "If this lock detection is false, the other person has obviously closed the " "web browser during the edit operation. You may want to take over the lock by " "pressing the 'Edit anyway' button." msgstr "" #: ihtml/themes/default/islocked.tpl:23 msgid "Read only" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:1 msgid "Copy & paste wizard" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:7 msgid "" "Some values need to be unique in the complete directory while some " "combinations make no sense. Please edit the values below to fulfill the " "policies." msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:9 msgid "Remember that some properties like taken snapshots will not be copied!" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:10 msgid "" "Or if you copy or cut an entry within GOsa and delete the source object, you " "may get errors while pasting this object again!" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:23 msgid "Cancel all" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:28 msgid "Operation complete" msgstr "" #: ihtml/themes/default/copyPasteDialog.tpl:30 #: setup/class_setupStep_Finish.inc:39 msgid "Finish" msgstr "" #: ihtml/themes/default/logout.tpl:6 msgid "Your GOsa session has expired!" msgstr "" #: ihtml/themes/default/logout.tpl:9 msgid "" "It has been a while since your last interaction with GOsa took place. Your " "session has been closed for security reasons. Please login again to continue " "with administrative tasks." msgstr "" #: ihtml/themes/default/logout.tpl:16 msgid "Login again" msgstr "" #: ihtml/themes/default/login.tpl:31 msgid "Login to GOsa" msgstr "" #: ihtml/themes/default/login.tpl:47 setup/setup_migrate.tpl:53 #: plugins/personal/generic/paste_generic.tpl:21 #: plugins/generic/dashBoard/Register/register.tpl:53 msgid "Password" msgstr "" #: ihtml/themes/default/login.tpl:61 msgid "Choose the directory to work on" msgstr "" #: ihtml/themes/default/login.tpl:66 msgid "Click here to log in" msgstr "" #: ihtml/themes/default/login.tpl:66 ihtml/themes/default/login.tpl:67 msgid "Log in" msgstr "" #: ihtml/themes/default/sizelimit.tpl:3 msgid "" "The size limit option makes LDAP operations faster and saves the LDAP server " "from getting too much load. The easiest way to handle big databases without " "long timeouts would be to limit your search to smaller values and use " "filters to get the entries you are looking for." msgstr "" #: ihtml/themes/default/sizelimit.tpl:8 msgid "Please choose the way to react for this session" msgstr "" #: ihtml/themes/default/sizelimit.tpl:10 msgid "ignore this error and show all entries the LDAP server returns" msgstr "" #: ihtml/themes/default/sizelimit.tpl:11 msgid "" "ignore this error and show all entries that fit into the defined size limit" msgstr "" #: ihtml/themes/default/infoPage.tpl:4 msgid "User information" msgstr "" #: ihtml/themes/default/infoPage.tpl:17 setup/setup_migrate.tpl:49 #: plugins/personal/posix/class_posixAccount.inc:1369 msgid "User ID" msgstr "" #: ihtml/themes/default/infoPage.tpl:18 #: plugins/personal/generic/class_user.inc:1702 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:48 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:48 #: plugins/admin/users/user-list.xml:49 #: plugins/generic/references/class_reference.inc:87 msgid "Surname" msgstr "" #: ihtml/themes/default/infoPage.tpl:19 #: plugins/personal/generic/class_user.inc:1326 #: plugins/personal/generic/class_user.inc:1373 #: plugins/personal/generic/class_user.inc:1703 #: plugins/personal/generic/class_user.inc:1857 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:40 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:40 #: plugins/admin/users/class_userManagement.inc:552 #: plugins/admin/users/user-list.xml:57 #: plugins/generic/references/class_reference.inc:87 msgid "Given name" msgstr "" #: ihtml/themes/default/infoPage.tpl:20 #: plugins/personal/generic/class_user.inc:1708 #: plugins/personal/generic/generic.tpl:92 msgid "Personal title" msgstr "" #: ihtml/themes/default/infoPage.tpl:21 #: plugins/personal/generic/class_user.inc:1709 #: plugins/personal/generic/generic.tpl:102 msgid "Academic title" msgstr "" #: ihtml/themes/default/infoPage.tpl:22 #: plugins/personal/generic/class_user.inc:1737 msgid "Home postal address" msgstr "" #: ihtml/themes/default/infoPage.tpl:23 #: plugins/personal/generic/class_user.inc:1368 #: plugins/personal/generic/class_user.inc:1711 #: plugins/personal/generic/generic.tpl:117 msgid "Date of birth" msgstr "" #: ihtml/themes/default/infoPage.tpl:24 #: plugins/admin/groups/class_groupManagement.inc:165 #: plugins/admin/ogroups/tabs_ogroups.inc:155 #: plugins/admin/users/class_userManagement.inc:897 #: plugins/generic/infoPage/class_infoPage.inc:112 msgid "Mail" msgstr "" #: ihtml/themes/default/infoPage.tpl:25 #: plugins/personal/generic/class_user.inc:1738 msgid "Home phone number" msgstr "" #: ihtml/themes/default/infoPage.tpl:30 setup/setup_feedback.tpl:10 #: setup/setup_feedback.tpl:12 plugins/personal/generic/class_user.inc:1720 #: plugins/personal/generic/generic.tpl:298 #: plugins/admin/departments/dep-filter.xml:91 #: plugins/admin/departments/dep-list.xml:47 #: plugins/admin/departments/dep-list.xml:131 #: plugins/admin/departments/organization.tpl:4 #: plugins/admin/departments/class_organizationGeneric.inc:113 #: plugins/admin/departments/class_organizationGeneric.inc:114 #: plugins/admin/departments/class_departmentManagement.inc:241 msgid "Organization" msgstr "" #: ihtml/themes/default/infoPage.tpl:31 #: plugins/admin/departments/dep-filter.xml:35 #: plugins/admin/departments/generic.tpl:4 msgid "Organizational Unit" msgstr "" #: ihtml/themes/default/infoPage.tpl:32 #: plugins/personal/generic/class_user.inc:1734 #: plugins/personal/generic/generic.tpl:436 #: plugins/admin/departments/organization.tpl:82 #: plugins/admin/departments/organization.tpl:94 #: plugins/admin/departments/class_department.inc:680 #: plugins/admin/departments/class_organizationGeneric.inc:130 #: plugins/admin/departments/generic.tpl:83 #: plugins/admin/departments/generic.tpl:85 #: plugins/admin/departments/generic.tpl:95 #: plugins/admin/departments/class_localityGeneric.inc:91 msgid "Location" msgstr "" #: ihtml/themes/default/infoPage.tpl:33 #: plugins/personal/generic/class_user.inc:1665 #: plugins/personal/generic/generic.tpl:535 msgid "Street" msgstr "" #: ihtml/themes/default/infoPage.tpl:34 #: plugins/personal/generic/class_user.inc:1722 msgid "Department number" msgstr "" #: ihtml/themes/default/infoPage.tpl:36 #: plugins/personal/generic/class_user.inc:1724 msgid "Employee number" msgstr "" #: ihtml/themes/default/infoPage.tpl:37 #: plugins/personal/generic/class_user.inc:1725 #: plugins/personal/generic/generic.tpl:330 msgid "Employee type" msgstr "" #: ihtml/themes/default/infoPage.tpl:48 #: plugins/personal/generic/paste_generic.tpl:1 msgid "User settings" msgstr "" #: ihtml/themes/default/infoPage.tpl:55 msgid "" "You have no permission to edit any properties. Please contact your " "administrator." msgstr "" #: ihtml/themes/default/infoPage.tpl:61 msgid "Administrative contact" msgstr "" #: ihtml/themes/default/infoPage.tpl:72 plugins/generic/welcome/welcome.tpl:8 msgid "The GOsa team" msgstr "" #: ihtml/themes/default/msg_dialog.tpl:55 #: ihtml/themes/default/msg_dialog.tpl:103 msgid "Error message title" msgstr "" #: ihtml/themes/default/msg_dialog.tpl:66 #: ihtml/themes/default/msg_dialog.tpl:115 msgid "Error message" msgstr "" #: ihtml/themes/default/ldifViewer.tpl:1 msgid "Raw LDAP entry" msgstr "" #: ihtml/themes/default/framework.tpl:9 msgid "Log out" msgstr "" #: ihtml/themes/default/framework.tpl:10 msgid "" "You are currently editing a database entry. Do you want to dismiss the " "changes?" msgstr "" #: ihtml/themes/default/framework.tpl:22 #, php-format msgid "Session expires in %d!" msgstr "" #: ihtml/themes/default/help.tpl:9 msgid "GOsa help viewer" msgstr "" #: ihtml/themes/default/help.tpl:15 msgid "Index" msgstr "" #: ihtml/themes/default/logout-close.tpl:5 msgid "Your GOsa session has been closed!" msgstr "" #: ihtml/themes/default/logout-close.tpl:7 msgid "" "Please close this browser window and clean the authentication caches to " "avoid an automatic re-authentication by your browser." msgstr "" #: setup/class_setupStep_Migrate.inc:51 setup/class_setupStep_Migrate.inc:52 msgid "LDAP inspection" msgstr "" #: setup/class_setupStep_Migrate.inc:53 msgid "Analyze your current LDAP for GOsa compatibility" msgstr "" #: setup/class_setupStep_Migrate.inc:59 msgid "Checking for root object" msgstr "" #: setup/class_setupStep_Migrate.inc:65 msgid "Inspecting object classes in root object" msgstr "" #: setup/class_setupStep_Migrate.inc:71 msgid "Checking permission for LDAP database" msgstr "" #: setup/class_setupStep_Migrate.inc:78 msgid "Checking for super administrator" msgstr "" #: setup/class_setupStep_Migrate.inc:118 setup/class_setupStep_Migrate.inc:186 #: setup/class_setupStep_Migrate.inc:709 msgid "LDAP query failed" msgstr "" #: setup/class_setupStep_Migrate.inc:119 setup/class_setupStep_Migrate.inc:187 #: setup/class_setupStep_Migrate.inc:710 msgid "Possibly the 'root object' is missing." msgstr "" #: setup/class_setupStep_Migrate.inc:132 setup/class_setupStep_Migrate.inc:145 #: setup/class_setupStep_Migrate.inc:307 setup/class_setupStep_Migrate.inc:661 #: setup/class_setupStep_Migrate.inc:674 setup/class_setupStep_Migrate.inc:729 #: setup/class_setupStep_Migrate.inc:750 setup/class_setupStep_Migrate.inc:802 msgid "Failed" msgstr "" #: setup/class_setupStep_Migrate.inc:134 setup/class_setupStep_Migrate.inc:147 #, php-format msgid "" "The specified user '%s' does not have full access to your LDAP database." msgstr "" #: setup/class_setupStep_Migrate.inc:308 msgid "There is no GOsa administrator account inside your LDAP." msgstr "" #: setup/class_setupStep_Migrate.inc:309 #: plugins/admin/groups/group-list.xml:73 #: plugins/admin/ogroups/ogroup-list.xml:73 plugins/admin/acl/acl-list.xml:76 #: plugins/admin/departments/dep-list.xml:98 #: plugins/admin/users/user-list.xml:89 msgid "Create" msgstr "" #: setup/class_setupStep_Migrate.inc:377 msgid "Migration error" msgstr "" #: setup/class_setupStep_Migrate.inc:377 #, php-format msgid "Cannot add ACL for user '%s':" msgstr "" #: setup/class_setupStep_Migrate.inc:415 setup/class_setupStep_Migrate.inc:425 msgid "Input error" msgstr "" #: setup/class_setupStep_Migrate.inc:415 #: plugins/personal/posix/paste_generic.tpl:38 #: plugins/personal/posix/generic.tpl:64 #: plugins/personal/posix/class_posixAccount.inc:910 #: plugins/personal/posix/class_posixAccount.inc:913 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/generic/references/class_reference.inc:87 msgid "UID" msgstr "" #: setup/class_setupStep_Migrate.inc:420 msgid "Password error" msgstr "" #: setup/class_setupStep_Migrate.inc:420 msgid "Provided passwords do not match!" msgstr "" #: setup/class_setupStep_Migrate.inc:425 msgid "Specify a valid user ID!" msgstr "" #: setup/class_setupStep_Migrate.inc:450 #, php-format msgid "Adding an administrative user failed: object '%s' already exists!" msgstr "" #: setup/class_setupStep_Migrate.inc:662 msgid "" "The LDAP root object is missing. It is required to use your LDAP service." msgstr "" #: setup/class_setupStep_Migrate.inc:663 setup/class_setupStep_Migrate.inc:676 msgid "Try to create root object" msgstr "" #: setup/class_setupStep_Migrate.inc:675 msgid "Root object couldn't be created, you should try it on your own." msgstr "" #: setup/class_setupStep_Migrate.inc:730 #, php-format msgid "Missing GOsa object class '%s'!" msgstr "" #: setup/class_setupStep_Migrate.inc:731 msgid "Please check your installation." msgstr "" #: setup/class_setupStep_Migrate.inc:752 #, php-format msgid "" "Cannot handle the structural object type of your root object. Please try to " "add the object class '%s' manually." msgstr "" #: setup/class_setupStep_Migrate.inc:804 setup/setup_migrate.tpl:32 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:181 msgid "Migrate" msgstr "" #: setup/setup_checks.tpl:2 msgid "" "This step checks if your PHP server has all required modules and " "configuration settings." msgstr "" #: setup/setup_checks.tpl:5 msgid "Inspection" msgstr "" #: setup/setup_checks.tpl:8 msgid "PHP module and extension checks" msgstr "" #: setup/setup_checks.tpl:10 msgid "Basic checks" msgstr "" #: setup/setup_checks.tpl:38 setup/setup_checks.tpl:79 msgid "GOsa will NOT run without fixing this." msgstr "" #: setup/setup_checks.tpl:40 setup/setup_checks.tpl:81 msgid "GOsa will run without fixing this." msgstr "" #: setup/setup_checks.tpl:50 msgid "PHP setup configuration" msgstr "" #: setup/setup_checks.tpl:50 msgid "show information" msgstr "" #: setup/setup_checks.tpl:51 msgid "Extended checks" msgstr "" #: setup/class_setupStep_Finish.inc:40 msgid "Write configuration file" msgstr "" #: setup/class_setupStep_Finish.inc:41 msgid "Finish - write the configuration file" msgstr "" #: setup/class_setupStep_Finish.inc:106 msgid "" "Your configuration file is currently world readable. Please update the file " "permissions!" msgstr "" #: setup/class_setupStep_Finish.inc:108 msgid "The configuration is currently not readable or it does not exists." msgstr "" #: setup/class_setupStep_Finish.inc:117 #, php-format msgid "" "After downloading and placing the file under %s, please make sure that the " "user the web server is running with is able to read %s, while other users " "shouldn't. You may want to execute these commands to achieve this " "requirement:" msgstr "" #: setup/class_setupStep_Ldap.inc:54 msgid "LDAP setup" msgstr "" #: setup/class_setupStep_Ldap.inc:55 msgid "LDAP connection setup" msgstr "" #: setup/class_setupStep_Ldap.inc:56 msgid "" "This dialog performs the basic configuration of the LDAP connectivity for " "GOsa." msgstr "" #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:41 #: setup/setup_feedback.tpl:52 msgid "No" msgstr "" #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:39 #: setup/setup_feedback.tpl:50 msgid "Yes" msgstr "" #: setup/class_setupStep_Ldap.inc:113 #, php-format msgid "Anonymous bind to server '%s' failed!" msgstr "" #: setup/class_setupStep_Ldap.inc:115 #, php-format msgid "Bind as user '%s' failed!" msgstr "" #: setup/class_setupStep_Ldap.inc:120 #, php-format msgid "Anonymous bind to server '%s' succeeded." msgstr "" #: setup/class_setupStep_Ldap.inc:121 msgid "Please specify user and password!" msgstr "" #: setup/class_setupStep_Ldap.inc:123 #, php-format msgid "Bind as user '%s' to server '%s' succeeded!" msgstr "" #: setup/class_setupStep_Feedback.inc:94 msgid "UNIX accounts/groups" msgstr "" #: setup/class_setupStep_Feedback.inc:96 msgid "Samba management" msgstr "" #: setup/class_setupStep_Feedback.inc:98 msgid "Mail system management" msgstr "" #: setup/class_setupStep_Feedback.inc:100 msgid "FAX system administration" msgstr "" #: setup/class_setupStep_Feedback.inc:102 msgid "Asterisk administration" msgstr "" #: setup/class_setupStep_Feedback.inc:104 msgid "System inventory" msgstr "" #: setup/class_setupStep_Feedback.inc:106 msgid "System/Configuration management" msgstr "" #: setup/class_setupStep_Feedback.inc:108 msgid "Address book" msgstr "" #: setup/class_setupStep_Feedback.inc:114 msgid "Feedback" msgstr "" #: setup/class_setupStep_Feedback.inc:115 msgid "Get notifications or send feedback" msgstr "" #: setup/class_setupStep_Feedback.inc:116 msgid "Notification and feedback" msgstr "" #: setup/class_setupStep_Feedback.inc:132 setup/class_setup.inc:74 msgid "Setup error" msgstr "" #: setup/class_setupStep_Feedback.inc:140 #: setup/class_setupStep_Feedback.inc:147 msgid "Feedback error" msgstr "" #: setup/class_setupStep_Feedback.inc:140 #, php-format msgid "Cannot send feedback to '%s': %s" msgstr "" #: setup/class_setupStep_Feedback.inc:147 msgid "Cannot send feedback: service temporarily unavailable" msgstr "" #: setup/class_setupStep_Feedback.inc:181 msgid "Please specify a valid email address." msgstr "" #: setup/class_setupStep_Feedback.inc:185 msgid "" "You have to select at least one of both options, subscribe or send feedback." msgstr "" #: setup/setup_license.tpl:3 msgid "" "GOsa is developed under the terms of the GNU General Public License v2. " "Please accept the terms below." msgstr "" #: setup/setup_license.tpl:11 msgid "I have read the license and accept it" msgstr "" #: setup/setup_ldap.tpl:2 msgid "" "The main data source used in GOsa is LDAP. In order to access the " "information stored there, please enter the required information." msgstr "" #: setup/setup_ldap.tpl:9 msgid "Please choose the LDAP user to be used by GOsa" msgstr "" #: setup/setup_ldap.tpl:28 setup/setup_ldap.tpl:29 msgid "LDAP connection" msgstr "" #: setup/setup_ldap.tpl:31 msgid "Location name" msgstr "" #: setup/setup_ldap.tpl:35 msgid "Connection URI" msgstr "" #: setup/setup_ldap.tpl:39 msgid "TLS connection" msgstr "" #: setup/setup_ldap.tpl:47 #: plugins/personal/posix/trustSelect/trust-list.tpl:12 #: plugins/personal/posix/groupSelect/group-list.tpl:12 #: plugins/personal/generic/class_user.inc:1714 #: plugins/personal/generic/generic.tpl:167 #: plugins/addons/dyngroup/dyngroup.tpl:5 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:127 #: plugins/admin/groups/singleUserSelect/singleUser-list.tpl:12 #: plugins/admin/groups/class_group.inc:1078 #: plugins/admin/groups/group-list.tpl:12 plugins/admin/groups/generic.tpl:39 #: plugins/admin/groups/userSelect/user-list.tpl:12 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.tpl:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.tpl:12 #: plugins/admin/ogroups/ogroup-list.tpl:12 #: plugins/admin/ogroups/generic.tpl:26 #: plugins/admin/ogroups/class_ogroup.inc:886 #: plugins/admin/acl/acl_role.tpl:27 plugins/admin/acl/acl-list.tpl:12 #: plugins/admin/acl/class_aclRole.inc:742 #: plugins/admin/departments/dcObject.tpl:28 #: plugins/admin/departments/country.tpl:28 #: plugins/admin/departments/class_countryGeneric.inc:94 #: plugins/admin/departments/organization.tpl:39 #: plugins/admin/departments/class_department.inc:677 #: plugins/admin/departments/class_domain.inc:92 #: plugins/admin/departments/class_organizationGeneric.inc:125 #: plugins/admin/departments/generic.tpl:39 #: plugins/admin/departments/locality.tpl:28 #: plugins/admin/departments/dep-list.tpl:12 #: plugins/admin/departments/class_localityGeneric.inc:94 #: plugins/admin/departments/class_dcObject.inc:93 #: plugins/admin/departments/domain.tpl:28 #: plugins/admin/users/user-list.tpl:12 msgid "Base" msgstr "" #: setup/setup_ldap.tpl:57 msgid "Reload" msgstr "" #: setup/setup_ldap.tpl:63 setup/setup_ldap.tpl:64 msgid "Authentication" msgstr "" #: setup/setup_ldap.tpl:66 msgid "Administrator DN" msgstr "" #: setup/setup_ldap.tpl:71 msgid "Select user" msgstr "" #: setup/setup_ldap.tpl:81 msgid "Automatically append LDAP base to administrator DN" msgstr "" #: setup/setup_ldap.tpl:85 msgid "Administrator password" msgstr "" #: setup/setup_ldap.tpl:91 setup/setup_ldap.tpl:92 msgid "Schema based settings" msgstr "" #: setup/setup_ldap.tpl:94 msgid "Use RFC 2307bis compliant groups" msgstr "" #: setup/setup_ldap.tpl:105 setup/setup_ldap.tpl:106 msgid "Current status" msgstr "" #: setup/setup_ldap.tpl:108 plugins/admin/ogroups/class_ogroup.inc:244 #: plugins/generic/dashBoard/dbInformation/contents.tpl:1 msgid "Information" msgstr "" #: setup/setup_language.tpl:3 msgid "Please select the preferred language" msgstr "" #: setup/setup_language.tpl:5 msgid "" "At this point, you can select the site wide default language. Choosing " "'automatic' will use the language requested by the browser. This setting can " "be overridden per user." msgstr "" #: setup/setup_language.tpl:9 msgid "Please select your preferred language here" msgstr "" #: setup/setup_welcome.tpl:3 msgid "How to get started" msgstr "" #: setup/setup_welcome.tpl:5 msgid "" "This seems to be the first time you run GOsa on this system. To start the " "GOsa web interface you need a working configuration file, which can be " "generated by this wizard." msgstr "" #: setup/setup_welcome.tpl:9 msgid "What you need to generate a configuration file:" msgstr "" #: setup/setup_welcome.tpl:13 msgid "The hostname of your LDAP server" msgstr "" #: setup/setup_welcome.tpl:14 msgid "Installed GOsa and supplementary schema" msgstr "" #: setup/setup_welcome.tpl:15 msgid "The LDAP base of your LDAP directory" msgstr "" #: setup/setup_welcome.tpl:16 msgid "The DN and the password of the LDAP administration user" msgstr "" #: setup/setup_welcome.tpl:20 msgid "" "If you've collected the needed information, unlock the setup process like " "shown in the next paragraph." msgstr "" #: setup/setup_welcome.tpl:24 msgid "Starting the setup" msgstr "" #: setup/setup_welcome.tpl:26 msgid "" "For security reasons you need to authenticate the installation by creating " "the file '/tmp/gosa.auth', containing the current session ID on the servers " "local filesystem. This can be done by executing the following command:" msgstr "" #: setup/setup_welcome.tpl:32 msgid "Click the 'Next' button when you've finished." msgstr "" #: setup/class_setupStep_Schema.inc:37 setup/class_setupStep_Schema.inc:38 msgid "LDAP schema check" msgstr "" #: setup/class_setupStep_Schema.inc:39 msgid "Perform test on your current LDAP schema" msgstr "" #: setup/class_setup.inc:183 msgid "Setup" msgstr "" #: setup/class_setup.inc:195 msgid "Completed" msgstr "" #: setup/class_setup.inc:235 msgid "Check again" msgstr "" #: setup/class_setup.inc:238 msgid "Next" msgstr "" #: setup/setup_migrate.tpl:2 msgid "" "During the LDAP inspection, we're going to check for several common pitfalls " "that may occur when migration to GOsa base LDAP administration. You may want " "to fix the problems below, in order to provide smooth services." msgstr "" #: setup/setup_migrate.tpl:5 msgid "Checks" msgstr "" #: setup/setup_migrate.tpl:22 msgid "Add required object classes to the LDAP base" msgstr "" #: setup/setup_migrate.tpl:24 msgid "Current" msgstr "" #: setup/setup_migrate.tpl:28 msgid "After migration" msgstr "" #: setup/setup_migrate.tpl:35 msgid "Close" msgstr "" #: setup/setup_migrate.tpl:40 msgid "Create a new GOsa administrator account" msgstr "" #: setup/setup_migrate.tpl:41 msgid "" "This dialog will automatically add a new super administrator to your LDAP " "tree." msgstr "" #: setup/setup_migrate.tpl:57 msgid "Password (again)" msgstr "" #: setup/setup_finish.tpl:3 msgid "Create your configuration file" msgstr "" #: setup/setup_finish.tpl:10 msgid "Depending on the user name your web server is running on:" msgstr "" #: setup/setup_finish.tpl:27 msgid "Download configuration" msgstr "" #: setup/setup_finish.tpl:33 msgid "Status: " msgstr "" #: setup/class_setupStep_Checks.inc:40 setup/class_setupStep_Checks.inc:41 msgid "Installation check" msgstr "" #: setup/class_setupStep_Checks.inc:42 msgid "Basic checks for PHP compatibility and extensions" msgstr "" #: setup/class_setupStep_Checks.inc:66 msgid "Checking PHP version" msgstr "" #: setup/class_setupStep_Checks.inc:67 #, php-format msgid "PHP must be of version %s or above." msgstr "" #: setup/class_setupStep_Checks.inc:68 msgid "Please upgrade to a supported version." msgstr "" #: setup/class_setupStep_Checks.inc:75 msgid "GOsa requires this module to talk with your LDAP server." msgstr "" #: setup/class_setupStep_Checks.inc:83 msgid "GOsa requires this module for an internationalized interface." msgstr "" #: setup/class_setupStep_Checks.inc:91 msgid "" "GOsa requires this module to communicate with different types of servers and " "protocols." msgstr "" #: setup/class_setupStep_Checks.inc:99 msgid "GOsa requires this module for the samba integration." msgstr "" #: setup/class_setupStep_Checks.inc:107 msgid "" "GOsa requires either 'mhash' or the 'sha1' module to make use of SSHA " "encryption." msgstr "" #: setup/class_setupStep_Checks.inc:115 msgid "GOsa requires this module to talk to an IMAP server." msgstr "" #: setup/class_setupStep_Checks.inc:122 msgid "mbstring" msgstr "" #: setup/class_setupStep_Checks.inc:123 msgid "GOsa requires this module to handle Unicode strings." msgstr "" #: setup/class_setupStep_Checks.inc:130 msgid "Calendar" msgstr "" #: setup/class_setupStep_Checks.inc:131 msgid "GOsa requires this module to calculate dates." msgstr "" #: setup/class_setupStep_Checks.inc:138 msgid "MySQL" msgstr "" #: setup/class_setupStep_Checks.inc:139 msgid "" "GOsa requires this module to communicate with several supported databases." msgstr "" #: setup/class_setupStep_Checks.inc:156 msgid "samba hash generator" msgstr "" #: setup/class_setupStep_Checks.inc:157 msgid "GOsa requires this command to synchronize POSIX and samba passwords." msgstr "" #: setup/class_setupStep_Checks.inc:158 msgid "" "Deploy a gosa-si installation or install the Perl Crypt::SmbHash modules." msgstr "" #: setup/class_setupStep_Checks.inc:171 msgid "imagick" msgstr "" #: setup/class_setupStep_Checks.inc:172 msgid "GOsa requires this extension to handle images." msgstr "" #: setup/class_setupStep_Checks.inc:187 msgid "compression module" msgstr "" #: setup/class_setupStep_Checks.inc:188 msgid "GOsa requires this extension to handle snapshots." msgstr "" #: setup/class_setupStep_Checks.inc:199 msgid "" "register_globals is a PHP mechanism to register all global variables to be " "accessible from scripts without changing the scope. This may be a security " "risk." msgstr "" #: setup/class_setupStep_Checks.inc:200 msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:208 msgid "PHP uses this value for the garbage collector to delete old sessions." msgstr "" #: setup/class_setupStep_Checks.inc:209 msgid "" "Setting this value to one day will prevent loosing session and cookies " "before they really timeout." msgstr "" #: setup/class_setupStep_Checks.inc:210 msgid "" "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or " "higher." msgstr "" #: setup/class_setupStep_Checks.inc:217 setup/class_setupStep_Checks.inc:233 #: setup/class_setupStep_Checks.inc:249 setup/class_setupStep_Checks.inc:265 #: plugins/addons/propertyEditor/class_propertyEditor.inc:230 msgid "Off" msgstr "" #: setup/class_setupStep_Checks.inc:218 msgid "" "In Order to use GOsa without any trouble, the session.auto_register option " "in your php.ini should be set to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:219 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:226 msgid "" "GOsa needs at least 32MB of memory. Setting it below this limit may cause " "errors that are not reproducible! Increase it for larger setups." msgstr "" #: setup/class_setupStep_Checks.inc:227 msgid "" "Search for 'memory_limit' in your php.ini and set it to '32M' or higher." msgstr "" #: setup/class_setupStep_Checks.inc:234 msgid "" "This option influences the PHP output handling. Turn this Option off, to " "increase performance." msgstr "" #: setup/class_setupStep_Checks.inc:235 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:242 msgid "The Execution time should be at least 30 seconds." msgstr "" #: setup/class_setupStep_Checks.inc:243 msgid "" "Search for 'max_execution_time' in your php.ini and set it to '30' or higher." msgstr "" #: setup/class_setupStep_Checks.inc:250 msgid "" "Increase the server security by setting expose_php to 'off'. PHP won't send " "any information about the server you are running in this case." msgstr "" #: setup/class_setupStep_Checks.inc:251 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:257 #: plugins/addons/propertyEditor/class_propertyEditor.inc:231 msgid "On" msgstr "" #: setup/class_setupStep_Checks.inc:258 msgid "" "Increase your server security by setting magic_quotes_gpc to 'on'. PHP will " "escape all quotes in strings in this case." msgstr "" #: setup/class_setupStep_Checks.inc:259 msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." msgstr "" #: setup/class_setupStep_Checks.inc:266 msgid "Increase your server performance by setting magic_quotes_gpc to 'off'." msgstr "" #: setup/class_setupStep_Checks.inc:267 msgid "" "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to 'Off'." msgstr "" #: setup/class_setupStep_Checks.inc:277 msgid "Configuration writable" msgstr "" #: setup/class_setupStep_Checks.inc:278 msgid "The configuration file can't be written" msgstr "" #: setup/class_setupStep_Checks.inc:279 #, php-format msgid "" "GOsa reads its configuration from a file located in (%s/%s). The setup can " "write the configuration directly if it is writable." msgstr "" #: setup/class_setupStep_Welcome.inc:42 msgid "Welcome" msgstr "" #: setup/class_setupStep_Welcome.inc:43 msgid "The welcome message" msgstr "" #: setup/class_setupStep_Welcome.inc:44 msgid "Welcome to the GOsa setup assistent" msgstr "" #: setup/class_setupStep_License.inc:56 setup/class_setupStep_License.inc:57 msgid "License" msgstr "" #: setup/class_setupStep_License.inc:58 msgid "Terms and conditions for usage" msgstr "" #: setup/setup_schema.tpl:1 msgid "Schema specific settings" msgstr "" #: setup/setup_schema.tpl:4 msgid "Schema check succeeded" msgstr "" #: setup/setup_schema.tpl:7 msgid "Schema check failed" msgstr "" #: setup/setup_schema.tpl:11 msgid "" "Could not read any schema information, all checks skipped. Adjust your LDAP " "ACLs." msgstr "" #: setup/setup_schema.tpl:13 msgid "" "It seems that your LDAP database wasn't initialized yet. This maybe the " "reason, why GOsa can't read your schema configuration!" msgstr "" #: setup/class_setupStep_Language.inc:40 setup/class_setupStep_Language.inc:41 msgid "Language setup" msgstr "" #: setup/class_setupStep_Language.inc:42 msgid "This step allows you to select your preferred language." msgstr "" #: setup/setup_feedback.tpl:2 msgid "Feedback successfully send" msgstr "" #: setup/setup_feedback.tpl:6 msgid "Subscribe to the gosa-announce mailing list" msgstr "" #: setup/setup_feedback.tpl:8 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to subscribe you to the gosa-announce mailing list. You've to confirm " "this by mail." msgstr "" #: setup/setup_feedback.tpl:20 msgid "Mail address" msgstr "" #: setup/setup_feedback.tpl:28 msgid "Send feedback to the GOsa project team" msgstr "" #: setup/setup_feedback.tpl:31 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to submit your form anonymously." msgstr "" #: setup/setup_feedback.tpl:35 setup/setup_feedback.tpl:36 #: plugins/personal/posix/generic.tpl:5 #: plugins/personal/generic/class_user.inc:37 #: plugins/personal/generic/class_user.inc:1670 #: plugins/admin/groups/class_group.inc:1054 #: plugins/admin/ogroups/class_ogroup.inc:872 #: plugins/admin/departments/class_department.inc:659 #: plugins/admin/users/class_userManagement.inc:890 msgid "Generic" msgstr "" #: setup/setup_feedback.tpl:38 msgid "Did the setup procedure help you to get started?" msgstr "" #: setup/setup_feedback.tpl:44 msgid "If not, what problems did you encounter" msgstr "" #: setup/setup_feedback.tpl:48 msgid "Is this the first time you use GOsa?" msgstr "" #: setup/setup_feedback.tpl:53 msgid "I use it since" msgstr "" #: setup/setup_feedback.tpl:54 msgid "Select the year since when you are using GOsa" msgstr "" #: setup/setup_feedback.tpl:60 msgid "What operating system / distribution do you use?" msgstr "" #: setup/setup_feedback.tpl:64 msgid "What web server do you use?" msgstr "" #: setup/setup_feedback.tpl:68 msgid "What PHP version do you use?" msgstr "" #: setup/setup_feedback.tpl:72 msgid "GOsa version" msgstr "" #: setup/setup_feedback.tpl:78 setup/setup_feedback.tpl:79 msgid "LDAP" msgstr "" #: setup/setup_feedback.tpl:81 msgid "What kind of LDAP server(s) do you use?" msgstr "" #: setup/setup_feedback.tpl:85 msgid "How many objects are in your LDAP?" msgstr "" #: setup/setup_feedback.tpl:91 setup/setup_feedback.tpl:92 msgid "Features" msgstr "" #: setup/setup_feedback.tpl:94 msgid "What features of GOsa do you use?" msgstr "" #: setup/setup_feedback.tpl:103 msgid "What features do you want to see in future versions of GOsa?" msgstr "" #: setup/setup_feedback.tpl:107 msgid "Send feedback" msgstr "" #: html/password.php:63 html/index.php:157 #, php-format msgid "GOsa configuration %s/%s is not readable. Aborted." msgstr "" #: html/password.php:115 html/index.php:179 html/setup.php:73 #, php-format msgid "Compile directory %s is not accessible!" msgstr "" #: html/password.php:194 plugins/personal/generic/class_user.inc:614 msgid "Password method" msgstr "" #: html/password.php:195 msgid "Error: Password method not available!" msgstr "" #: html/password.php:242 plugins/personal/generic/paste_generic.tpl:16 #: plugins/personal/generic/class_user.inc:1311 #: plugins/personal/generic/class_user.inc:1329 #: plugins/personal/generic/class_user.inc:1343 #: plugins/personal/generic/class_user.inc:1345 #: plugins/personal/generic/class_user.inc:1704 #: plugins/personal/generic/generic.tpl:65 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:56 #: plugins/admin/groups/userSelect/user-list.xml:56 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:65 #: plugins/admin/users/template.tpl:32 plugins/admin/users/user-list.xml:65 #: plugins/generic/dashBoard/Register/register.tpl:49 msgid "Login" msgstr "" #: html/password.php:244 plugins/personal/password/class_password.inc:124 msgid "You need to specify your current password in order to proceed." msgstr "" #: html/password.php:246 plugins/personal/password/class_password.inc:126 #: plugins/admin/users/class_userManagement.inc:316 msgid "" "The passwords you've entered as 'New password' and 'Repeated new password' " "do not match." msgstr "" #: html/password.php:248 plugins/personal/password/class_password.inc:128 msgid "The password you've entered as 'New password' is empty." msgstr "" #: html/password.php:250 plugins/personal/password/class_password.inc:130 msgid "The password used as new and current are too similar." msgstr "" #: html/password.php:252 plugins/personal/password/class_password.inc:132 msgid "The password used as new is to short." msgstr "" #: html/password.php:254 plugins/personal/password/class_password.inc:134 msgid "The password contains possibly problematic Unicode characters!" msgstr "" #: html/password.php:261 html/index.php:311 msgid "Please check the username/password combination!" msgstr "" #: html/password.php:268 msgid "You have no permissions to change your password!" msgstr "" #: html/password.php:280 plugins/personal/password/class_password.inc:141 #: plugins/admin/users/class_userManagement.inc:330 #, php-format msgid "Check-hook reported a problem: %s. Password change canceled!" msgstr "" #: html/password.php:315 msgid "Session will not be encrypted." msgstr "" #: html/password.php:317 msgid "Enter SSL session" msgstr "" #: html/index.php:45 #, php-format msgid "Your browser (%s) is blacklisted for the current theme!" msgstr "" #: html/index.php:72 #, php-format msgid "This session is not encrypted. Click %s to enter an encrypted session." msgstr "" #: html/index.php:72 msgid "here" msgstr "" #: html/index.php:78 msgid "The configured session lifetime will be overridden by php.ini settings!" msgstr "" #: html/index.php:179 msgid "Smarty error" msgstr "" #: html/index.php:202 msgid "" "Your browser has cookies disabled: please enable cookies and reload this " "page before logging in!" msgstr "" #: html/index.php:233 msgid "Broken HTTP authentication setup!" msgstr "" #: html/index.php:241 msgid "Cannot find a valid user for the current HTTP authentication!" msgstr "" #: html/index.php:245 msgid "Cannot find a unique user for the current HTTP authentication!" msgstr "" #: html/index.php:289 msgid "Please specify a valid user name!" msgstr "" #: html/index.php:292 msgid "Please specify your password!" msgstr "" #: html/index.php:304 msgid "Authentication error" msgstr "" #: html/index.php:304 msgid "Cannot retrieve user information for HTTP authentication!" msgstr "" #: html/index.php:364 msgid "Account locked. Please contact your system administrator!" msgstr "" #: html/main.php:171 #, php-format msgid "Cannot locate file %s - please run %s to fix this" msgstr "" #: html/main.php:190 msgid "PHP configuration" msgstr "" #: html/main.php:191 msgid "" "Fatal error: Register globals is active. Please fix this in order to " "continue." msgstr "" #: html/main.php:220 msgid "Your password is about to expire, please change your password!" msgstr "" #: html/main.php:295 msgid "Running out of memory!" msgstr "" #: html/main.php:355 #, php-format msgid "You're logged in as %s" msgstr "" #: html/main.php:358 msgid "ACLs are disabled" msgstr "" #: html/main.php:408 msgid "Plug-in" msgstr "" #: html/main.php:409 #, php-format msgid "Fatal error: Cannot find any plugin definitions for plugin %s!" msgstr "" #: html/main.php:425 msgid "Configuration Error" msgstr "" #: html/main.php:426 #, php-format msgid "" "Fatal error: not all POST variables have been transfered by PHP - please " "inform your administrator!" msgstr "" #: html/setup.php:73 msgid "Smarty" msgstr "" #: html/helpviewer.php:64 msgid "Help browser" msgstr "" #: html/helpviewer.php:118 msgid "There is no help file specified for this class" msgstr "" #: html/helpviewer.php:268 #, php-format msgid "Help directory '%s' is not accessible, can't read any help files." msgstr "" #: plugins/personal/myaccount/password.tpl:4 #: plugins/personal/password/password.tpl:4 msgid "" "To change your personal password use the fields below. The changes take " "effect immediately. Please memorize the new password, because you wouldn't " "be able to login without it." msgstr "" #: plugins/personal/myaccount/password.tpl:10 #: plugins/personal/myaccount/password.tpl:39 #: plugins/personal/password/password.tpl:16 #: plugins/personal/password/password.tpl:45 msgid "Password change dialog" msgstr "" #: plugins/personal/myaccount/password.tpl:49 #: plugins/personal/password/password.tpl:55 #: plugins/admin/users/password.tpl:43 msgid "Use proposal" msgstr "" #: plugins/personal/myaccount/password.tpl:67 #: plugins/personal/password/password.tpl:74 #: plugins/admin/users/password.tpl:61 msgid "Manually specify a password" msgstr "" #: plugins/personal/myaccount/password.tpl:97 #: plugins/personal/password/password.tpl:104 msgid "Clear fields" msgstr "" #: plugins/personal/myaccount/main.inc:118 #: plugins/personal/myaccount/class_MyAccount.inc:5 #: plugins/personal/posix/class_posixAccount.inc:1356 #: plugins/personal/password/class_password.inc:232 #: plugins/personal/generic/class_user.inc:1675 msgid "My account" msgstr "" #: plugins/personal/myaccount/class_MyAccount.inc:6 msgid "Edit personal settings" msgstr "" #: plugins/personal/myaccount/nochange.tpl:2 #: plugins/personal/password/nochange.tpl:2 msgid "You have no permission to change your password at this time" msgstr "" #: plugins/personal/myaccount/nochange.tpl:5 msgid "Your password hash method will not be changed!" msgstr "" #: plugins/personal/myaccount/changed.tpl:3 #: plugins/personal/password/changed.tpl:3 msgid "" "You've successfully changed your password. Remember to change all programs " "configured to use it as well." msgstr "" #: plugins/personal/posix/paste_generic.tpl:1 #: plugins/personal/posix/paste_generic.tpl:5 #: plugins/personal/posix/generic.tpl:1 msgid "POSIX settings" msgstr "" #: plugins/personal/posix/paste_generic.tpl:6 #: plugins/personal/posix/paste_generic.tpl:9 #: plugins/personal/posix/generic.tpl:8 #: plugins/personal/posix/class_posixAccount.inc:899 #: plugins/personal/posix/class_posixAccount.inc:902 #: plugins/personal/posix/class_posixAccount.inc:977 #: plugins/personal/posix/class_posixAccount.inc:980 #: plugins/personal/posix/class_posixAccount.inc:1366 msgid "Home directory" msgstr "" #: plugins/personal/posix/paste_generic.tpl:17 #: plugins/personal/posix/posix_shadow.tpl:2 #: plugins/personal/posix/generic.tpl:51 #: plugins/personal/generic/generic.tpl:34 #: plugins/personal/generic/generic.tpl:81 msgid "Account settings" msgstr "" #: plugins/personal/posix/paste_generic.tpl:19 #: plugins/personal/posix/generic.tpl:26 #: plugins/personal/posix/class_posixAccount.inc:1367 msgid "Primary group" msgstr "" #: plugins/personal/posix/paste_generic.tpl:33 #: plugins/personal/posix/generic.tpl:60 msgid "Force UID/GID" msgstr "" #: plugins/personal/posix/paste_generic.tpl:47 #: plugins/personal/posix/generic.tpl:75 #: plugins/personal/posix/class_posixAccount.inc:917 #: plugins/personal/posix/class_posixAccount.inc:920 #: plugins/admin/groups/class_group.inc:985 #: plugins/admin/groups/class_group.inc:988 #: plugins/admin/groups/class_group.inc:1080 msgid "GID" msgstr "" #: plugins/personal/posix/paste_generic.tpl:58 #: plugins/personal/posix/paste_generic.tpl:61 #: plugins/personal/posix/generic.tpl:89 #: plugins/generic/references/class_reference.inc:58 #: plugins/generic/references/class_reference.inc:64 msgid "Group membership" msgstr "" #: plugins/personal/posix/paste_generic.tpl:68 #: plugins/personal/posix/generic.tpl:92 msgid "(Warning: more than 16 groups are not supported by NFS!)" msgstr "" #: plugins/personal/posix/trustSelect/trust-filter.xml:17 #: plugins/personal/posix/groupSelect/group-filter.xml:16 #: plugins/admin/groups/singleUserSelect/singleUser-filter.xml:20 #: plugins/admin/groups/group-filter.xml:17 #: plugins/admin/groups/userSelect/user-filter.xml:20 #: plugins/admin/groups/userGroupSelect/selectUserGroup-filter.xml:21 #: plugins/admin/ogroups/objectSelect/selectObject-filter.xml:32 #: plugins/admin/ogroups/ogroup-filter.xml:18 #: plugins/admin/acl/acl-filter.xml:18 #: plugins/admin/departments/dep-filter.xml:17 #: plugins/admin/users/user-filter.xml:19 msgid "Default filter" msgstr "" #: plugins/personal/posix/trustSelect/trust-list.xml:9 #: plugins/personal/posix/groupSelect/group-list.xml:10 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:10 #: plugins/admin/groups/userSelect/user-list.xml:10 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:11 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:11 msgid "Please select the desired entries" msgstr "" #: plugins/personal/posix/trustSelect/trust-list.xml:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:23 #: plugins/admin/ogroups/class_ogroupManagement.inc:187 msgid "Server" msgstr "" #: plugins/personal/posix/trustSelect/trust-list.xml:19 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:31 #: plugins/admin/ogroups/class_ogroupManagement.inc:189 msgid "Workstation" msgstr "" #: plugins/personal/posix/trustSelect/trust-list.xml:26 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:39 #: plugins/admin/ogroups/class_ogroupManagement.inc:191 msgid "Terminal" msgstr "" #: plugins/personal/posix/trustSelect/class_trustSelect.inc:29 msgid "Trust machine selection" msgstr "" #: plugins/personal/posix/groupSelect/class_groupSelect.inc:29 msgid "Group selection" msgstr "" #: plugins/personal/posix/groupSelect/group-list.xml:13 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/addons/propertyEditor/property-list.xml:73 #: plugins/admin/groups/group-list.xml:15 #: plugins/admin/groups/group-list.xml:79 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:23 #: plugins/admin/ogroups/ogroup-list.xml:79 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:71 #: plugins/admin/ogroups/class_ogroupManagement.inc:184 msgid "Group" msgstr "" #: plugins/personal/posix/posix_shadow.tpl:12 msgid "User must change password on first login" msgstr "" #: plugins/personal/posix/posix_shadow.tpl:59 msgid "Password expiration settings" msgstr "" #: plugins/personal/posix/posix_shadow.tpl:62 msgid "Password expires on" msgstr "" #: plugins/personal/posix/generic.tpl:6 plugins/admin/ogroups/generic.tpl:5 msgid "Generic settings" msgstr "" #: plugins/personal/posix/generic.tpl:16 #: plugins/personal/posix/class_posixAccount.inc:1368 msgid "Shell" msgstr "" #: plugins/personal/posix/generic.tpl:37 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 msgid "Status" msgstr "" #: plugins/personal/posix/generic.tpl:42 msgid "Last log-on" msgstr "" #: plugins/personal/posix/generic.tpl:108 msgid "Account permissions" msgstr "" #: plugins/personal/posix/generic.tpl:113 msgid "SSH keys" msgstr "" #: plugins/personal/posix/generic.tpl:114 msgid "Edit public ssh keys..." msgstr "" #: plugins/personal/posix/class_posixAccount.inc:37 #: plugins/personal/posix/class_posixAccount.inc:291 #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/personal/posix/class_posixAccount.inc:313 #: plugins/personal/posix/class_posixAccount.inc:316 #: plugins/admin/groups/class_groupManagement.inc:157 #: plugins/admin/users/class_userManagement.inc:894 msgid "POSIX" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:38 msgid "Edit users POSIX settings" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:152 msgid "expired" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:154 msgid "grace time active" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:157 #: plugins/personal/posix/class_posixAccount.inc:159 #: plugins/personal/posix/class_posixAccount.inc:161 msgid "active" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:157 msgid "password not changeable" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:159 msgid "password expired" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:235 msgid "automatic" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:173 #: plugins/admin/users/class_userManagement.inc:902 msgid "Samba" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:197 #: plugins/admin/users/class_userManagement.inc:910 msgid "Environment" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:415 #, php-format msgid "Password can't be changed up to %s days after last change" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:419 #, php-format msgid "Password must be changed after %s days" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:423 #, php-format msgid "Disable account after %s days of inactivity after password expiry" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:427 #, php-format msgid "Warn user %s days before password expiry" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:692 msgid "Timeout while waiting for lock. Ignoring lock!" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:750 #: plugins/personal/posix/class_posixAccount.inc:1043 msgid "Group of user" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:815 msgid "" "A duplicated UID number was written for this user. If this was not intended " "please verify all used uidNumbers!" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:933 #: plugins/personal/posix/class_posixAccount.inc:986 msgid "shadowMin" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:938 #: plugins/personal/posix/class_posixAccount.inc:991 msgid "shadowMax" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:943 #: plugins/personal/posix/class_posixAccount.inc:996 msgid "shadowWarning" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:957 #: plugins/personal/posix/class_posixAccount.inc:1010 msgid "shadowInactive" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1061 #: plugins/personal/posix/class_posixAccount.inc:1537 msgid "all" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1352 msgid "POSIX account" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1370 msgid "Group ID" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1372 msgid "Shadow last changed" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1373 msgid "Last login" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1375 msgid "Force password change on login" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1376 msgid "Shadow min" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1377 msgid "Shadow max" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1378 msgid "Shadow warning" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1379 msgid "Shadow inactive" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1380 msgid "Shadow expire" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1381 msgid "Public SSH key" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1382 msgid "System trust model" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1512 msgid "some" msgstr "" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "disabled" msgstr "" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "full access" msgstr "" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:174 msgid "allow access to these hosts" msgstr "" #: plugins/personal/posix/trustModeDialog/generic.tpl:2 #: plugins/admin/groups/class_group.inc:1084 #: plugins/admin/ogroups/class_ogroup.inc:888 msgid "System trust" msgstr "" #: plugins/personal/posix/trustModeDialog/generic.tpl:5 #: plugins/personal/posix/trustModeDialog/generic.tpl:21 msgid "Trust mode" msgstr "" #: plugins/personal/password/password.tpl:10 msgid "Your Password has expired. Please choose a new password." msgstr "" #: plugins/personal/password/class_password.inc:27 msgid "Change user password" msgstr "" #: plugins/personal/password/class_password.inc:161 msgid "" "The password you've entered as your current password doesn't match the real " "one." msgstr "" #: plugins/personal/password/class_password.inc:164 msgid "You have no permission to change your password." msgstr "" #: plugins/personal/password/class_password.inc:228 msgid "User password" msgstr "" #: plugins/personal/password/class_password.inc:241 msgid "Script to be called before a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:250 msgid "Script to be called after a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:259 msgid "Script to be called before a password gets unlocked." msgstr "" #: plugins/personal/password/class_password.inc:268 msgid "Script to be called after a password gets unlocked." msgstr "" #: plugins/personal/generic/generic_certs.tpl:3 #: plugins/personal/generic/class_user.inc:550 #: plugins/personal/generic/class_user.inc:572 #: plugins/personal/generic/generic.tpl:226 msgid "Certificates" msgstr "" #: plugins/personal/generic/generic_certs.tpl:5 msgid "The users standard certificate" msgstr "" #: plugins/personal/generic/generic_certs.tpl:8 msgid "Standard certificate" msgstr "" #: plugins/personal/generic/generic_certs.tpl:22 #: plugins/personal/generic/generic_certs.tpl:48 #: plugins/personal/generic/generic_certs.tpl:74 #: plugins/addons/propertyEditor/property-list.xml:109 #: plugins/admin/groups/group-list.xml:98 #: plugins/admin/ogroups/ogroup-list.xml:98 plugins/admin/acl/acl-list.xml:95 #: plugins/admin/acl/acl-list.xml:144 #: plugins/admin/departments/dep-list.xml:160 #: plugins/admin/departments/dep-list.xml:181 #: plugins/admin/users/user-list.xml:121 msgid "Remove" msgstr "" #: plugins/personal/generic/generic_certs.tpl:31 msgid "The users S/MIME certificate" msgstr "" #: plugins/personal/generic/generic_certs.tpl:34 msgid "S/MIME certificate" msgstr "" #: plugins/personal/generic/generic_certs.tpl:57 msgid "The users PKCS12 certificate" msgstr "" #: plugins/personal/generic/generic_certs.tpl:60 msgid "PKCS12 certificate" msgstr "" #: plugins/personal/generic/generic_certs.tpl:83 #: plugins/personal/generic/class_user.inc:1663 msgid "Certificate serial number" msgstr "" #: plugins/personal/generic/paste_generic.tpl:3 msgid "Paste user" msgstr "" #: plugins/personal/generic/paste_generic.tpl:6 #: plugins/personal/generic/generic.tpl:1 #: plugins/personal/generic/generic.tpl:3 msgid "Personal information" msgstr "" #: plugins/personal/generic/paste_generic.tpl:8 #: plugins/personal/generic/generic.tpl:37 plugins/admin/users/template.tpl:23 msgid "Last name" msgstr "" #: plugins/personal/generic/paste_generic.tpl:12 #: plugins/personal/generic/generic.tpl:51 plugins/admin/users/template.tpl:27 msgid "First name" msgstr "" #: plugins/personal/generic/paste_generic.tpl:24 msgid "Clear password" msgstr "" #: plugins/personal/generic/paste_generic.tpl:25 msgid "Set new password" msgstr "" #: plugins/personal/generic/paste_generic.tpl:31 #: plugins/personal/generic/generic.tpl:8 #: plugins/personal/generic/generic_picture.tpl:2 msgid "The users picture" msgstr "" #: plugins/personal/generic/paste_generic.tpl:43 #: plugins/personal/generic/generic_picture.tpl:13 msgid "Remove picture" msgstr "" #: plugins/personal/generic/class_user.inc:38 msgid "Edit organizational user settings" msgstr "" #: plugins/personal/generic/class_user.inc:297 msgid "Please add a single IP address or a network/net mask combination!" msgstr "" #: plugins/personal/generic/class_user.inc:339 msgid "female" msgstr "" #: plugins/personal/generic/class_user.inc:339 msgid "male" msgstr "" #: plugins/personal/generic/class_user.inc:395 msgid "Password configuration" msgstr "" #: plugins/personal/generic/class_user.inc:429 msgid "Cannot upload file!" msgstr "" #: plugins/personal/generic/class_user.inc:522 msgid "Serial number" msgstr "" #: plugins/personal/generic/class_user.inc:544 #: plugins/personal/generic/class_user.inc:1716 #: plugins/personal/generic/generic_picture.tpl:1 msgid "User picture" msgstr "" #: plugins/personal/generic/class_user.inc:569 msgid "(Not supported certificate types are marked as invalid.)" msgstr "" #: plugins/personal/generic/class_user.inc:579 #, php-format msgid "Certificate is valid from %s to %s and is currently %s." msgstr "" #: plugins/personal/generic/class_user.inc:582 msgid "valid" msgstr "" #: plugins/personal/generic/class_user.inc:583 msgid "invalid" msgstr "" #: plugins/personal/generic/class_user.inc:588 msgid "No certificate installed" msgstr "" #: plugins/personal/generic/class_user.inc:614 msgid "The selected password method is no longer available." msgstr "" #: plugins/personal/generic/class_user.inc:1051 msgid "" "Cannot save user picture: GOsa requires the package 'imagemagick' or 'php5-" "imagick' to be installed!" msgstr "" #: plugins/personal/generic/class_user.inc:1177 msgid "Cannot build RDN: no + allowed to build sub RDN!" msgstr "" #: plugins/personal/generic/class_user.inc:1184 msgid "Cannot build RDN: attribute is not defined!" msgstr "" #: plugins/personal/generic/class_user.inc:1202 msgid "Cannot build RDN: invalid attribute parameters!" msgstr "" #: plugins/personal/generic/class_user.inc:1273 msgid "The selected password method requires initial configuration!" msgstr "" #: plugins/personal/generic/class_user.inc:1349 #: plugins/personal/generic/class_user.inc:1739 #: plugins/personal/generic/class_user.inc:1842 #: plugins/personal/generic/generic.tpl:201 msgid "Homepage" msgstr "" #: plugins/personal/generic/class_user.inc:1354 #: plugins/personal/generic/class_user.inc:1845 #: plugins/personal/generic/generic.tpl:394 #: plugins/personal/generic/generic.tpl:574 #: plugins/admin/groups/class_groupManagement.inc:181 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:55 #: plugins/admin/ogroups/class_ogroupManagement.inc:188 #: plugins/admin/departments/organization.tpl:109 #: plugins/admin/departments/class_department.inc:376 #: plugins/admin/departments/generic.tpl:110 #: plugins/admin/users/class_userManagement.inc:918 msgid "Phone" msgstr "" #: plugins/personal/generic/class_user.inc:1357 #: plugins/personal/generic/class_user.inc:1848 #: plugins/personal/generic/generic.tpl:419 #: plugins/personal/generic/generic.tpl:586 #: plugins/admin/departments/organization.tpl:117 #: plugins/admin/departments/class_department.inc:379 #: plugins/admin/departments/class_department.inc:683 #: plugins/admin/departments/class_organizationGeneric.inc:133 #: plugins/admin/departments/generic.tpl:118 msgid "Fax" msgstr "" #: plugins/personal/generic/class_user.inc:1360 #: plugins/personal/generic/class_user.inc:1851 #: plugins/personal/generic/generic.tpl:403 msgid "Mobile" msgstr "" #: plugins/personal/generic/class_user.inc:1363 #: plugins/personal/generic/class_user.inc:1854 #: plugins/personal/generic/generic.tpl:411 msgid "Pager" msgstr "" #: plugins/personal/generic/class_user.inc:1483 msgid "Cannot open certificate!" msgstr "" #: plugins/personal/generic/class_user.inc:1655 #: plugins/personal/generic/generic.tpl:526 msgid "Unit" msgstr "" #: plugins/personal/generic/class_user.inc:1656 #: plugins/personal/generic/generic.tpl:551 msgid "House identifier" msgstr "" #: plugins/personal/generic/class_user.inc:1657 #: plugins/personal/generic/generic.tpl:468 msgid "Vocation" msgstr "" #: plugins/personal/generic/class_user.inc:1658 #: plugins/personal/generic/generic.tpl:595 msgid "Last delivery" msgstr "" #: plugins/personal/generic/class_user.inc:1659 #: plugins/personal/generic/generic.tpl:517 msgid "Person locality" msgstr "" #: plugins/personal/generic/class_user.inc:1660 #: plugins/personal/generic/generic.tpl:476 msgid "Unit description" msgstr "" #: plugins/personal/generic/class_user.inc:1661 #: plugins/personal/generic/generic.tpl:485 msgid "Subject area" msgstr "" #: plugins/personal/generic/class_user.inc:1662 #: plugins/personal/generic/generic.tpl:494 msgid "Functional title" msgstr "" #: plugins/personal/generic/class_user.inc:1666 #: plugins/personal/generic/generic.tpl:503 plugins/admin/acl/acl-list.xml:23 #: plugins/admin/acl/acl-list.xml:82 plugins/admin/acl/class_aclRole.inc:714 msgid "Role" msgstr "" #: plugins/personal/generic/class_user.inc:1667 #: plugins/personal/generic/generic.tpl:543 msgid "Postal code" msgstr "" #: plugins/personal/generic/class_user.inc:1671 msgid "Generic user settings" msgstr "" #: plugins/personal/generic/class_user.inc:1692 msgid "" "Pattern for the generation of user DNs. Please read the FAQ for details." msgstr "" #: plugins/personal/generic/class_user.inc:1706 msgid "Allow definition of custom filters" msgstr "" #: plugins/personal/generic/class_user.inc:1712 #: plugins/personal/generic/generic.tpl:140 msgid "Sex" msgstr "" #: plugins/personal/generic/class_user.inc:1713 #: plugins/personal/generic/generic.tpl:154 msgid "Preferred language" msgstr "" #: plugins/personal/generic/class_user.inc:1718 msgid "Login restrictions" msgstr "" #: plugins/personal/generic/class_user.inc:1721 #: plugins/personal/generic/generic.tpl:306 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:15 #: plugins/admin/ogroups/class_ogroupManagement.inc:186 #: plugins/admin/departments/dep-list.xml:55 #: plugins/admin/departments/dep-list.xml:71 #: plugins/admin/departments/dep-list.xml:138 #: plugins/admin/departments/class_departmentManagement.inc:253 msgid "Department" msgstr "" #: plugins/personal/generic/class_user.inc:1723 #: plugins/personal/generic/generic.tpl:339 #: plugins/personal/generic/generic.tpl:355 #: plugins/admin/departments/dcObject.tpl:39 #: plugins/admin/departments/country.tpl:39 #: plugins/admin/departments/class_countryGeneric.inc:93 #: plugins/admin/departments/organization.tpl:51 #: plugins/admin/departments/class_department.inc:684 #: plugins/admin/departments/class_domain.inc:93 #: plugins/admin/departments/class_organizationGeneric.inc:127 #: plugins/admin/departments/generic.tpl:51 #: plugins/admin/departments/locality.tpl:39 #: plugins/admin/departments/class_localityGeneric.inc:93 #: plugins/admin/departments/class_dcObject.inc:92 #: plugins/admin/departments/domain.tpl:39 msgid "Manager" msgstr "" #: plugins/personal/generic/class_user.inc:1727 msgid "Room number" msgstr "" #: plugins/personal/generic/class_user.inc:1728 msgid "Telephone number" msgstr "" #: plugins/personal/generic/class_user.inc:1729 msgid "Pager number" msgstr "" #: plugins/personal/generic/class_user.inc:1730 msgid "Mobile number" msgstr "" #: plugins/personal/generic/class_user.inc:1731 msgid "Fax number" msgstr "" #: plugins/personal/generic/class_user.inc:1733 #: plugins/personal/generic/generic.tpl:444 #: plugins/admin/departments/organization.tpl:86 #: plugins/admin/departments/class_department.inc:679 #: plugins/admin/departments/class_organizationGeneric.inc:129 #: plugins/admin/departments/generic.tpl:87 msgid "State" msgstr "" #: plugins/personal/generic/class_user.inc:1735 #: plugins/personal/generic/generic.tpl:183 #: plugins/admin/departments/class_organizationGeneric.inc:131 msgid "Postal address" msgstr "" #: plugins/personal/generic/class_user.inc:1740 msgid "User password method" msgstr "" #: plugins/personal/generic/class_user.inc:1741 msgid "User certificates" msgstr "" #: plugins/personal/generic/class_user.inc:1949 msgid "Entries differ" msgstr "" #: plugins/personal/generic/generic.tpl:21 msgid "Change picture" msgstr "" #: plugins/personal/generic/generic.tpl:41 #: plugins/personal/generic/generic.tpl:55 #: plugins/personal/generic/generic.tpl:73 plugins/admin/groups/generic.tpl:14 msgid "Multiple edit" msgstr "" #: plugins/personal/generic/generic.tpl:83 msgid "Template name" msgstr "" #: plugins/personal/generic/generic.tpl:185 #: plugins/personal/generic/generic.tpl:452 #: plugins/admin/departments/organization.tpl:102 #: plugins/admin/departments/class_department.inc:681 #: plugins/admin/departments/generic.tpl:103 msgid "Address" msgstr "" #: plugins/personal/generic/generic.tpl:193 msgid "Private phone" msgstr "" #: plugins/personal/generic/generic.tpl:209 msgid "Password storage" msgstr "" #: plugins/personal/generic/generic.tpl:229 msgid "Edit certificates" msgstr "" #: plugins/personal/generic/generic.tpl:241 msgid "Restrict login to" msgstr "" #: plugins/personal/generic/generic.tpl:249 #: plugins/personal/generic/generic.tpl:269 msgid "IP or network" msgstr "" #: plugins/personal/generic/generic.tpl:285 #: plugins/personal/generic/generic.tpl:288 #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 msgid "Organizational information" msgstr "" #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 msgid "part" msgstr "" #: plugins/personal/generic/generic.tpl:314 msgid "Department No." msgstr "" #: plugins/personal/generic/generic.tpl:322 msgid "Employee No." msgstr "" #: plugins/personal/generic/generic.tpl:385 #: plugins/personal/generic/generic.tpl:566 msgid "Room No." msgstr "" #: plugins/personal/generic/generic.tpl:580 msgid "Please use the phone tab" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:1 msgid "List of dynamic rules" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:3 msgid "Labeled URI definitions" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:6 msgid "Scope" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:7 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:132 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:134 msgid "Attribute" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:8 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:139 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 #: plugins/generic/references/class_aclResolver.inc:169 msgid "Filter" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:118 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:340 msgid "Labeled URI" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 msgid "Surrounding brackets are required!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:149 #, php-format msgid "The given filter '%s' for entry %s seems to be invalid!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:179 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:181 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:332 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:333 msgid "Dynamic object" msgstr "" #: plugins/addons/propertyEditor/property-filter.xml:15 msgid "Effective properties" msgstr "" #: plugins/addons/propertyEditor/property-filter.xml:29 msgid "Modified properties" msgstr "" #: plugins/addons/propertyEditor/property-filter.xml:43 msgid "All properties" msgstr "" #: plugins/addons/propertyEditor/property-filter.xml:57 msgid "LDAP properties" msgstr "" #: plugins/addons/propertyEditor/property-filter.xml:71 msgid "Search for property groups" msgstr "" #: plugins/addons/propertyEditor/migrate.tpl:3 msgid "Property migration assistant" msgstr "" #: plugins/addons/propertyEditor/migrate.tpl:3 msgid "Migration steps left" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:31 #, php-format msgid "Migration of property '%s'" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:34 #, php-format msgid "GOsa has detected objects outside of the configured storage point (%s)." msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:161 msgid "Objects that will be added" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:169 msgid "Objects that will be moved" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:177 #, php-format msgid "Moving object '%s' to '%s'" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:204 #, php-format msgid "Migration failed for object %s: DN already exists!" msgstr "" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:208 #, php-format msgid "Migration failed for object %s: please check if it already exists!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:3 msgid "Warning message" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:9 msgid "" "Modifying properties may break your setup, destroy or mess up your LDAP " "database, lead to security holes or it can even make a login impossible!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:10 msgid "" "Since configuration properties are stored in the LDAP database a copy/backup " "can be handy." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:14 msgid "" "If you've debarred yourself, you can try to set 'ignoreLdapProperties' to " "'true' in your gosa.conf main section. This will make GOsa ignore LDAP based " "property values." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:22 msgid "" "I understand that there are certain risks, but I want to modify properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:38 msgid "Ignoring LDAP defined properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:77 msgid "Undo" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:1 msgid "Command verifier" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:3 msgid "" "Here you can execute commands in the way GOsa does and check the generated " "results or errors. This can be very useful especially for the post events " "(postcreate, postmodify and postremove) due to the fact that these hook are " "executed silently." msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:8 msgid "" "Please be careful here, all commands will really be executed on your machine " "and may break things!" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:15 msgid "The command to check for" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:17 msgid "Test" msgstr "" #: plugins/addons/propertyEditor/class_commandVerifier.inc:56 msgid "Results" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:6 msgid "Preferences" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:7 msgid "" "Configure global and special GOsa settings like hooks and plug-in parameters" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:206 msgid "No description" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:251 msgid "Test the given command." msgstr "" #: plugins/addons/propertyEditor/property-list.xml:11 msgid "List of configuration settings" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:16 msgid "Property not used" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:24 msgid "Property will be restored" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:32 msgid "Modified property" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:40 msgid "Property configured in LDAP" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:48 msgid "Property configured in config file" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:81 msgid "Class" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:89 msgid "Value" msgstr "" #: plugins/addons/propertyEditor/property-list.xml:125 msgid "Restore to default" msgstr "" #: plugins/admin/groups/paste_generic.tpl:1 msgid "Group settings" msgstr "" #: plugins/admin/groups/paste_generic.tpl:2 msgid "Paste group settings" msgstr "" #: plugins/admin/groups/paste_generic.tpl:5 #: plugins/admin/groups/generic.tpl:11 #: plugins/admin/ogroups/paste_generic.tpl:4 #: plugins/admin/ogroups/generic.tpl:7 msgid "Group name" msgstr "" #: plugins/admin/groups/paste_generic.tpl:8 #: plugins/admin/groups/generic.tpl:17 msgid "POSIX name of the group" msgstr "" #: plugins/admin/groups/paste_generic.tpl:13 #: plugins/admin/groups/generic.tpl:59 msgid "Normally IDs are auto-generated, select to specify manually" msgstr "" #: plugins/admin/groups/paste_generic.tpl:15 #: plugins/admin/groups/generic.tpl:62 msgid "Force GID" msgstr "" #: plugins/admin/groups/paste_generic.tpl:18 #: plugins/admin/groups/generic.tpl:65 msgid "Forced ID number" msgstr "" #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:14 #: plugins/admin/groups/userSelect/user-list.xml:14 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:15 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:63 #: plugins/admin/ogroups/class_ogroupManagement.inc:183 #: plugins/admin/users/user-list.xml:23 plugins/admin/users/user-list.xml:95 msgid "User" msgstr "" #: plugins/admin/groups/singleUserSelect/class_singleUserSelect.inc:29 #: plugins/admin/groups/userSelect/class_userSelect.inc:26 msgid "User selection" msgstr "" #: plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 msgid "Cannot find group SID in your configuration!" msgstr "" #: plugins/admin/groups/class_group.inc:310 msgid "Samba group" msgstr "" #: plugins/admin/groups/class_group.inc:310 msgid "Domain administrators" msgstr "" #: plugins/admin/groups/class_group.inc:310 msgid "Domain users" msgstr "" #: plugins/admin/groups/class_group.inc:311 msgid "Domain guests" msgstr "" #: plugins/admin/groups/class_group.inc:316 #, php-format msgid "Special group (%d)" msgstr "" #: plugins/admin/groups/class_group.inc:483 #, php-format msgid "Adding UID '%s' to group '%s' failed: cannot find user object!" msgstr "" #: plugins/admin/groups/class_group.inc:489 #, php-format msgid "Add UID '%s' to group '%s' failed: UID is used more than once!" msgstr "" #: plugins/admin/groups/class_group.inc:772 #, php-format msgid "Cannot find any SID for '%s'!" msgstr "" #: plugins/admin/groups/class_group.inc:777 #, php-format msgid "Cannot find any RIDBASE for '%s'!" msgstr "" #: plugins/admin/groups/class_group.inc:871 #, php-format msgid "The gidNumber '%s' is already in use by %s!" msgstr "" #: plugins/admin/groups/class_group.inc:1055 msgid "Generic group settings" msgstr "" #: plugins/admin/groups/class_group.inc:1068 msgid "RDN for object group storage." msgstr "" #: plugins/admin/groups/class_group.inc:1082 msgid "Samba group type" msgstr "" #: plugins/admin/groups/class_group.inc:1083 msgid "Samba domain name" msgstr "" #: plugins/admin/groups/class_group.inc:1085 msgid "Phone pickup group" msgstr "" #: plugins/admin/groups/class_group.inc:1086 msgid "Nagios group" msgstr "" #: plugins/admin/groups/class_group.inc:1088 msgid "Group member" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:26 msgid "" "Manage aspects of groups like members, POSIX, desktop, samba and mail " "settings" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:100 #: plugins/admin/ogroups/class_ogroupManagement.inc:115 #: plugins/admin/users/class_userManagement.inc:196 msgid "Infrastructure error" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:158 #: plugins/admin/users/class_userManagement.inc:895 msgid "Edit POSIX properties" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:166 #: plugins/admin/users/class_userManagement.inc:899 msgid "Edit mail properties" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:174 #: plugins/admin/users/class_userManagement.inc:903 msgid "Edit samba properties" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:182 #: plugins/admin/users/class_userManagement.inc:919 msgid "Edit phone properties" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:189 msgid "Menu" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:190 msgid "Edit start menu properties" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:198 #: plugins/admin/users/class_userManagement.inc:911 msgid "Edit environment properties" msgstr "" #: plugins/admin/groups/group-filter.xml:31 msgid "Default filter2" msgstr "" #: plugins/admin/groups/generic.tpl:28 plugins/admin/ogroups/generic.tpl:18 msgid "Descriptive text for this group" msgstr "" #: plugins/admin/groups/generic.tpl:75 plugins/admin/groups/generic.tpl:102 msgid "Select to create a samba conform group" msgstr "" #: plugins/admin/groups/generic.tpl:87 plugins/admin/groups/generic.tpl:110 msgid "in domain" msgstr "" #: plugins/admin/groups/generic.tpl:131 msgid "Members are in a phone pickup group" msgstr "" #: plugins/admin/groups/generic.tpl:146 msgid "Members are in a Nagios group" msgstr "" #: plugins/admin/groups/generic.tpl:175 plugins/admin/ogroups/generic.tpl:41 msgid "The group members are part of a dyn-group and cannot be managed!" msgstr "" #: plugins/admin/groups/generic.tpl:188 msgid "Common group members" msgstr "" #: plugins/admin/groups/generic.tpl:197 msgid "Partial group members" msgstr "" #: plugins/admin/groups/generic.tpl:202 msgid "Group members" msgstr "" #: plugins/admin/groups/group-list.xml:11 msgid "List of groups" msgstr "" #: plugins/admin/groups/group-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:57 #: plugins/admin/departments/dcObject.tpl:8 #: plugins/admin/departments/dcObject.tpl:9 #: plugins/admin/departments/country.tpl:8 #: plugins/admin/departments/country.tpl:9 #: plugins/admin/departments/organization.tpl:7 #: plugins/admin/departments/organization.tpl:9 #: plugins/admin/departments/generic.tpl:7 #: plugins/admin/departments/generic.tpl:9 #: plugins/admin/departments/locality.tpl:8 #: plugins/admin/departments/locality.tpl:9 #: plugins/admin/departments/domain.tpl:8 #: plugins/admin/departments/domain.tpl:9 plugins/admin/users/user-list.xml:73 msgid "Properties" msgstr "" #: plugins/admin/groups/group-list.xml:91 #: plugins/admin/ogroups/ogroup-list.xml:91 plugins/admin/acl/acl-list.xml:131 #: plugins/admin/departments/dep-list.xml:172 #: plugins/admin/users/user-list.xml:114 msgid "Edit" msgstr "" #: plugins/admin/groups/group-list.xml:106 #: plugins/admin/ogroups/ogroup-list.xml:106 #: plugins/admin/users/user-list.xml:156 msgid "Send message" msgstr "" #: plugins/admin/groups/group-list.xml:138 msgid "Edit group" msgstr "" #: plugins/admin/groups/group-list.xml:151 msgid "Remove group" msgstr "" #: plugins/admin/groups/userGroupSelect/class_userGroupSelect.inc:29 msgid "User and group selection" msgstr "" #: plugins/admin/ogroups/ogroup-list.xml:11 msgid "List of object groups" msgstr "" #: plugins/admin/ogroups/ogroup-list.xml:15 #: plugins/admin/ogroups/generic.tpl:1 msgid "Object group" msgstr "" #: plugins/admin/ogroups/ogroup-list.xml:142 msgid "Edit object group" msgstr "" #: plugins/admin/ogroups/ogroup-list.xml:155 msgid "Remove object group" msgstr "" #: plugins/admin/ogroups/paste_generic.tpl:1 msgid "Paste object group" msgstr "" #: plugins/admin/ogroups/paste_generic.tpl:7 msgid "Please enter the new object group name" msgstr "" #: plugins/admin/ogroups/paste_generic.tpl:16 msgid "Warning: systems can only inherit from a single object group!" msgstr "" #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:47 #: plugins/admin/ogroups/class_ogroupManagement.inc:192 msgid "Printer" msgstr "" #: plugins/admin/ogroups/objectSelect/class_objectSelect.inc:29 msgid "Object selection" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:139 msgid "Phone queue" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:164 msgid "Groupware" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:176 msgid "System settings" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:188 #: plugins/admin/ogroups/tabs_ogroups.inc:213 msgid "Recipe" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:200 #: plugins/admin/ogroups/tabs_ogroups.inc:222 msgid "Devices" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:232 msgid "Deployment summary" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:242 msgid "Desktop" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:259 msgid "Applications" msgstr "" #: plugins/admin/ogroups/generic.tpl:10 msgid "Name of the group" msgstr "" #: plugins/admin/ogroups/generic.tpl:46 msgid "Member objects" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:244 msgid "You cannot combine terminals and workstations in one object group!" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:318 #: plugins/admin/users/class_userManagement.inc:472 #: plugins/admin/users/class_userManagement.inc:507 #: plugins/admin/users/class_userManagement.inc:539 msgid "none" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:320 msgid "too many different objects!" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:322 msgid "users" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:323 msgid "groups" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:324 msgid "applications" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:325 msgid "departments" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:326 msgid "servers" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:327 msgid "workstations" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:328 msgid "Windows workstations" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:329 msgid "terminals" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:330 msgid "phones" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:331 msgid "printers" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:555 msgid "Non existing DN:" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:673 #, php-format msgid "" "These systems are already configured by other object groups and cannot be " "added:" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:707 msgid "You can combine two different object types at maximum, only!" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:873 msgid "Object group generic" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:882 #: plugins/admin/ogroups/class_ogroupManagement.inc:25 msgid "Object groups" msgstr "" #: plugins/admin/ogroups/class_ogroupManagement.inc:26 msgid "Combine different types of objects to make use of this relationship" msgstr "" #: plugins/admin/ogroups/class_ogroupManagement.inc:182 msgid "Templates" msgstr "" #: plugins/admin/ogroups/class_ogroupManagement.inc:185 msgid "Application" msgstr "" #: plugins/admin/ogroups/class_ogroupManagement.inc:190 msgid "Windows Install" msgstr "" #: plugins/admin/acl/tabs_acl_role.inc:28 plugins/admin/acl/acl-filter.xml:33 msgid "ACL Templates" msgstr "" #: plugins/admin/acl/acl-list.xml:11 msgid "List of ACLs" msgstr "" #: plugins/admin/acl/paste_role.tpl:1 msgid "Paste ACL-role" msgstr "" #: plugins/admin/acl/acl-filter.xml:48 #: plugins/admin/acl/class_aclManagement.inc:154 msgid "ACL Assignment" msgstr "" #: plugins/admin/acl/class_aclManagement.inc:26 msgid "" "Control access to GOsa managed objects down to attribute and action level" msgstr "" #: plugins/admin/acl/class_aclRole.inc:26 #: plugins/admin/acl/class_aclRole.inc:715 msgid "Access control roles" msgstr "" #: plugins/admin/acl/class_aclRole.inc:27 msgid "Edit AC roles" msgstr "" #: plugins/admin/acl/class_aclRole.inc:138 msgid "Reset ACL" msgstr "" #: plugins/admin/acl/class_aclRole.inc:411 msgid "No ACL settings for this category" msgstr "" #: plugins/admin/acl/class_aclRole.inc:413 #, php-format msgid "ACL for these objects: %s" msgstr "" #: plugins/admin/acl/class_aclRole.inc:418 msgid "Edit category ACL" msgstr "" #: plugins/admin/acl/class_aclRole.inc:421 msgid "Delete category ACL" msgstr "" #: plugins/admin/acl/class_aclRole.inc:442 #, php-format msgid "Edit ACL for '%s', scope is '%s'" msgstr "" #: plugins/admin/acl/class_aclRole.inc:635 msgid "Object in use" msgstr "" #: plugins/admin/acl/class_aclRole.inc:635 #, php-format msgid "This role cannot be removed while it is in use by these objects:" msgstr "" #: plugins/admin/acl/class_aclRole.inc:731 msgid "RDN for role storage." msgstr "" #: plugins/admin/departments/dcObject.tpl:5 #: plugins/admin/departments/dep-filter.xml:77 #: plugins/admin/departments/dep-list.xml:23 #: plugins/admin/departments/dep-list.xml:110 msgid "Domain component" msgstr "" #: plugins/admin/departments/dcObject.tpl:11 #: plugins/admin/departments/locality.tpl:11 msgid "Locality name" msgstr "" #: plugins/admin/departments/dcObject.tpl:14 #: plugins/admin/departments/locality.tpl:14 msgid "Name of locality to create" msgstr "" #: plugins/admin/departments/dcObject.tpl:22 #: plugins/admin/departments/country.tpl:22 #: plugins/admin/departments/organization.tpl:22 #: plugins/admin/departments/locality.tpl:22 #: plugins/admin/departments/domain.tpl:22 msgid "Descriptive text for department" msgstr "" #: plugins/admin/departments/dcObject.tpl:67 #: plugins/admin/departments/country.tpl:68 #: plugins/admin/departments/class_countryGeneric.inc:95 #: plugins/admin/departments/organization.tpl:132 #: plugins/admin/departments/class_department.inc:686 #: plugins/admin/departments/class_domain.inc:94 #: plugins/admin/departments/class_organizationGeneric.inc:135 #: plugins/admin/departments/generic.tpl:132 #: plugins/admin/departments/locality.tpl:67 #: plugins/admin/departments/class_localityGeneric.inc:95 #: plugins/admin/departments/class_dcObject.inc:94 #: plugins/admin/departments/domain.tpl:67 msgid "Administrative settings" msgstr "" #: plugins/admin/departments/dcObject.tpl:70 #: plugins/admin/departments/country.tpl:71 #: plugins/admin/departments/organization.tpl:135 #: plugins/admin/departments/generic.tpl:135 #: plugins/admin/departments/locality.tpl:70 #: plugins/admin/departments/domain.tpl:70 msgid "Tag department as an independent administrative unit" msgstr "" #: plugins/admin/departments/dep-filter.xml:49 #: plugins/admin/departments/country.tpl:5 #: plugins/admin/departments/class_countryGeneric.inc:82 #: plugins/admin/departments/class_countryGeneric.inc:83 #: plugins/admin/departments/dep-list.xml:31 #: plugins/admin/departments/dep-list.xml:117 #: plugins/admin/departments/class_departmentManagement.inc:217 msgid "Country" msgstr "" #: plugins/admin/departments/dep-filter.xml:63 #: plugins/admin/departments/dep-list.xml:39 #: plugins/admin/departments/dep-list.xml:124 #: plugins/admin/departments/class_departmentManagement.inc:229 #: plugins/admin/departments/locality.tpl:5 #: plugins/admin/departments/class_localityGeneric.inc:82 #: plugins/admin/departments/class_localityGeneric.inc:83 msgid "Locality" msgstr "" #: plugins/admin/departments/dep-filter.xml:105 #: plugins/admin/departments/dep-list.xml:15 #: plugins/admin/departments/dep-list.xml:103 #: plugins/admin/departments/class_departmentManagement.inc:193 #: plugins/admin/departments/domain.tpl:5 msgid "Domain" msgstr "" #: plugins/admin/departments/country.tpl:11 #: plugins/admin/departments/class_countryGeneric.inc:91 msgid "Country name" msgstr "" #: plugins/admin/departments/country.tpl:14 msgid "Name of country to create" msgstr "" #: plugins/admin/departments/dep-list.xml:11 msgid "List of structural objects" msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "You are currently moving/renaming this department." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:6 msgid "" "Modifying a departments naming attribute 'ou' or base may corrupt ACLs and " "snapshot entries for all entire objects." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:9 msgid "GOsa can NOT fix this for you, yet." msgstr "" #: plugins/admin/departments/dep_move_confirm.tpl:12 msgid "" "Before you confirm this action, ensure that everything will be as expected, " "possibly the best solution is a backup." msgstr "" #: plugins/admin/departments/organization.tpl:11 msgid "Name of organization" msgstr "" #: plugins/admin/departments/organization.tpl:14 msgid "Name of organization to create" msgstr "" #: plugins/admin/departments/organization.tpl:30 #: plugins/admin/departments/generic.tpl:30 msgid "Category for this subtree" msgstr "" #: plugins/admin/departments/organization.tpl:89 #: plugins/admin/departments/generic.tpl:90 msgid "State where this subtree is located" msgstr "" #: plugins/admin/departments/organization.tpl:97 #: plugins/admin/departments/generic.tpl:98 msgid "Location of this subtree" msgstr "" #: plugins/admin/departments/organization.tpl:105 #: plugins/admin/departments/generic.tpl:106 msgid "Postal address of this subtree" msgstr "" #: plugins/admin/departments/organization.tpl:112 #: plugins/admin/departments/generic.tpl:113 msgid "Base telephone number of this subtree" msgstr "" #: plugins/admin/departments/organization.tpl:120 #: plugins/admin/departments/generic.tpl:121 msgid "Base facsimile telephone number of this subtree" msgstr "" #: plugins/admin/departments/class_department.inc:439 msgid "Cannot find an unused tag for this administrative unit!" msgstr "" #: plugins/admin/departments/class_department.inc:507 #, php-format msgid "Tagging '%s'." msgstr "" #: plugins/admin/departments/class_department.inc:588 #, php-format msgid "Moving '%s' to '%s'" msgstr "" #: plugins/admin/departments/class_department.inc:629 #, php-format msgid "FAILED to copy %s, aborting operation" msgstr "" #: plugins/admin/departments/class_department.inc:660 #: plugins/admin/departments/class_department.inc:671 msgid "Departments" msgstr "" #: plugins/admin/departments/class_department.inc:674 msgid "Department name" msgstr "" #: plugins/admin/departments/class_department.inc:682 msgid "Telephone" msgstr "" #: plugins/admin/departments/class_department.inc:737 #, php-format msgid "Object '%s' is already tagged" msgstr "" #: plugins/admin/departments/class_department.inc:744 #, php-format msgid "Adding tag (%s) to object '%s'" msgstr "" #: plugins/admin/departments/class_department.inc:776 #, php-format msgid "Removing tag from object '%s'" msgstr "" #: plugins/admin/departments/dep_iframe.tpl:1 msgid "Processing the requested operation" msgstr "" #: plugins/admin/departments/dep_iframe.tpl:7 msgid "" "Your browser doesn't support IFRAME HTML elements. Please use this link to " "perform the requested operation." msgstr "" #: plugins/admin/departments/class_domain.inc:81 #: plugins/admin/departments/class_domain.inc:82 #: plugins/admin/departments/class_departmentManagement.inc:205 #: plugins/admin/departments/class_dcObject.inc:81 #: plugins/admin/departments/class_dcObject.inc:82 msgid "Domain Component" msgstr "" #: plugins/admin/departments/class_organizationGeneric.inc:122 msgid "Organization name" msgstr "" #: plugins/admin/departments/class_organizationGeneric.inc:132 #: plugins/generic/infoPage/class_infoPage.inc:109 msgid "Phone number" msgstr "" #: plugins/admin/departments/generic.tpl:11 msgid "Name of department" msgstr "" #: plugins/admin/departments/generic.tpl:14 msgid "Name of subtree to create" msgstr "" #: plugins/admin/departments/generic.tpl:22 msgid "Descriptive text for department" msgstr "" #: plugins/admin/departments/class_departmentManagement.inc:25 msgid "Directory structure" msgstr "" #: plugins/admin/departments/class_departmentManagement.inc:26 msgid "" "Manage organizations, organizational units, localities, countries and more" msgstr "" #: plugins/admin/departments/class_departmentManagement.inc:125 msgid "" "As soon as the tag operation has finished, you can scroll down to end of the " "page and press the 'Continue' button to continue with the department " "management dialog." msgstr "" #: plugins/admin/departments/domain.tpl:11 msgid "Domain name" msgstr "" #: plugins/admin/departments/domain.tpl:14 msgid "Name of domain to create" msgstr "" #: plugins/admin/users/password.tpl:4 msgid "" "To change the user password use the fields below. The changes take effect " "immediately. Please memorize the new password, because the user wouldn't be " "able to login without it." msgstr "" #: plugins/admin/users/password.tpl:11 plugins/admin/users/password.tpl:39 msgid "Password input dialog" msgstr "" #: plugins/admin/users/password.tpl:27 plugins/admin/users/password.tpl:79 msgid "Strength" msgstr "" #: plugins/admin/users/password.tpl:95 msgid "Enforce password change on next login." msgstr "" #: plugins/admin/users/templatize.tpl:2 msgid "Applying a template" msgstr "" #: plugins/admin/users/templatize.tpl:6 msgid "" "Applying a template to several users will replace all user attributes " "defined in the template." msgstr "" #: plugins/admin/users/templatize.tpl:13 msgid "Apply user template" msgstr "" #: plugins/admin/users/templatize.tpl:15 plugins/admin/users/template.tpl:15 #: plugins/admin/users/class_userManagement.inc:546 #: plugins/admin/users/user-list.xml:15 plugins/admin/users/user-list.xml:102 msgid "Template" msgstr "" #: plugins/admin/users/templatize.tpl:32 msgid "No templates available!" msgstr "" #: plugins/admin/users/user-filter.xml:33 msgid "Show templates" msgstr "" #: plugins/admin/users/user-filter.xml:47 msgid "Show POSIX users" msgstr "" #: plugins/admin/users/user-filter.xml:61 msgid "Show SAMBA users" msgstr "" #: plugins/admin/users/user-filter.xml:75 msgid "Show mail users" msgstr "" #: plugins/admin/users/template.tpl:2 msgid "Creating a new user using templates" msgstr "" #: plugins/admin/users/template.tpl:6 msgid "" "Creating a new user can be assisted by using templates. Many database " "records will be filled automatically. Choose 'none' to skip the usage of " "templates." msgstr "" #: plugins/admin/users/template.tpl:13 msgid "User template selection dialog" msgstr "" #: plugins/admin/users/template.tpl:43 msgid "Modify the uid proposal" msgstr "" #: plugins/admin/users/class_userManagement.inc:26 msgid "" "Manage aspects of user accounts like generic, POSIX, samba and mail settings" msgstr "" #: plugins/admin/users/class_userManagement.inc:401 msgid "You have no permission to change this users password!" msgstr "" #: plugins/admin/users/class_userManagement.inc:613 msgid "Cannot generate a unique id, please specify it manually!" msgstr "" #: plugins/admin/users/class_userManagement.inc:802 msgid "Account locking" msgstr "" #: plugins/admin/users/class_userManagement.inc:803 #, php-format msgid "" "Password method '%s' does not support locking. Account (%s) has not been " "locked!" msgstr "" #: plugins/admin/users/class_userManagement.inc:876 msgid "Unlock account" msgstr "" #: plugins/admin/users/class_userManagement.inc:878 msgid "Lock account" msgstr "" #: plugins/admin/users/class_userManagement.inc:891 msgid "Edit generic properties" msgstr "" #: plugins/admin/users/class_userManagement.inc:906 msgid "Netatalk" msgstr "" #: plugins/admin/users/class_userManagement.inc:907 msgid "Edit Netatalk properties" msgstr "" #: plugins/admin/users/class_userManagement.inc:914 msgid "FAX" msgstr "" #: plugins/admin/users/class_userManagement.inc:915 msgid "Edit FAX properties" msgstr "" #: plugins/admin/users/user-list.xml:11 msgid "List of users" msgstr "" #: plugins/admin/users/user-list.xml:140 msgid "Lock users" msgstr "" #: plugins/admin/users/user-list.xml:148 msgid "Unlock users" msgstr "" #: plugins/admin/users/user-list.xml:167 msgid "Apply template" msgstr "" #: plugins/admin/users/user-list.xml:199 msgid "New user from template" msgstr "" #: plugins/admin/users/user-list.xml:213 msgid "Edit user" msgstr "" #: plugins/admin/users/user-list.xml:222 msgid "%{filter:lockLabel(userPassword)}" msgstr "" #: plugins/admin/users/user-list.xml:245 msgid "Remove user" msgstr "" #: plugins/generic/welcome/class_welcome.inc:5 #: plugins/generic/welcome/class_welcome.inc:6 msgid "Back to main menu" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:15 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:15 msgid "Maximum" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:16 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:16 msgid "Average" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:17 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:17 msgid "Minimum" msgstr "" #: plugins/generic/statistics/chartClasses/class_actionSelectChart.inc:104 msgid "Action" msgstr "" #: plugins/generic/statistics/chartClasses/class_statChart.inc:73 msgid "Systems" msgstr "" #: plugins/generic/statistics/statistics.tpl:2 msgid "Usage statistics" msgstr "" #: plugins/generic/statistics/statistics.tpl:5 #: plugins/generic/statistics/statistics.tpl:10 msgid "" "This feature is disabled. To enable it you have to register GOsa, you can " "initiate a registration using the dash-board plugin." msgstr "" #: plugins/generic/statistics/statistics.tpl:6 #: plugins/generic/statistics/statistics.tpl:12 msgid "Dash board" msgstr "" #: plugins/generic/statistics/statistics.tpl:16 msgid "" "Communication with the GOsa-backend failed. Please check the RPC " "configuration!" msgstr "" #: plugins/generic/statistics/statistics.tpl:22 msgid "Send" msgstr "" #: plugins/generic/statistics/statistics.tpl:28 msgid "Generate report for" msgstr "" #: plugins/generic/statistics/statistics.tpl:56 msgid "Update" msgstr "" #: plugins/generic/statistics/statistics.tpl:69 #: plugins/generic/statistics/statistics.tpl:78 msgid "No statistic data for given period" msgstr "" #: plugins/generic/statistics/statistics.tpl:87 msgid "Select report type" msgstr "" #: plugins/generic/statistics/class_statistics.inc:263 #, php-format msgid "" "You have currently %s unsubmitted statistic collection, do you want to " "transmit them now?" msgstr "" #: plugins/generic/dashBoard/dbChannelStatus/contents.tpl:1 msgid "Channels" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:3 msgid "GOsa registration" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:7 msgid "Do you want to register GOsa and benefit from the features it brings?" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:11 msgid "I do not want to register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:17 #: plugins/generic/dashBoard/dashBoard.tpl:5 msgid "Register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:19 msgid "Additionally to the 'Annonomous' account you can:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:21 msgid "Access to 'Premium-Channels'." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:22 msgid "" "Watch the status of current plugin updates/patches and the availability of " "new plugins." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:23 msgid "Recieve newsletter, if wanted." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:24 msgid "View several usefull statistics about your GOsa installation" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:29 msgid "What information will be transmitted to the backend and maybe stored:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:31 msgid "All personal information filled in the registration form." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:32 msgid "Information about the installed plugins and their version." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:33 msgid "" "The GOsa-UUID (will be generated during the registration) and a password, to " "authenticate." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:34 msgid "" "The bugs you will report and the corresponding trace. You can select what " "information you want to send in." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:35 msgid "" "When the statistics extension is used. GOsa will transmit information about " "plugins, their usage and the amount of objects present in your ldap " "database. No sensitive data is transmitted here, just the object type, the " "action performed, cpu usage, memory usage, elapsed time..." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:69 #: plugins/generic/dashBoard/Register/register.tpl:80 msgid "Registration complete" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:71 msgid "GOsa instance successfully registered" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:82 msgid "GOsa instance will not be registered" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:54 msgid "" "Communciation with the backend failed! Please check your internet connection!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:56 msgid "" "Authentication failed, please check combination of username and password!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:58 msgid "" "Internal server error, please try again later. If the problem persists " "contact the GOsa-Team!" msgstr "" #: plugins/generic/dashBoard/dbNotifications/contents.tpl:1 msgid "Notifications" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:2 msgid "This feature is only accessible for registrated instances of GOsa" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:7 msgid "" "Unfortunately the registration server cannot be reached, maybe the server is " "down for maintaince or you've no internet access!" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:13 msgid "GOsa dash board" msgstr "" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:69 msgid "Version mismatch" msgstr "" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:73 msgid "Schema missing" msgstr "" #: plugins/generic/dashBoard/dbPluginStatus/contents.tpl:1 msgid "Plugin status" msgstr "" #: plugins/generic/references/class_reference.inc:70 msgid "Role membership" msgstr "" #: plugins/generic/references/class_reference.inc:76 msgid "Object group membership" msgstr "" #: plugins/generic/references/class_reference.inc:82 msgid "Department manager" msgstr "" #: plugins/generic/references/class_reference.inc:88 msgid "User manager" msgstr "" #: plugins/generic/references/contents.tpl:2 #: plugins/generic/references/contents.tpl:3 msgid "Object information" msgstr "" #: plugins/generic/references/contents.tpl:7 msgid "Show raw object entry" msgstr "" #: plugins/generic/references/contents.tpl:18 #: plugins/generic/references/contents.tpl:20 msgid "Last modification" msgstr "" #: plugins/generic/references/contents.tpl:29 msgid "Object references" msgstr "" #: plugins/generic/references/contents.tpl:45 msgid "ACL trace" msgstr "" #: plugins/generic/references/class_aclResolver.inc:143 msgid "Enter another user name" msgstr "" #: plugins/generic/references/class_aclResolver.inc:193 msgid "ACLs" msgstr "" #: plugins/generic/references/class_aclResolver.inc:198 #, php-format msgid "List of effective ACLs for '%s'" msgstr "" #: plugins/generic/references/class_aclResolver.inc:199 #: plugins/generic/references/class_aclResolver.inc:203 msgid "Object permissions" msgstr "" #: plugins/generic/references/class_aclResolver.inc:311 msgid "create" msgstr "" #: plugins/generic/references/class_aclResolver.inc:312 msgid "remove" msgstr "" #: plugins/generic/references/class_aclResolver.inc:313 msgid "move" msgstr "" gosa-core-2.7.4/locale/core/vi/0000755000175000017500000000000011752422547014655 5ustar mikemikegosa-core-2.7.4/locale/core/vi/LC_MESSAGES/0000755000175000017500000000000011752422547016442 5ustar mikemikegosa-core-2.7.4/locale/core/vi/LC_MESSAGES/messages.po0000644000175000017500000104206111651532471020611 0ustar mikemike# translation of VIcore2.po to Vietnamese # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Stefan Koehler , 2008. msgid "" msgstr "" "Project-Id-Version: VIcore2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-25 15:08+0200\n" "PO-Revision-Date: 2008-07-04 09:59+0200\n" "Last-Translator: Stefan Koehler \n" "Language-Team: Vietnamese\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Bookmarks: -1,848,-1,-1,-1,-1,-1,57,-1,-1\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=1; plural=0;\n" #: include/class_management.inc:32 include/class_management.inc:33 #: plugins/personal/posix/class_posixAccount.inc:224 msgid "unconfigured" msgstr "không được cấu hình" #: include/class_management.inc:324 include/class_management.inc:487 #: include/class_management.inc:534 include/class_management.inc:549 #: include/class_management.inc:586 include/class_management.inc:600 #: plugins/admin/users/class_userManagement.inc:228 #: plugins/admin/users/class_userManagement.inc:764 msgid "Permission" msgstr "Cho phép" #: include/class_management.inc:405 #: plugins/admin/acl/class_aclManagement.inc:98 #: plugins/admin/users/class_userManagement.inc:722 #: plugins/admin/users/class_userManagement.inc:726 msgid "Permission error" msgstr "Lỗi về cấp phép" #: include/class_management.inc:487 #, fuzzy, php-format msgid "You are not allowed to create a snapshot for %s!" msgstr "Bạn không được phép tạo ra snapshot cho %s." #: include/class_management.inc:508 include/class_management.inc:669 #: include/utils/class_msgPool.inc:137 include/utils/class_msgPool.inc:149 #: include/utils/class_msgPool.inc:167 include/utils/class_msgPool.inc:440 #: include/utils/class_msgPool.inc:462 include/utils/class_xml.inc:40 #: include/class_listing.inc:542 include/class_tabs.inc:71 #: include/class_msg_dialog.inc:99 include/class_plugin.inc:1698 #: include/class_plugin.inc:1705 #: include/password-methods/class_password-methods.inc:339 #: include/functions.inc:2911 include/functions.inc:3070 #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3422 include/functions.inc:3430 #: include/functions.inc:3442 include/functions.inc:3446 #: include/functions.inc:3461 include/functions.inc:3470 #: include/functions.inc:3530 include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #: include/class_CopyPasteHandler.inc:377 #: include/class_gosaSupportDaemon.inc:1184 #: include/class_gosaSupportDaemon.inc:1204 #: setup/class_setupStep_Migrate.inc:450 setup/setup_checks.tpl:25 #: setup/setup_checks.tpl:66 html/index.php:241 html/index.php:245 #: plugins/personal/password/class_password.inc:215 #: plugins/personal/generic/class_user.inc:297 #: plugins/personal/generic/class_user.inc:429 #: plugins/personal/generic/class_user.inc:522 #: plugins/personal/generic/class_user.inc:816 #: plugins/personal/generic/class_user.inc:1050 #: plugins/personal/generic/class_user.inc:1177 #: plugins/personal/generic/class_user.inc:1184 #: plugins/personal/generic/class_user.inc:1202 #: plugins/personal/generic/class_user.inc:1483 #: plugins/personal/generic/class_user.inc:1809 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:203 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:207 #: plugins/admin/groups/class_group.inc:482 #: plugins/admin/groups/class_group.inc:488 #: plugins/admin/groups/class_group.inc:676 #: plugins/admin/groups/class_group.inc:772 #: plugins/admin/groups/class_group.inc:777 #: plugins/admin/groups/class_group.inc:1115 #: plugins/admin/ogroups/class_ogroup.inc:424 #: plugins/admin/acl/class_aclRole.inc:670 #: plugins/admin/departments/class_department.inc:317 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:43 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:49 #: plugins/generic/statistics/chartClasses/class_categoryActionOverTime.inc:96 #: plugins/generic/statistics/class_statistics.inc:133 #: plugins/generic/statistics/class_statistics.inc:229 #: plugins/generic/statistics/class_statistics.inc:244 #: plugins/generic/references/class_ldifViewer.inc:20 #, php-format msgid "Error" msgstr "Lỗi" #: include/class_management.inc:534 include/class_management.inc:586 #: include/class_management.inc:600 #, fuzzy, php-format msgid "You are not allowed to restore a snapshot for %s!" msgstr "Bạn không được phép phục hồi một snapshot cho %s." #: include/class_management.inc:549 #, fuzzy, php-format msgid "You are not allowed to remove a snapshot for %s!" msgstr "Bạn không được phép phục hồi một snapshot cho %s." #: include/class_management.inc:659 include/class_management.inc:743 #: include/class_log.inc:87 include/class_session.inc:76 #: include/class_session.inc:101 include/class_session.inc:127 #: include/functions.inc:640 include/functions.inc:854 #: include/functions.inc:972 include/functions.inc:1367 #: include/functions.inc:2195 include/functions.inc:2225 #: include/functions.inc:2245 include/class_ldap.inc:807 #: include/class_ldap.inc:858 include/class_CopyPasteHandler.inc:160 #: include/class_CopyPasteHandler.inc:274 include/class_acl.inc:1089 #: plugins/personal/myaccount/main.inc:49 msgid "Internal error" msgstr "Lỗi nội bộ" #: include/class_management.inc:660 include/class_management.inc:744 #: plugins/personal/myaccount/main.inc:50 #, php-format msgid "" "Cannot instantiate tabbed-plug-in, the base plugin (%s) is not available!" msgstr "" #: include/class_management.inc:669 #, php-format msgid "" "No tab definition for %s found in configuration file: cannot create plugin " "instance!" msgstr "" #: include/class_pluglist.inc:146 include/utils/class_timezone.inc:47 #: include/password-methods/class_password-methods-sha.inc:48 #: include/password-methods/class_password-methods-ssha.inc:51 #: include/functions.inc:864 include/functions.inc:3085 #: include/functions.inc:3100 include/class_config.inc:171 #: include/class_config.inc:712 include/class_config.inc:1173 #: include/class_config.inc:1186 include/class_config.inc:1204 #: include/class_CopyPasteHandler.inc:119 #: include/class_CopyPasteHandler.inc:128 #: include/class_CopyPasteHandler.inc:177 #: include/class_CopyPasteHandler.inc:186 #: include/class_CopyPasteHandler.inc:194 include/class_SnapshotHandler.inc:44 #: include/class_SnapshotHandler.inc:57 include/class_SnapshotHandler.inc:75 #: html/password.php:113 html/index.php:157 html/index.php:233 #: html/main.php:295 plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 msgid "Configuration error" msgstr "Lỗi cấu hình" #: include/class_pluglist.inc:147 #, fuzzy msgid "The configuration format has changed: please run the setup again!" msgstr "Định dạng cấu hình đã thay đổi. Xin hãy chạy lại cài đặt!" #: include/class_pluglist.inc:304 #, fuzzy msgid "" "You are currently editing a database entry. Do you want to discard the " "changes?" msgstr "" "Bạn hiện đang hiệu chỉnh một entry vào cơ sở dữ liệu. Bạn có muốn hủy bỏ các " "thay đổi?" #: include/class_pluglist.inc:479 plugins/admin/groups/class_group.inc:329 #: plugins/admin/groups/class_group.inc:352 #: plugins/admin/groups/class_group.inc:369 #: plugins/admin/departments/class_department.inc:152 #: plugins/generic/references/contents.tpl:18 msgid "Unknown" msgstr "Không rõ" #: include/utils/class_msgPool.inc:17 msgid "This object will be deleted!" msgstr "Đối tượng này sẽ bị xóa!" #: include/utils/class_msgPool.inc:19 #, fuzzy, php-format msgid "This %s object will be deleted!" msgstr "Đối tượng '%s' này sẽ bị xóa!" #: include/utils/class_msgPool.inc:24 #, php-format msgid "This object will be deleted: %s" msgstr "Đối tượng này sẽ bị xóa: %s" #: include/utils/class_msgPool.inc:26 #, fuzzy, php-format msgid "This %s object will be deleted: %s" msgstr "Đối tượng '%s' này sẽ bị xóa: '%s'" #: include/utils/class_msgPool.inc:31 msgid "This object will be deleted:" msgstr "Đối tượng này sẽ bị xóa:" #: include/utils/class_msgPool.inc:33 #, fuzzy, php-format msgid "This %s object will be deleted:" msgstr "Đối tượng '%s' này sẽ bị xóa:" #: include/utils/class_msgPool.inc:37 #, php-format msgid "These objects will be deleted: %s" msgstr "Đối tượng này sẽ bị xóa: %s" #: include/utils/class_msgPool.inc:39 #, fuzzy, php-format msgid "These %s objects will be deleted: %s" msgstr "Đối tượng '%s' này sẽ bị xóa; %s" #: include/utils/class_msgPool.inc:47 msgid "You have no permission to delete this object!" msgstr "Bạn không có quyền xóa đối tượng này!" #: include/utils/class_msgPool.inc:51 include/utils/class_msgPool.inc:55 msgid "You have no permission to delete the object:" msgstr "Bạn không có quyền xóa đối tượng này:" #: include/utils/class_msgPool.inc:58 msgid "You have no permission to delete these objects:" msgstr "Bạn không có quyền xóa những đối tượng này:" #: include/utils/class_msgPool.inc:65 msgid "You have no permission to create this object!" msgstr "Bạn không có quyền tạo ra đối tượng này!" #: include/utils/class_msgPool.inc:69 include/utils/class_msgPool.inc:73 msgid "You have no permission to create the object:" msgstr "Bạn không có quyền tạo ra đối tượng này:" #: include/utils/class_msgPool.inc:76 msgid "You have no permission to create these objects:" msgstr "Bạn không có quyền tạo ra những đối tượng này:" #: include/utils/class_msgPool.inc:83 msgid "You have no permission to modify this object!" msgstr "Bạn không có quyền thay đổi đối tượng này!" #: include/utils/class_msgPool.inc:87 include/utils/class_msgPool.inc:91 msgid "You have no permission to modify the object:" msgstr "Bạn không có quyền thay đổi đối tượng này:" #: include/utils/class_msgPool.inc:94 msgid "You have no permission to modify these objects:" msgstr "Bạn không có quyền thay đổi những đối tượng này:" #: include/utils/class_msgPool.inc:101 msgid "You have no permission to view this object!" msgstr "Bạn không có quyền xem đối tượng này!" #: include/utils/class_msgPool.inc:105 include/utils/class_msgPool.inc:109 msgid "You have no permission to view the object:" msgstr "Bạn không có quyền xem đối tượng này:" #: include/utils/class_msgPool.inc:112 msgid "You have no permission to view these objects:" msgstr "Bạn không có quyền xem những đối tượng này:" #: include/utils/class_msgPool.inc:119 msgid "You have no permission to move this object!" msgstr "Bạn không có quyền di chuyển đối tượng này!" #: include/utils/class_msgPool.inc:123 include/utils/class_msgPool.inc:127 msgid "You have no permission to move the object:" msgstr "Bạn không có quyền di chuyển đối tượng này:" #: include/utils/class_msgPool.inc:130 msgid "You have no permission to move these objects:" msgstr "Bạn không có quyền di chuyển những đối tượng này:" #: include/utils/class_msgPool.inc:140 include/utils/class_msgPool.inc:152 #: include/utils/class_msgPool.inc:170 msgid "Connection information" msgstr "Thông tin kết nối" #: include/utils/class_msgPool.inc:142 #, php-format msgid "Cannot connect to %s database!" msgstr "Không thể kết nối đến cơ sở dữ liệu %s!" #: include/utils/class_msgPool.inc:154 #, php-format msgid "Cannot select %s database!" msgstr "Không thể lựa chọn cơ sở dữ liệu %s!" #: include/utils/class_msgPool.inc:160 #, php-format msgid "No %s server defined!" msgstr "Không xác định được Server '%s'!" #: include/utils/class_msgPool.inc:172 #, php-format msgid "Cannot query %s database!" msgstr "Không truy vấn được cơ sở dữ liệu %s!" #: include/utils/class_msgPool.inc:178 #, fuzzy, php-format msgid "The field %s contains a reserved keyword!" msgstr "Trường '%s' có chứa một từ khóa dự trữ!" #: include/utils/class_msgPool.inc:184 #, fuzzy, php-format msgid "Command specified as %s hook for plugin %s does not exist!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/utils/class_msgPool.inc:191 #, fuzzy, php-format msgid "%s command is invalid!" msgstr "Lệnh '%s' không hợp lệ!" #: include/utils/class_msgPool.inc:193 #, fuzzy, php-format msgid "%s command (%s) for plugin %s is invalid!" msgstr "Lệnh '%s' (%s) cho plugin %s không hợp lệ!" #: include/utils/class_msgPool.inc:195 #, fuzzy, php-format msgid "%s command for plugin %s is invalid!" msgstr "Lệnh '%s' cho plugin '%s' không hợp lệ!" #: include/utils/class_msgPool.inc:197 #, fuzzy, php-format msgid "%s command (%s) is invalid!" msgstr "Lệnh '%s' (%s) không hợp lệ!" #: include/utils/class_msgPool.inc:205 #, fuzzy, php-format msgid "Cannot execute %s command!" msgstr "Không thể chạy lệnh '%s'!" #: include/utils/class_msgPool.inc:207 #, fuzzy, php-format msgid "Cannot execute %s command (%s) for plugin %s!" msgstr "Không thể chạy lệnh '%s' ('%s) cho plugin %s!" #: include/utils/class_msgPool.inc:209 #, fuzzy, php-format msgid "Cannot execute %s command for plugin %s!" msgstr "Không thể chạy lệnh '%s' cho plugin %s!" #: include/utils/class_msgPool.inc:211 #, fuzzy, php-format msgid "Cannot execute %s command (%s)!" msgstr "Không thể chạy lệnh '%s' ('%s)!" #: include/utils/class_msgPool.inc:219 #, fuzzy, php-format msgid "Value for %s is too large!" msgstr "Gía trị '%s' quá lớn!" #: include/utils/class_msgPool.inc:221 #, fuzzy, php-format msgid "%s must be smaller than %s!" msgstr "'%s' phải thấp hơn %d!" #: include/utils/class_msgPool.inc:229 #, fuzzy, php-format msgid "Value for %s is too small!" msgstr "Gía trị '%s' quá nhỏ!" #: include/utils/class_msgPool.inc:231 #, fuzzy, php-format msgid "%s must be %s or above!" msgstr "'%s' phải lớn hơn %d hoặc trên nữa!" #: include/utils/class_msgPool.inc:238 #, fuzzy, php-format msgid "%s depends on %s - please provide both values!" msgstr "'%s' phụ thuộc vào '%s'- xin hãy cung cấp cả hai giá trị!" #: include/utils/class_msgPool.inc:244 #, fuzzy, php-format msgid "There is already an entry with this %s attribute in the system!" msgstr "Đã có sẵn một entry với thuộc tính '%s' trong hệ thống này!" #: include/utils/class_msgPool.inc:250 #, fuzzy, php-format msgid "The required field %s is empty!" msgstr "Trường được yêu cầu '%s' bị rỗng!" #: include/utils/class_msgPool.inc:258 include/class_core.inc:309 msgid "Example" msgstr "Ví dụ" #: include/utils/class_msgPool.inc:278 #, fuzzy, php-format msgid "The Field %s contains invalid characters" msgstr "Trường '%s' chứa các ký tự không hợp lệ" #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s is not allowed:" msgstr "'%s' không được phép:" #: include/utils/class_msgPool.inc:279 #, fuzzy, php-format msgid "%s are not allowed!" msgstr "'%s' không được cho phép!" #: include/utils/class_msgPool.inc:282 #, fuzzy, php-format msgid "The Field %s contains invalid characters!" msgstr "Trường '%s' chứa các ký tự không hợp lệ!" #: include/utils/class_msgPool.inc:289 #, php-format msgid "Missing %s PHP extension!" msgstr "PHP mở rộng %s mất tích!" #: include/utils/class_msgPool.inc:295 ihtml/themes/default/acl.tpl:93 #: ihtml/themes/default/acl.tpl:109 ihtml/themes/default/snapshotdialog.tpl:44 #: ihtml/themes/default/snapshotdialog.tpl:90 #: ihtml/themes/default/islocked.tpl:26 #: ihtml/themes/default/copyPasteDialog.tpl:21 #: ihtml/themes/default/msg_dialog.tpl:80 #: ihtml/themes/default/msg_dialog.tpl:141 #: ihtml/themes/default/msg_dialog.tpl:146 setup/setup_ldap.tpl:20 #: setup/setup_migrate.tpl:71 #, php-format msgid "Cancel" msgstr "Hủy bỏ" #: include/utils/class_msgPool.inc:301 ihtml/themes/default/msg_dialog.tpl:77 #: ihtml/themes/default/msg_dialog.tpl:79 #: ihtml/themes/default/msg_dialog.tpl:136 #: ihtml/themes/default/msg_dialog.tpl:139 #: ihtml/themes/default/msg_dialog.tpl:144 #: setup/class_setupStep_Migrate.inc:153 setup/class_setupStep_Migrate.inc:303 #: setup/class_setupStep_Migrate.inc:684 setup/class_setupStep_Migrate.inc:828 #: setup/setup_checks.tpl:21 setup/setup_checks.tpl:62 #, php-format msgid "OK" msgstr "" #: include/utils/class_msgPool.inc:307 ihtml/themes/default/acl.tpl:33 #: ihtml/themes/default/acl.tpl:89 ihtml/themes/default/acl.tpl:106 #: setup/setup_ldap.tpl:19 setup/setup_migrate.tpl:70 #, php-format msgid "Apply" msgstr "Áp dụng" #: include/utils/class_msgPool.inc:313 #: ihtml/themes/default/copyPasteDialog.tpl:19 #, php-format msgid "Save" msgstr "Lưu lại" #: include/utils/class_msgPool.inc:319 #: plugins/personal/generic/generic.tpl:252 #: plugins/personal/generic/generic.tpl:272 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:83 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:123 #, php-format msgid "Add" msgstr "Thêm vào" #: include/utils/class_msgPool.inc:319 #, php-format msgid "Add %s" msgstr "Thêm %s" #: include/utils/class_msgPool.inc:325 #, php-format msgid "Delete" msgstr "Xóa" #: include/utils/class_msgPool.inc:325 #, php-format msgid "Delete %s" msgstr "Xóa %s" #: include/utils/class_msgPool.inc:331 ihtml/themes/default/sizelimit.tpl:16 #, php-format msgid "Set" msgstr "Đặt" #: include/utils/class_msgPool.inc:331 #, php-format msgid "Set %s" msgstr "Thiết lập %s" #: include/utils/class_msgPool.inc:337 #, php-format msgid "Edit..." msgstr "Hiệu chỉnh..." #: include/utils/class_msgPool.inc:337 #, php-format msgid "Edit %s..." msgstr "Hiệu chỉnh %s..." #: include/utils/class_msgPool.inc:343 msgid "Back" msgstr "Quay lại" #: include/utils/class_msgPool.inc:363 #, php-format msgid "This account has no valid %s extensions!" msgstr "Tài khoản này không có chức năng mở rộng %s hợp lệ!" #: include/utils/class_msgPool.inc:369 #, php-format msgid "" "This account has %s settings enabled. You can disable them by clicking below." msgstr "" "Tài khoản này đã bật các thiết lập %s lên. Bạn có thể tắt chúng đi bằng việc " "kích vào bên dưới." #: include/utils/class_msgPool.inc:372 include/utils/class_msgPool.inc:379 #, php-format msgid "" "This account has %s settings enabled. To disable them, you'll need to remove " "the %s settings first!" msgstr "" "Tài khoản này đã bật các thiết lập %s lên. Để tắt chúng đi, bạn cần phải xóa " "thiết lập %s trước!" #: include/utils/class_msgPool.inc:388 #, php-format msgid "" "This account has %s settings disabled. You can enable them by clicking below." msgstr "" "Tài khoản này đã tắt các thiết lập %s đi. Bạn có thể bật chúng lên bằng việc " "kích vào bên dưới." #: include/utils/class_msgPool.inc:391 include/utils/class_msgPool.inc:398 #, php-format msgid "" "This account has %s settings disabled. To enable them, you'll need to add " "the %s settings first!" msgstr "" "Tài khoản này đã tắt các thiết lập %s đi. Để bật chúng lên, bạn cần phải " "thêm thiết lập %s trước!" #: include/utils/class_msgPool.inc:406 #, php-format msgid "Add %s settings" msgstr "Thêm thiết lập %s " #: include/utils/class_msgPool.inc:412 #, php-format msgid "Remove %s settings" msgstr "Xóa thiết lập %s" #: include/utils/class_msgPool.inc:418 msgid "Click the 'Edit' button below to change informations in this dialog" msgstr "" "Kích phím 'Hiệu chỉnh' bên dưới để thay đổi thông tin trong hộp thoại này " #: include/utils/class_msgPool.inc:424 msgid "January" msgstr "Tháng Một" #: include/utils/class_msgPool.inc:424 msgid "February" msgstr "Tháng Hai" #: include/utils/class_msgPool.inc:424 msgid "March" msgstr "Tháng Ba" #: include/utils/class_msgPool.inc:424 msgid "April" msgstr "Tháng Tư" #: include/utils/class_msgPool.inc:425 msgid "May" msgstr "Tháng Năm" #: include/utils/class_msgPool.inc:425 msgid "June" msgstr "Tháng Sáu" #: include/utils/class_msgPool.inc:425 msgid "July" msgstr "Tháng Bảy" #: include/utils/class_msgPool.inc:425 msgid "August" msgstr "Tháng Tám" #: include/utils/class_msgPool.inc:425 msgid "September" msgstr "Tháng Chín" #: include/utils/class_msgPool.inc:426 msgid "October" msgstr "Tháng Mười" #: include/utils/class_msgPool.inc:426 msgid "November" msgstr "Tháng Mười Một" #: include/utils/class_msgPool.inc:426 msgid "December" msgstr "Tháng Mười Hai" #: include/utils/class_msgPool.inc:432 msgid "Sunday" msgstr "Chủ nhật" #: include/utils/class_msgPool.inc:432 msgid "Monday" msgstr "Thứ Hai" #: include/utils/class_msgPool.inc:432 msgid "Tuesday" msgstr "Thứ Ba" #: include/utils/class_msgPool.inc:432 msgid "Wednesday" msgstr "Thứ Tư" #: include/utils/class_msgPool.inc:432 msgid "Thursday" msgstr "Thứ Năm" #: include/utils/class_msgPool.inc:432 msgid "Friday" msgstr "Thứ Sáu" #: include/utils/class_msgPool.inc:432 msgid "Saturday" msgstr "Thứ Bảy" #: include/utils/class_msgPool.inc:439 #, fuzzy msgid "MySQL operation failed!" msgstr "Hoạt động LDAP thất bại!" #: include/utils/class_msgPool.inc:447 msgid "read operation" msgstr "Đọc thao tác" #: include/utils/class_msgPool.inc:447 msgid "add operation" msgstr "thêm tao tác" #: include/utils/class_msgPool.inc:447 msgid "modify operation" msgstr "thay đối thao tác" #: include/utils/class_msgPool.inc:448 msgid "delete operation" msgstr "xóa thao tác" #: include/utils/class_msgPool.inc:448 msgid "search operation" msgstr "tìm kiếm thao tác" #: include/utils/class_msgPool.inc:448 msgid "authentication" msgstr "Xác định thẩm quyền" #: include/utils/class_msgPool.inc:451 #, php-format msgid "LDAP %s failed!" msgstr "LDAP %s thất bại!" #: include/utils/class_msgPool.inc:453 msgid "LDAP operation failed!" msgstr "Hoạt động LDAP thất bại!" #: include/utils/class_msgPool.inc:459 include/class_acl.inc:904 #: include/class_acl.inc:911 include/class_acl.inc:918 #: ihtml/themes/default/snapshotdialog.tpl:20 #: ihtml/themes/default/snapshotdialog.tpl:63 #: plugins/admin/departments/class_department.inc:624 msgid "Object" msgstr "đối tượng" #: include/utils/class_msgPool.inc:469 msgid "Upload failed!" msgstr "Tải lên thất bại!" #: include/utils/class_msgPool.inc:472 #, php-format msgid "Upload failed: %s" msgstr "Tải lên thất bại: %s" #: include/utils/class_msgPool.inc:479 msgid "Communication failure with the infrastructure service!" msgstr "Giao tiếp với dịch vụ cơ sở hạ tầng bị thất bại!" #: include/utils/class_msgPool.inc:481 #, php-format msgid "Communication failure with the infrastructure service: %s" msgstr "Giao tiếp với dịch vụ cơ sở hạ tầng bị thất bại: %s" #: include/utils/class_msgPool.inc:488 #, fuzzy msgid "Communication failure with the GOsa-NG service!" msgstr "Giao tiếp với dịch vụ cơ sở hạ tầng bị thất bại!" #: include/utils/class_msgPool.inc:490 #, fuzzy, php-format msgid "Communication failure with the GOsa-NG service: %s" msgstr "Giao tiếp với dịch vụ cơ sở hạ tầng bị thất bại: %s" #: include/utils/class_msgPool.inc:497 include/utils/class_msgPool.inc:500 #, fuzzy, php-format msgid "This %s is still in use by this object: %s" msgstr "'%s' này vẫn còn được sử dụng bởi đối tượng: %s " #: include/utils/class_msgPool.inc:503 #, fuzzy, php-format msgid "This %s is still in use." msgstr "'%s' này vẫn còn được sử dụng." #: include/utils/class_msgPool.inc:505 #, fuzzy, php-format msgid "This %s is still in use by these objects: %s" msgstr "'%s' vẫn còn được sử dụng bởi các đối tượng này: %s" #: include/utils/class_msgPool.inc:511 #, fuzzy, php-format msgid "File %s does not exist!" msgstr "File '%s' không tồn tại!" #: include/utils/class_msgPool.inc:517 #, fuzzy, php-format msgid "Cannot open file %s for reading!" msgstr "Không thể mở file '%s' để đọc!" #: include/utils/class_msgPool.inc:523 #, fuzzy, php-format msgid "Cannot open file %s for writing!" msgstr "Không thể mở file '%s' để viết!" #: include/utils/class_msgPool.inc:529 #, php-format msgid "" "The value for %s is currently unconfigured or invalid, please check your " "configuration file!" msgstr "" #: include/utils/class_msgPool.inc:535 #, fuzzy, php-format msgid "Cannot delete file %s!" msgstr "Không thế xóa file '%s'!" #: include/utils/class_msgPool.inc:541 #, fuzzy, php-format msgid "Cannot create folder %s!" msgstr "Không thể tạo ra folder '%s'!" #: include/utils/class_msgPool.inc:547 #, fuzzy, php-format msgid "Cannot delete folder %s!" msgstr "Không thể xóa folder '%s'!" #: include/utils/class_msgPool.inc:553 #, php-format msgid "Checking for %s support" msgstr "Kiểm tra hỗ trợ %s" #: include/utils/class_msgPool.inc:559 #, php-format msgid "Install and activate the %s PHP module." msgstr "Cài đặt và kích hoạt mô-đun PHP %s." #: include/utils/class_msgPool.inc:565 #, php-format msgid "" "Cannot initialize class %s! Maybe there is a plugin missing in your gosa " "setup?" msgstr "" #: include/utils/class_msgPool.inc:571 msgid "" "The supplied base is not valid and has been reset to its previous value!" msgstr "" #: include/utils/class_timezone.inc:47 #, fuzzy, php-format msgid "The configured timezone %s is not valid!" msgstr "Cấu hình GOsa %s/%s không đọc được. Bãi bỏ." #: include/utils/class_xml.inc:37 include/class_tabs.inc:287 #: include/class_configRegistry.inc:689 include/class_configRegistry.inc:704 #: include/class_configRegistry.inc:719 include/class_configRegistry.inc:734 #: include/class_configRegistry.inc:750 include/class_configRegistry.inc:755 #: include/class_configRegistry.inc:775 include/class_configRegistry.inc:780 #: include/class_configRegistry.inc:797 include/class_configRegistry.inc:802 #: include/class_configRegistry.inc:820 include/class_configRegistry.inc:825 #: include/class_configRegistry.inc:841 include/class_configRegistry.inc:856 #: include/class_configRegistry.inc:871 include/functions.inc:2516 #: include/functions.inc:2520 include/functions.inc:2526 #: include/functions.inc:2550 include/class_jsonRPC.inc:37 #: setup/setup_checks.tpl:27 setup/setup_checks.tpl:68 html/password.php:315 #: plugins/personal/posix/class_posixAccount.inc:692 #: plugins/personal/posix/class_posixAccount.inc:815 #: plugins/admin/groups/class_group.inc:871 #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "Warning" msgstr "Cảnh báo" #: include/utils/class_xml.inc:43 include/functions.inc:482 #: html/password.php:61 html/main.php:170 #: plugins/admin/departments/class_department.inc:439 msgid "Fatal error" msgstr "Lỗi nặng" #: include/utils/class_xml.inc:51 #, fuzzy msgid "XML error" msgstr "Lỗi MySQL" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort ascending" msgstr "" #: include/class_listing.inc:262 include/class_sortableListing.inc:274 msgid "Sort descending" msgstr "" #: include/class_listing.inc:324 msgid "Select all" msgstr "Chọn tất" #: include/class_listing.inc:584 #, fuzzy msgid "created by" msgstr "Tạo " #: include/class_listing.inc:1081 include/class_listing.inc:1083 #: include/class_ItemSelector.inc:247 include/class_baseSelector.inc:188 #: include/class_releaseSelector.inc:214 msgid "Root" msgstr "Gốc" #: include/class_listing.inc:1088 include/class_listing.inc:1090 msgid "Go to preceding level" msgstr "" #: include/class_listing.inc:1096 include/class_listing.inc:1098 msgid "Go to current users level" msgstr "" #: include/class_listing.inc:1103 msgid "Reload list" msgstr "Danh sách reload" #: include/class_listing.inc:1207 #: plugins/addons/propertyEditor/property-list.xml:97 #: plugins/admin/groups/group-list.xml:62 #: plugins/admin/ogroups/ogroup-list.xml:62 plugins/admin/acl/acl-list.xml:65 #: plugins/admin/departments/dep-list.xml:87 #: plugins/admin/users/user-list.xml:78 msgid "Actions" msgstr "Các thao tác" #: include/class_listing.inc:1477 msgid "Copy" msgstr "Copy" #: include/class_listing.inc:1483 msgid "Cut" msgstr "Cut" #: include/class_listing.inc:1491 include/class_listing.inc:1493 #: include/class_CopyPasteHandler.inc:571 msgid "Paste" msgstr "Paste" #: include/class_listing.inc:1516 msgid "Cut this entry" msgstr "Cắt entry này" #: include/class_listing.inc:1525 msgid "Copy this entry" msgstr "Copy entry này" #: include/class_listing.inc:1557 include/class_listing.inc:1559 #, fuzzy msgid "Restore snapshots" msgstr "Phục hồi lại snapshot" #: include/class_listing.inc:1573 msgid "Export list" msgstr "" #: include/class_listing.inc:1607 include/class_SnapShotDialog.inc:142 msgid "Restore snapshot" msgstr "Phục hồi lại snapshot" #: include/class_listing.inc:1615 #, fuzzy msgid "Create new snapshot for this object" msgstr "Tạo ra một snapshot mới từ đối tượng này" #: include/class_userFilter.inc:55 #: ihtml/themes/default/userFilterEditor.tpl:27 #, fuzzy msgid "Parent filter" msgstr "Máy in" #: include/class_userFilter.inc:55 include/class_userFilter.inc:150 #: include/class_SnapShotDialog.inc:55 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:236 #: include/class_userFilterEditor.inc:240 #: ihtml/themes/default/userFilterEditor.tpl:11 setup/setup_migrate.tpl:43 #: setup/setup_migrate.tpl:45 setup/setup_feedback.tpl:16 #: plugins/personal/posix/trustSelect/trust-list.xml:46 #: plugins/personal/posix/groupSelect/group-list.xml:33 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/personal/generic/class_user.inc:1316 #: plugins/personal/generic/class_user.inc:1334 #: plugins/personal/generic/class_user.inc:1376 #: plugins/personal/generic/class_user.inc:1860 #: plugins/addons/propertyEditor/property-list.xml:65 #: plugins/admin/groups/class_group.inc:925 #: plugins/admin/groups/class_group.inc:936 #: plugins/admin/groups/class_group.inc:938 #: plugins/admin/groups/class_group.inc:955 #: plugins/admin/groups/class_group.inc:969 #: plugins/admin/groups/class_group.inc:976 #: plugins/admin/groups/class_group.inc:1076 #: plugins/admin/groups/group-list.xml:41 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:49 #: plugins/admin/ogroups/ogroup-list.xml:41 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:97 #: plugins/admin/ogroups/class_ogroup.inc:157 #: plugins/admin/ogroups/class_ogroup.inc:683 #: plugins/admin/ogroups/class_ogroup.inc:698 #: plugins/admin/ogroups/class_ogroup.inc:702 #: plugins/admin/ogroups/class_ogroup.inc:885 plugins/admin/acl/acl_role.tpl:7 #: plugins/admin/acl/acl-list.xml:49 plugins/admin/acl/paste_role.tpl:4 #: plugins/admin/acl/class_aclRole.inc:741 #: plugins/admin/acl/class_aclRole.inc:753 #: plugins/admin/acl/class_aclRole.inc:763 #: plugins/admin/departments/class_countryGeneric.inc:47 #: plugins/admin/departments/class_countryGeneric.inc:49 #: plugins/admin/departments/class_countryGeneric.inc:54 #: plugins/admin/departments/class_countryGeneric.inc:56 #: plugins/admin/departments/class_countryGeneric.inc:58 #: plugins/admin/departments/class_department.inc:355 #: plugins/admin/departments/class_department.inc:357 #: plugins/admin/departments/class_department.inc:362 #: plugins/admin/departments/class_department.inc:369 #: plugins/admin/departments/class_department.inc:373 #: plugins/admin/departments/class_domain.inc:47 #: plugins/admin/departments/class_domain.inc:49 #: plugins/admin/departments/class_domain.inc:54 #: plugins/admin/departments/class_domain.inc:56 #: plugins/admin/departments/class_domain.inc:58 #: plugins/admin/departments/class_domain.inc:90 #: plugins/admin/departments/class_organizationGeneric.inc:79 #: plugins/admin/departments/class_organizationGeneric.inc:81 #: plugins/admin/departments/class_organizationGeneric.inc:86 #: plugins/admin/departments/class_organizationGeneric.inc:88 #: plugins/admin/departments/class_organizationGeneric.inc:90 #: plugins/admin/departments/class_localityGeneric.inc:48 #: plugins/admin/departments/class_localityGeneric.inc:50 #: plugins/admin/departments/class_localityGeneric.inc:55 #: plugins/admin/departments/class_localityGeneric.inc:57 #: plugins/admin/departments/class_localityGeneric.inc:59 #: plugins/admin/departments/class_dcObject.inc:47 #: plugins/admin/departments/class_dcObject.inc:49 #: plugins/admin/departments/class_dcObject.inc:54 #: plugins/admin/departments/class_dcObject.inc:56 #: plugins/admin/departments/class_dcObject.inc:58 #: plugins/admin/departments/class_dcObject.inc:90 #: plugins/admin/users/class_userManagement.inc:549 #: plugins/admin/users/class_userManagement.inc:597 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Name" msgstr "Tên" #: include/class_userFilter.inc:55 include/class_SnapShotDialog.inc:174 #: include/class_acl.inc:255 include/class_acl.inc:265 #: include/class_acl.inc:277 include/class_userFilterEditor.inc:245 #: ihtml/themes/default/userFilterEditor.tpl:19 #: plugins/personal/posix/trustSelect/trust-list.xml:53 #: plugins/personal/posix/groupSelect/group-list.xml:40 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:45 #: plugins/admin/groups/class_group.inc:1077 #: plugins/admin/groups/generic.tpl:24 plugins/admin/groups/group-list.xml:49 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:49 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:105 #: plugins/admin/ogroups/generic.tpl:15 #: plugins/admin/ogroups/class_ogroup.inc:887 #: plugins/admin/acl/acl_role.tpl:17 plugins/admin/acl/acl-list.xml:57 #: plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/acl/class_aclRole.inc:743 #: plugins/admin/departments/dcObject.tpl:19 #: plugins/admin/departments/country.tpl:19 #: plugins/admin/departments/class_countryGeneric.inc:63 #: plugins/admin/departments/class_countryGeneric.inc:92 #: plugins/admin/departments/dep-list.xml:79 #: plugins/admin/departments/organization.tpl:19 #: plugins/admin/departments/class_department.inc:365 #: plugins/admin/departments/class_department.inc:675 #: plugins/admin/departments/class_domain.inc:63 #: plugins/admin/departments/class_domain.inc:91 #: plugins/admin/departments/class_organizationGeneric.inc:95 #: plugins/admin/departments/class_organizationGeneric.inc:123 #: plugins/admin/departments/generic.tpl:19 #: plugins/admin/departments/locality.tpl:19 #: plugins/admin/departments/class_localityGeneric.inc:64 #: plugins/admin/departments/class_localityGeneric.inc:92 #: plugins/admin/departments/class_dcObject.inc:63 #: plugins/admin/departments/class_dcObject.inc:91 #: plugins/admin/departments/domain.tpl:19 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 #: plugins/generic/references/class_reference.inc:57 #: plugins/generic/references/class_reference.inc:63 #: plugins/generic/references/class_reference.inc:69 #: plugins/generic/references/class_reference.inc:75 #: plugins/generic/references/class_reference.inc:81 msgid "Description" msgstr "Mô tả" #: include/class_userFilter.inc:55 plugins/admin/acl/class_aclRole.inc:166 #: plugins/admin/departments/organization.tpl:27 #: plugins/admin/departments/class_department.inc:676 #: plugins/admin/departments/class_organizationGeneric.inc:124 #: plugins/admin/departments/generic.tpl:27 msgid "Category" msgstr "Các danh mục" #: include/class_userFilter.inc:55 ihtml/themes/default/acl.tpl:15 #: ihtml/themes/default/acl.tpl:16 #, fuzzy msgid "Options" msgstr "Các thao tác" #: include/class_userFilter.inc:275 include/functions.inc:511 #: include/functions.inc:546 include/functions.inc:554 #: include/functions.inc:600 include/functions.inc:879 #: include/functions.inc:928 include/functions.inc:985 #: include/functions.inc:1035 include/functions.inc:3304 #: include/class_ldap.inc:870 include/class_ldap.inc:1328 #: include/class_config.inc:367 include/class_acl.inc:1396 #: include/class_acl.inc:1492 include/class_SnapshotHandler.inc:123 #: include/class_SnapshotHandler.inc:280 include/class_SnapshotHandler.inc:329 #: include/class_SnapshotHandler.inc:333 include/class_SnapshotHandler.inc:346 #: include/class_SnapshotHandler.inc:380 include/class_SnapshotHandler.inc:435 #: include/class_SnapshotHandler.inc:500 include/class_SnapshotHandler.inc:515 #: setup/class_setupStep_Migrate.inc:461 setup/class_setupStep_Migrate.inc:814 #: html/index.php:271 plugins/personal/posix/class_posixAccount.inc:570 #: plugins/personal/posix/class_posixAccount.inc:832 #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:253 #: plugins/personal/generic/class_user.inc:730 #: plugins/personal/generic/class_user.inc:1099 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:204 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:269 #: plugins/admin/groups/class_group.inc:619 #: plugins/admin/groups/class_group.inc:895 #: plugins/admin/ogroups/class_ogroup.inc:782 #: plugins/admin/ogroups/class_ogroup.inc:799 #: plugins/admin/acl/class_aclRole.inc:602 #: plugins/admin/acl/class_aclRole.inc:642 #: plugins/admin/acl/class_aclRole.inc:656 #: plugins/admin/departments/class_department.inc:285 #: plugins/admin/departments/class_department.inc:482 #: plugins/admin/departments/class_department.inc:759 #: plugins/admin/departments/class_department.inc:790 #: plugins/generic/references/class_reference.inc:97 msgid "LDAP error" msgstr "Lỗi LDAP" #: include/class_log.inc:87 #, php-format msgid "Logging failed: %s" msgstr "Đăng nhập thất bại: %s" #: include/class_log.inc:102 #, fuzzy, php-format msgid "Invalid option %s specified!" msgstr "Lựa chọn '%s' không hợp lệ đã được chỉ định!" #: include/class_log.inc:106 #, fuzzy msgid "Specified 'objectType' is empty or invalid!" msgstr "ObjecType được chỉ định đang rỗng hặc không hợp lệ!" #: include/class_multi_plug.inc:362 #, fuzzy msgid "You are currently editing multiple entries." msgstr "Bạn hiện đang hiệu chỉnh rất nhiều entry." #: include/class_multi_plug.inc:394 #, fuzzy msgid "Reset password" msgstr "Đặt mật khẩu" #: include/class_multi_plug.inc:394 #, fuzzy msgid "The user password has been reset. Please set a new password!" msgstr "" "Mật khẩu người dùng đã được xác lập lại, hãy thiết lập một giá trị mật khẩu " "mới!" #: include/class_tabs.inc:72 #, php-format msgid "No plugin definition for %s found: please check the configuration file!" msgstr "" #: include/class_tabs.inc:287 #, fuzzy, php-format msgid "Delete process has been canceled by plugin %s: %s" msgstr "Qúa trình xóa đã bị hủy bỏ bởi plugin '%s': %s" #: include/class_tabs.inc:420 include/class_acl.inc:1428 #: include/class_acl.inc:1429 include/class_acl.inc:1435 #: plugins/admin/acl/acl-list.xml:15 plugins/admin/acl/tabs_acl.inc:28 #: plugins/admin/acl/class_aclRole.inc:770 msgid "ACL" msgstr "ACL" #: include/class_tabs.inc:425 msgid "References" msgstr "Các tham chiếu" #: include/functions_helpviewer.inc:45 #, fuzzy, php-format msgid "XML error in guide.xml: %s at line %s" msgstr "Lỗi XML trong thư mục guide.xml : %s ở dòng %d" #: include/functions_helpviewer.inc:88 #, fuzzy msgid "No help available for this plug-in." msgstr "Không có sự trợ giúp nào cho plugin này." #: include/functions_helpviewer.inc:97 html/helpviewer.php:193 msgid "previous" msgstr "Trước" #: include/functions_helpviewer.inc:101 html/helpviewer.php:197 msgid "next" msgstr "Tiếp theo" #: include/functions_helpviewer.inc:388 #, php-format msgid "%s results for your search with the keyword %s" msgstr "%s kết quả cho việc tìm kiếm của bạn với từ khóa %s" #: include/functions_helpviewer.inc:461 #, php-format msgid "%s%% hit rate in file %s" msgstr "%s%% tỷ lệ hit trong file %s" #: include/class_msg_dialog.inc:124 msgid "Please fix the above error and reload the page." msgstr "Xin hãy sửa lỗi trên và reload trang trên." #: include/class_plugin.inc:581 msgid "" "The current object has been altered while beeing edited. If you save this " "entry, changes that have been made by others will be discarded!" msgstr "" #: include/class_plugin.inc:1411 #, php-format msgid "Changing ACL DN from %s to %s" msgstr "" #: include/class_SnapShotDialog.inc:55 #, fuzzy msgid "Date" msgstr "Paste" #: include/class_SnapShotDialog.inc:94 #, fuzzy, php-format msgid "You are about to delete the snapshot %s." msgstr "Bạn chuẩn bị xóa chế độ snapshot '%s'." #: include/class_SnapShotDialog.inc:143 #, fuzzy msgid "Delete snapshot" msgstr "Tạo ra snapshot" #: include/class_SnapShotDialog.inc:144 include/class_SnapShotDialog.inc:162 msgid "Y-m-d, H:i:s" msgstr "Y-m-d, H:i:s (Năm-tháng-ngày)" #: include/class_pathNavigator.inc:86 #, fuzzy msgid "Welcome to GOsa" msgstr "Chào mừng bạn đến với bộ cài đặt wizard GOsa" #: include/password-methods/class_password-methods.inc:339 msgid "Cannot find a suitable password method for the current hash!" msgstr "" "Không thể tìm thấy một phương pháp mật khẩu phù hợp cho hàm băm hiện tại!" #: include/class_sortableListing.inc:234 msgid "Sortable list" msgstr "" #: include/class_sortableListing.inc:239 msgid "Edit this entry" msgstr "Hiệu chỉnh entry này" #: include/class_sortableListing.inc:244 msgid "Delete this entry" msgstr "Xóa bỏ entry" #: include/class_configRegistry.inc:194 #: plugins/personal/generic/class_user.inc:273 #: plugins/personal/generic/class_user.inc:1898 #, fuzzy msgid "unknown" msgstr "Không rõ" #: include/class_configRegistry.inc:197 #, php-format msgid "%s has version %s but %s is required!" msgstr "" #: include/class_configRegistry.inc:240 setup/class_setupStep_Schema.inc:96 msgid "The following object classes are missing:" msgstr "" #: include/class_configRegistry.inc:247 setup/class_setupStep_Schema.inc:99 #, fuzzy msgid "The following object classes are outdated:" msgstr "Tham chiếu sau sẽ được cập nhật" #: include/class_configRegistry.inc:253 msgid "" "Plugins that require one or more of the object classes above will be " "disabled until the object classes get updated." msgstr "" #: include/class_configRegistry.inc:255 #, fuzzy msgid "Schema validation error" msgstr "Lỗi xác định thẩm quyền" #: include/class_configRegistry.inc:690 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a bool value!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/class_configRegistry.inc:705 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be a string!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/class_configRegistry.inc:720 #, fuzzy, php-format msgid "The value %s specified for %s:%s needs to be numeric!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/class_configRegistry.inc:735 #, fuzzy, php-format msgid "The path %s specified for %s:%s is invalid!" msgstr "Lệnh '%s' cho plugin '%s' không hợp lệ!" #: include/class_configRegistry.inc:751 include/class_configRegistry.inc:798 #, fuzzy, php-format msgid "The folder %s specified for %s:%s does not exists!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/class_configRegistry.inc:756 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not readable!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/class_configRegistry.inc:776 include/class_configRegistry.inc:781 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not writeable!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/class_configRegistry.inc:803 #, fuzzy, php-format msgid "The folder %s specified for %s:%s is not writeable!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/class_configRegistry.inc:821 #, fuzzy, php-format msgid "The file %s specified for %s:%s does not exists!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/class_configRegistry.inc:826 #, fuzzy, php-format msgid "The file %s specified for %s:%s is not readable!" msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #: include/class_configRegistry.inc:842 #, fuzzy, php-format msgid "The command %s specified for %s:%s is invalid!" msgstr "Lệnh '%s' (%s) cho plugin %s không hợp lệ!" #: include/class_configRegistry.inc:857 #, fuzzy, php-format msgid "The DN %s specified for %s:%s is invalid!" msgstr "Lệnh '%s' cho plugin '%s' không hợp lệ!" #: include/class_configRegistry.inc:872 #, fuzzy, php-format msgid "The RDN %s specified for %s:%s is invalid!" msgstr "Lệnh '%s' cho plugin '%s' không hợp lệ!" #: include/php_setup.inc:114 msgid "Generating this page caused the PHP interpreter to raise some errors!" msgstr "Tạo ra trang này khiến cho bộ dịch PHP sinh ra một số lỗi!" #: include/php_setup.inc:117 #, fuzzy msgid "Send bug report" msgstr "Gửi thông báo lỗi" #: include/php_setup.inc:121 msgid "Toggle details" msgstr "" #: include/php_setup.inc:130 msgid "PHP error" msgstr "Lỗi PHP" #: include/php_setup.inc:149 msgid "class" msgstr "lớp" #: include/php_setup.inc:155 msgid "function" msgstr "chức năng" #: include/php_setup.inc:160 msgid "static" msgstr "tĩnh" #: include/php_setup.inc:164 msgid "method" msgstr "phương pháp" #: include/php_setup.inc:197 #, fuzzy msgid "Traceback" msgstr "Dò theo" #: include/php_setup.inc:198 msgid "File" msgstr "File" #: include/php_setup.inc:198 msgid "Line" msgstr "Dòng" #: include/php_setup.inc:198 include/class_acl.inc:293 #: plugins/admin/acl/class_aclRole.inc:182 msgid "Type" msgstr "Loại" #: include/php_setup.inc:199 msgid "Arguments" msgstr "Tranh luận" #: include/class_certificate.inc:73 msgid "Certificate is empty!" msgstr "Giấy chứng nhận trống!" #: include/class_certificate.inc:100 #, fuzzy msgid "Cannot load certificate: only PEM and DER are supported!" msgstr "Không thể tải giấy chứng nhận - chỉ có PEM/DER là được hỗ trợ!" #: include/class_certificate.inc:115 msgid "Cannot extract information for non PEM certificates!" msgstr "" "Không thể triết xuất thông tin cho những giấy chứng nhận không phải là PEM!" #: include/class_certificate.inc:219 msgid "No valid certificate loaded!" msgstr "Không tải được giấy chứng nhận có hiệu lực nào!" #: include/class_session.inc:76 include/class_session.inc:101 #: include/class_session.inc:127 #, fuzzy msgid "Requested channel does not exist!" msgstr "" "Tên người dùng/UID không phải là duy nhất trong cây LDAP. Xin hãy liên Lạc " "với Admin của bạn." #: include/functions.inc:151 #, fuzzy, php-format msgid "Fatal error: no class locations defined - please run %s to fix this" msgstr "" "Lỗi nghiêm trọng: không có vị trí lớp nào được xác định - xin hãy chạy '%s' " "để sửa lỗi này" #: include/functions.inc:158 #, fuzzy, php-format msgid "Fatal error: cannot instantiate class %s - try running %s to fix this" msgstr "" "Lỗi nghiêm trọng: không thể tạo ra lớp '%s' - hãy thử chạy '%s' để sửa lỗi " "này" #: include/functions.inc:483 #, fuzzy, php-format msgid "Error while connecting to LDAP: %s" msgstr "" "LỖI NGHIÊM TRỌNG: Lỗi khi đang kết nối với LDAP. Server thông báo '%s'." #: include/functions.inc:554 include/functions.inc:640 #, fuzzy msgid "User ID is not unique!" msgstr "Tên người dùng/ UID không phải là duy nhất trong cây LDAP!" #: include/functions.inc:854 include/functions.inc:972 msgid "Error while locking entry!" msgstr "" #: include/functions.inc:864 #, fuzzy, php-format msgid "Cannot store lock information in LDAP!" msgstr "Không thể tìm ra thông tin về lược đồ LDAP đã được cài đặt!" #: include/functions.inc:864 #, fuzzy, php-format msgid "Error: %s" msgstr "Lỗi" #: include/functions.inc:1294 #, fuzzy, php-format msgid "The current size limit of %d entries is exceeded!" msgstr "Đã vượt quá giới hạn kích cỡ của các entry %d!" #: include/functions.inc:1296 #, php-format msgid "Set the size limit to %s" msgstr "" #: include/functions.inc:1308 plugins/personal/generic/generic.tpl:218 msgid "Configure" msgstr "Cấu hình" #: include/functions.inc:1313 #, fuzzy msgid "list is incomplete" msgstr "chưa hoàn thành" #: include/functions.inc:1663 msgid "Continue anyway" msgstr "Cứ tiếp tục" #: include/functions.inc:1665 msgid "Edit anyway" msgstr "Cứ hiệu chỉnh" #: include/functions.inc:1668 msgid "These entries are currently locked:" msgstr "" #: include/functions.inc:1909 msgid "Entries per page" msgstr "các entry cho mỗi trang" #: include/functions.inc:2087 #, fuzzy, php-format msgid "GOsa %s" msgstr "GOsa" #: include/functions.inc:2094 #, fuzzy, php-format msgid "GOsa %s snapshot (Rev %s)" msgstr "snapshot phát triển GOsa (Rev %s)" #: include/functions.inc:2099 #, php-format msgid "GOsa development snapshot (Rev %s)" msgstr "snapshot phát triển GOsa (Rev %s)" #: include/functions.inc:2195 #, fuzzy, php-format msgid "File %s cannot be deleted!" msgstr "File '%s' không thể bị xóa." #: include/functions.inc:2225 include/functions.inc:2245 #, fuzzy msgid "Cannot write revision file!" msgstr "Không thể viết lên revision file!" #: include/functions.inc:2516 include/functions.inc:2520 #: include/functions.inc:2526 #, fuzzy msgid "'baseIdHook' is not available. Using default base!" msgstr "'base_hook' không có. Hãy sử dụng cơ sở mặc định!" #: include/functions.inc:2550 #, fuzzy msgid "" "Cannot read schema information from LDAP. Schema validation is not possible!" msgstr "" "Không thể dùng thông tin lược đồ từ server. Không thể kiểm tra giản đồ!" #: include/functions.inc:2576 msgid "This class is used to make users appear in GOsa." msgstr "" #: include/functions.inc:2583 #, fuzzy msgid "" "This class is used to lock entries in order to prevent multiple edits at a " "time." msgstr "" "Đã từng khóa các entry hiện đang được hiệu chỉnh nhằm tránh các thay đổi " "khác nhau tại cùng một thời điểm." #: include/functions.inc:2628 #, fuzzy, php-format msgid "Required object class %s is missing!" msgstr "Lớp đối tượng '%s' được yêu cầu mất tích!" #: include/functions.inc:2631 #, fuzzy, php-format msgid "Optional object class %s is missing!" msgstr "Lớp đối tượng lựa chọn '%s' mất tích!" #: include/functions.inc:2636 #, fuzzy, php-format msgid "Wrong version of required object class %s (!=%s) detected!" msgstr "Phiên bản không phù hợp với lớp đối tượng '%s' được yêu cầu (!=%s)!" #: include/functions.inc:2639 #, fuzzy, php-format msgid "Class available" msgstr "Đã có lớp" #: include/functions.inc:2661 msgid "" "RFC2307bis schema is enabled, but the current LDAP configuration does not " "support it!" msgstr "" #: include/functions.inc:2662 #, fuzzy msgid "" "To use RFC2307bis groups, the objectClass 'posixGroup' must be AUXILIARY." msgstr "" "Để có thể sử dụng được nhóm conform rfc2307bis, objectClass " "'posixGroup' (nhóm posix) phải được hỗ trợ " #: include/functions.inc:2666 msgid "" "RFC2307bis schema is disabled, but the current LDAP configuration supports " "it!" msgstr "" #: include/functions.inc:2667 #, fuzzy msgid "To correct this, the objectClass 'posixGroup' must be STRUCTURAL." msgstr "ObjectClass (Lớp đối tượng) 'posixGroup' phải CÓ CẤU TRÚC" #: include/functions.inc:2692 msgid "German" msgstr "Tiếng Đức" #: include/functions.inc:2693 msgid "French" msgstr "Tiếng Pháp" #: include/functions.inc:2694 msgid "Italian" msgstr "Tiếng Ý" #: include/functions.inc:2695 msgid "Spanish" msgstr "Tiếng Tây Ban Nha" #: include/functions.inc:2696 msgid "English" msgstr "Tiếng Anh" #: include/functions.inc:2697 msgid "Dutch" msgstr "Tiếng Hà Lan" #: include/functions.inc:2698 msgid "Polish" msgstr "Tiếng Phần Lan" #: include/functions.inc:2699 msgid "Brazilian Portuguese" msgstr "" #: include/functions.inc:2701 msgid "Chinese" msgstr "Tiếng Trung Quốc" #: include/functions.inc:2702 msgid "Vietnamese" msgstr "Tiếng Việt" #: include/functions.inc:2703 msgid "Russian" msgstr "Tiếng Nga" #: include/functions.inc:2896 #, fuzzy msgid "Cannot detect password hash!" msgstr "Không thể sinh ra hàm băm samba!" #: include/functions.inc:2911 include/functions.inc:3085 #, fuzzy msgid "Cannot generate SAMBA hash!" msgstr "Không thể sinh ra hàm băm samba!" #: include/functions.inc:2942 include/functions.inc:3017 #, php-format msgid "Pre-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:2973 #, fuzzy msgid "Password change failed!" msgstr "Thay đổi mật khẩu" #: include/functions.inc:2981 #, php-format msgid "Post-event hook reported a problem: %s. Password change canceled!" msgstr "" #: include/functions.inc:3100 #, php-format msgid "Generating SAMBA hash by running %s failed: check %s!" msgstr "" #: include/functions.inc:3378 include/functions.inc:3392 #: include/functions.inc:3430 include/functions.inc:3442 #: include/functions.inc:3446 include/functions.inc:3461 #: include/functions.inc:3470 #, fuzzy msgid "Cannot allocate free ID:" msgstr "Không thể phân phối một ID miễn phí!" #: include/functions.inc:3378 msgid "unknown idAllocation method!" msgstr "" #: include/functions.inc:3392 #, php-format msgid "%sPoolMin >= %sPoolMax!" msgstr "" #: include/functions.inc:3422 #, fuzzy msgid "Cannot create sambaUnixIdPool entry!" msgstr "Không thể tạo ra folder '%s'!" #: include/functions.inc:3430 msgid "sambaUnixIdPool is not unique!" msgstr "" #: include/functions.inc:3442 include/functions.inc:3446 #, fuzzy msgid "no ID available!" msgstr "Không có mẫu nào!" #: include/functions.inc:3470 msgid "maximum number of tries exceeded!" msgstr "" #: include/functions.inc:3530 #, fuzzy msgid "Cannot allocate free ID!" msgstr "Không thể phân phối một ID miễn phí!" #: include/class_filter.inc:158 include/class_filter.inc:228 #: ihtml/themes/default/help.tpl:21 setup/setup_ldap.tpl:15 msgid "Search" msgstr "Tìm kiếm" #: include/class_filter.inc:226 #, fuzzy msgid "Search filter" msgstr "Máy in" #: include/class_filter.inc:444 msgid "Search in subtrees" msgstr "Tìm kiếm tại các cây con" #: include/class_filter.inc:449 #, fuzzy msgid "Edit filters" msgstr "Hiệu chỉnh các giấy phép" #: include/class_ldap.inc:328 include/class_ldap.inc:365 msgid "Performance warning" msgstr "Cảnh báo khả năng hoạt động" #: include/class_ldap.inc:328 include/class_ldap.inc:365 #, fuzzy, php-format msgid "LDAP performance is poor: last query took %.2fs!" msgstr "" "Khả năng hoạt động của LDAP rất thấp: truy vấn lần cuối mất khoảng %.2fs!" #: include/class_ldap.inc:807 #, fuzzy, php-format msgid "Cannot automatically create subtrees with RDN %s: no object class found" msgstr "" "Không thể tự động tạo ra cây con với RDN '%s': không có lớp đối tượng nào " "được tìm thấy!" #: include/class_ldap.inc:858 #, fuzzy, php-format msgid "Cannot automatically create subtrees with RDN %s: not supported" msgstr "Không thể tự động tạo ra cây con với RDN '%s': không được hỗ trợ " #: include/class_ldap.inc:945 #, fuzzy, php-format msgid "while operating on %s using LDAP server %s" msgstr "Trong khi chạy trên '%s' sử dụng LDAP server '%s'" #: include/class_ldap.inc:947 #, php-format msgid "while operating on LDAP server %s" msgstr "Trong khi chạy trên LDAP server %s" #: include/class_ldap.inc:1000 #, php-format msgid "Command line programm %s is missing!" msgstr "" #: include/class_ldap.inc:1161 #, fuzzy, php-format msgid "" "Invalid DN %s: block to be imported should start with 'dn: ...' in line %s" msgstr "" "Đây không phải là một DN hợp lệ: '%s'. Khóa để chặn việc nạp thêm phải được " "bắt đầu với 'dn:...' trong dòng %s " #: include/class_ldap.inc:1190 #, fuzzy, php-format msgid "Error while importing DN %s: please check LDIF from line %s on!" msgstr "" "Lỗi trong khi đang nạp thêm dn:'%s', xin hãy kiểm tra lại LDIF của bạn từ " "dòng %s trở đi!" #: include/class_core.inc:113 include/class_core.inc:119 #: plugins/generic/references/class_aclResolver.inc:303 msgid "All" msgstr "" #: include/class_core.inc:114 #, fuzzy msgid "All objects" msgstr "Dịch chuyển đối tượng" #: include/class_core.inc:132 #, fuzzy msgid "Traditional" msgstr "Thiết bị cuối " #: include/class_core.inc:132 msgid "Use samba pool" msgstr "" #: include/class_core.inc:164 include/class_core.inc:167 #, fuzzy msgid "hours" msgstr "Người dùng Proxy" #: include/class_core.inc:184 #, fuzzy msgid "None" msgstr "không có" #: include/class_core.inc:188 setup/class_setupStep_Language.inc:47 msgid "Automatic" msgstr "Tự động" #: include/class_core.inc:200 #, fuzzy msgid "User value" msgstr "Tên người dùng" #: include/class_core.inc:209 #, fuzzy msgid "Core" msgstr "Đóng" #: include/class_core.inc:210 #, fuzzy msgid "GOsa core plugin" msgstr "thiết lập lõi của GOsa" #: include/class_core.inc:238 msgid "" "Enables htaccess instead of LDAP authentication. This can be used to enable " "other authentication mechanisms like Kerberos for the GOsa login." msgstr "" #: include/class_core.inc:248 msgid "Enables the usage statistics module." msgstr "" #: include/class_core.inc:258 msgid "Database file to be used by the usage statistics module." msgstr "" #: include/class_core.inc:268 msgid "" "Enables event logging in GOsa. Setting it to 'On' make GOsa log every action " "a user performs via syslog. If you use this in combination with rsyslog and " "configure it to MySQL logging, you can browse all events in GOsa." msgstr "" #: include/class_core.inc:279 msgid "" "Enables a status bar on the bottom of lists displaying a summary of type and " "number of elements in the list." msgstr "" #: include/class_core.inc:289 msgid "Specify the minimum length for newly entered passwords." msgstr "" #: include/class_core.inc:299 msgid "" "Specify the minimum number of characters that have to differ between old and " "newly entered passwords." msgstr "" #: include/class_core.inc:309 msgid "" "Command to generate password proposals. If a command has been specified, the " "user can decide whether to use an automatic password or a manually specified " "one." msgstr "" #: include/class_core.inc:319 msgid "" "Enable display of PHP errors on the top of the page. Disable this feature in " "production environments to avoid the exposure of sensitive data." msgstr "" #: include/class_core.inc:319 #, fuzzy, php-format msgid "Related option" msgstr "xóa thao tác" #: include/class_core.inc:329 msgid "" "Show messages that may assist plugin development. Be aware that this option " "may produce some ACL related false error messages!" msgstr "" #: include/class_core.inc:340 msgid "" "Enable LDAP schema verification during login. The recommended setting is " "'On' because it enables efficient methods to create missing subtrees in the " "LDAP." msgstr "" #: include/class_core.inc:350 msgid "Enable copy and paste for most objects managed by GOsa." msgstr "" #: include/class_core.inc:360 msgid "Enable PHP security checks for disabled register_global settings." msgstr "" #: include/class_core.inc:370 msgid "Enable automatic redirection to HTTPS based administration." msgstr "" #: include/class_core.inc:380 msgid "Enable logging of detailed information of LDAP operations." msgstr "" #: include/class_core.inc:390 #, fuzzy msgid "Enable LDAP referral chasing." msgstr "Bật chức năng mở rộng DHCP" #: include/class_core.inc:400 msgid "" "Specify LDAP element filter limit. If the limit is not 0, GOsa speeds up " "group queries by putting several queries into a single query. This is known " "to produce problems on some LDAP servers (i.e. Sun DS) and needs to be " "lowered or disabled." msgstr "" #: include/class_core.inc:410 msgid "" "Specify the maximum number of entries GOsa will request from an LDAP server. " "A warning is displayed if this limit is exceeded." msgstr "" #: include/class_core.inc:420 msgid "Disable checks for LDAP size limits." msgstr "" #: include/class_core.inc:430 #, fuzzy msgid "Enable warnings for non encrypted connections." msgstr "Thực thi việc mã hóa các kết nối" #: include/class_core.inc:440 msgid "Enable compression for PPD files." msgstr "" #: include/class_core.inc:451 msgid "" "DN of user with ACL checks disabled. This should only be used to restore " "lost administrative ACLs." msgstr "" #: include/class_core.inc:462 msgid "Storage path for PPD files." msgstr "" #: include/class_core.inc:472 msgid "" "Number of seconds a LDAP query is allowed to take until GOsa aborts the " "request." msgstr "" #: include/class_core.inc:482 msgid "Enables storing of user filters in browser cookies." msgstr "" #: include/class_core.inc:492 msgid "Enables sending of compressed web page content." msgstr "" #: include/class_core.inc:502 msgid "" "Allows to modify uid-proposals when creating a new user from a user-template." msgstr "" #: include/class_core.inc:513 msgid "LDAP attribute which is used to detect changes." msgstr "" #: include/class_core.inc:524 msgid "" "ISO language code which is used to override the automatic language detection." msgstr "" #: include/class_core.inc:535 msgid "CSS and template theme to be used." msgstr "" #: include/class_core.inc:545 msgid "" "Number of seconds after an inactive session expires. This may be overridden " "by some systems php.ini/crontab mechanism." msgstr "" #: include/class_core.inc:555 #, fuzzy msgid "Template engine compile directory." msgstr "Thư mục soạn thảo Smarty" #: include/class_core.inc:565 #, php-format msgid "" "Logical AND of the integer values below that controls the debug output on " "every page load: %s" msgstr "" #: include/class_core.inc:586 msgid "" "Command to create Samba NT/LM hashes. Required for password synchronization " "if you don't use supplementary services." msgstr "" #: include/class_core.inc:597 msgid "Default hash to be used for newly created user passwords." msgstr "" #: include/class_core.inc:606 msgid "" "Enable checking for the presence of problematic unicode characters in " "passwords." msgstr "" #: include/class_core.inc:617 msgid "" "Specify whether 'cn' or 'uid' style user DNs are generated. For more " "sophisticated control use the 'accountRDN' setting." msgstr "" #: include/class_core.inc:627 msgid "Location component for user storage inside of departments." msgstr "" #: include/class_core.inc:637 msgid "Location component for group storage inside of departments." msgstr "" #: include/class_core.inc:647 msgid "" "Count base for group IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:657 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'nextIdHook' " "setting." msgstr "" #: include/class_core.inc:667 msgid "" "Lowest assignable group ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:677 msgid "" "Highest assignable group ID for use with the idAllocationMethod set to " "'pool'." msgstr "" #: include/class_core.inc:687 msgid "" "Lowest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:697 msgid "" "Highest assignable user ID for use with the idAllocationMethod set to 'pool'." msgstr "" #: include/class_core.inc:707 msgid "" "Count base for user IDs. For dynamic ID assignment use the 'baseIdHook' " "setting." msgstr "" #: include/class_core.inc:717 #, fuzzy msgid "Connection URL for use with the gosa-ng service." msgstr "Giao tiếp với dịch vụ cơ sở hạ tầng bị thất bại!" #: include/class_core.inc:727 msgid "User name used to connect to the 'gosaRpcServer'." msgstr "" #: include/class_core.inc:737 msgid "Password used to connect to the 'gosaRpcServer'." msgstr "" #: include/class_core.inc:747 #, fuzzy msgid "Connection URI for use with the gosa-si service (obsolete)." msgstr "Giao tiếp với dịch vụ cơ sở hạ tầng bị thất bại: %s" #: include/class_core.inc:757 msgid "Number of seconds after a gosa-si connection is considered 'dead'." msgstr "" #: include/class_core.inc:768 msgid "User attribute which is used for log in." msgstr "" #: include/class_core.inc:779 #, fuzzy msgid "Local time zone." msgstr "Vị trí" #: include/class_core.inc:789 msgid "" "Enable tagging of administrative units. This can be used in conjunction with " "ACLs (obsolete)." msgstr "" #: include/class_core.inc:799 msgid "Enable the use of {sasl} instead of {kerberos} for user realms." msgstr "" #: include/class_core.inc:809 msgid "" "Enable RFC 2307bis style groups. This combines the use of 'member' and " "'memberUid' attributes." msgstr "" #: include/class_core.inc:819 msgid "" "Adjusts the user DN generation to include the users personal title (only in " "conjunction with accountPrimaryAttribute)." msgstr "" #: include/class_core.inc:829 msgid "Script to be called for finding the next free id for groups or users." msgstr "" #: include/class_core.inc:838 msgid "" "Descriptive string for the automatic ID generator. Please read the FAQ file " "for more information." msgstr "" #: include/class_core.inc:848 msgid "Enable strict checking for user IDs and group names." msgstr "" #: include/class_core.inc:858 msgid "" "Lowest assignable user or group ID. Only active if idAllocationMethod is set " "to 'traditional'." msgstr "" #: include/class_core.inc:869 msgid "Attribute to be used for primary mail addresses." msgstr "" #: include/class_core.inc:879 msgid "Namespace used for shared folders." msgstr "" #: include/class_core.inc:889 msgid "" "Namespace rule to create user folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:899 msgid "" "Namespace rule to create folders. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:909 msgid "Seconds after an IMAP connection is considered dead." msgstr "" #: include/class_core.inc:920 msgid "Class name of the mail method to be used." msgstr "" #: include/class_core.inc:930 msgid "" "Enable slashes instead of dots as a name space separator for Cyrus IMAP." msgstr "" #: include/class_core.inc:940 msgid "" "Directory to store vacation templates. Please read the FAQ file for more " "information." msgstr "" #: include/class_core.inc:950 #, fuzzy msgid "Enable TLS for LDAP connections." msgstr "Kết nối LDAP" #: include/class_core.inc:960 msgid "Enable IVBB used by german authorities." msgstr "" #: include/class_core.inc:970 msgid "" "Maintain sambaIdmapEntry objects to improve performance on some Samba " "versions." msgstr "" #: include/class_core.inc:980 msgid "Enable checks to determine whether an account is expired or not." msgstr "" #: include/class_core.inc:990 msgid "" "String containing the SID for Samba setups without the Domain object in LDAP." msgstr "" #: include/class_core.inc:1000 msgid "" "String containing the RID base for Samba setups without the Domain object in " "LDAP." msgstr "" #: include/class_core.inc:1010 #, fuzzy msgid "Enable manual object snapshots." msgstr "Tạo ra snapshot đối tượng" #: include/class_core.inc:1020 msgid "Base DN for snapshot storage." msgstr "" #: include/class_core.inc:1030 #, fuzzy msgid "DN of the snapshot administrator." msgstr "Admin miền" #: include/class_core.inc:1040 msgid "Password of the snapshot administrator." msgstr "" #: include/class_core.inc:1051 msgid "" "Method for user and group ID generation. Note: only the 'traditional' method " "is safe due to PHP limitations." msgstr "" #: include/class_core.inc:1060 msgid "URI of server to be used for snapshots." msgstr "" #: include/class_core.inc:1069 msgid "Enable transliteration of cyrillic characters for UID generation." msgstr "" #: include/class_config.inc:168 #, php-format msgid "XML error in gosa.conf: %s at line %d" msgstr "Lỗi XML trong gosa.conf: %s tại dòng %d" #: include/class_config.inc:367 msgid "Cannot bind to LDAP!" msgstr "" #: include/class_config.inc:713 #, fuzzy msgid "sambaSID and/or sambaRidBase missing in the configuration!" msgstr "SID và/hoặc RIDBASE đang bị mất trong cấu hình này!" #: include/class_config.inc:1132 msgid "Configuration" msgstr "Cấu hình" #: include/class_config.inc:1132 #, fuzzy msgid "" "The configuration file you are using is outdated. Please move the GOsa " "configuration file away to run the GOsa setup again." msgstr "" "File cấu hình bạn đang sử dụng hình như đã lỗi thời. Hãy chuyển file cấu " "hình của GOsa ra chỗ khác để chạy việc cài đặt GOsa lần nữa." #: include/class_config.inc:1174 include/class_config.inc:1205 #, fuzzy, php-format msgid "" "The snapshot functionality is enabled, but the required variable %s is not " "set." msgstr "" "Chức năng Snapshot đã được bật, nhưng biến số được yêu cầu: '%s' vẫn chưa " "được thiết lập." #: include/class_config.inc:1187 #, fuzzy, php-format msgid "" "The snapshot functionality is enabled, but the required compression module " "is missing. Please install %s." msgstr "" "Chức năng Snapshot đã được bật, nhưng biến số được yêu cầu: '%s' vẫn chưa " "được thiết lập." #: include/exporter/class_PDF.inc:24 #, fuzzy msgid "Page" msgstr "Máy nhắn tin" #: include/exporter/class_cvsExporter.inc:48 msgid "CSV" msgstr "" #: include/exporter/class_pdfExporter.inc:18 msgid "No PDF export possible: there is no FPDF library installed." msgstr "" #: include/exporter/class_pdfExporter.inc:145 msgid "PDF" msgstr "" #: include/class_jsonRPC.inc:38 #, fuzzy, php-format msgid "The RPC connection (%s) specified for %s:%s is invalid: %s" msgstr "Lệnh '%s' cho plugin '%s' không hợp lệ!" #: include/class_jsonRPC.inc:333 #, fuzzy, php-format msgid "Unknown HTTP status code %s!" msgstr "dạng ACL '%s' không được biết đến!" #: include/class_ItemSelector.inc:299 include/class_baseSelector.inc:235 #: include/class_releaseSelector.inc:262 msgid "Submit" msgstr "Nộp" #: include/class_CopyPasteHandler.inc:118 #: include/class_CopyPasteHandler.inc:127 #: include/class_CopyPasteHandler.inc:159 #: include/class_CopyPasteHandler.inc:176 #: include/class_CopyPasteHandler.inc:185 #: include/class_CopyPasteHandler.inc:193 #: include/class_CopyPasteHandler.inc:273 #, php-format msgid "Copy and paste failed!" msgstr "Copy và Paste bị thất bại!" #: include/class_CopyPasteHandler.inc:118 #, fuzzy, php-format msgid "Cannot set permission for %s" msgstr "Không thể thiết lập phép cho '%s'" #: include/class_CopyPasteHandler.inc:159 #, fuzzy, php-format msgid "'%s' is no valid LDAP object" msgstr "'%s' không phải là một đối tượng LDAP hợp lệ" #: include/class_CopyPasteHandler.inc:176 #, php-format msgid "No write permission in '%s'" msgstr "Không có phép viết cho '%s'" #: include/class_CopyPasteHandler.inc:193 #, php-format msgid "Cannot set permission for '%s'" msgstr "Không thể thiết lập phép cho '%s'" #: include/class_CopyPasteHandler.inc:396 #, php-format msgid "These objects will be pasted: %s" msgstr "Các đối tượng này sẽ được paste: %s" #: include/class_CopyPasteHandler.inc:420 #, php-format msgid "This object will be pasted: %s" msgstr "Đối tượng này sẽ được paste: %s" #: include/class_CopyPasteHandler.inc:573 msgid "Cannot paste" msgstr "Không thể paste" #: include/class_acl.inc:27 plugins/admin/acl/class_aclManagement.inc:25 msgid "Access control" msgstr "Kiểm soát truy cập" #: include/class_acl.inc:28 msgid "Manage access control lists" msgstr "Quản lý các danh sách kiểm soát truy cập" #: include/class_acl.inc:126 include/class_acl.inc:550 #: include/class_acl.inc:554 include/class_acl.inc:708 #: include/class_acl.inc:1138 include/class_acl.inc:1259 #, fuzzy, php-format msgid "All users" msgstr "người dùng" #: include/class_acl.inc:229 #: plugins/generic/references/class_aclResolver.inc:63 msgid "Reset ACLs" msgstr "Xác lập lại ACLs" #: include/class_acl.inc:230 plugins/admin/acl/class_aclRole.inc:139 #: plugins/generic/references/class_aclResolver.inc:64 msgid "One level" msgstr "Một cấp độ" #: include/class_acl.inc:231 include/class_acl.inc:236 #: plugins/admin/acl/class_aclRole.inc:140 #: plugins/generic/references/class_aclResolver.inc:65 msgid "Current object" msgstr "Đối tượng hiện tại" #: include/class_acl.inc:232 plugins/admin/acl/class_aclRole.inc:141 #: plugins/generic/references/class_aclResolver.inc:66 msgid "Complete subtree" msgstr "Hoàn thành cây thư mục con" #: include/class_acl.inc:233 plugins/admin/acl/class_aclRole.inc:142 #: plugins/generic/references/class_aclResolver.inc:67 msgid "Complete subtree (permanent)" msgstr "Hoàn thành cây thư mục con (vĩnh viễn)" #: include/class_acl.inc:234 include/class_acl.inc:237 #: plugins/generic/references/class_aclResolver.inc:68 msgid "Use ACL defined in role" msgstr "Sử dụng ACL được xác định trong vai trò" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:297 #: plugins/personal/generic/class_user.inc:1676 #: plugins/admin/users/class_userManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:185 msgid "Users" msgstr "Người dùng" #: include/class_acl.inc:240 setup/class_setupStep_Migrate.inc:300 #: plugins/admin/groups/class_group.inc:1060 #: plugins/admin/groups/class_groupManagement.inc:25 #: plugins/generic/references/class_aclResolver.inc:177 msgid "Groups" msgstr "Các nhóm" #: include/class_acl.inc:255 #, fuzzy msgid "Section" msgstr "Hành động" #: include/class_acl.inc:265 #, fuzzy msgid "Used" msgstr "Sử dụng " #: include/class_acl.inc:277 plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "~" msgstr "" #: include/class_acl.inc:293 plugins/admin/ogroups/class_ogroup.inc:889 msgid "Member" msgstr "Thành viên" #: include/class_acl.inc:293 plugins/admin/acl/class_aclRole.inc:182 #: plugins/admin/acl/class_aclRole.inc:744 #, fuzzy msgid "Permissions" msgstr "Cho phép" #: include/class_acl.inc:555 include/class_acl.inc:1260 msgid "Pseudo-group for all users." msgstr "" #: include/class_acl.inc:669 msgid "No ACL settings for this category!" msgstr "Không có thiết lập ACL cho hạng mục này!" #: include/class_acl.inc:672 #, php-format msgid "ACLs for: %s" msgstr "" #: include/class_acl.inc:678 include/class_acl.inc:682 msgid "category ACL" msgstr "Hạng mục ACL" #: include/class_acl.inc:744 #, fuzzy, php-format msgid "Edit ACL for '%s' with scope '%s'" msgstr "Hiệu chỉnh ACL cho '%s' - phạm vi là '%s'" #: include/class_acl.inc:906 include/class_acl.inc:913 msgid "Show/hide advanced settings" msgstr "Hiển thị/ Ẩn các thiết lập cao cấp " #: include/class_acl.inc:924 msgid "Create objects" msgstr "Tạo ra đối tượng" #: include/class_acl.inc:925 msgid "Move objects" msgstr "Dịch chuyển đối tượng" #: include/class_acl.inc:926 msgid "Remove objects" msgstr "Xóa đối tượng" #: include/class_acl.inc:928 #: plugins/generic/references/class_aclResolver.inc:307 msgid "Restrict changes to user's own object" msgstr "" #: include/class_acl.inc:932 include/class_acl.inc:1041 #: include/class_acl.inc:1045 #: plugins/generic/references/class_aclResolver.inc:309 msgid "read" msgstr "đọc" #: include/class_acl.inc:933 include/class_acl.inc:1043 #: include/class_acl.inc:1046 #: plugins/generic/references/class_aclResolver.inc:310 msgid "write" msgstr "viết" #: include/class_acl.inc:937 msgid "Complete object" msgstr "Hoàn thành đối tượng" #: include/class_acl.inc:1089 #, fuzzy, php-format msgid "Unknown ACL type '%s'!" msgstr "dạng ACL '%s' không được biết đến!" #: include/class_acl.inc:1134 #, php-format msgid "Unknown entry '%s'!" msgstr "Entry '%s' không được biết đến!" #: include/class_acl.inc:1198 include/class_acl.inc:1200 #, fuzzy, php-format msgid "ACL role: %s" msgstr "Các vai trò ACL" #: include/class_acl.inc:1200 #, fuzzy msgid "unknown ACL role" msgstr "Vai trò không được biết đến" #: include/class_acl.inc:1208 #, php-format msgid "Contains settings for these objects: %s" msgstr "Chứa các thiết lập cho các đối tượng: %s" #: include/class_acl.inc:1219 ihtml/themes/default/acl.tpl:53 #: plugins/personal/posix/class_posixAccount.inc:1481 msgid "Members" msgstr "Các thành viên" #: include/class_acl.inc:1225 msgid "inactive" msgstr "không hoạt động" #: include/class_acl.inc:1225 #, fuzzy msgid "No members" msgstr "Các thành viên nhóm" #: include/class_acl.inc:1429 msgid "Access control list" msgstr "Danh sách kiểm soát truy cập" #: include/class_acl.inc:1435 msgid "ACL roles" msgstr "Các vai trò ACL" #: include/class_acl.inc:1438 #, fuzzy msgid "ACL Entries" msgstr "Tất cả các mục" #: include/class_socketClient.inc:108 #, fuzzy, php-format msgid "Socket connection to %s:%s failed: %s" msgstr "Kết nối socket đến '%s:%s' thất bại: '%s'" #: include/class_socketClient.inc:191 #, fuzzy, php-format msgid "Socket timeout of %s seconds reached!" msgstr "Thời hạn cho socket là %s giây đã đến." #: include/class_userFilterEditor.inc:254 #, php-format msgid "Error in filter #%s: %s opening and %s closing brackets detected!" msgstr "" #: include/class_gosaSupportDaemon.inc:112 msgid "GOsa support daemon" msgstr "GOsa hỗ trợ chương trình daemon" #: include/class_gosaSupportDaemon.inc:787 msgid "Cannot not parse XML!" msgstr "Không thể phân tách XML!" #: include/class_gosaSupportDaemon.inc:1184 #, php-format msgid "Cannot send abort event for entry %s!" msgstr "Không thể gửi thông báo trì hoãn đến entry %s!" #: include/class_gosaSupportDaemon.inc:1204 #, php-format msgid "Cannot remove entry %s!" msgstr "Không thể xóa entry %s!" #: include/class_GOsaRegistration.inc:127 msgid "" "UNIX-timestamp pointing to the date GOsa will ask for a registration again " "(-1 to disable)" msgstr "" #: include/class_SnapshotHandler.inc:45 include/class_SnapshotHandler.inc:76 #, fuzzy, php-format msgid "" "The snapshot functionality is enabled but the required variable %s is not " "set!" msgstr "" "Chức năng Snapshot đã được bật, nhưng biến số được yêu cầu: '%s' vẫn chưa " "được thiết lập." #: include/class_SnapshotHandler.inc:58 #, fuzzy, php-format msgid "" "The snapshot functionality is enabled but the required PHP compression " "module is missing: %s!" msgstr "" "Chức năng Snapshot đã được bật, nhưng biến số được yêu cầu: '%s' vẫn chưa " "được thiết lập." #: ihtml/themes/default/userFilterEditor.tpl:1 #: ihtml/themes/default/userFilterEditor.tpl:5 #, fuzzy msgid "Filter editor" msgstr "Lỗi nặng" #: ihtml/themes/default/userFilterEditor.tpl:8 #, fuzzy msgid "Filter properties" msgstr "Hiệu chỉnh các tính năng chung" #: ihtml/themes/default/userFilterEditor.tpl:40 #: plugins/personal/generic/class_user.inc:1664 #: plugins/personal/generic/generic.tpl:604 msgid "Public visible" msgstr "Hiển thị với tất cả mọi người" #: ihtml/themes/default/userFilterEditor.tpl:45 msgid "Enabled" msgstr "Bật chức năng" #: ihtml/themes/default/userFilterEditor.tpl:49 msgid "Categories where the filter is visible" msgstr "" #: ihtml/themes/default/userFilterEditor.tpl:69 #, fuzzy msgid "Query" msgstr "người dùng" #: ihtml/themes/default/acl.tpl:7 plugins/admin/acl/acl_role.tpl:3 #: plugins/admin/acl/acl_role.tpl:4 msgid "Assigned ACL for current entry" msgstr "Giao ACL cho entry hiện tại" #: ihtml/themes/default/acl.tpl:10 plugins/admin/acl/acl_role.tpl:38 msgid "New ACL" msgstr "ACL mới" #: ihtml/themes/default/acl.tpl:19 plugins/admin/acl/acl_role.tpl:45 msgid "ACL type" msgstr "Dạng ACL" #: ihtml/themes/default/acl.tpl:23 ihtml/themes/default/acl.tpl:28 #: plugins/admin/acl/acl_role.tpl:45 #, fuzzy msgid "Select an ACL type" msgstr "Chọn một dạng acl" #: ihtml/themes/default/acl.tpl:40 msgid "Additional filter options" msgstr "Các lựa chọn thêm cho bộ lọc" #: ihtml/themes/default/acl.tpl:61 #, fuzzy msgid "Add all users" msgstr "người dùng" #: ihtml/themes/default/acl.tpl:68 plugins/admin/acl/acl_role.tpl:51 msgid "List of available ACL categories" msgstr "Danh sách tất cả các mục ACL hiện có" #: ihtml/themes/default/acl.tpl:76 msgid "ACL for this object" msgstr "ACL cho đối tượng này" #: ihtml/themes/default/acl.tpl:82 msgid "Available roles" msgstr "Các vai trò hiện có" #: ihtml/themes/default/removeEntries.tpl:4 #: plugins/addons/propertyEditor/property-list.tpl:7 #, fuzzy msgid "Attention" msgstr "Thẩm định quyền" #: ihtml/themes/default/removeEntries.tpl:14 #, fuzzy msgid "" "If you're sure you want to do this press 'Delete' to continue or 'Cancel' to " "abort." msgstr "" "Vì thế nếu bạn chắc chắn hãy nhấn \"Xóa bỏ\" để tiếp tục hoặc'Hủy bỏ' để " "dừng lại." #: ihtml/themes/default/userFilter.tpl:1 #, fuzzy msgid "List of defined filters" msgstr "Viết file cấu hình" #: ihtml/themes/default/snapshotdialog.tpl:3 msgid "Restoring object snapshots" msgstr "Phục hồi chế độ snapshot của đối tượng" #: ihtml/themes/default/snapshotdialog.tpl:6 msgid "" "This procedure will restore a snapshot of the selected object. It will " "replace the existing object after pressing the restore button." msgstr "" "Thủ tục này sẽ phục hồi một snapshot của các đối tượng được chọn. Nó sẽ thay " "thế cho đối tượng hiện có sau khi bấm vào nút phục hồi." #: ihtml/themes/default/snapshotdialog.tpl:9 #, fuzzy msgid "" "DNS configuration and some database entries cannot be restored. They need to " "be recreated manually." msgstr "" "Hãy nhớ rằng các entry vào cấu hình và cơ sở dữ liệu DNS không thể được " "phục hồi. Đối với một số đối tượng, thì chỉ cần mở và lưu chúng lại là được " "(goFon), nhưng với một số entry thì bạn cần phải tạo lại bằng tay (glpi)." #: ihtml/themes/default/snapshotdialog.tpl:12 msgid "" "Don't forget to check references to other objects, for example does the " "selected printer still exists ?" msgstr "" "Đừng quên kiểm tra các tham chiếu với các đối tượng khác, ví dụ như liệu máy " "in được chọn có còn tồn tại không?" #: ihtml/themes/default/snapshotdialog.tpl:29 #, fuzzy msgid "There is no snapshot available that can be restored" msgstr "Không có snapshot hiện có nào có thể được phục hồi" #: ihtml/themes/default/snapshotdialog.tpl:31 msgid "Choose a snapshot and click the folder image, to restore the snapshot" msgstr "Chọn một snapshot và kích vào hình folder, để phục hồi snapshot" #: ihtml/themes/default/snapshotdialog.tpl:50 msgid "Creating object snapshots" msgstr "Tạo ra snapshot đối tượng" #: ihtml/themes/default/snapshotdialog.tpl:53 msgid "" "This procedure will create a snapshot of the selected object. It will be " "stored inside a special branch of your directory system and can be restored " "later on." msgstr "" "Thủ tục này sẽ tạo ra một snapshot của đối tượng được chọn. Nó sẽ được lưu " "trữ trong một nhánh đặc biệt thuộc hệ thống thư mục của bạn và có thể được " "phục hồi sau này." #: ihtml/themes/default/snapshotdialog.tpl:56 msgid "" "Remember that database entries, DNS configurations and possibly created " "zones in server extensions will not be stored in the snapshot." msgstr "" "Hãy nhớ rằng các entry vào cơ sở dữ liệu, các cấu hình DNS và các vùng có " "thể được tạo ra trong việc mở rộng server sẽ không được lưu lại trong " "snapshot." #: ihtml/themes/default/snapshotdialog.tpl:71 #, fuzzy msgid "Time stamp" msgstr "Timestamp" #: ihtml/themes/default/snapshotdialog.tpl:80 msgid "Reason for generating this snapshot" msgstr "Lý do để tạo ra snapshot này" #: ihtml/themes/default/snapshotdialog.tpl:88 #: plugins/admin/departments/class_department.inc:564 #: plugins/admin/departments/class_department.inc:646 #: plugins/admin/users/template.tpl:60 msgid "Continue" msgstr "Tiếp tục" #: ihtml/themes/default/password.tpl:5 msgid "Change your password" msgstr "Thay đổi mật khẩu của bạn" #: ihtml/themes/default/password.tpl:61 msgid "Your password has been changed successfully." msgstr "Mật khẩu của bạn đã được thay đổi thành công." #: ihtml/themes/default/password.tpl:65 html/main.php:220 #: plugins/personal/password/class_password.inc:160 #: plugins/personal/password/class_password.inc:163 #: plugins/personal/password/class_password.inc:166 #: plugins/admin/users/class_userManagement.inc:400 msgid "Password change" msgstr "Thay đổi mật khẩu" #: ihtml/themes/default/password.tpl:72 #, fuzzy msgid "" "Enter the current password and the new password (twice) in the fields below " "and press the 'Set password' button." msgstr "" "Hộp thoại này cung cấp một cách đơn giản để thay đổi mật khẩu của bạn. Hãy " "nhập mật khẩu hiện tại và mật khẩu mới vào (hai lần) trong các trường bên " "dưới và nhấn vào nút 'Thay đổi'." #: ihtml/themes/default/password.tpl:74 #: plugins/personal/password/class_password.inc:26 #: plugins/admin/users/user-list.xml:128 plugins/admin/users/user-list.xml:230 msgid "Change password" msgstr "Thay đổi mật mã " #: ihtml/themes/default/password.tpl:77 ihtml/themes/default/password.tpl:79 msgid "Directory" msgstr "Thư mục" #: ihtml/themes/default/password.tpl:86 ihtml/themes/default/password.tpl:90 #: ihtml/themes/default/login.tpl:37 ihtml/themes/default/login.tpl:40 #, fuzzy msgid "User name" msgstr "Tên người dùng" #: ihtml/themes/default/password.tpl:97 #: plugins/personal/myaccount/password.tpl:12 #: plugins/personal/myaccount/password.tpl:41 #: plugins/personal/password/password.tpl:18 #: plugins/personal/password/password.tpl:47 msgid "Current password" msgstr "Mật khẩu hiện tại" #: ihtml/themes/default/password.tpl:103 #: plugins/personal/myaccount/password.tpl:18 #: plugins/personal/myaccount/password.tpl:71 #: plugins/personal/password/password.tpl:24 #: plugins/personal/password/password.tpl:78 #: plugins/admin/users/password.tpl:13 plugins/admin/users/password.tpl:65 #: plugins/admin/users/class_userManagement.inc:319 msgid "New password" msgstr "Mật khẩu mới" #: ihtml/themes/default/password.tpl:110 #: plugins/personal/myaccount/password.tpl:25 #: plugins/personal/myaccount/password.tpl:78 #: plugins/personal/password/password.tpl:31 #: plugins/personal/password/password.tpl:85 #: plugins/admin/users/password.tpl:20 plugins/admin/users/password.tpl:72 msgid "Repeat new password" msgstr "Lặp lại mật khẩu mới" #: ihtml/themes/default/password.tpl:117 #: plugins/personal/myaccount/password.tpl:31 #: plugins/personal/myaccount/password.tpl:84 #: plugins/personal/password/password.tpl:37 #: plugins/personal/password/password.tpl:91 msgid "Password strength" msgstr "Ưu điểm của mật khẩu" #: ihtml/themes/default/password.tpl:131 msgid "Click here to change your password" msgstr "Kích vào đây để thay đổi mật khẩu của bạn" #: ihtml/themes/default/password.tpl:131 #: plugins/personal/myaccount/password.tpl:96 #: plugins/personal/password/password.tpl:103 #: plugins/admin/users/password.tpl:101 msgid "Set password" msgstr "Đặt mật khẩu" #: ihtml/themes/default/islocked.tpl:4 msgid "Locking conflict detected" msgstr "Phát hiện xung đột khóa" #: ihtml/themes/default/islocked.tpl:14 #, fuzzy msgid "" "If this lock detection is false, the other person has obviously closed the " "web browser during the edit operation. You may want to take over the lock by " "pressing the 'Edit anyway' button." msgstr "" "Nếu việc phát hiện khóa này sai, một người nào đó chắc hẳn đã đóng trình " "duyệt web trong quá trình thao tác hiệu chỉnh. Bạn có thể muốn tiếp quản " "việc khóa bằng các nhấn vào nút 'tiếp tục hiệu chỉnh'." #: ihtml/themes/default/islocked.tpl:23 #, fuzzy msgid "Read only" msgstr "Danh sách reload" #: ihtml/themes/default/copyPasteDialog.tpl:1 msgid "Copy & paste wizard" msgstr "Copy & Paste wizard" #: ihtml/themes/default/copyPasteDialog.tpl:7 #, fuzzy msgid "" "Some values need to be unique in the complete directory while some " "combinations make no sense. Please edit the values below to fulfill the " "policies." msgstr "" "Một số giá trị phải là duy nhất trong thư mục hoàn chỉnh trong khi một số " "kết hợp không có ý nghĩa nào. GOsa hiển thị những thuộc tính liên quan. Xin " "hãy giữ các giá trị bên dưới để thực hiện các chính sách đó." #: ihtml/themes/default/copyPasteDialog.tpl:9 msgid "Remember that some properties like taken snapshots will not be copied!" msgstr "" "Hãy nhớ rằng một số đặc tính ví dụ như snapshot sẽ không được copy lại!" #: ihtml/themes/default/copyPasteDialog.tpl:10 msgid "" "Or if you copy or cut an entry within GOsa and delete the source object, you " "may get errors while pasting this object again!" msgstr "" "Hoặc nếu bạn copy hoặc cắt một entry trong GOsa và xóa đối tượng nguồn, bạn " "có thể lại gặp lỗi khi paste đối tượng này!" #: ihtml/themes/default/copyPasteDialog.tpl:23 msgid "Cancel all" msgstr "Hủy bỏ tất" #: ihtml/themes/default/copyPasteDialog.tpl:28 msgid "Operation complete" msgstr "Thao tác hoàn thành" #: ihtml/themes/default/copyPasteDialog.tpl:30 #: setup/class_setupStep_Finish.inc:39 msgid "Finish" msgstr "Kết thúc" #: ihtml/themes/default/logout.tpl:6 msgid "Your GOsa session has expired!" msgstr "Phiên GOsa của bạn đã bị hết hạn!" #: ihtml/themes/default/logout.tpl:9 #, fuzzy msgid "" "It has been a while since your last interaction with GOsa took place. Your " "session has been closed for security reasons. Please login again to continue " "with administrative tasks." msgstr "" "Tương tác cuối cùng với giao diện web của GOsa đã diễn ra được một thời gian " "trong quá khứ, Vì các lý do an ninh, phiên này vừa bị đóng. Để tiếp tục các " "tác vụ của admin, xin hãy đăng ký lại lần nữa." #: ihtml/themes/default/logout.tpl:16 #, fuzzy msgid "Login again" msgstr "Đăng ký lại" #: ihtml/themes/default/login.tpl:31 #, fuzzy msgid "Login to GOsa" msgstr "Chào mừng bạn đến với bộ cài đặt wizard GOsa" #: ihtml/themes/default/login.tpl:47 setup/setup_migrate.tpl:53 #: plugins/personal/generic/paste_generic.tpl:21 #: plugins/generic/dashBoard/Register/register.tpl:53 msgid "Password" msgstr "Mật khẩu" #: ihtml/themes/default/login.tpl:61 msgid "Choose the directory to work on" msgstr "" #: ihtml/themes/default/login.tpl:66 msgid "Click here to log in" msgstr "Kích vào đây để đăng nhập" #: ihtml/themes/default/login.tpl:66 ihtml/themes/default/login.tpl:67 #, fuzzy msgid "Log in" msgstr "Đăng nhập" #: ihtml/themes/default/sizelimit.tpl:3 msgid "" "The size limit option makes LDAP operations faster and saves the LDAP server " "from getting too much load. The easiest way to handle big databases without " "long timeouts would be to limit your search to smaller values and use " "filters to get the entries you are looking for." msgstr "" "Lựa chọn giới hạn kích cỡ khiến cho hoạt động của LDAP nhanh hơn và giúp cho " "LDAP server không chịu quá nhiều tải. Cách đơn giản nhất để quản lý được các " "cơ sở dữ liệu lớn mà không có thời gian hạn định dài là hạn chế việc tìm " "kiếm của bạn vào các giá trị nhỏ hơn và sử dụng bộ lọc để có được các entry " "mà bạn đang tìm kiếm." #: ihtml/themes/default/sizelimit.tpl:8 msgid "Please choose the way to react for this session" msgstr "Xin hãy lựa chọn cách để phản ứng với phiên này" #: ihtml/themes/default/sizelimit.tpl:10 msgid "ignore this error and show all entries the LDAP server returns" msgstr "Lờ đi lỗi này và hiển thị tất cả các entry mà LDAP server trả về " #: ihtml/themes/default/sizelimit.tpl:11 #, fuzzy msgid "" "ignore this error and show all entries that fit into the defined size limit" msgstr "" "Lờ lỗi này đi và hiển thị tất cả các entry mà phù hợp với giới hạn kích cỡ " "đã xác định và thay vào đó cho tôi sử dụng các bộ lọc " #: ihtml/themes/default/infoPage.tpl:4 #, fuzzy msgid "User information" msgstr "hiển thị thông tin" #: ihtml/themes/default/infoPage.tpl:17 setup/setup_migrate.tpl:49 #: plugins/personal/posix/class_posixAccount.inc:1369 msgid "User ID" msgstr "ID người dùng" #: ihtml/themes/default/infoPage.tpl:18 #: plugins/personal/generic/class_user.inc:1702 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:48 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:48 #: plugins/admin/users/user-list.xml:49 #: plugins/generic/references/class_reference.inc:87 #, fuzzy msgid "Surname" msgstr "Họ " #: ihtml/themes/default/infoPage.tpl:19 #: plugins/personal/generic/class_user.inc:1326 #: plugins/personal/generic/class_user.inc:1373 #: plugins/personal/generic/class_user.inc:1703 #: plugins/personal/generic/class_user.inc:1857 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:40 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/admin/groups/userSelect/user-list.xml:40 #: plugins/admin/users/class_userManagement.inc:552 #: plugins/admin/users/user-list.xml:57 #: plugins/generic/references/class_reference.inc:87 msgid "Given name" msgstr "Tên thật" #: ihtml/themes/default/infoPage.tpl:20 #: plugins/personal/generic/class_user.inc:1708 #: plugins/personal/generic/generic.tpl:92 msgid "Personal title" msgstr "Chức danh cá nhân" #: ihtml/themes/default/infoPage.tpl:21 #: plugins/personal/generic/class_user.inc:1709 #: plugins/personal/generic/generic.tpl:102 msgid "Academic title" msgstr "Chức danh học thuật" #: ihtml/themes/default/infoPage.tpl:22 #: plugins/personal/generic/class_user.inc:1737 msgid "Home postal address" msgstr "Đại chỉ nhà theo bưu điện" #: ihtml/themes/default/infoPage.tpl:23 #: plugins/personal/generic/class_user.inc:1368 #: plugins/personal/generic/class_user.inc:1711 #: plugins/personal/generic/generic.tpl:117 msgid "Date of birth" msgstr "Ngày sinh" #: ihtml/themes/default/infoPage.tpl:24 #: plugins/admin/groups/class_groupManagement.inc:165 #: plugins/admin/ogroups/tabs_ogroups.inc:155 #: plugins/admin/users/class_userManagement.inc:897 #: plugins/generic/infoPage/class_infoPage.inc:112 msgid "Mail" msgstr "Thư" #: ihtml/themes/default/infoPage.tpl:25 #: plugins/personal/generic/class_user.inc:1738 msgid "Home phone number" msgstr "Số điện thoại nhà" #: ihtml/themes/default/infoPage.tpl:30 setup/setup_feedback.tpl:10 #: setup/setup_feedback.tpl:12 plugins/personal/generic/class_user.inc:1720 #: plugins/personal/generic/generic.tpl:298 #: plugins/admin/departments/dep-filter.xml:91 #: plugins/admin/departments/dep-list.xml:47 #: plugins/admin/departments/dep-list.xml:131 #: plugins/admin/departments/organization.tpl:4 #: plugins/admin/departments/class_organizationGeneric.inc:113 #: plugins/admin/departments/class_organizationGeneric.inc:114 #: plugins/admin/departments/class_departmentManagement.inc:241 msgid "Organization" msgstr "Tổ chức" #: ihtml/themes/default/infoPage.tpl:31 #: plugins/admin/departments/dep-filter.xml:35 #: plugins/admin/departments/generic.tpl:4 #, fuzzy msgid "Organizational Unit" msgstr "Tổ chức" #: ihtml/themes/default/infoPage.tpl:32 #: plugins/personal/generic/class_user.inc:1734 #: plugins/personal/generic/generic.tpl:436 #: plugins/admin/departments/organization.tpl:82 #: plugins/admin/departments/organization.tpl:94 #: plugins/admin/departments/class_department.inc:680 #: plugins/admin/departments/class_organizationGeneric.inc:130 #: plugins/admin/departments/generic.tpl:83 #: plugins/admin/departments/generic.tpl:85 #: plugins/admin/departments/generic.tpl:95 #: plugins/admin/departments/class_localityGeneric.inc:91 msgid "Location" msgstr "Vị trí" #: ihtml/themes/default/infoPage.tpl:33 #: plugins/personal/generic/class_user.inc:1665 #: plugins/personal/generic/generic.tpl:535 msgid "Street" msgstr "Phố" #: ihtml/themes/default/infoPage.tpl:34 #: plugins/personal/generic/class_user.inc:1722 msgid "Department number" msgstr "Số phòng làm việc" #: ihtml/themes/default/infoPage.tpl:36 #: plugins/personal/generic/class_user.inc:1724 msgid "Employee number" msgstr "Số nhân viên" #: ihtml/themes/default/infoPage.tpl:37 #: plugins/personal/generic/class_user.inc:1725 #: plugins/personal/generic/generic.tpl:330 msgid "Employee type" msgstr "Loại nhân viên" #: ihtml/themes/default/infoPage.tpl:48 #: plugins/personal/generic/paste_generic.tpl:1 msgid "User settings" msgstr "Thiết lập của người dùng" #: ihtml/themes/default/infoPage.tpl:55 #, fuzzy msgid "" "You have no permission to edit any properties. Please contact your " "administrator." msgstr "" "Không thể tạo ra việc khóa thông tin trong cây LDAP.Xin hãy liên lạc với " "admin của bạn!" #: ihtml/themes/default/infoPage.tpl:61 #, fuzzy msgid "Administrative contact" msgstr "Thiết lập quản trị" #: ihtml/themes/default/infoPage.tpl:72 plugins/generic/welcome/welcome.tpl:8 msgid "The GOsa team" msgstr "Nhóm phát triển Gosa" #: ihtml/themes/default/msg_dialog.tpl:55 #: ihtml/themes/default/msg_dialog.tpl:103 msgid "Error message title" msgstr "" #: ihtml/themes/default/msg_dialog.tpl:66 #: ihtml/themes/default/msg_dialog.tpl:115 msgid "Error message" msgstr "" #: ihtml/themes/default/ldifViewer.tpl:1 msgid "Raw LDAP entry" msgstr "" #: ihtml/themes/default/framework.tpl:9 #, fuzzy msgid "Log out" msgstr "Đăng xuất" #: ihtml/themes/default/framework.tpl:10 msgid "" "You are currently editing a database entry. Do you want to dismiss the " "changes?" msgstr "" "Bạn hiện đang hiệu chỉnh một entry vào cơ sở dữ liệu. Bạn có muốn hủy bỏ các " "thay đổi?" #: ihtml/themes/default/framework.tpl:22 #, fuzzy, php-format msgid "Session expires in %d!" msgstr "Phiên không được mã hóa!" #: ihtml/themes/default/help.tpl:9 msgid "GOsa help viewer" msgstr "GOsa help viewer" #: ihtml/themes/default/help.tpl:15 msgid "Index" msgstr "Chỉ mục" #: ihtml/themes/default/logout-close.tpl:5 msgid "Your GOsa session has been closed!" msgstr "Phiên GOsa của bạn vừa bị đóng!" #: ihtml/themes/default/logout-close.tpl:7 msgid "" "Please close this browser window and clean the authentication caches to " "avoid an automatic re-authentication by your browser." msgstr "" "Xin hãy đóng cửa sổ trình duyệt này lại và dọn sạch bộ nhớ đệm thẩm định " "quyền để tránh việc tự động thẩm định lại quyền bằng trình duyệt của bạn." #: setup/class_setupStep_Migrate.inc:51 setup/class_setupStep_Migrate.inc:52 msgid "LDAP inspection" msgstr "Thanh tra LDAP" #: setup/class_setupStep_Migrate.inc:53 msgid "Analyze your current LDAP for GOsa compatibility" msgstr "Phân tích LDAP hiện tại của bạn để xem khả năng tương thích với GOsa" #: setup/class_setupStep_Migrate.inc:59 msgid "Checking for root object" msgstr "Kiểm tra đối tượng gốc" #: setup/class_setupStep_Migrate.inc:65 #, fuzzy msgid "Inspecting object classes in root object" msgstr "Kiểm tra đối tượng gốc" #: setup/class_setupStep_Migrate.inc:71 #, fuzzy msgid "Checking permission for LDAP database" msgstr "Kiểm tra các cho phép trên cơ sở dữ liệu LDAP " #: setup/class_setupStep_Migrate.inc:78 msgid "Checking for super administrator" msgstr "Kiểm tra siêu admin" #: setup/class_setupStep_Migrate.inc:118 setup/class_setupStep_Migrate.inc:186 #: setup/class_setupStep_Migrate.inc:709 msgid "LDAP query failed" msgstr "Yêu cầu LDAP thất bại" #: setup/class_setupStep_Migrate.inc:119 setup/class_setupStep_Migrate.inc:187 #: setup/class_setupStep_Migrate.inc:710 msgid "Possibly the 'root object' is missing." msgstr "Có thể 'đối tượng gốc' bị mất tích." #: setup/class_setupStep_Migrate.inc:132 setup/class_setupStep_Migrate.inc:145 #: setup/class_setupStep_Migrate.inc:307 setup/class_setupStep_Migrate.inc:661 #: setup/class_setupStep_Migrate.inc:674 setup/class_setupStep_Migrate.inc:729 #: setup/class_setupStep_Migrate.inc:750 setup/class_setupStep_Migrate.inc:802 msgid "Failed" msgstr "Thất bại" #: setup/class_setupStep_Migrate.inc:134 setup/class_setupStep_Migrate.inc:147 #, fuzzy, php-format msgid "" "The specified user '%s' does not have full access to your LDAP database." msgstr "" "Người dùng '%s' không có toàn quyền truy cập vào cơ sở dữ liệu LDAP của bạn." #: setup/class_setupStep_Migrate.inc:308 msgid "There is no GOsa administrator account inside your LDAP." msgstr "Không có một tài khoản Admin cùa Gosa nào trong LDAP của bạn." #: setup/class_setupStep_Migrate.inc:309 #: plugins/admin/groups/group-list.xml:73 #: plugins/admin/ogroups/ogroup-list.xml:73 plugins/admin/acl/acl-list.xml:76 #: plugins/admin/departments/dep-list.xml:98 #: plugins/admin/users/user-list.xml:89 msgid "Create" msgstr "Tạo " #: setup/class_setupStep_Migrate.inc:377 msgid "Migration error" msgstr "Lỗi di trú" #: setup/class_setupStep_Migrate.inc:377 #, php-format msgid "Cannot add ACL for user '%s':" msgstr "Không thể thêm ACL cho người dùng '%s':" #: setup/class_setupStep_Migrate.inc:415 setup/class_setupStep_Migrate.inc:425 msgid "Input error" msgstr "Lỗi nhập vào" #: setup/class_setupStep_Migrate.inc:415 #: plugins/personal/posix/paste_generic.tpl:38 #: plugins/personal/posix/generic.tpl:64 #: plugins/personal/posix/class_posixAccount.inc:910 #: plugins/personal/posix/class_posixAccount.inc:913 #: plugins/admin/groups/class_group.inc:210 #: plugins/admin/groups/class_group.inc:1209 #: plugins/admin/groups/class_group.inc:1219 #: plugins/generic/references/class_reference.inc:87 msgid "UID" msgstr "Số ID của người sử dụng" #: setup/class_setupStep_Migrate.inc:420 msgid "Password error" msgstr "Lỗi mật mã" #: setup/class_setupStep_Migrate.inc:420 msgid "Provided passwords do not match!" msgstr "Những mật khẩu được cung cấp không phù hợp!" #: setup/class_setupStep_Migrate.inc:425 msgid "Specify a valid user ID!" msgstr "Xác định một ID người dùng hợp lệ!" #: setup/class_setupStep_Migrate.inc:450 #, php-format msgid "Adding an administrative user failed: object '%s' already exists!" msgstr "" "Việc thêm một người dùng quản trị đã thất bại: đối tượng '%s' đã có rồi!" #: setup/class_setupStep_Migrate.inc:662 msgid "" "The LDAP root object is missing. It is required to use your LDAP service." msgstr "" "Đối tượng gốc LDAP đang mất tích. Để sử dụng dịch vụ LDAP của bạn, bạn cần " "có nó." #: setup/class_setupStep_Migrate.inc:663 setup/class_setupStep_Migrate.inc:676 msgid "Try to create root object" msgstr "Cố tạo ra một đối tượng gốc" #: setup/class_setupStep_Migrate.inc:675 msgid "Root object couldn't be created, you should try it on your own." msgstr "Đối tượng gốc không thể được tạo ra, bạn phải cố tự mình tạo ra nó." #: setup/class_setupStep_Migrate.inc:730 #, fuzzy, php-format msgid "Missing GOsa object class '%s'!" msgstr "Lớp đối tượng lựa chọn '%s' mất tích!" #: setup/class_setupStep_Migrate.inc:731 #, fuzzy msgid "Please check your installation." msgstr "Xin hãy kiểm tra kết hợp tên người dùng/mật khẩu." #: setup/class_setupStep_Migrate.inc:752 #, php-format msgid "" "Cannot handle the structural object type of your root object. Please try to " "add the object class '%s' manually." msgstr "" #: setup/class_setupStep_Migrate.inc:804 setup/setup_migrate.tpl:32 #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:181 msgid "Migrate" msgstr "Di trú" #: setup/setup_checks.tpl:2 msgid "" "This step checks if your PHP server has all required modules and " "configuration settings." msgstr "" #: setup/setup_checks.tpl:5 #, fuzzy msgid "Inspection" msgstr "Thanh tra LDAP" #: setup/setup_checks.tpl:8 msgid "PHP module and extension checks" msgstr "Kiểm tra các module và mở rộng của PHP" #: setup/setup_checks.tpl:10 msgid "Basic checks" msgstr "" #: setup/setup_checks.tpl:38 setup/setup_checks.tpl:79 msgid "GOsa will NOT run without fixing this." msgstr "GOsa sẽ không chạy được nếu không sửa chỗ này." #: setup/setup_checks.tpl:40 setup/setup_checks.tpl:81 msgid "GOsa will run without fixing this." msgstr "GOsa sẽ chạy mà không cần sửa chỗ này." #: setup/setup_checks.tpl:50 msgid "PHP setup configuration" msgstr "Cấu hình cài đặt PHP" #: setup/setup_checks.tpl:50 msgid "show information" msgstr "hiển thị thông tin" #: setup/setup_checks.tpl:51 msgid "Extended checks" msgstr "" #: setup/class_setupStep_Finish.inc:40 msgid "Write configuration file" msgstr "Viết file cấu hình" #: setup/class_setupStep_Finish.inc:41 msgid "Finish - write the configuration file" msgstr "Kết thúc - viết file cấu hình" #: setup/class_setupStep_Finish.inc:106 msgid "" "Your configuration file is currently world readable. Please update the file " "permissions!" msgstr "" "File cấu hình của bạn hiện cả thế giới đều đọc được. Xin hãy cập nhật quyền " "truy cập file!" #: setup/class_setupStep_Finish.inc:108 msgid "The configuration is currently not readable or it does not exists." msgstr "Cấu hình hiện tại không thể đọc được hoặc nó không tồn tại." #: setup/class_setupStep_Finish.inc:117 #, fuzzy, php-format msgid "" "After downloading and placing the file under %s, please make sure that the " "user the web server is running with is able to read %s, while other users " "shouldn't. You may want to execute these commands to achieve this " "requirement:" msgstr "" "Sau khi tải về và đặt file này dưới %s, xin hãy đảm bảo rằng người dùng mà " "webserver này đang chạy với có thể đọc được %s, trong khi những người dùng " "khác không thể. Bạn có thể muốn chạy những lệnh này để đạt được yêu cầu:" #: setup/class_setupStep_Ldap.inc:54 msgid "LDAP setup" msgstr "Cài đặt LDAP" #: setup/class_setupStep_Ldap.inc:55 msgid "LDAP connection setup" msgstr "Thiết lập kết nối LDAP" #: setup/class_setupStep_Ldap.inc:56 msgid "" "This dialog performs the basic configuration of the LDAP connectivity for " "GOsa." msgstr "" "Đối thoại này chạy cấu hình đơn giản của khả năng kết nối LDAP với Gosa." #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:41 #: setup/setup_feedback.tpl:52 msgid "No" msgstr "Không" #: setup/class_setupStep_Ldap.inc:75 setup/setup_feedback.tpl:39 #: setup/setup_feedback.tpl:50 msgid "Yes" msgstr "Có" #: setup/class_setupStep_Ldap.inc:113 #, php-format msgid "Anonymous bind to server '%s' failed!" msgstr "Kết nối nặc danh với server '%s' thất bại!" #: setup/class_setupStep_Ldap.inc:115 #, php-format msgid "Bind as user '%s' failed!" msgstr "Kết nối với vai trò người dùng '%s' thất bại!" #: setup/class_setupStep_Ldap.inc:120 #, php-format msgid "Anonymous bind to server '%s' succeeded." msgstr "Kết nối nặc danh đến server '%s' thành công." #: setup/class_setupStep_Ldap.inc:121 msgid "Please specify user and password!" msgstr "Xin hãy xác định người dùng và mật khẩu!" #: setup/class_setupStep_Ldap.inc:123 #, php-format msgid "Bind as user '%s' to server '%s' succeeded!" msgstr "Kết nối với tư cách người dùng '%s' đến server '%s' thành công!" #: setup/class_setupStep_Feedback.inc:94 msgid "UNIX accounts/groups" msgstr "Tài khoản/nhóm UNIX" #: setup/class_setupStep_Feedback.inc:96 msgid "Samba management" msgstr "Quản trị Samba" #: setup/class_setupStep_Feedback.inc:98 #, fuzzy msgid "Mail system management" msgstr "Quản trị hệ thống thư" #: setup/class_setupStep_Feedback.inc:100 msgid "FAX system administration" msgstr "Quản trị hệ thống FAX" #: setup/class_setupStep_Feedback.inc:102 msgid "Asterisk administration" msgstr "Quản trị Asterisk" #: setup/class_setupStep_Feedback.inc:104 msgid "System inventory" msgstr "Bảng kiểm kê hệ thống" #: setup/class_setupStep_Feedback.inc:106 #, fuzzy msgid "System/Configuration management" msgstr "Quản trị cấu hình/hệ thống-" #: setup/class_setupStep_Feedback.inc:108 #, fuzzy msgid "Address book" msgstr "Sổ địa chỉ" #: setup/class_setupStep_Feedback.inc:114 #, fuzzy msgid "Feedback" msgstr "Lỗi phản hồi" #: setup/class_setupStep_Feedback.inc:115 msgid "Get notifications or send feedback" msgstr "Lấy thông báo và gửi phản hồi" #: setup/class_setupStep_Feedback.inc:116 msgid "Notification and feedback" msgstr "Thông báo và phản hồi " #: setup/class_setupStep_Feedback.inc:132 setup/class_setup.inc:74 msgid "Setup error" msgstr "Lỗi cài đặt" #: setup/class_setupStep_Feedback.inc:140 #: setup/class_setupStep_Feedback.inc:147 msgid "Feedback error" msgstr "Lỗi phản hồi" #: setup/class_setupStep_Feedback.inc:140 #, php-format msgid "Cannot send feedback to '%s': %s" msgstr "Không thể gửi phản hồi đển '%s': %s" #: setup/class_setupStep_Feedback.inc:147 msgid "Cannot send feedback: service temporarily unavailable" msgstr "Không thể gửi phản hồi: dịch vụ hiện tại không có " #: setup/class_setupStep_Feedback.inc:181 msgid "Please specify a valid email address." msgstr "Xin hãy xác định một địa chỉ email hợp lệ." #: setup/class_setupStep_Feedback.inc:185 msgid "" "You have to select at least one of both options, subscribe or send feedback." msgstr "" "Bạn phải lựa chọn ít nhất mọt trong hai chọn lựa, thuê bao hoặc gửi phản hồi." #: setup/setup_license.tpl:3 msgid "" "GOsa is developed under the terms of the GNU General Public License v2. " "Please accept the terms below." msgstr "" #: setup/setup_license.tpl:11 msgid "I have read the license and accept it" msgstr "Tôi đã đọc giấy phép và chấp nhận nó" #: setup/setup_ldap.tpl:2 msgid "" "The main data source used in GOsa is LDAP. In order to access the " "information stored there, please enter the required information." msgstr "" #: setup/setup_ldap.tpl:9 msgid "Please choose the LDAP user to be used by GOsa" msgstr "Xin hãy chọn người dùng LDAP để được sử dụng bởi GOsa" #: setup/setup_ldap.tpl:28 setup/setup_ldap.tpl:29 msgid "LDAP connection" msgstr "Kết nối LDAP" #: setup/setup_ldap.tpl:31 msgid "Location name" msgstr "Tên vị trí" #: setup/setup_ldap.tpl:35 #, fuzzy msgid "Connection URI" msgstr "Kết nối URL" #: setup/setup_ldap.tpl:39 msgid "TLS connection" msgstr "Kết nối TLS" #: setup/setup_ldap.tpl:47 #: plugins/personal/posix/trustSelect/trust-list.tpl:12 #: plugins/personal/posix/groupSelect/group-list.tpl:12 #: plugins/personal/generic/class_user.inc:1714 #: plugins/personal/generic/generic.tpl:167 #: plugins/addons/dyngroup/dyngroup.tpl:5 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:127 #: plugins/admin/groups/singleUserSelect/singleUser-list.tpl:12 #: plugins/admin/groups/class_group.inc:1078 #: plugins/admin/groups/group-list.tpl:12 plugins/admin/groups/generic.tpl:39 #: plugins/admin/groups/userSelect/user-list.tpl:12 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.tpl:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.tpl:12 #: plugins/admin/ogroups/ogroup-list.tpl:12 #: plugins/admin/ogroups/generic.tpl:26 #: plugins/admin/ogroups/class_ogroup.inc:886 #: plugins/admin/acl/acl_role.tpl:27 plugins/admin/acl/acl-list.tpl:12 #: plugins/admin/acl/class_aclRole.inc:742 #: plugins/admin/departments/dcObject.tpl:28 #: plugins/admin/departments/country.tpl:28 #: plugins/admin/departments/class_countryGeneric.inc:94 #: plugins/admin/departments/organization.tpl:39 #: plugins/admin/departments/class_department.inc:677 #: plugins/admin/departments/class_domain.inc:92 #: plugins/admin/departments/class_organizationGeneric.inc:125 #: plugins/admin/departments/generic.tpl:39 #: plugins/admin/departments/locality.tpl:28 #: plugins/admin/departments/dep-list.tpl:12 #: plugins/admin/departments/class_localityGeneric.inc:94 #: plugins/admin/departments/class_dcObject.inc:93 #: plugins/admin/departments/domain.tpl:28 #: plugins/admin/users/user-list.tpl:12 msgid "Base" msgstr "Cơ sở" #: setup/setup_ldap.tpl:57 msgid "Reload" msgstr "Tải lại" #: setup/setup_ldap.tpl:63 setup/setup_ldap.tpl:64 msgid "Authentication" msgstr "Thẩm định quyền" #: setup/setup_ldap.tpl:66 #, fuzzy msgid "Administrator DN" msgstr "Admin DN" #: setup/setup_ldap.tpl:71 msgid "Select user" msgstr "Chọn người dùng" #: setup/setup_ldap.tpl:81 #, fuzzy msgid "Automatically append LDAP base to administrator DN" msgstr "Tự động nối cơ sở LDAP với admin DN" #: setup/setup_ldap.tpl:85 #, fuzzy msgid "Administrator password" msgstr "Mật khẩu Admin" #: setup/setup_ldap.tpl:91 setup/setup_ldap.tpl:92 msgid "Schema based settings" msgstr "Thiết lập dựa trên Schema" #: setup/setup_ldap.tpl:94 #, fuzzy msgid "Use RFC 2307bis compliant groups" msgstr "Sử dụng các nhóm tuân thủ tiêu chuẩn rfc2307bis" #: setup/setup_ldap.tpl:105 setup/setup_ldap.tpl:106 msgid "Current status" msgstr "Tình trạng hiện tại" #: setup/setup_ldap.tpl:108 plugins/admin/ogroups/class_ogroup.inc:244 #: plugins/generic/dashBoard/dbInformation/contents.tpl:1 msgid "Information" msgstr "Thông tin" #: setup/setup_language.tpl:3 msgid "Please select the preferred language" msgstr "Xin hãy lựa chọn ngôn ngữ ưu thích" #: setup/setup_language.tpl:5 #, fuzzy msgid "" "At this point, you can select the site wide default language. Choosing " "'automatic' will use the language requested by the browser. This setting can " "be overridden per user." msgstr "" "Tại thời điểm này, bạn có thể lựa chọn trang này với ngôn ngữ mặc định. Nếu " "chọn 'tự động', bạn sẽ sử dụng ngôn ngữ được yêu cẩu bởi trình duyệt này. " "Việc thiết lập này có bị ghi đè với mỗi một người dùng." #: setup/setup_language.tpl:9 msgid "Please select your preferred language here" msgstr "Xin hãy lựa chọn ngôn ngữ bạn muốn dùng ở đây" #: setup/setup_welcome.tpl:3 msgid "How to get started" msgstr "" #: setup/setup_welcome.tpl:5 msgid "" "This seems to be the first time you run GOsa on this system. To start the " "GOsa web interface you need a working configuration file, which can be " "generated by this wizard." msgstr "" #: setup/setup_welcome.tpl:9 #, fuzzy msgid "What you need to generate a configuration file:" msgstr "Tạo ra file cấu hình của bạn" #: setup/setup_welcome.tpl:13 #, fuzzy msgid "The hostname of your LDAP server" msgstr "Trong khi chạy trên LDAP server %s" #: setup/setup_welcome.tpl:14 msgid "Installed GOsa and supplementary schema" msgstr "" #: setup/setup_welcome.tpl:15 msgid "The LDAP base of your LDAP directory" msgstr "" #: setup/setup_welcome.tpl:16 msgid "The DN and the password of the LDAP administration user" msgstr "" #: setup/setup_welcome.tpl:20 msgid "" "If you've collected the needed information, unlock the setup process like " "shown in the next paragraph." msgstr "" #: setup/setup_welcome.tpl:24 #, fuzzy msgid "Starting the setup" msgstr "Cài đặt ngôn ngữ" #: setup/setup_welcome.tpl:26 #, fuzzy msgid "" "For security reasons you need to authenticate the installation by creating " "the file '/tmp/gosa.auth', containing the current session ID on the servers " "local filesystem. This can be done by executing the following command:" msgstr "" "Vì lý do an ninh, bạn cần phải xác minh việc cài đặt bằng cách tạo ra file '/" "tmp/gosa.auth', bao gồm phiên ID hiện tại trên hệ thống file nôi bộ của " "server. Ta làm việc này bằng cách chạy các lệnh sau:" #: setup/setup_welcome.tpl:32 #, fuzzy msgid "Click the 'Next' button when you've finished." msgstr "Kích vào phím 'Continue' khi bạn làm xong." #: setup/class_setupStep_Schema.inc:37 setup/class_setupStep_Schema.inc:38 msgid "LDAP schema check" msgstr "Kiểm tra lược đồ LDAP" #: setup/class_setupStep_Schema.inc:39 msgid "Perform test on your current LDAP schema" msgstr "Thực hiện việc kiểm tra trên lược đồ LDAP hiện tại của bạn" #: setup/class_setup.inc:183 #, fuzzy msgid "Setup" msgstr "Đặt" #: setup/class_setup.inc:195 msgid "Completed" msgstr "Đã hoàn thành" #: setup/class_setup.inc:235 msgid "Check again" msgstr "Kiểm tra lại" #: setup/class_setup.inc:238 msgid "Next" msgstr "Tiếp tục" #: setup/setup_migrate.tpl:2 msgid "" "During the LDAP inspection, we're going to check for several common pitfalls " "that may occur when migration to GOsa base LDAP administration. You may want " "to fix the problems below, in order to provide smooth services." msgstr "" "Trong quá trình thanh tra LDAP, chúng tôi sẽ kiểm tra một vài lỗi thông " "thường mà có thể xảy ra khi di trú đến quản trị LDAP gốc GOsa. Bạn có thể " "muốn sửa những vấn đề dưới đây để cung cấp các dịch vụ êm xuôi hơn." #: setup/setup_migrate.tpl:5 #, fuzzy msgid "Checks" msgstr "Kiểm tra trạng thái" #: setup/setup_migrate.tpl:22 #, fuzzy msgid "Add required object classes to the LDAP base" msgstr "Lớp đối tượng '%s' được yêu cầu mất tích!" #: setup/setup_migrate.tpl:24 msgid "Current" msgstr "Hiện tại" #: setup/setup_migrate.tpl:28 msgid "After migration" msgstr "Sau khi di trú" #: setup/setup_migrate.tpl:35 msgid "Close" msgstr "Đóng" #: setup/setup_migrate.tpl:40 msgid "Create a new GOsa administrator account" msgstr "Tạo ra một tài khoản admin GOsa mới" #: setup/setup_migrate.tpl:41 msgid "" "This dialog will automatically add a new super administrator to your LDAP " "tree." msgstr "Hộp thoại này sẽ tự động thêm một siêu admin mới vào cây LDAP của bạn." #: setup/setup_migrate.tpl:57 msgid "Password (again)" msgstr "Mật khẩu (nhập lại)" #: setup/setup_finish.tpl:3 msgid "Create your configuration file" msgstr "Tạo ra file cấu hình của bạn" #: setup/setup_finish.tpl:10 msgid "Depending on the user name your web server is running on:" msgstr "" #: setup/setup_finish.tpl:27 msgid "Download configuration" msgstr "Tải cấu hình về" #: setup/setup_finish.tpl:33 msgid "Status: " msgstr "Trạng thái: " #: setup/class_setupStep_Checks.inc:40 setup/class_setupStep_Checks.inc:41 msgid "Installation check" msgstr "Kiểm tra cài đặt" #: setup/class_setupStep_Checks.inc:42 msgid "Basic checks for PHP compatibility and extensions" msgstr "Kiểm tra cơ bản cho khả năng tương thích và mở rộng PHP " #: setup/class_setupStep_Checks.inc:66 msgid "Checking PHP version" msgstr "Kiểm tra phiên bản PHP" #: setup/class_setupStep_Checks.inc:67 #, php-format msgid "PHP must be of version %s or above." msgstr "PHP phải là phiên bản %s hoặc như trên." #: setup/class_setupStep_Checks.inc:68 msgid "Please upgrade to a supported version." msgstr "Xin hãy cập nhật cho một phiên bản hỗ trợ." #: setup/class_setupStep_Checks.inc:75 msgid "GOsa requires this module to talk with your LDAP server." msgstr "GOsa yêu cầu môdun này giao tiếp với server LDAP của bạn." #: setup/class_setupStep_Checks.inc:83 msgid "GOsa requires this module for an internationalized interface." msgstr "GOsa yêu cầu môdun này cho một giao diện được quốc tế hóa." #: setup/class_setupStep_Checks.inc:91 #, fuzzy msgid "" "GOsa requires this module to communicate with different types of servers and " "protocols." msgstr "" "GOsa cần mô đun này để giao tiếp với một vài cơ sở dữ liệu được hỗ trợ." #: setup/class_setupStep_Checks.inc:99 msgid "GOsa requires this module for the samba integration." msgstr "GOsa yêu cầu mô-đun này cho việc tích hợp samba." #: setup/class_setupStep_Checks.inc:107 #, fuzzy msgid "" "GOsa requires either 'mhash' or the 'sha1' module to make use of SSHA " "encryption." msgstr "GOsa yêu cầu môdun này để tận dụng được việc mã hóa SSHA." #: setup/class_setupStep_Checks.inc:115 msgid "GOsa requires this module to talk to an IMAP server." msgstr "GOsa yêu cầu mô-đun này để giao tiếp với server IMAP." #: setup/class_setupStep_Checks.inc:122 msgid "mbstring" msgstr "mbstring" #: setup/class_setupStep_Checks.inc:123 #, fuzzy msgid "GOsa requires this module to handle Unicode strings." msgstr "GOsa cần môđun này để sử lý những đoạn mã unicode." #: setup/class_setupStep_Checks.inc:130 msgid "Calendar" msgstr "" #: setup/class_setupStep_Checks.inc:131 #, fuzzy msgid "GOsa requires this module to calculate dates." msgstr "GOsa cần môđun này để sử lý những đoạn mã unicode." #: setup/class_setupStep_Checks.inc:138 msgid "MySQL" msgstr "MySOL" #: setup/class_setupStep_Checks.inc:139 msgid "" "GOsa requires this module to communicate with several supported databases." msgstr "" "GOsa cần mô đun này để giao tiếp với một vài cơ sở dữ liệu được hỗ trợ." #: setup/class_setupStep_Checks.inc:156 msgid "samba hash generator" msgstr "Bộ sinh ra hàm băm Samba" #: setup/class_setupStep_Checks.inc:157 msgid "GOsa requires this command to synchronize POSIX and samba passwords." msgstr "GOsa cần lệnh này để đồng bộ hóa mật khẩu của POSIX và Samba." #: setup/class_setupStep_Checks.inc:158 #, fuzzy msgid "" "Deploy a gosa-si installation or install the Perl Crypt::SmbHash modules." msgstr "" "Triển khai việc cài đặt gosa-si hoặc cài đặt các môđun ngôn ngữ perl Crypt::" "SmbHash." #: setup/class_setupStep_Checks.inc:171 msgid "imagick" msgstr "" #: setup/class_setupStep_Checks.inc:172 #, fuzzy msgid "GOsa requires this extension to handle images." msgstr "GOsa cần môđun này để sử lý những đoạn mã unicode." #: setup/class_setupStep_Checks.inc:187 #, fuzzy msgid "compression module" msgstr "Kiểm soát truy cập" #: setup/class_setupStep_Checks.inc:188 #, fuzzy msgid "GOsa requires this extension to handle snapshots." msgstr "GOsa cần môđun này để sử lý những đoạn mã unicode." #: setup/class_setupStep_Checks.inc:199 msgid "" "register_globals is a PHP mechanism to register all global variables to be " "accessible from scripts without changing the scope. This may be a security " "risk." msgstr "" "đăng ký_toàn cầu (register_globals) là một cơ chế PHP dùng để đăng ký tất cả " "các biến số toàn cầu mà có thể truy cập từ các tập lệnh mà không phải thay " "đổi phạm vi. Đây có thể là một rủi ro về bảo mật." #: setup/class_setupStep_Checks.inc:200 msgid "Search for 'register_globals' in your php.ini and switch it to 'Off'." msgstr "" "Tìm kiếm 'register_globals' trong thư mục php.ini của bạn và chuyển nó thành " "'Off'." #: setup/class_setupStep_Checks.inc:208 msgid "PHP uses this value for the garbage collector to delete old sessions." msgstr "" "PHP sử dụng giá trị này để phần mềm thu dọn rác có thể sóa các phiên cũ đi." #: setup/class_setupStep_Checks.inc:209 msgid "" "Setting this value to one day will prevent loosing session and cookies " "before they really timeout." msgstr "" "Thiết lập giá trị này đến một ngày sẽ ngăn cản việc mất đi các phiên và " "cookies trước khi chúng thực sự hết hạn." #: setup/class_setupStep_Checks.inc:210 msgid "" "Search for 'session.gc_maxlifetime' in your php.ini and set it to 86400 or " "higher." msgstr "" "Tìm kiếm 'session.gc_maxlifetime' trong thư mục php.ini của bạn và thiết " "lập nó đển 86400 hoặc cao hơn." #: setup/class_setupStep_Checks.inc:217 setup/class_setupStep_Checks.inc:233 #: setup/class_setupStep_Checks.inc:249 setup/class_setupStep_Checks.inc:265 #: plugins/addons/propertyEditor/class_propertyEditor.inc:230 msgid "Off" msgstr "Tắt" #: setup/class_setupStep_Checks.inc:218 msgid "" "In Order to use GOsa without any trouble, the session.auto_register option " "in your php.ini should be set to 'Off'." msgstr "" "Để có thể sử dụng được GOsa mà không gặp vấn đề nào, lựa chọn session." "auto_register trong php.ini nên được thiết lập là 'Off' (tắt)." #: setup/class_setupStep_Checks.inc:219 msgid "Search for 'session.auto_start' in your php.ini and set it to 'Off'." msgstr "" "Tìm kiếm 'session.auto_start' trong thư mục php.ini của bạn và đặt nó thành " "'Off'." #: setup/class_setupStep_Checks.inc:226 #, fuzzy msgid "" "GOsa needs at least 32MB of memory. Setting it below this limit may cause " "errors that are not reproducible! Increase it for larger setups." msgstr "" "GOsa cần một dung lượng bộ nhớ ít nhất là 32MB. Thiết lập nó dưới giới hạn " "này có thể sẽ gây ra lỗi mà không thể tự sản sinh ra kết quả nữa! Hãy tăng " "dung lượng lên cho cài đặt lớn hơn." #: setup/class_setupStep_Checks.inc:227 msgid "" "Search for 'memory_limit' in your php.ini and set it to '32M' or higher." msgstr "" "Tìm kiếm 'memory_limit' trong thư mục php.ini của bạn và thiết lập nó lên " "'32M' hoặc cao hơn." #: setup/class_setupStep_Checks.inc:234 msgid "" "This option influences the PHP output handling. Turn this Option off, to " "increase performance." msgstr "" "Lựa chọn này sẽ ảnh hưởng tới việc sử lý đầu vào PHP. Tắt chức năng này đi, " "để tăng khả năng hoạt động." #: setup/class_setupStep_Checks.inc:235 msgid "Search for 'implicit_flush' in your php.ini and set it to 'Off'." msgstr "" "Tìm kiếm 'implicit_flush' trong thư mục php.ini của bạn và chuyển nó sang " "'Off'." #: setup/class_setupStep_Checks.inc:242 msgid "The Execution time should be at least 30 seconds." msgstr "Thời gian chạy ít nhất là 30 giây." #: setup/class_setupStep_Checks.inc:243 msgid "" "Search for 'max_execution_time' in your php.ini and set it to '30' or higher." msgstr "" "Tìm kiếm 'max_execution_time' trong thư mục php.ini của bạn và thiết lập nó " "đến '30' hoặc cao hơn." #: setup/class_setupStep_Checks.inc:250 msgid "" "Increase the server security by setting expose_php to 'off'. PHP won't send " "any information about the server you are running in this case." msgstr "" "Tăng tính bảo mật của server bằng việc thiết lập expose_php thành 'off'. PHP " "sẽ không gửi bất cứ thông tin nào về server bạn đang chạy trong trường hợp " "này." #: setup/class_setupStep_Checks.inc:251 msgid "Search for 'expose_php' in your php.ini and set if to 'Off'." msgstr "" "Tìm kiếm 'expose_php' trong thư much php.ini của bạn và chuyển nó thành " "'Off'." #: setup/class_setupStep_Checks.inc:257 #: plugins/addons/propertyEditor/class_propertyEditor.inc:231 msgid "On" msgstr "Bật" #: setup/class_setupStep_Checks.inc:258 msgid "" "Increase your server security by setting magic_quotes_gpc to 'on'. PHP will " "escape all quotes in strings in this case." msgstr "" "Tăng cường an ninh cho server của bạn bằng cách thiết lập magic_quotes_gpc " "thành 'on'. PHP sẽ giải thoát tất cả các trích dẫn trong các đoạn mã trong " "trường hợp này." #: setup/class_setupStep_Checks.inc:259 msgid "Search for 'magic_quotes_gpc' in your php.ini and set it to 'On'." msgstr "" "Tìm kiếm ''magic_quotes_gpc' trong thư mục php.ini của bạn và chuyển nó " "thành 'On'" #: setup/class_setupStep_Checks.inc:266 msgid "Increase your server performance by setting magic_quotes_gpc to 'off'." msgstr "" "Tăng cường khả năng hoạt động cho server của bạn bằng việc thiết lập " "magic_quotes_gpc thành 'off'." #: setup/class_setupStep_Checks.inc:267 msgid "" "Search for 'zend.ze1_compatibility_mode' in your php.ini and set it to 'Off'." msgstr "" "Tìm kiếm 'zend.ze1_compatibility_mode' trong thư mục php.ini và chuyển nó " "thành 'Off'." #: setup/class_setupStep_Checks.inc:277 #, fuzzy msgid "Configuration writable" msgstr "Cấu hình có thể lưu trữ dữ liệu (writable)" #: setup/class_setupStep_Checks.inc:278 msgid "The configuration file can't be written" msgstr "Không thể viết lên File cấu hình " #: setup/class_setupStep_Checks.inc:279 #, fuzzy, php-format msgid "" "GOsa reads its configuration from a file located in (%s/%s). The setup can " "write the configuration directly if it is writable." msgstr "" "GOsa đọc cấu hình của nó từ một file trong (%s/%s). Việc cài đặt có thể trực " "tiếp viết cấu hình nếu nó là writeable." #: setup/class_setupStep_Welcome.inc:42 msgid "Welcome" msgstr "Chào mừng" #: setup/class_setupStep_Welcome.inc:43 msgid "The welcome message" msgstr "Tin nhắn chào mừng" #: setup/class_setupStep_Welcome.inc:44 #, fuzzy msgid "Welcome to the GOsa setup assistent" msgstr "Chào mừng bạn đến với bộ cài đặt wizard GOsa" #: setup/class_setupStep_License.inc:56 setup/class_setupStep_License.inc:57 msgid "License" msgstr "Giấy Phép" #: setup/class_setupStep_License.inc:58 msgid "Terms and conditions for usage" msgstr "Điều khoản và điều kiện cho việc sử dụng" #: setup/setup_schema.tpl:1 msgid "Schema specific settings" msgstr "Thiết lập cụ thể lược đồ (schema)" #: setup/setup_schema.tpl:4 msgid "Schema check succeeded" msgstr "Kiểm tra lược đồ thành công" #: setup/setup_schema.tpl:7 msgid "Schema check failed" msgstr "Kiểm tra lược đồ thất bại" #: setup/setup_schema.tpl:11 #, fuzzy msgid "" "Could not read any schema information, all checks skipped. Adjust your LDAP " "ACLs." msgstr "" "Không thể đọc một thông tin lược đồ nào, bỏ qua toàn bộ việc kiểm tra. Điều " "chỉnh các acls ldap của bạn." #: setup/setup_schema.tpl:13 #, fuzzy msgid "" "It seems that your LDAP database wasn't initialized yet. This maybe the " "reason, why GOsa can't read your schema configuration!" msgstr "" "Dường như cơ sở dữ liệu Ldap của bạn vẫn chưa được khởi chạy trước. Đây có " "thể là lý do tại sao Gosa không thể đọc cấu hình lược đồ của bạn!" #: setup/class_setupStep_Language.inc:40 setup/class_setupStep_Language.inc:41 msgid "Language setup" msgstr "Cài đặt ngôn ngữ" #: setup/class_setupStep_Language.inc:42 msgid "This step allows you to select your preferred language." msgstr "Bước này cho phép bạn lựa chọn ngôn ngữ bạn muốn dùng." #: setup/setup_feedback.tpl:2 #, fuzzy msgid "Feedback successfully send" msgstr "Phản hồi đã được gửi thành công" #: setup/setup_feedback.tpl:6 #, fuzzy msgid "Subscribe to the gosa-announce mailing list" msgstr "Thuê bao đến maillinglist do gosa công bố" #: setup/setup_feedback.tpl:8 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to subscribe you to the gosa-announce mailing list. You've to confirm " "this by mail." msgstr "" "Khi kiểm tra lựa chọn này, GOsa sẽ cố thử kết nói với http://oss.gonicus.de " "để có thể thuê bao bạn với mailing list mà gosa công bố. Bạn phải xác minh " "việc này bằng thư." #: setup/setup_feedback.tpl:20 msgid "Mail address" msgstr "Địa chỉ thư" #: setup/setup_feedback.tpl:28 msgid "Send feedback to the GOsa project team" msgstr "Gửi phản hồi lại cho nhóm phát triển dự án GOsa" #: setup/setup_feedback.tpl:31 msgid "" "When checking this option, GOsa will try to connect http://oss.gonicus.de in " "order to submit your form anonymously." msgstr "" "Khi kiểm tra lựa chọn này, GOsa sẽ cố gắng kết nối bạn với http://oss." "gonicus.de để nộp đăng ký của bạn nặc danh." #: setup/setup_feedback.tpl:35 setup/setup_feedback.tpl:36 #: plugins/personal/posix/generic.tpl:5 #: plugins/personal/generic/class_user.inc:37 #: plugins/personal/generic/class_user.inc:1670 #: plugins/admin/groups/class_group.inc:1054 #: plugins/admin/ogroups/class_ogroup.inc:872 #: plugins/admin/departments/class_department.inc:659 #: plugins/admin/users/class_userManagement.inc:890 msgid "Generic" msgstr "Thông tin chung" #: setup/setup_feedback.tpl:38 msgid "Did the setup procedure help you to get started?" msgstr "Các thủ tục cài đặt có giúp bạn bắt đầu được không?" #: setup/setup_feedback.tpl:44 msgid "If not, what problems did you encounter" msgstr "Nếu không, vấn đề mà bạn gặp phải là gì?" #: setup/setup_feedback.tpl:48 msgid "Is this the first time you use GOsa?" msgstr "Đây có phải là lần đầu tiên bạn sử dụng GOsa không?" #: setup/setup_feedback.tpl:53 msgid "I use it since" msgstr "Tôi sử dụng nó từ khi" #: setup/setup_feedback.tpl:54 msgid "Select the year since when you are using GOsa" msgstr "Lựa chọn năm mà bạn đang sử dụng GOsa" #: setup/setup_feedback.tpl:60 msgid "What operating system / distribution do you use?" msgstr "Bạn sử dụng loại hệ điều hành/bản phân phối nảo?" #: setup/setup_feedback.tpl:64 msgid "What web server do you use?" msgstr "Bạn sử dụng loại web server nào?" #: setup/setup_feedback.tpl:68 msgid "What PHP version do you use?" msgstr "Bạn sử dụng phiên bản PHP nào?" #: setup/setup_feedback.tpl:72 #, fuzzy msgid "GOsa version" msgstr "Thiết lập GOsa chung " #: setup/setup_feedback.tpl:78 setup/setup_feedback.tpl:79 msgid "LDAP" msgstr "LDAP" #: setup/setup_feedback.tpl:81 msgid "What kind of LDAP server(s) do you use?" msgstr "Bạn sử dụng loại LDAP server nào?" #: setup/setup_feedback.tpl:85 msgid "How many objects are in your LDAP?" msgstr "Có bao nhiêu đối tượng trong LDAP của bạn?" #: setup/setup_feedback.tpl:91 setup/setup_feedback.tpl:92 msgid "Features" msgstr "Các tính năng" #: setup/setup_feedback.tpl:94 msgid "What features of GOsa do you use?" msgstr "Bạn sử dụng tính năng nào của GOsa?" #: setup/setup_feedback.tpl:103 msgid "What features do you want to see in future versions of GOsa?" msgstr "" "Bạn muốn được thấy tính năng nào trong các phiên bản tương lai của GOsa?" #: setup/setup_feedback.tpl:107 msgid "Send feedback" msgstr "Gửi phản hồi" #: html/password.php:63 html/index.php:157 #, php-format msgid "GOsa configuration %s/%s is not readable. Aborted." msgstr "Cấu hình GOsa %s/%s không đọc được. Bãi bỏ." #: html/password.php:115 html/index.php:179 html/setup.php:73 #, fuzzy, php-format msgid "Compile directory %s is not accessible!" msgstr "" "Không thể truy cập vào thư mục '%s' được xác định là thư mục soạn thảo!" #: html/password.php:194 plugins/personal/generic/class_user.inc:614 msgid "Password method" msgstr "Phương pháp lập mật khẩu" #: html/password.php:195 msgid "Error: Password method not available!" msgstr "Lỗi: Phương pháp mật khẩu không có!" #: html/password.php:242 plugins/personal/generic/paste_generic.tpl:16 #: plugins/personal/generic/class_user.inc:1311 #: plugins/personal/generic/class_user.inc:1329 #: plugins/personal/generic/class_user.inc:1343 #: plugins/personal/generic/class_user.inc:1345 #: plugins/personal/generic/class_user.inc:1704 #: plugins/personal/generic/generic.tpl:65 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:56 #: plugins/admin/groups/userSelect/user-list.xml:56 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:65 #: plugins/admin/users/template.tpl:32 plugins/admin/users/user-list.xml:65 #: plugins/generic/dashBoard/Register/register.tpl:49 msgid "Login" msgstr "Đăng nhập" #: html/password.php:244 plugins/personal/password/class_password.inc:124 msgid "You need to specify your current password in order to proceed." msgstr "Bạn cần xác định mật khẩu hiện tại để có thể tiếp tục." #: html/password.php:246 plugins/personal/password/class_password.inc:126 #: plugins/admin/users/class_userManagement.inc:316 msgid "" "The passwords you've entered as 'New password' and 'Repeated new password' " "do not match." msgstr "" "Các mật khẩu bạn vừa nhập vào: \"Mật khẩu mới\" và \"Mật khẩu lặp lại\" " "không giống nhau." #: html/password.php:248 plugins/personal/password/class_password.inc:128 msgid "The password you've entered as 'New password' is empty." msgstr "Mật khẩu bạn vừa nhập vào làm \"Mật khẩu mới\" bị rỗng." #: html/password.php:250 plugins/personal/password/class_password.inc:130 msgid "The password used as new and current are too similar." msgstr "Mật khẩu mới và mật khẩu cũ quá giống nhau." #: html/password.php:252 plugins/personal/password/class_password.inc:132 msgid "The password used as new is to short." msgstr "Mật khẩu mới cần được cắt ngắn lại." #: html/password.php:254 plugins/personal/password/class_password.inc:134 #, fuzzy msgid "The password contains possibly problematic Unicode characters!" msgstr "Trường '%s' chứa các ký tự không hợp lệ!" #: html/password.php:261 html/index.php:311 #, fuzzy msgid "Please check the username/password combination!" msgstr "Xin hãy kiểm tra kết hợp tên người dùng/mật khẩu." #: html/password.php:268 #, fuzzy msgid "You have no permissions to change your password!" msgstr "Bạn không được phép thay đổi mật mã của bạn." #: html/password.php:280 plugins/personal/password/class_password.inc:141 #: plugins/admin/users/class_userManagement.inc:330 #, php-format msgid "Check-hook reported a problem: %s. Password change canceled!" msgstr "" #: html/password.php:315 msgid "Session will not be encrypted." msgstr "Phiên sẽ không được mã hóa." #: html/password.php:317 msgid "Enter SSL session" msgstr "Vào phiên SSL" #: html/index.php:45 #, php-format msgid "Your browser (%s) is blacklisted for the current theme!" msgstr "" #: html/index.php:72 #, php-format msgid "This session is not encrypted. Click %s to enter an encrypted session." msgstr "" #: html/index.php:72 #, fuzzy msgid "here" msgstr "Theme" #: html/index.php:78 #, fuzzy msgid "The configured session lifetime will be overridden by php.ini settings!" msgstr "" "Thời gian hạn định của phiên được cấu hình trong file gosa.conf của bạn sẽ " "được ghi đè lên bởi các thiết lập php.ini." #: html/index.php:179 msgid "Smarty error" msgstr "Lỗi Smarty" #: html/index.php:202 #, fuzzy msgid "" "Your browser has cookies disabled: please enable cookies and reload this " "page before logging in!" msgstr "" "Trình duyệt của bạn đã vô hiệu cookies. Xin hãy cho phép cookies vào và tải " "lại trang này trước khi đăng nhập!" #: html/index.php:233 #, fuzzy msgid "Broken HTTP authentication setup!" msgstr "Có vấn đề với việc cài đặt chức năng xác định thẩm quyền!" #: html/index.php:241 #, fuzzy msgid "Cannot find a valid user for the current HTTP authentication!" msgstr "" "Không thể tìm thấy một người dùng hợp lệ cho việc cài đặt xác định thẩm " "quyền hiện tại!" #: html/index.php:245 #, fuzzy msgid "Cannot find a unique user for the current HTTP authentication!" msgstr "" "Không thể tìm thấy một người dùng hợp lệ cho việc cài đặt xác định thẩm " "quyền hiện tại!" #: html/index.php:289 #, fuzzy msgid "Please specify a valid user name!" msgstr "Xin hãy xác định một tên người dùng hợp lệ!" #: html/index.php:292 msgid "Please specify your password!" msgstr "Xin hãy xác định mật mã của bạn!" #: html/index.php:304 msgid "Authentication error" msgstr "Lỗi xác định thẩm quyền" #: html/index.php:304 #, fuzzy msgid "Cannot retrieve user information for HTTP authentication!" msgstr "" "Không thể phục hồi thông tin của người dùng cho việc thẩm định quyền " "htaccess (truy cập ht)!" #: html/index.php:364 msgid "Account locked. Please contact your system administrator!" msgstr "" "Tài khoản bị khóa. Xin hãy liên lạc với admin quản trị hệ thống của bạn!" #: html/main.php:171 #, fuzzy, php-format msgid "Cannot locate file %s - please run %s to fix this" msgstr "Không thể xác định vị trí file '%s'- xin hãy chạy '%s' để sửa lỗi này!" #: html/main.php:190 msgid "PHP configuration" msgstr "Cấu hình PHP" #: html/main.php:191 msgid "" "Fatal error: Register globals is active. Please fix this in order to " "continue." msgstr "" #: html/main.php:220 msgid "Your password is about to expire, please change your password!" msgstr "Mật khẩu của bạn chuẩn bị hết hạn, xin hãy thay đối mật khẩu của bạn!" #: html/main.php:295 msgid "Running out of memory!" msgstr "Hết dung lượng bộ nhớ!" #: html/main.php:355 #, php-format msgid "You're logged in as %s" msgstr "" #: html/main.php:358 #, fuzzy msgid "ACLs are disabled" msgstr "Vô hiệu việc kiểm tra ACL của người dùng" #: html/main.php:408 #, fuzzy msgid "Plug-in" msgstr "Plugin" #: html/main.php:409 #, fuzzy, php-format msgid "Fatal error: Cannot find any plugin definitions for plugin %s!" msgstr "" "LỖI NGHIÊM TRỌNG: không thể tìm thấy bất cứ plugin definition nào cho " "plugin '%s'!" #: html/main.php:425 #, fuzzy msgid "Configuration Error" msgstr "Lỗi cấu hình" #: html/main.php:426 #, php-format msgid "" "Fatal error: not all POST variables have been transfered by PHP - please " "inform your administrator!" msgstr "" #: html/setup.php:73 msgid "Smarty" msgstr "Smarty" #: html/helpviewer.php:64 msgid "Help browser" msgstr "Hỗ trợ trình duyệt" #: html/helpviewer.php:118 #, fuzzy msgid "There is no help file specified for this class" msgstr "Không có file trợ giúp nào được chỉ định cho lớp này" #: html/helpviewer.php:268 #, fuzzy, php-format msgid "Help directory '%s' is not accessible, can't read any help files." msgstr "" "Không thể truy cập Helpdir '%s', không thể đọc được bất cứ file trợ giúp nào." #: plugins/personal/myaccount/password.tpl:4 #: plugins/personal/password/password.tpl:4 msgid "" "To change your personal password use the fields below. The changes take " "effect immediately. Please memorize the new password, because you wouldn't " "be able to login without it." msgstr "" "Để thay đổi được mật khẩu cá nhân, sử dụng các trường dưới đây. Các thay đổi " "sẽ diễn ra ngay lập tức. Xin hãy nhớ mật khẩu mới, bởi vì bạn sẽ không thể " "đăng nhập vào nếu không có nó." #: plugins/personal/myaccount/password.tpl:10 #: plugins/personal/myaccount/password.tpl:39 #: plugins/personal/password/password.tpl:16 #: plugins/personal/password/password.tpl:45 #, fuzzy msgid "Password change dialog" msgstr "Thay đổi mật khẩu" #: plugins/personal/myaccount/password.tpl:49 #: plugins/personal/password/password.tpl:55 #: plugins/admin/users/password.tpl:43 #, fuzzy msgid "Use proposal" msgstr "các nhóm người dùng" #: plugins/personal/myaccount/password.tpl:67 #: plugins/personal/password/password.tpl:74 #: plugins/admin/users/password.tpl:61 #, fuzzy msgid "Manually specify a password" msgstr "Xin hãy xác định mật mã của bạn!" #: plugins/personal/myaccount/password.tpl:97 #: plugins/personal/password/password.tpl:104 msgid "Clear fields" msgstr "Dọn sạch các trường " #: plugins/personal/myaccount/main.inc:118 #: plugins/personal/myaccount/class_MyAccount.inc:5 #: plugins/personal/posix/class_posixAccount.inc:1356 #: plugins/personal/password/class_password.inc:232 #: plugins/personal/generic/class_user.inc:1675 msgid "My account" msgstr "Tài khoản của tôi" #: plugins/personal/myaccount/class_MyAccount.inc:6 #, fuzzy msgid "Edit personal settings" msgstr "Hiệu chỉnh cài đặt POSIX của người dùng" #: plugins/personal/myaccount/nochange.tpl:2 #: plugins/personal/password/nochange.tpl:2 msgid "You have no permission to change your password at this time" msgstr "Bạn không được phép thay đổi mật khẩu tại thời điểm này" #: plugins/personal/myaccount/nochange.tpl:5 #, fuzzy msgid "Your password hash method will not be changed!" msgstr "Mật khẩu của bạn đã được thay đổi thành công." #: plugins/personal/myaccount/changed.tpl:3 #: plugins/personal/password/changed.tpl:3 #, fuzzy msgid "" "You've successfully changed your password. Remember to change all programs " "configured to use it as well." msgstr "" "Bạn đã thay đổi mật khẩu thành công. Hãy nhớ thay đổi cả các chương trình " "cấu hình để sử dụng được nó." #: plugins/personal/posix/paste_generic.tpl:1 #: plugins/personal/posix/paste_generic.tpl:5 #: plugins/personal/posix/generic.tpl:1 msgid "POSIX settings" msgstr "Thiết lập POSIX" #: plugins/personal/posix/paste_generic.tpl:6 #: plugins/personal/posix/paste_generic.tpl:9 #: plugins/personal/posix/generic.tpl:8 #: plugins/personal/posix/class_posixAccount.inc:899 #: plugins/personal/posix/class_posixAccount.inc:902 #: plugins/personal/posix/class_posixAccount.inc:977 #: plugins/personal/posix/class_posixAccount.inc:980 #: plugins/personal/posix/class_posixAccount.inc:1366 msgid "Home directory" msgstr "Thư mục chủ" #: plugins/personal/posix/paste_generic.tpl:17 #: plugins/personal/posix/posix_shadow.tpl:2 #: plugins/personal/posix/generic.tpl:51 #: plugins/personal/generic/generic.tpl:34 #: plugins/personal/generic/generic.tpl:81 #, fuzzy msgid "Account settings" msgstr "Thiết lập nhóm" #: plugins/personal/posix/paste_generic.tpl:19 #: plugins/personal/posix/generic.tpl:26 #: plugins/personal/posix/class_posixAccount.inc:1367 msgid "Primary group" msgstr "Nhóm sơ cấp" #: plugins/personal/posix/paste_generic.tpl:33 #: plugins/personal/posix/generic.tpl:60 msgid "Force UID/GID" msgstr "Bắt buộc có UID/GID " #: plugins/personal/posix/paste_generic.tpl:47 #: plugins/personal/posix/generic.tpl:75 #: plugins/personal/posix/class_posixAccount.inc:917 #: plugins/personal/posix/class_posixAccount.inc:920 #: plugins/admin/groups/class_group.inc:985 #: plugins/admin/groups/class_group.inc:988 #: plugins/admin/groups/class_group.inc:1080 msgid "GID" msgstr "Số ID của nhóm" #: plugins/personal/posix/paste_generic.tpl:58 #: plugins/personal/posix/paste_generic.tpl:61 #: plugins/personal/posix/generic.tpl:89 #: plugins/generic/references/class_reference.inc:58 #: plugins/generic/references/class_reference.inc:64 msgid "Group membership" msgstr "Tư cách thành viên nhóm" #: plugins/personal/posix/paste_generic.tpl:68 #: plugins/personal/posix/generic.tpl:92 msgid "(Warning: more than 16 groups are not supported by NFS!)" msgstr "(Cảnh báo: hơn 16 nhóm không được hỗ trợ bởi NFS!)" #: plugins/personal/posix/trustSelect/trust-filter.xml:17 #: plugins/personal/posix/groupSelect/group-filter.xml:16 #: plugins/admin/groups/singleUserSelect/singleUser-filter.xml:20 #: plugins/admin/groups/group-filter.xml:17 #: plugins/admin/groups/userSelect/user-filter.xml:20 #: plugins/admin/groups/userGroupSelect/selectUserGroup-filter.xml:21 #: plugins/admin/ogroups/objectSelect/selectObject-filter.xml:32 #: plugins/admin/ogroups/ogroup-filter.xml:18 #: plugins/admin/acl/acl-filter.xml:18 #: plugins/admin/departments/dep-filter.xml:17 #: plugins/admin/users/user-filter.xml:19 #, fuzzy msgid "Default filter" msgstr "Máy in" #: plugins/personal/posix/trustSelect/trust-list.xml:9 #: plugins/personal/posix/groupSelect/group-list.xml:10 #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:10 #: plugins/admin/groups/userSelect/user-list.xml:10 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:11 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:11 #, fuzzy msgid "Please select the desired entries" msgstr "Xin hãy lựa chọn ngôn ngữ ưu thích" #: plugins/personal/posix/trustSelect/trust-list.xml:12 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:23 #: plugins/admin/ogroups/class_ogroupManagement.inc:187 msgid "Server" msgstr "Máy chủ (server)" #: plugins/personal/posix/trustSelect/trust-list.xml:19 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:31 #: plugins/admin/ogroups/class_ogroupManagement.inc:189 msgid "Workstation" msgstr "Máy trạm" #: plugins/personal/posix/trustSelect/trust-list.xml:26 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:39 #: plugins/admin/ogroups/class_ogroupManagement.inc:191 msgid "Terminal" msgstr "Thiết bị cuối " #: plugins/personal/posix/trustSelect/class_trustSelect.inc:29 #, fuzzy msgid "Trust machine selection" msgstr "Thiết lập nhóm" #: plugins/personal/posix/groupSelect/class_groupSelect.inc:29 #, fuzzy msgid "Group selection" msgstr "Thiết lập nhóm" #: plugins/personal/posix/groupSelect/group-list.xml:13 #: plugins/personal/posix/class_posixAccount.inc:247 #: plugins/personal/posix/class_posixAccount.inc:1481 #: plugins/addons/propertyEditor/property-list.xml:73 #: plugins/admin/groups/group-list.xml:15 #: plugins/admin/groups/group-list.xml:79 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:23 #: plugins/admin/ogroups/ogroup-list.xml:79 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:71 #: plugins/admin/ogroups/class_ogroupManagement.inc:184 msgid "Group" msgstr "Nhóm " #: plugins/personal/posix/posix_shadow.tpl:12 msgid "User must change password on first login" msgstr "Người dùng phải thay đổi mật khẩu ngay lần đăng nhập đầu tiên" #: plugins/personal/posix/posix_shadow.tpl:59 #, fuzzy msgid "Password expiration settings" msgstr "Thiết lập mật khẩu" #: plugins/personal/posix/posix_shadow.tpl:62 msgid "Password expires on" msgstr "Mật khẩu hết hạn vào ngày" #: plugins/personal/posix/generic.tpl:6 plugins/admin/ogroups/generic.tpl:5 #, fuzzy msgid "Generic settings" msgstr "Thiết lập chung của người dùng" #: plugins/personal/posix/generic.tpl:16 #: plugins/personal/posix/class_posixAccount.inc:1368 msgid "Shell" msgstr "Shell" #: plugins/personal/posix/generic.tpl:37 #: plugins/generic/dashBoard/dbChannelStatus/class_dbChannelStatus.inc:14 #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:26 msgid "Status" msgstr "Trạng thái" #: plugins/personal/posix/generic.tpl:42 #, fuzzy msgid "Last log-on" msgstr "Họ" #: plugins/personal/posix/generic.tpl:108 #, fuzzy msgid "Account permissions" msgstr "Thiết lập nhóm" #: plugins/personal/posix/generic.tpl:113 msgid "SSH keys" msgstr "" #: plugins/personal/posix/generic.tpl:114 msgid "Edit public ssh keys..." msgstr "" #: plugins/personal/posix/class_posixAccount.inc:37 #: plugins/personal/posix/class_posixAccount.inc:291 #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/personal/posix/class_posixAccount.inc:313 #: plugins/personal/posix/class_posixAccount.inc:316 #: plugins/admin/groups/class_groupManagement.inc:157 #: plugins/admin/users/class_userManagement.inc:894 msgid "POSIX" msgstr "POSIX (giao diện hệ điều hành lưu động)" #: plugins/personal/posix/class_posixAccount.inc:38 msgid "Edit users POSIX settings" msgstr "Hiệu chỉnh cài đặt POSIX của người dùng" #: plugins/personal/posix/class_posixAccount.inc:152 msgid "expired" msgstr "hết hạn" #: plugins/personal/posix/class_posixAccount.inc:154 msgid "grace time active" msgstr "Thời gian trước khi tài khoản bị khóa đang hoạt động" #: plugins/personal/posix/class_posixAccount.inc:157 #: plugins/personal/posix/class_posixAccount.inc:159 #: plugins/personal/posix/class_posixAccount.inc:161 msgid "active" msgstr "hoạt động" #: plugins/personal/posix/class_posixAccount.inc:157 #, fuzzy msgid "password not changeable" msgstr "Mật khẩu không thay đổi được" #: plugins/personal/posix/class_posixAccount.inc:159 msgid "password expired" msgstr "mật khẩu hết hạn" #: plugins/personal/posix/class_posixAccount.inc:235 msgid "automatic" msgstr "tự động" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:173 #: plugins/admin/users/class_userManagement.inc:902 msgid "Samba" msgstr "Samba" #: plugins/personal/posix/class_posixAccount.inc:311 #: plugins/admin/groups/class_groupManagement.inc:197 #: plugins/admin/users/class_userManagement.inc:910 msgid "Environment" msgstr "Môi trường" #: plugins/personal/posix/class_posixAccount.inc:415 #, php-format msgid "Password can't be changed up to %s days after last change" msgstr "" "Mật khẩu không thể được thay đổi it nhất là %s ngày sau lần thay đổi trước" #: plugins/personal/posix/class_posixAccount.inc:419 #, php-format msgid "Password must be changed after %s days" msgstr "Mật khẩu phải được thay đổi sau %s ngày" #: plugins/personal/posix/class_posixAccount.inc:423 #, fuzzy, php-format msgid "Disable account after %s days of inactivity after password expiry" msgstr "" "Vô hiệu hóa tài khoản sau %s ngày không hoạt động sau khi mật khẩu hết hạn" #: plugins/personal/posix/class_posixAccount.inc:427 #, fuzzy, php-format msgid "Warn user %s days before password expiry" msgstr "Cảnh báo người sử dụng còn %s ngày nữa là hết hạn password" #: plugins/personal/posix/class_posixAccount.inc:692 msgid "Timeout while waiting for lock. Ignoring lock!" msgstr "Thời gian chờ khóa. Bỏ qua khóa!" #: plugins/personal/posix/class_posixAccount.inc:750 #: plugins/personal/posix/class_posixAccount.inc:1043 msgid "Group of user" msgstr "Nhóm người dùng" #: plugins/personal/posix/class_posixAccount.inc:815 msgid "" "A duplicated UID number was written for this user. If this was not intended " "please verify all used uidNumbers!" msgstr "" "Số UID nhân bản đã được viết cho người sử dụng này. Nếu vệc này là không cố " "ý, xin hãy xác minh lại tất cả các số UID!" #: plugins/personal/posix/class_posixAccount.inc:933 #: plugins/personal/posix/class_posixAccount.inc:986 msgid "shadowMin" msgstr "shadowMin" #: plugins/personal/posix/class_posixAccount.inc:938 #: plugins/personal/posix/class_posixAccount.inc:991 msgid "shadowMax" msgstr "shadowMax" #: plugins/personal/posix/class_posixAccount.inc:943 #: plugins/personal/posix/class_posixAccount.inc:996 msgid "shadowWarning" msgstr "Cảnh báo về Shadow" #: plugins/personal/posix/class_posixAccount.inc:957 #: plugins/personal/posix/class_posixAccount.inc:1010 msgid "shadowInactive" msgstr "Shadow không hoạt động" #: plugins/personal/posix/class_posixAccount.inc:1061 #: plugins/personal/posix/class_posixAccount.inc:1537 msgid "all" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1352 msgid "POSIX account" msgstr "tài khoản POSIX" #: plugins/personal/posix/class_posixAccount.inc:1370 msgid "Group ID" msgstr "ID nhóm" #: plugins/personal/posix/class_posixAccount.inc:1372 #, fuzzy msgid "Shadow last changed" msgstr "Hiển thị các thay đổi" #: plugins/personal/posix/class_posixAccount.inc:1373 #, fuzzy msgid "Last login" msgstr "Họ" #: plugins/personal/posix/class_posixAccount.inc:1375 msgid "Force password change on login" msgstr "Ép buộc thay đổi mật khẩu trong khi đăng nhập" #: plugins/personal/posix/class_posixAccount.inc:1376 msgid "Shadow min" msgstr "Shadow min" #: plugins/personal/posix/class_posixAccount.inc:1377 msgid "Shadow max" msgstr "Shadow max" #: plugins/personal/posix/class_posixAccount.inc:1378 msgid "Shadow warning" msgstr "Cảnh báo Shadow" #: plugins/personal/posix/class_posixAccount.inc:1379 msgid "Shadow inactive" msgstr "Shadow không hoạt động" #: plugins/personal/posix/class_posixAccount.inc:1380 msgid "Shadow expire" msgstr "Shadow hết hạn" #: plugins/personal/posix/class_posixAccount.inc:1381 msgid "Public SSH key" msgstr "" #: plugins/personal/posix/class_posixAccount.inc:1382 msgid "System trust model" msgstr "Mô hình ủy thác hệ thống" #: plugins/personal/posix/class_posixAccount.inc:1512 msgid "some" msgstr "" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "disabled" msgstr "Đã vô hiệu" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:173 msgid "full access" msgstr "Truy cập hoàn toàn" #: plugins/personal/posix/trustModeDialog/class_trustModeDialog.inc:174 msgid "allow access to these hosts" msgstr "Cho phép truy cập đến các máy chủ này" #: plugins/personal/posix/trustModeDialog/generic.tpl:2 #: plugins/admin/groups/class_group.inc:1084 #: plugins/admin/ogroups/class_ogroup.inc:888 msgid "System trust" msgstr "Ủy thác hệ thống" #: plugins/personal/posix/trustModeDialog/generic.tpl:5 #: plugins/personal/posix/trustModeDialog/generic.tpl:21 msgid "Trust mode" msgstr "Chế độ ủy thác" #: plugins/personal/password/password.tpl:10 #, fuzzy msgid "Your Password has expired. Please choose a new password." msgstr "Mật khẩu của bạn đã hết hạn. Xin hãy chọn một mật khẩu mới!" #: plugins/personal/password/class_password.inc:27 msgid "Change user password" msgstr "Thay đổi mật khẩu người dùng" #: plugins/personal/password/class_password.inc:161 msgid "" "The password you've entered as your current password doesn't match the real " "one." msgstr "" "Mật khẩu bạn vừa đưa vào làm mật khẩu hiện tại không giống mật khẩu thật." #: plugins/personal/password/class_password.inc:164 msgid "You have no permission to change your password." msgstr "Bạn không có quyền thay đổi mật khẩu của bạn." #: plugins/personal/password/class_password.inc:228 msgid "User password" msgstr "Mật khẩu người dùng" #: plugins/personal/password/class_password.inc:241 msgid "Script to be called before a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:250 msgid "Script to be called after a password gets locked." msgstr "" #: plugins/personal/password/class_password.inc:259 msgid "Script to be called before a password gets unlocked." msgstr "" #: plugins/personal/password/class_password.inc:268 msgid "Script to be called after a password gets unlocked." msgstr "" #: plugins/personal/generic/generic_certs.tpl:3 #: plugins/personal/generic/class_user.inc:550 #: plugins/personal/generic/class_user.inc:572 #: plugins/personal/generic/generic.tpl:226 msgid "Certificates" msgstr "Các giấy phép" #: plugins/personal/generic/generic_certs.tpl:5 #, fuzzy msgid "The users standard certificate" msgstr "Giấy phép chuẩn" #: plugins/personal/generic/generic_certs.tpl:8 msgid "Standard certificate" msgstr "Giấy phép chuẩn" #: plugins/personal/generic/generic_certs.tpl:22 #: plugins/personal/generic/generic_certs.tpl:48 #: plugins/personal/generic/generic_certs.tpl:74 #: plugins/addons/propertyEditor/property-list.xml:109 #: plugins/admin/groups/group-list.xml:98 #: plugins/admin/ogroups/ogroup-list.xml:98 plugins/admin/acl/acl-list.xml:95 #: plugins/admin/acl/acl-list.xml:144 #: plugins/admin/departments/dep-list.xml:160 #: plugins/admin/departments/dep-list.xml:181 #: plugins/admin/users/user-list.xml:121 msgid "Remove" msgstr "Xóa bỏ" #: plugins/personal/generic/generic_certs.tpl:31 #, fuzzy msgid "The users S/MIME certificate" msgstr "Giấy phép S/MIME" #: plugins/personal/generic/generic_certs.tpl:34 msgid "S/MIME certificate" msgstr "Giấy phép S/MIME" #: plugins/personal/generic/generic_certs.tpl:57 #, fuzzy msgid "The users PKCS12 certificate" msgstr "Giấy phép PKCS12" #: plugins/personal/generic/generic_certs.tpl:60 msgid "PKCS12 certificate" msgstr "Giấy phép PKCS12" #: plugins/personal/generic/generic_certs.tpl:83 #: plugins/personal/generic/class_user.inc:1663 msgid "Certificate serial number" msgstr "Số seri chứng nhận" #: plugins/personal/generic/paste_generic.tpl:3 #, fuzzy msgid "Paste user" msgstr "Paste" #: plugins/personal/generic/paste_generic.tpl:6 #: plugins/personal/generic/generic.tpl:1 #: plugins/personal/generic/generic.tpl:3 msgid "Personal information" msgstr "Thông tin cá nhân" #: plugins/personal/generic/paste_generic.tpl:8 #: plugins/personal/generic/generic.tpl:37 plugins/admin/users/template.tpl:23 msgid "Last name" msgstr "Họ" #: plugins/personal/generic/paste_generic.tpl:12 #: plugins/personal/generic/generic.tpl:51 plugins/admin/users/template.tpl:27 msgid "First name" msgstr "Tên" #: plugins/personal/generic/paste_generic.tpl:24 msgid "Clear password" msgstr "Bỏ mật khẩu" #: plugins/personal/generic/paste_generic.tpl:25 msgid "Set new password" msgstr "Đặt mật khẩu mới" #: plugins/personal/generic/paste_generic.tpl:31 #: plugins/personal/generic/generic.tpl:8 #: plugins/personal/generic/generic_picture.tpl:2 #, fuzzy msgid "The users picture" msgstr "Ảnh của người sử dụng" #: plugins/personal/generic/paste_generic.tpl:43 #: plugins/personal/generic/generic_picture.tpl:13 msgid "Remove picture" msgstr "Xóa ảnh " #: plugins/personal/generic/class_user.inc:38 msgid "Edit organizational user settings" msgstr "Hiệu chỉnh thiết lập tổ chức của người sử dụng " #: plugins/personal/generic/class_user.inc:297 msgid "Please add a single IP address or a network/net mask combination!" msgstr "" #: plugins/personal/generic/class_user.inc:339 msgid "female" msgstr "Nữ" #: plugins/personal/generic/class_user.inc:339 msgid "male" msgstr "Nam" #: plugins/personal/generic/class_user.inc:395 #, fuzzy msgid "Password configuration" msgstr "Tải cấu hình về" #: plugins/personal/generic/class_user.inc:429 msgid "Cannot upload file!" msgstr "Không thể tải file lên!" #: plugins/personal/generic/class_user.inc:522 msgid "Serial number" msgstr "Số seri" #: plugins/personal/generic/class_user.inc:544 #: plugins/personal/generic/class_user.inc:1716 #: plugins/personal/generic/generic_picture.tpl:1 msgid "User picture" msgstr "Ảnh của người sử dụng" #: plugins/personal/generic/class_user.inc:569 msgid "(Not supported certificate types are marked as invalid.)" msgstr "" #: plugins/personal/generic/class_user.inc:579 #, php-format msgid "Certificate is valid from %s to %s and is currently %s." msgstr "Giấy chứng nhận có hiệu lực từ %s đến %s và hiện tại đang là %s." #: plugins/personal/generic/class_user.inc:582 msgid "valid" msgstr "hợp lệ" #: plugins/personal/generic/class_user.inc:583 msgid "invalid" msgstr "không hợp lệ" #: plugins/personal/generic/class_user.inc:588 msgid "No certificate installed" msgstr "Không có giấy chứng nhận nào được cài đặt" #: plugins/personal/generic/class_user.inc:614 msgid "The selected password method is no longer available." msgstr "Phương pháp lập mật khẩu được chọn này không còn ở đây." #: plugins/personal/generic/class_user.inc:1051 msgid "" "Cannot save user picture: GOsa requires the package 'imagemagick' or 'php5-" "imagick' to be installed!" msgstr "" #: plugins/personal/generic/class_user.inc:1177 msgid "Cannot build RDN: no + allowed to build sub RDN!" msgstr "" #: plugins/personal/generic/class_user.inc:1184 msgid "Cannot build RDN: attribute is not defined!" msgstr "" #: plugins/personal/generic/class_user.inc:1202 msgid "Cannot build RDN: invalid attribute parameters!" msgstr "" #: plugins/personal/generic/class_user.inc:1273 msgid "The selected password method requires initial configuration!" msgstr "Phương pháp lập mật khẩu được chọn yêu cầu cấu hình ban đầu!" #: plugins/personal/generic/class_user.inc:1349 #: plugins/personal/generic/class_user.inc:1739 #: plugins/personal/generic/class_user.inc:1842 #: plugins/personal/generic/generic.tpl:201 msgid "Homepage" msgstr "Trang chủ" #: plugins/personal/generic/class_user.inc:1354 #: plugins/personal/generic/class_user.inc:1845 #: plugins/personal/generic/generic.tpl:394 #: plugins/personal/generic/generic.tpl:574 #: plugins/admin/groups/class_groupManagement.inc:181 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:55 #: plugins/admin/ogroups/class_ogroupManagement.inc:188 #: plugins/admin/departments/organization.tpl:109 #: plugins/admin/departments/class_department.inc:376 #: plugins/admin/departments/generic.tpl:110 #: plugins/admin/users/class_userManagement.inc:918 msgid "Phone" msgstr "Số điện thoại" #: plugins/personal/generic/class_user.inc:1357 #: plugins/personal/generic/class_user.inc:1848 #: plugins/personal/generic/generic.tpl:419 #: plugins/personal/generic/generic.tpl:586 #: plugins/admin/departments/organization.tpl:117 #: plugins/admin/departments/class_department.inc:379 #: plugins/admin/departments/class_department.inc:683 #: plugins/admin/departments/class_organizationGeneric.inc:133 #: plugins/admin/departments/generic.tpl:118 msgid "Fax" msgstr "Số fax" #: plugins/personal/generic/class_user.inc:1360 #: plugins/personal/generic/class_user.inc:1851 #: plugins/personal/generic/generic.tpl:403 msgid "Mobile" msgstr "Điện thoại di động" #: plugins/personal/generic/class_user.inc:1363 #: plugins/personal/generic/class_user.inc:1854 #: plugins/personal/generic/generic.tpl:411 msgid "Pager" msgstr "Máy nhắn tin" #: plugins/personal/generic/class_user.inc:1483 msgid "Cannot open certificate!" msgstr "Không mở được giấy chứng nhận!" #: plugins/personal/generic/class_user.inc:1655 #: plugins/personal/generic/generic.tpl:526 msgid "Unit" msgstr "Đơn vị" #: plugins/personal/generic/class_user.inc:1656 #: plugins/personal/generic/generic.tpl:551 msgid "House identifier" msgstr "Mô tả căn nhà" #: plugins/personal/generic/class_user.inc:1657 #: plugins/personal/generic/generic.tpl:468 msgid "Vocation" msgstr "Nghề nghiệp" #: plugins/personal/generic/class_user.inc:1658 #: plugins/personal/generic/generic.tpl:595 msgid "Last delivery" msgstr "Lần cung cấp cuối" #: plugins/personal/generic/class_user.inc:1659 #: plugins/personal/generic/generic.tpl:517 msgid "Person locality" msgstr "Địa phương của người dùng" #: plugins/personal/generic/class_user.inc:1660 #: plugins/personal/generic/generic.tpl:476 msgid "Unit description" msgstr "Mô tả đơn vị " #: plugins/personal/generic/class_user.inc:1661 #: plugins/personal/generic/generic.tpl:485 msgid "Subject area" msgstr "Lĩnh vực chuyên môn" #: plugins/personal/generic/class_user.inc:1662 #: plugins/personal/generic/generic.tpl:494 msgid "Functional title" msgstr "Danh xưng chức năng" #: plugins/personal/generic/class_user.inc:1666 #: plugins/personal/generic/generic.tpl:503 plugins/admin/acl/acl-list.xml:23 #: plugins/admin/acl/acl-list.xml:82 plugins/admin/acl/class_aclRole.inc:714 msgid "Role" msgstr "Vai trò" #: plugins/personal/generic/class_user.inc:1667 #: plugins/personal/generic/generic.tpl:543 msgid "Postal code" msgstr "Mã bưu điện" #: plugins/personal/generic/class_user.inc:1671 msgid "Generic user settings" msgstr "Thiết lập chung của người dùng" #: plugins/personal/generic/class_user.inc:1692 msgid "" "Pattern for the generation of user DNs. Please read the FAQ for details." msgstr "" #: plugins/personal/generic/class_user.inc:1706 #, fuzzy msgid "Allow definition of custom filters" msgstr "Viết file cấu hình" #: plugins/personal/generic/class_user.inc:1712 #: plugins/personal/generic/generic.tpl:140 msgid "Sex" msgstr "Giới tính" #: plugins/personal/generic/class_user.inc:1713 #: plugins/personal/generic/generic.tpl:154 msgid "Preferred language" msgstr "Ngôn ngữ muốn sử dụng" #: plugins/personal/generic/class_user.inc:1718 #, fuzzy msgid "Login restrictions" msgstr "Các hạn chế mật khẩu" #: plugins/personal/generic/class_user.inc:1721 #: plugins/personal/generic/generic.tpl:306 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:15 #: plugins/admin/ogroups/class_ogroupManagement.inc:186 #: plugins/admin/departments/dep-list.xml:55 #: plugins/admin/departments/dep-list.xml:71 #: plugins/admin/departments/dep-list.xml:138 #: plugins/admin/departments/class_departmentManagement.inc:253 msgid "Department" msgstr "Bộ phận" #: plugins/personal/generic/class_user.inc:1723 #: plugins/personal/generic/generic.tpl:339 #: plugins/personal/generic/generic.tpl:355 #: plugins/admin/departments/dcObject.tpl:39 #: plugins/admin/departments/country.tpl:39 #: plugins/admin/departments/class_countryGeneric.inc:93 #: plugins/admin/departments/organization.tpl:51 #: plugins/admin/departments/class_department.inc:684 #: plugins/admin/departments/class_domain.inc:93 #: plugins/admin/departments/class_organizationGeneric.inc:127 #: plugins/admin/departments/generic.tpl:51 #: plugins/admin/departments/locality.tpl:39 #: plugins/admin/departments/class_localityGeneric.inc:93 #: plugins/admin/departments/class_dcObject.inc:92 #: plugins/admin/departments/domain.tpl:39 #, fuzzy msgid "Manager" msgstr "Quản lý người dùng" #: plugins/personal/generic/class_user.inc:1727 msgid "Room number" msgstr "Số phòng" #: plugins/personal/generic/class_user.inc:1728 #, fuzzy msgid "Telephone number" msgstr "Số điện thoại" #: plugins/personal/generic/class_user.inc:1729 msgid "Pager number" msgstr "Số máy nhắn tin" #: plugins/personal/generic/class_user.inc:1730 msgid "Mobile number" msgstr "Số di động" #: plugins/personal/generic/class_user.inc:1731 msgid "Fax number" msgstr "Số fax" #: plugins/personal/generic/class_user.inc:1733 #: plugins/personal/generic/generic.tpl:444 #: plugins/admin/departments/organization.tpl:86 #: plugins/admin/departments/class_department.inc:679 #: plugins/admin/departments/class_organizationGeneric.inc:129 #: plugins/admin/departments/generic.tpl:87 msgid "State" msgstr "Bang" #: plugins/personal/generic/class_user.inc:1735 #: plugins/personal/generic/generic.tpl:183 #: plugins/admin/departments/class_organizationGeneric.inc:131 msgid "Postal address" msgstr "Địa chỉ theo bưu điện" #: plugins/personal/generic/class_user.inc:1740 #, fuzzy msgid "User password method" msgstr "Phương pháp lập mật khẩu" #: plugins/personal/generic/class_user.inc:1741 msgid "User certificates" msgstr "Giấy phép của người dùng" #: plugins/personal/generic/class_user.inc:1949 #, fuzzy msgid "Entries differ" msgstr "các entry cho mỗi trang" #: plugins/personal/generic/generic.tpl:21 msgid "Change picture" msgstr "Thay đổi hình ảnh" #: plugins/personal/generic/generic.tpl:41 #: plugins/personal/generic/generic.tpl:55 #: plugins/personal/generic/generic.tpl:73 plugins/admin/groups/generic.tpl:14 msgid "Multiple edit" msgstr "Hiệu chỉnh đa dạng" #: plugins/personal/generic/generic.tpl:83 msgid "Template name" msgstr "Tên Mẫu" #: plugins/personal/generic/generic.tpl:185 #: plugins/personal/generic/generic.tpl:452 #: plugins/admin/departments/organization.tpl:102 #: plugins/admin/departments/class_department.inc:681 #: plugins/admin/departments/generic.tpl:103 msgid "Address" msgstr "Địa chỉ" #: plugins/personal/generic/generic.tpl:193 msgid "Private phone" msgstr "Số điện thoại riêng" #: plugins/personal/generic/generic.tpl:209 msgid "Password storage" msgstr "Kho lưu mật khẩu" #: plugins/personal/generic/generic.tpl:229 msgid "Edit certificates" msgstr "Hiệu chỉnh các giấy phép" #: plugins/personal/generic/generic.tpl:241 msgid "Restrict login to" msgstr "" #: plugins/personal/generic/generic.tpl:249 #: plugins/personal/generic/generic.tpl:269 msgid "IP or network" msgstr "" #: plugins/personal/generic/generic.tpl:285 #: plugins/personal/generic/generic.tpl:288 #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 msgid "Organizational information" msgstr "Thông tin về tổ chức" #: plugins/personal/generic/generic.tpl:296 #: plugins/personal/generic/generic.tpl:383 #: plugins/personal/generic/generic.tpl:434 #: plugins/personal/generic/generic.tpl:466 #: plugins/personal/generic/generic.tpl:515 #: plugins/personal/generic/generic.tpl:564 #, fuzzy msgid "part" msgstr "Smarty" #: plugins/personal/generic/generic.tpl:314 msgid "Department No." msgstr "Số phòng ban" #: plugins/personal/generic/generic.tpl:322 msgid "Employee No." msgstr "Số nhân viên" #: plugins/personal/generic/generic.tpl:385 #: plugins/personal/generic/generic.tpl:566 msgid "Room No." msgstr "Số phòng" #: plugins/personal/generic/generic.tpl:580 msgid "Please use the phone tab" msgstr "Xin hãy sử dụng Phone Tab" #: plugins/addons/dyngroup/dyngroup.tpl:1 #, fuzzy msgid "List of dynamic rules" msgstr "Danh sách các ads" #: plugins/addons/dyngroup/dyngroup.tpl:3 msgid "Labeled URI definitions" msgstr "" #: plugins/addons/dyngroup/dyngroup.tpl:6 #, fuzzy msgid "Scope" msgstr "Copy" #: plugins/addons/dyngroup/dyngroup.tpl:7 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:132 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:134 #, fuzzy msgid "Attribute" msgstr "Thuộc tính đăng nhập" #: plugins/addons/dyngroup/dyngroup.tpl:8 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:139 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 #: plugins/generic/references/class_aclResolver.inc:169 #, fuzzy msgid "Filter" msgstr "Các bộ lọc" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:118 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:340 msgid "Labeled URI" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:141 msgid "Surrounding brackets are required!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:149 #, php-format msgid "The given filter '%s' for entry %s seems to be invalid!" msgstr "" #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:179 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:181 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:332 #: plugins/addons/dyngroup/class_DynamicLdapGroup.inc:333 #, fuzzy msgid "Dynamic object" msgstr "Đối tượng GOsa" #: plugins/addons/propertyEditor/property-filter.xml:15 #, fuzzy msgid "Effective properties" msgstr "Hiệu chỉnh các tính năng chung" #: plugins/addons/propertyEditor/property-filter.xml:29 #, fuzzy msgid "Modified properties" msgstr "Hiệu chỉnh các tính năng chung" #: plugins/addons/propertyEditor/property-filter.xml:43 #, fuzzy msgid "All properties" msgstr "Hiệu chỉnh các tính năng chung" #: plugins/addons/propertyEditor/property-filter.xml:57 #, fuzzy msgid "LDAP properties" msgstr "Properties" #: plugins/addons/propertyEditor/property-filter.xml:71 #, fuzzy msgid "Search for property groups" msgstr "các nhóm sơ cấp" #: plugins/addons/propertyEditor/migrate.tpl:3 msgid "Property migration assistant" msgstr "" #: plugins/addons/propertyEditor/migrate.tpl:3 #, fuzzy msgid "Migration steps left" msgstr "Lỗi di trú" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:31 #, fuzzy, php-format msgid "Migration of property '%s'" msgstr "Lỗi di trú" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:34 #, fuzzy, php-format msgid "GOsa has detected objects outside of the configured storage point (%s)." msgstr "Đã tìm thấy %s nhóm bên ngoài cây được cấu hình '%s'." #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:161 #, fuzzy msgid "Objects that will be added" msgstr "Đối tượng này sẽ bị xóa!" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:169 #, fuzzy msgid "Objects that will be moved" msgstr "Máy trạm Win sẽ được chuyển từ" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:177 #, fuzzy, php-format msgid "Moving object '%s' to '%s'" msgstr "Chuyển từ '%s' đến '%s'" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:204 #, fuzzy, php-format msgid "Migration failed for object %s: DN already exists!" msgstr "" "Việc thêm một người dùng quản trị đã thất bại: đối tượng '%s' đã có rồi!" #: plugins/addons/propertyEditor/migration/class_migrateRDN.inc:208 #, fuzzy, php-format msgid "Migration failed for object %s: please check if it already exists!" msgstr "" "Việc thêm một người dùng quản trị đã thất bại: đối tượng '%s' đã có rồi!" #: plugins/addons/propertyEditor/property-list.tpl:3 #, fuzzy msgid "Warning message" msgstr "Cảnh báo" #: plugins/addons/propertyEditor/property-list.tpl:9 msgid "" "Modifying properties may break your setup, destroy or mess up your LDAP " "database, lead to security holes or it can even make a login impossible!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:10 msgid "" "Since configuration properties are stored in the LDAP database a copy/backup " "can be handy." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:14 msgid "" "If you've debarred yourself, you can try to set 'ignoreLdapProperties' to " "'true' in your gosa.conf main section. This will make GOsa ignore LDAP based " "property values." msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:22 msgid "" "I understand that there are certain risks, but I want to modify properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:38 msgid "Ignoring LDAP defined properties!" msgstr "" #: plugins/addons/propertyEditor/property-list.tpl:77 msgid "Undo" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:1 msgid "Command verifier" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:3 msgid "" "Here you can execute commands in the way GOsa does and check the generated " "results or errors. This can be very useful especially for the post events " "(postcreate, postmodify and postremove) due to the fact that these hook are " "executed silently." msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:8 msgid "" "Please be careful here, all commands will really be executed on your machine " "and may break things!" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:15 msgid "The command to check for" msgstr "" #: plugins/addons/propertyEditor/commandVerifier.tpl:17 #, fuzzy msgid "Test" msgstr "Timestamp" #: plugins/addons/propertyEditor/class_commandVerifier.inc:56 msgid "Results" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:6 #, fuzzy msgid "Preferences" msgstr "Các tham chiếu" #: plugins/addons/propertyEditor/class_propertyEditor.inc:7 msgid "" "Configure global and special GOsa settings like hooks and plug-in parameters" msgstr "" #: plugins/addons/propertyEditor/class_propertyEditor.inc:206 #, fuzzy msgid "No description" msgstr "Mô tả vai trò" #: plugins/addons/propertyEditor/class_propertyEditor.inc:251 msgid "Test the given command." msgstr "" #: plugins/addons/propertyEditor/property-list.xml:11 #, fuzzy msgid "List of configuration settings" msgstr "Thiết lập của người dùng" #: plugins/addons/propertyEditor/property-list.xml:16 #, fuzzy msgid "Property not used" msgstr "Nhóm người dùng" #: plugins/addons/propertyEditor/property-list.xml:24 #, fuzzy msgid "Property will be restored" msgstr "Nhóm sẽ được chuyển từ" #: plugins/addons/propertyEditor/property-list.xml:32 #, fuzzy msgid "Modified property" msgstr "thay đối thao tác" #: plugins/addons/propertyEditor/property-list.xml:40 #, fuzzy msgid "Property configured in LDAP" msgstr "Tạo ra file cấu hình của bạn" #: plugins/addons/propertyEditor/property-list.xml:48 #, fuzzy msgid "Property configured in config file" msgstr "Tạo ra file cấu hình của bạn" #: plugins/addons/propertyEditor/property-list.xml:81 #, fuzzy msgid "Class" msgstr "lớp" #: plugins/addons/propertyEditor/property-list.xml:89 #, fuzzy msgid "Value" msgstr "Nam" #: plugins/addons/propertyEditor/property-list.xml:125 msgid "Restore to default" msgstr "" #: plugins/admin/groups/paste_generic.tpl:1 msgid "Group settings" msgstr "Thiết lập nhóm" #: plugins/admin/groups/paste_generic.tpl:2 #, fuzzy msgid "Paste group settings" msgstr "Thiết lập nhóm" #: plugins/admin/groups/paste_generic.tpl:5 #: plugins/admin/groups/generic.tpl:11 #: plugins/admin/ogroups/paste_generic.tpl:4 #: plugins/admin/ogroups/generic.tpl:7 msgid "Group name" msgstr "Tên nhóm" #: plugins/admin/groups/paste_generic.tpl:8 #: plugins/admin/groups/generic.tpl:17 #, fuzzy msgid "POSIX name of the group" msgstr "Tên Posix của nhóm" #: plugins/admin/groups/paste_generic.tpl:13 #: plugins/admin/groups/generic.tpl:59 #, fuzzy msgid "Normally IDs are auto-generated, select to specify manually" msgstr "" "Thường thì các ID sẽ được tự động sinh ra, hãy lựa chọn để xác định thủ " "công " #: plugins/admin/groups/paste_generic.tpl:15 #: plugins/admin/groups/generic.tpl:62 msgid "Force GID" msgstr "Áp dụng GID" #: plugins/admin/groups/paste_generic.tpl:18 #: plugins/admin/groups/generic.tpl:65 msgid "Forced ID number" msgstr "Số ID được áp dụng" #: plugins/admin/groups/singleUserSelect/singleUser-list.xml:14 #: plugins/admin/groups/userSelect/user-list.xml:14 #: plugins/admin/groups/userGroupSelect/selectUserGroup-list.xml:15 #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:63 #: plugins/admin/ogroups/class_ogroupManagement.inc:183 #: plugins/admin/users/user-list.xml:23 plugins/admin/users/user-list.xml:95 msgid "User" msgstr "Người dùng" #: plugins/admin/groups/singleUserSelect/class_singleUserSelect.inc:29 #: plugins/admin/groups/userSelect/class_userSelect.inc:26 #, fuzzy msgid "User selection" msgstr "Thiết lập nhóm" #: plugins/admin/groups/class_group.inc:166 #: plugins/admin/groups/class_group.inc:1259 msgid "Cannot find group SID in your configuration!" msgstr "Không thể tìm được nhóm SID trong cấu hình của bạn!" #: plugins/admin/groups/class_group.inc:310 msgid "Samba group" msgstr "Nhóm Samba" #: plugins/admin/groups/class_group.inc:310 #, fuzzy msgid "Domain administrators" msgstr "Admin miền" #: plugins/admin/groups/class_group.inc:310 msgid "Domain users" msgstr "Người dùng miền" #: plugins/admin/groups/class_group.inc:311 msgid "Domain guests" msgstr "Khách miền" #: plugins/admin/groups/class_group.inc:316 #, php-format msgid "Special group (%d)" msgstr "Nhóm đặc biệt (%d)" #: plugins/admin/groups/class_group.inc:483 #, php-format msgid "Adding UID '%s' to group '%s' failed: cannot find user object!" msgstr "" #: plugins/admin/groups/class_group.inc:489 #, php-format msgid "Add UID '%s' to group '%s' failed: UID is used more than once!" msgstr "" #: plugins/admin/groups/class_group.inc:772 #, php-format msgid "Cannot find any SID for '%s'!" msgstr "Không thể tìm thấy một SID nào cho '%s'!" #: plugins/admin/groups/class_group.inc:777 #, php-format msgid "Cannot find any RIDBASE for '%s'!" msgstr "Không thể tìm thấy một RIDBASE nào cho '%s'!" #: plugins/admin/groups/class_group.inc:871 #, php-format msgid "The gidNumber '%s' is already in use by %s!" msgstr "" #: plugins/admin/groups/class_group.inc:1055 msgid "Generic group settings" msgstr "Thiết lập nhóm chung" #: plugins/admin/groups/class_group.inc:1068 #, fuzzy msgid "RDN for object group storage." msgstr "Danh sách các nhóm đối tượng" #: plugins/admin/groups/class_group.inc:1082 msgid "Samba group type" msgstr "Loại nhóm Samba" #: plugins/admin/groups/class_group.inc:1083 msgid "Samba domain name" msgstr "Tên miền Samba" #: plugins/admin/groups/class_group.inc:1085 msgid "Phone pickup group" msgstr "Nhóm nhấc điện thoại" #: plugins/admin/groups/class_group.inc:1086 msgid "Nagios group" msgstr "Nhóm phần mềm Nagios" #: plugins/admin/groups/class_group.inc:1088 msgid "Group member" msgstr "Thành viên nhóm" #: plugins/admin/groups/class_groupManagement.inc:26 msgid "" "Manage aspects of groups like members, POSIX, desktop, samba and mail " "settings" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:100 #: plugins/admin/ogroups/class_ogroupManagement.inc:115 #: plugins/admin/users/class_userManagement.inc:196 msgid "Infrastructure error" msgstr "Lỗi cơ sở hạ tầng" #: plugins/admin/groups/class_groupManagement.inc:158 #: plugins/admin/users/class_userManagement.inc:895 #, fuzzy msgid "Edit POSIX properties" msgstr "Hiệu chỉnh các tính năng UNIX" #: plugins/admin/groups/class_groupManagement.inc:166 #: plugins/admin/users/class_userManagement.inc:899 msgid "Edit mail properties" msgstr "Hiệu chỉnh các tính năng mail" #: plugins/admin/groups/class_groupManagement.inc:174 #: plugins/admin/users/class_userManagement.inc:903 msgid "Edit samba properties" msgstr "Hiệu chỉnh các tính năng samba" #: plugins/admin/groups/class_groupManagement.inc:182 #: plugins/admin/users/class_userManagement.inc:919 msgid "Edit phone properties" msgstr "Hiệu chỉnh các tính năng điện thoại" #: plugins/admin/groups/class_groupManagement.inc:189 msgid "Menu" msgstr "" #: plugins/admin/groups/class_groupManagement.inc:190 #, fuzzy msgid "Edit start menu properties" msgstr "Hiệu chỉnh các tính năng samba" #: plugins/admin/groups/class_groupManagement.inc:198 #: plugins/admin/users/class_userManagement.inc:911 msgid "Edit environment properties" msgstr "Hiệu chỉnh các tính năng môi trường" #: plugins/admin/groups/group-filter.xml:31 #, fuzzy msgid "Default filter2" msgstr "Máy in" #: plugins/admin/groups/generic.tpl:28 plugins/admin/ogroups/generic.tpl:18 msgid "Descriptive text for this group" msgstr "Văn bản mô tả cho nhóm này" #: plugins/admin/groups/generic.tpl:75 plugins/admin/groups/generic.tpl:102 msgid "Select to create a samba conform group" msgstr "Chọn để tạo ra một nhóm thích hợp với samba" #: plugins/admin/groups/generic.tpl:87 plugins/admin/groups/generic.tpl:110 msgid "in domain" msgstr "trong miền" #: plugins/admin/groups/generic.tpl:131 msgid "Members are in a phone pickup group" msgstr "Các thành viên trong một nhóm nhấc điện thoại" #: plugins/admin/groups/generic.tpl:146 #, fuzzy msgid "Members are in a Nagios group" msgstr "Các thành viên trong một nhóm Nargios" #: plugins/admin/groups/generic.tpl:175 plugins/admin/ogroups/generic.tpl:41 msgid "The group members are part of a dyn-group and cannot be managed!" msgstr "" #: plugins/admin/groups/generic.tpl:188 #, fuzzy msgid "Common group members" msgstr "các nhóm điện thoại" #: plugins/admin/groups/generic.tpl:197 #, fuzzy msgid "Partial group members" msgstr "Các thành viên nhóm" #: plugins/admin/groups/generic.tpl:202 msgid "Group members" msgstr "Các thành viên nhóm" #: plugins/admin/groups/group-list.xml:11 msgid "List of groups" msgstr "Danh sách các nhóm" #: plugins/admin/groups/group-list.xml:57 #: plugins/admin/ogroups/ogroup-list.xml:57 #: plugins/admin/departments/dcObject.tpl:8 #: plugins/admin/departments/dcObject.tpl:9 #: plugins/admin/departments/country.tpl:8 #: plugins/admin/departments/country.tpl:9 #: plugins/admin/departments/organization.tpl:7 #: plugins/admin/departments/organization.tpl:9 #: plugins/admin/departments/generic.tpl:7 #: plugins/admin/departments/generic.tpl:9 #: plugins/admin/departments/locality.tpl:8 #: plugins/admin/departments/locality.tpl:9 #: plugins/admin/departments/domain.tpl:8 #: plugins/admin/departments/domain.tpl:9 plugins/admin/users/user-list.xml:73 msgid "Properties" msgstr "Properties" #: plugins/admin/groups/group-list.xml:91 #: plugins/admin/ogroups/ogroup-list.xml:91 plugins/admin/acl/acl-list.xml:131 #: plugins/admin/departments/dep-list.xml:172 #: plugins/admin/users/user-list.xml:114 msgid "Edit" msgstr "Hiệu chỉnh" #: plugins/admin/groups/group-list.xml:106 #: plugins/admin/ogroups/ogroup-list.xml:106 #: plugins/admin/users/user-list.xml:156 msgid "Send message" msgstr "" #: plugins/admin/groups/group-list.xml:138 #, fuzzy msgid "Edit group" msgstr "các nhóm máy in" #: plugins/admin/groups/group-list.xml:151 #, fuzzy msgid "Remove group" msgstr "các nhóm server" #: plugins/admin/groups/userGroupSelect/class_userGroupSelect.inc:29 #, fuzzy msgid "User and group selection" msgstr "Thiết lập nhóm" #: plugins/admin/ogroups/ogroup-list.xml:11 msgid "List of object groups" msgstr "Danh sách các nhóm đối tượng" #: plugins/admin/ogroups/ogroup-list.xml:15 #: plugins/admin/ogroups/generic.tpl:1 msgid "Object group" msgstr "Nhóm đối tượng" #: plugins/admin/ogroups/ogroup-list.xml:142 #, fuzzy msgid "Edit object group" msgstr "Nhóm đối tượng" #: plugins/admin/ogroups/ogroup-list.xml:155 #, fuzzy msgid "Remove object group" msgstr "các nhóm server" #: plugins/admin/ogroups/paste_generic.tpl:1 #, fuzzy msgid "Paste object group" msgstr "Nhóm đối tượng" #: plugins/admin/ogroups/paste_generic.tpl:7 msgid "Please enter the new object group name" msgstr "Xin mời nhập tên nhóm đối tượng mới vào" #: plugins/admin/ogroups/paste_generic.tpl:16 msgid "Warning: systems can only inherit from a single object group!" msgstr "" #: plugins/admin/ogroups/objectSelect/selectObject-list.xml:47 #: plugins/admin/ogroups/class_ogroupManagement.inc:192 msgid "Printer" msgstr "Máy in" #: plugins/admin/ogroups/objectSelect/class_objectSelect.inc:29 #, fuzzy msgid "Object selection" msgstr "Thiết lập nhóm" #: plugins/admin/ogroups/tabs_ogroups.inc:139 msgid "Phone queue" msgstr "Các hàng phone" #: plugins/admin/ogroups/tabs_ogroups.inc:164 #, fuzzy msgid "Groupware" msgstr "Tên nhóm" #: plugins/admin/ogroups/tabs_ogroups.inc:176 #, fuzzy msgid "System settings" msgstr "Thiết lập của người dùng" #: plugins/admin/ogroups/tabs_ogroups.inc:188 #: plugins/admin/ogroups/tabs_ogroups.inc:213 msgid "Recipe" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:200 #: plugins/admin/ogroups/tabs_ogroups.inc:222 msgid "Devices" msgstr "Các thiết bị" #: plugins/admin/ogroups/tabs_ogroups.inc:232 #, fuzzy msgid "Deployment summary" msgstr "Số phòng làm việc" #: plugins/admin/ogroups/tabs_ogroups.inc:242 msgid "Desktop" msgstr "" #: plugins/admin/ogroups/tabs_ogroups.inc:259 msgid "Applications" msgstr "Các ứng dụng" #: plugins/admin/ogroups/generic.tpl:10 msgid "Name of the group" msgstr "Tên của nhóm" #: plugins/admin/ogroups/generic.tpl:46 msgid "Member objects" msgstr "Các đối tượng thành viên" #: plugins/admin/ogroups/class_ogroup.inc:244 msgid "You cannot combine terminals and workstations in one object group!" msgstr "" "Bạn không thể kết hợp các thiết bị cuối và máy trạm vào trong một nhóm đối " "tượng!" #: plugins/admin/ogroups/class_ogroup.inc:318 #: plugins/admin/users/class_userManagement.inc:472 #: plugins/admin/users/class_userManagement.inc:507 #: plugins/admin/users/class_userManagement.inc:539 msgid "none" msgstr "không có" #: plugins/admin/ogroups/class_ogroup.inc:320 msgid "too many different objects!" msgstr "có quá nhiều các đối tượng khác nhau!" #: plugins/admin/ogroups/class_ogroup.inc:322 msgid "users" msgstr "người dùng" #: plugins/admin/ogroups/class_ogroup.inc:323 msgid "groups" msgstr "các nhóm" #: plugins/admin/ogroups/class_ogroup.inc:324 msgid "applications" msgstr "các ứng dụng" #: plugins/admin/ogroups/class_ogroup.inc:325 msgid "departments" msgstr "các bộ phận" #: plugins/admin/ogroups/class_ogroup.inc:326 msgid "servers" msgstr "các server" #: plugins/admin/ogroups/class_ogroup.inc:327 msgid "workstations" msgstr "máy trạm" #: plugins/admin/ogroups/class_ogroup.inc:328 #, fuzzy msgid "Windows workstations" msgstr "các nhóm máy trạm windows" #: plugins/admin/ogroups/class_ogroup.inc:329 msgid "terminals" msgstr "các thiết bị cuối" #: plugins/admin/ogroups/class_ogroup.inc:330 msgid "phones" msgstr "điện thoại" #: plugins/admin/ogroups/class_ogroup.inc:331 msgid "printers" msgstr "các máy in" #: plugins/admin/ogroups/class_ogroup.inc:555 #, fuzzy msgid "Non existing DN:" msgstr "dn không tồn tại:" #: plugins/admin/ogroups/class_ogroup.inc:673 #, php-format msgid "" "These systems are already configured by other object groups and cannot be " "added:" msgstr "" #: plugins/admin/ogroups/class_ogroup.inc:707 msgid "You can combine two different object types at maximum, only!" msgstr "Bạn chỉ có thể kết hợp hai đối tượng khác nhau tại mức cực đại!" #: plugins/admin/ogroups/class_ogroup.inc:873 msgid "Object group generic" msgstr "Nhóm đối tượng chung" #: plugins/admin/ogroups/class_ogroup.inc:882 #: plugins/admin/ogroups/class_ogroupManagement.inc:25 msgid "Object groups" msgstr "Tất cả các nhóm đối tượng" #: plugins/admin/ogroups/class_ogroupManagement.inc:26 msgid "Combine different types of objects to make use of this relationship" msgstr "" #: plugins/admin/ogroups/class_ogroupManagement.inc:182 #, fuzzy msgid "Templates" msgstr "Mẫu" #: plugins/admin/ogroups/class_ogroupManagement.inc:185 msgid "Application" msgstr "Ứng dụng" #: plugins/admin/ogroups/class_ogroupManagement.inc:190 msgid "Windows Install" msgstr "Cài đặt window" #: plugins/admin/acl/tabs_acl_role.inc:28 plugins/admin/acl/acl-filter.xml:33 msgid "ACL Templates" msgstr "Các mẫu ACL" #: plugins/admin/acl/acl-list.xml:11 #, fuzzy msgid "List of ACLs" msgstr "Danh sách các ads" #: plugins/admin/acl/paste_role.tpl:1 #, fuzzy msgid "Paste ACL-role" msgstr "Xóa vai trò acl" #: plugins/admin/acl/acl-filter.xml:48 #: plugins/admin/acl/class_aclManagement.inc:154 #, fuzzy msgid "ACL Assignment" msgstr "Quản lý ACL" #: plugins/admin/acl/class_aclManagement.inc:26 msgid "" "Control access to GOsa managed objects down to attribute and action level" msgstr "" #: plugins/admin/acl/class_aclRole.inc:26 #: plugins/admin/acl/class_aclRole.inc:715 msgid "Access control roles" msgstr "Các vai trò kiểm soát truy cập" #: plugins/admin/acl/class_aclRole.inc:27 msgid "Edit AC roles" msgstr "Hiệu chỉnh các vai trò ACL" #: plugins/admin/acl/class_aclRole.inc:138 msgid "Reset ACL" msgstr "Xác lập lại ACL" #: plugins/admin/acl/class_aclRole.inc:411 msgid "No ACL settings for this category" msgstr "Không có cài đặt ACL cho mục này" #: plugins/admin/acl/class_aclRole.inc:413 #, php-format msgid "ACL for these objects: %s" msgstr "ACL cho các đối tượng sau: %s" #: plugins/admin/acl/class_aclRole.inc:418 msgid "Edit category ACL" msgstr "Hiệu chính mục ACL" #: plugins/admin/acl/class_aclRole.inc:421 #, fuzzy msgid "Delete category ACL" msgstr "Xác lập mục ACL" #: plugins/admin/acl/class_aclRole.inc:442 #, php-format msgid "Edit ACL for '%s', scope is '%s'" msgstr "Hiệu chỉnh ACL cho'%s', vùng là '%s'" #: plugins/admin/acl/class_aclRole.inc:635 msgid "Object in use" msgstr "Đối tượng đang được sử dụng" #: plugins/admin/acl/class_aclRole.inc:635 #, php-format msgid "This role cannot be removed while it is in use by these objects:" msgstr "" "Vai trò này không thể bị xóa bỏ trong khi nó vẫn đang được sử dụng bởi các " "đối tượng:" #: plugins/admin/acl/class_aclRole.inc:731 #, fuzzy msgid "RDN for role storage." msgstr "Đường dẫn đến kho lưu trữ profile của ki-ốt" #: plugins/admin/departments/dcObject.tpl:5 #: plugins/admin/departments/dep-filter.xml:77 #: plugins/admin/departments/dep-list.xml:23 #: plugins/admin/departments/dep-list.xml:110 #, fuzzy msgid "Domain component" msgstr "Admin miền" #: plugins/admin/departments/dcObject.tpl:11 #: plugins/admin/departments/locality.tpl:11 #, fuzzy msgid "Locality name" msgstr "Tên vị trí" #: plugins/admin/departments/dcObject.tpl:14 #: plugins/admin/departments/locality.tpl:14 #, fuzzy msgid "Name of locality to create" msgstr "Tên của cây con được tạo" #: plugins/admin/departments/dcObject.tpl:22 #: plugins/admin/departments/country.tpl:22 #: plugins/admin/departments/organization.tpl:22 #: plugins/admin/departments/locality.tpl:22 #: plugins/admin/departments/domain.tpl:22 msgid "Descriptive text for department" msgstr "Văn bản mô tả cho bộ phận" #: plugins/admin/departments/dcObject.tpl:67 #: plugins/admin/departments/country.tpl:68 #: plugins/admin/departments/class_countryGeneric.inc:95 #: plugins/admin/departments/organization.tpl:132 #: plugins/admin/departments/class_department.inc:686 #: plugins/admin/departments/class_domain.inc:94 #: plugins/admin/departments/class_organizationGeneric.inc:135 #: plugins/admin/departments/generic.tpl:132 #: plugins/admin/departments/locality.tpl:67 #: plugins/admin/departments/class_localityGeneric.inc:95 #: plugins/admin/departments/class_dcObject.inc:94 #: plugins/admin/departments/domain.tpl:67 msgid "Administrative settings" msgstr "Thiết lập quản trị" #: plugins/admin/departments/dcObject.tpl:70 #: plugins/admin/departments/country.tpl:71 #: plugins/admin/departments/organization.tpl:135 #: plugins/admin/departments/generic.tpl:135 #: plugins/admin/departments/locality.tpl:70 #: plugins/admin/departments/domain.tpl:70 msgid "Tag department as an independent administrative unit" msgstr "Đặt bộ phận như một đơn vị quản trị độc lập" #: plugins/admin/departments/dep-filter.xml:49 #: plugins/admin/departments/country.tpl:5 #: plugins/admin/departments/class_countryGeneric.inc:82 #: plugins/admin/departments/class_countryGeneric.inc:83 #: plugins/admin/departments/dep-list.xml:31 #: plugins/admin/departments/dep-list.xml:117 #: plugins/admin/departments/class_departmentManagement.inc:217 msgid "Country" msgstr "Quốc Gia" #: plugins/admin/departments/dep-filter.xml:63 #: plugins/admin/departments/dep-list.xml:39 #: plugins/admin/departments/dep-list.xml:124 #: plugins/admin/departments/class_departmentManagement.inc:229 #: plugins/admin/departments/locality.tpl:5 #: plugins/admin/departments/class_localityGeneric.inc:82 #: plugins/admin/departments/class_localityGeneric.inc:83 #, fuzzy msgid "Locality" msgstr "Vị trí" #: plugins/admin/departments/dep-filter.xml:105 #: plugins/admin/departments/dep-list.xml:15 #: plugins/admin/departments/dep-list.xml:103 #: plugins/admin/departments/class_departmentManagement.inc:193 #: plugins/admin/departments/domain.tpl:5 #, fuzzy msgid "Domain" msgstr "trong miền" #: plugins/admin/departments/country.tpl:11 #: plugins/admin/departments/class_countryGeneric.inc:91 #, fuzzy msgid "Country name" msgstr "Quốc Gia" #: plugins/admin/departments/country.tpl:14 #, fuzzy msgid "Name of country to create" msgstr "Tên của cây con được tạo" #: plugins/admin/departments/dep-list.xml:11 #, fuzzy msgid "List of structural objects" msgstr "Danh sách các nhóm đối tượng" #: plugins/admin/departments/dep_move_confirm.tpl:2 msgid "You are currently moving/renaming this department." msgstr "Bạn hiện đang bỏ/đổi tên bộ phận này." #: plugins/admin/departments/dep_move_confirm.tpl:6 #, fuzzy msgid "" "Modifying a departments naming attribute 'ou' or base may corrupt ACLs and " "snapshot entries for all entire objects." msgstr "" "Thay đổi thuộc tính đặt tên 'ou' của các bộ phận hoặc cơ sở có thể ảnh hưởng " "đển các file acl và các entry snapshot cho toàn bộ các đối tượng." #: plugins/admin/departments/dep_move_confirm.tpl:9 msgid "GOsa can NOT fix this for you, yet." msgstr "Gosa chưa thể sửa được lỗi này cho bạn." #: plugins/admin/departments/dep_move_confirm.tpl:12 msgid "" "Before you confirm this action, ensure that everything will be as expected, " "possibly the best solution is a backup." msgstr "" "Trước khi bạn xác nhận hành động này, hãy đảm bảo rằng mọi thứ sẽ như mong " "đợi, có lẽ cách giải quyết tốt nhất là có một bản backup." #: plugins/admin/departments/organization.tpl:11 #, fuzzy msgid "Name of organization" msgstr "Tổ chức" #: plugins/admin/departments/organization.tpl:14 #, fuzzy msgid "Name of organization to create" msgstr "Tên của cây con được tạo" #: plugins/admin/departments/organization.tpl:30 #: plugins/admin/departments/generic.tpl:30 msgid "Category for this subtree" msgstr "Các danh mục cho cây con" #: plugins/admin/departments/organization.tpl:89 #: plugins/admin/departments/generic.tpl:90 msgid "State where this subtree is located" msgstr "Xác định xem tập cây con này ở đâu" #: plugins/admin/departments/organization.tpl:97 #: plugins/admin/departments/generic.tpl:98 msgid "Location of this subtree" msgstr "Vị trí của cây con" #: plugins/admin/departments/organization.tpl:105 #: plugins/admin/departments/generic.tpl:106 msgid "Postal address of this subtree" msgstr "Địa chỉ bưu điện của cây con này" #: plugins/admin/departments/organization.tpl:112 #: plugins/admin/departments/generic.tpl:113 msgid "Base telephone number of this subtree" msgstr "Đặt số điện thoại của cây con này" #: plugins/admin/departments/organization.tpl:120 #: plugins/admin/departments/generic.tpl:121 msgid "Base facsimile telephone number of this subtree" msgstr "Đặt số fax của cây con này" #: plugins/admin/departments/class_department.inc:439 msgid "Cannot find an unused tag for this administrative unit!" msgstr "Không thể tìm được một tag chưa được dùng cho đơn vị quản trị này!" #: plugins/admin/departments/class_department.inc:507 #, php-format msgid "Tagging '%s'." msgstr "Tagging '%s'." #: plugins/admin/departments/class_department.inc:588 #, php-format msgid "Moving '%s' to '%s'" msgstr "Chuyển từ '%s' đến '%s'" #: plugins/admin/departments/class_department.inc:629 #, php-format msgid "FAILED to copy %s, aborting operation" msgstr "Thất bại trong việc copy %s, bãi bỏ thao tác" #: plugins/admin/departments/class_department.inc:660 #: plugins/admin/departments/class_department.inc:671 msgid "Departments" msgstr "Các bộ phận" #: plugins/admin/departments/class_department.inc:674 msgid "Department name" msgstr "Tên bộ phận" #: plugins/admin/departments/class_department.inc:682 msgid "Telephone" msgstr "Số điện thoại" #: plugins/admin/departments/class_department.inc:737 #, php-format msgid "Object '%s' is already tagged" msgstr "Đối tượng '%s' đã bị tag" #: plugins/admin/departments/class_department.inc:744 #, php-format msgid "Adding tag (%s) to object '%s'" msgstr "Thêm tag (%s) vào đối tượng '%s'" #: plugins/admin/departments/class_department.inc:776 #, php-format msgid "Removing tag from object '%s'" msgstr "Bỏ tag từ đối tượng '%s'" #: plugins/admin/departments/dep_iframe.tpl:1 msgid "Processing the requested operation" msgstr "Xử lý thao tác được yêu cầu" #: plugins/admin/departments/dep_iframe.tpl:7 #, fuzzy msgid "" "Your browser doesn't support IFRAME HTML elements. Please use this link to " "perform the requested operation." msgstr "" "Trình duyệt của bạn không hỗ trợ iframe, xin hãy sử dụng đường link này để " "thực hiện những thao tác được yêu cầu." #: plugins/admin/departments/class_domain.inc:81 #: plugins/admin/departments/class_domain.inc:82 #: plugins/admin/departments/class_departmentManagement.inc:205 #: plugins/admin/departments/class_dcObject.inc:81 #: plugins/admin/departments/class_dcObject.inc:82 #, fuzzy msgid "Domain Component" msgstr "Admin miền" #: plugins/admin/departments/class_organizationGeneric.inc:122 #, fuzzy msgid "Organization name" msgstr "Tổ chức" #: plugins/admin/departments/class_organizationGeneric.inc:132 #: plugins/generic/infoPage/class_infoPage.inc:109 #, fuzzy msgid "Phone number" msgstr "Số điện thoại nhà" #: plugins/admin/departments/generic.tpl:11 msgid "Name of department" msgstr "Tên bộ phận" #: plugins/admin/departments/generic.tpl:14 msgid "Name of subtree to create" msgstr "Tên của cây con được tạo" #: plugins/admin/departments/generic.tpl:22 #, fuzzy msgid "Descriptive text for department" msgstr "Văn bản mô tả cho bộ phận" #: plugins/admin/departments/class_departmentManagement.inc:25 #, fuzzy msgid "Directory structure" msgstr "Thư mục" #: plugins/admin/departments/class_departmentManagement.inc:26 msgid "" "Manage organizations, organizational units, localities, countries and more" msgstr "" #: plugins/admin/departments/class_departmentManagement.inc:125 #, fuzzy msgid "" "As soon as the tag operation has finished, you can scroll down to end of the " "page and press the 'Continue' button to continue with the department " "management dialog." msgstr "" "Ngay sau khi thao tác tag kết thúc, bạn có thể kéo xuống cuối trang và kích " "vào phím \"Tiếp tục\" để tiếp tục với hộp thoại quản lý bộ phận." #: plugins/admin/departments/domain.tpl:11 #, fuzzy msgid "Domain name" msgstr "Admin miền" #: plugins/admin/departments/domain.tpl:14 #, fuzzy msgid "Name of domain to create" msgstr "Tên của cây con được tạo" #: plugins/admin/users/password.tpl:4 msgid "" "To change the user password use the fields below. The changes take effect " "immediately. Please memorize the new password, because the user wouldn't be " "able to login without it." msgstr "" "Để thay đổi mật khẩu người dùng sử dụng các trường dưới đây. Việc thay đổi " "sẽ có hiệu lực ngay lập tức. Hãy nhớ mật mã mới bởi người dùng sẽ không thể " "đăng nhập nếu thiếu nó." #: plugins/admin/users/password.tpl:11 plugins/admin/users/password.tpl:39 #, fuzzy msgid "Password input dialog" msgstr "Thay đổi mật khẩu" #: plugins/admin/users/password.tpl:27 plugins/admin/users/password.tpl:79 msgid "Strength" msgstr "Cường độ" #: plugins/admin/users/password.tpl:95 #, fuzzy msgid "Enforce password change on next login." msgstr "Ép buộc thay đổi mật khẩu trong khi đăng nhập" #: plugins/admin/users/templatize.tpl:2 msgid "Applying a template" msgstr "Áp dụng một mẫu" #: plugins/admin/users/templatize.tpl:6 msgid "" "Applying a template to several users will replace all user attributes " "defined in the template." msgstr "" "Việc áp dụng một mẫu cho vài người dùng sẽ thay thế tất cả các thuộc tính " "của người dùng được xác định trên mẫu." #: plugins/admin/users/templatize.tpl:13 #, fuzzy msgid "Apply user template" msgstr "Áp dụng mẫu" #: plugins/admin/users/templatize.tpl:15 plugins/admin/users/template.tpl:15 #: plugins/admin/users/class_userManagement.inc:546 #: plugins/admin/users/user-list.xml:15 plugins/admin/users/user-list.xml:102 msgid "Template" msgstr "Mẫu" #: plugins/admin/users/templatize.tpl:32 msgid "No templates available!" msgstr "Không có mẫu nào!" #: plugins/admin/users/user-filter.xml:33 #, fuzzy msgid "Show templates" msgstr "các mẫu" #: plugins/admin/users/user-filter.xml:47 #, fuzzy msgid "Show POSIX users" msgstr "Người sử dụng POSIX" #: plugins/admin/users/user-filter.xml:61 #, fuzzy msgid "Show SAMBA users" msgstr "các server" #: plugins/admin/users/user-filter.xml:75 #, fuzzy msgid "Show mail users" msgstr "Người dùng mail" #: plugins/admin/users/template.tpl:2 msgid "Creating a new user using templates" msgstr "Tạo ra một người sử dụng mới sử dụng các mấu" #: plugins/admin/users/template.tpl:6 msgid "" "Creating a new user can be assisted by using templates. Many database " "records will be filled automatically. Choose 'none' to skip the usage of " "templates." msgstr "" "Dùng các mẫu có thể hỗ trợ việc tạo ra một người sử dụng mới. Nhiều ghi chép " "cơ sở dữ liệu có thể tự động tiến hành. Chọn 'none' để bỏ qua việc sử dụng " "các mẫu." #: plugins/admin/users/template.tpl:13 msgid "User template selection dialog" msgstr "" #: plugins/admin/users/template.tpl:43 #, fuzzy msgid "Modify the uid proposal" msgstr "Hiệu chỉnh các tính năng chung" #: plugins/admin/users/class_userManagement.inc:26 msgid "" "Manage aspects of user accounts like generic, POSIX, samba and mail settings" msgstr "" #: plugins/admin/users/class_userManagement.inc:401 msgid "You have no permission to change this users password!" msgstr "Bạn không được phép thay đổi mật mã người dùng này!" #: plugins/admin/users/class_userManagement.inc:613 msgid "Cannot generate a unique id, please specify it manually!" msgstr "" #: plugins/admin/users/class_userManagement.inc:802 #, fuzzy msgid "Account locking" msgstr "Tài khoản" #: plugins/admin/users/class_userManagement.inc:803 #, php-format msgid "" "Password method '%s' does not support locking. Account (%s) has not been " "locked!" msgstr "" #: plugins/admin/users/class_userManagement.inc:876 #, fuzzy msgid "Unlock account" msgstr "Tài khoản của tôi" #: plugins/admin/users/class_userManagement.inc:878 #, fuzzy msgid "Lock account" msgstr "Tài khoản của tôi" #: plugins/admin/users/class_userManagement.inc:891 msgid "Edit generic properties" msgstr "Hiệu chỉnh các tính năng chung" #: plugins/admin/users/class_userManagement.inc:906 msgid "Netatalk" msgstr "Netatalk" #: plugins/admin/users/class_userManagement.inc:907 #, fuzzy msgid "Edit Netatalk properties" msgstr "Hiệu chỉnh các đặc tính của netatalk" #: plugins/admin/users/class_userManagement.inc:914 msgid "FAX" msgstr "Fax" #: plugins/admin/users/class_userManagement.inc:915 #, fuzzy msgid "Edit FAX properties" msgstr "Hiệu chỉnh các tính năng UNIX" #: plugins/admin/users/user-list.xml:11 msgid "List of users" msgstr "Danh sách người dùng" #: plugins/admin/users/user-list.xml:140 #, fuzzy msgid "Lock users" msgstr "Danh sách người dùng" #: plugins/admin/users/user-list.xml:148 #, fuzzy msgid "Unlock users" msgstr "Người dùng mail" #: plugins/admin/users/user-list.xml:167 msgid "Apply template" msgstr "Áp dụng mẫu" #: plugins/admin/users/user-list.xml:199 #, fuzzy msgid "New user from template" msgstr "Tạo ra người dùng từ một mẫu" #: plugins/admin/users/user-list.xml:213 #, fuzzy msgid "Edit user" msgstr "Hiệu chỉnh entry này" #: plugins/admin/users/user-list.xml:222 msgid "%{filter:lockLabel(userPassword)}" msgstr "" #: plugins/admin/users/user-list.xml:245 #, fuzzy msgid "Remove user" msgstr "Xóa ảnh " #: plugins/generic/welcome/class_welcome.inc:5 #: plugins/generic/welcome/class_welcome.inc:6 #, fuzzy msgid "Back to main menu" msgstr "Menu chính của GOsa" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:15 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:15 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:15 msgid "Maximum" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:16 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:16 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:16 msgid "Average" msgstr "" #: plugins/generic/statistics/chartClasses/class_memoryUsageChart.inc:17 #: plugins/generic/statistics/chartClasses/class_renderTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_durationTimeChart.inc:17 #: plugins/generic/statistics/chartClasses/class_cpuLoadChart.inc:17 msgid "Minimum" msgstr "" #: plugins/generic/statistics/chartClasses/class_actionSelectChart.inc:104 #, fuzzy msgid "Action" msgstr "Các thao tác" #: plugins/generic/statistics/chartClasses/class_statChart.inc:73 msgid "Systems" msgstr "Các hệ thống" #: plugins/generic/statistics/statistics.tpl:2 #, fuzzy msgid "Usage statistics" msgstr "Đăng nhập thống kê LDAP" #: plugins/generic/statistics/statistics.tpl:5 #: plugins/generic/statistics/statistics.tpl:10 msgid "" "This feature is disabled. To enable it you have to register GOsa, you can " "initiate a registration using the dash-board plugin." msgstr "" #: plugins/generic/statistics/statistics.tpl:6 #: plugins/generic/statistics/statistics.tpl:12 #, fuzzy msgid "Dash board" msgstr "Hướng dẫn cài đặt GOsa chi tiết " #: plugins/generic/statistics/statistics.tpl:16 msgid "" "Communication with the GOsa-backend failed. Please check the RPC " "configuration!" msgstr "" #: plugins/generic/statistics/statistics.tpl:22 msgid "Send" msgstr "" #: plugins/generic/statistics/statistics.tpl:28 msgid "Generate report for" msgstr "" #: plugins/generic/statistics/statistics.tpl:56 msgid "Update" msgstr "" #: plugins/generic/statistics/statistics.tpl:69 #: plugins/generic/statistics/statistics.tpl:78 msgid "No statistic data for given period" msgstr "" #: plugins/generic/statistics/statistics.tpl:87 #, fuzzy msgid "Select report type" msgstr "Chọn một dạng acl" #: plugins/generic/statistics/class_statistics.inc:263 #, fuzzy, php-format msgid "" "You have currently %s unsubmitted statistic collection, do you want to " "transmit them now?" msgstr "" "Bạn hiện đang hiệu chỉnh một entry vào cơ sở dữ liệu. Bạn có muốn hủy bỏ các " "thay đổi?" #: plugins/generic/dashBoard/dbChannelStatus/contents.tpl:1 #, fuzzy msgid "Channels" msgstr "Hủy bỏ" #: plugins/generic/dashBoard/Register/register.tpl:3 #, fuzzy msgid "GOsa registration" msgstr "Thiết lập GOsa chung " #: plugins/generic/dashBoard/Register/register.tpl:7 msgid "Do you want to register GOsa and benefit from the features it brings?" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:11 msgid "I do not want to register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:17 #: plugins/generic/dashBoard/dashBoard.tpl:5 msgid "Register" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:19 msgid "Additionally to the 'Annonomous' account you can:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:21 msgid "Access to 'Premium-Channels'." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:22 msgid "" "Watch the status of current plugin updates/patches and the availability of " "new plugins." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:23 msgid "Recieve newsletter, if wanted." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:24 msgid "View several usefull statistics about your GOsa installation" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:29 msgid "What information will be transmitted to the backend and maybe stored:" msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:31 msgid "All personal information filled in the registration form." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:32 msgid "Information about the installed plugins and their version." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:33 msgid "" "The GOsa-UUID (will be generated during the registration) and a password, to " "authenticate." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:34 msgid "" "The bugs you will report and the corresponding trace. You can select what " "information you want to send in." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:35 msgid "" "When the statistics extension is used. GOsa will transmit information about " "plugins, their usage and the amount of objects present in your ldap " "database. No sensitive data is transmitted here, just the object type, the " "action performed, cpu usage, memory usage, elapsed time..." msgstr "" #: plugins/generic/dashBoard/Register/register.tpl:69 #: plugins/generic/dashBoard/Register/register.tpl:80 #, fuzzy msgid "Registration complete" msgstr "Thao tác hoàn thành" #: plugins/generic/dashBoard/Register/register.tpl:71 #, fuzzy msgid "GOsa instance successfully registered" msgstr "Phiên sẽ không được mã hóa." #: plugins/generic/dashBoard/Register/register.tpl:82 #, fuzzy msgid "GOsa instance will not be registered" msgstr "Phiên sẽ không được mã hóa." #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:54 msgid "" "Communciation with the backend failed! Please check your internet connection!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:56 msgid "" "Authentication failed, please check combination of username and password!" msgstr "" #: plugins/generic/dashBoard/Register/class_RegistrationDialog.inc:58 msgid "" "Internal server error, please try again later. If the problem persists " "contact the GOsa-Team!" msgstr "" #: plugins/generic/dashBoard/dbNotifications/contents.tpl:1 #, fuzzy msgid "Notifications" msgstr "Tập lệnh thông báo" #: plugins/generic/dashBoard/dashBoard.tpl:2 msgid "This feature is only accessible for registrated instances of GOsa" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:7 msgid "" "Unfortunately the registration server cannot be reached, maybe the server is " "down for maintaince or you've no internet access!" msgstr "" #: plugins/generic/dashBoard/dashBoard.tpl:13 #, fuzzy msgid "GOsa dash board" msgstr "Hướng dẫn cài đặt GOsa chi tiết " #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:69 msgid "Version mismatch" msgstr "" #: plugins/generic/dashBoard/dbPluginStatus/class_dbPluginStatus.inc:73 #, fuzzy msgid "Schema missing" msgstr "Thiết lập dựa trên Schema" #: plugins/generic/dashBoard/dbPluginStatus/contents.tpl:1 #, fuzzy msgid "Plugin status" msgstr "Tình trạng hiện tại" #: plugins/generic/references/class_reference.inc:70 #, fuzzy msgid "Role membership" msgstr "Tư cách thành viên nhóm" #: plugins/generic/references/class_reference.inc:76 #, fuzzy msgid "Object group membership" msgstr "Nhóm đối tượng chung" #: plugins/generic/references/class_reference.inc:82 #, fuzzy msgid "Department manager" msgstr "Quản trị phòng ban " #: plugins/generic/references/class_reference.inc:88 #, fuzzy msgid "User manager" msgstr "Tên người dùng" #: plugins/generic/references/contents.tpl:2 #: plugins/generic/references/contents.tpl:3 #, fuzzy msgid "Object information" msgstr "Thông tin kết nối" #: plugins/generic/references/contents.tpl:7 msgid "Show raw object entry" msgstr "" #: plugins/generic/references/contents.tpl:18 #: plugins/generic/references/contents.tpl:20 #, fuzzy msgid "Last modification" msgstr "Chứng nhận người dùng" #: plugins/generic/references/contents.tpl:29 #, fuzzy msgid "Object references" msgstr "Các tham chiếu" #: plugins/generic/references/contents.tpl:45 #, fuzzy msgid "ACL trace" msgstr "Dạng ACL" #: plugins/generic/references/class_aclResolver.inc:143 msgid "Enter another user name" msgstr "" #: plugins/generic/references/class_aclResolver.inc:193 msgid "ACLs" msgstr "" #: plugins/generic/references/class_aclResolver.inc:198 #, php-format msgid "List of effective ACLs for '%s'" msgstr "" #: plugins/generic/references/class_aclResolver.inc:199 #: plugins/generic/references/class_aclResolver.inc:203 #, fuzzy msgid "Object permissions" msgstr "Thiết lập nhóm" #: plugins/generic/references/class_aclResolver.inc:311 #, fuzzy msgid "create" msgstr "Tạo " #: plugins/generic/references/class_aclResolver.inc:312 #, fuzzy msgid "remove" msgstr "Xóa bỏ" #: plugins/generic/references/class_aclResolver.inc:313 #, fuzzy msgid "move" msgstr "Xóa bỏ" #, fuzzy #~ msgid "Member selection" #~ msgstr "Thiết lập nhóm" #~ msgid "Use members from" #~ msgstr "Sử dụng các thành viên từ" #~ msgid "List message possible targets" #~ msgstr "Liệt kê các mục tiêu có thể gửi tin nhắn" #~ msgid "List message recipients" #~ msgstr "Liệt kê người nhận tin" #, fuzzy #~ msgid "Common group" #~ msgstr "các nhóm điện thoại" #, fuzzy #~ msgid "Groups differ" #~ msgstr "Nhóm người dùng" #, fuzzy #~ msgid "List of items" #~ msgstr "Danh sách người dùng" #, fuzzy #~ msgid "Edit item" #~ msgstr "Hiệu chỉnh các giấy phép" #, fuzzy #~ msgid "Remove item" #~ msgstr "Xóa ảnh " #, fuzzy #~ msgid "Container" #~ msgstr "Tiếp tục" #, fuzzy #~ msgid "Config management" #~ msgstr "Quản trị cấu hình/hệ thống-" #, fuzzy #~ msgid "Distribution" #~ msgstr "Mô tả" #, fuzzy #~ msgid "Component" #~ msgstr "Admin miền" #, fuzzy #~ msgid "Home phone" #~ msgstr "Số điện thoại nhà" #, fuzzy #~ msgid "Organizational unit" #~ msgstr "Tổ chức" #, fuzzy #~ msgid "Max" #~ msgstr "Tháng Năm" #, fuzzy #~ msgid "Min" #~ msgstr "Trang chính" #~ msgid "Welcome %s!" #~ msgstr "Chào mừng %s!" #, fuzzy #~ msgid "The folder %s specified for %s:%s cannot be used for reading!" #~ msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #, fuzzy #~ msgid "Object info" #~ msgstr "Đối tượng đang được sử dụng" #, fuzzy #~ msgid "Acls" #~ msgstr "lớp" #, fuzzy #~ msgid "" #~ "The file '%s' specified for '%s:%s' cannot be created neither be used for " #~ "writing!" #~ msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #, fuzzy #~ msgid "The rdn '%s' specified for '%s:%s' is invalid!" #~ msgstr "Lệnh '%s' cho plugin '%s' không hợp lệ!" #, fuzzy #~ msgid "The values for 'New password' and 'Repeated new password' differ!" #~ msgstr "" #~ "Các mật khẩu bạn vừa nhập vào: \"Mật khẩu mới\" và \"Mật khẩu lặp lại\" " #~ "không giống nhau." #, fuzzy #~ msgid "The password used as new and current are too similar!" #~ msgstr "Mật khẩu mới và mật khẩu cũ quá giống nhau." #, fuzzy #~ msgid "The password used as new is to short!" #~ msgstr "Mật khẩu mới cần được cắt ngắn lại." #, fuzzy #~ msgid "External password changer reported a problem: %s" #~ msgstr "Bộ thay đổi mật khẩu bên ngoài báo cáo có vấn đề:%s." #, fuzzy #~ msgid "" #~ "Command %s specified as post modify action for plugin %s does not exist!" #~ msgstr "Lệnh được cụ thể hóa là %s móc nối với plugin '%s' không tồn tại!" #, fuzzy #~ msgid "" #~ "Fatal error: no class locations defined - please run '%s' to fix this" #~ msgstr "" #~ "Lỗi nghiêm trọng: không có vị trí lớp nào được xác định - xin hãy chạy " #~ "'%s' để sửa lỗi này" #, fuzzy #~ msgid "" #~ "Fatal error: cannot instantiate class '%s' - try running '%s' to fix this" #~ msgstr "" #~ "Lỗi nghiêm trọng: không thể tạo ra lớp '%s' - hãy thử chạy '%s' để sửa " #~ "lỗi này" #, fuzzy #~ msgid "FATAL: Error when connecting the LDAP. Server said '%s'." #~ msgstr "" #~ "LỖI NGHIÊM TRỌNG: Lỗi khi đang kết nối với LDAP. Server thông báo '%s'." #, fuzzy #~ msgid "Username / UID is not unique inside the LDAP tree!" #~ msgstr "" #~ "Tên người dùng/UID không phải là duy nhất trong cây LDAP. Xin hãy liên " #~ "Lạc với Admin của bạn." #~ msgid "" #~ "Username / UID is not unique inside the LDAP tree. Please contact your " #~ "Administrator." #~ msgstr "" #~ "Tên người dùng/UID không phải là duy nhất trong cây LDAP. Xin hãy liên " #~ "Lạc với Admin của bạn." #~ msgid "Error while adding a lock. Contact the developers!" #~ msgstr "" #~ "Lỗi khi đang thêm một khóa vào. Hãy liên lạc với các nhà phát triển!" #~ msgid "LDAP server returned: %s" #~ msgstr "LDAP server trả về: %s" #~ msgid "" #~ "Found multiple locks for object to be locked. This should not happen - " #~ "cleaning up multiple references." #~ msgstr "" #~ "Tìm thấy nhiều khóa khác nhau để khóa đối tượng. Điều này không nên xảy " #~ "ra - hãy dọn sạch các tham chiếu." #, fuzzy #~ msgid "The size limit of %d entries is exceed!" #~ msgstr "Đã vượt quá giới hạn kích cỡ của các entry %d!" #~ msgid "" #~ "Set the new size limit to %s and show me this message if the limit still " #~ "exceeds" #~ msgstr "" #~ "Thiết lập kích cỡ mới cho %s và cho tôi thấy tin nhắn nếu giới hạn này " #~ "vẫn vượt quá tiêu chuẩn" #, fuzzy #~ msgid "incomplete" #~ msgstr "Đã hoàn thành" #~ msgid "You're going to edit the LDAP entry/entries %s" #~ msgstr "Bạn sẽ hiệu chỉnh entry/các entry %s của LDAP" #~ msgid "Apply filter" #~ msgstr "Áp dụng bộ lọc" #~ msgid "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" #~ msgstr "*ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" #, fuzzy #~ msgid "File '%s' could not be deleted." #~ msgstr "File '%s' không thể bị xóa." #, fuzzy #~ msgid "Cannot write to revision file!" #~ msgstr "Không thể viết lên revision file!" #~ msgid "LDAP warning" #~ msgstr "Cảnh báo LDAP" #, fuzzy #~ msgid "Cannot get schema information from server. No schema check possible!" #~ msgstr "" #~ "Không thể dùng thông tin lược đồ từ server. Không thể kiểm tra giản đồ!" #~ msgid "Used to store account specific informations." #~ msgstr "Đã từng lưu trữ thông tin cụ thể về tài khoản." #, fuzzy #~ msgid "" #~ "Used to lock currently edited entries to avoid multiple changes at the " #~ "same time." #~ msgstr "" #~ "Đã từng khóa các entry hiện đang được hiệu chỉnh nhằm tránh các thay đổi " #~ "khác nhau tại cùng một thời điểm." #, fuzzy #~ msgid "Missing required object class '%s'!" #~ msgstr "Lớp đối tượng lựa chọn '%s' mất tích!" #, fuzzy #~ msgid "Missing optional object class '%s'!" #~ msgstr "Lớp đối tượng lựa chọn '%s' mất tích!" #, fuzzy #~ msgid "Version mismatch for required object class '%s' (!=%s)!" #~ msgstr "Phiên bản không phù hợp với lớp đối tượng lựa chọn '%s' (!=%s)!" #, fuzzy #~ msgid "Class(es) available" #~ msgstr "Đã có lớp" #~ msgid "" #~ "You have enabled the rfc2307bis option on the 'ldap setup' step, but your " #~ "schema configuration do not support this option." #~ msgstr "" #~ "Bạn vừa bật lựa chọn rfc2307bis lên trên bước ' cài đặt ldap', nhưng cấu " #~ "hình giản đồ của bạn không hỗ trợ lựa chọn này." #, fuzzy #~ msgid "" #~ "In order to use rfc2307bis conform groups the objectClass 'posixGroup' " #~ "must be AUXILIARY" #~ msgstr "" #~ "Để có thể sử dụng được nhóm conform rfc2307bis, objectClass " #~ "'posixGroup' (nhóm posix) phải được hỗ trợ " #~ msgid "" #~ "Your schema is configured to support the rfc2307bis group, but you have " #~ "disabled this option on the 'ldap setup' step." #~ msgstr "" #~ "Lược đồ của bạn được cấu hình để hỗ trợ nhóm rfc2307bis, nhưng bạn đã vừa " #~ "tắt chức năng này đi trong bước 'cài đặt ldap'." #, fuzzy #~ msgid "The objectClass 'posixGroup' must be STRUCTURAL" #~ msgstr "ObjectClass (Lớp đối tượng) 'posixGroup' phải CÓ CẤU TRÚC" #~ msgid "" #~ "Command '%s', specified as POSTMODIFY for plugin '%s' doesn't seem to " #~ "exist." #~ msgstr "" #~ "Lệnh '%s', được xác định là POSTMODIFY (thay đổi sau) cho chế độ plugin " #~ "'%s' hình như không tồn tại." #, fuzzy #~ msgid "Cannot allocate a free ID:" #~ msgstr "Không thể phân phối một ID miễn phí!" #, fuzzy #~ msgid "Cannot allocate a free ID!" #~ msgstr "Không thể phân phối một ID miễn phí!" #, fuzzy #~ msgid "Surename" #~ msgstr "Họ " #~ msgid "External password changer reported a problem: %s." #~ msgstr "Bộ thay đổi mật khẩu bên ngoài báo cáo có vấn đề:%s." #~ msgid "Username" #~ msgstr "Tên người dùng" #~ msgid "" #~ "You've successfully changed your password. Remember to change all " #~ "programms configured to use it as well." #~ msgstr "" #~ "Bạn đã thay đổi mật khẩu thành công. Hãy nhớ thay đổi cả các chương trình " #~ "cấu hình để sử dụng được nó." #~ msgid "Ok" #~ msgstr "Ok" #, fuzzy #~ msgid "Grant permission to owner" #~ msgstr "Không thể thiết lập phép cho '%s'" #~ msgid "Password change not allowed" #~ msgstr "Bạn không được phép thay đổi mật khẩu" #~ msgid "Preferred langage" #~ msgstr "Ngôn ngữ muốn dùng" #~ msgid "Posix settings" #~ msgstr "Thiết lập Posix" #~ msgid "You have no permission to set your password!" #~ msgstr "Bạn không có quyền lập mật khẩu cho bạn!" #~ msgid "" #~ "You have changed the method your password is stored in the ldap database. " #~ "For that reason you've to enter your password at this point again. GOsa " #~ "will then encode it with the selected method." #~ msgstr "" #~ "Bạn đã thay đổi phương pháp mà mật khẩu của bạn được lưu trữ trong cơ sở " #~ "dữ liệu ldap. Vì lý do đó bạn phải nhập mật khẩu lại tại điểm này. Gosa " #~ "sau đó sẽ mã hóa nó với phương pháp đã được lựa chọn." #~ msgid "Posix" #~ msgstr "Posix" #, fuzzy #~ msgid "Edit posix properties" #~ msgstr "Hiệu chỉnh các tính năng điện thoại" #~ msgid "winstations" #~ msgstr "máy trạm dùng win " #, fuzzy #~ msgid "Sytem trust" #~ msgstr "Ủy thác hệ thống" #, fuzzy #~ msgid "Processing" #~ msgstr "Cho phép" #, fuzzy #~ msgid "Created" #~ msgstr "Tạo " #, fuzzy #~ msgid "No Content" #~ msgstr "Nội dung" #, fuzzy #~ msgid "Reset Content" #~ msgstr "Nội dung" #, fuzzy #~ msgid "Partial Content" #~ msgstr "Nội dung" #, fuzzy #~ msgid "Multi-Status" #~ msgstr "Trạng thái" #, fuzzy #~ msgid "Multiple Choice" #~ msgstr "Hiệu chỉnh đa dạng" #, fuzzy #~ msgid "See Other" #~ msgstr "Chọn người dùng" #, fuzzy #~ msgid "Not Modified" #~ msgstr "Không cho phép" #, fuzzy #~ msgid "Use Proxy" #~ msgstr "Proxy" #, fuzzy #~ msgid "(reserviert)" #~ msgstr "các server" #, fuzzy #~ msgid "Not Found" #~ msgstr "Không cho phép" #, fuzzy #~ msgid "Method Not Allowed" #~ msgstr "Không cho phép" #, fuzzy #~ msgid "Proxy Authentication Required" #~ msgstr "Lỗi xác định thẩm quyền" #, fuzzy #~ msgid "Gone" #~ msgstr "không có" #, fuzzy #~ msgid "Precondition Failed" #~ msgstr "Viết file cấu hình" #, fuzzy #~ msgid "Expectation Failed" #~ msgstr "Hoạt động LDAP thất bại!" #, fuzzy #~ msgid "Locked" #~ msgstr "Danh sách người dùng" #, fuzzy #~ msgid "Unordered Collection" #~ msgstr "Thiết lập nhóm" #, fuzzy #~ msgid "Internal Server Error" #~ msgstr "Lỗi nội bộ" #, fuzzy #~ msgid "Not Implemented" #~ msgstr "Đã hoàn thành" #~ msgid "GOsa settings 3/3" #~ msgstr "Thiết lập GOsa 3/3" #~ msgid "Tweak some GOsa core behaviour" #~ msgstr "Chỉnh sửa một số đặc tính lõi của GOsa" #~ msgid "Session lifetime must be a numeric value!" #~ msgstr "Khoảng thời gian của phiên phải là một giá trị số!" #~ msgid "Maximum LDAP query time must be a numeric value!" #~ msgstr "Thời gian tối đa để yêu cầu LDAP phải là một giá trị số!" #~ msgid "" #~ "This seems to be the first time you start GOsa - we didn't find any " #~ "configuration right now. This simple wizard intends to help you while " #~ "setting it up." #~ msgstr "" #~ "Có vẻ đây là lần đầu tiên bạn khởi động Gosa - chúng tôi không tìm thấy " #~ "cấu hình nào ngay lúc này. Wizard đơn giản dự định giúp bạn trong khi " #~ "đang cài đặt nó." #~ msgid "What will the wizard do for you?" #~ msgstr "Wizard sẽ giúp bạn những gì?" #~ msgid "Create a basic, single site configuration" #~ msgstr "Tạo ra một cấu hình trang đơn, đơn giản" #~ msgid "Tries to find problems within your PHP and LDAP setup" #~ msgstr "Cố gắng tìm ra vấn đề trong cài đặt PHP và LDAP của bạn " #~ msgid "" #~ "Let you choose from a set of basic and advanced configuration switches" #~ msgstr "" #~ "Cho phép bạn lựa chọn từ một loạt các phím chuyển cấu hình cơ bản và cao " #~ "cấp" #~ msgid "Guided migration of existing LDAP trees" #~ msgstr "Di trú có hướng dẫn của các cây LDAP hiện có" #~ msgid "What will the wizard NOT do for you?" #~ msgstr "Wizard không thể làm gì được cho bạn?" #~ msgid "Find every possible configuration error" #~ msgstr "Tìm được mọi lỗi cấu hình có thể xảy ra" #~ msgid "Migrate every possible LDAP setup - create backup dumps!" #~ msgstr "Di trú mọi cài đặt LDAP - và tạo ra các xổ backup!" #~ msgid "To continue..." #~ msgstr "Còn nữa..." #~ msgid "Samba settings" #~ msgstr "Thiết lập Samba" #~ msgid "Samba hash generator" #~ msgstr "Bộ tạo ra các hàm băm Samba" #~ msgid "Samba SID" #~ msgstr "SID của Samba" #~ msgid "RID base" #~ msgstr "Gốc RID" #~ msgid "Workstation container" #~ msgstr "Công ten nơ chứa máy trạm" #~ msgid "Samba SID mapping" #~ msgstr "Ánh xạ SID samba" #~ msgid "Timezone" #~ msgstr "Múi giờ" #~ msgid "Please choose your preferred timezone here" #~ msgstr "Xin hãy lựa chọn múi giờ bạn muốn ở đây" #~ msgid "Additional GOsa settings" #~ msgstr "Thiết lập thêm của GOsa" #~ msgid "Enable Copy & Paste" #~ msgstr "Bật chức năng Copy & Paste" #~ msgid "Government mode" #~ msgstr "Chế độ nhà nước" #, fuzzy #~ msgid "GOsa logging" #~ msgstr "Màn hình đăng nhập GOsa" #~ msgid "Mail settings" #~ msgstr "Thiết lập mail" #~ msgid "Mail method" #~ msgstr "Phương pháp Mail" #~ msgid "Account identification attribute" #~ msgstr "Thuộc tính xác minh tài khoản" #~ msgid "Vacation templates" #~ msgstr "Mẫu kỳ nghỉ" #~ msgid "Use Cyrus UNIX style" #~ msgstr "Sử dụng phong cách Cyrus Unix" #~ msgid "Snapshots / Undo" #~ msgstr "Snapshots/Undo" #~ msgid "Enable snapshots" #~ msgstr "Bật chức năng snapshots" #~ msgid "Snapshot base" #~ msgstr "Gốc snapshot" #~ msgid "GOsa settings 2/3" #~ msgstr "Các thiết lập GOsa 2/3" #~ msgid "Customize special parameters" #~ msgstr "Tùy biến các thông số đặc biệt" #~ msgid "Enable schema validation when logging in" #~ msgstr "Cho phép thông qua lược đồ khi đăng nhập" #~ msgid "Checking for invisible departments" #~ msgstr "Kiểm tra các bộ phận ẩn" #~ msgid "Checking for invisible users" #~ msgstr "Kiểm tra những người dùng ẩn" #~ msgid "Checking for users outside the people tree" #~ msgstr "Kiểm tra người dùng bên ngoài cây con người" #~ msgid "Checking for groups outside the groups tree" #~ msgstr "Kiểm tra nhóm bên ngoài cây nhóm" #~ msgid "Checking for windows workstations outside the winstation tree" #~ msgstr "Kiểm tra máy trạm window bên ngoài cây máy trạm window" #~ msgid "Checking for duplicated UID numbers" #~ msgstr "Kiểm tra các số ID cuả người dùng (UID) được nhân bản" #~ msgid "Checking for duplicate GID numbers" #~ msgstr "Kiểm tra các số ID của nhóm (GID) được nhân bản" #, fuzzy #~ msgid "Checking for old style USB devices" #~ msgstr "Kiểm tra đối tượng gốc" #, fuzzy #~ msgid "Checking for old services that have to be migrated" #~ msgstr "Kiểm tra người dùng bên ngoài cây con người" #, fuzzy #~ msgid "Checking for old style application menus" #~ msgstr "Kiểm tra các bộ phận ẩn" #~ msgid "Found %s duplicate values for attribute 'uidNumber'." #~ msgstr "Đã tìm được %s giá trị nhân bản cho thuộc tính 'uidNumder'." #~ msgid "Found %s duplicate values for attribute 'gidNumber'." #~ msgstr "Đã tìm được %s giá trị nhân bản cho thuộc tính 'gidNumder'." #~ msgid "" #~ "Found %s winstations outside the predefined winstation department ou '%s'." #~ msgstr "" #~ "Đã tìm thấy %s máy trạm win bên ngoài bộ phận winstation đã được xác định " #~ "trước '%s'." #~ msgid "Move" #~ msgstr "Chuyển" #~ msgid "Found %s user(s) outside the configured tree '%s'." #~ msgstr "Đã tìm thấy %s người dùng bên ngoài cây được cấu hình '%s'." #~ msgid "Found %s user(s) that will not be visible in GOsa." #~ msgstr "Đã tìm thấy %s người dùng mà không hiên thị trên GOsa." #~ msgid "Cannot migrate department '%s':" #~ msgstr "Không thể di trú bộ phận '%s':" #~ msgid "Found %s department(s) that will not be visible in GOsa." #~ msgstr "Tìm thấy %s bộ phận mà không hiển thị trên Gosa." #, fuzzy #~ msgid "GOsa 2.5 administrative accounts found: %s" #~ msgstr "Tạo ra một tài khoản admin GOsa mới" #, fuzzy #~ msgid "There is no valid GOsa 2.6 administrator account inside your LDAP." #~ msgstr "Không có một tài khoản Admin cùa Gosa nào trong LDAP của bạn." #~ msgid "Cannot move users to the requested department!" #~ msgstr "Không thể chuyển người dùng đến bộ phận được yêu cầu!" #~ msgid "to" #~ msgstr "đến" #~ msgid "Updating following references too" #~ msgstr "Cập nhật cả các tham chiếu sau" #~ msgid "User will be moved from" #~ msgstr "Người dùng sẽ được chuyển từ" #~ msgid "Copy '%s' to '%s' failed:" #~ msgstr "Sao chép '%s' đến '%s' bị thất bại:" #, fuzzy #~ msgid "Updating '%s' failed: %s" #~ msgstr "Tải lên thất bại: %s" #~ msgid "Look and feel" #~ msgstr "Xem và cảm nhận" #~ msgid "Theme" #~ msgstr "Theme" #~ msgid "Apache" #~ msgstr "Apache" #~ msgid "Compress output send to browser" #~ msgstr "Nén output lại gửi cho trình duyệt" #~ msgid "People and group storage" #~ msgstr "Kho lưu trữ người và nhóm" #~ msgid "People DN attribute" #~ msgstr "Thuộc tính DN người" #~ msgid "People storage subtree" #~ msgstr "Cây con lưu trữ người" #~ msgid "Group storage subtree" #~ msgstr "Cây con lưu trữ nhóm" #~ msgid "Include personal title in user DN" #~ msgstr "Bao gồm chức danh cá nhân trong DN của người dùng" #~ msgid "Relaxed naming policies" #~ msgstr "Chính sách đặt tên thoải mái" #~ msgid "Automatic UIDs" #~ msgstr "Các UID tự động" #~ msgid "GID / UID min id" #~ msgstr "ID min GID/UID" #~ msgid "Number base for people/groups" #~ msgstr "Cơ sơ số cho người/nhóm" #~ msgid "Hook for number base" #~ msgstr "Móc nối với cơ sở số" #~ msgid "Password settings" #~ msgstr "Thiết lập mật khẩu" #~ msgid "Password encryption algorithm" #~ msgstr "Thuật toán mã hóa mật khẩu" #~ msgid "Password restrictions" #~ msgstr "Các hạn chế mật khẩu" #~ msgid "Password minimum length" #~ msgstr "Độ dài tối thiểu của mật khẩu" #~ msgid "Different characters from old password" #~ msgstr "Các ký tự khác với mật khẩu cũ" #~ msgid "Password change hook" #~ msgstr "Móc nối việc thay đổi mật khẩu" #~ msgid "Use SASL for kerberos" #~ msgstr "Sử dụng ngôn ngữ SASL cho hệ thống Kerberos" #~ msgid "Use account expiration" #~ msgstr "Sử dụng việc hết hạn tài khoản" #~ msgid "" #~ "GOsa supports several encryption types for your passwords. Normally this " #~ "is adjustable via user templates, but you can specify a default method to " #~ "be used here, too." #~ msgstr "" #~ "GOsa hỗ trợ một vài kiểu mã hóa cho các mật khẩu của bạn. Thông thường " #~ "thì việc này có thể được điều chỉnh thông qua các khuôn mẫu của người " #~ "dùng, nhưng bạn có thể xác định một phương pháp mặc định để nó cũng được " #~ "sử dụng ở đây." #~ msgid "" #~ "GOsa always acts as admin and manages access rights internally. This is a " #~ "workaround till OpenLDAP's in directory ACI's are fully implemented. " #~ "For this to work, we need the admin DN and the corresponding password." #~ msgstr "" #~ "GOsa sẽ luôn luôn đóng vai trò admin và quản lý các quyền truy cập nội " #~ "bộ. Đây là một cách khác cho tới khi các file OpenLDAP' trong thư mục và " #~ "ACI's được thực hiện đầy đủ. Để làm được điều này, chúng ta cần DN của " #~ "admin và mật khẩu tương ứng." #~ msgid "" #~ "Some basic LDAP parameters are tunable and affect the locations where " #~ "GOsa saves people and groups, including the way accounts get created. " #~ "Check the values below if the fit your needs." #~ msgstr "" #~ "Một số thông số cơ bản của LDAP có thể được điều chỉnh và ảnh hưởng tới " #~ "nơi mà Gosa lưu trữ thông tin về người và nhóm, bao gồm cả cách mà các " #~ "tài khoản được lập ra. Kiểm tra các giá trị dưới đây nếu chúng phù hợp " #~ "với nhu cầu của bạn." #~ msgid "" #~ "GOsa has modular support for several mail methods. These methods provide " #~ "interfaces to users mailboxes and general handling for quotas. You can " #~ "choose the dummy plugin to leave all your mail settings untouched." #~ msgstr "" #~ "GOsa có mô-đun hỗ trợ cho một vài phương pháp gửi thư. Các phương pháp " #~ "này cung cấp các giao diện đến hộp thư của người dùng và cách giải quyết " #~ "thông thường với các hạn ngạnh. Bạn có thể lựa chọn chế độ dummy plugin " #~ "để không ai đụng tới được tất cả các thiết lập mail của bạn." #, fuzzy #~ msgid "Enable primary group filter" #~ msgstr "Vô hiệu bộ lọc nhóm sơ cấp" #~ msgid "Display summary in listings" #~ msgstr "Hiển thị tóm tắt trên danh sách" #~ msgid "Honour administrative units" #~ msgstr "Các đơn vị quản trị chức danh" #~ msgid "SNMP community" #~ msgstr "Cộng đồng SNMP" #~ msgid "Path for PPD storage" #~ msgstr "Đường dẫn đến kho lưu trữ PPD" #~ msgid "Mail queue script" #~ msgstr "Tập lệnh sắp hàng mail" #~ msgid "Enable edit locking" #~ msgstr "Bật chức năng khóa việc hiệu chỉnh lên" #, fuzzy #~ msgid "Gosa support daemon" #~ msgstr "GOsa hỗ trợ chương trình daemon" #~ msgid "Login and session" #~ msgstr "Đăng nhập và phiên" #~ msgid "Enforce register_globals to be deactivated" #~ msgstr "Tắt chức năng đăng ký _toàn cầu " #~ msgid "Warn if session is not encrypted" #~ msgstr "Cảnh báo nếu một phiên chưa được mã hóa" #~ msgid "Remember dialog filter settings" #~ msgstr "Nhớ thiết lập bộ lọc đối thoại " #~ msgid "Session lifetime" #~ msgstr "Thời gian cho một phiên (một Session)" #~ msgid "Debugging" #~ msgstr "Sửa lỗi" #~ msgid "Show PHP errors" #~ msgstr "Hiển thị lỗi PHP" #~ msgid "Maximum LDAP query time" #~ msgstr "Thời gian truy vấn LDAP tối đa" #~ msgid "Debug level" #~ msgstr "Cấp độ sửa lỗi" #~ msgid "Disabled" #~ msgstr "Vô hiệu hóa/ Tắt chức năng" #~ msgid "" #~ "Move windows workstations into a valid windows workstation department" #~ msgstr "" #~ "Chuyển một máy trạm window thành một bộ phận máy trạm windown có hiệu lực" #~ msgid "" #~ "This dialog allows you to move the displayed windows workstations into a " #~ "valid department" #~ msgstr "" #~ "Hộp thoại này cho phép bạn chuyển từ một máy trạm window được hiển thị " #~ "sang một bộ phận có hiệu lực" #~ msgid "" #~ "Be careful with this tool, there may be references pointing to this " #~ "workstations that can't be migrated." #~ msgstr "" #~ "Hãy cẩn thận với công cụ này, có thể có các tham chiếu hướng đến máy trạm " #~ "này mà không thể được du nhập vào." #~ msgid "" #~ "Move selected windows workstations into the following GOsa department" #~ msgstr "" #~ "Chuyển những máy trạm window đã chọn vào trong những bộ phận GOsa tiếp " #~ "theo" #~ msgid "Move selected workstations" #~ msgstr "Chuyển các máy trạm đã chọn" #~ msgid "What will be done here" #~ msgstr "Việc sẽ được làm ở đây" #~ msgid "Move groups into configured group tree" #~ msgstr "Chuyển nhóm thành cây nhóm đã được cấu hình" #~ msgid "" #~ "This dialog allows moving a couple of groups to the configured group " #~ "tree. Doing this may straighten your LDAP service." #~ msgstr "" #~ "Hộp thoại này cho phép việc chuyển một vài nhóm đến cây nhóm đã được cấu " #~ "hình. Thực hiện việc này có thể sẽ làm gọn gàng dịch vụ LDAP của bạn." #~ msgid "" #~ "Be careful with this option! There may be references pointing to these " #~ "groups. The GOsa setup can't migrate references, so you may want to " #~ "cancel the migration in this case." #~ msgstr "" #~ "Hãy cẩn thận với lựa chọn này! Có thể có các thông tin tham chiếu hướng " #~ "đến nhóm này. Cài đặt Gosa không thể di trú các tham chiếu này, vì thế " #~ "bạn có thể muốn hủy bỏ việc di trú trong trường hợp này." #~ msgid "Move selected groups into this group tree" #~ msgstr "Chuyển các nhóm đã chọn vào trong các cây nhóm" #~ msgid "Hide changes" #~ msgstr "Ẩn các thay đổi" #~ msgid "Show changes" #~ msgstr "Hiển thị các thay đổi" #~ msgid "Move users into configured user tree" #~ msgstr "Chuyển người dùng sang cây người dùng được cấu hình" #~ msgid "" #~ "This dialog allows moving a couple of users to the configured user tree. " #~ "Doing this may straighten your LDAP service." #~ msgstr "" #~ "Hộp thoại này cho phép việc chuyển một vài nhóm đến cây nhóm đã được cấu " #~ "hình. Thực hiện việc này có thể sẽ làm gọn gàng dịch vụ LDAP của bạn." #~ msgid "" #~ "Be careful with this option! There may be references pointing to these " #~ "users. The GOsa setup can't migrate references, so you may want to cancel " #~ "the migration in this case." #~ msgstr "" #~ "Hãy cẩn thận với lựa chọn này! Có thể có các thông tin tham chiếu hướng " #~ "đến nhóm này. Cài đặt Gosa không thể di trú các tham chiếu này, vì thế " #~ "bạn có thể muốn hủy bỏ việc di trú trong trường hợp này." #~ msgid "Move selected users into this people tree" #~ msgstr "Chuyển người dùng sang cây người dùng được cấu hình" #, fuzzy #~ msgid "Migrate GOsa 2.5 administrative accounts" #~ msgstr "Tạo ra một tài khoản admin GOsa mới" #~ msgid "Abort" #~ msgstr "Ngừng lại" #~ msgid "" #~ "The listed departments are currently invisible in the GOsa user " #~ "interface. If you want to change this for a couple of entries, select " #~ "them and use the migrate button below." #~ msgstr "" #~ "Các bộ phận được liệt kê hiện đang bị ẩn trên giao diện người dùng của " #~ "GOsa. Nếu bạn muốn thay đổi việc này cho một số entry, lựa chọn chúng và " #~ "sử dụng phím 'di trú' ở dưới." #~ msgid "" #~ "If you want to know what will be done when migrating the selected " #~ "entries, use the 'Show changes' button to see the LDIF." #~ msgstr "" #~ "Nếu bạn muốn biết việc gì sẽ được tiến hành khi di trú các entry được " #~ "chọn này, hãy sử dụng phím 'hiển thị thay đổi 'để xem định dạng LDIF." #, fuzzy #~ msgid "" #~ "The listed users are currently invisible in the GOsa user interface. If " #~ "you want to change this for a couple of users, just select them and use " #~ "the 'Migrate' button below." #~ msgstr "" #~ "Các bộ phận được liệt kê hiện đang bị ẩn trên giao diện người dùng của " #~ "Gosa. Nếu bạn muốn thay đổi việc này cho một số entry, lựa chọn chúng và " #~ "sử dụng phím \"Di trú\" ở dưới." #, fuzzy #~ msgid "" #~ "The listed devices are currently invisible in the GOsa interface. If you " #~ "want to change this for a couple of devices, just select them and use the " #~ "'Migrate' button below." #~ msgstr "" #~ "Các bộ phận được liệt kê hiện đang bị ẩn trên giao diện người dùng của " #~ "Gosa. Nếu bạn muốn thay đổi việc này cho một số entry, lựa chọn chúng và " #~ "sử dụng phím \"Di trú\" ở dưới." #, fuzzy #~ msgid "Refresh" #~ msgstr "Các tham chiếu" #, fuzzy #~ msgid "" #~ "The listed services are currently invalid for the GOsa version you are " #~ "going to install. If you want to update a couple of service, just select " #~ "them and use the 'Migrate' button below." #~ msgstr "" #~ "Các bộ phận được liệt kê hiện đang bị ẩn trên giao diện người dùng của " #~ "Gosa. Nếu bạn muốn thay đổi việc này cho một số entry, lựa chọn chúng và " #~ "sử dụng phím \"Di trú\" ở dưới." #, fuzzy #~ msgid "" #~ "The listed menus are currently invisible in the GOsa interface. If you " #~ "want to change this for a couple of devices, just select them and use the " #~ "'Migrate' button below." #~ msgstr "" #~ "Các bộ phận được liệt kê hiện đang bị ẩn trên giao diện người dùng của " #~ "Gosa. Nếu bạn muốn thay đổi việc này cho một số entry, lựa chọn chúng và " #~ "sử dụng phím \"Di trú\" ở dưới." #~ msgid "Installation" #~ msgstr "Cài đặt" #~ msgid "GOsa settings 1/3" #~ msgstr "Thiết lập GOsa 1/3" #~ msgid "The specified value for '%s' must be a numeric value" #~ msgstr "Gía trị cụ thể cho '%s' phải là một giá trị số" #~ msgid "Don't add a trailing comma to '%s'." #~ msgstr "Đừng thêm dấu phẩy đuôi vào '%s'." #~ msgid "People storage ou" #~ msgstr "ou lưu trữ người" #~ msgid "Group storage ou" #~ msgstr "ou lưu trữ nhóm" #~ msgid "Uid base must be numeric" #~ msgstr "Gốc UID phải là số" #~ msgid "The given password minimum length is not numeric." #~ msgstr "Độ dài tối thiểu của mật khẩu đã cho không phải là số." #~ msgid "The given password differ value is not numeric." #~ msgstr "Gía trị khác của mật khẩu cho trước không phải là số." #~ msgid "Available members" #~ msgstr "Những thành viên đang có mặt" #~ msgid "GOsa login screen" #~ msgstr "Màn hình đăng nhập GOsa" #~ msgid "Login screen" #~ msgstr "Màn hình đăng nhập" #~ msgid "" #~ "Please use your username and your password to log into the site " #~ "administration system." #~ msgstr "" #~ "Xin hãy sử dụng tên và mật khẩu của bạn để đăng nhập vào trang hệ thống " #~ "quản trị." #~ msgid "Sign in" #~ msgstr "Đăng ký" #~ msgid "" #~ "This may be used by several groups. Please double check if your really " #~ "want to do this since there is no way for GOsa to get your data back." #~ msgstr "" #~ "Thứ này có thể được sử dụng bởi một vài nhóm. Xin hãy kiểm tra hai lần " #~ "nếu bạn thực sự muốn làm điều này bởi vì sẽ không có cách nào để GOsa " #~ "phục hồi dữ liệu cho bạn." #~ msgid "" #~ "So - if you're sure - press 'Delete' to continue or 'Cancel' to abort." #~ msgstr "" #~ "Vì thế nếu bạn chắc chắn hãy nhấn \"Xóa bỏ\" để tiếp tục hoặc'Hủy bỏ' để " #~ "dừng lại." #~ msgid "Help" #~ msgstr "Trợ giúp" #~ msgid "Sign out" #~ msgstr "Đăng xuất" #~ msgid "Signed in:" #~ msgstr "Đăng nhập:" #~ msgid "Success" #~ msgstr "Thành công" #~ msgid "New password repeated" #~ msgstr "Mật khẩu mới được lặp lại" #~ msgid "Change" #~ msgstr "Thay đổi" #~ msgid "UNIX" #~ msgstr "UNIX" #~ msgid "FTP" #~ msgstr "FTP " #~ msgid "Thin Client" #~ msgstr "Máy khách yếu" #~ msgid "Object name" #~ msgstr "Tên đối tượng" #~ msgid "This object has no relationship to other objects." #~ msgstr "Đối tượng này không có mối quan hệ nào với các đối tượng khác." #~ msgid "" #~ "Changing the password affects your authentification on mail, proxy, samba " #~ "and unix services." #~ msgstr "" #~ "Thay đổi mật khẩu có thể ảnh hưởng đến sự xác nhận của bạn lên các dịch " #~ "vụ mail, ủy quyền (proxy), samba và unix." #~ msgid "" #~ "(Some types of certificates are currently not supported and may be " #~ "displayed as 'invalid'.)" #~ msgstr "" #~ "(Một số loại chứng nhận hiện không được hỗ trợ và có thể hiển thị 'không " #~ "hợp lệ'.)" #~ msgid "Personal picture" #~ msgstr "Ảnh cá nhân" #~ msgid "In all groups" #~ msgstr "Trong tất cả các nhóm" #~ msgid "Not in all groups" #~ msgstr "Không ở trong tất cả các nhóm" #, fuzzy #~ msgid "! unknown UID" #~ msgstr "! không nhận ra id này" #~ msgid "" #~ "Search returned too many results. Not displaying more than %s entries!" #~ msgstr "" #~ "Việc tìm kiếm có quá nhiều kết quả. Không hiển thị nhiều hơn %s mục vào!" #~ msgid "All categories" #~ msgstr "Tất cả các mục" #~ msgid "All objects in current subtree" #~ msgstr "Tất cả các đối tượng hiện trong cây thư mục con hiện tại" #~ msgid "Startup" #~ msgstr "Khởi động" #~ msgid "FAI summary" #~ msgstr "Tóm tắt FAI" #~ msgid "Cannot bind to LDAP. Please contact the system administrator." #~ msgstr "" #~ "Không thể nối kết với LDAP. Xin hãy liên lạc với với admin hệ thống." #~ msgid "The mcrypt module was not found. Please install php5-mcrypt." #~ msgstr "Không tìm thấy Mô-đun mcrypt. Xin hãy cài đặt php5-mcrypt." #~ msgid "Password reset" #~ msgstr "Xác lập lại mật khẩu" #~ msgid "Up" #~ msgstr "Lên" #~ msgid "Down" #~ msgstr "Xuống" #~ msgid "" #~ "The timezone setting '%s' in your gosa.conf is not valid. Cannot " #~ "calculate correct timezone offset." #~ msgstr "" #~ "Múi giờ thiết lập '%s' trong gosa.config không hợp lệ. Không thể tính " #~ "toán chính xác thời gian bù thêm vào múi giờ." #~ msgid "Select to list objects of type '%s'." #~ msgstr "Chọn để liệt kê các đối tượng loại '%s'." #~ msgid "Select to list objects containig '%s'." #~ msgstr "Chọn để liệt kê đối tượng chứa '%s'." #~ msgid "Select to list objects that have '%s' enabled" #~ msgstr "Chọn để liệt kê đối tượng mà cho phép '%s'" #~ msgid "Select to search within subtrees" #~ msgstr "Chọn để tìm kiếm trong các cây con" #, fuzzy #~ msgid "in" #~ msgstr "Trang chính" #, fuzzy #~ msgid "on line" #~ msgstr "Tiếp tục" #~ msgid "Contains ACLs for these objects: %s" #~ msgstr "Có chứa ACLs cho các đối tượng: %s " #~ msgid "Role: %s" #~ msgstr "Vai trò: %s" #~ msgid "Go up one department" #~ msgstr "Đi lên một bộ phận" #~ msgid "Go to users department" #~ msgstr "Đi đến bộ phận người dùng" #~ msgid "Remove snapshot" #~ msgstr "Xóa snapshot" #~ msgid "Send bug report to the GOsa Team" #~ msgstr "Gửi báo cáo lỗi cho nhóm phát triển GOsa" #~ msgid "Toggle information" #~ msgstr "Thông tin Toggle" #~ msgid "All objects in this category" #~ msgstr "Tất cả các đối tượng trong hạng mục này" #~ msgid "" #~ "The object has changed since opened in GOsa. All changes that may be done " #~ "by others get lost if you save this entry!" #~ msgstr "" #~ "Đối tượng đã bị thay đổi từ khi được mở trong GOsa. Nếu bạn lưu entry này " #~ "lại, khi các đối tượng khác lạc hướng có thể gây ra thêm tất cả các thay " #~ "đổi!" #~ msgid "Changing ACL dn" #~ msgstr "Thay đổi ACL dn" #~ msgid "from" #~ msgstr "Từ" #~ msgid "Restore" #~ msgstr "Phục hồi" #~ msgid "cut" #~ msgstr "cắt" #~ msgid "User information is not unique accross the configured LDAP trees!" #~ msgstr "" #~ "Thông tin người dùng không phải là duy nhất trong tất cả các cây LDAP đã " #~ "được cấu hình!" #~ msgid "Your LDAP setup contains old schema definitions:" #~ msgstr "Cài đặt LDAP của bạn có chứa các định nghĩa lược đồ cũ:" #~ msgid "" #~ "FATAL: Register globals is on. GOsa will refuse to login unless this is " #~ "fixed by an administrator." #~ msgstr "" #~ "LỖI NGHIÊM TRỌNG: Đăng ký toàn cầu đang bật. GOsa sẽ từ chối đăng nhập " #~ "vào trừ khi lỗi này được một admin sửa." #, fuzzy #~ msgid "Prpperties" #~ msgstr "Properties" #~ msgid "Old password" #~ msgstr "Mật khẩu cũ" #~ msgid "Verify password" #~ msgstr "Xác minh mật khẩu" #~ msgid "Session conflict detected" #~ msgstr "Phát hiện xung đột giữa các phiên" #~ msgid "" #~ "Probably there's another active instance of your session. Multiple window " #~ "operation is technical not possible and heavily depends on the browser " #~ "you're using. Usage of different browsers at a time (i.e. IE and Mozilla) " #~ "is possible. Pressing the Logout button will close this session." #~ msgstr "" #~ "Có lẽ có một chức năng khác nữa trong phiên của bạn đang hoạt động. Việc " #~ "chạy nhều cửa sổ cùng lúc về kỹ thuật là không thể và việc này phụ thuộc " #~ "rất nhiều vào trình duyệt mà bạn đang dùng.Việc sử dụng các trình duyệt " #~ "khác nhau cùng một lúc (ví dụ như IE và Mozilla) là có thể. Nhấn vào nút " #~ "đăng xuất để đóng phiên này." #~ msgid "" #~ "Ignoring this message will change/destroy the data you're currently " #~ "editing, so please close multiple windows and log in again." #~ msgstr "" #~ "Bỏ qua tin nhắn này sẽ thay đổi/hủy dữ liệu mà hiện nay bạn đang hiệu " #~ "chỉnh, vì thể xin hãy đóng các cửa sổ lại và đăng nhập lại." #~ msgid "External password changer reported a problem: " #~ msgstr "Bộ thay đổi mật khẩu bên ngoài báo cáo một vấn đề: " #, fuzzy #~ msgid "Show department" #~ msgstr "Bộ phận" #, fuzzy #~ msgid "Show groups" #~ msgstr "các nhóm mail" #, fuzzy #~ msgid "Show server" #~ msgstr "các server" #, fuzzy #~ msgid "Show workstation" #~ msgstr "máy trạm" #, fuzzy #~ msgid "Show terminal" #~ msgstr "các thiết bị cuối" #, fuzzy #~ msgid "Show printer" #~ msgstr "máy in" #, fuzzy #~ msgid "Show phone" #~ msgstr "Hiển thị các thay đổi" #, fuzzy #~ msgid "Filter options" #~ msgstr "Các lựa chọn thêm cho bộ lọc" #~ msgid "" #~ "Please double check if you really want to do this since there is no way " #~ "for GOsa to get your data back." #~ msgstr "" #~ "Xin hãy kiểm tra hai lần nếu bạn thực sự muốn làm việc này bởi sẽ không " #~ "có cách nào để GOsa lấy lại dữ liệu cho bạn." #~ msgid "Manage object groups" #~ msgstr "Quản lý các nhóm đối tượng " #~ msgid "nested groups" #~ msgstr "các nhóm làm tổ" #~ msgid "application groups" #~ msgstr "các nhóm ứng dụng" #~ msgid "department groups" #~ msgstr "các nhóm bộ phận" #~ msgid "server groups" #~ msgstr "các nhóm server" #~ msgid "workstation groups" #~ msgstr "các nhóm máy trạm" #~ msgid "terminal groups" #~ msgstr "các nhóm thiết bị cuối" #~ msgid "printer groups" #~ msgstr "các nhóm máy in" #~ msgid "phone groups" #~ msgstr "các nhóm điện thoại" #~ msgid "Select objects to add" #~ msgstr "Chọn nhóm đối tượng để thêm vào" #~ msgid "Filters" #~ msgstr "Các bộ lọc" #~ msgid "Display objects of department" #~ msgstr "Hiển thị nhóm đối tượng của các bộ phận" #~ msgid "Choose the department the search will be based on" #~ msgstr "Chọn bộ phận mà việc tìm kiếm sẽ tiến hành trên đó " #~ msgid "Display objects matching" #~ msgstr "Hiển thị việc khớp các đối tượng" #~ msgid "Regular expression for matching object names" #~ msgstr "Hiển thị thông thường cho việc khớp tên các đối tượng" #~ msgid "Select systems to add" #~ msgstr "Chọn hệ thống để thêm vào" #~ msgid "Display systems of department" #~ msgstr "Hiển thị các hệ thống của bộ phận" #~ msgid "Display systems matching" #~ msgstr "Hiển thị việc khớp các hệ thống" #~ msgid "Regular expression for matching addresses" #~ msgstr "Biểu thức thông thường cho việc khớp các địa chỉ" #~ msgid "" #~ "This may be a primary user group. Please double check if you really want " #~ "to do this since there is no way for GOsa to get your data back." #~ msgstr "" #~ "Đây có thể là một nhóm người dùng sơ cấp. Xin hãy kiểm tra lại hai lần " #~ "nếu bạn thực sự muốn làm việc này bởi sẽ không có cách nào để GOsa lấy " #~ "lại dữ liệu cho bạn." #, fuzzy #~ msgid "Show samba groups" #~ msgstr "các nhóm samba" #, fuzzy #~ msgid "Show mail groups" #~ msgstr "các nhóm mail" #~ msgid "Group administration" #~ msgstr "Quản trị nhóm" #~ msgid "" #~ "This includes all account data, system access rules, imap settings, etc. " #~ "for this user. Please double check if your really want to do this since " #~ "there is no way for GOsa to get your data back." #~ msgstr "" #~ "Ở đây bao gồm tất cả các dữ liệu tài khoản, quy định về truy cập hệ " #~ "thống, cài đặt imap, vân vân cho người dùng này. Xin hãy kiểm tra hai lần " #~ "nếu bạn thực sự muốn làm điều này bởi sẽ không có cách nào để GOsa phục " #~ "hồi dữ liệu cho bạn." #~ msgid "Manage users" #~ msgstr "Quản lý người dùng" #~ msgid "" #~ "This includes 'all' accounts, systems, etc. in this subtree. Please " #~ "double check if your really want to do this since there is no way for " #~ "GOsa to get your data back." #~ msgstr "" #~ "Trong cây con này có 'tất cả' các tài khoản, hệ thống, vân vân. Xin hãy " #~ "kiểm tra lại hai lần nếu bạn thực sự muốn thực hiện điều này tuy nhiên sẽ " #~ "không có cách nào để Gosa phục hồi lại dữ liệu cho bạn." #~ msgid "" #~ "Best thing to do before performing this action would be to save the " #~ "current contents of your LDAP tree in a file. So - if you've done so - " #~ "press 'Delete' to continue or 'Cancel' to abort." #~ msgstr "" #~ "Tốt nhất là trước khi thực hiện thao tác này bạn nên lưu lại nội dung " #~ "hiện tại của cây thư mục LDAP trong một file. Nếu bạn đã làm thế, hãy " #~ "kích 'Delete' để tiếp tục hoặc kích 'Cancel' để hủy bỏ." #~ msgid "List of departments" #~ msgstr "Danh sách các bộ phận" #~ msgid "Manage Departments" #~ msgstr "Quản lý các bộ phận" #, fuzzy #~ msgid "Show access control lists" #~ msgstr "Danh sách kiểm soát truy cập" #, fuzzy #~ msgid "Show roles" #~ msgstr "Hiển thị %s" #~ msgid "Bug submitter" #~ msgstr "Bộ nộp lỗi" #~ msgid "" #~ "Bugsubmitter" #~ msgstr "" #~ "Bugsubmitter" #, fuzzy #~ msgid "Show servers" #~ msgstr "các server" #, fuzzy #~ msgid "Show workstations" #~ msgstr "máy trạm" #, fuzzy #~ msgid "Show terminals" #~ msgstr "các thiết bị cuối" #, fuzzy #~ msgid "List navigation" #~ msgstr "máy trạm dùng win " #, fuzzy #~ msgid "Group selection filter" #~ msgstr "Thiết lập nhóm" #, fuzzy #~ msgid "Posix extension settings" #~ msgstr "Thiết lập Posix" #~ msgid "Go to root department" #~ msgstr "Đi đến bộ phận gốc" #~ msgid "Home" #~ msgstr "Nhà" #~ msgid "" #~ "This is the GOsa main menu. You can select your tasks from the menu on " #~ "the left, or by choosing one of the pictograms below. All changes apply " #~ "directly to your companies LDAP server." #~ msgstr "" #~ "Đây là danh mục chính của Gosa. Bạn có thể lựa chọn tác vụ của bạn từ " #~ "danh mục ở bên trái hoặc bằng cách chọn một trong những biểu tượng dưới " #~ "đây. Tất cả những thay đổi này được áp dụng trực tiếp cho Máy chủ LDAP " #~ "trong công ty bạn." #~ msgid "" #~ "Use 'Sign out' on the upper left to close the connection and 'Main' to " #~ "get back to the pictogram view." #~ msgstr "" #~ "Sử dụng \"Đăng xuất\" ở phía trên bên trái để đóng kết nối và \"Trang " #~ "chính\" để quay lại xem biểu tượng." #, fuzzy #~ msgid "Show functional users" #~ msgstr "Người dùng chức năng" #, fuzzy #~ msgid "Show Samba users" #~ msgstr "Người dùng samba" #~ msgid "Choose subtree to place user in" #~ msgstr "Chọn một cây con để cho người dùng vào" #~ msgid "Select a base" #~ msgstr "Chọn một cơ sở" #~ msgid "Generic user information" #~ msgstr "Thông tin chung của người dùng" #~ msgid "Account" #~ msgstr "Tài khoản" #~ msgid "Select groups to add" #~ msgstr "Chọn các nhóm để thêm vào" #~ msgid "Display groups of department" #~ msgstr "Hiển thị các nhóm trong bộ phận" #~ msgid "Display groups matching" #~ msgstr "Hiển thị sự khớp nhóm" #~ msgid "Regular expression for matching group names" #~ msgstr "Biểu thức thông thường cho việc khớp các tên nhóm" #~ msgid "Display groups of user" #~ msgstr "Hiển thị các nhóm người sử dụng" #~ msgid "User name of which groups are shown" #~ msgstr "Username của các nhóm được hiển thị" #~ msgid "Inconsistent DN encoding detected: '%s'" #~ msgstr "Việc mã hóa DN không thống nhất phát hiện: '%s'" #~ msgid "Choose a base" #~ msgstr "Chọn một gốc" #~ msgid "Choose subtree to place group in" #~ msgstr "Chọn một cây thư mục con để đặt nhóm vào" #~ msgid "Choose subtree to place department in" #~ msgstr "Lựa chọn cây con để đặt bộ phận này vào " #~ msgid "Show %s" #~ msgstr "Hiển thị %s" #~ msgid "people" #~ msgstr "Người" #~ msgid "Select users to add" #~ msgstr "Chọn người sử dụng để thêm vào" #~ msgid "Select to see servers" #~ msgstr "Chọn để xem các server" #~ msgid "Search within subtree" #~ msgstr "Tìm kiếm trong cây con" #~ msgid "Display users of department" #~ msgstr "Hiển thị người dùng của bộ phận" #~ msgid "Display users matching" #~ msgstr "Hiển thị việc khớp người dùng" #~ msgid "Regular expression for matching user names" #~ msgstr "Hiển thị thông thường cho việc khớp tên người sử dụng" #, fuzzy #~ msgid "givenname" #~ msgstr "Tên thật" #, fuzzy #~ msgid "surename" #~ msgstr "Họ " #, fuzzy #~ msgid "Edit ogroup" #~ msgstr "Danh sách các nhóm" #, fuzzy #~ msgid "List of ogroups" #~ msgstr "Danh sách các nhóm" #~ msgid "" #~ "Step in the prefered tree and click save to use the current subtree as " #~ "base. Or click the image at the end of each entry." #~ msgstr "" #~ "Vào cây ưa dùng và kích vào save để sử dụng cây con hiện tại làm cơ sở. " #~ "Hoặc kích vào hình ở cuối mỗi một entry." #~ msgid "Filter entries with this syntax" #~ msgstr "Lọc các entry với chỉ lệnh này" #~ msgid "MySQL error" #~ msgstr "Lỗi MySQL" #, fuzzy #~ msgid "Logging to MySQL database will be disabled for server '%s'!" #~ msgstr "Bạn sẽ không truy cập vào cơ sở dữ liệu MySQL trong phiên này!" #~ msgid "MySQL logging" #~ msgstr "Đăng nhập vào MySQL" #~ msgid "Cannot add location to the database!" #~ msgstr "Không thể thêm vị trí vào cơ sở dữ liệu!" #~ msgid "Submit department" #~ msgstr "Bộ phận nộp" #~ msgid "edit" #~ msgstr "hiệu chỉnh" #~ msgid "delete" #~ msgstr "Xóa bỏ" #~ msgid "Number of listed object groups" #~ msgstr "Tên của các nhóm đối tượng được liệt kê" #~ msgid "Number of listed departments" #~ msgstr "Số các bộ phận được liệt kê" #~ msgid "Select to see groups that are primary groups of users" #~ msgstr "Chọn để xem nhóm nào là nhóm người dùng sơ cấp" #~ msgid "samba groups mappings" #~ msgstr "ánh xạ các nhóm samba" #~ msgid "application settings" #~ msgstr "thiết lập ứng dụng" #~ msgid "mail settings" #~ msgstr "thiết lập mail" #~ msgid "Select to see normal groups that have only functional aspects" #~ msgstr "" #~ "Chọn để xem các nhóm thông thường mà chỉ có các khía cạnh chức năng " #~ msgid "functional groups" #~ msgstr "các nhóm chức năng" #~ msgid "Number of listed groups" #~ msgstr "Tên các nhóm đã được lên danh sách" #~ msgid "Manage POSIX groups" #~ msgstr "Quản trị các nhóm POSIX" #~ msgid "group" #~ msgstr "Nhóm" #~ msgid "User administration" #~ msgstr "Quản trị người dùng" #~ msgid "templates" #~ msgstr "các mẫu" #~ msgid "functional users" #~ msgstr "Người dùng chức năng" #~ msgid "POSIX users" #~ msgstr "Người sử dụng POSIX" #~ msgid "samba users" #~ msgstr "Người dùng samba" #~ msgid "proxy users" #~ msgstr "Người dùng Proxy" #~ msgid "Edit UNIX properties" #~ msgstr "Hiệu chỉnh các tính năng UNIX" #~ msgid "Edit fax properies" #~ msgstr "Hiệu chỉnh các tính năng fax" #~ msgid "Create user with this template" #~ msgstr "Tạo ra người dùng từ mẫu này" #~ msgid "password" #~ msgstr "mật khẩu" #~ msgid "Delete user" #~ msgstr "Xóa người dùng" #~ msgid "Number of listed users" #~ msgstr "Số người dùng được liệt kê" #~ msgid "You have no permission to modify object '%s'!" #~ msgstr "Bạn không được phép thay đổi đối tượng '%s'!" #~ msgid "You have no permission to use this template!" #~ msgstr "Bạn không được phép sử dụng mẫu này!" #~ msgid "You have no permission to change the lock status for this user!" #~ msgstr "Bạn không được phép thay đổi trạng thái khóa cho người dùng này!" #, fuzzy #~ msgid "Name / Department" #~ msgstr "Tên bộ phận" #~ msgid "Regular expression for matching department names" #~ msgstr "Những biểu thức thông thường cho việc khớp tên các bộ phận" #~ msgid "" #~ "As soon as the move operation has finished, you can scroll down to end of " #~ "the page and press the 'Continue' button to continue with the department " #~ "management dialog." #~ msgstr "" #~ "Ngay sau khi thao tác chuyển dời kết thúc, bạn có thể kéo xuống cuối " #~ "trang và kích vào phím \"Tiếp tục\" để tiếp tục với hộp thoại quản lý bộ " #~ "phận." #~ msgid "" #~ "This includes all system and setup informations. Please double check if " #~ "your really want to do this since there is no way for GOsa to get your " #~ "data back." #~ msgstr "" #~ "Ở đây bao gồm tất cả các thông tin hệ thống và cài đặt. Xin hãy kiểm tra " #~ "hai lần neus bạn thực sự muốn thực hiện điều này bởi vì sẽ không có cách " #~ "nào để GOsa có thể lấy lại dữ liệu cho bạn." #, fuzzy #~ msgid "ACL role" #~ msgstr "Các vai trò ACL" #~ msgid "Summary" #~ msgstr "Bản tóm tắt" #~ msgid "Display acls matching" #~ msgstr "Hiển thị việc khớp ads" #~ msgid "Edit acl role" #~ msgstr "Hiệu chỉnh vai trò acl" #~ msgid "Edit acl" #~ msgstr "Hiệu chỉnh acl" #~ msgid "Delete acl" #~ msgstr "Xóa acl" #~ msgid "Gender" #~ msgstr "Giới tính" #~ msgid "Logging options" #~ msgstr "Các lựa chọn đăng nhập" #~ msgid "Syslog" #~ msgstr "Syslog" #~ msgid "ACL takes effect for all users" #~ msgstr "ACL tác động lên tất cả người dùng" #, fuzzy #~ msgid "Non common group" #~ msgstr "Không ở trong tất cả các nhóm" #~ msgid "Enable DNS extension" #~ msgstr "Bật chức năng mở rộng DNS" #~ msgid "Enable mime type management" #~ msgstr "Bật chức năng quản lý dạng mime" #~ msgid "Enable FAI release management" #~ msgstr "Bật chức năng quản lý việc tung ra FAI" #~ msgid "Enable user netatalk plugin" #~ msgstr "Cho phép người dùng mở rộng tính năng netatalk " #, fuzzy #~ msgid "Missing GOsa class %s." #~ msgstr "Lớp đối tượng lựa chọn '%s' mất tích!" #, fuzzy #~ msgid "Password locking" #~ msgstr "Thay đổi mật khẩu" #, fuzzy #~ msgid "Create new" #~ msgstr "Tạo " #~ msgid "" #~ "This account has %s features settings. To disable them, you'll need to " #~ "add the %s settings first!" #~ msgstr "" #~ "Tài khoản này đã có các thiết lập tính năng %s . Để tắt chúng đi, bạn cần " #~ "phải thêm thiết lập %s trước!" #~ msgid "CUPS" #~ msgstr "CUPS (hệ thống in unix thông thường)" #~ msgid "" #~ "GOsa requires this module to show printers that are not defined within " #~ "the LDAP." #~ msgstr "" #~ "GOsa cần môđun này để hiển thị các máy in mà không được định rõ trong " #~ "LDAP." #~ msgid "Modifyable by owner" #~ msgstr "Có thể chỉnh sửa được bởi người sở hữu " #~ msgid "Role name" #~ msgstr "Tên vai trò" #~ msgid "Swedish" #~ msgstr "Tiếng Thụy Điển" #~ msgid "Override sudo role ou" #~ msgstr "Viết đè lên lệnh sudo role ou" #~ msgid "You're about to delete the whole LDAP subtree placed under '%s'." #~ msgstr "Bạn chuẩn bị xóa tất cả cây thư mục LDAP nhỏ được đặt dưới '%s'." #~ msgid "Terminals" #~ msgstr "Các thiết bị cuối" #~ msgid "Steps" #~ msgstr "Các bước" #~ msgid "Select this base" #~ msgstr "Chọn cơ sở này" gosa-core-2.7.4/COPYING0000644000175000017500000003556411622434250013106 0ustar mikemike GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS gosa-core-2.7.4/contrib/0000755000175000017500000000000011752422554013506 5ustar mikemikegosa-core-2.7.4/contrib/desktoprc0000644000175000017500000000005511063736604015426 0ustar mikemikeURL="https://www.gosa-project.org/demo/2.6/" gosa-core-2.7.4/contrib/build-gosa0000755000175000017500000001650311473500710015456 0ustar mikemike#!/usr/bin/env python #-*- coding: utf-8 -*- import os import re import sys import shutil import tarfile import subprocess import logging from optparse import OptionParser from os.path import join from tempfile import mkdtemp # Version setter VERSION = "1.0" methods = {} # Check if pysvn is installed try: import pysvn def load_svn(base_url, release, tmp_dir): source = base_url + "/" + release svn = pysvn.Client() for part in ["gosa-core", "gosa-plugins"]: print("Retrieving %s from SVN..." % part) rev = svn.export(source + "/" + part, join(tmp_dir, part)) return "svn" + str(rev.number) methods["svn"] = load_svn except: pass def tar_extract(name, target): tar = tarfile.open(name, "r:gz") tar.extractall(target) tar.close() def tar_create(name, source): tar = tarfile.open(name, "w:gz") tar.add(source) tar.close() def build(release, base_url, target="/tmp", method="svn", key_id=None, cleanup=True, smarty=False): # Absolutize target target = os.path.abspath(target) # Create target and temporary directory try: tmp_dir = mkdtemp() target_dir = join(target, "gosa") os.makedirs(target_dir) # Get data if method in methods: rev = methods[method](base_url, release, tmp_dir) else: print("Error: method '%s' is notavailable" % method) # Prepare gosa-core for archiving core_dir = join(tmp_dir, "gosa", "gosa-core") os.makedirs(join(tmp_dir, "gosa")) shutil.move(join(tmp_dir, "gosa-core"), join(tmp_dir, "gosa")) shutil.move(join(core_dir, "debian"), target_dir) # Remove all but .php files provided by GOsa if not smarty: smarty_dir = join(core_dir, "include", "smarty") for rfile in [f for f in os.listdir(join(smarty_dir, "plugins")) if not f in ["block.render.php", "block.t.php", "function.msgPool.php", "function.factory.php", "function.image.php"]]: os.remove(join(smarty_dir, "plugins", rfile)) for rfile in [join(smarty_dir, f) for f in os.listdir(smarty_dir)]: if os.path.basename(rfile) != "plugins": if os.path.isdir(rfile): shutil.rmtree(rfile) else: os.remove(rfile) # Remove smarty3 package section out = "" control = join(target_dir, "debian", "control") data = open(control, 'r') remove = False for line in data: line = line.rstrip() if line == "Package: smarty3": remove = True if not remove: out += line + "\n" if remove and line == "": remove = False of = open(control, 'w') of.write(out) of.close() # Get target version number version = None with open(join(core_dir, "Changelog")) as f: for line in f.readlines(): if line.startswith("* gosa"): version = line.split(" ")[2].strip() break # If we're in trunk or branches, add revision to version if re.match(r"^(trunk|branches/)", release): version = "%s+%s" % (version, rev) os.chdir(target_dir) subprocess.call(["dch", "--newversion=" + version + "-1", "--no-force-save-on-release", "Development snapshot"]) # Build gosa-core tar file os.chdir(tmp_dir) tar_create(join(target, "gosa_%s.orig.tar.gz" % version), "gosa") # Clean up and build plugin archives tars = [] os.chdir(join(tmp_dir, "gosa-plugins")) for f in os.listdir(join(tmp_dir, "gosa-plugins")): pth = join(target, "gosa_%s.orig-%s.tar.gz" % (version, f)) if os.path.exists(join(tmp_dir, "gosa-plugins", f, "plugin.dsc")): os.remove(join(tmp_dir, "gosa-plugins", f, "plugin.dsc")) tar_create(pth, f) tars.append(pth) # Stage build directory tar_extract(join(target, "gosa_%s.orig.tar.gz" % version), target) for tar_file in tars: tar_extract(tar_file, target_dir) # Build packages print("Building packages to %s" % target) os.chdir(target_dir) if key_id: status = subprocess.call(["dpkg-buildpackage", "-k", key_id, "-rfakeroot"]) else: status = subprocess.call(["dpkg-buildpackage", "-uc", "-us", "-rfakeroot"]) # Bail out? if status: raise Exception("Build failed: exit code %s" % status) except Exception as detail: print("Error:", str(detail)) # Cleanup finally: if cleanup: if os.path.exists(tmp_dir): shutil.rmtree(tmp_dir) if os.path.exists(target_dir): shutil.rmtree(target_dir) def main(): # Sanity check for cli, pkg in [("/usr/bin/dpkg-buildpackage", "dpkg-dev"), ("/usr/bin/fakeroot", "fakeroot"), ("/usr/bin/dch", "devscripts"), ("/usr/bin/dh", "debhelper")]: if not os.path.exists(cli): print("Error: %s is missing, please install %s" % (cli, pkg)) exit(1) # Methods available? if not methods: print("Error: no retrieval methods available, please install python-svn") exit(1) # Parse commandline options op = OptionParser(usage="%prog - GOsa packaging aid", version="%prog " + VERSION) op.add_option("-s", "--source", dest="source", default="https://oss.gonicus.de/repositories/gosa", help="retrieval base path [%default]", metavar="URL") op.add_option("-a", "--with-smarty", dest="smarty", default=False, action="store_true", help="build smarty3 packages from smarty provided by gosa source") op.add_option("-t", "--target", dest="target", default=".", help="target directory [%default]", metavar="PATH") op.add_option("-m", "--method", dest="method", default="svn", help="retrieval method [%default]", metavar="METHOD") op.add_option("-n", "--no-cleanup", action="store_false", dest="cleanup", default=True, help="don't clean up temporary files") op.add_option("-k", "--key-id", dest="key_id", default=None, help="GPG key ID used for signing if applicable", metavar="KEY_ID") (options, args) = op.parse_args() if len(args) != 1: op.print_help() exit(1) # Allow version shortcut, but prepend tags/ release = args[0] if re.match(r"^[0-9]", release): release = "tags/" + release # Validate release if not re.match(r"^(tags/.|branches/.|trunk$)", release): print("Error: release must be in the format tags/x (or just x), branches/x or trunk") exit(1) # Start build build(release, options.source, options.target, options.method, options.key_id, options.cleanup, options.smarty) """ Main GOsa packaging aid """ if __name__ == '__main__': if not sys.stdout.encoding: sys.stdout = codecs.getwriter('utf8')(sys.stdout) if not sys.stderr.encoding: sys.stderr = codecs.getwriter('utf8')(sys.stderr) main() gosa-core-2.7.4/contrib/plugins/0000755000175000017500000000000011752422553015166 5ustar mikemikegosa-core-2.7.4/contrib/plugins/dyngroup/0000755000175000017500000000000011752422553017035 5ustar mikemikegosa-core-2.7.4/contrib/plugins/dyngroup/README0000644000175000017500000000761111401417077017716 0ustar mikemike# ----------------------------------------------------------------------------- # # README # # Author(s): Thomas Chemineau - thomas.chemineaugmail.com # # ----------------------------------------------------------------------------- # 1. What this plugin can do ? This plugin allow administrator to modify LDAP groups to be populated through dynamic list feature in OpenLDAP. To do that, you have to activate the dynlist overlay in OpenLDAP, and configure the overlay as decribed bellow. Once the overlay is enabled, member of a dynamic group will be auto populated. This plugin should be configured to appears in groups and departments, under GOsa. A department could not be a dynamic group, but it can be renamed. This operation could break LDAP search URLs into dynamic group definition. To prevent this, this plugin could modify LDAP search URLs when departments and groups are renamed into the LDAP tree. WARNINGS: Be carefull, GOsa may manage uid into memberUid, and not DN. So, in this particular case, you can not store DN into memberUid attribute. The main drawback, in this particular case, is that you can not build LDAP URLs into dynamic group to search for users directly. The alternative is to look for memberUid into groups. 2. How to activate the dynlist overlay in OpenLDAP ? Edit the configuration file (slapd.conf), and put the following lines into the definition of your database: overlay dynlist dynlist-attrset labeledUriObject labeledURI See http://www.openldap.org/doc/admin24/overlays.html#Dynamic%20Lists to have more informations on dynamic list overlay. If your OpenLDAP server loads modules dnamically, you have to load the dynlist overlay but putting the following lines in the global section of the configuration files: moduleload dynlist Finaly, if you do not want GOsa users to modify memberUid values, you could add an ACL. This ACL will works only if GOsa is connected on your OpenLDAP server under an application account (and not under the rootdn defined into the configuration of your LDAP database in slapd.conf): # Disable modify on memberUid for all entries which contains # gosaGroupOfURLs, because these are dynamic, and we do not want users to # edit the memberUid attribute. access to filter="objectClass=gosaGroupOfURLs" attrs=memberUid by * read Verify that LDAP schemas of GOsa contains the definition of the objectclass named "gosaGroupOfURLs". You have two solutions: the first one is to add it into the schema named gosa-samba3: objectclass ( 1.3.6.1.4.1.10098.1.2.1.19.21 NAME 'gosaGroupOfURLs' DESC 'Allow a group to be populated through a labeledURI values' SUP top AUXILIARY MAY ( labeledURI ) ) The second one, recommended, is to copy the file gosa-dyngroup.schema into your OpenLDAP schema directory. Then edit slapd.conf and add the inclusion to this new schema. You can now restart your OpenLDAP server :) 3. How to enable this feature in GOsa ? It is very easy. Edit /etc/gosa/gosa.conf, and add the following line in the grouptabs section: Then, add the following line in the deptabs section: Then, put the plugin in /usr/share/gosa/plugins/addons, and update GOsa cache via the update-gosa command. 4. Known restrictions in OpenLDAP You can't search yet on memberUid in a filter: http://www.openldap.org/lists/openldap-software/200812/msg00030.html http://www.openldap.org/lists/openldap-software/200901/msg00079.html You have to prefer to use the LDAP compare operation: http://www.openldap.org/lists/openldap-software/200909/msg00073.html http://www.openldap.org/lists/openldap-software/200909/msg00125.html gosa-core-2.7.4/contrib/extract-locale0000755000175000017500000000044111022005176016325 0ustar mikemike#!/bin/sh if [ ! -f contrib/extract-locale ]; then echo "This script has to be executed in the gosa root - preferrable a gosa-all checkout!" exit 1 fi for i in $(find | grep messages.po | grep -v svn | grep -v LC_MES); do cp $i $(echo $i | sed 's#^.*/\([^/]*\)/[^/]*$#\1.po#'); done gosa-core-2.7.4/contrib/encodings0000644000175000017500000000040410741643555015403 0ustar mikemike# Encodings for class_servNfs.inc # This file should be placed in /etc/gosa/ UTF-8=UTF-8 ISO8859-1=ISO8859-1 (Latin 1) ISO8859-2=ISO8859-2 (Latin 2) ISO8859-3=ISO8859-3 (Latin 3) ISO8859-4=ISO8859-4 (Latin 4) ISO8859-5=ISO8859-5 (Latin 5) cp850=CP850 (Europe) gosa-core-2.7.4/contrib/artwork/0000755000175000017500000000000011752422554015177 5ustar mikemikegosa-core-2.7.4/contrib/artwork/GOsa-logo.eps0000644000175000017500000062016311427574224017510 0ustar mikemike%!PS-Adobe-3.1 EPSF-3.0 %ADO_DSC_Encoding: MacOS Roman %%Title: GOsa-logo.eps %%Creator: Adobe Illustrator(R) 12 %%AI8_CreatorVersion: 12.0.1 %AI9_PrintingDataBegin %%For: stephan heller %%CreationDate: 09.02.2009 %%BoundingBox: 0 0 1191 347 %%HiResBoundingBox: 0 0 1190.5879 346.9991 %%CropBox: 0 0 1190.5879 346.9991 %%LanguageLevel: 2 %%DocumentData: Clean7Bit %%Pages: 1 %%DocumentNeededResources: %%DocumentSuppliedResources: procset Adobe_AGM_Image 1.0 0 %%+ procset Adobe_CoolType_Utility_T42 1.0 0 %%+ procset Adobe_CoolType_Utility_MAKEOCF 1.19 0 %%+ procset Adobe_CoolType_Core 2.23 0 %%+ procset Adobe_AGM_Core 2.0 0 %%+ procset Adobe_AGM_Utils 1.0 0 %%DocumentFonts: %%DocumentNeededFonts: %%DocumentNeededFeatures: %%DocumentSuppliedFeatures: %%DocumentProcessColors: Cyan Magenta Yellow Black %%DocumentCustomColors: %%CMYKCustomColor: %%RGBCustomColor: %ADO_BuildNumber: Adobe Illustrator(R) 12.0.1 x5205 R agm 4.3861 ct 5.530 %ADO_ContainsXMP: MainFirst %AI7_Thumbnail: 128 40 8 %%BeginData: 6528 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDFCFFFDFCFFFD96FFA8A9A8A8A8FD1DFFA8A87EA87EA9A8AFA8FD %0FFFA87E5354535353A8A8FD3AFFAFA8535328FD04295A7EFD17FF7E5329 %2F2929282929292853FD0DFF7E2F29282928292829285353AFFD37FF7E53 %01292829282928290129297EAFFD11FFA853282928292829282928292829 %2FFD0BFF7E53062928292829282928292829287EFD35FF53292853292928 %292929285329292854A9FD0FFF7E2F2853292F2953292F2953292F287EFD %0AFF7E29292F2953292F2953292F29532929287EFD33FF29292829282929 %53537E5353062928290653A8FD0DFF532928292829282928292829282928 %2953FD09FF532928292829282928292829282928292829017EFD32FF5328 %2F28537EFD06FFA853FD0429FD0DFF7E292853292928532929282F292928 %2F287EFD08FF592929292853292928292829282F29292853292928AFFD32 %FF53017EA8FD09FF592928A9FD0CFF7E2928292829282928290629282928 %2906297EFD07FF7E292829282928292853537E7D53282928292829282953 %FD22FFA87EA9FD0DFFA8A8FFFFFFA953532F547EFFFFFF7EA9FD0CFFA853 %2953295329532829537E7EA97EA87EA97EFD08FF532853292F29292FA9FD %05FFA929292953292F2953FD20FFA85328292954A9FD09FFA92FFFFFFFA8 %53062928292829287EFFFFFF7E7EFD0AFF5306292829282928537EFD10FF %A828292829282928FD08FFA828292829282906A8FD1EFFA8290629532901 %53FD08FFA92829FFFFA95328292853292928292884FFFF53297EFD09FF29 %292853292F2853A9FD11FF532929292853287EFD09FF5329292853292953 %FD1EFFA828297EFF532953FD07FFA9282929FFFF53012928292829282928 %2928A9FF7E01297EFD07FF53292829282928297EFFFFFFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA82928292829282FA8FD09FF5329282928292853FD1EFF %A8A97EFFA82F0153FD07FF29292854FFA9287E29292953295328537E2953 %FF7E292853A8FD06FF53292F2953292953FD04FF7E2F532F5353532F5353 %53297EFF842853292F292953FD0AFFA8282F2953292953FD07FFA9FD19FF %A953282984FD06FF2929282928A82F287EFF2829282928297EFF28297E54 %28292829A8FD04FFA928292829282928A8FD04FF28292829282928292829 %282953FF53292829282906A8FD0AFF7E29282928292853FD04FF7E7E5353 %295353A9FD06FFA87E5353295353A9FD06FF7E2906297DFD06FFFD042953 %A97EA9A8FFFFAF292928537EFFFFA9A8A8A87E29292853A8FFFFFF7E2928 %5329292853FD04FFA92F28532929285329292853287EFF53292928532929 %A8FD0AFFA828532929282953FFFFFF532928292829282929A8FD04FF7E53 %282928292929287EFD04FF7E292853A8FD06FF29292829017EFD07FF7E28 %2953FD07FF7E2928290153FFFFFF7E06292829282953FD04FFA928292829 %282928292829282953FF28292829282928FD0BFF7E29282928290654FFFF %5329282929532929282928A9FFFF7E290629282F2829282928AFFFFF7E29 %28297EFFA8FD05FFA9FD04297EFFA8FD05FF53292953A8FD06FFA8292F28 %2FA8FFFFFF7E292953292F287EFD04FFA8292953292F2953292F2953287E %FF53292F29532953FD0BFF7E2853292F29297EFFA82F29297EFFFFFF5929 %29297EFFFF53282929A9FFFF532929297EFFA953292929532953A9FD05FF %A9282928292FA85329A8FF29292829282FA8FF292F7E53282928297EFD04 %FF7E06292829282953FD04FF840129012928292829282928297EFF282928 %29282929FD0BFF53292829282906A8FF7E0629287EFD04FF7EA8A8FFFFFF %7EA87DA8FFFFFFA928290684FFA8282F2829282953FD07FFA929292853FF %A8017E53292853292F28537E2929FF7E2928297EFD05FF7E292929285329 %53A9FFFFFF7E54537E537E2F292853292928A9FF53285329292853A9FD09 %FFA853292928532929A8FF8429282F297E7EFD0FFF532929297EFFFFFFA8 %FFA9FFA8FD09FFA8282929FFFF530129282928292829282906A8FF7E0629 %53FD06FFA8062928292829287EFD09FF7E282928292829A8FF2929282928 %2901A8FD09FF7E01292829282953FFFFFF2929282906292853A8FD05FFA8 %7E535329532829282928A8FD12FFA82853FFFFA82929532953292F295328 %7EFFFF7E297EFD07FFA853292F2953292929FD09FF2929295329292FFFFF %7E2853292F292953FD09FF2953292F295328A8FFFFFFA92929292F292F28 %297EFFFFFFA85328290629282F29532953FD14FF7E28FFFFFF7E29282928 %2928290154FFFFFF7E53FD09FF292928292829282929FD07FF5329282928 %29287EFFFF7E292829282928297EFD07FF2929282928292853FD06FF7D53 %2829282928297EFFA92F062928537EA9A82F282953FD15FFA9A87EFFFFA8 %7E29292853537EFFFF7EA8A8FD0AFF7E2853292928532929297EA8FFA8A8 %5329285329292829A8FFFFFF29292853292928297EFFA9FFA9A8FD042928 %5329297EFD08FFA959532853287EFFA9282928A9FD04FF29292884FD16FF %530153A8FFFFFFA8A8A8FFFFFF7E2928A9FD0AFFA8292829282928292829 %01292829062928292829282929FD04FF7E0629282928292829282F282F28 %2928292829282953FFFFFF7E7E53A8FD04FF7E29282953FF7D292853FD04 %FF7D2928297EFD15FF53285329537EFD06FFA953FD0429FD0BFF7E292953 %2953292F2953292F2953292F2953292928A9FD04FFAF532853292F295329 %2F282F292F2953292F292953FFFFFFA829282929FD04FF842853287EFFA8 %282929FFFFFFA853292929FD16FF2929282928292853537E535328292829 %2829A8FD0BFF532928292829282928292829282928292829067EFD06FF7E %292829282928292829282928292829282929FD05FF53292829297E595428 %292829A8FF7E292829297E59290629282FA9FD16FF532928532929282928 %29282F29292853A8FD0DFF7E292829285329292853292928532929287EFD %08FF7E29282F29292853292928532929282953FD07FF5329282928292829 %282F84FFFFFFFD042901292953282929FD18FF7D29012928292829282928 %29287EA8FD0FFF8453282906292829282928290629287EFD0AFFA8530129 %2829282928292829062F7DFD09FF7D5328292829287EA8FD04FFA9292928 %2953A97E292853A8FD18FFA87E532F28292929285359A9FD13FFA9595429 %29282F292929547EFD0EFFA95353292F29292953537EA9FD0DFFA8A9A8FD %09FFA8A9A8FFFFFFAFFD1EFFA8A87EA87EA9A8FD19FFA8A87EA9A8FD13FF %A9A97EA9A8A9A8FDFCFFFDFCFFFDFCFFFD3EFFFF %%EndData %%EndComments %%BeginDefaults %%ViewingOrientation: 1 0 0 1 %%EndDefaults %%BeginProlog %%BeginResource: procset Adobe_AGM_Utils 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Utils 70 dict dup begin put /bdf { bind def } bind def /nd{ null def }bdf /xdf { exch def }bdf /ldf { load def }bdf /ddf { put }bdf /xddf { 3 -1 roll put }bdf /xpt { exch put }bdf /ndf { exch dup where{ pop pop pop }{ xdf }ifelse }def /cdndf { exch dup currentdict exch known{ pop pop }{ exch def }ifelse }def /ps_level /languagelevel where{ pop systemdict /languagelevel get exec }{ 1 }ifelse def /level2 ps_level 2 ge def /level3 ps_level 3 ge def /ps_version {version cvr} stopped { -1 }if def /set_gvm { currentglobal exch setglobal }bdf /reset_gvm { setglobal }bdf /makereadonlyarray { /packedarray where{ pop packedarray }{ array astore readonly }ifelse }bdf /map_reserved_ink_name { dup type /stringtype eq{ dup /Red eq{ pop (_Red_) }{ dup /Green eq{ pop (_Green_) }{ dup /Blue eq{ pop (_Blue_) }{ dup () cvn eq{ pop (Process) }if }ifelse }ifelse }ifelse }if }bdf /AGMUTIL_GSTATE 22 dict def /get_gstate { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_clr_spc currentcolorspace def /AGMUTIL_GSTATE_clr_indx 0 def /AGMUTIL_GSTATE_clr_comps 12 array def mark currentcolor counttomark {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 3 -1 roll put /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 add def} repeat pop /AGMUTIL_GSTATE_fnt rootfont def /AGMUTIL_GSTATE_lw currentlinewidth def /AGMUTIL_GSTATE_lc currentlinecap def /AGMUTIL_GSTATE_lj currentlinejoin def /AGMUTIL_GSTATE_ml currentmiterlimit def currentdash /AGMUTIL_GSTATE_do xdf /AGMUTIL_GSTATE_da xdf /AGMUTIL_GSTATE_sa currentstrokeadjust def /AGMUTIL_GSTATE_clr_rnd currentcolorrendering def /AGMUTIL_GSTATE_op currentoverprint def /AGMUTIL_GSTATE_bg currentblackgeneration cvlit def /AGMUTIL_GSTATE_ucr currentundercolorremoval cvlit def currentcolortransfer cvlit /AGMUTIL_GSTATE_gy_xfer xdf cvlit /AGMUTIL_GSTATE_b_xfer xdf cvlit /AGMUTIL_GSTATE_g_xfer xdf cvlit /AGMUTIL_GSTATE_r_xfer xdf /AGMUTIL_GSTATE_ht currenthalftone def /AGMUTIL_GSTATE_flt currentflat def end }def /set_gstate { AGMUTIL_GSTATE begin AGMUTIL_GSTATE_clr_spc setcolorspace AGMUTIL_GSTATE_clr_indx {AGMUTIL_GSTATE_clr_comps AGMUTIL_GSTATE_clr_indx 1 sub get /AGMUTIL_GSTATE_clr_indx AGMUTIL_GSTATE_clr_indx 1 sub def} repeat setcolor AGMUTIL_GSTATE_fnt setfont AGMUTIL_GSTATE_lw setlinewidth AGMUTIL_GSTATE_lc setlinecap AGMUTIL_GSTATE_lj setlinejoin AGMUTIL_GSTATE_ml setmiterlimit AGMUTIL_GSTATE_da AGMUTIL_GSTATE_do setdash AGMUTIL_GSTATE_sa setstrokeadjust AGMUTIL_GSTATE_clr_rnd setcolorrendering AGMUTIL_GSTATE_op setoverprint AGMUTIL_GSTATE_bg cvx setblackgeneration AGMUTIL_GSTATE_ucr cvx setundercolorremoval AGMUTIL_GSTATE_r_xfer cvx AGMUTIL_GSTATE_g_xfer cvx AGMUTIL_GSTATE_b_xfer cvx AGMUTIL_GSTATE_gy_xfer cvx setcolortransfer AGMUTIL_GSTATE_ht /HalftoneType get dup 9 eq exch 100 eq or { currenthalftone /HalftoneType get AGMUTIL_GSTATE_ht /HalftoneType get ne { mark AGMUTIL_GSTATE_ht {sethalftone} stopped cleartomark } if }{ AGMUTIL_GSTATE_ht sethalftone } ifelse AGMUTIL_GSTATE_flt setflat end }def /get_gstate_and_matrix { AGMUTIL_GSTATE begin /AGMUTIL_GSTATE_ctm matrix currentmatrix def end get_gstate }def /set_gstate_and_matrix { set_gstate AGMUTIL_GSTATE begin AGMUTIL_GSTATE_ctm setmatrix end }def /AGMUTIL_str256 256 string def /AGMUTIL_src256 256 string def /AGMUTIL_dst64 64 string def /AGMUTIL_srcLen nd /AGMUTIL_ndx nd /thold_halftone { level3 {sethalftone currenthalftone} { dup /HalftoneType get 3 eq { sethalftone currenthalftone } { begin Width Height mul { Thresholds read {pop} if } repeat end currenthalftone } ifelse }ifelse } def /rdcmntline { currentfile AGMUTIL_str256 readline pop (%) anchorsearch {pop} if } bdf /filter_cmyk { dup type /filetype ne{ exch () /SubFileDecode filter } { exch pop } ifelse [ exch { AGMUTIL_src256 readstring pop dup length /AGMUTIL_srcLen exch def /AGMUTIL_ndx 0 def AGMCORE_plate_ndx 4 AGMUTIL_srcLen 1 sub{ 1 index exch get AGMUTIL_dst64 AGMUTIL_ndx 3 -1 roll put /AGMUTIL_ndx AGMUTIL_ndx 1 add def }for pop AGMUTIL_dst64 0 AGMUTIL_ndx getinterval } bind /exec cvx ] cvx } bdf /filter_indexed_devn { cvi Names length mul names_index add Lookup exch get } bdf /filter_devn { 4 dict begin /srcStr xdf /dstStr xdf dup type /filetype ne{ 0 () /SubFileDecode filter }if [ exch [ /devicen_colorspace_dict /AGMCORE_gget cvx /begin cvx currentdict /srcStr get /readstring cvx /pop cvx /dup cvx /length cvx 0 /gt cvx [ Adobe_AGM_Utils /AGMUTIL_ndx 0 /ddf cvx names_index Names length currentdict /srcStr get length 1 sub { 1 /index cvx /exch cvx /get cvx currentdict /dstStr get /AGMUTIL_ndx /load cvx 3 -1 /roll cvx /put cvx Adobe_AGM_Utils /AGMUTIL_ndx /AGMUTIL_ndx /load cvx 1 /add cvx /ddf cvx } for currentdict /dstStr get 0 /AGMUTIL_ndx /load cvx /getinterval cvx ] cvx /if cvx /end cvx ] cvx bind /exec cvx ] cvx end } bdf /AGMUTIL_imagefile nd /read_image_file { AGMUTIL_imagefile 0 setfileposition 10 dict begin /imageDict xdf /imbufLen Width BitsPerComponent mul 7 add 8 idiv def /imbufIdx 0 def /origDataSource imageDict /DataSource get def /origMultipleDataSources imageDict /MultipleDataSources get def /origDecode imageDict /Decode get def /dstDataStr imageDict /Width get colorSpaceElemCnt mul string def imageDict /MultipleDataSources known {MultipleDataSources}{false} ifelse { /imbufCnt imageDict /DataSource get length def /imbufs imbufCnt array def 0 1 imbufCnt 1 sub { /imbufIdx xdf imbufs imbufIdx imbufLen string put imageDict /DataSource get imbufIdx [ AGMUTIL_imagefile imbufs imbufIdx get /readstring cvx /pop cvx ] cvx put } for DeviceN_PS2 { imageDict begin /DataSource [ DataSource /devn_sep_datasource cvx ] cvx def /MultipleDataSources false def /Decode [0 1] def end } if }{ /imbuf imbufLen string def Indexed_DeviceN level3 not and DeviceN_NoneName or { /srcDataStrs [ imageDict begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi string } repeat end ] def imageDict begin /DataSource [AGMUTIL_imagefile Decode BitsPerComponent false 1 /filter_indexed_devn load dstDataStr srcDataStrs devn_alt_datasource /exec cvx] cvx def /Decode [0 1] def end }{ imageDict /DataSource [1 string dup 0 AGMUTIL_imagefile Decode length 2 idiv string/readstring cvx /pop cvx names_index /get cvx /put cvx] cvx put imageDict /Decode [0 1] put } ifelse } ifelse imageDict exch load exec imageDict /DataSource origDataSource put imageDict /MultipleDataSources origMultipleDataSources put imageDict /Decode origDecode put end } bdf /write_image_file { begin { (AGMUTIL_imagefile) (w+) file } stopped{ false }{ Adobe_AGM_Utils/AGMUTIL_imagefile xddf 2 dict begin /imbufLen Width BitsPerComponent mul 7 add 8 idiv def MultipleDataSources {DataSource 0 get}{DataSource}ifelse type /filetype eq { /imbuf imbufLen string def }if 1 1 Height MultipleDataSources not{Decode length 2 idiv mul}if{ pop MultipleDataSources { 0 1 DataSource length 1 sub { DataSource type dup /arraytype eq { pop DataSource exch get exec }{ /filetype eq { DataSource exch get imbuf readstring pop }{ DataSource exch get } ifelse } ifelse AGMUTIL_imagefile exch writestring } for }{ DataSource type dup /arraytype eq { pop DataSource exec }{ /filetype eq { DataSource imbuf readstring pop }{ DataSource } ifelse } ifelse AGMUTIL_imagefile exch writestring } ifelse }for end true }ifelse end } bdf /close_image_file { AGMUTIL_imagefile closefile (AGMUTIL_imagefile) deletefile }def statusdict /product known userdict /AGMP_current_show known not and{ /pstr statusdict /product get def pstr (HP LaserJet 2200) eq pstr (HP LaserJet 4000 Series) eq or pstr (HP LaserJet 4050 Series ) eq or pstr (HP LaserJet 8000 Series) eq or pstr (HP LaserJet 8100 Series) eq or pstr (HP LaserJet 8150 Series) eq or pstr (HP LaserJet 5000 Series) eq or pstr (HP LaserJet 5100 Series) eq or pstr (HP Color LaserJet 4500) eq or pstr (HP Color LaserJet 4600) eq or pstr (HP LaserJet 5Si) eq or pstr (HP LaserJet 1200 Series) eq or pstr (HP LaserJet 1300 Series) eq or pstr (HP LaserJet 4100 Series) eq or { userdict /AGMP_current_show /show load put userdict /show { currentcolorspace 0 get /Pattern eq {false charpath f} {AGMP_current_show} ifelse } put }if currentdict /pstr undef } if /consumeimagedata { begin currentdict /MultipleDataSources known not {/MultipleDataSources false def} if MultipleDataSources { DataSource 0 get type dup /filetype eq { 1 dict begin /flushbuffer Width cvi string def 1 1 Height cvi { pop 0 1 DataSource length 1 sub { DataSource exch get flushbuffer readstring pop pop }for }for end }if dup /arraytype eq exch /packedarraytype eq or DataSource 0 get xcheck and { Width Height mul cvi { 0 1 DataSource length 1 sub {dup DataSource exch get exec length exch 0 ne {pop}if}for dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if } { /DataSource load type dup /filetype eq { 1 dict begin /flushbuffer Width Decode length 2 idiv mul cvi string def 1 1 Height { pop DataSource flushbuffer readstring pop pop} for end }if dup /arraytype eq exch /packedarraytype eq or /DataSource load xcheck and { Height Width BitsPerComponent mul 8 BitsPerComponent sub add 8 idiv Decode length 2 idiv mul mul { DataSource length dup 0 eq {pop exit}if sub dup 0 le {exit}if }loop pop }if }ifelse end }bdf /addprocs { 2{/exec load}repeat 3 1 roll [ 5 1 roll ] bind cvx }def /modify_halftone_xfer { currenthalftone dup length dict copy begin currentdict 2 index known{ 1 index load dup length dict copy begin currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end def currentdict end sethalftone }{ currentdict/TransferFunction known{ /TransferFunction load }{ currenttransfer }ifelse addprocs /TransferFunction xdf currentdict end sethalftone pop }ifelse }def /clonearray { dup xcheck exch dup length array exch Adobe_AGM_Core/AGMCORE_tmp -1 ddf { Adobe_AGM_Core/AGMCORE_tmp 2 copy get 1 add ddf dup type /dicttype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonedict Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if dup type /arraytype eq { Adobe_AGM_Core/AGMCORE_tmp get exch clonearray Adobe_AGM_Core/AGMCORE_tmp 4 -1 roll ddf } if exch dup Adobe_AGM_Core/AGMCORE_tmp get 4 -1 roll put }forall exch {cvx} if }bdf /clonedict { dup length dict begin { dup type /dicttype eq { clonedict } if dup type /arraytype eq { clonearray } if def }forall currentdict end }bdf /DeviceN_PS2 { /currentcolorspace AGMCORE_gget 0 get /DeviceN eq level3 not and } bdf /Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget dup null ne { dup /CSDBase known { /CSDBase get /CSD get_res /Names known }{ pop false }ifelse }{ pop false } ifelse } bdf /DeviceN_NoneName { /Names where { pop false Names { (None) eq or } forall }{ false }ifelse } bdf /DeviceN_PS2_inRip_seps { /AGMCORE_in_rip_sep where { pop dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /DeviceN eq level3 not and AGMCORE_in_rip_sep and { /currentcolorspace exch AGMCORE_gput false } { true }ifelse } { true } ifelse } { true } ifelse } bdf /base_colorspace_type { dup type /arraytype eq {0 get} if } bdf /currentdistillerparams where { pop currentdistillerparams /CoreDistVersion get 5000 lt}{true}ifelse { /pdfmark_5 {cleartomark} bind def }{ /pdfmark_5 {pdfmark} bind def }ifelse /ReadBypdfmark_5 { 2 dict begin /makerString exch def string /tmpString exch def { currentfile tmpString readline pop makerString anchorsearch { pop pop cleartomark exit }{ 3 copy /PUT pdfmark_5 pop 2 copy (\n) /PUT pdfmark_5 } ifelse }loop end } bdf /doc_setup{ Adobe_AGM_Utils begin }bdf /doc_trailer{ currentdict Adobe_AGM_Utils eq{ end }if }bdf systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_AGM_Core 2.0 0 %%Version: 2.0 0 %%Copyright: Copyright (C) 1997-2005 Adobe Systems, Inc. All Rights Reserved. %% Note: This procset assumes Adobe_AGM_Utils is opened on the stack below it, for %% definitions of some fundamental procedures. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Core 201 dict dup begin put /Adobe_AGM_Core_Id /Adobe_AGM_Core_2.0_0 def /AGMCORE_str256 256 string def /AGMCORE_save nd /AGMCORE_graphicsave nd /AGMCORE_c 0 def /AGMCORE_m 0 def /AGMCORE_y 0 def /AGMCORE_k 0 def /AGMCORE_cmykbuf 4 array def /AGMCORE_screen [currentscreen] cvx def /AGMCORE_tmp 0 def /AGMCORE_&setgray nd /AGMCORE_&setcolor nd /AGMCORE_&setcolorspace nd /AGMCORE_&setcmykcolor nd /AGMCORE_cyan_plate nd /AGMCORE_magenta_plate nd /AGMCORE_yellow_plate nd /AGMCORE_black_plate nd /AGMCORE_plate_ndx nd /AGMCORE_get_ink_data nd /AGMCORE_is_cmyk_sep nd /AGMCORE_host_sep nd /AGMCORE_avoid_L2_sep_space nd /AGMCORE_distilling nd /AGMCORE_composite_job nd /AGMCORE_producing_seps nd /AGMCORE_ps_level -1 def /AGMCORE_ps_version -1 def /AGMCORE_environ_ok nd /AGMCORE_CSD_cache 0 dict def /AGMCORE_currentoverprint false def /AGMCORE_deltaX nd /AGMCORE_deltaY nd /AGMCORE_name nd /AGMCORE_sep_special nd /AGMCORE_err_strings 4 dict def /AGMCORE_cur_err nd /AGMCORE_current_spot_alias false def /AGMCORE_inverting false def /AGMCORE_feature_dictCount nd /AGMCORE_feature_opCount nd /AGMCORE_feature_ctm nd /AGMCORE_ConvertToProcess false def /AGMCORE_Default_CTM matrix def /AGMCORE_Default_PageSize nd /AGMCORE_currentbg nd /AGMCORE_currentucr nd /AGMCORE_in_pattern false def /AGMCORE_currentpagedevice nd /knockout_unitsq nd currentglobal true setglobal [/CSA /Gradient /Procedure] { /Generic /Category findresource dup length dict copy /Category defineresource pop } forall setglobal /AGMCORE_key_known { where{ /Adobe_AGM_Core_Id known }{ false }ifelse }ndf /flushinput { save 2 dict begin /CompareBuffer 3 -1 roll def /readbuffer 256 string def mark { currentfile readbuffer {readline} stopped {cleartomark mark} { not {pop exit} if CompareBuffer eq {exit} if }ifelse }loop cleartomark end restore }bdf /getspotfunction { AGMCORE_screen exch pop exch pop dup type /dicttype eq{ dup /HalftoneType get 1 eq{ /SpotFunction get }{ dup /HalftoneType get 2 eq{ /GraySpotFunction get }{ pop { abs exch abs 2 copy add 1 gt{ 1 sub dup mul exch 1 sub dup mul add 1 sub }{ dup mul exch dup mul add 1 exch sub }ifelse }bind }ifelse }ifelse }if } def /clp_npth { clip newpath } def /eoclp_npth { eoclip newpath } def /npth_clp { newpath clip } def /graphic_setup { /AGMCORE_graphicsave save def concat 0 setgray 0 setlinecap 0 setlinejoin 1 setlinewidth [] 0 setdash 10 setmiterlimit newpath false setoverprint false setstrokeadjust //Adobe_AGM_Core/spot_alias get exec /Adobe_AGM_Image where { pop Adobe_AGM_Image/spot_alias 2 copy known{ get exec }{ pop pop }ifelse } if 100 dict begin /dictstackcount countdictstack def /showpage {} def mark } def /graphic_cleanup { cleartomark dictstackcount 1 countdictstack 1 sub {end}for end AGMCORE_graphicsave restore } def /compose_error_msg { grestoreall initgraphics /Helvetica findfont 10 scalefont setfont /AGMCORE_deltaY 100 def /AGMCORE_deltaX 310 def clippath pathbbox newpath pop pop 36 add exch 36 add exch moveto 0 AGMCORE_deltaY rlineto AGMCORE_deltaX 0 rlineto 0 AGMCORE_deltaY neg rlineto AGMCORE_deltaX neg 0 rlineto closepath 0 AGMCORE_&setgray gsave 1 AGMCORE_&setgray fill grestore 1 setlinewidth gsave stroke grestore currentpoint AGMCORE_deltaY 15 sub add exch 8 add exch moveto /AGMCORE_deltaY 12 def /AGMCORE_tmp 0 def AGMCORE_err_strings exch get { dup 32 eq { pop AGMCORE_str256 0 AGMCORE_tmp getinterval stringwidth pop currentpoint pop add AGMCORE_deltaX 28 add gt { currentpoint AGMCORE_deltaY sub exch pop clippath pathbbox pop pop pop 44 add exch moveto } if AGMCORE_str256 0 AGMCORE_tmp getinterval show ( ) show 0 1 AGMCORE_str256 length 1 sub { AGMCORE_str256 exch 0 put }for /AGMCORE_tmp 0 def } { AGMCORE_str256 exch AGMCORE_tmp xpt /AGMCORE_tmp AGMCORE_tmp 1 add def } ifelse } forall } bdf /doc_setup{ Adobe_AGM_Core begin /AGMCORE_ps_version xdf /AGMCORE_ps_level xdf errordict /AGM_handleerror known not{ errordict /AGM_handleerror errordict /handleerror get put errordict /handleerror { Adobe_AGM_Core begin $error /newerror get AGMCORE_cur_err null ne and{ $error /newerror false put AGMCORE_cur_err compose_error_msg }if $error /newerror true put end errordict /AGM_handleerror get exec } bind put }if /AGMCORE_environ_ok ps_level AGMCORE_ps_level ge ps_version AGMCORE_ps_version ge and AGMCORE_ps_level -1 eq or def AGMCORE_environ_ok not {/AGMCORE_cur_err /AGMCORE_bad_environ def} if /AGMCORE_&setgray systemdict/setgray get def level2{ /AGMCORE_&setcolor systemdict/setcolor get def /AGMCORE_&setcolorspace systemdict/setcolorspace get def }if /AGMCORE_currentbg currentblackgeneration def /AGMCORE_currentucr currentundercolorremoval def /AGMCORE_distilling /product where{ pop systemdict/setdistillerparams known product (Adobe PostScript Parser) ne and }{ false }ifelse def /AGMCORE_GSTATE AGMCORE_key_known not{ /AGMCORE_GSTATE 21 dict def /AGMCORE_tmpmatrix matrix def /AGMCORE_gstack 32 array def /AGMCORE_gstackptr 0 def /AGMCORE_gstacksaveptr 0 def /AGMCORE_gstackframekeys 10 def /AGMCORE_&gsave /gsave ldf /AGMCORE_&grestore /grestore ldf /AGMCORE_&grestoreall /grestoreall ldf /AGMCORE_&save /save ldf /AGMCORE_&setoverprint /setoverprint ldf /AGMCORE_gdictcopy { begin { def } forall end }def /AGMCORE_gput { AGMCORE_gstack AGMCORE_gstackptr get 3 1 roll put }def /AGMCORE_gget { AGMCORE_gstack AGMCORE_gstackptr get exch get }def /gsave { AGMCORE_&gsave AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if /AGMCORE_gstackptr exch store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /grestore { AGMCORE_&grestore AGMCORE_gstackptr 1 sub dup AGMCORE_gstacksaveptr lt {1 add} if dup AGMCORE_gstack exch get dup /AGMCORE_currentoverprint known {/AGMCORE_currentoverprint get setoverprint}{pop}ifelse /AGMCORE_gstackptr exch store }def /grestoreall { AGMCORE_&grestoreall /AGMCORE_gstackptr AGMCORE_gstacksaveptr store }def /save { AGMCORE_&save AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gstackptr 1 add dup 32 ge {limitcheck} if /AGMCORE_gstackptr exch store /AGMCORE_gstacksaveptr AGMCORE_gstackptr store AGMCORE_gstack AGMCORE_gstackptr get AGMCORE_gdictcopy }def /setoverprint{ dup /AGMCORE_currentoverprint exch AGMCORE_gput AGMCORE_&setoverprint }def 0 1 AGMCORE_gstack length 1 sub { AGMCORE_gstack exch AGMCORE_gstackframekeys dict put } for }if level3 /AGMCORE_&sysshfill AGMCORE_key_known not and { /AGMCORE_&sysshfill systemdict/shfill get def /AGMCORE_&sysmakepattern systemdict/makepattern get def /AGMCORE_&usrmakepattern /makepattern load def }if /currentcmykcolor [0 0 0 0] AGMCORE_gput /currentstrokeadjust false AGMCORE_gput /currentcolorspace [/DeviceGray] AGMCORE_gput /sep_tint 0 AGMCORE_gput /devicen_tints [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] AGMCORE_gput /sep_colorspace_dict null AGMCORE_gput /devicen_colorspace_dict null AGMCORE_gput /indexed_colorspace_dict null AGMCORE_gput /currentcolor_intent () AGMCORE_gput /customcolor_tint 1 AGMCORE_gput << /MaxPatternItem currentsystemparams /MaxPatternCache get >> setuserparams end }def /page_setup { /setcmykcolor where{ pop Adobe_AGM_Core/AGMCORE_&setcmykcolor /setcmykcolor load put }if Adobe_AGM_Core begin /setcmykcolor { 4 copy AGMCORE_cmykbuf astore /currentcmykcolor exch AGMCORE_gput 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor pop }ndf /currentcmykcolor { /currentcmykcolor AGMCORE_gget aload pop }ndf /setoverprint { pop }ndf /currentoverprint { false }ndf /AGMCORE_cyan_plate 1 0 0 0 test_cmyk_color_plate def /AGMCORE_magenta_plate 0 1 0 0 test_cmyk_color_plate def /AGMCORE_yellow_plate 0 0 1 0 test_cmyk_color_plate def /AGMCORE_black_plate 0 0 0 1 test_cmyk_color_plate def /AGMCORE_plate_ndx AGMCORE_cyan_plate{ 0 }{ AGMCORE_magenta_plate{ 1 }{ AGMCORE_yellow_plate{ 2 }{ AGMCORE_black_plate{ 3 }{ 4 }ifelse }ifelse }ifelse }ifelse def /AGMCORE_have_reported_unsupported_color_space false def /AGMCORE_report_unsupported_color_space { AGMCORE_have_reported_unsupported_color_space false eq { (Warning: Job contains content that cannot be separated with on-host methods. This content appears on the black plate, and knocks out all other plates.) == Adobe_AGM_Core /AGMCORE_have_reported_unsupported_color_space true ddf } if }def /AGMCORE_composite_job AGMCORE_cyan_plate AGMCORE_magenta_plate and AGMCORE_yellow_plate and AGMCORE_black_plate and def /AGMCORE_in_rip_sep /AGMCORE_in_rip_sep where{ pop AGMCORE_in_rip_sep }{ AGMCORE_distilling { false }{ userdict/Adobe_AGM_OnHost_Seps known{ false }{ level2{ currentpagedevice/Separations 2 copy known{ get }{ pop pop false }ifelse }{ false }ifelse }ifelse }ifelse }ifelse def /AGMCORE_producing_seps AGMCORE_composite_job not AGMCORE_in_rip_sep or def /AGMCORE_host_sep AGMCORE_producing_seps AGMCORE_in_rip_sep not and def /AGM_preserve_spots /AGM_preserve_spots where{ pop AGM_preserve_spots }{ AGMCORE_distilling AGMCORE_producing_seps or }ifelse def /AGM_is_distiller_preserving_spotimages { currentdistillerparams/PreserveOverprintSettings known { currentdistillerparams/PreserveOverprintSettings get { currentdistillerparams/ColorConversionStrategy known { currentdistillerparams/ColorConversionStrategy get /sRGB ne }{ true }ifelse }{ false }ifelse }{ false }ifelse }def /convert_spot_to_process where {pop}{ /convert_spot_to_process { //Adobe_AGM_Core begin dup map_alias { /Name get exch pop } if dup dup (None) eq exch (All) eq or { pop false }{ AGMCORE_host_sep { gsave 1 0 0 0 setcmykcolor currentgray 1 exch sub 0 1 0 0 setcmykcolor currentgray 1 exch sub 0 0 1 0 setcmykcolor currentgray 1 exch sub 0 0 0 1 setcmykcolor currentgray 1 exch sub add add add 0 eq { pop false }{ false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne }ifelse grestore }{ AGMCORE_distilling { pop AGM_is_distiller_preserving_spotimages not }{ //Adobe_AGM_Core/AGMCORE_name xddf false //Adobe_AGM_Core/AGMCORE_in_pattern known {//Adobe_AGM_Core/AGMCORE_in_pattern get}{false} ifelse not AGMCORE_currentpagedevice/OverrideSeparations known and { AGMCORE_currentpagedevice/OverrideSeparations get { /HqnSpots /ProcSet resourcestatus { pop pop pop true }if }if }if { AGMCORE_name /HqnSpots /ProcSet findresource /TestSpot get exec not }{ gsave [/Separation AGMCORE_name /DeviceGray {}]AGMCORE_&setcolorspace false AGMCORE_currentpagedevice/SeparationColorNames 2 copy known { get { AGMCORE_name eq or}forall not }{ pop pop pop true }ifelse grestore }ifelse }ifelse }ifelse }ifelse end }def }ifelse /convert_to_process where {pop}{ /convert_to_process { dup length 0 eq { pop false }{ AGMCORE_host_sep { dup true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process and}ifelse } forall { true exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch (Black) eq or and }forall not }{pop false}ifelse }{ false exch { dup (Cyan) eq exch dup (Magenta) eq 3 -1 roll or exch dup (Yellow) eq 3 -1 roll or exch dup (Black) eq 3 -1 roll or {pop} {convert_spot_to_process or}ifelse } forall }ifelse }ifelse }def }ifelse /AGMCORE_avoid_L2_sep_space version cvr 2012 lt level2 and AGMCORE_producing_seps not and def /AGMCORE_is_cmyk_sep AGMCORE_cyan_plate AGMCORE_magenta_plate or AGMCORE_yellow_plate or AGMCORE_black_plate or def /AGM_avoid_0_cmyk where{ pop AGM_avoid_0_cmyk }{ AGM_preserve_spots userdict/Adobe_AGM_OnHost_Seps known userdict/Adobe_AGM_InRip_Seps known or not and }ifelse { /setcmykcolor[ { 4 copy add add add 0 eq currentoverprint and{ pop 0.0005 }if }/exec cvx /AGMCORE_&setcmykcolor load dup type/operatortype ne{ /exec cvx }if ]cvx def }if /AGMCORE_IsSeparationAProcessColor { dup (Cyan) eq exch dup (Magenta) eq exch dup (Yellow) eq exch (Black) eq or or or }def AGMCORE_host_sep{ /setcolortransfer { AGMCORE_cyan_plate{ pop pop pop }{ AGMCORE_magenta_plate{ 4 3 roll pop pop pop }{ AGMCORE_yellow_plate{ 4 2 roll pop pop pop }{ 4 1 roll pop pop pop }ifelse }ifelse }ifelse settransfer } def /AGMCORE_get_ink_data AGMCORE_cyan_plate{ {pop pop pop} }{ AGMCORE_magenta_plate{ {4 3 roll pop pop pop} }{ AGMCORE_yellow_plate{ {4 2 roll pop pop pop} }{ {4 1 roll pop pop pop} }ifelse }ifelse }ifelse def /AGMCORE_RemoveProcessColorNames { 1 dict begin /filtername { dup /Cyan eq 1 index (Cyan) eq or {pop (_cyan_)}if dup /Magenta eq 1 index (Magenta) eq or {pop (_magenta_)}if dup /Yellow eq 1 index (Yellow) eq or {pop (_yellow_)}if dup /Black eq 1 index (Black) eq or {pop (_black_)}if }def dup type /arraytype eq {[exch {filtername}forall]} {filtername}ifelse end }def level3 { /AGMCORE_IsCurrentColor { dup AGMCORE_IsSeparationAProcessColor { AGMCORE_plate_ndx 0 eq {dup (Cyan) eq exch /Cyan eq or}if AGMCORE_plate_ndx 1 eq {dup (Magenta) eq exch /Magenta eq or}if AGMCORE_plate_ndx 2 eq {dup (Yellow) eq exch /Yellow eq or}if AGMCORE_plate_ndx 3 eq {dup (Black) eq exch /Black eq or}if AGMCORE_plate_ndx 4 eq {pop false}if }{ gsave false setoverprint current_spot_alias false set_spot_alias 1 1 1 1 6 -1 roll findcmykcustomcolor 1 setcustomcolor set_spot_alias currentgray 1 ne grestore }ifelse }def /AGMCORE_filter_functiondatasource { 5 dict begin /data_in xdf data_in type /stringtype eq { /ncomp xdf /comp xdf /string_out data_in length ncomp idiv string def 0 ncomp data_in length 1 sub { string_out exch dup ncomp idiv exch data_in exch ncomp getinterval comp get 255 exch sub put }for string_out }{ string /string_in xdf /string_out 1 string def /component xdf [ data_in string_in /readstring cvx [component /get cvx 255 /exch cvx /sub cvx string_out /exch cvx 0 /exch cvx /put cvx string_out]cvx [/pop cvx ()]cvx /ifelse cvx ]cvx /ReusableStreamDecode filter }ifelse end }def /AGMCORE_separateShadingFunction { 2 dict begin /paint? xdf /channel xdf dup type /dicttype eq { begin FunctionType 0 eq { /DataSource channel Range length 2 idiv DataSource AGMCORE_filter_functiondatasource def currentdict /Decode known {/Decode Decode channel 2 mul 2 getinterval def}if paint? not {/Decode [1 1]def}if }if FunctionType 2 eq { paint? { /C0 [C0 channel get 1 exch sub] def /C1 [C1 channel get 1 exch sub] def }{ /C0 [1] def /C1 [1] def }ifelse }if FunctionType 3 eq { /Functions [Functions {channel paint? AGMCORE_separateShadingFunction} forall] def }if currentdict /Range known {/Range [0 1] def}if currentdict end}{ channel get 0 paint? AGMCORE_separateShadingFunction }ifelse end }def /AGMCORE_separateShading { 3 -1 roll begin currentdict /Function known { currentdict /Background known {[1 index{Background 3 index get 1 exch sub}{1}ifelse]/Background xdf}if Function 3 1 roll AGMCORE_separateShadingFunction /Function xdf /ColorSpace [/DeviceGray] def }{ ColorSpace dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def }{ ColorSpace dup 1 get AGMCORE_RemoveProcessColorNames 1 exch put }ifelse ColorSpace 0 get /Separation eq { { [1 /exch cvx /sub cvx]cvx }{ [/pop cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll put pop }{ { [exch ColorSpace 1 get length 1 sub exch sub /index cvx 1 /exch cvx /sub cvx ColorSpace 1 get length 1 add 1 /roll cvx ColorSpace 1 get length{/pop cvx} repeat]cvx }{ pop [ColorSpace 1 get length {/pop cvx} repeat cvx 1]cvx }ifelse ColorSpace 3 3 -1 roll bind put }ifelse ColorSpace 2 /DeviceGray put }ifelse end }def /AGMCORE_separateShadingDict { dup /ColorSpace get dup type /arraytype ne {[exch]}if dup 0 get /DeviceCMYK eq { exch begin currentdict AGMCORE_cyan_plate {0 true}if AGMCORE_magenta_plate {1 true}if AGMCORE_yellow_plate {2 true}if AGMCORE_black_plate {3 true}if AGMCORE_plate_ndx 4 eq {0 false}if dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading currentdict end exch }if dup 0 get /Separation eq { exch begin ColorSpace 1 get dup /None ne exch /All ne and { ColorSpace 1 get AGMCORE_IsCurrentColor AGMCORE_plate_ndx 4 lt and ColorSpace 1 get AGMCORE_IsSeparationAProcessColor not and { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /Separation ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading }if }ifelse }{ currentdict ColorSpace 1 get AGMCORE_IsCurrentColor 0 exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse }if currentdict end exch }if dup 0 get /DeviceN eq { exch begin ColorSpace 1 get convert_to_process { ColorSpace 2 get dup type /arraytype eq {0 get}if /DeviceCMYK eq { /ColorSpace [ /DeviceN ColorSpace 1 get /DeviceGray [ ColorSpace 3 get /exec cvx 4 AGMCORE_plate_ndx sub -1 /roll cvx 4 1 /roll cvx 3 [/pop cvx]cvx /repeat cvx 1 /exch cvx /sub cvx ]cvx ]def }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { currentdict 0 false AGMCORE_separateShading /ColorSpace [/DeviceGray] def }if }ifelse }{ currentdict false -1 ColorSpace 1 get { AGMCORE_IsCurrentColor { 1 add exch pop true exch exit }if 1 add }forall exch dup not currentoverprint and {/AGMCORE_ignoreshade true def}if AGMCORE_separateShading }ifelse currentdict end exch }if dup 0 get dup /DeviceCMYK eq exch dup /Separation eq exch /DeviceN eq or or not { exch begin ColorSpace dup type /arraytype eq {0 get}if /DeviceGray ne { AGMCORE_report_unsupported_color_space AGMCORE_black_plate not { ColorSpace 0 get /CIEBasedA eq { /ColorSpace [/Separation /_ciebaseda_ /DeviceGray {}] def }if ColorSpace 0 get dup /CIEBasedABC eq exch dup /CIEBasedDEF eq exch /DeviceRGB eq or or { /ColorSpace [/DeviceN [/_red_ /_green_ /_blue_] /DeviceRGB {}] def }if ColorSpace 0 get /CIEBasedDEFG eq { /ColorSpace [/DeviceN [/_cyan_ /_magenta_ /_yellow_ /_black_] /DeviceCMYK {}] def }if currentdict 0 false AGMCORE_separateShading }if }if currentdict end exch }if pop dup /AGMCORE_ignoreshade known { begin /ColorSpace [/Separation (None) /DeviceGray {}] def currentdict end }if }def /shfill { AGMCORE_separateShadingDict dup /AGMCORE_ignoreshade known {pop} {AGMCORE_&sysshfill}ifelse }def /makepattern { exch dup /PatternType get 2 eq { clonedict begin /Shading Shading AGMCORE_separateShadingDict def Shading /AGMCORE_ignoreshade known currentdict end exch {pop <>}if exch AGMCORE_&sysmakepattern }{ exch AGMCORE_&usrmakepattern }ifelse }def }if }if AGMCORE_in_rip_sep{ /setcustomcolor { exch aload pop dup 7 1 roll inRip_spot_has_ink not { 4 {4 index mul 4 1 roll} repeat /DeviceCMYK setcolorspace 6 -2 roll pop pop }{ //Adobe_AGM_Core begin /AGMCORE_k xdf /AGMCORE_y xdf /AGMCORE_m xdf /AGMCORE_c xdf end [/Separation 4 -1 roll /DeviceCMYK {dup AGMCORE_c mul exch dup AGMCORE_m mul exch dup AGMCORE_y mul exch AGMCORE_k mul} ] setcolorspace }ifelse setcolor }ndf /setseparationgray { [/Separation (All) /DeviceGray {}] setcolorspace_opt 1 exch sub setcolor }ndf }{ /setseparationgray { AGMCORE_&setgray }ndf }ifelse /findcmykcustomcolor { 5 makereadonlyarray }ndf /setcustomcolor { exch aload pop pop 4 {4 index mul 4 1 roll} repeat setcmykcolor pop }ndf /has_color /colorimage where{ AGMCORE_producing_seps{ pop true }{ systemdict eq }ifelse }{ false }ifelse def /map_index { 1 index mul exch getinterval {255 div} forall } bdf /map_indexed_devn { Lookup Names length 3 -1 roll cvi map_index } bdf /n_color_components { base_colorspace_type dup /DeviceGray eq{ pop 1 }{ /DeviceCMYK eq{ 4 }{ 3 }ifelse }ifelse }bdf level2{ /mo /moveto ldf /li /lineto ldf /cv /curveto ldf /knockout_unitsq { 1 setgray 0 0 1 1 rectfill }def level2 /setcolorspace AGMCORE_key_known not and{ /AGMCORE_&&&setcolorspace /setcolorspace ldf /AGMCORE_ReplaceMappedColor { dup type dup /arraytype eq exch /packedarraytype eq or { /AGMCORE_SpotAliasAry2 where { begin dup 0 get dup /Separation eq { pop dup length array copy dup dup 1 get current_spot_alias { dup map_alias { false set_spot_alias dup 1 exch setsepcolorspace true set_spot_alias begin /sep_colorspace_dict currentdict AGMCORE_gput pop pop pop [ /Separation Name CSA map_csa MappedCSA /sep_colorspace_proc load ] dup Name end }if }if map_reserved_ink_name 1 xpt }{ /DeviceN eq { dup length array copy dup dup 1 get [ exch { current_spot_alias{ dup map_alias{ /Name get exch pop }if }if map_reserved_ink_name } forall ] 1 xpt }if }ifelse end } if }if }def /setcolorspace { dup type dup /arraytype eq exch /packedarraytype eq or { dup 0 get /Indexed eq { AGMCORE_distilling { /PhotoshopDuotoneList where { pop false }{ true }ifelse }{ true }ifelse { aload pop 3 -1 roll AGMCORE_ReplaceMappedColor 3 1 roll 4 array astore }if }{ AGMCORE_ReplaceMappedColor }ifelse }if DeviceN_PS2_inRip_seps {AGMCORE_&&&setcolorspace} if }def }if }{ /adj { currentstrokeadjust{ transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }if }def /mo{ adj moveto }def /li{ adj lineto }def /cv{ 6 2 roll adj 6 2 roll adj 6 2 roll adj curveto }def /knockout_unitsq { 1 setgray 8 8 1 [8 0 0 8 0 0] {} image }def /currentstrokeadjust{ /currentstrokeadjust AGMCORE_gget }def /setstrokeadjust{ /currentstrokeadjust exch AGMCORE_gput }def /setcolorspace { /currentcolorspace exch AGMCORE_gput } def /currentcolorspace { /currentcolorspace AGMCORE_gget } def /setcolor_devicecolor { base_colorspace_type dup /DeviceGray eq{ pop setgray }{ /DeviceCMYK eq{ setcmykcolor }{ setrgbcolor }ifelse }ifelse }def /setcolor { currentcolorspace 0 get dup /DeviceGray ne{ dup /DeviceCMYK ne{ dup /DeviceRGB ne{ dup /Separation eq{ pop currentcolorspace 3 get exec currentcolorspace 2 get }{ dup /Indexed eq{ pop currentcolorspace 3 get dup type /stringtype eq{ currentcolorspace 1 get n_color_components 3 -1 roll map_index }{ exec }ifelse currentcolorspace 1 get }{ /AGMCORE_cur_err /AGMCORE_invalid_color_space def AGMCORE_invalid_color_space }ifelse }ifelse }if }if }if setcolor_devicecolor } def }ifelse /sop /setoverprint ldf /lw /setlinewidth ldf /lc /setlinecap ldf /lj /setlinejoin ldf /ml /setmiterlimit ldf /dsh /setdash ldf /sadj /setstrokeadjust ldf /gry /setgray ldf /rgb /setrgbcolor ldf /cmyk /setcmykcolor ldf /sep /setsepcolor ldf /devn /setdevicencolor ldf /idx /setindexedcolor ldf /colr /setcolor ldf /csacrd /set_csa_crd ldf /sepcs /setsepcolorspace ldf /devncs /setdevicencolorspace ldf /idxcs /setindexedcolorspace ldf /cp /closepath ldf /clp /clp_npth ldf /eclp /eoclp_npth ldf /f /fill ldf /ef /eofill ldf /@ /stroke ldf /nclp /npth_clp ldf /gset /graphic_setup ldf /gcln /graphic_cleanup ldf /AGMCORE_def_ht currenthalftone def /clonedict Adobe_AGM_Utils begin /clonedict load end def /clonearray Adobe_AGM_Utils begin /clonearray load end def currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and { bind }if def }forall /getrampcolor { /indx exch def 0 1 NumComp 1 sub { dup Samples exch get dup type /stringtype eq {indx get} if exch Scaling exch get aload pop 3 1 roll mul add } for ColorSpaceFamily /Separation eq {sep} { ColorSpaceFamily /DeviceN eq {devn} {setcolor}ifelse }ifelse } bdf /sssetbackground {aload pop setcolor} bdf /RadialShade { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /r2 xdf /c2y xdf /c2x xdf /r1 xdf /c1y xdf /c1x xdf /rampdict xdf /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if c1x c2x eq { c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse } { /slope c2y c1y sub c2x c1x sub div def /theta slope 1 atan def c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if } ifelse gsave clippath c1x c1y translate theta rotate -90 rotate { pathbbox } stopped { 0 0 0 0 } if /yMax xdf /xMax xdf /yMin xdf /xMin xdf grestore xMax xMin eq yMax yMin eq or { grestore end } { /max { 2 copy gt { pop } {exch pop} ifelse } bdf /min { 2 copy lt { pop } {exch pop} ifelse } bdf rampdict begin 40 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave c1x c1y translate theta rotate -90 rotate /c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def /c1y 0 def /c1x 0 def /c2x 0 def ext0 { 0 getrampcolor c2y r2 add r1 sub 0.0001 lt { c1x c1y r1 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2y r1 add r2 le { c1x c1y r1 0 360 arc fill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r1 neg def /p1y c1y def /p2x r1 def /p2y c1y def p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto fill } { /AA r2 r1 sub c2y div def AA -1 eq { /theta 89.99 def} { /theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y p1x SS1 div neg def /SS2 90 theta sub dup sin exch cos div def /p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y p2x SS2 div neg def r1 r2 gt { /L1maxX p1x yMin p1y sub SS1 div add def /L2maxX p2x yMin p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def } ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if c1x c2x sub dup mul c1y c2y sub dup mul add 0.5 exp 0 dtransform dup mul exch dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop /hires xdf hires mul /numpix xdf /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if /xInc c2x c1x sub numsteps div def /yInc c2y c1y sub numsteps div def /rInc r2 r1 sub numsteps div def /cx c1x def /cy c1y def /radius r1 def newpath xInc 0 eq yInc 0 eq rInc 0 eq and and { 0 getrampcolor cx cy radius 0 360 arc stroke NumSamples 1 sub getrampcolor cx cy radius 72 hires div add 0 360 arc 0 setlinewidth stroke } { 0 numsteps { dup subsampling { round cvi } if getrampcolor cx cy radius 0 360 arc /cx cx xInc add def /cy cy yInc add def /radius radius rInc add def cx cy radius 360 0 arcn eofill rampIndxInc add } repeat pop } ifelse ext1 { c2y r2 add r1 lt { c2x c2y r2 0 360 arc fill } { c2y r1 add r2 sub 0.0001 le { c2x c2y r2 360 0 arcn pathbbox /aymax exch def /axmax exch def /aymin exch def /axmin exch def /bxMin xMin axmin min def /byMin yMin aymin min def /bxMax xMax axmax max def /byMax yMax aymax max def bxMin byMin moveto bxMax byMin lineto bxMax byMax lineto bxMin byMax lineto bxMin byMin lineto eofill } { c2x c2y r2 0 360 arc fill r1 r2 eq { /p1x r2 neg def /p1y c2y def /p2x r2 def /p2y c2y def p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto fill } { /AA r2 r1 sub c2y div def AA -1 eq { /theta 89.99 def} { /theta AA 1 AA dup mul sub sqrt div 1 atan def} ifelse /SS1 90 theta add dup sin exch cos div def /p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def /p1y c2y p1x SS1 div sub def /SS2 90 theta sub dup sin exch cos div def /p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def /p2y c2y p2x SS2 div sub def r1 r2 lt { /L1maxX p1x yMax p1y sub SS1 div add def /L2maxX p2x yMax p2y sub SS2 div add def } { /L1maxX 0 def /L2maxX 0 def }ifelse p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto L1maxX L1maxX p1x sub SS1 mul p1y add lineto fill } ifelse } ifelse } ifelse } if grestore grestore end end end } ifelse } bdf /GenStrips { 40 dict begin /ColorSpaceFamily xdf /background xdf /ext1 xdf /ext0 xdf /BBox xdf /y2 xdf /x2 xdf /y1 xdf /x1 xdf /rampdict xdf /setinkoverprint where {pop /setinkoverprint{pop}def}if gsave BBox length 0 gt { newpath BBox 0 get BBox 1 get moveto BBox 2 get BBox 0 get sub 0 rlineto 0 BBox 3 get BBox 1 get sub rlineto BBox 2 get BBox 0 get sub neg 0 rlineto closepath clip newpath } if x1 x2 eq { y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse } { /slope y2 y1 sub x2 x1 sub div def /theta slope 1 atan def x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if } ifelse gsave clippath x1 y1 translate theta rotate { pathbbox } stopped { 0 0 0 0 } if /yMax exch def /xMax exch def /yMin exch def /xMin exch def grestore xMax xMin eq yMax yMin eq or { grestore end } { rampdict begin 20 dict begin background length 0 gt { background sssetbackground gsave clippath fill grestore } if gsave x1 y1 translate theta rotate /xStart 0 def /xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def /ySpan yMax yMin sub def /numsteps NumSamples def /rampIndxInc 1 def /subsampling false def xStart 0 transform xEnd 0 transform 3 -1 roll sub dup mul 3 1 roll sub dup mul add 0.5 exp 72 div 0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt 1 index 1 index lt { exch } if pop mul /numpix xdf numpix 0 ne { NumSamples numpix div 0.5 gt { /numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def /rampIndxInc NumSamples 1 sub numsteps div def /subsampling true def } if } if ext0 { 0 getrampcolor xMin xStart lt { xMin yMin xMin neg ySpan rectfill } if } if /xInc xEnd xStart sub numsteps div def /x xStart def 0 numsteps { dup subsampling { round cvi } if getrampcolor x yMin xInc ySpan rectfill /x x xInc add def rampIndxInc add } repeat pop ext1 { xMax xEnd gt { xEnd yMin xMax xEnd sub ySpan rectfill } if } if grestore grestore end end end } ifelse } bdf }def /page_trailer { end }def /doc_trailer{ }def /capture_currentpagedevice { //Adobe_AGM_Core/AGMCORE_currentpagedevice currentpagedevice ddf } def systemdict /findcolorrendering known{ /findcolorrendering systemdict /findcolorrendering get def }if systemdict /setcolorrendering known{ /setcolorrendering systemdict /setcolorrendering get def }if /test_cmyk_color_plate { gsave setcmykcolor currentgray 1 ne grestore }def /inRip_spot_has_ink { dup //Adobe_AGM_Core/AGMCORE_name xddf convert_spot_to_process not }def /map255_to_range { 1 index sub 3 -1 roll 255 div mul add }def /set_csa_crd { /sep_colorspace_dict null AGMCORE_gput begin CSA get_csa_by_name setcolorspace_opt set_crd end } def /map_csa { currentdict/MappedCSA known{MappedCSA null ne}{false}ifelse {pop}{get_csa_by_name /MappedCSA xdf}ifelse } def /setsepcolor { /sep_colorspace_dict AGMCORE_gget begin dup /sep_tint exch AGMCORE_gput TintProc end } def /setdevicencolor { /devicen_colorspace_dict AGMCORE_gget begin Names length copy Names length 1 sub -1 0 { /devicen_tints AGMCORE_gget 3 1 roll xpt } for TintProc end } def /sep_colorspace_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin currentdict/Components known{ Components aload pop TintMethod/Lab eq{ 2 {AGMCORE_tmp mul NComponents 1 roll} repeat LMax sub AGMCORE_tmp mul LMax add NComponents 1 roll }{ TintMethod/Subtractive eq{ NComponents{ AGMCORE_tmp mul NComponents 1 roll }repeat }{ NComponents{ 1 sub AGMCORE_tmp mul 1 add NComponents 1 roll } repeat }ifelse }ifelse }{ ColorLookup AGMCORE_tmp ColorLookup length 1 sub mul round cvi get aload pop }ifelse end } def /sep_colorspace_gray_proc { /AGMCORE_tmp exch store /sep_colorspace_dict AGMCORE_gget begin GrayLookup AGMCORE_tmp GrayLookup length 1 sub mul round cvi get end } def /sep_proc_name { dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or level2 not and has_color not and{ pop [/DeviceGray] /sep_colorspace_gray_proc }{ /sep_colorspace_proc }ifelse } def /setsepcolorspace { current_spot_alias{ dup begin Name map_alias{ exch pop }if end }if dup /sep_colorspace_dict exch AGMCORE_gput begin CSA map_csa /AGMCORE_sep_special Name dup () eq exch (All) eq or store AGMCORE_avoid_L2_sep_space{ [/Indexed MappedCSA sep_proc_name 255 exch { 255 div } /exec cvx 3 -1 roll [ 4 1 roll load /exec cvx ] cvx ] setcolorspace_opt /TintProc { 255 mul round cvi setcolor }bdf }{ MappedCSA 0 get /DeviceCMYK eq currentdict/Components known and AGMCORE_sep_special not and{ /TintProc [ Components aload pop Name findcmykcustomcolor /exch cvx /setcustomcolor cvx ] cvx bdf }{ AGMCORE_host_sep Name (All) eq and{ /TintProc { 1 exch sub setseparationgray }bdf }{ AGMCORE_in_rip_sep MappedCSA 0 get /DeviceCMYK eq and AGMCORE_host_sep or Name () eq and{ /TintProc [ MappedCSA sep_proc_name exch 0 get /DeviceCMYK eq{ cvx /setcmykcolor cvx }{ cvx /setgray cvx }ifelse ] cvx bdf }{ AGMCORE_producing_seps MappedCSA 0 get dup /DeviceCMYK eq exch /DeviceGray eq or and AGMCORE_sep_special not and{ /TintProc [ /dup cvx MappedCSA sep_proc_name cvx exch 0 get /DeviceGray eq{ 1 /exch cvx /sub cvx 0 0 0 4 -1 /roll cvx }if /Name cvx /findcmykcustomcolor cvx /exch cvx AGMCORE_host_sep{ AGMCORE_is_cmyk_sep /Name cvx /AGMCORE_IsSeparationAProcessColor load /exec cvx /not cvx /and cvx }{ Name inRip_spot_has_ink not }ifelse [ /pop cvx 1 ] cvx /if cvx /setcustomcolor cvx ] cvx bdf }{ /TintProc {setcolor} bdf [/Separation Name MappedCSA sep_proc_name load ] setcolorspace_opt }ifelse }ifelse }ifelse }ifelse }ifelse set_crd setsepcolor end } def /additive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 0 1 numarrays 1 sub { 1 exch add /index cvx c1 /get cvx /mul cvx }for numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /subtractive_blend { 3 dict begin /numarrays xdf /numcolors xdf 0 1 numcolors 1 sub { /c1 xdf 1 1 0 1 numarrays 1 sub { 1 3 3 -1 roll add /index cvx c1 /get cvx /sub cvx /mul cvx }for /sub cvx numarrays 1 add 1 /roll cvx }for numarrays [/pop cvx] cvx /repeat cvx end }def /exec_tint_transform { /TintProc [ /TintTransform cvx /setcolor cvx ] cvx bdf MappedCSA setcolorspace_opt } bdf /devn_makecustomcolor { 2 dict begin /names_index xdf /Names xdf 1 1 1 1 Names names_index get findcmykcustomcolor /devicen_tints AGMCORE_gget names_index get setcustomcolor Names length {pop} repeat end } bdf /setdevicencolorspace { dup /AliasedColorants known {false}{true}ifelse current_spot_alias and { 7 dict begin /names_index 0 def dup /names_len exch /Names get length def /new_names names_len array def /new_LookupTables names_len array def /alias_cnt 0 def dup /Names get { dup map_alias { exch pop dup /ColorLookup known { dup begin new_LookupTables names_index ColorLookup put end }{ dup /Components known { dup begin new_LookupTables names_index Components put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse new_names names_index 3 -1 roll /Name get put /alias_cnt alias_cnt 1 add def }{ /name xdf new_names names_index name put dup /LookupTables known { dup begin new_LookupTables names_index LookupTables names_index get put end }{ dup begin new_LookupTables names_index [null null null null] put end } ifelse } ifelse /names_index names_index 1 add def } forall alias_cnt 0 gt { /AliasedColorants true def /lut_entry_len new_LookupTables 0 get dup length 256 ge {0 get length}{length}ifelse def 0 1 names_len 1 sub { /names_index xdf new_LookupTables names_index get dup length 256 ge {0 get length}{length}ifelse lut_entry_len ne { /AliasedColorants false def exit } { new_LookupTables names_index get 0 get null eq { dup /Names get names_index get /name xdf name (Cyan) eq name (Magenta) eq name (Yellow) eq name (Black) eq or or or not { /AliasedColorants false def exit } if } if } ifelse } for lut_entry_len 1 eq { /AliasedColorants false def } if AliasedColorants { dup begin /Names new_names def /LookupTables new_LookupTables def /AliasedColorants true def /NComponents lut_entry_len def /TintMethod NComponents 4 eq {/Subtractive}{/Additive}ifelse def /MappedCSA TintMethod /Additive eq {/DeviceRGB}{/DeviceCMYK}ifelse def currentdict /TTTablesIdx known not { /TTTablesIdx -1 def } if end } if }if end } if dup /devicen_colorspace_dict exch AGMCORE_gput begin currentdict /AliasedColorants known { AliasedColorants }{ false } ifelse dup not { CSA map_csa } if /TintTransform load type /nulltype eq or { /TintTransform [ 0 1 Names length 1 sub { /TTTablesIdx TTTablesIdx 1 add def dup LookupTables exch get dup 0 get null eq { 1 index Names exch get dup (Cyan) eq { pop exch LookupTables length exch sub /index cvx 0 0 0 } { dup (Magenta) eq { pop exch LookupTables length exch sub /index cvx 0 /exch cvx 0 0 } { (Yellow) eq { exch LookupTables length exch sub /index cvx 0 0 3 -1 /roll cvx 0 } { exch LookupTables length exch sub /index cvx 0 0 0 4 -1 /roll cvx } ifelse } ifelse } ifelse 5 -1 /roll cvx /astore cvx } { dup length 1 sub LookupTables length 4 -1 roll sub 1 add /index cvx /mul cvx /round cvx /cvi cvx /get cvx } ifelse Names length TTTablesIdx add 1 add 1 /roll cvx } for Names length [/pop cvx] cvx /repeat cvx NComponents Names length TintMethod /Subtractive eq { subtractive_blend } { additive_blend } ifelse ] cvx bdf } if AGMCORE_host_sep { Names convert_to_process { exec_tint_transform } { currentdict /AliasedColorants known { AliasedColorants not }{ false } ifelse 5 dict begin /AvoidAliasedColorants xdf /painted? false def /names_index 0 def /names_len Names length def AvoidAliasedColorants { /currentspotalias current_spot_alias def false set_spot_alias } if Names { AGMCORE_is_cmyk_sep { dup (Cyan) eq AGMCORE_cyan_plate and exch dup (Magenta) eq AGMCORE_magenta_plate and exch dup (Yellow) eq AGMCORE_yellow_plate and exch (Black) eq AGMCORE_black_plate and or or or { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def } if painted? {exit} if }{ 0 0 0 0 5 -1 roll findcmykcustomcolor 1 setcustomcolor currentgray 0 eq { /devicen_colorspace_dict AGMCORE_gget /TintProc [ Names names_index /devn_makecustomcolor cvx ] cvx ddf /painted? true def exit } if } ifelse /names_index names_index 1 add def } forall AvoidAliasedColorants { currentspotalias set_spot_alias } if painted? { /devicen_colorspace_dict AGMCORE_gget /names_index names_index put }{ /devicen_colorspace_dict AGMCORE_gget /TintProc [ names_len [/pop cvx] cvx /repeat cvx 1 /setseparationgray cvx 0 0 0 0 /setcmykcolor cvx ] cvx ddf } ifelse end } ifelse } { AGMCORE_in_rip_sep { Names convert_to_process not }{ level3 } ifelse { [/DeviceN Names MappedCSA /TintTransform load] setcolorspace_opt /TintProc level3 not AGMCORE_in_rip_sep and { [ Names /length cvx [/pop cvx] cvx /repeat cvx ] cvx bdf }{ {setcolor} bdf } ifelse }{ exec_tint_transform } ifelse } ifelse set_crd /AliasedColorants false def end } def /setindexedcolorspace { dup /indexed_colorspace_dict exch AGMCORE_gput begin currentdict /CSDBase known { CSDBase /CSD get_res begin currentdict /Names known { currentdict devncs }{ 1 currentdict sepcs } ifelse AGMCORE_host_sep{ 4 dict begin /compCnt /Names where {pop Names length}{1}ifelse def /NewLookup HiVal 1 add string def 0 1 HiVal { /tableIndex xdf Lookup dup type /stringtype eq { compCnt tableIndex map_index }{ exec } ifelse /Names where { pop setdevicencolor }{ setsepcolor } ifelse currentgray tableIndex exch HiVal mul cvi NewLookup 3 1 roll put } for [/Indexed currentcolorspace HiVal NewLookup] setcolorspace_opt end }{ level3 { currentdict /Names known { [/Indexed [/DeviceN Names MappedCSA /TintTransform load] HiVal Lookup] setcolorspace_opt }{ [/Indexed [/Separation Name MappedCSA sep_proc_name load] HiVal Lookup] setcolorspace_opt } ifelse }{ [/Indexed MappedCSA HiVal [ currentdict /Names known { Lookup dup type /stringtype eq {/exch cvx CSDBase /CSD get_res /Names get length dup /mul cvx exch /getinterval cvx {255 div} /forall cvx} {/exec cvx}ifelse /TintTransform load /exec cvx }{ Lookup dup type /stringtype eq {/exch cvx /get cvx 255 /div cvx} {/exec cvx}ifelse CSDBase /CSD get_res /MappedCSA get sep_proc_name exch pop /load cvx /exec cvx } ifelse ]cvx ]setcolorspace_opt }ifelse } ifelse end set_crd } { CSA map_csa AGMCORE_host_sep level2 not and{ 0 0 0 0 setcmykcolor }{ [/Indexed MappedCSA level2 not has_color not and{ dup 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or{ pop [/DeviceGray] }if HiVal GrayLookup }{ HiVal currentdict/RangeArray known{ { /indexed_colorspace_dict AGMCORE_gget begin Lookup exch dup HiVal gt{ pop HiVal }if NComponents mul NComponents getinterval {} forall NComponents 1 sub -1 0{ RangeArray exch 2 mul 2 getinterval aload pop map255_to_range NComponents 1 roll }for end } bind }{ Lookup }ifelse }ifelse ] setcolorspace_opt set_crd }ifelse }ifelse end }def /setindexedcolor { AGMCORE_host_sep { /indexed_colorspace_dict AGMCORE_gget dup /CSDBase known { begin CSDBase /CSD get_res begin currentdict /Names known{ map_indexed_devn devn } { Lookup 1 3 -1 roll map_index sep }ifelse end end }{ /Lookup get 4 3 -1 roll map_index setcmykcolor } ifelse }{ level3 not AGMCORE_in_rip_sep and /indexed_colorspace_dict AGMCORE_gget /CSDBase known and { /indexed_colorspace_dict AGMCORE_gget /CSDBase get /CSD get_res begin map_indexed_devn devn end } { setcolor } ifelse }ifelse } def /ignoreimagedata { currentoverprint not{ gsave dup clonedict begin 1 setgray /Decode [0 1] def /DataSource def /MultipleDataSources false def /BitsPerComponent 8 def currentdict end systemdict /image get exec grestore }if consumeimagedata }def /add_res { dup /CSD eq { pop //Adobe_AGM_Core begin /AGMCORE_CSD_cache load 3 1 roll put end }{ defineresource pop } ifelse }def /del_res { { aload pop exch dup /CSD eq { pop { //Adobe_AGM_Core/AGMCORE_CSD_cache get exch undef }forall }{ exch { 1 index undefineresource }forall pop } ifelse } forall }def /get_res { dup /CSD eq { pop dup type dup /nametype eq exch /stringtype eq or { AGMCORE_CSD_cache exch get } if }{ findresource } ifelse }def /get_csa_by_name { dup type dup /nametype eq exch /stringtype eq or{ /CSA get_res } if }def /pattern_buf_init { /count get 0 0 put } def /pattern_buf_next { dup /count get dup 0 get dup 3 1 roll 1 add 0 xpt get } def /cachepattern_compress { 5 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def /string_size 16000 def /readbuffer string_size string def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal /LZWFilter { exch dup length 0 eq { pop }{ patarray dup length 1 sub 3 -1 roll put } ifelse {string_size}{0}ifelse string } /LZWEncode filter def { ReadFilter readbuffer readstring exch LZWFilter exch writestring not {exit} if } loop LZWFilter closefile patarray end }def /cachepattern { 2 dict begin currentfile exch 0 exch /SubFileDecode filter /ReadFilter exch def /patarray 20 dict def currentglobal true setglobal patarray 1 array dup 0 1 put /count xpt setglobal { ReadFilter 16000 string readstring exch patarray dup length 1 sub 3 -1 roll put not {exit} if } loop patarray dup dup length 1 sub () put end }def /wrap_paintproc { statusdict /currentfilenameextend known{ clonedict begin /OldPaintProc /PaintProc load def /PaintProc { mark exch dup /OldPaintProc get stopped {closefile restore end} if cleartomark } def end } {pop} ifelse } def /make_pattern { exch clonedict exch dup matrix currentmatrix matrix concatmatrix 0 0 3 2 roll itransform exch 3 index /XStep get 1 index exch 2 copy div cvi mul sub sub exch 3 index /YStep get 1 index exch 2 copy div cvi mul sub sub matrix translate exch matrix concatmatrix 1 index begin BBox 0 get XStep div cvi XStep mul /xshift exch neg def BBox 1 get YStep div cvi YStep mul /yshift exch neg def BBox 0 get xshift add BBox 1 get yshift add BBox 2 get xshift add BBox 3 get yshift add 4 array astore /BBox exch def [ xshift yshift /translate load null /exec load ] dup 3 /PaintProc load put cvx /PaintProc exch def end 1 index dup /ID get exch /Pattern add_res gsave 0 setgray makepattern grestore }def /set_pattern { dup /PatternType get 1 eq{ dup /PaintType get 1 eq{ currentoverprint sop [/DeviceGray] setcolorspace 0 setgray }if }if setpattern }def /setcolorspace_opt { dup currentcolorspace eq{ pop }{ setcolorspace }ifelse }def /updatecolorrendering { currentcolorrendering/RenderingIntent known{ currentcolorrendering/RenderingIntent get }{null}ifelse Intent ne { Intent /ColorRendering {findresource} stopped { pop pop systemdict /findcolorrendering known { Intent findcolorrendering pop /ColorRendering findresource true } {false} ifelse } {true} ifelse { dup begin currentdict /TransformPQR known { currentdict /TransformPQR get aload pop 3 {{} eq 3 1 roll} repeat or or } {true} ifelse currentdict /MatrixPQR known { currentdict /MatrixPQR get aload pop 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 0.0 eq 9 1 roll 1.0 eq and and and and and and and and } {true} ifelse end or { clonedict begin /TransformPQR [ {4 -1 roll 3 get dup 3 1 roll sub 5 -1 roll 3 get 3 -1 roll sub div 3 -1 roll 3 get 3 -1 roll 3 get dup 4 1 roll sub mul add} bind {4 -1 roll 4 get dup 3 1 roll sub 5 -1 roll 4 get 3 -1 roll sub div 3 -1 roll 4 get 3 -1 roll 4 get dup 4 1 roll sub mul add} bind {4 -1 roll 5 get dup 3 1 roll sub 5 -1 roll 5 get 3 -1 roll sub div 3 -1 roll 5 get 3 -1 roll 5 get dup 4 1 roll sub mul add} bind ] def /MatrixPQR [ 0.8951 -0.7502 0.0389 0.2664 1.7135 -0.0685 -0.1614 0.0367 1.0296 ] def /RangePQR [-0.3227950745 2.3229645538 -1.5003771057 3.5003465881 -0.1369979095 2.136967392] def currentdict end } if setcolorrendering_opt } if }if } def /set_crd { AGMCORE_host_sep not level2 and{ currentdict /ColorRendering known{ ColorRendering /ColorRendering {findresource} stopped not {setcolorrendering_opt} if }{ currentdict/Intent known{ updatecolorrendering }if }ifelse currentcolorspace dup type /arraytype eq {0 get}if /DeviceRGB eq { currentdict/UCR known {/UCR}{/AGMCORE_currentucr}ifelse load setundercolorremoval currentdict/BG known {/BG}{/AGMCORE_currentbg}ifelse load setblackgeneration }if }if }def /setcolorrendering_opt { dup currentcolorrendering eq{ pop }{ clonedict begin /Intent Intent def currentdict end setcolorrendering }ifelse }def /cpaint_gcomp { convert_to_process //Adobe_AGM_Core/AGMCORE_ConvertToProcess xddf //Adobe_AGM_Core/AGMCORE_ConvertToProcess get not { (%end_cpaint_gcomp) flushinput }if }def /cpaint_gsep { //Adobe_AGM_Core/AGMCORE_ConvertToProcess get { (%end_cpaint_gsep) flushinput }if }def /cpaint_gend { newpath }def /set_spot_alias_ary { dup inherit_aliases //Adobe_AGM_Core/AGMCORE_SpotAliasAry xddf }def /set_spot_normalization_ary { dup inherit_aliases dup length /AGMCORE_SpotAliasAry where{pop AGMCORE_SpotAliasAry length add} if array //Adobe_AGM_Core/AGMCORE_SpotAliasAry2 xddf /AGMCORE_SpotAliasAry where{ pop AGMCORE_SpotAliasAry2 0 AGMCORE_SpotAliasAry putinterval AGMCORE_SpotAliasAry length }{0} ifelse AGMCORE_SpotAliasAry2 3 1 roll exch putinterval true set_spot_alias }def /inherit_aliases { {dup /Name get map_alias {/CSD put}{pop} ifelse} forall }def /set_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias 3 -1 roll put }{ pop }ifelse }def /current_spot_alias { /AGMCORE_SpotAliasAry2 where{ /AGMCORE_current_spot_alias get }{ false }ifelse }def /map_alias { /AGMCORE_SpotAliasAry2 where{ begin /AGMCORE_name xdf false AGMCORE_SpotAliasAry2{ dup/Name get AGMCORE_name eq{ /CSD get /CSD get_res exch pop true exit }{ pop }ifelse }forall end }{ pop false }ifelse }bdf /spot_alias { true set_spot_alias /AGMCORE_&setcustomcolor AGMCORE_key_known not { //Adobe_AGM_Core/AGMCORE_&setcustomcolor /setcustomcolor load put } if /customcolor_tint 1 AGMCORE_gput //Adobe_AGM_Core begin /setcustomcolor { currentdict/TintProc known currentdict/CSA known and 3 1 roll //Adobe_AGM_Core begin dup /customcolor_tint exch AGMCORE_gput 1 index aload pop pop 1 eq exch 1 eq and exch 1 eq and exch 1 eq and not current_spot_alias and{1 index 4 get map_alias}{false}ifelse { false set_spot_alias 4 -1 roll{ exch pop /sep_tint AGMCORE_gget exch }if mark 3 1 roll setsepcolorspace counttomark 0 ne{ setsepcolor }if pop pop true set_spot_alias }{ AGMCORE_&setcustomcolor pop }ifelse end }bdf end }def /begin_feature { Adobe_AGM_Core/AGMCORE_feature_dictCount countdictstack put count Adobe_AGM_Core/AGMCORE_feature_opCount 3 -1 roll put {Adobe_AGM_Core/AGMCORE_feature_ctm matrix currentmatrix put}if }def /end_feature { 2 dict begin /spd /setpagedevice load def /setpagedevice { get_gstate spd set_gstate } def stopped{$error/newerror false put}if end count Adobe_AGM_Core/AGMCORE_feature_opCount get sub dup 0 gt{{pop}repeat}{pop}ifelse countdictstack Adobe_AGM_Core/AGMCORE_feature_dictCount get sub dup 0 gt{{end}repeat}{pop}ifelse {Adobe_AGM_Core/AGMCORE_feature_ctm get setmatrix}if }def /set_negative { //Adobe_AGM_Core begin /AGMCORE_inverting exch def level2{ currentpagedevice/NegativePrint known{ currentpagedevice/NegativePrint get //Adobe_AGM_Core/AGMCORE_inverting get ne{ true begin_feature true{ << /NegativePrint //Adobe_AGM_Core/AGMCORE_inverting get >> setpagedevice }end_feature }if /AGMCORE_inverting false def }if }if AGMCORE_inverting{ [{1 exch sub}/exec load dup currenttransfer exch]cvx bind settransfer gsave newpath clippath 1 /setseparationgray where{pop setseparationgray}{setgray}ifelse /AGMIRS_&fill where {pop AGMIRS_&fill}{fill} ifelse grestore }if end }def /lw_save_restore_override { /md where { pop md begin initializepage /initializepage{}def /pmSVsetup{} def /endp{}def /pse{}def /psb{}def /orig_showpage where {pop} {/orig_showpage /showpage load def} ifelse /showpage {orig_showpage gR} def end }if }def /pscript_showpage_override { /NTPSOct95 where { begin showpage save /showpage /restore load def /restore {exch pop}def end }if }def /driver_media_override { /md where { pop md /initializepage known { md /initializepage {} put } if md /rC known { md /rC {4{pop}repeat} put } if }if /mysetup where { /mysetup [1 0 0 1 0 0] put }if Adobe_AGM_Core /AGMCORE_Default_CTM matrix currentmatrix put level2 {Adobe_AGM_Core /AGMCORE_Default_PageSize currentpagedevice/PageSize get put}if }def /driver_check_media_override { /PrepsDict where {pop} { Adobe_AGM_Core /AGMCORE_Default_CTM get matrix currentmatrix ne Adobe_AGM_Core /AGMCORE_Default_PageSize get type /arraytype eq { Adobe_AGM_Core /AGMCORE_Default_PageSize get 0 get currentpagedevice/PageSize get 0 get eq and Adobe_AGM_Core /AGMCORE_Default_PageSize get 1 get currentpagedevice/PageSize get 1 get eq and }if { Adobe_AGM_Core /AGMCORE_Default_CTM get setmatrix }if }ifelse }def AGMCORE_err_strings begin /AGMCORE_bad_environ (Environment not satisfactory for this job. Ensure that the PPD is correct or that the PostScript level requested is supported by this printer. ) def /AGMCORE_color_space_onhost_seps (This job contains colors that will not separate with on-host methods. ) def /AGMCORE_invalid_color_space (This job contains an invalid color space. ) def end /set_def_ht { AGMCORE_def_ht sethalftone } def end systemdict /setpacking known { setpacking } if %%EndResource %%BeginResource: procset Adobe_CoolType_Core 2.25 0 %%Copyright: Copyright 1997-2005 Adobe Systems Incorporated. All Rights Reserved. %%Version: 2.25 0 10 dict begin /Adobe_CoolType_Passthru currentdict def /Adobe_CoolType_Core_Defined userdict /Adobe_CoolType_Core known def Adobe_CoolType_Core_Defined { /Adobe_CoolType_Core userdict /Adobe_CoolType_Core get def } if userdict /Adobe_CoolType_Core 60 dict dup begin put /Adobe_CoolType_Version 2.25 def /Level2? systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if def Level2? not { /currentglobal false def /setglobal /pop load def /gcheck { pop false } bind def /currentpacking false def /setpacking /pop load def /SharedFontDirectory 0 dict def } if currentpacking true setpacking currentglobal false setglobal userdict /Adobe_CoolType_Data 2 copy known not { 2 copy 10 dict put } if get begin /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def end setglobal /@_SaveStackLevels { Adobe_CoolType_Data begin /@vmState currentglobal def false setglobal @opStackCountByLevel @opStackLevel 2 copy known not { 2 copy 3 dict dup /args 7 index 5 add array put put get } { get dup /args get dup length 3 index lt { dup length 5 add array exch 1 index exch 0 exch putinterval 1 index exch /args exch put } { pop } ifelse } ifelse begin count 1 sub 1 index lt { pop count } if dup /argCount exch def dup 0 gt { args exch 0 exch getinterval astore pop } { pop } ifelse count /restCount exch def end /@opStackLevel @opStackLevel 1 add def countdictstack 1 sub @dictStackCountByLevel exch @dictStackLevel exch put /@dictStackLevel @dictStackLevel 1 add def @vmState setglobal end } bind def /@_RestoreStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def @opStackCountByLevel @opStackLevel get begin count restCount sub dup 0 gt { { pop } repeat } { pop } ifelse args 0 argCount getinterval {} forall end /@dictStackLevel @dictStackLevel 1 sub def @dictStackCountByLevel @dictStackLevel get end countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse } bind def /@_PopStackLevels { Adobe_CoolType_Data begin /@opStackLevel @opStackLevel 1 sub def /@dictStackLevel @dictStackLevel 1 sub def end } bind def /@Raise { exch cvx exch errordict exch get exec stop } bind def /@ReRaise { cvx $error /errorname get errordict exch get exec stop } bind def /@Stopped { 0 @#Stopped } bind def /@#Stopped { @_SaveStackLevels stopped { @_RestoreStackLevels true } { @_PopStackLevels false } ifelse } bind def /@Arg { Adobe_CoolType_Data begin @opStackCountByLevel @opStackLevel 1 sub get begin args exch argCount 1 sub exch sub get end end } bind def currentglobal true setglobal /CTHasResourceForAllBug Level2? { 1 dict dup /@shouldNotDisappearDictValue true def Adobe_CoolType_Data exch /@shouldNotDisappearDict exch put begin count @_SaveStackLevels { (*) { pop stop } 128 string /Category resourceforall } stopped pop @_RestoreStackLevels currentdict Adobe_CoolType_Data /@shouldNotDisappearDict get ne dup { /@shouldNotDisappearDictValue known { { end currentdict 1 index eq { pop exit } if } loop } if } if end } { false } ifelse def true setglobal /CTHasResourceStatusBug Level2? { mark { /steveamerige /Category resourcestatus } stopped { cleartomark true } { cleartomark currentglobal not } ifelse } { false } ifelse def setglobal /CTResourceStatus { mark 3 1 roll /Category findresource begin ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse end } bind def /CTWorkAroundBugs { Level2? { /cid_PreLoad /ProcSet resourcestatus { pop pop currentglobal mark { (*) { dup /CMap CTHasResourceStatusBug { CTResourceStatus } { resourcestatus } ifelse { pop dup 0 eq exch 1 eq or { dup /CMap findresource gcheck setglobal /CMap undefineresource } { pop CTHasResourceForAllBug { exit } { stop } ifelse } ifelse } { pop } ifelse } 128 string /CMap resourceforall } stopped { cleartomark } stopped pop setglobal } if } if } bind def /doc_setup { Adobe_CoolType_Core begin CTWorkAroundBugs /mov /moveto load def /nfnt /newencodedfont load def /mfnt /makefont load def /sfnt /setfont load def /ufnt /undefinefont load def /chp /charpath load def /awsh /awidthshow load def /wsh /widthshow load def /ash /ashow load def /sh /show load def end currentglobal false setglobal userdict /Adobe_CoolType_Data 2 copy known not { 2 copy 10 dict put } if get begin /AddWidths? false def /CC 0 def /charcode 2 string def /@opStackCountByLevel 32 dict def /@opStackLevel 0 def /@dictStackCountByLevel 32 dict def /@dictStackLevel 0 def /InVMFontsByCMap 10 dict def /InVMDeepCopiedFonts 10 dict def end setglobal } bind def /doc_trailer { currentdict Adobe_CoolType_Core eq { end } if } bind def /page_setup { Adobe_CoolType_Core begin } bind def /page_trailer { end } bind def /unload { systemdict /languagelevel known { systemdict/languagelevel get 2 ge { userdict/Adobe_CoolType_Core 2 copy known { undef } { pop pop } ifelse } if } if } bind def /ndf { 1 index where { pop pop pop } { dup xcheck { bind } if def } ifelse } def /findfont systemdict begin userdict begin /globaldict where { /globaldict get begin } if dup where pop exch get /globaldict where { pop end } if end end Adobe_CoolType_Core_Defined { /systemfindfont exch def } { /findfont 1 index def /systemfindfont exch def } ifelse /undefinefont { pop } ndf /copyfont { currentglobal 3 1 roll 1 index gcheck setglobal dup null eq { 0 } { dup length } ifelse 2 index length add 1 add dict begin exch { 1 index /FID eq { pop pop } { def } ifelse } forall dup null eq { pop } { { def } forall } ifelse currentdict end exch setglobal } bind def /copyarray { currentglobal exch dup gcheck setglobal dup length array copy exch setglobal } bind def /newencodedfont { currentglobal { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } { FontDirectory 3 index known { FontDirectory 3 index get /FontReferenced known } { SharedFontDirectory 3 index known { SharedFontDirectory 3 index get /FontReferenced known } { false } ifelse } ifelse } ifelse dup { 3 index findfont /FontReferenced get 2 index dup type /nametype eq {findfont} if ne { pop false } if } if { pop 1 index findfont /Encoding get exch 0 1 255 { 2 copy get 3 index 3 1 roll put } for pop pop pop } { dup type /nametype eq { findfont } if dup dup maxlength 2 add dict begin exch { 1 index /FID ne {def} {pop pop} ifelse } forall /FontReferenced exch def /Encoding exch dup length array copy def /FontName 1 index dup type /stringtype eq { cvn } if def dup currentdict end definefont def } ifelse } bind def /SetSubstituteStrategy { $SubstituteFont begin dup type /dicttype ne { 0 dict } if currentdict /$Strategies known { exch $Strategies exch 2 copy known { get 2 copy maxlength exch maxlength add dict begin { def } forall { def } forall currentdict dup /$Init known { dup /$Init get exec } if end /$Strategy exch def } { pop pop pop } ifelse } { pop pop } ifelse end } bind def /scff { $SubstituteFont begin dup type /stringtype eq { dup length exch } { null } ifelse /$sname exch def /$slen exch def /$inVMIndex $sname null eq { 1 index $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse def end { findfont } @Stopped { dup length 8 add string exch 1 index 0 (BadFont:) putinterval 1 index exch 8 exch dup length string cvs putinterval cvn { findfont } @Stopped { pop /Courier findfont } if } if $SubstituteFont begin /$sname null def /$slen 0 def /$inVMIndex null def end } bind def /isWidthsOnlyFont { dup /WidthsOnly known { pop pop true } { dup /FDepVector known { /FDepVector get { isWidthsOnlyFont dup { exit } if } forall } { dup /FDArray known { /FDArray get { isWidthsOnlyFont dup { exit } if } forall } { pop } ifelse } ifelse } ifelse } bind def /?str1 256 string def /?set { $SubstituteFont begin /$substituteFound false def /$fontname 4 index def /$doSmartSub false def end 3 index currentglobal false setglobal exch /CompatibleFonts /ProcSet resourcestatus { pop pop /CompatibleFonts /ProcSet findresource begin dup /CompatibleFont currentexception 1 index /CompatibleFont true setexception 1 index /Font resourcestatus { pop pop 3 2 roll setglobal end exch dup findfont /CompatibleFonts /ProcSet findresource begin 3 1 roll exch /CompatibleFont exch setexception end } { 3 2 roll setglobal 1 index exch /CompatibleFont exch setexception end findfont $SubstituteFont /$substituteFound true put } ifelse } { exch setglobal findfont } ifelse $SubstituteFont begin $substituteFound { false (%%[Using embedded font ) print 5 index ?str1 cvs print ( to avoid the font substitution problem noted earlier.]%%\n) print } { dup /FontName known { dup /FontName get $fontname eq 1 index /DistillerFauxFont known not and /currentdistillerparams where { pop false 2 index isWidthsOnlyFont not and } if } { false } ifelse } ifelse exch pop /$doSmartSub true def end { exch pop exch pop exch 2 dict dup /Found 3 index put exch findfont exch } { exch exec exch dup findfont dup /FontType get 3 eq { exch ?str1 cvs dup length 1 sub -1 0 { exch dup 2 index get 42 eq { exch 0 exch getinterval cvn 4 1 roll 3 2 roll pop exit } {exch pop} ifelse }for } { exch pop } ifelse 2 dict dup /Downloaded 6 5 roll put } ifelse dup /FontName 4 index put copyfont definefont pop } bind def /?str2 256 string def /?add { 1 index type /integertype eq { exch true 4 2 } { false 3 1 } ifelse roll 1 index findfont dup /Widths known { Adobe_CoolType_Data /AddWidths? true put gsave dup 1000 scalefont setfont } if /Downloaded known { exec exch { exch ?str2 cvs exch findfont /Downloaded get 1 dict begin /Downloaded 1 index def ?str1 cvs length ?str1 1 index 1 add 3 index putinterval exch length 1 add 1 index add ?str1 2 index (*) putinterval ?str1 0 2 index getinterval cvn findfont ?str1 3 index (+) putinterval 2 dict dup /FontName ?str1 0 6 index getinterval cvn put dup /Downloaded Downloaded put end copyfont dup /FontName get exch definefont pop pop pop } { pop } ifelse } { pop exch { findfont dup /Found get dup length exch ?str1 cvs pop ?str1 1 index (+) putinterval ?str1 1 index 1 add 4 index ?str2 cvs putinterval ?str1 exch 0 exch 5 4 roll ?str2 cvs length 1 add add getinterval cvn 1 dict exch 1 index exch /FontName exch put copyfont dup /FontName get exch definefont pop } { pop } ifelse } ifelse Adobe_CoolType_Data /AddWidths? get { grestore Adobe_CoolType_Data /AddWidths? false put } if } bind def /?sh { currentfont /Downloaded known { exch } if pop } bind def /?chp { currentfont /Downloaded known { pop } { false chp } ifelse } bind def /?mv { currentfont /Downloaded known { moveto pop pop } { pop pop moveto } ifelse } bind def setpacking userdict /$SubstituteFont 25 dict put 1 dict begin /SubstituteFont dup $error exch 2 copy known { get } { pop pop { pop /Courier } bind } ifelse def /currentdistillerparams where dup { pop pop currentdistillerparams /CannotEmbedFontPolicy 2 copy known { get /Error eq } { pop pop false } ifelse } if not { countdictstack array dictstack 0 get begin userdict begin $SubstituteFont begin /$str 128 string def /$fontpat 128 string def /$slen 0 def /$sname null def /$match false def /$fontname null def /$substituteFound false def /$inVMIndex null def /$doSmartSub true def /$depth 0 def /$fontname null def /$italicangle 26.5 def /$dstack null def /$Strategies 10 dict dup begin /$Type3Underprint { currentglobal exch false setglobal 11 dict begin /UseFont exch $WMode 0 ne { dup length dict copy dup /WMode $WMode put /UseFont exch definefont } if def /FontName $fontname dup type /stringtype eq { cvn } if def /FontType 3 def /FontMatrix [ .001 0 0 .001 0 0 ] def /Encoding 256 array dup 0 1 255 { /.notdef put dup } for pop def /FontBBox [ 0 0 0 0 ] def /CCInfo 7 dict dup begin /cc null def /x 0 def /y 0 def end def /BuildChar { exch begin CCInfo begin 1 string dup 0 3 index put exch pop /cc exch def UseFont 1000 scalefont setfont cc stringwidth /y exch def /x exch def x y setcharwidth $SubstituteFont /$Strategy get /$Underprint get exec 0 0 moveto cc show x y moveto end end } bind def currentdict end exch setglobal } bind def /$GetaTint 2 dict dup begin /$BuildFont { dup /WMode known { dup /WMode get } { 0 } ifelse /$WMode exch def $fontname exch dup /FontName known { dup /FontName get dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse exch Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index /FontName get known { pop Adobe_CoolType_Data /InVMDeepCopiedFonts get 1 index get null copyfont } { $deepcopyfont } ifelse exch 1 index exch /FontBasedOn exch put dup /FontName $fontname dup type /stringtype eq { cvn } if put definefont Adobe_CoolType_Data /InVMDeepCopiedFonts get begin dup /FontBasedOn get 1 index def end } bind def /$Underprint { gsave x abs y abs gt { /y 1000 def } { /x -1000 def 500 120 translate } ifelse Level2? { [ /Separation (All) /DeviceCMYK { 0 0 0 1 pop } ] setcolorspace } { 0 setgray } ifelse 10 setlinewidth x .8 mul [ 7 3 ] { y mul 8 div 120 sub x 10 div exch moveto 0 y 4 div neg rlineto dup 0 rlineto 0 y 4 div rlineto closepath gsave Level2? { .2 setcolor } { .8 setgray } ifelse fill grestore stroke } forall pop grestore } bind def end def /$Oblique 1 dict dup begin /$BuildFont { currentglobal exch dup gcheck setglobal null copyfont begin /FontBasedOn currentdict /FontName known { FontName dup type /stringtype eq { cvn } if } { /unnamedfont } ifelse def /FontName $fontname dup type /stringtype eq { cvn } if def /currentdistillerparams where { pop } { /FontInfo currentdict /FontInfo known { FontInfo null copyfont } { 2 dict } ifelse dup begin /ItalicAngle $italicangle def /FontMatrix FontMatrix [ 1 0 ItalicAngle dup sin exch cos div 1 0 0 ] matrix concatmatrix readonly end 4 2 roll def def } ifelse FontName currentdict end definefont exch setglobal } bind def end def /$None 1 dict dup begin /$BuildFont {} bind def end def end def /$Oblique SetSubstituteStrategy /$findfontByEnum { dup type /stringtype eq { cvn } if dup /$fontname exch def $sname null eq { $str cvs dup length $slen sub $slen getinterval } { pop $sname } ifelse $fontpat dup 0 (fonts/*) putinterval exch 7 exch putinterval /$match false def $SubstituteFont /$dstack countdictstack array dictstack put mark { $fontpat 0 $slen 7 add getinterval { /$match exch def exit } $str filenameforall } stopped { cleardictstack currentdict true $SubstituteFont /$dstack get { exch { 1 index eq { pop false } { true } ifelse } { begin false } ifelse } forall pop } if cleartomark /$slen 0 def $match false ne { $match (fonts/) anchorsearch pop pop cvn } { /Courier } ifelse } bind def /$ROS 1 dict dup begin /Adobe 4 dict dup begin /Japan1 [ /Ryumin-Light /HeiseiMin-W3 /GothicBBB-Medium /HeiseiKakuGo-W5 /HeiseiMaruGo-W4 /Jun101-Light ] def /Korea1 [ /HYSMyeongJo-Medium /HYGoThic-Medium ] def /GB1 [ /STSong-Light /STHeiti-Regular ] def /CNS1 [ /MKai-Medium /MHei-Medium ] def end def end def /$cmapname null def /$deepcopyfont { dup /FontType get 0 eq { 1 dict dup /FontName /copied put copyfont begin /FDepVector FDepVector copyarray 0 1 2 index length 1 sub { 2 copy get $deepcopyfont dup /FontName /copied put /copied exch definefont 3 copy put pop pop } for def currentdict end } { $Strategies /$Type3Underprint get exec } ifelse } bind def /$buildfontname { dup /CIDFont findresource /CIDSystemInfo get begin Registry length Ordering length Supplement 8 string cvs 3 copy length 2 add add add string dup 5 1 roll dup 0 Registry putinterval dup 4 index (-) putinterval dup 4 index 1 add Ordering putinterval 4 2 roll add 1 add 2 copy (-) putinterval end 1 add 2 copy 0 exch getinterval $cmapname $fontpat cvs exch anchorsearch { pop pop 3 2 roll putinterval cvn /$cmapname exch def } { pop pop pop pop pop } ifelse length $str 1 index (-) putinterval 1 add $str 1 index $cmapname $fontpat cvs putinterval $cmapname length add $str exch 0 exch getinterval cvn } bind def /$findfontByROS { /$fontname exch def $ROS Registry 2 copy known { get Ordering 2 copy known { get } { pop pop [] } ifelse } { pop pop [] } ifelse false exch { dup /CIDFont resourcestatus { pop pop save 1 index /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get } { false } ifelse exch pop exch restore { pop } { exch pop true exit } ifelse } { pop } ifelse } forall { $str cvs $buildfontname } { false (*) { save exch dup /CIDFont findresource dup /WidthsOnly known { dup /WidthsOnly get not } { true } ifelse exch /CIDSystemInfo get dup /Registry get Registry eq exch /Ordering get Ordering eq and and { exch restore exch pop true exit } { pop restore } ifelse } $str /CIDFont resourceforall { $buildfontname } { $fontname $findfontByEnum } ifelse } ifelse } bind def end end currentdict /$error known currentdict /languagelevel known and dup { pop $error /SubstituteFont known } if dup { $error } { Adobe_CoolType_Core } ifelse begin { /SubstituteFont /CMap /Category resourcestatus { pop pop { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $sname null eq { dup $str cvs dup length $slen sub $slen getinterval cvn } { $sname } ifelse Adobe_CoolType_Data /InVMFontsByCMap get 1 index 2 copy known { get false exch { pop currentglobal { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } { FontDirectory 1 index known { exch pop true exit } { GlobalFontDirectory 1 index known { exch pop true exit } { pop } ifelse } ifelse } ifelse } forall } { pop pop false } ifelse { exch pop exch pop } { dup /CMap resourcestatus { pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS } { 128 string cvs dup (-) search { 3 1 roll search { 3 1 roll pop { dup cvi } stopped { pop pop pop pop pop $findfontByEnum } { 4 2 roll pop pop exch length exch 2 index length 2 index sub exch 1 sub -1 0 { $str cvs dup length 4 index 0 4 index 4 3 roll add getinterval exch 1 index exch 3 index exch putinterval dup /CMap resourcestatus { pop pop 4 1 roll pop pop pop dup /$cmapname exch def /CMap findresource /CIDSystemInfo get { def } forall $findfontByROS true exit } { pop } ifelse } for dup type /booleantype eq { pop } { pop pop pop $findfontByEnum } ifelse } ifelse } { pop pop pop $findfontByEnum } ifelse } { pop pop $findfontByEnum } ifelse } ifelse } ifelse } { //SubstituteFont exec } ifelse /$slen 0 def end } } { { $SubstituteFont begin /$substituteFound true def dup length $slen gt $sname null ne or $slen 0 gt and { $findfontByEnum } { //SubstituteFont exec } ifelse end } } ifelse bind readonly def Adobe_CoolType_Core /scfindfont /systemfindfont load put } { /scfindfont { $SubstituteFont begin dup systemfindfont dup /FontName known { dup /FontName get dup 3 index ne } { /noname true } ifelse dup { /$origfontnamefound 2 index def /$origfontname 4 index def /$substituteFound true def } if exch pop { $slen 0 gt $sname null ne 3 index length $slen gt or and { pop dup $findfontByEnum findfont dup maxlength 1 add dict begin { 1 index /FID eq { pop pop } { def } ifelse } forall currentdict end definefont dup /FontName known { dup /FontName get } { null } ifelse $origfontnamefound ne { $origfontname $str cvs print ( substitution revised, using ) print dup /FontName known { dup /FontName get } { (unspecified font) } ifelse $str cvs print (.\n) print } if } { exch pop } ifelse } { exch pop } ifelse end } bind def } ifelse end end Adobe_CoolType_Core_Defined not { Adobe_CoolType_Core /findfont { $SubstituteFont begin $depth 0 eq { /$fontname 1 index dup type /stringtype ne { $str cvs } if def /$substituteFound false def } if /$depth $depth 1 add def end scfindfont $SubstituteFont begin /$depth $depth 1 sub def $substituteFound $depth 0 eq and { $inVMIndex null ne { dup $inVMIndex $AddInVMFont } if $doSmartSub { currentdict /$Strategy known { $Strategy /$BuildFont get exec } if } if } if end } bind put } if } if end /$AddInVMFont { exch /FontName 2 copy known { get 1 dict dup begin exch 1 index gcheck def end exch Adobe_CoolType_Data /InVMFontsByCMap get exch $DictAdd } { pop pop pop } ifelse } bind def /$DictAdd { 2 copy known not { 2 copy 4 index length dict put } if Level2? not { 2 copy get dup maxlength exch length 4 index length add lt 2 copy get dup length 4 index length add exch maxlength 1 index lt { 2 mul dict begin 2 copy get { forall } def 2 copy currentdict put end } { pop } ifelse } if get begin { def } forall end } bind def end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_MAKEOCF 1.21 0 %%Copyright: Copyright 1987-2005 Adobe Systems Incorporated. %%Version: 1.21 0 systemdict /languagelevel known dup { currentglobal false setglobal } { false } ifelse exch userdict /Adobe_CoolType_Utility 2 copy known { 2 copy get dup maxlength 27 add dict copy } { 27 dict } ifelse put Adobe_CoolType_Utility begin /@eexecStartData def /@recognizeCIDFont null def /ct_Level2? exch def /ct_Clone? 1183615869 internaldict dup /CCRun known not exch /eCCRun known not ct_Level2? and or def ct_Level2? { globaldict begin currentglobal true setglobal } if /ct_AddStdCIDMap ct_Level2? { { mark Adobe_CoolType_Utility /@recognizeCIDFont currentdict put { ((Hex) 57 StartData 0615 1e27 2c39 1c60 d8a8 cc31 fe2b f6e0 7aa3 e541 e21c 60d8 a8c9 c3d0 6d9e 1c60 d8a8 c9c2 02d7 9a1c 60d8 a849 1c60 d8a8 cc36 74f4 1144 b13b 77) 0 () /SubFileDecode filter cvx exec } stopped { cleartomark Adobe_CoolType_Utility /@recognizeCIDFont get countdictstack dup array dictstack exch 1 sub -1 0 { 2 copy get 3 index eq { 1 index length exch sub 1 sub { end } repeat exit } { pop } ifelse } for pop pop Adobe_CoolType_Utility /@eexecStartData get eexec } { cleartomark } ifelse } } { { Adobe_CoolType_Utility /@eexecStartData get eexec } } ifelse bind def userdict /cid_extensions known dup { cid_extensions /cid_UpdateDB known and } if { cid_extensions begin /cid_GetCIDSystemInfo { 1 index type /stringtype eq { exch cvn exch } if cid_extensions begin dup load 2 index known { 2 copy cid_GetStatusInfo dup null ne { 1 index load 3 index get dup null eq { pop pop cid_UpdateDB } { exch 1 index /Created get eq { exch pop exch pop } { pop cid_UpdateDB } ifelse } ifelse } { pop cid_UpdateDB } ifelse } { cid_UpdateDB } ifelse end } bind def end } if ct_Level2? { end setglobal } if /ct_UseNativeCapability? systemdict /composefont known def /ct_MakeOCF 35 dict def /ct_Vars 25 dict def /ct_GlyphDirProcs 6 dict def /ct_BuildCharDict 15 dict dup begin /charcode 2 string def /dst_string 1500 string def /nullstring () def /usewidths? true def end def ct_Level2? { setglobal } { pop } ifelse ct_GlyphDirProcs begin /GetGlyphDirectory { systemdict /languagelevel known { pop /CIDFont findresource /GlyphDirectory get } { 1 index /CIDFont findresource /GlyphDirectory get dup type /dicttype eq { dup dup maxlength exch length sub 2 index lt { dup length 2 index add dict copy 2 index /CIDFont findresource/GlyphDirectory 2 index put } if } if exch pop exch pop } ifelse + } def /+ { systemdict /languagelevel known { currentglobal false setglobal 3 dict begin /vm exch def } { 1 dict begin } ifelse /$ exch def systemdict /languagelevel known { vm setglobal /gvm currentglobal def $ gcheck setglobal } if ? { $ begin } if } def /? { $ type /dicttype eq } def /| { userdict /Adobe_CoolType_Data known { Adobe_CoolType_Data /AddWidths? known { currentdict Adobe_CoolType_Data begin begin AddWidths? { Adobe_CoolType_Data /CC 3 index put ? { def } { $ 3 1 roll put } ifelse CC charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore currentfont /Widths get exch CC exch put } { ? { def } { $ 3 1 roll put } ifelse } ifelse end end } { ? { def } { $ 3 1 roll put } ifelse } ifelse } { ? { def } { $ 3 1 roll put } ifelse } ifelse } def /! { ? { end } if systemdict /languagelevel known { gvm setglobal } if end } def /: { string currentfile exch readstring pop } executeonly def end ct_MakeOCF begin /ct_cHexEncoding [/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12 /c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25 /c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38 /c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B /c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E /c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71 /c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84 /c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97 /c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA /cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD /cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0 /cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3 /cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6 /cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def /ct_CID_STR_SIZE 8000 def /ct_mkocfStr100 100 string def /ct_defaultFontMtx [.001 0 0 .001 0 0] def /ct_1000Mtx [1000 0 0 1000 0 0] def /ct_raise {exch cvx exch errordict exch get exec stop} bind def /ct_reraise { cvx $error /errorname get (Error: ) print dup ( ) cvs print errordict exch get exec stop } bind def /ct_cvnsi { 1 index add 1 sub 1 exch 0 4 1 roll { 2 index exch get exch 8 bitshift add } for exch pop } bind def /ct_GetInterval { Adobe_CoolType_Utility /ct_BuildCharDict get begin /dst_index 0 def dup dst_string length gt { dup string /dst_string exch def } if 1 index ct_CID_STR_SIZE idiv /arrayIndex exch def 2 index arrayIndex get 2 index arrayIndex ct_CID_STR_SIZE mul sub { dup 3 index add 2 index length le { 2 index getinterval dst_string dst_index 2 index putinterval length dst_index add /dst_index exch def exit } { 1 index length 1 index sub dup 4 1 roll getinterval dst_string dst_index 2 index putinterval pop dup dst_index add /dst_index exch def sub /arrayIndex arrayIndex 1 add def 2 index dup length arrayIndex gt { arrayIndex get } { pop exit } ifelse 0 } ifelse } loop pop pop pop dst_string 0 dst_index getinterval end } bind def ct_Level2? { /ct_resourcestatus currentglobal mark true setglobal { /unknowninstancename /Category resourcestatus } stopped { cleartomark setglobal true } { cleartomark currentglobal not exch setglobal } ifelse { { mark 3 1 roll /Category findresource begin ct_Vars /vm currentglobal put ({ResourceStatus} stopped) 0 () /SubFileDecode filter cvx exec { cleartomark false } { { 3 2 roll pop true } { cleartomark false } ifelse } ifelse ct_Vars /vm get setglobal end } } { { resourcestatus } } ifelse bind def /CIDFont /Category ct_resourcestatus { pop pop } { currentglobal true setglobal /Generic /Category findresource dup length dict copy dup /InstanceType /dicttype put /CIDFont exch /Category defineresource pop setglobal } ifelse ct_UseNativeCapability? { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering (Identity) def /Supplement 0 def end def /CMapName /Identity-H def /CMapVersion 1.000 def /CMapType 1 def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } if } { /ct_Category 2 dict begin /CIDFont 10 dict def /ProcSet 2 dict def currentdict end def /defineresource { ct_Category 1 index 2 copy known { get dup dup maxlength exch length eq { dup length 10 add dict copy ct_Category 2 index 2 index put } if 3 index 3 index put pop exch pop } { pop pop /defineresource /undefined ct_raise } ifelse } bind def /findresource { ct_Category 1 index 2 copy known { get 2 index 2 copy known { get 3 1 roll pop pop} { pop pop /findresource /undefinedresource ct_raise } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /resourcestatus { ct_Category 1 index 2 copy known { get 2 index known exch pop exch pop { 0 -1 true } { false } ifelse } { pop pop /findresource /undefined ct_raise } ifelse } bind def /ct_resourcestatus /resourcestatus load def } ifelse /ct_CIDInit 2 dict begin /ct_cidfont_stream_init { { dup (Binary) eq { pop null currentfile ct_Level2? { { cid_BYTE_COUNT () /SubFileDecode filter } stopped { pop pop pop } if } if /readstring load exit } if dup (Hex) eq { pop currentfile ct_Level2? { { null exch /ASCIIHexDecode filter /readstring } stopped { pop exch pop (>) exch /readhexstring } if } { (>) exch /readhexstring } ifelse load exit } if /StartData /typecheck ct_raise } loop cid_BYTE_COUNT ct_CID_STR_SIZE le { 2 copy cid_BYTE_COUNT string exch exec pop 1 array dup 3 -1 roll 0 exch put } { cid_BYTE_COUNT ct_CID_STR_SIZE div ceiling cvi dup array exch 2 sub 0 exch 1 exch { 2 copy 5 index ct_CID_STR_SIZE string 6 index exec pop put pop } for 2 index cid_BYTE_COUNT ct_CID_STR_SIZE mod string 3 index exec pop 1 index exch 1 index length 1 sub exch put } ifelse cid_CIDFONT exch /GlyphData exch put 2 index null eq { pop pop pop } { pop /readstring load 1 string exch { 3 copy exec pop dup length 0 eq { pop pop pop pop pop true exit } if 4 index eq { pop pop pop pop false exit } if } loop pop } ifelse } bind def /StartData { mark { currentdict dup /FDArray get 0 get /FontMatrix get 0 get 0.001 eq { dup /CDevProc known not { /CDevProc 1183615869 internaldict /stdCDevProc 2 copy known { get } { pop pop { pop pop pop pop pop 0 -1000 7 index 2 div 880 } } ifelse def } if } { /CDevProc { pop pop pop pop pop 0 1 cid_temp /cid_CIDFONT get /FDArray get 0 get /FontMatrix get 0 get div 7 index 2 div 1 index 0.88 mul } def } ifelse /cid_temp 15 dict def cid_temp begin /cid_CIDFONT exch def 3 copy pop dup /cid_BYTE_COUNT exch def 0 gt { ct_cidfont_stream_init FDArray { /Private get dup /SubrMapOffset known { begin /Subrs SubrCount array def Subrs SubrMapOffset SubrCount SDBytes ct_Level2? { currentdict dup /SubrMapOffset undef dup /SubrCount undef /SDBytes undef } if end /cid_SD_BYTES exch def /cid_SUBR_COUNT exch def /cid_SUBR_MAP_OFFSET exch def /cid_SUBRS exch def cid_SUBR_COUNT 0 gt { GlyphData cid_SUBR_MAP_OFFSET cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi 0 1 cid_SUBR_COUNT 1 sub { exch 1 index 1 add cid_SD_BYTES mul cid_SUBR_MAP_OFFSET add GlyphData exch cid_SD_BYTES ct_GetInterval 0 cid_SD_BYTES ct_cvnsi cid_SUBRS 4 2 roll GlyphData exch 4 index 1 index sub ct_GetInterval dup length string copy put } for pop } if } { pop } ifelse } forall } if cleartomark pop pop end CIDFontName currentdict /CIDFont defineresource pop end end } stopped { cleartomark /StartData ct_reraise } if } bind def currentdict end def /ct_saveCIDInit { /CIDInit /ProcSet ct_resourcestatus { true } { /CIDInitC /ProcSet ct_resourcestatus } ifelse { pop pop /CIDInit /ProcSet findresource ct_UseNativeCapability? { pop null } { /CIDInit ct_CIDInit /ProcSet defineresource pop } ifelse } { /CIDInit ct_CIDInit /ProcSet defineresource pop null } ifelse ct_Vars exch /ct_oldCIDInit exch put } bind def /ct_restoreCIDInit { ct_Vars /ct_oldCIDInit get dup null ne { /CIDInit exch /ProcSet defineresource pop } { pop } ifelse } bind def /ct_BuildCharSetUp { 1 index begin CIDFont begin Adobe_CoolType_Utility /ct_BuildCharDict get begin /ct_dfCharCode exch def /ct_dfDict exch def CIDFirstByte ct_dfCharCode add dup CIDCount ge { pop 0 } if /cid exch def { GlyphDirectory cid 2 copy known { get } { pop pop nullstring } ifelse dup length FDBytes sub 0 gt { dup FDBytes 0 ne { 0 FDBytes ct_cvnsi } { pop 0 } ifelse /fdIndex exch def dup length FDBytes sub FDBytes exch getinterval /charstring exch def exit } { pop cid 0 eq { /charstring nullstring def exit } if /cid 0 def } ifelse } loop } def /ct_SetCacheDevice { 0 0 moveto dup stringwidth 3 -1 roll true charpath pathbbox 0 -1000 7 index 2 div 880 setcachedevice2 0 0 moveto } def /ct_CloneSetCacheProc { 1 eq { stringwidth pop -2 div -880 0 -1000 setcharwidth moveto } { usewidths? { currentfont /Widths get cid 2 copy known { get exch pop aload pop } { pop pop stringwidth } ifelse } { stringwidth } ifelse setcharwidth 0 0 moveto } ifelse } def /ct_Type3ShowCharString { ct_FDDict fdIndex 2 copy known { get } { currentglobal 3 1 roll 1 index gcheck setglobal ct_Type1FontTemplate dup maxlength dict copy begin FDArray fdIndex get dup /FontMatrix 2 copy known { get } { pop pop ct_defaultFontMtx } ifelse /FontMatrix exch dup length array copy def /Private get /Private exch def /Widths rootfont /Widths get def /CharStrings 1 dict dup /.notdef dup length string copy put def currentdict end /ct_Type1Font exch definefont dup 5 1 roll put setglobal } ifelse dup /CharStrings get 1 index /Encoding get ct_dfCharCode get charstring put rootfont /WMode 2 copy known { get } { pop pop 0 } ifelse exch 1000 scalefont setfont ct_str1 0 ct_dfCharCode put ct_str1 exch ct_dfSetCacheProc ct_SyntheticBold { currentpoint ct_str1 show newpath moveto ct_str1 true charpath ct_StrokeWidth setlinewidth stroke } { ct_str1 show } ifelse } def /ct_Type4ShowCharString { ct_dfDict ct_dfCharCode charstring FDArray fdIndex get dup /FontMatrix get dup ct_defaultFontMtx ct_matrixeq not { ct_1000Mtx matrix concatmatrix concat } { pop } ifelse /Private get Adobe_CoolType_Utility /ct_Level2? get not { ct_dfDict /Private 3 -1 roll { put } 1183615869 internaldict /superexec get exec } if 1183615869 internaldict Adobe_CoolType_Utility /ct_Level2? get { 1 index } { 3 index /Private get mark 6 1 roll } ifelse dup /RunInt known { /RunInt get } { pop /CCRun } ifelse get exec Adobe_CoolType_Utility /ct_Level2? get not { cleartomark } if } bind def /ct_BuildCharIncremental { { Adobe_CoolType_Utility /ct_MakeOCF get begin ct_BuildCharSetUp ct_ShowCharString } stopped { stop } if end end end end } bind def /BaseFontNameStr (BF00) def /ct_Type1FontTemplate 14 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /PaintType 0 def currentdict end def /BaseFontTemplate 11 dict begin /FontMatrix [0.001 0 0 0.001 0 0] def /FontBBox [-250 -250 1250 1250] def /Encoding ct_cHexEncoding def /BuildChar /ct_BuildCharIncremental load def ct_Clone? { /FontType 3 def /ct_ShowCharString /ct_Type3ShowCharString load def /ct_dfSetCacheProc /ct_CloneSetCacheProc load def /ct_SyntheticBold false def /ct_StrokeWidth 1 def } { /FontType 4 def /Private 1 dict dup /lenIV 4 put def /CharStrings 1 dict dup /.notdef put def /PaintType 0 def /ct_ShowCharString /ct_Type4ShowCharString load def } ifelse /ct_str1 1 string def currentdict end def /BaseFontDictSize BaseFontTemplate length 5 add def /ct_matrixeq { true 0 1 5 { dup 4 index exch get exch 3 index exch get eq and dup not { exit } if } for exch pop exch pop } bind def /ct_makeocf { 15 dict begin exch /WMode exch def exch /FontName exch def /FontType 0 def /FMapType 2 def dup /FontMatrix known { dup /FontMatrix get /FontMatrix exch def } { /FontMatrix matrix def } ifelse /bfCount 1 index /CIDCount get 256 idiv 1 add dup 256 gt { pop 256} if def /Encoding 256 array 0 1 bfCount 1 sub { 2 copy dup put pop } for bfCount 1 255 { 2 copy bfCount put pop } for def /FDepVector bfCount dup 256 lt { 1 add } if array def BaseFontTemplate BaseFontDictSize dict copy begin /CIDFont exch def CIDFont /FontBBox known { CIDFont /FontBBox get /FontBBox exch def } if CIDFont /CDevProc known { CIDFont /CDevProc get /CDevProc exch def } if currentdict end BaseFontNameStr 3 (0) putinterval 0 1 bfCount dup 256 eq { 1 sub } if { FDepVector exch 2 index BaseFontDictSize dict copy begin dup /CIDFirstByte exch 256 mul def FontType 3 eq { /ct_FDDict 2 dict def } if currentdict end 1 index 16 BaseFontNameStr 2 2 getinterval cvrs pop BaseFontNameStr exch definefont put } for ct_Clone? { /Widths 1 index /CIDFont get /GlyphDirectory get length dict def } if FontName currentdict end definefont ct_Clone? { gsave dup 1000 scalefont setfont ct_BuildCharDict begin /usewidths? false def currentfont /Widths get begin exch /CIDFont get /GlyphDirectory get { pop dup charcode exch 1 index 0 2 index 256 idiv put 1 index exch 1 exch 256 mod put stringwidth 2 array astore def } forall end /usewidths? true def end grestore } { exch pop } ifelse } bind def /ct_ComposeFont { ct_UseNativeCapability? { 2 index /CMap ct_resourcestatus { pop pop exch pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 3 index def /CMapVersion 1.000 def /CMapType 1 def exch /WMode exch def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity)} ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { 3 2 roll pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def /ct_MakeIdentity { ct_UseNativeCapability? { 1 index /CMap ct_resourcestatus { pop pop } { /CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapName 2 index def /CMapVersion 1.000 def /CMapType 1 def /CIDSystemInfo 3 dict dup begin /Registry (Adobe) def /Ordering CMapName ct_mkocfStr100 cvs (Adobe-) search { pop pop (-) search { dup length string copy exch pop exch pop } { pop (Identity) } ifelse } { pop (Identity) } ifelse def /Supplement 0 def end def 1 begincodespacerange <0000> endcodespacerange 1 begincidrange <0000> 0 endcidrange endcmap CMapName currentdict /CMap defineresource pop end end } ifelse composefont } { exch pop 0 get /CIDFont findresource ct_makeocf } ifelse } bind def currentdict readonly pop end end %%EndResource %%BeginResource: procset Adobe_CoolType_Utility_T42 1.0 0 %%Copyright: Copyright 1987-2004 Adobe Systems Incorporated. %%Version: 1.0 0 userdict /ct_T42Dict 15 dict put ct_T42Dict begin /Is2015? { version cvi 2015 ge } bind def /AllocGlyphStorage { Is2015? { pop } { {string} forall } ifelse } bind def /Type42DictBegin { 25 dict begin /FontName exch def /CharStrings 256 dict begin /.notdef 0 def currentdict end def /Encoding exch def /PaintType 0 def /FontType 42 def /FontMatrix [1 0 0 1 0 0] def 4 array astore cvx /FontBBox exch def /sfnts } bind def /Type42DictEnd { currentdict dup /FontName get exch definefont end ct_T42Dict exch dup /FontName get exch put } bind def /RD {string currentfile exch readstring pop} executeonly def /PrepFor2015 { Is2015? { /GlyphDirectory 16 dict def sfnts 0 get dup 2 index (glyx) putinterval 2 index (locx) putinterval pop pop } { pop pop } ifelse } bind def /AddT42Char { Is2015? { /GlyphDirectory get begin def end pop pop } { /sfnts get 4 index get 3 index 2 index putinterval pop pop pop pop } ifelse } bind def /T0AddT42Mtx2 { /CIDFont findresource /Metrics2 get begin def end }bind def end %%EndResource Adobe_CoolType_Core begin /$Oblique SetSubstituteStrategy end %%BeginResource: procset Adobe_AGM_Image 1.0 0 %%Version: 1.0 0 %%Copyright: Copyright (C) 2000-2003 Adobe Systems, Inc. All Rights Reserved. systemdict /setpacking known { currentpacking true setpacking } if userdict /Adobe_AGM_Image 75 dict dup begin put /Adobe_AGM_Image_Id /Adobe_AGM_Image_1.0_0 def /nd{ null def }bind def /AGMIMG_&image nd /AGMIMG_&colorimage nd /AGMIMG_&imagemask nd /AGMIMG_mbuf () def /AGMIMG_ybuf () def /AGMIMG_kbuf () def /AGMIMG_c 0 def /AGMIMG_m 0 def /AGMIMG_y 0 def /AGMIMG_k 0 def /AGMIMG_tmp nd /AGMIMG_imagestring0 nd /AGMIMG_imagestring1 nd /AGMIMG_imagestring2 nd /AGMIMG_imagestring3 nd /AGMIMG_imagestring4 nd /AGMIMG_imagestring5 nd /AGMIMG_cnt nd /AGMIMG_fsave nd /AGMIMG_colorAry nd /AGMIMG_override nd /AGMIMG_name nd /AGMIMG_maskSource nd /AGMIMG_flushfilters nd /invert_image_samples nd /knockout_image_samples nd /img nd /sepimg nd /devnimg nd /idximg nd /doc_setup { Adobe_AGM_Core begin Adobe_AGM_Image begin /AGMIMG_&image systemdict/image get def /AGMIMG_&imagemask systemdict/imagemask get def /colorimage where{ pop /AGMIMG_&colorimage /colorimage ldf }if end end }def /page_setup { Adobe_AGM_Image begin /AGMIMG_ccimage_exists {/customcolorimage where { pop /Adobe_AGM_OnHost_Seps where { pop false }{ /Adobe_AGM_InRip_Seps where { pop false }{ true }ifelse }ifelse }{ false }ifelse }bdf level2{ /invert_image_samples { Adobe_AGM_Image/AGMIMG_tmp Decode length ddf /Decode [ Decode 1 get Decode 0 get] def }def /knockout_image_samples { Operator/imagemask ne{ /Decode [1 1] def }if }def }{ /invert_image_samples { {1 exch sub} currenttransfer addprocs settransfer }def /knockout_image_samples { { pop 1 } currenttransfer addprocs settransfer }def }ifelse /img /imageormask ldf /sepimg /sep_imageormask ldf /devnimg /devn_imageormask ldf /idximg /indexed_imageormask ldf /_ctype 7 def currentdict{ dup xcheck 1 index type dup /arraytype eq exch /packedarraytype eq or and{ bind }if def }forall }def /page_trailer { end }def /doc_trailer { }def /AGMIMG_flushfilters { dup type /arraytype ne {1 array astore}if aload length { dup type /filetype eq { dup status 1 index currentfile ne and {dup flushfile closefile} {pop} ifelse }{pop}ifelse } repeat }def /imageormask_sys { begin save mark level2{ currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load AGMIMG_&imagemask }{ BitsPerComponent ImageMatrix /DataSource load AGMIMG_&image }ifelse }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if cleartomark restore end }def /overprint_plate { currentoverprint { 0 get dup type /nametype eq { dup /DeviceGray eq{ pop AGMCORE_black_plate not }{ /DeviceCMYK eq{ AGMCORE_is_cmyk_sep not }if }ifelse }{ false exch { AGMOHS_sepink eq or } forall not } ifelse }{ pop false }ifelse }def /process_mask_L3 { dup begin /ImageType 1 def end 4 dict begin /DataDict exch def /ImageType 3 def /InterleaveType 3 def /MaskDict 9 dict begin /ImageType 1 def /Width DataDict dup /MaskWidth known {/MaskWidth}{/Width} ifelse get def /Height DataDict dup /MaskHeight known {/MaskHeight}{/Height} ifelse get def /ImageMatrix [Width 0 0 Height neg 0 Height] def /NComponents 1 def /BitsPerComponent 1 def /Decode [0 1] def /DataSource AGMIMG_maskSource def currentdict end def currentdict end }def /use_mask { dup type /dicttype eq { dup /Mask known { dup /Mask get { level3 {true} { dup /MaskWidth known {dup /MaskWidth get 1 index /Width get eq}{true}ifelse exch dup /MaskHeight known {dup /MaskHeight get 1 index /Height get eq}{true}ifelse 3 -1 roll and } ifelse } {false} ifelse } {false} ifelse } {false} ifelse }def /make_line_source { begin MultipleDataSources { [ Decode length 2 div cvi {Width string} repeat ] }{ Width Decode length 2 div mul cvi string }ifelse end }def /datasource_to_str { exch dup type dup /filetype eq { pop exch readstring }{ /arraytype eq { exec exch copy }{ pop }ifelse }ifelse pop }def /masked_image_simulation { 3 dict begin dup make_line_source /line_source xdf /mask_source AGMIMG_maskSource /LZWDecode filter def dup /Width get 8 div ceiling cvi string /mask_str xdf begin gsave 0 1 translate 1 -1 Height div scale 1 1 Height { pop gsave MultipleDataSources { 0 1 DataSource length 1 sub { dup DataSource exch get exch line_source exch get datasource_to_str } for }{ DataSource line_source datasource_to_str } ifelse << /PatternType 1 /PaintProc [ /pop cvx << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1.0 sub 1 matrix scale 0.5 0 matrix translate matrix concatmatrix /MultipleDataSources MultipleDataSources /DataSource line_source /BitsPerComponent BitsPerComponent /Decode Decode >> /image cvx ] cvx /BBox [0 0 Width 1] /XStep Width /YStep 1 /PaintType 1 /TilingType 2 >> matrix makepattern set_pattern << /ImageType 1 /Width Width /Height 1 /ImageMatrix Width 1 matrix scale /MultipleDataSources false /DataSource mask_source mask_str readstring pop /BitsPerComponent 1 /Decode [0 1] >> imagemask grestore 0 1 translate } for grestore end end }def /imageormask { begin SkipImageProc { currentdict consumeimagedata } { save mark level2 AGMCORE_host_sep not and{ currentdict Operator /imagemask eq DeviceN_PS2 not and { imagemask }{ AGMCORE_in_rip_sep currentoverprint and currentcolorspace 0 get /DeviceGray eq and{ [/Separation /Black /DeviceGray {}] setcolorspace /Decode [ Decode 1 get Decode 0 get ] def }if use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ DeviceN_NoneName DeviceN_PS2 Indexed_DeviceN level3 not and or or AGMCORE_in_rip_sep and { Names convert_to_process not { 2 dict begin /imageDict xdf /names_index 0 def gsave imageDict write_image_file { Names { dup (None) ne { [/Separation 3 -1 roll /DeviceGray {1 exch sub}] setcolorspace Operator imageDict read_image_file names_index 0 eq {true setoverprint} if /names_index names_index 1 add def }{ pop } ifelse } forall close_image_file } if grestore end }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }{ Operator /imagemask eq { imagemask }{ image } ifelse } ifelse }ifelse }ifelse }{ Width Height Operator /imagemask eq{ Decode 0 get 1 eq Decode 1 get 0 eq and ImageMatrix /DataSource load /Adobe_AGM_OnHost_Seps where { pop imagemask }{ currentgray 1 ne{ currentdict imageormask_sys }{ currentoverprint not{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }ifelse }{ BitsPerComponent ImageMatrix MultipleDataSources{ 0 1 NComponents 1 sub{ DataSource exch get }for }{ /DataSource load }ifelse Operator /colorimage eq{ AGMCORE_host_sep{ MultipleDataSources level2 or NComponents 4 eq and{ AGMCORE_is_cmyk_sep{ MultipleDataSources{ /DataSource [ DataSource 0 get /exec cvx DataSource 1 get /exec cvx DataSource 2 get /exec cvx DataSource 3 get /exec cvx /AGMCORE_get_ink_data cvx ] cvx def }{ /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul /DataSource load filter_cmyk 0 () /SubFileDecode filter def }ifelse /Decode [ Decode 0 get Decode 1 get ] def /MultipleDataSources false def /NComponents 1 def /Operator /image def invert_image_samples 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ 1 AGMCORE_&setgray currentdict imageormask_sys }{ currentdict ignoreimagedata }ifelse }ifelse }{ MultipleDataSources NComponents AGMIMG_&colorimage }ifelse }{ true NComponents colorimage }ifelse }{ Operator /image eq{ AGMCORE_host_sep{ /DoImage true def HostSepColorImage{ invert_image_samples }{ AGMCORE_black_plate not Operator/imagemask ne and{ /DoImage false def currentdict ignoreimagedata }if }ifelse 1 AGMCORE_&setgray DoImage {currentdict imageormask_sys} if }{ use_mask { level3 {process_mask_L3 image}{masked_image_simulation}ifelse }{ image }ifelse }ifelse }{ Operator/knockout eq{ pop pop pop pop pop currentcolorspace overprint_plate not{ knockout_unitsq }if }if }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end }def /sep_imageormask { /sep_colorspace_dict AGMCORE_gget begin CSA map_csa begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_avoid_L2_sep_space{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def }if AGMIMG_ccimage_exists MappedCSA 0 get /DeviceCMYK eq and currentdict/Components known and Name () ne and Name (All) ne and Operator /image eq and AGMCORE_producing_seps not and level2 not and { Width Height BitsPerComponent ImageMatrix [ /DataSource load /exec cvx { 0 1 2 index length 1 sub{ 1 index exch 2 copy get 255 xor put }for } /exec cvx ] cvx bind MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Name findcmykcustomcolor customcolorimage }{ AGMCORE_producing_seps not{ level2{ AGMCORE_avoid_L2_sep_space not currentcolorspace 0 get /Separation ne and{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentdict imageormask }{ currentdict Operator /imagemask eq{ imageormask }{ sep_imageormask_lev1 }ifelse }ifelse }{ AGMCORE_host_sep{ Operator/knockout eq{ currentdict/ImageMatrix get concat knockout_unitsq }{ currentgray 1 ne{ AGMCORE_is_cmyk_sep Name (All) ne and{ level2{ Name AGMCORE_IsSeparationAProcessColor { Operator /imagemask eq{ /sep_tint AGMCORE_gget 1 exch sub AGMCORE_&setcolor }{ invert_image_samples }ifelse }{ [ /Separation Name [/DeviceGray] { sep_colorspace_proc AGMCORE_get_ink_data 1 exch sub } bind ] AGMCORE_&setcolorspace /sep_tint AGMCORE_gget AGMCORE_&setcolor }ifelse currentdict imageormask_sys }{ currentdict Operator /imagemask eq{ imageormask_sys }{ sep_image_lev1_sep }ifelse }ifelse }{ Operator/imagemask ne{ invert_image_samples }if currentdict imageormask_sys }ifelse }{ currentoverprint not Name (All) eq or Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentcolorspace 0 get /Separation ne{ [/Separation Name MappedCSA sep_proc_name exch 0 get exch load ] setcolorspace_opt /sep_tint AGMCORE_gget setcolor }if currentoverprint MappedCSA 0 get /DeviceCMYK eq and Name AGMCORE_IsSeparationAProcessColor not and Name inRip_spot_has_ink not and Name (All) ne and { imageormask_l2_overprint }{ currentdict imageormask }ifelse }ifelse }ifelse }ifelse cleartomark restore }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end end }def /decode_image_sample { 4 1 roll exch dup 5 1 roll sub 2 4 -1 roll exp 1 sub div mul add } bdf /colorSpaceElemCnt { mark currentcolor counttomark dup 2 add 1 roll cleartomark } bdf /devn_sep_datasource { 1 dict begin /dataSource xdf [ 0 1 dataSource length 1 sub { dup currentdict /dataSource get /exch cvx /get cvx /exec cvx /exch cvx names_index /ne cvx [ /pop cvx ] cvx /if cvx } for ] cvx bind end } bdf /devn_alt_datasource { 11 dict begin /convProc xdf /origcolorSpaceElemCnt xdf /origMultipleDataSources xdf /origBitsPerComponent xdf /origDecode xdf /origDataSource xdf /dsCnt origMultipleDataSources {origDataSource length}{1}ifelse def /DataSource origMultipleDataSources { [ BitsPerComponent 8 idiv origDecode length 2 idiv mul string 0 1 origDecode length 2 idiv 1 sub { dup 7 mul 1 add index exch dup BitsPerComponent 8 idiv mul exch origDataSource exch get 0 () /SubFileDecode filter BitsPerComponent 8 idiv string /readstring cvx /pop cvx /putinterval cvx }for ]bind cvx }{origDataSource}ifelse 0 () /SubFileDecode filter def [ origcolorSpaceElemCnt string 0 2 origDecode length 2 sub { dup origDecode exch get dup 3 -1 roll 1 add origDecode exch get exch sub 2 BitsPerComponent exp 1 sub div 1 BitsPerComponent 8 idiv {DataSource /read cvx /not cvx{0}/if cvx /mul cvx}repeat /mul cvx /add cvx }for /convProc load /exec cvx origcolorSpaceElemCnt 1 sub -1 0 { /dup cvx 2 /add cvx /index cvx 3 1 /roll cvx /exch cvx 255 /mul cvx /cvi cvx /put cvx }for ]bind cvx 0 () /SubFileDecode filter end } bdf /devn_imageormask { /devicen_colorspace_dict AGMCORE_gget begin CSA map_csa 2 dict begin dup /srcDataStrs [ 3 -1 roll begin currentdict /MultipleDataSources known {MultipleDataSources {DataSource length}{1}ifelse}{1} ifelse { Width Decode length 2 div mul cvi { dup 65535 gt {1 add 2 div cvi}{exit}ifelse } loop string } repeat end ] def /dstDataStr srcDataStrs 0 get length string def begin SkipImageProc { currentdict consumeimagedata } { save mark AGMCORE_producing_seps not { level3 not { Operator /imagemask ne { /DataSource [ [ DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse colorSpaceElemCnt /devicen_colorspace_dict AGMCORE_gget /TintTransform get devn_alt_datasource 1 /string cvx /readstring cvx /pop cvx] cvx colorSpaceElemCnt 1 sub{dup}repeat] def /MultipleDataSources true def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def } if }if currentdict imageormask }{ AGMCORE_host_sep{ Names convert_to_process { CSA get_csa_by_name 0 get /DeviceCMYK eq { /DataSource Width BitsPerComponent mul 7 add 8 idiv Height mul 4 mul DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse 4 /devicen_colorspace_dict AGMCORE_gget /TintTransform get devn_alt_datasource filter_cmyk 0 () /SubFileDecode filter def /MultipleDataSources false def /Decode [1 0] def /DeviceGray setcolorspace currentdict imageormask_sys }{ AGMCORE_report_unsupported_color_space AGMCORE_black_plate { /DataSource DataSource Decode BitsPerComponent currentdict /MultipleDataSources known {MultipleDataSources}{false} ifelse CSA get_csa_by_name 0 get /DeviceRGB eq{3}{1}ifelse /devicen_colorspace_dict AGMCORE_gget /TintTransform get devn_alt_datasource /MultipleDataSources false def /Decode colorSpaceElemCnt [ exch {0 1} repeat ] def currentdict imageormask_sys } { gsave knockout_unitsq grestore currentdict consumeimagedata } ifelse } ifelse } { /devicen_colorspace_dict AGMCORE_gget /names_index known { Operator/imagemask ne{ MultipleDataSources { /DataSource [ DataSource devn_sep_datasource /exec cvx ] cvx def /MultipleDataSources false def }{ /DataSource /DataSource load dstDataStr srcDataStrs 0 get filter_devn def } ifelse invert_image_samples } if currentdict imageormask_sys }{ currentoverprint not Operator/imagemask eq and{ currentdict imageormask_sys }{ currentoverprint not { gsave knockout_unitsq grestore }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ currentdict imageormask }ifelse }ifelse cleartomark restore }ifelse currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end end end }def /imageormask_l2_overprint { currentdict currentcmykcolor add add add 0 eq{ currentdict consumeimagedata }{ level3{ currentcmykcolor /AGMIMG_k xdf /AGMIMG_y xdf /AGMIMG_m xdf /AGMIMG_c xdf Operator/imagemask eq{ [/DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK {}] setcolorspace AGMIMG_c 0 ne {AGMIMG_c} if AGMIMG_m 0 ne {AGMIMG_m} if AGMIMG_y 0 ne {AGMIMG_y} if AGMIMG_k 0 ne {AGMIMG_k} if setcolor }{ /Decode [ Decode 0 get 255 mul Decode 1 get 255 mul ] def [/Indexed [ /DeviceN [ AGMIMG_c 0 ne {/Cyan} if AGMIMG_m 0 ne {/Magenta} if AGMIMG_y 0 ne {/Yellow} if AGMIMG_k 0 ne {/Black} if ] /DeviceCMYK { AGMIMG_k 0 eq {0} if AGMIMG_y 0 eq {0 exch} if AGMIMG_m 0 eq {0 3 1 roll} if AGMIMG_c 0 eq {0 4 1 roll} if } ] 255 { 255 div mark exch dup dup dup AGMIMG_k 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 1 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_y 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 2 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_m 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec 4 3 roll pop pop pop counttomark 1 roll }{ pop }ifelse AGMIMG_c 0 ne{ /sep_tint AGMCORE_gget mul MappedCSA sep_proc_name exch pop load exec pop pop pop counttomark 1 roll }{ pop }ifelse counttomark 1 add -1 roll pop } ] setcolorspace }ifelse imageormask_sys }{ write_image_file{ currentcmykcolor 0 ne{ [/Separation /Black /DeviceGray {}] setcolorspace gsave /Black [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 1 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Yellow /DeviceGray {}] setcolorspace gsave /Yellow [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 2 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Magenta /DeviceGray {}] setcolorspace gsave /Magenta [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {4 3 roll pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore }if 0 ne{ [/Separation /Cyan /DeviceGray {}] setcolorspace gsave /Cyan [{1 exch sub /sep_tint AGMCORE_gget mul} /exec cvx MappedCSA sep_proc_name cvx exch pop {pop pop pop 1 exch sub} /exec cvx] cvx modify_halftone_xfer Operator currentdict read_image_file grestore } if close_image_file }{ imageormask }ifelse }ifelse }ifelse } def /indexed_imageormask { begin save mark currentdict AGMCORE_host_sep{ Operator/knockout eq{ /indexed_colorspace_dict AGMCORE_gget dup /CSA known { /CSA get get_csa_by_name }{ /Names get } ifelse overprint_plate not{ knockout_unitsq }if }{ Indexed_DeviceN { /devicen_colorspace_dict AGMCORE_gget /names_index known { indexed_image_lev2_sep }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata } ifelse }{ AGMCORE_is_cmyk_sep{ Operator /imagemask eq{ imageormask_sys }{ level2{ indexed_image_lev2_sep }{ indexed_image_lev1_sep }ifelse }ifelse }{ currentoverprint not{ knockout_unitsq }if currentdict consumeimagedata }ifelse }ifelse }ifelse }{ level2{ Indexed_DeviceN { /indexed_colorspace_dict AGMCORE_gget begin }{ /indexed_colorspace_dict AGMCORE_gget begin CSA get_csa_by_name 0 get /DeviceCMYK eq ps_level 3 ge and ps_version 3015.007 lt and { [/Indexed [/DeviceN [/Cyan /Magenta /Yellow /Black] /DeviceCMYK {}] HiVal Lookup] setcolorspace } if end } ifelse imageormask Indexed_DeviceN { end } if }{ Operator /imagemask eq{ imageormask }{ indexed_imageormask_lev1 }ifelse }ifelse }ifelse cleartomark restore currentdict /_Filters known {_Filters AGMIMG_flushfilters} if end }def /indexed_image_lev2_sep { /indexed_colorspace_dict AGMCORE_gget begin begin Indexed_DeviceN not { currentcolorspace dup 1 /DeviceGray put dup 3 currentcolorspace 2 get 1 add string 0 1 2 3 AGMCORE_get_ink_data 4 currentcolorspace 3 get length 1 sub { dup 4 idiv exch currentcolorspace 3 get exch get 255 exch sub 2 index 3 1 roll put }for put setcolorspace } if currentdict Operator /imagemask eq{ AGMIMG_&imagemask }{ use_mask { level3 {process_mask_L3 AGMIMG_&image}{masked_image_simulation}ifelse }{ AGMIMG_&image }ifelse }ifelse end end }def /OPIimage { dup type /dicttype ne{ 10 dict begin /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /ImageType 1 def /Decode [0 1 def] currentdict end }if dup begin /NComponents 1 cdndf /MultipleDataSources false cdndf /SkipImageProc {false} cdndf /HostSepColorImage false cdndf /Decode [ 0 currentcolorspace 0 get /Indexed eq{ 2 BitsPerComponent exp 1 sub }{ 1 }ifelse ] cdndf /Operator /image cdndf end /sep_colorspace_dict AGMCORE_gget null eq{ imageormask }{ gsave dup begin invert_image_samples end sep_imageormask grestore }ifelse }def /cachemask_level2 { 3 dict begin /LZWEncode filter /WriteFilter xdf /readBuffer 256 string def /ReadFilter currentfile 0 (%EndMask) /SubFileDecode filter /ASCII85Decode filter /RunLengthDecode filter def { ReadFilter readBuffer readstring exch WriteFilter exch writestring not {exit} if }loop WriteFilter closefile end }def /cachemask_level3 { currentfile << /Filter [ /SubFileDecode /ASCII85Decode /RunLengthDecode ] /DecodeParms [ << /EODCount 0 /EODString (%EndMask) >> null null ] /Intent 1 >> /ReusableStreamDecode filter }def /spot_alias { /mapto_sep_imageormask { dup type /dicttype ne{ 12 dict begin /ImageType 1 def /DataSource xdf /ImageMatrix xdf /BitsPerComponent xdf /Height xdf /Width xdf /MultipleDataSources false def }{ begin }ifelse /Decode [/customcolor_tint AGMCORE_gget 0] def /Operator /image def /HostSepColorImage false def /SkipImageProc {false} def currentdict end sep_imageormask }bdf /customcolorimage { Adobe_AGM_Image/AGMIMG_colorAry xddf /customcolor_tint AGMCORE_gget << /Name AGMIMG_colorAry 4 get /CSA [ /DeviceCMYK ] /TintMethod /Subtractive /TintProc null /MappedCSA null /NComponents 4 /Components [ AGMIMG_colorAry aload pop pop ] >> setsepcolorspace mapto_sep_imageormask }ndf Adobe_AGM_Image/AGMIMG_&customcolorimage /customcolorimage load put /customcolorimage { Adobe_AGM_Image/AGMIMG_override false put current_spot_alias{dup 4 get map_alias}{false}ifelse { false set_spot_alias /customcolor_tint AGMCORE_gget exch setsepcolorspace pop mapto_sep_imageormask true set_spot_alias }{ AGMIMG_&customcolorimage }ifelse }bdf }def /snap_to_device { 6 dict begin matrix currentmatrix dup 0 get 0 eq 1 index 3 get 0 eq and 1 index 1 get 0 eq 2 index 2 get 0 eq and or exch pop { 1 1 dtransform 0 gt exch 0 gt /AGMIMG_xSign? exch def /AGMIMG_ySign? exch def 0 0 transform AGMIMG_ySign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch AGMIMG_xSign? {floor 0.1 sub}{ceiling 0.1 add} ifelse exch itransform /AGMIMG_llY exch def /AGMIMG_llX exch def 1 1 transform AGMIMG_ySign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch AGMIMG_xSign? {ceiling 0.1 add}{floor 0.1 sub} ifelse exch itransform /AGMIMG_urY exch def /AGMIMG_urX exch def [AGMIMG_urX AGMIMG_llX sub 0 0 AGMIMG_urY AGMIMG_llY sub AGMIMG_llX AGMIMG_llY] concat }{ }ifelse end } def level2 not{ /colorbuf { 0 1 2 index length 1 sub{ dup 2 index exch get 255 exch sub 2 index 3 1 roll put }for }def /tint_image_to_color { begin Width Height BitsPerComponent ImageMatrix /DataSource load end Adobe_AGM_Image begin /AGMIMG_mbuf 0 string def /AGMIMG_ybuf 0 string def /AGMIMG_kbuf 0 string def { colorbuf dup length AGMIMG_mbuf length ne { dup length dup dup /AGMIMG_mbuf exch string def /AGMIMG_ybuf exch string def /AGMIMG_kbuf exch string def } if dup AGMIMG_mbuf copy AGMIMG_ybuf copy AGMIMG_kbuf copy pop } addprocs {AGMIMG_mbuf}{AGMIMG_ybuf}{AGMIMG_kbuf} true 4 colorimage end } def /sep_imageormask_lev1 { begin MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ { 255 mul round cvi GrayLookup exch get } currenttransfer addprocs settransfer currentdict imageormask }{ /sep_colorspace_dict AGMCORE_gget/Components known{ MappedCSA 0 get /DeviceCMYK eq{ Components aload pop }{ 0 0 0 Components aload pop 1 exch sub }ifelse Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf AGMIMG_y 0.0 eq AGMIMG_m 0.0 eq and AGMIMG_c 0.0 eq and{ {AGMIMG_k mul 1 exch sub} currenttransfer addprocs settransfer currentdict imageormask }{ currentcolortransfer {AGMIMG_k mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_y mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_m mul 1 exch sub} exch addprocs 4 1 roll {AGMIMG_c mul 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }{ MappedCSA 0 get /DeviceGray eq { {255 mul round cvi ColorLookup exch get 0 get} currenttransfer addprocs settransfer currentdict imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 2 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 1 get} exch addprocs 4 1 roll {255 mul round cvi ColorLookup exch get 0 get} exch addprocs 4 1 roll setcolortransfer currentdict tint_image_to_color }ifelse }ifelse }ifelse }ifelse end }def /sep_image_lev1_sep { begin /sep_colorspace_dict AGMCORE_gget/Components known{ Components aload pop Adobe_AGM_Image/AGMIMG_k xddf Adobe_AGM_Image/AGMIMG_y xddf Adobe_AGM_Image/AGMIMG_m xddf Adobe_AGM_Image/AGMIMG_c xddf {AGMIMG_c mul 1 exch sub} {AGMIMG_m mul 1 exch sub} {AGMIMG_y mul 1 exch sub} {AGMIMG_k mul 1 exch sub} }{ {255 mul round cvi ColorLookup exch get 0 get 1 exch sub} {255 mul round cvi ColorLookup exch get 1 get 1 exch sub} {255 mul round cvi ColorLookup exch get 2 get 1 exch sub} {255 mul round cvi ColorLookup exch get 3 get 1 exch sub} }ifelse AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end }def /indexed_imageormask_lev1 { /indexed_colorspace_dict AGMCORE_gget begin begin currentdict MappedCSA 0 get dup /DeviceRGB eq exch /DeviceCMYK eq or has_color not and{ {HiVal mul round cvi GrayLookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceGray eq { {HiVal mul round cvi Lookup exch get HiVal div} currenttransfer addprocs settransfer imageormask }{ MappedCSA 0 get /DeviceCMYK eq { currentcolortransfer {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }{ currentcolortransfer {pop 1} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 2 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi 1 add Lookup exch get HiVal div} exch addprocs 4 1 roll {3 mul HiVal mul round cvi Lookup exch get HiVal div} exch addprocs 4 1 roll setcolortransfer tint_image_to_color }ifelse }ifelse }ifelse end end }def /indexed_image_lev1_sep { /indexed_colorspace_dict AGMCORE_gget begin begin {4 mul HiVal mul round cvi Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 1 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 2 add Lookup exch get HiVal div 1 exch sub} {4 mul HiVal mul round cvi 3 add Lookup exch get HiVal div 1 exch sub} AGMCORE_get_ink_data currenttransfer addprocs settransfer currentdict imageormask_sys end end }def }if end systemdict /setpacking known { setpacking } if %%EndResource currentdict Adobe_AGM_Utils eq {end} if %%EndProlog %%BeginSetup Adobe_AGM_Utils begin 2 2010 Adobe_AGM_Core/doc_setup get exec Adobe_CoolType_Core/doc_setup get exec Adobe_AGM_Image/doc_setup get exec currentdict Adobe_AGM_Utils eq {end} if %%EndSetup %%Page: (Page 1) 1 %%EndPageComments %%BeginPageSetup /currentdistillerparams where {pop currentdistillerparams /CoreDistVersion get 5000 lt} {true} ifelse { userdict /AI11_PDFMark5 /cleartomark load put userdict /AI11_ReadMetadata_PDFMark5 {flushfile cleartomark } bind put} { userdict /AI11_PDFMark5 /pdfmark load put userdict /AI11_ReadMetadata_PDFMark5 {/PUT pdfmark} bind put } ifelse [/NamespacePush AI11_PDFMark5 [/_objdef {ai_metadata_stream_123} /type /stream /OBJ AI11_PDFMark5 [{ai_metadata_stream_123} currentfile 0 (% &&end XMP packet marker&&) /SubFileDecode filter AI11_ReadMetadata_PDFMark5 application/postscript Adobe Illustrator CS2 2009-02-09T11:31:58+01:00 2009-02-09T11:31:59+01:00 2009-02-09T11:31:59+01:00 256 76 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgATAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWOecPzB8q+ UbcSaxdhJ3HKGyiHO4kH+Sg6Db7TUX3y7Dp55D6QgyAeO6z/AM5Qao0jLoujQRRA/BJeu8rEeJSI xBf+CObKHZg/iPyazkS6H/nJzzsJAZtO0x4+6pHcIfvMz/qyZ7Mx95/HwR4hZx5V/wCckPK+pSpb 65ayaPM23r19e3r7soV1r/q098xcvZ047xNshketW9zb3MEdxbSpPbyqHimjYOjKdwystQQc15BG xbFTArsVdiqTeZ/OHlzyxZC71u9S1javpRmrSSEdo41qzfdQd8txYZTNRCCQHkGuf85QRLI8ehaK ZEH2Li9k41/55R1/5OZsYdmfzj8ms5GNT/8AOS3n6Q/u7XToQK7LDKSR2rymP4ZcOzcfeUeIVSH/ AJya89LxEljpkgH2j6U6sfpE1PwxPZuPvP4+C+IXvXkLX77zB5R03Wb6KOG6vY2keKGvADmwWnIs fsgd81OfGITMR0bYmwn+Upad1RS7kKiglmJoAB1JOKvJPOv/ADkT5c0iV7PQYf0zdpUNcBuFqp9n oWk/2Ip/lZscPZ8pby2H2tZyPMNQ/wCchfzKunZre6t7BT0SC3jYDf8A4vExzOj2fiHMWw4yssv+ cgvzNt3DTX0F4B1Se2iAP/IlYj+OMuz8R6UvGXo/kz/nJHSNQmjs/MtoNMlc0F9CS9vU/wA6n44x 7/F70zDzdnEbxNsxk73ssUsU0SSxOskUih45EIZWVhUEEbEEZrCKbF2KuxV2KuxV2KuxV2KuxV2K uxV2KrZVdonWN/TkZSEkpXiSNjQ9aYhXyR5u/Lj8wT56bSrtJdX1XUCZoL5SSk0daGQs20YTowNA vypnQ4dRj8OxsA0GJt6FoX/OOOh2Fkt75w1gqQKyxQOkECE9mmlBLfQFzDn2jImoBkMfejv+VS/k XqJFpp+uR/W22T6tqMEshP8AqN6lfuyP5vUDcj7E8MWAfmD+RPmHyxBJqOnyfpfSY/ilkRCs8Q8Z IwWqo/mU/MDMvT66M9jsWEoU9N/5x68uebdM0GS81S5ePSb5RJp2lyCpXlv69TugcdFHXr4ZhdoZ ISlQ5jmWcAXrea5sdirEPzM/MSw8k6F9bcCfUrnlHp1mT9twN3em/ppUcvu75k6bTnLKunVjKVPk nX/MGr6/qk2p6tctc3cxqWY7KK7Ii9FUdgM6DHjEBQ5NBNpdk1RVvpWp3Kc7eznmT+aON2G/uAci Zgcyqr+gNd/6tt1/yJk/5px8SPeFp9l+RbFrDyVoVm6lJIbC2WVTUEP6Sl9j/lVzms8rnI+bkR5J 5lSXzN+dv5tXWt6hP5d0Wcx6HbMY7qWM0+tSKaNUj/dSnYDo3XwpvNFpBEcUvq+5pnK3kWbBgy/R /wAo/wAxtYtFu7HQ5jbuAUeZorfkDuGUTvGSD2IFMx56vFE0SkRKB8zfl/5y8sxpLrely2kEh4rP VJYuR6KZImdAfYnJY9RCf0lSCGPZch7r/wA46fmDdfXW8n6hKZLeRGl0lnNSjIOUkIr+yVqwHah8 c1XaOnFcY+LZjl0fQOahtdirsVdirsVdirsVcSACSaAbknFWJ3n5r/lzaXZtJ9etROp4sELSKCOx dAyD78yBpchF8JY8QZNZX1lf2sd3ZTx3NrMOUU8LB0YeIZSQcolEg0WStgV5N+cH5zxeWlfRNBdJ teYUnn2ZLUEeHRpfBTsOp8M2Gj0fH6pfT97XKdK/k/zrH5c/JSw8x61K93ckXDLzcmSeaa6lZE5t U1Pc9gPbBmw8ecxjt/YkGovnzzp5u8z+ZNWe612WQPXlDZtySKFHHJRHGegKkb9T1qc2+HFGAqLU TbHsuQ9k/Jr81Nb0i8sdG8wPLN5e1Jzb2F5OGIhlBA4pI32o6uoZa/DUHbvrdZpYyBlH6gzhKk+/ Mn8x9X8kfmuk1rWbTLiytzf6eTRJAGkXkv8ALIANm+g7ZVptPHLh352mUqL2Hy55j0jzFpEGraTO J7ScbHoyMPtI6/ssvcZrcmMwNHm2A2meQS+OPzV84S+afOd9eiQtYwObbT1/ZEERIDAf5Zq5+edJ pcPhwA6uPI2WKQQTXE8cECGSaZljijUVZmY0VQPEnMgmkPqr8s/yZ0Hyzp8F3qltFf8AmB1DzTSg SJAxH2IVNVHHpz6n5bZoNTrJTNDaLdGFJ235s/lxGxRtftVZDxK1bYjanTKvymX+aU8Qa/5W5+W3 /UwWv3t/TH8pl/mleMO/5W5+W3/UwWv3t/TH8pl/mleMJf8Amp54ttM/LS51fSrlZDqarbabcRnY m4Bq6nxWNXYe4yelwGWXhPTmiR2fI+dC0vXP+cefIlvrevT69qEQlsNIKi3jcVV7p91JqCCIlHL5 lc1/aGfhjwjmfuZwjb6azRtyF1bSrDVtNudNv4hPZ3cbRTxN3VvDwI6g9jkoSMTY5qQ+Ite0qTSN c1DSpG5vYXMtsXpTl6TlOVPelc6jHPiiD3uMUX5L1KXTPN2jX8R4tb3kDHtVfUAdT7MpIORzR4oE eSjm+3M5dyXYq7FXYq7FXYq7FWLfmV5b1/zJ5Wm0fRb2OxnuXUXEkpdVaAA846oGb4jSviKjL9Nk jCfFIWxkLDxDzL+V3lXyV5DuJPMt0JvN10xGmx2srFNmABVGVCV47uzL7DfNpj1U8uT0j0dWsxoM x/5xhXUh5c1czc/0ebpPqnL7PqBP33H/AISuY/adcQ76ZY2UfnR5u8yeWvKpuNDtHeScmKfUgAy2 imgDlevJiaKaUB69gcfR4Yzn6j8O9MzQfLeg20eq+ZdOtb+R2jv72GK6mLfGVmlCu3Jq/F8RNTm+ yHhiSOgaQ+m7r8l/KF1pFro9xq2oy6ZZMXtbRrmLhGxrUqPT/wAo5oxrJgmQAs+TdwBAfnH5A8nS eR1vbidNPvNGtkh0+/eheYRoFjt5OIrJz47UFVO42qDPR6ifiUNxJE4inhn5Y+WtC8yebrXS9avv qVrICUUbNPICOMCudkL+J60oNyM2mpyyhAmItriLL6V81/lT5M1+y0uxvBJZWmkJJHYQ2sixKqyc eWzK9fsDf780uLVTgSRvbcYgvN/z78kaTZ6FF5hOo3eoat60NmJLmWJx6PGRqUjjj3BHXM3QZyZc NABhOLz38pvOHmrQPM0FtoULX66g6xXGl78Zh/MP5GUVPPt32zL1eGE43LaurGJIL6o833ktl5R1 u9j+GW20+6mSh3DRwsw3+YzQ4RcwPMNx5PiDOocd6B+ROmQX/wCZem+uAyWiy3Sqe7xoeB/2LEN9 GYmulWIsoc31Zqt4LLS7y9OwtoJJqnp+7Qt/DNBAWQG4vhQkkkk1J6nOqcdrFXYq9a/NS4a3/K/8 vdOUcUmtXunQneoji4tQ9m9ZqZr9KLyzPmzlyDyXNgwfVv8Azj3YRWv5Z2c6CjX1xcXEh8WWQwf8 RhGaDtCV5T5N0OT0nMJm7FXxZ+Y8yTef/MToar+kbkA/6srKf1Z02mH7uPuDjy5pX5ftWu9e020U FmuLqCIKOpLyKtB9+TyGok+SA+ofzk/NGXyXp9vbaciS6zqAYwmQVSGNNjIy/tGpoo6da9KHR6PS +KbP0hunKniOmaT+cH5hxz6hBcXd/bI5R5ZbhYYOexKIhZE2rWirQZs5Tw4dtg10SgLjUPzO/L7V 0t7i6vNMulAkSFpfVgkSux41eGRfvyYjizRsAFG4fSv5W+eh5z8qx6nJGIb6GRra+iX7PqoA3JK7 8WVgfbpvSuaTVYPDnXRuibDxf8yvz38w6jqdxpnlm4bT9Khdoluodri4KmnMP1RSfshaHxPYbPTa GIFy3LXKbGNS8j/m7b6a2v6ha6gLaNDK9w8/OZEpVmeP1DMoA61Xbvl8c+EnhBCOEsp/Jj82vMsX may0DV7yXUdN1BxBE1wxklhlYUjKu1WKlqKVJoOoyjWaSPCZRFEJhLd63+bH5lQeSNFR4UWfWL0s lhbt9kcac5ZKb8VqNu5+kjXaXTeLLyDZKVPnDRLzQ/MfmSbVfP8ArU6REh5eEbyTTmv92pRSkSD2 6dFHcbqYlCNYw0jfm+q/I995ZvfLFnN5ZjEWiANHaII2jFI3Kts4DH4gak9TmgzxkJni+pvjVbJ1 cW8FxBJb3EaywSqUlicBlZWFCrA7EEZWDSXzB+cX5Oz+V531nRkaXy9K3xpuzWjMdlY9TGT9lvoP YneaPWcfpl9X3tMo0yO2/L2180fkNpd1pVnENdtRLcJIkarLP6U8sckTMBVqqPhr3Ayk6gw1BBPp Tw3F5P5o86a/5hSyttRl42mmQx21nZpVY4xEgTkVPV24/Ex/AbZsMWGMLI6sCbSEEqQQaEbgjqDl qHomhyebfzT1XQfL+oyG4g0kSfWNSofUW1cpyMr9GakYVD1JO9euYcxDAJSHXp5shZTD86vKqN+Z VponlzTUSW5s4BDaWsaoGcs4LEKAPsr8THsN8hosv7oykeqZjd7F+U/5V2fkvTTPdBLjX7pf9Kug KiNTQ+jET+yD1P7R+jNbq9Ucp2+lnGNMq812MmoeVtZsIgTJd2NzAgHUtJCyDx8coxSqYPmGR5Ph 7OocdlH5aeaY/LHnXTdXnr9UjcxXdAT+5mUxu1BuePLl9GUanFxwMeqYmi+wL62tda0S4to562mp WzxLcwlW/dzxleaE8lOzVHUZzsSYyvub+by6L/nGPyUAfW1LUnPYo8C/rhbM49pz7gw8MPEfzL8t aJ5a82XOi6RdS3cFqiCaSYqWErDkyVQKPhBHbrm002SU4cRDXIUWMxRSSypFGpaSRgqKOpJNAMvJ Q9w/5yI8vnTvLfk9UX93p0T6e7jpVYouA/5JNmr7PyXKfnu2THJ4Zm0a31F/zjlrtve+QzpgYC50 m4kR46/F6c7GZHp4Fmdf9jmi7RhWS+9uxnZ6pmAzSDz15ts/Knli81i5ZecSlLSFjvLcMCI4wOpq dzTooJ7ZdgxHJIRCJGg+K5ZZJpXllYvJIxd3PUsxqSc6YCnHeg/kR5ak1n8wLO4ZCbTSa3s79gyb Qivj6hB+QOYeuycOMjv2ZQG7P/8AnJHyZrF+1h5jsIXuba0ha3vkjHJolDl0koN+PxMGPbbMTs7N EXE9WWQdXl3kf81/Nvk2FrXTZIp9PdzI1lcoXj5kAFlKlHWoHZqe2Z2fSwybnmwEiHrHlr89/Jfm O8trbzbpEFndoSttfSqlxbqz0B+J15w8qDxHiRmvyaGcBcDbYJg83sd5e6dpmnS3lzLHbWFtGZJZ TRUVAK12/hmuETI0ObY8L1388/y4ivf9xvlCDUxCwMd1PHBb7o1VZKxTOKHcVAObWGhy1vKmozHc luu/85I67qel3tpY6JDapPE8UkzyPOY0lHDlssS1HLau1e2Tx9nRiQSUHIwj8otNk1D8yNAhReXp XS3LV6BbcGYn/hPvzK1cqxS9zGPN9ReZ/wAufJvmi7iu9d0/65cQR+lE/rTxBU5FqcYpEXqetM0W LUTxiomm8xBSb/lRP5Vf9WP/AKerz/qtln57L3/YEcAZjo2j6bo2mW+l6ZCLextV4QQgs3EElj8T lmO57nMaczI2eaQKRmRSpXa2rWswu1RrUo3rrIAUKU+LkDtSnXCLvZXznL+esXl7WbfTvKFmn+Dr BpQLSUEPOZpTK7q7VeMBmPpjw+0OgG5Gh443M+stPHXJkN9pn5IfmS36Sh1JdE1ucAzxl0tpGkP+ /IpR6ch/yozv3OUxlnw7VxRT6Sgh+QHkSzIuNU83qLL7VeVvb1X/AIyO8i/TTJ/n8h2Ed14B3t61 +aXkPyNoc2hfl1Cs9/KKS6lQtGr0p6jSPvM4/ZA+Af8AC4IaXJllxZOXcpkByZR+TPnPRvN0s1/e wIvnS2t0t7y4pvLao3wyR/soCzfGF7+1AKNZhlj2H0MoG/e9UzAZuxV8j/nJ5DufK3my4ljjP6I1 N3uLCUD4V5Hk8NfGMnb/ACaZ0OjzjJDzDRIUWA5lsWY+T/zY86+VIRbaddiWwU1Wxul9WFamp47q yf7FhmPm0kMm5G6RIhPdX/5yI/MTULVoImtNO5ghprSJhJQ+DSvNT5jfKYdn4wepZGZeaSyyyyvL K7SSyMWkkYlmZmNSSTuSTmcAwei/kV5Lm8wec7e/ljP6M0Zlup5CPhaVTWGMHxLjkfYHMLXZuCFd SygLL6D/ADP8nf4t8m3ulxgfXVpcWDN0E8VSor25qWSvauajS5vDmD0bZCw+OLi3nt55Le4jaKeF iksTgqyspoVYHoQc6QG92hM/LHmrXfLGqLqejXJt7lQUcUDI6HqjodmX/bG+V5cUZipKDT0pf+cn POYio2m6cZafb4zgV8ePq/xzC/kyHeWfiF5/5x89+ZfN96lzrVz6iw1FvbRjhDEG68EHc9yan3zL w4I4xUWJNpLY2N5f3kNlZwtcXVw4jhhjFWZmNAAMtlIAWUPrf8s/IkfkXyk8Zj+tavOv1nUDFQl5 FU8YYyaVCfZWvck9857U5/Fn5N8RQYMf+coLA38MQ0GSOzMircTvODIkZNGKxLHuR1pyzK/kw19W 7HxGY635C/KTzZYtqjx2ipIvM6pZSpARyFeTMh4E7ftqcx4Z82M1v7ikxBfLfmOy0yx16/s9Lu/r 2nW8zx2t3t+8RTQNUbH5jY9c3uORMQSKLSXtv5mT6zafkD5cguCyzXBsobxTWvpCB5EV/cGNK175 q9MInUSrzbJfSkH/ADjtoPk/VdV1M61DBd6jAsR0+0uQroVPP1XWNvhdlovbbLu0Mk4gcOwRABlv /OQXnPQ7Hyw3lHT2ia9vXjN1BDxpBDC4kHIL9lmdFovhX2rj9n4ZGfGeQZTO1MZ/5xi0hZ/Mmraq wB+o2qQpXs9y5NR/sYWH05f2nOogd5Y4xu+j80rc7FXYq7FXYq8e/MX/AJx907Wp5dT8tSR6bqEl Wms3FLWRvFeIJiY+wK+w65stP2gY7S3DXKHc8S1r8sfP2jSsl7ol0UWv7+CMzxU8ecXNR9ObOGpx y5ENZiUqg8seZJ5BFBpN5LIeiJbysx7dAuWHLEdQimc+U/yB886zKj6jCNFsCRzlud5qd+EAPKv+ vxzFy6/HHl6iyECX0T5K8i6B5P0v6jpMRDSUa6upPimmcCgLttsOyjYffmmzZ5ZDZbhGmQ5Sl2Kp Z5j8t6N5j0qXS9XtlubSXcA7MjDo8bdVYeIyePJKBuKCLfP/AJt/5xu8yWUsk3lydNTtKkpbyssN yo8KtSN/nVflm3xdoxP1bFqOMvPr38u/PdkxW58v3602LrbySJ/waBl/HMyOoxnlIMeEqEHkjznP II4dB1GRz2W1mPelT8OwwnPAfxD5rRZx5T/5x6856tMkmsKujWFQXMpV52X/ACIlJof9cjMXL2hC P0+oshAvo7yv5X0byzo8Ok6TD6NtFuzHd5HP2pJGoOTN/YNs02XLKcrLaBSa5Wl5p+Z35J6T5tkf U9PkXTtdI+OUisM9BQesBuDt9tfpB2zO02tOPY7xYShbwbW/yf8AzF0iVkl0We6QfZmsl+sow8f3 XJh/sgM2sNXjl1+bUYlJU8m+b3YImh6gznYKtrOSfoC5b40O8fNFFlHl78jPzE1iVPU0/wDRlsx+ O4vj6VB/xi3lJ/2OUZNdjj1v3MhAvffy6/KTy95Lj9eP/TtYdeMuoyqAQD1WJKn018d6nuc1Go1c svlHubYxpnOYrJ5H+YX/ADj9pmv382q6JdLpl/cMXuLd15W8jnqw4/FGWO5pUe2bHT9oGAqQsNco W87P/ONn5ghyom08itOYmkp894q/hmZ/KWPzY+GWbeR/+ccLHTbyK/8AM12moyQkOlhApFvyBqDI 70aQf5PEe9RtmLn7RMhURTIY+96h5x8qad5p8u3WiXxKRXABjlQfFHIh5I6/Ijp3G2YOHKcchIMy LeAXH/OM/ndbwxQXthLa1+C4d5UPHxZBG5B9gT88247Sx1yLV4ZTy5/5xhmXQ40tdWjk1szK0skq slssPFgUQKHctyoeR+4ZSO0/VuPSnw2Y/k7+WGueRpdV/SF1bXMWorBx+rmTkrQGTrzVdiJcx9Zq Y5aoHZlCNPTMwWbsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdir/9k= uuid:9781C769F82F11DD957788AAD8F65D92 uuid:9781C76AF82F11DD957788AAD8F65D92 uuid:18522BF22EF8DD11B6DFB2F17E203B27 uuid:17522BF22EF8DD11B6DFB2F17E203B27 3 % &&end XMP packet marker&& [{ai_metadata_stream_123} <> /PUT AI11_PDFMark5 [/Document 1 dict begin /Metadata {ai_metadata_stream_123} def currentdict end /BDC AI11_PDFMark5 %AI12_RMC_Transparency: Balance=75 RasterRes=300 GradRes=150 Text=0 Stroke=1 Clip=1 OP=0 Adobe_AGM_Utils begin Adobe_AGM_Core/page_setup get exec Adobe_AGM_Core/capture_currentpagedevice get exec Adobe_CoolType_Core/page_setup get exec Adobe_AGM_Image/page_setup get exec %%EndPageSetup Adobe_AGM_Core/AGMCORE_save save ddf 1 -1 scale 0 -346.999 translate [1 0 0 1 0 0 ] concat % page clip gsave newpath gsave % PSGState 0 0 mo 0 346.999 li 1190.59 346.999 li 1190.59 0 li cp clp [1 0 0 1 0 0 ] concat 117.664 249.537 mo 115.487 248.393 95.3335 232.718 94.9785 232.733 cv 92.7925 232.826 86.3252 242.936 84.0562 245.336 cv 78.8462 250.847 73.7607 253.542 72.2935 257.938 cv 91.8438 277.571 121.828 294.962 159.673 294.907 cv 197.007 294.853 227.463 277.275 246.213 257.099 cv 237.566 249.501 231.385 239.439 222.688 231.893 cv 200.563 260.887 152.141 267.663 117.664 249.537 cv cp 1072.96 183.161 mo 1069.04 134.177 972.732 145.522 967.938 187.362 cv 979.21 187.853 989.543 189.282 1000.71 189.884 cv 1004.07 167.746 1052.97 172.605 1036.83 200.806 cv 1011.5 208.045 988.711 200.9 968.777 214.249 cv 949.42 227.211 949.312 262.449 965.417 276.423 cv 983.789 292.364 1015.44 281.098 1026.75 268.861 cv 1027.02 273.635 1028.37 277.329 1029.27 281.464 cv 1040.19 281.464 1051.12 281.464 1062.04 281.464 cv 1052 247.624 1075.64 216.563 1072.96 183.161 cv cp 834.347 188.202 mo 831.496 215.83 855.318 223.207 874.676 230.212 cv 883.944 233.566 899.216 236.272 900.722 243.655 cv 904.187 260.636 872.965 264.786 859.553 256.258 cv 853.511 252.416 853.258 246.31 846.949 241.135 cv 836.673 242.9 826.02 244.29 815.862 246.176 cv 824.822 299.207 931.887 296.894 936.01 243.655 cv 937.918 219.014 917.988 209.959 897.361 203.326 cv 887.05 200.011 867.627 198.185 867.114 187.362 cv 866.465 173.664 890.315 171.611 903.242 178.12 cv 909.547 181.295 910.76 187.353 915.005 189.884 cv 924.697 188.093 934.158 186.071 944.412 184.842 cv 937.529 135.568 839.043 142.686 834.347 188.202 cv cp 163.875 107.544 mo 129.846 105.777 105.619 128.293 94.9785 157.116 cv 91.042 156.572 84.918 158.214 82.376 156.275 cv 81.9595 139.498 83.0938 128.673 83.2158 113.426 cv 71.8979 120.709 60.8799 131.561 50.4487 141.992 cv 39.7305 152.71 28.3745 163.109 18.5215 173.919 cv 41.0952 192.759 61.1343 218.305 83.2158 234.413 cv 83.1875 218.077 81.9224 206.733 82.376 189.043 cv 86.8569 189.043 91.3379 189.043 95.8188 189.043 cv 105.267 220.015 129.191 243.992 169.756 239.454 cv 199.332 236.146 216.002 214.026 225.208 189.043 cv 229.044 189.408 234.459 188.193 236.971 189.884 cv 237.443 207.288 236.043 218.351 236.131 234.413 cv 256.226 216.419 278.91 193.734 298.305 172.239 cv 277.22 152.715 257.723 131.603 236.131 112.585 cv 235.604 128.013 238.531 141.457 236.131 157.116 cv 232.21 157.116 228.289 157.116 224.368 157.116 cv 215.628 130.532 195.157 109.169 163.875 107.544 cv cp 1170.42 132.75 mo 1174.93 92.6963 1103.86 97.0156 1103.21 131.91 cv 1110.07 133.73 1118.88 133.607 1125.89 135.271 cv 1123.64 121.726 1145.51 115.46 1147.74 127.709 cv 1149.66 138.281 1132.93 147.278 1125.05 153.755 cv 1109.22 166.772 1097.29 175.587 1093.97 194.925 cv 1115.81 194.925 1137.66 194.925 1159.5 194.925 cv 1160.48 188.339 1162.72 183.024 1163.7 176.44 cv 1152.78 176.44 1141.86 176.44 1130.93 176.44 cv 1141.5 162.071 1167.96 154.686 1170.42 132.75 cv cp 463.823 51.2515 mo 423.245 53.4082 395.704 65.6802 372.242 88.2202 cv 350.11 109.482 333.479 139.475 331.072 173.079 cv 324.933 258.789 383.741 298.306 465.503 293.227 cv 540.949 288.54 566.031 227.583 563.805 141.992 cv 525.437 141.992 487.068 141.992 448.699 141.992 cv 446.654 160.689 443.366 182.566 442.818 199.966 cv 460.743 200.524 480.905 198.847 497.43 200.806 cv 496.612 225.762 478.18 235.873 459.622 237.774 cv 433.265 240.474 412.459 226.915 403.329 208.367 cv 385.779 172.716 406.732 130.137 432.735 116.787 cv 455.405 105.148 488.102 109.767 522.636 109.225 cv 525.261 90.8457 526.691 71.2705 529.357 52.9321 cv 506.556 52.5078 486.571 50.0425 463.823 51.2515 cv cp 234.45 99.9829 mo 236.877 97.5566 246.327 90.8779 246.213 88.2202 cv 246.105 85.6963 233.958 77.1836 229.409 73.937 cv 210.905 60.7314 186.125 51.1035 157.153 51.2515 cv 136.822 51.3555 119.82 56.355 103.38 64.6948 cv 97.7813 67.5352 72.0601 83.6055 72.2935 89.0601 cv 72.373 90.9224 81.8877 97.8145 84.0562 99.9829 cv 88.9297 104.856 91.4717 107.916 94.9785 111.746 cv 110.656 97.6343 133.008 84.1777 161.354 84.8594 cv 188.472 85.5117 208.859 98.792 223.528 112.585 cv 227.055 107.29 229.595 104.838 234.45 99.9829 cv cp 650.345 61.334 mo 612.505 80.8486 587.504 112.492 578.929 161.317 cv 565.98 235.039 608.083 288.694 671.35 293.227 cv 726.54 297.18 760.177 276.371 785.615 244.495 cv 804.927 220.299 819.205 187.081 815.862 141.152 cv 814.438 121.573 807.413 102.675 799.059 89.9004 cv 780.93 62.1777 742.297 43.6064 695.715 47.8906 cv 677.252 49.5889 663.646 54.4741 650.345 61.334 cv cp 0.877441 0 mo 397.437 0 794.029 0 1190.59 0 cv 1190.59 115.667 1190.59 231.33 1190.59 346.999 cv 793.734 346.999 396.897 346.999 0.0371094 346.999 cv 0.0371094 232.173 0.0371094 117.346 0.0371094 2.52051 cv -0.0351563 1.32813 -0.101563 0.141113 0.877441 0 cv cp false sop /0 << /Name (Black) /0 [/DeviceCMYK] /CSA add_res /CSA /0 get_csa_by_name /MappedCSA /0 /CSA get_res /TintMethod /Subtractive /TintProc null /NComponents 4 /Components [ 0 0 0 1 ] >> /CSD add_res 1 /0 /CSD get_res sepcs 0 sep ef 668.829 113.426 mo 644.736 133.127 630.34 201.173 657.906 227.691 cv 670.881 240.173 698.574 241.237 715.04 232.733 cv 753.499 212.87 764.906 123.76 723.441 105.864 cv 717.717 103.394 706.651 102.24 700.757 102.503 cv 686.892 103.122 676.364 107.264 668.829 113.426 cv cp 695.715 47.8906 mo 742.297 43.6064 780.93 62.1777 799.059 89.9004 cv 807.413 102.675 814.438 121.573 815.862 141.152 cv 819.205 187.081 804.927 220.299 785.615 244.495 cv 760.177 276.371 726.54 297.18 671.35 293.227 cv 608.083 288.694 565.98 235.039 578.929 161.317 cv 587.504 112.492 612.505 80.8486 650.345 61.334 cv 663.646 54.4741 677.252 49.5889 695.715 47.8906 cv cp 0.913725 0.807843 0.0470588 0.00392157 cmyk ef 223.528 112.585 mo 208.859 98.792 188.472 85.5117 161.354 84.8594 cv 133.008 84.1777 110.656 97.6343 94.9785 111.746 cv 91.4717 107.916 88.9297 104.856 84.0562 99.9829 cv 81.8877 97.8145 72.373 90.9224 72.2935 89.0601 cv 72.0601 83.6055 97.7813 67.5352 103.38 64.6948 cv 119.82 56.355 136.822 51.3555 157.153 51.2515 cv 186.125 51.1035 210.905 60.7314 229.409 73.937 cv 233.958 77.1836 246.105 85.6963 246.213 88.2202 cv 246.327 90.8779 236.877 97.5566 234.45 99.9829 cv 229.595 104.838 227.055 107.29 223.528 112.585 cv cp ef 529.357 52.9321 mo 526.691 71.2705 525.261 90.8457 522.636 109.225 cv 488.102 109.767 455.405 105.148 432.735 116.787 cv 406.732 130.137 385.779 172.716 403.329 208.367 cv 412.459 226.915 433.265 240.474 459.622 237.774 cv 478.18 235.873 496.612 225.762 497.43 200.806 cv 480.905 198.847 460.743 200.524 442.818 199.966 cv 443.366 182.566 446.654 160.689 448.699 141.992 cv 487.068 141.992 525.437 141.992 563.805 141.992 cv 566.031 227.583 540.949 288.54 465.503 293.227 cv 383.741 298.306 324.933 258.789 331.072 173.079 cv 333.479 139.475 350.11 109.482 372.242 88.2202 cv 395.704 65.6802 423.245 53.4082 463.823 51.2515 cv 486.571 50.0425 506.556 52.5078 529.357 52.9321 cv cp ef 700.757 102.503 mo 706.651 102.24 717.717 103.394 723.441 105.864 cv 764.906 123.76 753.499 212.87 715.04 232.733 cv 698.574 241.237 670.881 240.173 657.906 227.691 cv 630.34 201.173 644.736 133.127 668.829 113.426 cv 676.364 107.264 686.892 103.122 700.757 102.503 cv cp 1 /0 /CSD get_res sepcs 0 sep ef 1130.93 176.44 mo 1141.86 176.44 1152.78 176.44 1163.7 176.44 cv 1162.72 183.024 1160.48 188.339 1159.5 194.925 cv 1137.66 194.925 1115.81 194.925 1093.97 194.925 cv 1097.29 175.587 1109.22 166.772 1125.05 153.755 cv 1132.93 147.278 1149.66 138.281 1147.74 127.709 cv 1145.51 115.46 1123.64 121.726 1125.89 135.271 cv 1118.88 133.607 1110.07 133.73 1103.21 131.91 cv 1103.86 97.0156 1174.93 92.6963 1170.42 132.75 cv 1167.96 154.686 1141.5 162.071 1130.93 176.44 cv cp 0.913725 0.807843 0.0470588 0.00392157 cmyk ef 201.683 144.513 mo 192.101 154.255 182.006 163.484 171.436 172.239 cv 180.612 183.507 191.943 192.621 203.363 201.646 cv 203.363 195.765 203.363 189.884 203.363 184.002 cv 217.927 184.002 232.49 184.002 247.053 184.002 cv 247.053 176.72 247.053 169.438 247.053 162.157 cv 232.769 161.598 216.248 163.275 203.363 161.317 cv 202.349 156.169 205.459 146.898 201.683 144.513 cv cp 115.143 162.157 mo 100.58 162.157 86.0166 162.157 71.4531 162.157 cv 71.4531 169.438 71.4531 176.72 71.4531 184.002 cv 85.7383 184.561 102.258 182.884 115.143 184.842 cv 115.143 190.443 115.143 196.044 115.143 201.646 cv 126.515 193.133 135.993 182.728 146.23 173.079 cv 135.66 163.765 126.398 153.143 115.143 144.513 cv 115.143 150.394 115.143 156.275 115.143 162.157 cv cp 224.368 157.116 mo 228.289 157.116 232.21 157.116 236.131 157.116 cv 238.531 141.457 235.604 128.013 236.131 112.585 cv 257.723 131.603 277.22 152.715 298.305 172.239 cv 278.91 193.734 256.226 216.419 236.131 234.413 cv 236.043 218.351 237.443 207.288 236.971 189.884 cv 234.459 188.193 229.044 189.408 225.208 189.043 cv 216.002 214.026 199.332 236.146 169.756 239.454 cv 129.191 243.992 105.267 220.015 95.8188 189.043 cv 91.3379 189.043 86.8569 189.043 82.376 189.043 cv 81.9224 206.733 83.1875 218.077 83.2158 234.413 cv 61.1343 218.305 41.0952 192.759 18.5215 173.919 cv 28.3745 163.109 39.7305 152.71 50.4487 141.992 cv 60.8799 131.561 71.8979 120.709 83.2158 113.426 cv 83.0938 128.673 81.9595 139.498 82.376 156.275 cv 84.918 158.214 91.042 156.572 94.9785 157.116 cv 105.619 128.293 129.846 105.777 163.875 107.544 cv 195.157 109.169 215.628 130.532 224.368 157.116 cv cp ef 115.143 144.513 mo 126.398 153.143 135.66 163.765 146.23 173.079 cv 135.993 182.728 126.515 193.133 115.143 201.646 cv 115.143 196.044 115.143 190.443 115.143 184.842 cv 102.258 182.884 85.7383 184.561 71.4531 184.002 cv 71.4531 176.72 71.4531 169.438 71.4531 162.157 cv 86.0166 162.157 100.58 162.157 115.143 162.157 cv 115.143 156.275 115.143 150.394 115.143 144.513 cv cp 1 /0 /CSD get_res sepcs 0 sep ef 203.363 161.317 mo 216.248 163.275 232.769 161.598 247.053 162.157 cv 247.053 169.438 247.053 176.72 247.053 184.002 cv 232.49 184.002 217.927 184.002 203.363 184.002 cv 203.363 189.884 203.363 195.765 203.363 201.646 cv 191.943 192.621 180.612 183.507 171.436 172.239 cv 182.006 163.484 192.101 154.255 201.683 144.513 cv 205.459 146.898 202.349 156.169 203.363 161.317 cv cp ef 944.412 184.842 mo 934.158 186.071 924.697 188.093 915.005 189.884 cv 910.76 187.353 909.547 181.295 903.242 178.12 cv 890.315 171.611 866.465 173.664 867.114 187.362 cv 867.627 198.185 887.05 200.011 897.361 203.326 cv 917.988 209.959 937.918 219.014 936.01 243.655 cv 931.887 296.894 824.822 299.207 815.862 246.176 cv 826.02 244.29 836.673 242.9 846.949 241.135 cv 853.258 246.31 853.511 252.416 859.553 256.258 cv 872.965 264.786 904.187 260.636 900.722 243.655 cv 899.216 236.272 883.944 233.566 874.676 230.212 cv 855.318 223.207 831.496 215.83 834.347 188.202 cv 839.043 142.686 937.529 135.568 944.412 184.842 cv cp 0.913725 0.807843 0.0470588 0.00392157 cmyk ef 985.581 245.336 mo 985.816 249.693 988.654 255.782 993.983 257.938 cv 1015.86 266.791 1033.64 242.015 1031.79 221.811 cv 1016.6 226.935 984.439 224.199 985.581 245.336 cv cp 1062.04 281.464 mo 1051.12 281.464 1040.19 281.464 1029.27 281.464 cv 1028.37 277.329 1027.02 273.635 1026.75 268.861 cv 1015.44 281.098 983.789 292.364 965.417 276.423 cv 949.312 262.449 949.42 227.211 968.777 214.249 cv 988.711 200.9 1011.5 208.045 1036.83 200.806 cv 1052.97 172.605 1004.07 167.746 1000.71 189.884 cv 989.543 189.282 979.21 187.853 967.938 187.362 cv 972.732 145.522 1069.04 134.177 1072.96 183.161 cv 1075.64 216.563 1052 247.624 1062.04 281.464 cv cp ef 1031.79 221.811 mo 1033.64 242.015 1015.86 266.791 993.983 257.938 cv 988.654 255.782 985.816 249.693 985.581 245.336 cv 984.439 224.199 1016.6 226.935 1031.79 221.811 cv cp 1 /0 /CSD get_res sepcs 0 sep ef 222.688 231.893 mo 231.385 239.439 237.566 249.501 246.213 257.099 cv 227.463 277.275 197.007 294.853 159.673 294.907 cv 121.828 294.962 91.8438 277.571 72.2935 257.938 cv 73.7607 253.542 78.8462 250.847 84.0562 245.336 cv 86.3252 242.936 92.7925 232.826 94.9785 232.733 cv 95.3335 232.718 115.487 248.393 117.664 249.537 cv 152.141 267.663 200.563 260.887 222.688 231.893 cv cp 0.913725 0.807843 0.0470588 0.00392157 cmyk ef %ADOBeginClientInjection: EndPageContent "AI11EPS" userdict /annotatepage 2 copy known {get exec}{pop pop} ifelse %ADOEndClientInjection: EndPageContent "AI11EPS" % page clip grestore grestore % PSGState Adobe_AGM_Core/AGMCORE_save get restore %%PageTrailer [/EMC AI11_PDFMark5 [/NamespacePop AI11_PDFMark5 [ [/CSA [/0 ]] [/CSD [/0 ]] ] del_res Adobe_AGM_Image/page_trailer get exec Adobe_CoolType_Core/page_trailer get exec Adobe_AGM_Core/page_trailer get exec currentdict Adobe_AGM_Utils eq {end} if %%Trailer Adobe_AGM_Image/doc_trailer get exec Adobe_CoolType_Core/doc_trailer get exec Adobe_AGM_Core/doc_trailer get exec %%EOF %AI9_PrintingDataEnd userdict /AI9_read_buffer 256 string put userdict begin /ai9_skip_data { mark { currentfile AI9_read_buffer { readline } stopped { } { not { exit } if (%AI9_PrivateDataEnd) eq { exit } if } ifelse } loop cleartomark } def end userdict /ai9_skip_data get exec %AI9_PrivateDataBegin %!PS-Adobe-3.0 EPSF-3.0 %%Creator: Adobe Illustrator(R) 10.0 %%AI8_CreatorVersion: 12.0.1 %%For: (stephan heller) (heller & partner) %%Title: (GOsa-logo.eps) %%CreationDate: 09.02.2009 11:32 Uhr %AI9_DataStream %Gb!TMUoC[.;h*"QZ %^W]a#S(S8=b``!BQHSqsac#7srb;"8nuDI=>qDK0H@%a.-fm=!S,FI8J(UG*](YHM:8?r,+5j,YYZDpPWCOEar>]F;^:p]Gd\^C6d_h]4J>I@C=ag %N[M$#NppY/eL]H%).pIM&I1\.ag2V-5MP$OH[pLW]VC(M-["/"qY'@Np$>>Xm3d.jBia,ps"',$R68=^^fh'/687?(`ptXI:oV<- %.Q^IE4"A;/#_(tEC3p3(^>1DZ(9?V2((*.0-P?8UU%@^_ml:W`a`Ir'R/?@:GT`);uTb]Uf+aK\`h2$HZH9:l+B'_f9]D1#AL\/O%c^:]lhkO %Qg+5pT?9S!nsM=>h<9\c[^R9BSBdekp)*L*nRs01MA4$][gTB,J#sFfr$t %&Z5+qr:\^EI7@#F[J#pJjj[dIdHtr2j,^m#%!bM7[HsaFl[^%$8[;H14hIU1k]PVK_l;n>>1sUQTQ[gkhU76^?-)anYRo,g5\$1]ukTXHm3Yb9&oi:1,mS9a[kIqNBn1$nW*(FUtesn %b3=>(jBSMI*hr9^'eV88Y!lhXB?(:S8m$5jl"qi4p=3q]HV<67j1/Y;G(7uYG0tV*07XcV@^+s$mrIi;5PGcaSR/jE?HMP6N*<&] %?%eRgets6dVF[>dCDEA_A)[XQdiuirnn>#J,k5dOnEEQ`8s!/\TMV=nu3HXk,T%YsinX`4X`iQNgd,3a-[\:[ci*rXa.NZ'M.g7\-ROqq$hYIG;N<9=Z;)K9!rj.Y3"+MeFD-&[g.YG,LB^F*l %*p_BIkb1J(]Zj[Yb1t@-9UqGc48WF(8LJYO>AXdi'T-=6F4fVPm\M%L4OlE7TYlEG/uu(["(0ltJjSL"In(cZWuP63[t"EaFQlu4 %fX?%N5B36kI8;M[Fp;)TTbcA(6XtnE[[3VhN-?RQQmQ5@8 %frS%8H/Ql$3/8m*43Z=XV[))R33U]crS!HD:$>Mj/=4@XQICV,PU'I %bP.Z"a-Y)R?FPuI4qiYUC\&I0LA+p;Vu<",1JFdqJ-S6)jh8[`:CcjeG!9WlEK'.bGDBqJn*[;8P.>_g'sQ983fVV]1$i!p,.2.@q@uGP<]tg_!3U*+e:"rtG5j\$4qE%q5gl6.[2=lZ %@D2rWWT:ok^!ACD%!)-G@`!p\bUcKU1[R)HHf*jOqR6%u\_dd,hUCZ)gWOKtmCGA[]j/$6GAWVfF]XIOWS\^+CKe<-C"r8`EsLn" %HYjd(b4OB$e>W!"jm%^N1]$NeIEUZXSNjH+[p:Z=2gVZS06c83qn%h/6-8eTDqCXgXEZ!IqH!%6+5SU3k8F$ %2Tb\tT$lF?D_M.AbkL!?:FDKug"if6%Gm\i^K^&onSGK+k2]Y5B)@Y2Me06+g9J,o9ia3rAhj=1\%9C@s6"8Yg])<+^:IO#iq;;P %F*9h>iJaog8qHDc2?$8oPcuu/f-J$ %g#h=(*om/orV\(c^*gGYmQZ.,mmLQa[jsm73;]2W*=1ZrhQ:tuhnY27mJd+CmVgj!,T<58.gT/)bUi2mm])#e``F&2u3D#Gm;OO<'R'8:Cmd^s+*e02? %(Ad&EUYt`,n)gBh000=84F`Cn?8$L!"/uM5'T2pNW_KM&e?1dTs(IlVcr&gdK=B)$O5=R@nDTeM"rMTmR.K>kZgARBrpe8!DqA&b %o]GV+Va'&k=1EY_YI\"EhX)6boA>[PZJEh*h[K$*N'Eu(ItX0DdR$Nh--ou1rEVVS^MFh%qt,B?Frroo[_(G7]\[.?UdbTbT4c>/ %:WrIf4`i3AVNS?Wljg1IUXH\XaJT3d,D6.B+trmq`:1!aL=F!8\nbQQ=8/s^>i0R]>jU`1C\*e*P5>3peXMc'J!=7UZccqO(uRWW %affOEF8=bX5KhQ+94$u\k=71cUlU<%57`OqO\m=g@EaAiGUsj7l#n3l$iZK$jo5Q9h-L'Q0-#tdZ5N"pMtq;I(IJB[YcGHeOdGAs %r:K=;HESEeIZ0T15$unhl\F<^W_B"4f??u@p8>m[ro7KhfFiYhA_F^946IYgeAl0@oC4PqZ(q6.bNceAo>%rO4D%/l^@lh?@aAquhKM(V?6tfIrAsal`ldi2QfC=gH"B\?DVONHmH5hl^A3&H]Y%G7B:"P<@fN9o9VrW[Xs,*'29G1;lK2u- %dj4D5)qGcnC4CN8f^G0O[_^bNbQ#_$[_#c"r,j."fMLtEJXW_3ZVUElFF(a*(N].]Kam;CDP,]t@IjWd@^kK$`f`t95_+Ph$q9H( %13quE2pLc#-Ro"3>lUY$2G0bM4l5&_2jjVeT)hS;fuu?ViGNX^\"*+:=XR[Fm'j=ODDMBLk?kI!`>,j3?dRg9!"9PXT#=q^Kd?JHnaO$p7)80ec"=RTt'(!_eo<U.J4dkZ`=83EjiPoNUE%!BrBQn@C"EYii%l!R3STc*\$Q_Id,t+pSXP/U$j8s3E:@]Wq*cq.RVpgaG9=cZ:>:% %aWHg^H7pYZ=q@I4<.Bt]h6BW1bZM\__f`_O4nV*CK2p6gWG&XNrkurG?sChI%]*s-k7Q %Nlg5Q(sWW%3@&5elS56''g,<>ff9!W3+E*@SJE$G"od.os'/&NHX#iGtMli612_r=&C'40QqrRTF^U>cCoaJi1-$;l3k@H#3 %2cmIZiKgN7Z`pudBM>PGG(_T4D`6@9lnhEuBcDS.i@XYgDQnDhoB\Z@iF]I2O(c@:,oA;)lb23?T;LDI>C.d`r&!MY0Y;a@<3:AO %?=T/U"!Q*rL'_J5OR2!>=eK&oOt?(/@9th'`Q`.@i5;=C!rC)`n+\$aqKfDo^qC$0Cj3GBhp+-X8X3n7 %'GKnYE!JE37C1d0Bp>MEk3Eaeet*hO'+6-ukO^G'q].%t[o_V_Q4``iEKfl11$@SCqb)kGH`/4(%*+7@7:s4NT>YA8e"0R,oNnQR %I(!kh=:`i.5/"tlI']>m\_etgc$Zo\KlbW-Z&eOhXo$]T/M1V)LZQn2S`"p;F8K[1D)q<8VgL1tG5TS%.C]_M]'A-_:65P6qo-:U %X`5-Nfd)8mBC9p+SDn?o,nDV>^0R?b;^#RYYs9.UJ;bEZClodC!hGQ[YKPUBG=$*D$K)U'Ol[1nqn\F:U>8#k^(72u!N*MrS0,Gt %*HM)aif<=pcjmR7"SIlBQpk>bp>`48C$2HPS*flpFincgCj1*fD;3&AY_-1EqrBquOW@m5;oFkFX6'Ugqg=!.&2@BZK\;p9,j>lr %Ylat^FK]\Psh9L?6a12i2fkTVa[jS,/]8('9^)c92:LDs%3&JaXpM[<4`h)]MRD/X; %GE],>Df9fWoP]g9B(6bKc!%2D7=U>mA[M:#QW(Fr:Uo82N:0%[Sp[aMrI)3Ilp%k&pd%5qe):#5"nLDK,;]+S1Hnl8IUXcW$="9] %I=4,%qXP9q9?]?:ld\N9L%^WRk9"#9?oP0o+$ckW8GVj`\FkhonA?YKpu0^EIi@.&rpoEP]B".r %gt4ZSpJ&1K`m/-uh\,he??/6pg@D6boB0J,.U2JgY[;U;GWt-NV5nFik3?qlkV)OA"&J3:?0'_*AmCb0f"63-Nf2[.H;up\[\Yc3 %m5V4'rkKU&09)-RNNI?RIYoq=^f+?BLa;3I]VH'#uQHU-[6tB"UcH?P.)*:T7P@V(2K2(nT1HYR_>+L7N"6m'p"WY`V=]p_i %T"2cT>U%a.9oAoR>1-kr>[\:Mfs*D*pY`BuAVglaI$A::\4G"#F!]D-jH-:ENnpaU@;8J6j%WPF2rgjM]Ke-/Y:JRn"b3VUaNU"a %bBYI([fZNoXN6PEMl]1aDPeE:BpqDb=L]e#TSkNTikUL/P@L-4N7/2u/5eQQr:*2E=D(`S7PRan`[,o%,Aj88$KSCubn::o>ZMSm %S/6304s/J#[:=e,9;Z$HLQqS?OK!g$KGp4F2eOF;?S/#Q=M]o!t0pT,q=Um,Qiamsljs.;pRi/R6 %(s_9c=d]@K+sBK>/IbnKELB+tKlLU(@%lchW>fWg]X:"#SL%pg?ml,b(HEaEZ_PWnKK?Tj<*E+lV^];1d9,%k?"l5%3[eg`-LbbT %4t[3oXiMJ!b6aoL/EM$TQiRk1r^7=ERmEV\OAQjPR\R-eat:3%3>Ut7?T+3]c@ok?8%bF)=J3bZ#)Xt6$?e;VWp'[;PCe@m!Z@)k %>)\@dQsl3A+I[@8go>.mh,MU*%bks) %jeZ'?k,_H5!77Z!C7;0rniU^@LXd^pHjD3B"C=!Z]H9Cm1[-m1FEc0$r(71(qidEZ+["Ead] %Um?b%!?"NCse3Z//+fb3dF9=A6$OpWN/*AYY+;3k5Ijh!DqMP^@@ %=pe#g*V9GEa/,cN3*$#)Ar2'jgC1eS#P9V=-+)_E,#+K"c"tXRE*60J_6OLs%OsMuZDL]R.UaAf!Y8=#P-cQ\$ljCej]i0%PLaC) %<_X(iUC0d*<_#f7FQb'%A5gjf$q,mdZHY_k+JQd!+Faa;?I['f6IPS %(RUWmU+D/C]%6lY:fCPL-*#j5i"f8/"cHf^J*Ah@AtuLX\+&ec'^Q,9+9VBI7%.891pqou=/b8sPPG&"2`*()M0['oT^TCFgJ1'P %'APGcH4BV:dnO!Pp3"mi$2Sa`I5M-0gJN=".r?t?lD,@c)k!W6!,`D/o.jn47'J&#iQ\2FWu:oA^`)VZn>UOjkXPlBZ44I6'&Wu/ %@pDur2XkMJBRs)Q%EF2il]d]<"+d;9&,XuVPuW&d`jm('6"qGF:6um#3JX]/-Mkk'O>Jh,a`/!N^Ht\MG_8Nn[)/Z8)-c%41*cr; %?uomcbOYH"Xq4(S<[/HH7aUF)+:Z-'*V9HV0g5;bbTtT8&P1%_MTatHCZ<&\>9=9LJCr7XeaNoG:3$-=R]7&RF=fCL,96CZ'siZ8 %2usXO*J+q5#q]7,SO]W#$(f'iCpF`kBbC=^4UnO;;:@dp@IB!YKG?ean2gVh=UfdA>W.8r,fr[SJ[Y]=6L7$>i\ZN0C)pFpU4+8j %L.aHt<>m!N>n,g(dgHGt3k-+cjiEW.Ia3iJ6>-V$![j*6" %ZJC&;9t;K92Vi*h3>8,A=qD9`g=Vm7B3*1KE,^F#07[M+`Ei+%4]gb\[9QrpiG+j!k^,DaG^l`:f8ur %e&Er0!jcUb#^5G:@QiX0@C:QI%6^h3\mqr!:obJ/t-%_4HE,2#;6Hj:nGHe&73NA^_"FTIB[G%IM,cmpD]EjF9Ze1:8D&]-o7F*K$"IO!NiaT6Xk1S8X\"JZ\DK$er3`_Ku^8,.8)+: %g8q$bBC21OGmt!DQAM]hEBZ@GZ$^1@8(`QUWJZX+(G&uD"=G?s#s)lSd1Z72+^6[h-gq65$:r"U.W:M++@$RCP#5#`XBnq8U*`,]-Z/GGrM?8'>,P;>02iIgjh[*1 %Tk9g'Ck3nTDk81(/]E"Vh?oYoUd6Nr&lmiqG#_0j=m$JQZs>G@7!MTTQ<6YB6^[M;-+K[Y$Dqd$)b>*DRM/o2.]:6&9dR$oJ:J6[ %\_577M[WgiatT@k/!c&]9RuV3=uMSX(.H(u7u(me+'M@Whl>")2DEq0@2i*Q=ogPeaq5rQ%nWRMVQLBU*8kpNd)$5J %(H:O^,$0p25QlEFL_:b44?HiVV)JetY1X,54KB'[70+r9OqY>ln-iH._i_RRBXj6H&o0e1i]aZk:8E_?bN9NtOltGcQ;T"aD3[FM %"n:2`H]^?5GI+mJALLtVA91>j\Za"j&$&,,Gg%$*\udl7DIWQ]7O7dd7;HTdf\i+-@:]=.S00pQ+cQ(e'E+/3H];oo1ZoI`gs?fO %B/$//:0eaT10A4d$bfd'T1H'gR*LMf,&>)B_>L6HGDT@0CF/p!j!H$:-_7QeFN-J7h8?rd5"-$,Qs7V'\*A9mDTs5?$&QI5: %`=CJ,.bYTnUmBj[AaQIMcXAdc\V'&Ek5\5B?c77;W\Pe/1YkjSiCR=@3EjZO/=i8MZ3dp4(j!8W3/:,&SSA-KgB(FDDZkds'B[">)]5qj %fdYu.RmS&6-ppPbQ3V#hdmglp8a-u;&,'4.NqFUcc7ki292>p>3_CiKd>Jj8Tf4TXc^Hn&0'KgZWg&H6>aEm(16LLW=B^o]4bQfa %Gd+Dq'e++@$Xo0L=]e^_]!.D8X8#*jK9>``I:^FYEb&:ZN#"?^7F4T)1g3cd9pn"MU;/J)+Eg_61HD*:dqBdO]#7W%uZ[r_R`pHqA'e/@TC(Feecm>,=TMCYSbq4@hm-W*AaX:`[[]Kh))487Ot]OSMmG. %`[\^CicI5DN8(Y`^$/G6_.4D?lWBE6/;?YEk0_=tU]MX;dmra"Oh-&'FM@F,.&1?%G#g(P<;b?/.+fmjFt"Zu*[^Qc^cWeD8IlKVOk-0kUC81,lFRC65MZeF"H#AnEr3L/]1\:55D %)73qUqacje<%O;GiZtOU*ueZm./>SF1sG71$kXe!o=5N]&lD>]/JAHD\R6s;OYa3a*Amq"=W#LCp.aJp($0te6RYnUKZ5$R!HD0Q %\s1S3"@`tZSA;R""8k$b0Z!#&m3m!C'cpl(%_EoT@_oE)LTIbU %f^Q[74Of?2r<W;63R3]sd0*c6Z;i5$:VjK(+!d0rf6,=eN7dgFCCDF]fk[IDNpFu1!Vi.Zr6Z(o+po>9ER0m`1'*_qFp %R'C/Hi%QuI09)O%L'Op@iGA:,fVakTYgIi,#&T&[:WSEiALbQ&W %-]W7FC!ErPA_D^thMRd8W?eMg^ni`S3IBggl=C03FHoWQjJHK"4G$P!J@Xg6l$^K,f3?uFh"a0 %qL=JQ'V;>1F:t+WL?Gn*6eq1,2f]lX5;j"4QQq:4n\aY5Tlt\O*BbJTO3o2-mIi:&pN`#h!`Ngrk"-eOQ&md&72,F:Ok-Md0r %7^)^H5F:j,n;"pCs%<=iG.(L2gX48`p:3cU4&iP7__8[n-\Q[?osRG8+4i`^"^O7dP:&$@:.P=#4O.qm~> %AI9_PrivateDataEnd gosa-core-2.7.4/contrib/gosa.conf0000644000175000017500000003313311537613506015311 0ustar mikemike{literal}{/literal}
    gosa-core-2.7.4/contrib/latex2html0000755000175000017500000221031210441304026015504 0ustar mikemike#! /usr/bin/perl # # $Id: latex2html.pin,v 1.71 2004/01/06 23:49:54 RRM Exp $ # # Comprises patches and revisions by various authors: # See Changes, the log file of LaTeX2HTML. # # Original Copyright notice: # # LaTeX2HTML by Nikos Drakos # **************************************************************** # LaTeX To HTML Translation ************************************** # **************************************************************** # LaTeX2HTML is a Perl program that translates LaTeX source # files into HTML (HyperText Markup Language). For each source # file given as an argument the translator will create a # directory containing the corresponding HTML files. # # The man page for this program is included at the end of this file # and can be viewed using "perldoc latex2html" # # For more information on this program and some examples of its # capabilities visit # # http://www.latex2html.org/ # # or see the accompanying documentation in the docs/ directory # # or # # http://www-texdev.ics.mq.edu.au/l2h/docs/manual/ # # or # # http://www.cbl.leeds.ac.uk/nikos/tex2html/doc/latex2html/ # # Original code written by Nikos Drakos, July 1993. # # Address: Computer Based Learning Unit # University of Leeds # Leeds, LS2 9JT # # Copyright (c) 1993-95. All rights reserved. # # # Extensively modified by Ross Moore, Herb Swan and others # # Address: Mathematics Department # Macquarie University # Sydney, Australia, 2109 # # Copyright (c) 1996-2001. All rights reserved. # # See general license in the LICENSE file. # ########################################################################## use 5.003; # refuse to work with old and buggy perl version #use strict; #use diagnostics; # include some perl packages; these come with the standard distribution use Getopt::Long; use Fcntl; use AnyDBM_File; # The following are global variables that also appear in some modules use vars qw($LATEX2HTMLDIR $LATEX2HTMLPLATDIR $SCRIPT %Month %used_icons $inside_tabbing $TABLE_attribs %mathentities $date_name $outer_math $TABLE__CELLPADDING_rx); BEGIN { # print "scanning for l2hdir\n"; if($ENV{'LATEX2HTMLDIR'}) { $LATEX2HTMLDIR = $ENV{'LATEX2HTMLDIR'}; } else { $ENV{'LATEX2HTMLDIR'} = $LATEX2HTMLDIR = '/usr/share/latex2html'; } if($ENV{'LATEX2HTMLPLATDIR'}) { $LATEX2HTMLPLATDIR = $ENV{'LATEX2HTMLPLATDIR'}; } else { $LATEX2HTMLPLATDIR = '/usr/share/latex2html'||$LATEX2HTMLDIR; $ENV{'LATEX2HTMLPLATDIR'} = $LATEX2HTMLPLATDIR; } if(-d $LATEX2HTMLPLATDIR) { push(@INC,$LATEX2HTMLPLATDIR); } if(-d $LATEX2HTMLDIR) { push(@INC,$LATEX2HTMLDIR); } else { die qq{Fatal: Directory "$LATEX2HTMLDIR" does not exist.\n}; } } use L2hos; # Operating system dependent routines # $^W = 1; # turn on warnings my $RELEASE = '2002-2-1'; my ($REVISION) = q$Revision: 1.71 $ =~ /:\s*(\S+)/; # The key, which delimts expressions defined in the environment # depends on the operating system. $envkey = L2hos->pathd(); # $dd is the directory delimiter character $dd = L2hos->dd(); # make sure the $LATEX2HTMLDIR is on the search-path for forked processes if($ENV{'PERL5LIB'}) { $ENV{'PERL5LIB'} .= "$envkey$LATEX2HTMLDIR" unless($ENV{'PERL5LIB'} =~ m|\Q$LATEX2HTMLDIR\E|o); } else { $ENV{'PERL5LIB'} = $LATEX2HTMLDIR; } # Local configuration, read at runtime # Read the $CONFIG_FILE (usually l2hconf.pm ) if($ENV{'L2HCONFIG'}) { require $ENV{'L2HCONFIG'} || die "Fatal (require $ENV{'L2HCONFIG'}): $!"; } else { eval 'use l2hconf'; if($@) { die "Fatal (use l2hconf): $@\n"; } } # MRO: Changed this to global value in config/config.pl # change these whenever you do a patch to this program and then # name the resulting patch file accordingly # $TVERSION = "2002-2-1"; #$TPATCHLEVEL = " beta"; #$TPATCHLEVEL = " release"; #$RELDATE = "(March 30, 1999)"; #$TEX2HTMLV_SHORT = $TVERSION . $TPATCHLEVEL; $TEX2HTMLV_SHORT = $RELEASE; $TEX2HTMLVERSION = "$TEX2HTMLV_SHORT ($REVISION)"; $TEX2HTMLADDRESS = "http://www.latex2html.org/"; $AUTHORADDRESS = "http://cbl.leeds.ac.uk/nikos/personal.html"; #$AUTHORADDRESS2 = "http://www-math.mpce.mq.edu.au/%7Eross/"; $AUTHORADDRESS2 = "http://www.maths.mq.edu.au/~ross/"; # Set $HOME to what the system considers the home directory $HOME = L2hos->home(); push(@INC,$HOME); # flush stdout with every print -- gives better feedback during # long computations $| = 1; # set Perl's subscript separator to LaTeX's illegal character. # (quite defensive but why not) $; = "\000"; # No arguments!! unless(@ARGV) { die "Error: No files to process!\n"; } # Image prefix $IMAGE_PREFIX = '_image'; # Partition prefix $PARTITION_PREFIX = 'part_' unless $PARTITION_PREFIX; # Author address @address_data = &address_data('ISO'); $ADDRESS = "$address_data[0]\n$address_data[1]"; # ensure non-zero defaults $MAX_SPLIT_DEPTH = 4 unless ($MAX_SPLIT_DEPTH); $MAX_LINK_DEPTH = 4 unless ($MAX_LINK_DEPTH); $TOC_DEPTH = 4 unless ($TOC_DEPTH); # A global value may already be set in the $CONFIG_FILE $INIT_FILE_NAME = $ENV{'L2HINIT_NAME'} || '.latex2html-init' unless $INIT_FILE_NAME; # Read the $HOME/$INIT_FILE_NAME if one is found if (-f "$HOME$dd$INIT_FILE_NAME" && -r _) { print "Note: Loading $HOME$dd$INIT_FILE_NAME\n"; require("$HOME$dd$INIT_FILE_NAME"); $INIT_FILE = "$HOME$dd$INIT_FILE_NAME"; # _MRO_TODO_: Introduce a version to be checked? die "Error: You have an out-of-date " . $HOME . "$dd$INIT_FILE_NAME file.\nPlease update or delete it.\n" if ($DESTDIR eq '.'); } # Read the $INIT_FILE_NAME file if one is found in current directory if ( L2hos->Cwd() ne $HOME && -f ".$dd$INIT_FILE_NAME" && -r _) { print "Note: Loading .$dd$INIT_FILE_NAME\n"; require(".$dd$INIT_FILE_NAME"); $INIT_FILE = "$INIT_FILE_NAME"; } die "Error: '.' is an incorrect setting for DESTDIR.\n" . "Please check your $INIT_FILE_NAME file.\n" if ($DESTDIR eq '.'); # User home substitutions $LATEX2HTMLSTYLES =~ s/~([$dd$dd$envkey]|$)/$HOME$1/go; # the next line fails utterly on non-UNIX systems $LATEX2HTMLSTYLES =~ s/~([^$dd$dd$envkey]+)/L2hos->home($1)/geo; #absolutise the paths $LATEX2HTMLSTYLES = join($envkey, map(L2hos->Make_directory_absolute($_), split(/$envkey/o, $LATEX2HTMLSTYLES))); #HWS: That was the last reference to HOME. Now set HOME to $LATEX2HTMLDIR, # to enable dvips to see that version of .dvipsrc! But only if we # have DVIPS_MODE not set - yes - this is a horrible nasty kludge # MRO: The file has to be updated by configure _MRO_TODO_ if ($PK_GENERATION && ! $DVIPS_MODE) { $ENV{HOME} = $LATEX2HTMLDIR; delete $ENV{PRINTER}; # Overrides .dvipsrc } # language of the DTD specified in the tag $ISO_LANGUAGE = 'EN' unless $ISO_LANGUAGE; # Save the command line arguments, quote where necessary $argv = join(' ', map {/[\s#*!\$%]/ ? "'$_'" : $_ } @ARGV); # Pre-process the command line for backward compatibility foreach(@ARGV) { s/^--?no_/-no/; # replace e.g. no_fork by nofork # s/^[+](\d+)$/$1/; # remove + in front of integers } # Process command line options my %opt; unless(GetOptions(\%opt, # all non-linked options go into %opt # option linkage (optional) 'help|h', 'version|V', 'split=s', 'link=s', 'toc_depth=i', \$TOC_DEPTH, 'toc_stars!', \$TOC_STARS, 'short_extn!', \$SHORTEXTN, 'iso_language=s', \$ISO_LANGUAGE, 'validate!', \$HTML_VALIDATE, 'latex!', 'djgpp!', \$DJGPP, 'fork!', \$CAN_FORK, 'external_images!', \$EXTERNAL_IMAGES, 'ascii_mode!', \$ASCII_MODE, 'lcase_tags!', \$LOWER_CASE_TAGS, 'ps_images!', \$PS_IMAGES, 'font_size=s', \$FONT_SIZE, 'tex_defs!', \$TEXDEFS, 'navigation!', 'top_navigation!', \$TOP_NAVIGATION, 'bottom_navigation!', \$BOTTOM_NAVIGATION, 'auto_navigation!', \$AUTO_NAVIGATION, 'index_in_navigation!', \$INDEX_IN_NAVIGATION, 'contents_in_navigation!', \$CONTENTS_IN_NAVIGATION, 'next_page_in_navigation!', \$NEXT_PAGE_IN_NAVIGATION, 'previous_page_in_navigation!', \$PREVIOUS_PAGE_IN_NAVIGATION, 'footnode!', 'numbered_footnotes!', \$NUMBERED_FOOTNOTES, 'prefix=s', \$PREFIX, 'auto_prefix!', \$AUTO_PREFIX, 'long_titles=i', \$LONG_TITLES, 'custom_titles!', \$CUSTOM_TITLES, 'title|t=s', \$TITLE, 'rooted!', \$ROOTED, 'rootdir=s', 'dir=s', \$FIXEDDIR, 'mkdir', \$MKDIR, 'address=s', \$ADDRESS, 'noaddress', 'subdir!', 'info=s', \$INFO, 'noinfo', 'auto_link!', 'reuse=i', \$REUSE, 'noreuse', 'antialias_text!', \$ANTI_ALIAS_TEXT, 'antialias!', \$ANTI_ALIAS, 'transparent!', \$TRANSPARENT_FIGURES, 'white!', \$WHITE_BACKGROUND, 'discard!', \$DISCARD_PS, 'image_type=s', \$IMAGE_TYPE, 'images!', 'accent_images=s', \$ACCENT_IMAGES, 'noaccent_images', 'style=s', \$STYLESHEET, 'parbox_images!', 'math!', 'math_parsing!', 'latin!', 'entities!', \$USE_ENTITY_NAMES, 'local_icons!', \$LOCAL_ICONS, 'scalable_fonts!', \$SCALABLE_FONTS, 'images_only!', \$IMAGES_ONLY, 'show_section_numbers!',\$SHOW_SECTION_NUMBERS, 'show_init!', \$SHOW_INIT_FILE, 'init_file=s', \$INIT_FILE, 'up_url=s', \$EXTERNAL_UP_LINK, 'up_title=s', \$EXTERNAL_UP_TITLE, 'down_url=s', \$EXTERNAL_DOWN_LINK, 'down_title=s', \$EXTERNAL_DOWN_TITLE, 'prev_url=s', \$EXTERNAL_PREV_LINK, 'prev_title=s', \$EXTERNAL_PREV_TITLE, 'index=s', \$EXTERNAL_INDEX, 'biblio=s', \$EXTERNAL_BIBLIO, 'contents=s', \$EXTERNAL_CONTENTS, 'external_file=s', \$EXTERNAL_FILE, 'short_index!', \$SHORT_INDEX, 'unsegment!', \$UNSEGMENT, 'debug!', \$DEBUG, 'tmp=s', \$TMP, 'ldump!', \$LATEX_DUMP, 'timing!', \$TIMING, 'verbosity=i', \$VERBOSITY, 'html_version=s', \$HTML_VERSION, 'strict!', \$STRICT_HTML, 'xbit!', \$XBIT_HACK, 'ssi!', \$ALLOW_SSI, 'php!', \$ALLOW_PHP, 'test_mode!' # undocumented switch )) { &usage(); exit 1; } # interpret options, check option consistency if(defined $opt{'split'}) { if ($opt{'split'} =~ /^(\+?)(\d+)$/) { $MAX_SPLIT_DEPTH = $2; if ($1) { $MAX_SPLIT_DEPTH *= -1; $REL_DEPTH = 1; } } else { &usage; die "Error: Unrecognised value for -split: $opt{'split'}\n"; } } if(defined $opt{'link'}) { if ($opt{'link'} =~ /^(\+?)(\d+)$/) { $MAX_LINK_DEPTH = $2; if ($1) { $MAX_LINK_DEPTH *= -1 } } else { &usage; die "Error: Unrecognised value for -link: $opt{'link'}\n"; } } unless ($ISO_LANGUAGE =~ /^[A-Z.]+$/) { die "Error: Language (-iso_language) must be uppercase and dots only: $ISO_LANGUAGE\n"; } if ($HTML_VALIDATE && !$HTML_VALIDATOR) { die "Error: Need a HTML_VALIDATOR when -validate is specified.\n"; } &set_if_false($NOLATEX,$opt{latex}); # negate the option... if ($ASCII_MODE || $PS_IMAGES) { $EXTERNAL_IMAGES = 1; } if ($FONT_SIZE && $FONT_SIZE !~ /^\d+pt$/) { die "Error: Font size (-font_size) must end with 'pt': $FONT_SIZE\n" } &set_if_false($NO_NAVIGATION,$opt{navigation}); &set_if_false($NO_FOOTNODE,$opt{footnode}); if (defined $TITLE && !length($TITLE)) { die "Error: Empty title (-title).\n"; } if ($opt{rootdir}) { $ROOTED = 1; $FIXEDDIR = $opt{rootdir}; } if ($FIXEDDIR && !-d $FIXEDDIR) { if ($MKDIR) { print "\n *** creating directory: $FIXEDDIR "; die "Failed: $!\n" unless (mkdir($FIXEDDIR, 0755)); # _TODO_ use File::Path to create a series of directories } else { &usage; die "Error: Specified directory (-rootdir, -dir) does not exist.\n"; } } &set_if_false($NO_SUBDIR, $opt{subdir}); &set_if_false($NO_AUTO_LINK, $opt{auto_link}); if ($opt{noreuse}) { $REUSE = 0; } unless(grep(/^\Q$IMAGE_TYPE\E$/o, @IMAGE_TYPES)) { die <<"EOF"; Error: No such image type '$IMAGE_TYPE'. This installation supports (first is default): @IMAGE_TYPES EOF } &set_if_false($NO_IMAGES, $opt{images}); if ($opt{noaccent_images}) { $ACCENT_IMAGES = ''; } if($opt{noaddress}) { $ADDRESS = ''; } if($opt{noinfo}) { $INFO = 0; } if($ACCENT_IMAGES && $ACCENT_IMAGES !~ /^[a-zA-Z,]+$/) { die "Error: Single word or comma-list of style words needed for -accent_images, not: $_\n"; } &set_if_false($NO_PARBOX_IMAGES, $opt{parbox_images}); &set_if_false($NO_SIMPLE_MATH, $opt{math}); if (defined $opt{math_parsing}) { $NO_MATH_PARSING = !$opt{math_parsing}; $NO_SIMPLE_MATH = !$opt{math_parsing} unless(defined $opt{math}); } &set_if_false($NO_ISOLATIN, $opt{latin}); if ($INIT_FILE) { if (-f $INIT_FILE && -r _) { print "Note: Initialising with file: $INIT_FILE\n" if ($DEBUG || $VERBOSITY); require($INIT_FILE); } else { die "Error: Could not find file (-init_file): $INIT_FILE\n"; } } foreach($EXTERNAL_UP_LINK, $EXTERNAL_DOWN_LINK, $EXTERNAL_PREV_LINK, $EXTERNAL_INDEX, $EXTERNAL_BIBLIO, $EXTERNAL_CONTENTS) { $_ ||= ''; # initialize s/~/~/g; # protect `~' } if($TMP && !(-d $TMP && -w _)) { die "Error: '$TMP' not usable as temporary directory.\n"; } if ($opt{help}) { L2hos->perldoc($SCRIPT); exit 0; } if ($opt{version}) { &banner(); exit 0; } if ($opt{test_mode}) { return; # make /usr/bin/latex2html non-exploitable $TITLE = 'LaTeX2HTML Test Document'; $TEXEXPAND = "$PERL /build/buildd/latex2html-2002-2-1-20050114${dd}texexpand"; $PSTOIMG = "$PERL /build/buildd/latex2html-2002-2-1-20050114${dd}pstoimg"; $ICONSERVER = L2hos->path2URL("/build/buildd/latex2html-2002-2-1-20050114${dd}icons"); $TEST_MODE = 1; $RGBCOLORFILE = "/build/buildd/latex2html-2002-2-1-20050114${dd}styles${dd}rgb.txt"; $CRAYOLAFILE = "/build/buildd/latex2html-2002-2-1-20050114${dd}styles${dd}crayola.txt"; } if($DEBUG) { # make the OS-dependent functions more chatty, too $L2hos::Verbose = 1; } undef %opt; # not needed any more $FIXEDDIR = $FIXEDDIR || $DESTDIR || ''; # for backward compatibility if ($EXTERNAL_UP_TITLE xor $EXTERNAL_UP_LINK) { warn "Warning (-up_url, -up_title): Need to specify both a parent URL and a parent title!\n"; $EXTERNAL_UP_TITLE = $EXTERNAL_UP_LINK = ""; } if ($EXTERNAL_DOWN_TITLE xor $EXTERNAL_DOWN_LINK) { warn "Warning (-down_url, -down_title): Need to specify both a parent URL and a parent title!\n"; $EXTERNAL_DOWN_TITLE = $EXTERNAL_DOWN_LINK = ""; } # $NO_NAVIGATION = 1 unless $MAX_SPLIT_DEPTH; # Martin Wilck if ($MAX_SPLIT_DEPTH && $MAX_SPLIT_DEPTH < 0) { $MAX_SPLIT_DEPTH *= -1; $REL_DEPTH = 1; } if ($MAX_LINK_DEPTH && $MAX_LINK_DEPTH < 0) { $MAX_LINK_DEPTH *= -1; $LEAF_LINKS = 1; } $FOOT_FILENAME = 'footnode' unless ($FOOT_FILENAME); $NO_FOOTNODE = 1 unless ($MAX_SPLIT_DEPTH || $NO_FOOTNODE); $NO_SPLIT = 1 unless $MAX_SPLIT_DEPTH; # _MRO_TODO_: is this needed at all? $SEGMENT = $SEGMENTED = 0; $NO_MATH_MARKUP = 1; # specify the filename extension to use with the generated HTML files if ($SHORTEXTN) { $EXTN = ".htm"; } # for HTML files on CDROM elsif ($ALLOW_PHP) { $EXTN = ".php"; } # has PHP dynamic includes # with server-side includes (SSI) : elsif ($ALLOW_SSI && !$XBIT_HACK) { $EXTN = ".shtml"; } # ordinary names, valid also for SSI with XBit hack : else { $EXTN = ".html"; } $NODE_NAME = 'node' unless (defined $NODE_NAME); # space for temporary files # different to the $TMPDIR for image-generation # MRO: No directory should end with $dd! $TMP_ = "TMP"; $TMP_PREFIX = "l2h" unless ($TMP_PREFIX); # This can be set to 1 when using a version of dvips that is safe # from the "dot-in-name" bug. # _TODO_ this should be determined by configure $DVIPS_SAFE = 1; $CHARSET = $charset || 'iso-8859-1'; #################################################################### # # If possible, use icons of the same type as generated images # if ($IMAGE_TYPE && defined %{"icons_$IMAGE_TYPE"}) { %icons = %{"icons_$IMAGE_TYPE"}; } #################################################################### # # Figure out what options we need to pass to DVIPS and store that in # the $DVIPSOPT variable. Also, scaling is taken care of at the # dvips level if PK_GENERATION is set to 1, so adjust SCALE_FACTORs # accordingly. # if ($SCALABLE_FONTS) { $PK_GENERATION = 0; $DVIPS_MODE = ''; } if ($PK_GENERATION) { if ($MATH_SCALE_FACTOR <= 0) { $MATH_SCALE_FACTOR = 2; } if ($FIGURE_SCALE_FACTOR <= 0) { $FIGURE_SCALE_FACTOR = 2; } my $saveMSF = $MATH_SCALE_FACTOR; my $saveFSF = $FIGURE_SCALE_FACTOR; my $desired_dpi = int($MATH_SCALE_FACTOR*75); $FIGURE_SCALE_FACTOR = ($METAFONT_DPI / 72) * ($FIGURE_SCALE_FACTOR / $MATH_SCALE_FACTOR) ; $MATH_SCALE_FACTOR = $METAFONT_DPI / 72; $dvi_mag = int(1000 * $desired_dpi / $METAFONT_DPI); if ($dvi_mag > 1000) { &write_warnings( "WARNING: Your SCALE FACTOR is too large for PK_GENERATION.\n" . " See $CONFIG_FILE for more information.\n"); } # RRM: over-sized scaling, using dvi-magnification if ($EXTRA_IMAGE_SCALE) { print "\n *** Images at $EXTRA_IMAGE_SCALE times resolution of displayed size ***\n"; $desired_dpi = int($EXTRA_IMAGE_SCALE * $desired_dpi+.5); print " desired_dpi = $desired_dpi METAFONT_DPI = $METAFONT_DPI\n" if $DEBUG; $dvi_mag = int(1000 * $desired_dpi / $METAFONT_DPI); $MATH_SCALE_FACTOR = $saveMSF; $FIGURE_SCALE_FACTOR = $saveFSF; } # no space after "-y", "-D", "-e" --- required by DVIPS under DOS ! my $mode_switch = "-mode $DVIPS_MODE" if $DVIPS_MODE; $DVIPSOPT .= " -y$dvi_mag -D$METAFONT_DPI $mode_switch -e5 "; } else { # no PK_GENERATION # if ($EXTRA_IMAGE_SCALE) { # &write_warnings( # "the \$EXTRA_IMAGE_SCALE feature requires either \$PK_GENERATION=1" # . " or the '-scalable_fonts' option"); # $EXTRA_IMAGE_SCALE = ''; # } # MRO: shifted to l2hconf #$DVIPSOPT .= ' -M'; } # end PK_GENERATION # The mapping from numbers to accents. # These are required to process the \accent command, which is found in # tables of contents whenever there is an accented character in a # caption or section title. Processing the \accent command makes # $encoded_*_number work properly (see &extract_captions) with # captions that contain accented characters. # I got the numbers from the plain.tex file, version 3.141. # Missing entries should be looked up by a native speaker. # Have a look at generate_accent_commands and $iso_8859_1_character_map. # MEH: added more accent types # MRO: only uppercase needed! %accent_type = ( '18' => 'grave', # \` '19' => 'acute', # `' '20' => 'caron', # \v '21' => 'breve', # \u '22' => 'macr', # \= '23' => 'ring', # '24' => 'cedil', # \c '94' => 'circ', # \^ '95' => 'dot', # \. '7D' => 'dblac', # \H '7E' => 'tilde', # \~ '7F' => 'uml', # \" ); &driver; exit 0; # clean exit, no errors ############################ Subroutines ################################## #check that $TMP is writable, if so create a subdirectory sub make_tmp_dir { &close_dbm_database if $DJGPP; # to save file-handles # determine a suitable temporary path # $TMPDIR = ''; my @tmp_try = (); push(@tmp_try, $TMP) if($TMP); push(@tmp_try, "$DESTDIR$dd$TMP_") if($TMP_); push(@tmp_try, $DESTDIR) if($DESTDIR); push(@tmp_try, L2hos->Cwd()); my $try; TempTry: foreach $try (@tmp_try) { next unless(-d $try && -w _); my $tmp = "$try$dd$TMP_PREFIX$$"; if(mkdir($tmp,0755)) { $TMPDIR=$tmp; last TempTry; } else { warn "Warning: Cannot create temporary directory '$tmp': $!\n"; } } $dvips_warning = <<"EOF"; Warning: There is a '.' in \$TMPDIR, $DVIPS will probably fail. Set \$TMP to use a /tmp directory, or rename the working directory. EOF die ($dvips_warning . "\n\$TMPDIR=$TMPDIR ***\n\n") if ($TMPDIR =~ /\./ && $DVIPS =~ /dvips/ && !$DVIPS_SAFE); &open_dbm_database if $DJGPP; } # MRO: set first parameter to the opposite of the second if second parameter is defined sub set_if_false { $_[0] = !$_[1] if(defined $_[1]); } sub check_for_dots { local($file) = @_; if ($file =~ /\.[^.]*\./ && !$DVIPS_SAFE) { die "\n\n\n *** Fatal Error --- but easy to fix ***\n" . "\nCannot have '.' in file-name prefix, else dvips fails on images" . "\nChange the name from $file and try again.\n\n"; } } # Process each file ... sub driver { local($FILE, $orig_cwd, %unknown_commands, %dependent, %depends_on , %styleID, %env_style, $bbl_cnt, $dbg, %numbered_section); # MRO: $texfilepath has to be global! local(%styles_loaded); $orig_cwd = L2hos->Cwd(); print "\n *** initialise *** " if ($VERBOSITY > 1); &initialise; # Initialise some global variables print "\n *** check modes *** " if ($VERBOSITY > 1); &ascii_mode if $ASCII_MODE; # Must come after initialization &titles_language($TITLES_LANGUAGE); &make_numbered_footnotes if ($NUMBERED_FOOTNOTES); $dbg = $DEBUG ? "-debug" : ""; $dbg .= (($VERBOSITY>2) ? " -verbose" : ""); #use the same hashes for all files in a batch local(%cached_env_img, %id_map, %symbolic_labels, %latex_labels) if ($FIXEDDIR && $NO_SUBDIR); local($MULTIPLE_FILES,$THIS_FILE); $MULTIPLE_FILES = 1+$#ARGV if $ROOTED; print "\n *** $MULTIPLE_FILES file".($MULTIPLE_FILES ? 's: ' : ': ') . join(',',@ARGV) . " *** " if ($VERBOSITY > 1); local(%section_info, %toc_section_info, %cite_info, %ref_files); foreach $FILE (@ARGV) { &check_for_dots($FILE) unless $DVIPS_SAFE; ++$THIS_FILE if $MULTIPLE_FILES; do { %section_info = (); %toc_section_info = (); %cite_info = (); %ref_files = (); } unless $MULTIPLE_FILES; local($bbl_nr) = 1; # The number of reused images and those in images.tex local($global_page_num) = (0) unless($FIXEDDIR && $NO_SUBDIR); # The number of images in images.tex local($new_page_num) = (0); # unless($FIXEDDIR && $NO_SUBDIR); local($pid, $sections_rx, , $outermost_level, %latex_body, $latex_body , %encoded_section_number , %verbatim, %new_command, %new_environment , %provide_command, %renew_command, %new_theorem , $preamble, $aux_preamble, $prelatex, @preamble); # must retain these when all files are in the same directory # else the images.pl and labels.pl files get clobbered unless ($FIXEDDIR && $NO_SUBDIR) { print "\nResetting image-cache" if ($#ARGV); local(%cached_env_img, %id_map, %symbolic_labels, %latex_labels) } ## AYS: Allow extension other than .tex and make it optional ($EXT = $FILE) =~ s/.*\.([^\.]*)$/$1/; if ( $EXT eq $FILE ) { $EXT = "tex"; $FILE =~ s/$/.tex/; } #RRM: allow user-customisation, dependent on file-name # e.g. add directories to $TEXINPUTS named for the file # --- idea due to Fred Drake &custom_driver_hook($FILE) if (defined &custom_driver_hook); # JCL(jcl-dir) # We need absolute paths for TEXINPUTS here, because # we change the directory if ($orig_cwd eq $texfilepath) { &deal_with_texinputs($orig_cwd); } else { &deal_with_texinputs($orig_cwd, $texfilepath); } ($texfilepath, $FILE) = &get_full_path($FILE); $texfilepath = '.' unless($texfilepath); die "Cannot read $texfilepath$dd$FILE \n" unless (-f "$texfilepath$dd$FILE"); # Tell texexpand which files we *don't* want to look at. $ENV{'TEXE_DONT_INCLUDE'} = $DONT_INCLUDE if $DONT_INCLUDE; # Tell texexpand which files we *do* want to look at, e.g. # home-brew style files $ENV{'TEXE_DO_INCLUDE'} = $DO_INCLUDE if $DO_INCLUDE; $FILE =~ s/\.[^\.]*$//; ## AYS $DESTDIR = ''; # start at empty if ($FIXEDDIR) { $DESTDIR = $FIXEDDIR unless ($FIXEDDIR eq '.'); if (($ROOTED)&&!($texfilepath eq $orig_cwd)) { $DESTDIR .= $dd . $FILE unless $NO_SUBDIR; }; } elsif ($texfilepath eq $orig_cwd) { $DESTDIR = ($NO_SUBDIR ? '.' : $FILE); } else { $DESTDIR = $ROOTED ? '.' : $texfilepath; $DESTDIR .= $dd . $FILE unless $NO_SUBDIR; } $PREFIX = "$FILE-" if $AUTO_PREFIX; print "\nOPENING $texfilepath$dd$FILE.$EXT \n"; ## AYS next unless (&new_dir($DESTDIR,'')); # establish absolute path to $DESTDIR $DESTDIR = L2hos->Make_directory_absolute($DESTDIR); &make_tmp_dir; print "\nNote: Working directory is $DESTDIR\n"; print "Note: Images will be generated in $TMPDIR\n\n"; # Need to clean up a bit in case there's garbage left # from former runs. if ($DESTDIR) { chdir($DESTDIR) || die "$!\n"; } if (opendir (TMP,$TMP_)) { foreach (readdir TMP) { L2hos->Unlink("TMP_$dd$_") unless (/^\.\.?$/); } closedir TMP; } &cleanup(1); unless(-d $TMP_) { mkdir($TMP_, 0755) || die "Cannot create directory '$TMP_': $!\n"; } chdir($orig_cwd); # RRM 14/5/98 moved this to occur earlier ## JCL(jcl-dir) ## We need absolute paths for TEXINPUTS here, because ## we change the directory # if ($orig_cwd eq $texfilepath) { # &deal_with_texinputs($orig_cwd); # } else { # &deal_with_texinputs($orig_cwd, $texfilepath); # } # This needs $DESTDIR to have been created ... print " *** calling `texexpand' ***" if ($VERBOSITY > 1); local($unseg) = ($UNSEGMENT ? "-unsegment " : ""); # does DOS need to check these here ? # die "File $TEXEXPAND does not exist or is not executable\n" # unless (-x $TEXEXPAND); L2hos->syswait("$TEXEXPAND $dbg -auto_exclude $unseg" . "-save_styles $DESTDIR$dd$TMP_${dd}styles " . ($TEXINPUTS ? "-texinputs $TEXINPUTS " : '' ) . (($VERBOSITY >2) ? "-verbose " : '' ) . "-out $DESTDIR$dd$TMP_$dd$FILE " . "$texfilepath$dd$FILE.$EXT") && die " texexpand failed: $!\n"; print STDOUT "\n *** `texexpand' done ***\n" if ($VERBOSITY > 1); chdir($DESTDIR) if $DESTDIR; $SIG{'INT'} = 'handler'; &open_dbm_database; &initialise_sections; print STDOUT "\n *** database open ***\n" if ($VERBOSITY > 1); if ($IMAGES_ONLY) { &make_off_line_images; } else { &rename_image_files; &load_style_file_translations; &make_language_rx; &make_raw_arg_cmd_rx; # &make_isolatin1_rx unless ($NO_ISOLATIN); &translate_titles; &make_sections_rx; print "\nReading ..."; if ($SHORT_FILENAME) { L2hos->Rename ("$TMP_$dd$FILE" ,"$TMP_$dd$SHORT_FILENAME" ); &slurp_input_and_partition_and_pre_process( "$TMP_$dd$SHORT_FILENAME"); } else { &slurp_input_and_partition_and_pre_process("$TMP_$dd$FILE"); } &add_preamble_head; # Create a regular expressions &set_depth_levels; &make_sections_rx; &make_order_sensitive_rx; &add_document_info_page if ($INFO && !(/\\htmlinfo/)); &add_bbl_and_idx_dummy_commands; &translate; # Destructive! } &style_sheet; &close_dbm_database; &cleanup(); #JCL: read warnings from file to $warnings local($warnings) = &get_warnings; print "\n\n*********** WARNINGS *********** \n$warnings" if ($warnings || $NO_IMAGES || $IMAGES_ONLY); &image_cache_message if ($NO_IMAGES || $IMAGES_ONLY); &image_message if ($warnings =~ /Failed to convert/io); undef $warnings; # JCL - generate directory index entry. # Yet, a hard link, cause Perl lacks symlink() on some systems. do { local($EXTN) = $EXTN; $EXTN =~ s/_\w+(\.html?)/$1/ if ($frame_main_name); local($from,$to) = (eval($LINKPOINT),eval($LINKNAME)); if (length($from) && length($to) && ($from ne $to)) { #frames may have altered $EXTN $from =~ s/$frame_main_name(\.html?)/$1/ if ($frame_main_name); $to =~ s/$frame_main_name(\.html?)/$1/ if ($frame_main_name); L2hos->Unlink($to); L2hos->Link($from,$to); } } unless ($NO_AUTO_LINK || !($LINKPOINT) || !($LINKNAME)); &html_validate if ($HTML_VALIDATE && $HTML_VALIDATOR); # Go back to the source directory chdir($orig_cwd); $TEST_MODE = $DESTDIR if($TEST_MODE); # save path $DESTDIR = ''; $OUT_NODE = 0 unless $FIXEDDIR; $STYLESHEET = '' if ($STYLESHEET =~ /^\Q$FILE./); } print "\nUnknown commands: ". join(" ",keys %unknown_commands) if %unknown_commands; ###MEH -- math support print "\nMath commands outside math: " . join(" ",keys %commands_outside_math) . "\n Output may look weird or may be faulty!\n" if %commands_outside_math; print "\nDone.\n"; if($TEST_MODE) { $TEST_MODE =~ s:[$dd$dd]+$::; print "\nTo view the results, point your browser at:\n", L2hos->path2URL(L2hos->Make_directory_absolute($TEST_MODE).$dd. "index$EXTN"),"\n"; } $end_time = time; $total_time = $end_time - $start_time; print STDOUT join(' ',"Timing:",$total_time,"seconds\n") if ($TIMING||$DEBUG||($VERBOSITY > 2)); $_; } sub open_dbm_database { # These are DBM (unix DataBase Management) arrays which are actually # stored in external files. They are used for communication between # the main process and forked child processes; print STDOUT "\n"; # this mysteriously prevents a core dump ! dbmopen(%verb, "$TMP_${dd}verb",0755); # dbmopen(%verbatim, "$TMP_${dd}verbatim",0755); dbmopen(%verb_delim, "$TMP_${dd}verb_delim",0755); dbmopen(%expanded,"$TMP_${dd}expanded",0755); # Holds max_id, verb_counter, verbatim_counter, eqn_number dbmopen(%global, "$TMP_${dd}global",0755); # Hold style sheet information dbmopen(%env_style, "$TMP_${dd}envstyles",0755); dbmopen(%txt_style, "$TMP_${dd}txtstyles",0755); dbmopen(%styleID, "$TMP_${dd}styleIDs",0755); # These next two are used during off-line image conversion # %new_id_map maps image id's to page_numbers of the images in images.tex # %image_params maps image_ids to conversion parameters for that image dbmopen(%new_id_map, "$TMP_${dd}ID_MAP",0755); dbmopen(%img_params, "$TMP_${dd}IMG_PARAMS",0755); dbmopen(%orig_name_map, "$TMP_${dd}ORIG_MAP",0755); $global{'max_id'} = ($global{'max_id'} | 0); &read_mydb(\%verbatim, "verbatim"); $global{'verb_counter'} = ($global{'verb_counter'} | 0); $global{'verbatim_counter'} = ($global{'verbatim_counter'} | 0); &read_mydb(\%new_command, "new_command"); &read_mydb(\%renew_command, "renew_command"); &read_mydb(\%provide_command, "provide_command"); &read_mydb(\%new_theorem, "new_theorem"); &read_mydb(\%new_environment, "new_environment"); &read_mydb(\%dependent, "dependent"); # &read_mydb(\%env_style, "env_style"); # &read_mydb(\%styleID, "styleID"); # MRO: Why should we use read_mydb instead of catfile? $preamble = &catfile(&_dbname("preamble"),1) || ''; $prelatex = &catfile(&_dbname("prelatex"),1) || ''; $aux_preamble = &catfile(&_dbname("aux_preamble"),1) || ''; &restore_critical_variables; } sub close_dbm_database { &save_critical_variables; dbmclose(%verb); undef %verb; # dbmclose(%verbatim); undef %verbatim; dbmclose(%verb_delim); undef %verb_delim; dbmclose(%expanded); undef %expanded; dbmclose(%global); undef %global; dbmclose(%env_style); undef %env_style; dbmclose(%style_id); undef %style_id; dbmclose(%new_id_map); undef %new_id_map; dbmclose(%img_params); undef %img_params; dbmclose(%orig_name_map); undef %orig_name_map; dbmclose(%txt_style); undef %txt_style; dbmclose(%styleID); undef %styleID; } sub clear_images_dbm_database { # # %new_id_map will be used by the off-line image conversion process # dbmclose(%new_id_map); dbmclose(%img_params); dbmclose(%orig_name_map); undef %new_id_map; undef %img_params; undef %orig_name_map; dbmopen(%new_id_map, "$TMP_${dd}ID_MAP",0755); dbmopen(%img_params, "$TMP_${dd}IMG_PARAMS",0755); dbmopen(%orig_name_map, "$TMP_${dd}ORIG_MAP",0755); } sub initialise_sections { local($key); foreach $key (keys %numbered_section) { $global{$key} = $numbered_section{$key}} } sub save_critical_variables { $global{'math_markup'} = $NO_MATH_MARKUP; $global{'charset'} = $CHARSET; $global{'charenc'} = $charset; $global{'language'} = $default_language; $global{'isolatin'} = $ISOLATIN_CHARS; $global{'unicode'} = $UNICODE_CHARS; if ($UNFINISHED_ENV) { $global{'unfinished_env'} = $UNFINISHED_ENV; $global{'replace_end_env'} = $REPLACE_END_ENV; } $global{'unfinished_comment'} = $UNFINISHED_COMMENT; if (@UNMATCHED_OPENING) { $global{'unmatched'} = join(',',@UNMATCHED_OPENING); } } sub restore_critical_variables { $NO_MATH_MARKUP = ($global{'math_markup'}| (defined $NO_MATH_MARKUP ? $NO_MATH_MARKUP:1)); $CHARSET = ($global{'charset'}| $CHARSET); $charset = ($global{'charenc'}| $charset); $default_language = ($global{'language'}| (defined $default_language ? $default_language:'english')); $ISOLATIN_CHARS = ($global{'isolatin'}| (defined $ISOLATIN_CHARS ? $ISOLATIN_CHARS:0)); $UNICODE_CHARS = ($global{'unicode'}| (defined $UNICODE_CHARS ? $UNICODE_CHARS:0)); if ($global{'unfinished_env'}) { $UNFINISHED_ENV = $global{'unfinished_env'}; $REPLACE_END_ENV = $global{'replace_end_env'}; } $UNFINISHED_COMMENT = $global{'unfinished_comment'}; if ($global{'unmatched'}) { @UNMATCHED_OPENING = split(',',$global{'unmatched'}); } # undef any renewed-commands... # so the new defs are read from %new_command local($cmd,$key,$code); foreach $key (keys %renew_command) { $cmd = "do_cmd_$key"; $code = "undef \&$cmd"; eval($code) if (defined &$cmd); if ($@) { print "\nundef \&do_cmd_$cmd failed"} } } #JCL: The warnings should have been handled within the DBM database. # Unfortunately if the contents of an array are more than ~900 (system # dependent) chars long then dbm cannot handle it and gives error messages. sub write_warnings { #clean my ($str) = @_; $str .= "\n" unless($str =~ /\n$/); print STDOUT "\n *** Warning: $str" if ($VERBOSITY > 1); my $warnings = ''; if(-f 'WARNINGS') { $warnings = &catfile('WARNINGS') || ''; } return () if ($warnings =~ /\Q$str\E/); if(open(OUT,">>WARNINGS")) { print OUT $str; close OUT; } else { print "\nError: Cannot append to 'WARNINGS': $!\n"; } } sub get_warnings { return &catfile('WARNINGS',1) || ''; } # MRO: Standardizing sub catfile { my ($file,$ignore) = @_; unless(open(CATFILE,"<$file")) { print "\nError: Cannot read '$file': $!\n" unless($ignore); return undef; } local($/) = undef; # slurp in whole file my $contents = ; close(CATFILE); $contents; } sub html_validate { my ($extn) = $EXTN; if ($EXTN !~ /^\.html?$/i) { $extn =~ s/^[^\.]*(\.html?)$/$1/; } print "\n *** Validating ***\n"; my @htmls = glob("*$extn"); my $file; foreach $file (@htmls) { system("$HTML_VALIDATOR $file"); } } sub lost_argument { local($cmd) = @_; &write_warnings("\nincomplete argument to command: \\$cmd"); } # These subroutines should have been handled within the DBM database. # Unfortunately if the contents of an array are more than ~900 (system # dependent) chars long then dbm cannot handle it and gives error messages. # So here we save and then read the contents explicitly. sub write_mydb { my ($db, $key, $str) = @_; &write_mydb_simple($db, "\n$mydb_mark#$key#$str"); } # generate the DB file name from the DB name sub _dbname { "$TMP_$dd$_[0]"; } sub write_mydb_simple { my ($db, $str) = @_; my $file = &_dbname($db); if(open(DB,">>$file")) { print DB $str; close DB; } else { print "\nError: Cannot append to '$file': $!\n"; } } sub clear_mydb { my ($db) = @_; my $file = &_dbname($db); if(open(DB,">$file")) { close DB; } else { print "\nError: Cannot clear '$file': $!\n"; } } # Assumes the existence of a DB file which contains # sequences of e.g. verbatim counters and verbatim contents. sub read_mydb { my ($dbref,$name) = @_; my $contents = &catfile(&_dbname($name),1); return '' unless(defined $contents); my @tmp = split(/\n$mydb_mark#([^#]*)#/, $contents); my $i = 1; # Ignore the first element at 0 print "\nDBM: $name open..." if ($VERBOSITY > 2); while ($i < scalar(@tmp)) { my $tmp1 = $tmp[$i]; my $tmp2 = $tmp[++$i]; $$dbref{$tmp1} = defined $tmp2 ? $tmp2 : ''; ++$i; }; $contents; } # Reads in a latex generated file (e.g. .bbl or .aux) # It returns success or failure # ****** and binds $_ in the caller as a side-effect ****** sub process_ext_file { local($ext) = @_; local($found, $extfile,$dum,$texpath); $extfile = $EXTERNAL_FILE||$FILE; local($file) = &fulltexpath("$extfile.$ext"); $found = 0; &write_warnings( "\n$extfile.$EXT is newer than $extfile.$ext: Please rerun latex" . ## AYS (($ext =~ /bbl/) ? " and bibtex.\n" : ".\n")) if ( ($found = (-f $file)) && &newer(&fulltexpath("$extfile.$EXT"), $file)); ## AYS if ((!$found)&&($extfile =~ /\.$EXT$/)) { $file = &fulltexpath("$extfile"); &write_warnings( "\n$extfile is newer than $extfile: Please rerun latex" . ## AYS (($ext =~ /bbl/) ? " and bibtex.\n" : ".\n")) if ( ($found = (-f $file)) && &newer(&fulltexpath("$extfile"), $file)); ## AYS } # check in other directories on the $TEXINPUTS paths if (!$found) { foreach $texpath (split /$envkey/, $TEXINPUTS ) { $file = "$texpath$dd$extfile.$ext"; last if ($found = (-f $file)); } } if ( $found ) { print "\nReading $ext file: $file ..."; # must allow @ within control-sequence names $dum = &do_cmd_makeatletter(); &slurp_input($file); if ($ext =~ /bbl/) { # remove the \newcommand{\etalchar}{...} since not needed s/^\\newcommand{\\etalchar}[^\n\r]*[\n\r]+//s; } &pre_process; &substitute_meta_cmds if (%new_command || %new_environment); if ($ext eq "aux") { my $latex_pathname = L2hos->path2latex($file); $aux_preamble .= "\\AtBeginDocument{\\makeatletter\n\\input $latex_pathname\n\\makeatother\n}\n"; local(@extlines) = split ("\n", $_); print " translating ".(0+@extlines). " lines " if ($VERBOSITY >1); local($eline,$skip_to); #$_ = ''; foreach $eline (@extlines) { if ($skip_to) { next unless ($eline =~ s/$O$skip_to$C//) } $skip_to = ''; # skip lines added for pdfTeX/hyperref compatibility next if ($eline =~ /^\\(ifx|else|fi|global \\let|gdef|AtEndDocument|let )/); # remove \index and \label commands, else invalid links may result $eline =~ s/\\(index|label)\s*($O\d+$C).*\2//g; if ($eline =~ /\\(old)?contentsline/) { do { local($_,$save_AUX) = ($eline,$AUX_FILE); $AUX_FILE = 0; &wrap_shorthand_environments; #footnote markers upset the numbering s/\\footnote(mark|text)?//g; $eline = &translate_environments($_); $AUX_FILE = $save_AUX; undef $_ }; } elsif ($eline =~ s/^\\\@input//) { &do_cmd__at_input($eline); $eline = ''; } elsif ($eline =~ s/^\\\@setckpt$O(\d+)$C//) { $skip_to = $1; next; } # $eline =~ s/$image_mark#([^#]+)#/print "\nIMAGE:",$img_params{$1},"\n";''/e; # $_ .= &translate_commands(&translate_environments($eline)); $_ .= &translate_commands($eline) if $eline; } undef @extlines; } elsif ($ext =~ /$caption_suffixes/) { local(@extlines) = split ("\n", $_); print " translating ".(0+@extlines). " lines "if ($VERBOSITY >1); local($eline); $_ = ''; foreach $eline (@extlines) { # remove \index and \label commands, else invalid links may result $eline =~ s/\\(index|label)\s*($O\d+$C).*\2//gso; if ($eline =~ /\\(old)?contentsline/) { do { local($_,$save_PREAMBLE) = ($eline,$PREAMBLE); $PREAMBLE = 0; &wrap_shorthand_environments; $eline = &translate_environments($_); $PREAMBLE = $save_PREAMBLE; undef $_ }; } $_ .= &translate_commands($eline); } undef @extlines; } else { print " wrapping " if ($VERBOSITY >1); &wrap_shorthand_environments; $_ = &translate_commands(&translate_environments($_)); print " translating " if ($VERBOSITY >1); } print "\n processed size: ".length($_)."\n" if($VERBOSITY>1); $dum = &do_cmd_makeatother(); } else { print "\n*** Could not find file: $file ***\n" if ($DEBUG) }; $found; } sub deal_with_texinputs { # The dot precedes all, this let's local files override always. # The dirs we want are given as parameter list. if(!$TEXINPUTS) { $TEXINPUTS = '.' } elsif ($TEXINPUTS =~ /^$envkey/) { $TEXINPUTS = '.'.$TEXINPUTS }; if ($ROOTED) {$TEXINPUTS .= "$envkey$FIXEDDIR"} $TEXINPUTS = &absolutize_path($TEXINPUTS); $ENV{'TEXINPUTS'} = join($envkey,".",@_,$TEXINPUTS,$ENV{'TEXINPUTS'}); } # provided by Fred Drake sub absolutize_path { my ($path) = @_; my $npath = ''; foreach $dir (split /$envkey/o, $path) { $npath .= L2hos->Make_directory_absolute($dir) . $envkey; } $npath =~ s/$envkey$//; $npath; } sub add_document_info_page { # Uses $outermost_level # Nasty race conditions if the next two are done in parallel local($X) = ++$global{'max_id'}; local($Y) = ++$global{'max_id'}; ###MEH -- changed for math support: no underscores in commandnames $_ = join('', $_ , (($MAX_SPLIT_DEPTH <= $section_commands{$outermost_level})? "\n
    \n" : '') , "\\$outermost_level", "*" , "$O$X$C$O$Y$C\\infopagename$O$Y$C$O$X$C\n", , " \\textohtmlinfopage"); } # For each style file name in TMP_styles (generated by texexpand) look for a # perl file in $LATEX2HTMLDIR/styles and load it. sub load_style_file_translations { local($_, $style, $options, $dir); print "\n"; if ($TEXDEFS) { foreach $dir (split(/$envkey/,$LATEX2HTMLSTYLES)) { if (-f ($_ = "$dir${dd}texdefs.perl")) { print "\nLoading $_..."; require ($_); $styles_loaded{'texdefs'} = 1; last; } } } # packages automatically implemented local($auto_styles) = $AUTO_STYLES; $auto_styles .= 'array|' if ($HTML_VERSION > 3.1); $auto_styles .= 'tabularx|' if ($HTML_VERSION > 3.1); $auto_styles .= 'theorem|'; # these are not packages, but can appear as if class-options $auto_styles .= 'psamsfonts|'; $auto_styles .= 'noamsfonts|'; $auto_styles =~ s/\|$//; if(open(STYLES, "<$TMP_${dd}styles")) { while() { if(s/^\s*(\S+)\s*(.*)$/$style = $1; $options = $2;/eo) { &do_require_package($style); $_ = $DONT_INCLUDE; s/:/|/g; &write_warnings("No implementation found for style \`$style\'\n") unless ($styles_loaded{$style} || $style =~ /^($_)$/ || $style =~ /$auto_styles/); # MRO: Process options for packages &do_package_options($style,$options) if($options); } } close(STYLES); } else { print "\nError: Cannot read '$TMP_${dd}styles': $!\n"; } } ################## Weird Special case ################## # The new texexpand can be told to leave in \input and \include # commands which contain code that the translator should simply pass # to latex, such as the psfig stuff. These should still be seen by # TeX, so we add them to the preamble ... sub do_include_lines { while (s/$include_line_rx//o) { local($include_line) = &revert_to_raw_tex($&); &add_to_preamble ('include', $include_line); } } ########################## Preprocessing ############################ # JCL(jcl-verb) # The \verb declaration and the verbatim environment contain simulated # typed text and should not be processed. Characters such as $,\,{,and } # loose their special meanings and should not be considered when marking # brackets etc. To achieve this \verb declarations and the contents of # verbatim environments are replaced by markers. At the end the original # text is put back into the document. # The markers for verb and verbatim are different so that these commands # can be restored to what the raw input was just in case they need to # be passed to latex. sub pre_process { # Modifies $_; #JKR: We need support for some special environments. # This has to be here, because they might contain # structuring commands like \section etc. local(%comments); &pre_pre_process if (defined &pre_pre_process); s/\\\\/\\\\ /go; # Makes it unnecessary to look for escaped cmds &replace_html_special_chars; # Remove fake environment which should be invisible to LaTeX2HTML. s/\001//m; s/[%]end\s*{latexonly}/\001/gom; s/[%]begin\s*{latexonly}([^\001]*)\001/%/gos; s/\001//m; &preprocess_alltt if defined(&preprocess_alltt); $KEEP_FILE_MARKERS = 1; if ($KEEP_FILE_MARKERS) { # if (s/%%% TEXEXPAND: \w+ FILE( MARKER)? (\S*).*/ # ''.qq|#$2#|."\n"/em) { # $_ = "#$2#\n". $_ }; #RRM: ignore \n at end of included file, else \par may result if (s/(\n{1,2})?%%% TEXEXPAND: \w+ FILE( MARKER)? (\S*).*\n?/ ($2?$1:"\n").''.qq|#$3#|."\n"/em) { $_ = "#$3#\n". $_ }; } else { s/%%% TEXEXPAND[^\n]*\n//gm; } # Move all LaTeX comments into a local list s/([ \t]*(^|\G|[^\\]))(%.*(\n[ \t]*|$))/print "%"; $comments{++$global{'verbatim_counter'}} = "$3"; &write_mydb("verbatim", $global{'verbatim_counter'}, $3); "$1$comment_mark".$global{'verbatim_counter'}."\n"/mge; # Remove the htmlonly-environment s/\\begin\s*{htmlonly}\s*\n?//gom; s/\\end\s*{htmlonly}\s*\n?//gom; # Remove enviroments which should be invisible to LaTeX2HTML. s/\n[^%\n]*\\end\s*{latexonly}\s*\n?/\001/gom; s/((^|\n)[^%\n]*)\\begin\s*{latexonly}([^\001]*)\001/$1/gom; s/\\end\s*{comment}\s*\n?/\001/gom; s/\\begin\s*{comment}([^\001]*)\001//gom; # this used to be earlier, but that can create problems with comments &wrap_other_environments if (%other_environments); # s/\\\\/\\\\ /go; # Makes it unnecessary to look for escaped cmds local($next, $esc_del); &normalize_language_changes; # Patches by #JKR, #EI#, #JCL(jcl-verb) #protect \verb|\begin/end....| parts, for LaTeX documentation s/(\\verb\*?(.))\\(begin|end)/$1\003$3/g; local(@processedV); local($opt, $style_info,$before, $contents, $after, $env); while (($UNFINISHED_COMMENT)|| (/\\begin\s*($opt_arg_rx)?\s*\{($verbatim_env_rx|$keepcomments_rx)\}/o)) { ($opt, $style_info) = ($1,$2); $before=$contents=$after=$env=''; if ($UNFINISHED_COMMENT) { $UNFINISHED_COMMENT =~ s/([^:]*)::(\d+)/$env=$1;$after=$_; $before = join("",$unfinished_mark,$env,$2,"#");''/e; print "\nfound the lost \\end{$env}\n"; } #RRM: can we avoid copying long strings here ? # maybe this loop can be an s/.../../s with (.*?) # ($before, $after, $env) = ($`, $', $3) unless ($env); if (!($before =~ /\\begin(\s*\[[^\]]*\]\s*)?\{($verbatim_env_rx|$keepcomments_rx)\}/)) { push(@processedV,$before); print "'";$before = ''; } if ($after =~ /\s*\\end{$env[*]?}/) { # Must NOT use the s///o option!!! ($contents, $after) = ($`, $'); $contents =~ s/^\n+/\n/s; # $contents =~ s/\n+$//s; # re-insert comments $contents =~ s/$comment_mark(\d+)\n?/$comments{$1}/g; # $contents =~ s/$comment_mark(\d+)/$verbatim{$1}/g; # revert '\\ ' -> '\\' only once if ($env =~ /rawhtml|$keepcomments_rx/i) { $contents = &revert_to_raw_tex($contents); } else { $contents =~ s/([^\\](?:\\\\)*\\)([$html_escape_chars])/$1.&special($2)/geos; $contents =~ s/\\\\ /\\\\/go; } if ($env =~/$keepcomments_rx/) { $verbatim{++$global{'verbatim_counter'}} = "$contents"; } else { &write_mydb("verbatim", ++$global{'verbatim_counter'}, $contents); } # $verbatim{$global{'verbatim_counter'}} = "$contents" if ($env =~/$keepcomments_rx/); # $verbatim{$global{'verbatim_counter'}} = "$contents"; if ($env =~ /rawhtml|$keepcomments_rx/i) { if ($before) { $after = join("",$verbatim_mark,$env ,$global{'verbatim_counter'},"#",$after); } else { push (@processedV, join("",$verbatim_mark,$env ,$global{'verbatim_counter'},"#")); } } elsif ($env =~ /tex2html_code/) { if ($before) { $after = join("","\\begin", $opt, "\{verbatim_code\}" , $verbatim_mark,$env , $global{'verbatim_counter'},"#" , "\\end\{verbatim_code\}",$after); } else { push (@processedV , join("","\\begin", $opt, "\{verbatim_code\}" , $verbatim_mark,$env , $global{'verbatim_counter'},"#" , "\\end\{verbatim_code\}")); } } else { if ($before) { $after = join("","\\begin", $opt, "\{tex2html_preform\}" , $verbatim_mark,$env , $global{'verbatim_counter'},"#" , "\\end\{tex2html_preform\}",$after); } else { push (@processedV , join("","\\begin", $opt, "\{tex2html_preform\}" , $verbatim_mark,$env , $global{'verbatim_counter'},"#" , "\\end\{tex2html_preform\}" )); } } } else { print "Cannot find \\end{$env}\n"; $after =~ s/$comment_mark(\d+)\n?/$comments{$1}/g; # $after =~ s/$comment_mark(\d+)/$verbatim{$1}/g; if ($env =~ /rawhtml|$keepcomments_rx/i) { $after = &revert_to_raw_tex($contents); } else { $after =~ s/([^\\](?:\\\\)*\\)([$html_escape_chars])/$1.&special($2)/geos; $after =~ s/\\\\ /\\\\/go; } if ($env =~/$keepcomments_rx/) { $verbatim{++$global{'verbatim_counter'}} = "$after"; } else { &write_mydb("verbatim", ++$global{'verbatim_counter'}, $after ); } $after = join("",$unfinished_mark,$env ,$global{'verbatim_counter'},"#"); } $_ = join("",$before,$after); } print STDOUT "\nsensitive environments found: ".(int(0+@processedV/2))." " if((@processedV)&&($VERBOSITY > 1)); $_ = join('',@processedV, $_); undef @processedV; #restore \verb|\begin/end....| parts, for LaTeX documentation # $_ =~ s/(\\verb\W*?)\003(begin|end)/$1\\$2/g; $_ =~ s/(\\verb(;SPM\w+;|\W*?))\003(begin|end)/$1\\$3/g; # Now do the \verb declarations # Patches by: #JKR, #EI#, #JCL(jcl-verb) # Tag \verb command and legal opening delimiter with unique number. # Replace tagged ones and its contents with $verb_mark & id number if the # closing delimiter can be found. After no more \verb's are to tag, revert # tagged one's to the original pattern. local($del,$contents,$verb_rerun); local($id) = $global{'verb_counter'}; # must tag only one alternation per loop ##RRM: can this be speeded up using a list ?? my $vbmark = $verb_mark; while (s/\\verb(\t*\*\t*)(\S)/"$2"/e || s/\\verb()(\;SPM\w+\;|[^a-zA-Z*\s])/"$2"/e || s/\\verb(\t\t*)([^*\s])/"$2"/e) { $del = $2; #RRM: retain knowledge of whether \verb* or \verb $vb_mark = ($1 =~/^\s*\*/? $verbstar_mark : $verb_mark); $esc_del = &escape_rx_chars($del); $esc_del = '' if (length($del) > 2); # try to find closing delimiter and substitute the complete # statement with $verb_mark or $verbstar_mark # s/(]*$id>[\Q$del\E])([^$esc_del\n]*)([\Q$del\E]|$comment_mark(\d+)\n?)/ s/(]*$id>\Q$del\E)([^$esc_del\n]*?)(\Q$del\E|$comment_mark(\d+)\n?)/ $contents=$2; if ($4) { $verb_rerun = 1; join('', "\\verb$del", $contents, $comments{$4}) } else { $contents =~ s|\\\\ |\\\\|g; $contents =~ s|\n| |g; $verb{$id}=$contents; $verb_delim{$id}=$del; join('',$vb_mark,$id,$verb_mark) } /e; } $global{'verb_counter'} = $id; # revert changes to fake verb statements s/]*)\d+>/\\verb$1/g; #JKR: the comments include the linebreak and the following whitespace # s/([^\\]|^)(%.*\n[ \t]*)+/$1/gom; # Remove Comments but not % which may be meaningful s/((^|\n)$comment_mark(\d+))+//gom; # Remove comment markers on new lines, but *not* the trailing \n s/(\\\w+|(\W?))($comment_mark\d*\n?)/($2)? $2.$3:($1? $1.' ':'')/egm; # Remove comment markers, not after braces # s/(\W?)($comment_mark\d*\n?)/($1)? $1.$2:''/egm; # Remove comment markers, not after braces # Remove comment markers, but *not* the trailing \n # HWS: Correctly remove multiple %%'s. # s/\\%/\002/gm; # s/(%.*\n[ \t]*)//gm; s/(%[^\n]*\n)[ \t]*/$comment_mark\n/gm; s/\002/\\%/gm; local($tmp1,$tmp2); s/^$unfinished_mark$keepcomments_rx(\d+)#\n?$verbatim_mark$keepcomments_rx(\d+)#/ $verbatim{$4}."\n\\end{$1}"/egm; # Raw TeX s/$verbatim_mark$keepcomments_rx(\d+)#/ $tmp1 = $1; $tmp2 = &protect_after_comments($verbatim{$2}); $tmp2 =~ s!\n$!!s; join ('', "\\begin{$tmp1}" , $tmp2 , "\n\\end{$tmp1}" )/egm; # Raw TeX s/$unfinished_mark$keepcomments_rx(\d+)#/$UNFINISHED_COMMENT="$1::$2"; "\\begin{$1}\n".$verbatim{$2}/egm; # Raw TeX $KEEP_FILE_MARKERS = 1; if ($KEEP_FILE_MARKERS) { s/%%% TEXEXPAND: \w+ FILE( MARKER) (\S*).*\n/ ''.qq|#.$2#\n|/gem; } else { s/%%% TEXEXPAND[^\n]*\n//gm; } &mark_string($_); # attempt to remove the \html \latex and \latexhtml commands s/\\latex\s*($O\d+$C)(.*)\1//gm; s/\\latexhtml\s*($O\d+$C)(.*)\1\s*($O\d+$C)(.*)\3/$4/sg; s/\\html\s*($O\d+$C)(.*)\1/$2/sg; s/\\html\s*($O\d+$C)//gm; # &make_unique($_); } # RRM: When comments are retained, then ensure that they are benign # by removing \s and escaping braces, # so that environments/bracing cannot become unbalanced. sub protect_after_comments { my ($verb_text) = @_; # $verb_text =~ s/\%(.*)/'%'.&protect_helper($1)/eg; $verb_text =~ s/(^|[^\\])(\\\\)*\%(.*)/$1.$2.'%'.&protect_helper($3)/emg; $verb_text; } sub protect_helper { my ($text) = @_; $text =~ s/\\/ /g; $text =~ s/(\{|\})/\\$1/g; $text; } sub make_comment { local($type,$_) = @_; $_ =~ s/\\(index|label)\s*(($O|$OP)\d+($C|$CP)).*\2//sg; $_ = &revert_to_raw_tex($_); s/^\n+//m; $_ =~ s/\\(index|label)\s*\{.*\}//sg; s/\-\-/- -/g; s/\-\-/- -/g; # cannot have -- inside a comment $_ = join('', '" ); $verbatim{++$global{'verbatim_counter'}} = $_; &write_mydb('verbatim', $global{'verbatim_counter'}, $_ ); join('', $verbatim_mark, 'verbatim' , $global{'verbatim_counter'},'#') } sub wrap_other_environments { local($key, $env, $start, $end, $opt_env, $opt_start); foreach $key (keys %other_environments) { # skip bogus entries next unless ($env = $other_environments{$key}); $key =~ s/:/($start,$end)=($`,$');':'/e; if (($end =~ /^\#$/m) && ($start =~ /^\#/m)) { # catch Indica pre-processor language switches $opt_start = $'; if ($env =~ s/\[(\w*)\]//o) { $opt_env = join('','[', ($1 ? $1 : $opt_start ), ']'); } local($next); while ($_ =~ /$start\b/) { push(@pre_wrapped, $`, "\\begin\{pre_$env\}", $opt_env ); $_=$'; if (/(\n*)$end/) { push(@pre_wrapped, $`.$1,"\\end\{pre_$env\}$1"); $_ = $'; if (!(s/^N(IL)?//o)) {$_ = '#'.$_ } } else { print "\n *** unclosed $start...$end chunk ***\n"; last; } } $_ = join('', @pre_wrapped, $_); undef @pre_wrapped; } elsif (($end=~/^\n$/) && ($start =~ /^\#/)) { # catch ITRANS pre-processor language info; $env = 'nowrap'; local($ilang) = $start; $ilang =~ s/^\#//m; s/$start\s*\=([^<\n%]*)\s*($comment_mark\d*|\n|%)/\\begin\{tex2html_$env\}\\ITRANSinfo\{$ilang\}\{$1\}\n\\end\{tex2html_$env\}$2/g; } elsif (!$end &&($start =~ /^\#/m)) { # catch Indica pre-processor input-mode switches s/$start(.*)\n/\\begin\{tex2html_$env\}$&\\end\{tex2html_$env\}\n/g; } elsif (($start eq $end)&&(length($start) == 1)) { $start =~ s/(\W)/\\$1/; $end = $start; s/([^$end])$start([^$end]+)$end/$1\\begin\{pre_$env\}$2\\end\{pre_$env\}/mg; } elsif ($start eq $end) { if (!($start =~ /\#\#/)) { $start =~ s/(\W)/\\$1/g; $end = $start; } local (@pre_wrapped); local($opt); $opt = '[indian]' if ($start =~ /^\#\#$/m); while ($_ =~ /$start/s) { push(@pre_wrapped, $` , "\\begin\{pre_$env\}$opt"); $_=$'; if (/$end/s) { push(@pre_wrapped, $`, "\\end\{pre_$env\}"); $_ = $'; } else { print "\n *** unclosed $start...$end chunk ***\n"; last; } } $_ = join('', @pre_wrapped, $_); undef @pre_wrapped; } elsif ($start && ($env =~ /itrans/)) { # ITRANS is of this form local($indic); if($start =~ /\#(\w+)$/m) {$indic = $1} #include the language-name as an optional parameter s/$start\b/\\begin\{pre_$env\}\[$indic\]/sg; s/$end\b/\\end\{pre_$env\}/sg; } elsif (($start)&&($end)) { s/$start\b/\\begin\{pre_$env\}/sg; s/$end\b/\\end\{pre_$env\}/sg; } } $_; } #################### Marking Matching Brackets ###################### # Reads the entire input file and performs pre_processing operations # on it before returning it as a single string. The pre_processing is # done on separate chunks of the input file by separate Unix processes # as determined by LaTeX \input commands, in order to reduce the memory # requirements of LaTeX2HTML. sub slurp_input_and_partition_and_pre_process { local($file) = @_; local(%string, @files, $pos); local ($count) = 1; unless(open(SINPUT,"<$file")) { die "\nError: Cannot read '$file': $!\n"; } local(@file_string); print STDOUT "$file" if ($VERBOSITY >1); while () { if (/TEXEXPAND: INCLUDED FILE MARKER (\S*)/) { # Forking seems to screw up the rest of the input stream # We save the current position ... $pos = tell SINPUT; print STDOUT " fork at offset $pos " if ($VERBOSITY >1); $string{'STRING'} = join('',@file_string); @file_string = (); &write_string_out($count); delete $string{'STRING'}; # ... so that we can return to it seek(SINPUT, $pos, 0); print STDOUT "\nDoing $1 "; ++$count} else { # $string{'STRING'} .= $_ push(@file_string,$_); } } $string{'STRING'} = join('',@file_string); @file_string = (); &write_string_out($count); delete $string{'STRING'}; close SINPUT; @files = (); if(opendir(DIR, $TMP_)) { @files = sort grep(/^\Q$PARTITION_PREFIX\E\d+/, readdir(DIR)); closedir(DIR); } unless(@files) { die "\nFailed to read in document parts.\n". "Look up section Globbing in the troubleshooting manual.\n"; } $count = 0; foreach $file (@files) { print STDOUT "\nappending file: $TMP_$dd$file " if ($VERBOSITY > 1); $_ .= (&catfile("$TMP_$dd$file") || ''); print STDOUT "\ntotal length: ".length($_)." characters\n" if ($VERBOSITY > 1); } die "\nFailed to read in document parts (out of memory?).\n" unless length($_); print STDOUT "\ntotal length: ".length($_)." characters\n" if ($VERBOSITY > 1); } sub write_string_out { local($count) = @_; if ($count < 10) {$count = '00'.$count} elsif ($count < 100) {$count = '0'.$count} local($pid); # All open unflushed streams are inherited by the child. If this is # not set then the parent will *not* wait $| = 1; # fork returns 0 to the child and PID to the parent &write_mydb_simple("prelatex", $prelatex); &close_dbm_database; unless ($CAN_FORK) { &do_write_string_out; } else { unless ($pid = fork) { &do_write_string_out; exit 0; }; waitpid($pid,0); } &open_dbm_database; } sub do_write_string_out { local($_); close (SINPUT) if($CAN_FORK); &open_dbm_database; $_ = delete $string{'STRING'}; # locate blank-lines, for paragraphs. # Replace verbatim environments etc. &pre_process; # locate the blank lines for \par s &substitute_pars; # Handle newcommand, newenvironment, newcounter ... &substitute_meta_cmds; &wrap_shorthand_environments; print STDOUT "\n *** End-of-partition ***" if ($VERBOSITY > 1); if(open(OUT, ">$TMP_$dd$PARTITION_PREFIX$count")) { print OUT $_; close(OUT); } else { print "\nError: Cannot write '$TMP_$dd$PARTITION_PREFIX$count': $!\n"; } print STDOUT $_ if ($VERBOSITY > 9); $preamble = join("\n",$preamble,@preamble); # undef @preamble; &write_mydb_simple("preamble", $preamble); # this was done earlier; it should not be repeated #&write_mydb_simple("prelatex", $prelatex); &write_mydb_simple("aux_preamble", $aux_preamble); &close_dbm_database; } # Reads the entire input file into a # single string. sub slurp_input { local($file) = @_; local(%string); if(open(INPUT,"<$file")) { local(@file_string); while () { push(@file_string, $_ ); } $string{'STRING'} = join('',@file_string); close INPUT; undef @file_string; } else { print "\nError: Cannot read '$file': $!\n"; } $_ = delete $string{'STRING'}; # Blow it away and return the result } # MRO: make them more efficient sub special { $html_specials{$_[0]} || $_[0]; } sub special_inv { $html_specials_inv{$_[0]} || $_[0]; } sub special_html { $html_special_entities{$_[0]} || $_[0]; } sub special_html_inv { $html_spec_entities_inv{$_[0]} || $_[0]; } # Mark each matching opening and closing bracket with a unique id. sub mark_string { # local (*_) = @_; # Modifies $_ in the caller; # -> MRO: changed to $_[0] (same effect) # MRO: removed deprecated $*, replaced by option /m $_[0] =~ s/(^|[^\\])\\{/$1tex2html_escaped_opening_bracket/gom; $_[0] =~ s/(^|[^\\])\\{/$1tex2html_escaped_opening_bracket/gom; # repeat this $_[0] =~ s/(^|[^\\])\\}/$1tex2html_escaped_closing_bracket/gom; $_[0] =~ s/(^|[^\\])\\}/$1tex2html_escaped_closing_bracket/gom; # repeat this my $id = $global{'max_id'}; my $prev_id = $id; # mark all balanced braces # MRO: This should in fact mark all of them as the hierarchy is # processed inside-out. 1 while($_[0] =~ s/{([^{}]*)}/join("",$O,++$id,$C,$1,$O,$id,$C)/geo); # What follows seems esoteric... my @processedB = (); # Take one opening brace at a time while ($_[0] =~ /\{/) { my ($before,$after) = ($`,$'); my $change = 0; while (@UNMATCHED_OPENING && $before =~ /\}/) { my $this = pop(@UNMATCHED_OPENING); print "\n *** matching brace \#$this found ***\n"; $before =~ s/\}/join("",$O,$this,$C)/eo; $change = 1; } $_[0] = join('',$before,"\{",$after) if($change); # MRO: mark one opening brace if($_[0] =~ s/^([^{]*){/push(@processedB,$1);join('',$O,++$id,$C)/eos) { $before=''; $after=$'; } if ($after =~ /\}/) { $after =~ s/\}/join("",$O,$id,$C)/eo; $_[0] = join('',$before,$O,$id,$C,$after); } else { print "\n *** opening brace \#$id is unmatched ***\n"; $after =~ /^(.+\n)(.+\n)?/; print " preceding: $after \n"; push (@UNMATCHED_OPENING,$id); } } $_[0] = join('',@processedB,$_[0]); undef(@processedB); print STDOUT "\nInfo: bracketings found: ", $id - $prev_id,"\n" if ($VERBOSITY > 1); # process remaining closing braces while (@UNMATCHED_OPENING && $_[0] =~ /\}/) { my $this = pop(@UNMATCHED_OPENING); print "\n *** matching brace \#$this found ***\n"; $_[0] =~ s/\}/join("",$O,$this,$C)/eo; } while ($_[0] =~ /\}/) { print "\n *** there was an unmatched closing \} "; my ($beforeline,$prevline,$afterline) = ($`, $`.$& , $'); $prevline =~ /\n([^\n]+)\}$/m; if ($1) { print "at the end of:\n" . $1 . "\}\n\n"; } else { $afterline =~ /^([^\n]+)\n/m; if ($1) { print "at the start of:\n\}" . $1 ."\n\n"; } else { $prevline =~ /\n([^\n]+)\n\}$/m; print "on a line by itself after:\n" . $1 . "\n\}\n\n"; } } $_[0] = $beforeline . $afterline; } $global{'max_id'} = $id; # restore escaped braces $_[0] =~ s/tex2html_escaped_opening_bracket/\\{/go; $_[0] =~ s/tex2html_escaped_closing_bracket/\\}/go; } sub replace_html_special_chars { # Replaces html special characters with markers unless preceded by "\" s/([^\\])(<|>|&|\"|``|'')/&special($1).&special($2)/geom; # MUST DO IT AGAIN JUST IN CASE THERE ARE CONSECUTIVE HTML SPECIALS s/([^\\])(<|>|&|\"|``|'')/&special($1).&special($2)/geom; s/^(<|>|&|\"|``|'')/&special($1)/geom; } # used in \verbatiminput only: $html_escape_chars = '<>&'; sub replace_all_html_special_chars { s/([$html_escape_chars])/&special($1)/geom; } # The bibliography and the index should be treated as separate sections # in their own HTML files. The \bibliography{} command acts as a sectioning command # that has the desired effect. But when the bibliography is constructed # manually using the thebibliography environment, or when using the # theindex environment it is not possible to use the normal sectioning # mechanism. This subroutine inserts a \bibliography{} or a dummy # \textohtmlindex command just before the appropriate environments # to force sectioning. sub add_bbl_and_idx_dummy_commands { local($id) = $global{'max_id'}; s/([\\]begin\s*$O\d+$C\s*thebibliography)/$bbl_cnt++; $1/eg; ## if ($bbl_cnt == 1) { s/([\\]begin\s*$O\d+$C\s*thebibliography)/$id++; "\\bibliography$O$id$C$O$id$C $1"/geo; #} $global{'max_id'} = $id; s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlindex $1/o; s/[\\]printindex/\\textohtmlindex /o; &lib_add_bbl_and_idx_dummy_commands() if defined(&lib_add_bbl_and_idx_dummy_commands); } # Uses and modifies $default_language # This would be straight-forward except when there are # \MakeUppercase, \MakeLowercase or \uppercase , \lowercase commands # present in the source. The cases have to be adjusted before the # ISO-character code is set; e.g. with "z --> "Z in german.perl # sub convert_iso_latin_chars { local($_) = @_; local($next_language, $pattern); local($xafter, $before, $after, $funct, $level, $delim); local(@case_processed); while (/$case_change_rx/) { $xafter = $2; # $before .= $`; push(@case_processed, $`); $funct = $3; $after = ''; $_ = $'; if ($xafter =~ /noexpand/) { $before .= "\\$funct"; next; } s/^[\s%]*(.)/$delim=$1;''/eo; if ($delim =~ /{/ ) { # brackets not yet numbered... # $before .= $funct . $delim; push(@case_processed, $funct . $delim); $level = 1; $after = $delim; while (($level)&&($_)&&(/[\{\}]/)) { $after .= $` . $&; $_ = $'; if ( "$&" eq "\{" ) {$level++} elsif ( "$&" eq "\}" ) { $level-- } else { print $_ } print "$level"; } # $before .= $after; push(@case_processed, $after); } elsif ($delim eq "<") { # brackets numbered, but maybe not processed... s/((<|#)(\d+)(>|#)>).*\1//; $after .= $delim . $&; $_ = $'; print STDOUT "\n<$2$funct$4>" if ($VERBOSITY > 2); $funct =~ s/^\\//o; local($cmd) = "do_cmd_$funct"; $after = &$cmd($after); # $before .= $after; push(@case_processed, $after); } elsif (($xafter)&&($delim eq "\\")) { # preceded by \expandafter ... # ...so expand the following macro first $funct =~ s/^\\//o; local($case_change) = $funct; s/^(\w+|\W)/$funct=$1;''/eo; local($cmd) = $funct; local($thiscmd) = "do_cmd_$funct"; if (defined &$thiscmd) { $_ = &$thiscmd($_) } elsif ($new_command{$funct}) { local($argn, $body, $opt) = split(/:!:/, $new_command{$funct}); do { ### local($_) = $body; &make_unique($body); } if ($body =~ /$O/); if ($argn) { do { local($before) = ''; local($after) = "\\$funct ".$_; $after = &substitute_newcmd; # may change $after $after =~ s/\\\@#\@\@/\\/o ; } } else { $_ = $body . $_; } } else { print "\nUNKNOWN COMMAND: $cmd "; } $cmd = $case_change; $case_change = "do_cmd_$cmd"; if (defined &$case_change) { $_ = &$case_change($_) } } else { # this should not happen, but just in case... $funct =~ s/^\\//o; local($cmd) = "do_cmd_$funct"; print STDOUT "\n\n<$delim$funct>" if ($VERBOSITY > 2); $_ = join('', $delim , $_ ); if (defined &$cmd) { $_ = &$cmd($_) } } } # $_ = join('', $before, $_) if ($before); $_ = join('', @case_processed, $_) if (@case_processed); # ...now do the conversions ($before, $after, $funct) = ('','',''); @case_processed = (); if (/$language_rx/o) { ($next_language, $pattern, $before, $after) = (($2||$1), $&, $`, $'); $before = &convert_iso_latin_chars($before) if ($before); # push(@case_processed, $pattern, $before); local($br_id) = ++$global{'max_id'}; $pattern = join('' , '\selectlanguage', $O.$br_id.$C , (($pattern =~ /original/) ? $TITLES_LANGUAGE : $next_language ) , $O.$br_id.$C ); push(@case_processed, $before, $pattern); push(@language_stack, $default_language); $default_language = $next_language; $_ = &convert_iso_latin_chars($after); $default_language = pop @language_stack; } else { $funct = $language_translations{$default_language}; (defined(&$funct) ? $_ = &$funct($_) : do { &write_warnings( "\nCould not find translation function for $default_language.\n\n") } ); if ($USE_UTF ||(!$NO_UTF &&(defined %unicode_table)&&length(%unicode_table)>2)) { &convert_to_unicode($_)}; } $_ = join('', @case_processed, $_); undef(@case_processed); $_; } # May need to add something here later sub english_translation { $_[0] } # This replaces \setlanguage{\language} with \languageTeX # This makes the identification of language chunks easier. sub normalize_language_changes { s/$setlanguage_rx/\\$2TeX/gs; } sub get_current_language { return () if ($default_language eq $TITLES_LANGUAGE); local($lang,$lstyle) = ' LANG="'; $lang_code = $iso_languages{$default_language}; if (%styled_languages) { $lstyle = $styled_languages{$default_language}; $lstyle = '" CLASS="'.$lstyle if $lstyle; } ($lang_code ? $lang.$lang_code.$lstyle.'"' : ''); } %styled_languages = (); sub do_cmd_htmllanguagestyle { local($_) = @_; local($class) = &get_next_optional_argument; local($lang) = &missing_braces unless ( (s/$next_pair_pr_rx/$lang=$2;''/e) ||(s/$next_pair_rx/$lang=$2;''/e)); return ($_) unless $lang; local($class) = $iso_languages{$lang} unless $class; if ($USING_STYLES && $class) { print "\nStyling language: $lang = \"$class\" "; $styled_languages{"$lang"} = $class; } $_; } # General translation mechanism: # # # The main program latex2html calls texexpand with the document name # in order to expand some of its \input and \include statements, here # also called 'merging', and to write a list of sensitized style, class, # input, or include file names. # When texexpand has finished, all is contained in one file, TMP_foo. # (assumed foo.tex is the name of the document to translate). # # In this version, texexpand cares for following environments # that may span include files / section boundaries: # (For a more technical description, see texexpand.) # a) \begin{comment} # b) %begin{comment} # c) \begin{any} introduced with \excludecomment # d) %begin{any} # e) \begin{verbatim} # f) \begin{latexonly} # g) %begin{latexonly} # # a)-d) cause texexpand to drop its contents, it will not show up in the # output file. You can use this to 'comment out' a bunch of files, say. # # e)-g) prevent texexpand from expanding input files, but the environment # content goes fully into the output file. # # Together with each merging of \input etc. there are so-called %%%texexpand # markers accompanying the boundary. # # When latex2html reads in the output file, it uses these markers to write # each part to a separate file, and process them further. # # # If you have, for example: # # a) preample # b) \begin{document} # c) text # d) \input{chapter} # e) more text # f) \end{document} # # you end up in two parts, part 1 is a)-c), part 2 is the rest. # Regardless of environments spanning input files or sections. # # # What now starts is meta command substitution: # Therefore, latex2html forks a child process on the first part and waits # until it finished, then forks another on the next part and so forth # (see also &slurp_input_and_partition_and_preprocess). # # Here's what each child is doing: # Each child process reads the new commands translated so far by the previous # child from the TMP_global DBM database. # After &pre_processing, it substitutes the meta commands (\newcommand, \def, # and the like) it finds, and adds the freshly retrieved new commands to the # list so far. # This is done *only on its part* of the document; this saves upwards of memory. # Finally, it writes its list of new commands (synopsis and bodies) to the # DBM database, and exits. # After the last child finished, latex2html reads in all parts and # concatenates them. # # # So, at this point in time (start of &translate), it again has the complete # document, but now preprocessed and with new commands substituted. # This has several disadvantages: an amount of commands is substituted (in # TeX lingo, expanded) earlier than the rest. # This causes trouble if commands really must get expanded at the point # in time they show up. # # # Then, still in &translate, latex2html uses the list of section commands to # split the complete document into chunks. # The chunks are not written to files yet. They are retained in the @sections # list, but each chunk is handled separately. # latex2html puts the current chunk to $_ and processes it with # &translate_environments etc., then fetches the next chunk, and so on. # This prevents environments that span section boundaries from getting # translated, because \begin and \end cannot find one another, to say it this # way. # # # After the chunk is translated to HTML, it is written to a file. # When all chunks are done, latex2html rereads each file to get cross # references right, replace image markers with the image file names, and # writes index and bibliography. # # sub translate { &normalize_sections; # Deal with the *-form of sectioning commands # Split the input into sections, keeping the preamble together # Due to the regular expression, each split will create 5 more entries. # Entry 1 and 2: non-letter/letter sectioning command, # entry 4: the delimiter (may be empty) # entry 5: the text. local($pre_section, @sections); if (/\\(startdocument|begin\s*($O\d+$C)\s*document\s*\2)/) { $pre_section = $`.$&; $_ = $'; } @sections = split(/$sections_rx/, $_); $sections[0] = $pre_section.$sections[0] if ($pre_section); undef $pre_section; local($sections) = int(scalar(@sections) / 5); # Initialises $curr_sec_id to a list of 0's equal to # the number of sectioning commands. local(@curr_sec_id) = split(' ', &make_first_key); local(@segment_sec_id) = @curr_sec_id; local($i, $j, $current_depth) = (0,0,0); local($curr_sec) = $SHORT_FILENAME||$FILE; local($top_sec) = ($SEGMENT ? '' : 'top of '); # local(%section_info, %toc_section_info, $CURRENT_FILE, %cite_info, %ref_files); local($CURRENT_FILE); # These filenames may be set when translating the corresponding commands. local($tocfile, $loffile, $lotfile, $footfile, $citefile, $idxfile, $figure_captions, $table_captions, $footnotes, $citations, %font_size, %index, %done, $t_title, $t_author, $t_date, $t_address, $t_affil, $changed); local(@authors,@affils,@addresses,@emails,@authorURLs); local(%index_labels, %index_segment, $preindex, %footnotes, %citefiles); local($segment_table_captions, $segment_figure_captions); local($dir,$nosave) = ('',''); local($del,$close_all,$open_all,$toc_sec_title,$multiple_toc); local($open_tags_R) = []; local(@save_open_tags)= (); local(@language_stack) = (); push (@language_stack, $default_language); # $LATEX_FONT_SIZE = '10pt' unless ($LATEX_FONT_SIZE); &process_aux_file if $SHOW_SECTION_NUMBERS || /\\(caption|(html|hyper)?((eq)?ref|cite))/; require ("${PREFIX}internals.pl") if (-f "${PREFIX}internals.pl"); #JCL(jcl-del) &make_single_cmd_rx; # $tocfile = $EXTERNAL_CONTENTS; $idxfile = $EXTERNAL_INDEX; $citefile = $EXTERNAL_BIBLIO; $citefile =~ s/#.*$//; $citefiles{1} = $citefile if ($citefile); print "\nTranslating ..."; while ($i <= @sections) { undef $_; $_ = $sections[$i]; s/^[\s]*//; # Remove initial blank lines # The section command was removed when splitting ... s/^/\\$curr_sec$del/ if ($i > 0); # ... so put it back if ($current_depth < $MAX_SPLIT_DEPTH) { if (($footnotes)&&($NO_FOOTNODE)&&( $current_depth < $MAX_SPLIT_DEPTH)) { local($thesenotes) = &make_footnotes ; print OUTPUT $thesenotes; } $CURRENT_FILE = &make_name($curr_sec, join('_',@curr_sec_id)); open(OUTPUT, ">$CURRENT_FILE") || die "Cannot write '$CURRENT_FILE': $!\n"; if ($XBIT_HACK) { # use Apache's XBit hack chmod 0744, $CURRENT_FILE; &check_htaccess; } else { chmod 0644, $CURRENT_FILE; } if ($MULTIPLE_FILES && $ROOTED) { if ($DESTDIR =~ /^\Q$FIXEDDIR\E[$dd$dd]?([^$dd$dd]+)/) { $CURRENT_FILE = "$1$dd$CURRENT_FILE" }; } } &remove_document_env; # &wrap_shorthand_environments; #RRM Is this needed ? print STDOUT "\n" if ($VERBOSITY); print STDOUT "\n" if ($VERBOSITY > 2); print $i/5,"/$sections"; print ":$top_sec$curr_sec:" if ($VERBOSITY); # Must do this early ... It also sets $TITLE &process_command($sections_rx, $_) if (/^$sections_rx/); # reset tags saved from the previous section $open_tags_R = [ @save_open_tags ]; @save_open_tags = (); local($curr_sec_tex); if ((! $TITLE) || ($TITLE eq $default_title)) { eval '$TITLE = '.$default_title; $TITLE = $default_title if $@; $curr_sec_tex = ($top_sec ? '' : join('', '"', &revert_to_raw_tex($curr_sec), '"')); print STDOUT "$curr_sec_tex for $CURRENT_FILE\n" if ($VERBOSITY); } else { local($tmp) = &purify($TITLE,1); $tmp = &revert_to_raw_tex($tmp); print STDOUT "\"$tmp\" for $CURRENT_FILE\n" if ($VERBOSITY); } if (/\\(latextohtmlditchpreceding|startdocument)/m) { local($after) = $'; local($before) = $`.$&; $SEGMENT = 1 if ($1 =~ /startdocument/); print STDOUT "\n *** translating preamble ***\n" if ($VERBOSITY); $_ = &translate_preamble($before); s/\n\n//g; s/
    //g; # remove redundant blank lines and breaks # # &process_aux_file if $AUX_FILE_NEEDED; # print STDOUT "\n *** preamble done ***\n" if ($VERBOSITY); $PREAMBLE = 0; $NESTING_LEVEL=0; &do_AtBeginDocument; $after =~ s/^\s*//m; print STDOUT (($VERBOSITY >2)? "\n*** Translating environments ***" : ";"); $after = &translate_environments($after); print STDOUT (($VERBOSITY >2)? "\n*** Translating commands ***" : ";"); $_ .= &translate_commands($after); # $_ = &translate_commands($after); } else { &do_AtBeginDocument; $PREAMBLE = 0; $NESTING_LEVEL=0; print STDOUT (($VERBOSITY >2)? "\n*** Translating environments ***" : ";"); $_ = &translate_environments($_); print STDOUT (($VERBOSITY >2)? "\n*** Translating commands ***" : ";"); $_ = &translate_commands($_); } # close any tags that remain open if (@$open_tags_R) { ($close_all,$open_all) = &preserve_open_tags(); $_ .= $close_all; @save_open_tags = @$open_tags_R; $open_tags_R = []; } else { ($close_all,$open_all) = ('','') } print STDOUT (($VERBOSITY >2)? "\n*** Translations done ***" : "\n"); # if (($footnotes)&&($NO_FOOTNODE)&&( $current_depth < $MAX_SPLIT_DEPTH)) { # $_ .= &make_footnotes # } print OUTPUT $_; # Associate each id with the depth, the filename and the title ###MEH -- starred sections don't show up in TOC ... # RRM: ...unless $TOC_STARS is set # $toc_sec_title = &simplify($toc_sec_title); $toc_sec_title = &purify($toc_sec_title);# if $SEGMENT; $toc_sec_title = &purify($TITLE) unless ($toc_sec_title); if ($TOC_STARS) { $toc_section_info{join(' ',@curr_sec_id)} = "$current_depth$delim$CURRENT_FILE$delim$toc_sec_title" # if ($current_depth <= $MAX_SPLIT_DEPTH + $MAX_LINK_DEPTH); if ($current_depth <= $TOC_DEPTH); } else { $toc_section_info{join(' ',@curr_sec_id)} = "$current_depth$delim$CURRENT_FILE$delim$toc_sec_title" . ($curr_sec =~ /star$/ ? "$delim" : "") # if ($current_depth <= $MAX_SPLIT_DEPTH + $MAX_LINK_DEPTH); if ($current_depth <= $TOC_DEPTH); } # include $BODYTEXT in the section_info, when starting a new page $section_info{join(' ',@curr_sec_id)} = "$current_depth$delim$CURRENT_FILE$delim$TITLE$delim" . (($current_depth < $MAX_SPLIT_DEPTH)? $BODYTEXT: ""); # Get type of section (see also the split above) $curr_sec = $sections[$i+1].$sections[$i+2]; $del = $sections[$i+4]; # Get the depth of the current section; # $curr_sec = $outermost_level unless $curr_sec; $current_depth = $section_commands{$curr_sec}; if ($after_segment) { $current_depth = $after_segment; $curr_sec_id[$after_segment] += $after_seg_num; ($after_segment,$after_seg_num) = ('',''); for($j=1+$current_depth; $j <= $#curr_sec_id; $j++) { $curr_sec_id[$j] = 0; } } if ($SEGMENT||$SEGMENTED) { for($j=1; $j <= $#curr_sec_id; $j++) { $curr_sec_id[$j] += $segment_sec_id[$j]; $segment_sec_id[$j] = 0; } }; # this may alter the section-keys $multiple_toc = 1 if ($MULTIPLE_FILES && $ROOTED && (/$toc_mark/)); #RRM : Should this be done here, or in \stepcounter ? @curr_sec_id = &new_level($current_depth, @curr_sec_id); $toc_sec_title = $TITLE = $top_sec = ''; $i+=5; #skip to next text section } $open_tags_R = []; $open_all = ''; $_ = undef; $_ = &make_footnotes if ($footnotes); $CURRENT_FILE = ''; print OUTPUT; close OUTPUT; # # this may alter the section-keys # &adjust_root_keys if $multiple_toc; if ($PREPROCESS_IMAGES) { &preprocess_images } else { &make_image_file } print STDOUT "\n *** making images ***" if ($VERBOSITY > 1); &make_images; # Link sections, add head/body/address do cross-refs etc print STDOUT "\n *** post-process ***" if ($VERBOSITY > 1); &post_process; if (defined &document_post_post_process) { #BRM: extra document-wide post-processing print STDOUT "\n *** post-processing Document ***" if ($VERBOSITY > 1); &document_post_post_process(); } print STDOUT "\n *** post-processed ***" if ($VERBOSITY > 1); ©_icons if $LOCAL_ICONS; if ($SEGMENT || $DEBUG || $SEGMENTED) { &save_captions_in_file("figure", $figure_captions) if $figure_captions; &save_captions_in_file("table", $table_captions) if $table_captions; # &save_array_in_file ("captions", "figure_captions", 0, %figure_captions) if %figure_captions; # &save_array_in_file ("captions", "table_captions", 0, %table_captions) if %table_captions; &save_array_in_file ("index", "index", 0, %index); &save_array_in_file ("sections", "section_info", 0, %section_info); &save_array_in_file ("contents", "toc_section_info", 0,%toc_section_info); &save_array_in_file ("index", "sub_index", 1, %sub_index) if %sub_index; &save_array_in_file ("index", "index_labels", 1, %index_labels) if %index_labels; &save_array_in_file ("index", "index_segment", 1, %index_segment) if %index_segment; &save_array_in_file ("index", "printable_key", 1, %printable_key) if (%printable_key || %index_segment); } elsif ($MULTIPLE_FILES && $ROOTED) { &save_array_in_file ("sections", "section_info", 0, %section_info); &save_array_in_file ("contents", "toc_section_info", 0, %toc_section_info); } &save_array_in_file ("internals", "ref_files", 0, %ref_files) if $changed; &save_array_in_file ("labels", "external_labels", 0, %ref_files); &save_array_in_file ("labels", "external_latex_labels", 1, %latex_labels); &save_array_in_file ("images", "cached_env_img", 0, %cached_env_img); } # RRM: sub translate_preamble { local($_) = @_; $PREAMBLE = 1; $NESTING_LEVEL=0; #counter for TeX group nesting level # remove some artificially inserted constructions s/\n${tex2html_deferred_rx}\\par\s*${tex2html_deferred_rx2}\n/\n/gm; s/\\newedcommand(<<\d+>>)([A-Za-z]+|[^A-Za-z])\1(\[\d+\])?(\[[^]]*\])?(<<\d+>>)[\w\W\n]*\5($comment_mark\d*)?//gm; s/\n{2,}/\n/ogm; if (/\\htmlhead/) { print STDOUT "\nPREAMBLE: discarding...\n$`" if ($VERBOSITY > 4); local($after) = $&.$'; # translate segment preamble preceding \htmlhead &translate_commands(&translate_environments($`)); # translate \htmlhead and rest of preamble $_=&translate_commands(&translate_environments($after)); print STDOUT "\nPREAMBLE: retaining...\n$_" if ($VERBOSITY > 4); } else { # translate only preamble here (metacommands etc.) # there should be no textual results, if so, discard them &translate_commands(&translate_environments($_)); print STDOUT "\nPREAMBLE: discarding...\n$_" if ($VERBOSITY > 4); $_=""; }; $_ = &do_AtBeginDocument($_); if (! $SEGMENT) { $_ = ''} # segmented documents have a heading already $_; } ############################ Processing Environments ########################## sub wrap_shorthand_environments { # This wraps a dummy environment around environments that do not use # the begin-end convention. The wrapper will force them to be # evaluated by Latex rather than them being translated. # Wrap a dummy environment around matching TMPs. # s/^\$\$|([^\\])\$\$/{$1.&next_wrapper('tex2html_double_dollar')}/ge; # Wrap a dummy environment around matching $s. # s/^\$|([^\\])\$/{$1.&next_wrapper('$')}/ge; # s/tex2html_double_dollar/\$\$/go; # Do \(s and \[s # local($wrapper) = "tex2html_wrap_inline"; # \ensuremath wrapper print STDOUT "\n *** wrapping environments ***\n" if ($VERBOSITY > 3); # MRO: replaced $* with /m print STDOUT "\\(" if ($VERBOSITY > 3); s/(^\\[(])|([^\\])(\\[(])/{$2.&make_any_wrapper(1,'',$wrapper).$1.$3}/geom; print STDOUT "\\)" if ($VERBOSITY > 3); s/(^\\[)]|[^\\]\\[)])/{$1.&make_any_wrapper(0,'',$wrapper)}/geom; print STDOUT "\\[" if ($VERBOSITY > 3); s/(^\\[[])|([^\\])(\\[[])/{$2.&make_any_wrapper(1,1,"displaymath")}/geom; print STDOUT "\\]" if ($VERBOSITY > 3); s/(^\\[\]])|([^\\])(\\[\]])/{$2.&make_any_wrapper(0,1,"displaymath")}/geom; print STDOUT "\$" if ($VERBOSITY > 3); s/$enspair/print "\$"; {&make_any_wrapper(1,'',$wrapper).$&.&make_any_wrapper(0,'',$wrapper)}/geom; $double_dol_rx = '(^|[^\\\\])\\$\\$'; $single_dol_rx = '(^|[^\\\\])\\$'; print STDOUT "\$" if ($VERBOSITY > 3); local($dollars_remain) = 0; $_ = &wrap_math_environment; $_ = &wrap_raw_arg_cmds; } sub wrap_math_environment { # This wraps math-type environments # The trick here is that the opening brace is the same as the close, # but they *can* still nest, in cases like this: # # $ outer stuff ... \hbox{ ... $ inner stuff $ ... } ... $ # # Note that the inner pair of $'s is nested within a group. So, to # handle these cases correctly, we need to make sure that the outer # brace-level is the same as the inner. --- rst #tex2html_wrap # And yet another problem: there is a scungy local idiom to do # this: $\_$ for a boldfaced underscore. xmosaic can't display the # resulting itty-bitty bitmap, for some reason; even if it could, it # would probably come out as an overbar because of the floating- # baseline problem. So, we have to special case this. --- rst again. local ($processed_text, @processed_text, $before, $end_rx, $delim, $ifclosed); local ($underscore_match_rx) = "^\\s*\\\\\\_\\s*\\\$"; local ($wrapper); print STDOUT "\nwrap math:" if ($VERBOSITY > 3); #find braced dollars, in tabular-specs while (/((($O|$OP)\d+($C|$CP))\s*)\$(\s*\2)/) { push (@processed_text, $`, $1.$dol_mark.$5); $_ = $'; } $_ = join('',@processed_text, $_) if (@processed_text); undef @processed_text; $dollars_remain = 0; while (/$single_dol_rx/) { $processed_text .= $`.$1; $_ = $'; $wrapper = "tex2html_wrap_inline"; $end_rx = $single_dol_rx; # Default, unless we begin with $$. $delim = "\$"; if (/^\$/ && (! $`)) { s/^\$//; $end_rx = $double_dol_rx; $delim = ""; # Cannot say "\$\$" inside displaymath $wrapper = "displaymath"; } elsif (/$underscore_match_rx/ && (! $`)) { # Special case for $\_$ ... s/$underscore_match_rx//; $processed_text .= '\\_'; next; } # Have an opening $ or $$. Find matching close, at same bracket level # $processed_text .= &make_any_wrapper(1,'',$wrapper).$delim; print STDOUT "\$" if ($VERBOSITY > 3); $ifclosed = 0; local($thismath); while (/$end_rx/) { # Forget the $$ if we are going to replace it with "displaymath" $before = $` . (($wrapper eq "displaymath")? "$1" : $&); last if ($before =~ /\\(sub)*(item|section|chapter|part|paragraph)(star)?\b/); $thismath .= $before; $_ = $'; s/^( [^\n])/\\space$1/s; #make sure a trailing space doesn't get lost. # Found dollar sign inside open subgroup ... now see if it's # at the same brace-level ... local ($losing, $br_rx) = (0, ''); print STDOUT "\$" if ($VERBOSITY > 3); while ($before =~ /$begin_cmd_rx/) { $br_rx = &make_end_cmd_rx($1); $before = $'; if ($before =~ /$br_rx/) { $before = $'; } else { $losing = 1; last; } } do { $ifclosed = 1; last } unless $losing; # It wasn't ... find the matching close brace farther on; then # keep going. /$br_rx/; $thismath .= $`.$&; #RRM: may now contain unprocessed $s e.g. $\mbox{...$...$...}$ # the &do_cmd_mbox uses this specially to force an image # ...but there may be other situations; e.g. \hbox # so set a flag: $dollars_remain = 1; $_ = $'; } # Got to the end. Whew! if ($ifclosed) { # also process any nested math while (($dollars_remain)&&($delim eq "\$")) { local($saved) = $_; $thismath =~ s/\$$//; $_ = $thismath; $thismath = &wrap_math_environment; $thismath .= "\$"; $_ = $saved; } $processed_text .= &make_any_wrapper(1,'',$wrapper) . $delim . $thismath . &make_any_wrapper(0,'',$wrapper); } else { print STDERR "\n\n *** Error: unclosed math or extra `\$', before:\n$thismath\n\n"; # # remove a $ to try to recover as much as possible. # $thismath =~ s/([^\\]\\\\|[^\\])\$/$1\%\%/; # $_ = $thismath . $_; $thismath = ""; print "\n$thismath\n\n\n$_\n\n\n"; die; } } $processed_text . $_; } sub translate_environments { local ($_) = @_; local($tmp, $capenv); # print "\nTranslating environments ..."; local($after, @processedE); local ($contents, $before, $br_id, $env, $pattern); for (;;) { # last unless (/$begin_env_rx/o); last unless (/$begin_env_rx|$begin_cmd_rx|\\(selectlanguage)/o); # local ($contents, $before, $br_id, $env, $pattern); local($this_env, $opt_arg, $style_info); $contents = ''; # $1,$2 : optional argument/text --- stylesheet info # $3 : br_id (at the beginning of an environment name) # $4 : environment name # $5 : br_id of open-brace, when $3 == $4 == ''; # $6 : \selectlanguage{...} if ($7) { push(@processedE,$`); $_ = $'; if (defined &do_cmd_selectlanguage) { $_ = &do_cmd_selectlanguage($_); } else { local($cmd) = $7; $pattern = &missing_braces unless ( s/$next_pair_rx/$pattern = $2;''/e); local($trans) = $pattern.'_translation'; if (defined &$trans) { &set_default_language($pattern,$_); } undef $cmd; undef $trans; } next; } elsif ($4) { ($before, $opt_arg, $style_info, $br_id , $env, $after, $pattern) = ($`, $2, $3, $4, $5, $', $&); if (($before)&& (!($before =~ /$begin_env_rx|$begin_cmd_rx/))) { push(@processedE,$before); $_ = $pattern . $after; $before = ''; } } else { ($before, $br_id, $env, $after, $pattern) = ($`, $6, 'group', $', $&); if (($before)&& (!($before =~ /$begin_env_rx|$begin_cmd_rx/))) { push(@processedE,$before); $_ = $pattern . $after; $before = ''; } local($end_cmd_rx) = &make_end_cmd_rx($br_id); if ($after =~ /$end_cmd_rx/) { # ... find the the matching closing one $NESTING_LEVEL++; ($contents, $after) = ($`, $'); $contents = &process_group_env($contents); print STDOUT "\nOUT: {$br_id} ".length($contents) if ($VERBOSITY > 3); print STDOUT "\n:$contents\n" if ($VERBOSITY > 7); # THIS MARKS THE OPEN-CLOSE DELIMITERS AS PROCESSED $_ = join("", $before,"$OP$br_id$CP", $contents,"$OP$br_id$CP", $after); $NESTING_LEVEL--; } else { $pattern = &escape_rx_chars($pattern); s/$pattern//; print "\nCannot find matching bracket for $br_id"; $_ = join("", $before,"$OP$br_id$CP", $after); } next; } $contents = undef; local($defenv) = $env =~ /deferred/; # local($color_env); local($color_env) unless ($env =~ /tabular|longtable|in(line|display)|math/); local($closures,$reopens); local(@save_open_tags) = @$open_tags_R unless ($defenv); local($open_tags_R) = [ @save_open_tags ] unless ($defenv); local(@saved_tags) if ($env =~ /tabular|longtable/); if ($env =~ /tabular|longtable|makeimage|in(line|display)/) { @save_open_tags = @$open_tags_R; $open_tags_R = [ @save_open_tags ]; # check for color local($color_test) = join(',',@$open_tags_R); if ($color_test =~ /(color{[^}]*})/g ) { $color_env = $1; } # else { $color_env = '' } if ($env =~ /tabular|longtable|makeimage/) { # close to the surrounding block-type tag ($closures,$reopens,@saved_tags) = &preserve_open_block_tags(); @save_open_tags = @$open_tags_R; $open_tags_R = [ @save_open_tags ]; if ($color_env) { $color_test = join(',',@saved_tags); if ($color_test =~ /(color{[^}]*})/g ) { $color_env = $1; } } } elsif ($env =~ /in(line|display)/) { $closures = &close_all_tags() if ((&defined_env($env)) &&!($defenv)&&!($env=~/inline/)&&(!$declarations{$env})); if ($color_env) { $color_test = $declarations{$color_env}; $color_test =~ s/<\/.*$//; $closures .= "\n$color_test"; push (@$open_tags_R , $color_env); } } } elsif ($env =~ /alltt|tex2html_wrap/) { # alltt is constructed as paragraphs, not with
    	    #  tex2html_wrap  creates an image, which is at text-level
    	} else {
    	    $closures = &close_all_tags() if ((&defined_env($env))
    		&&!($defenv)&&(!$declarations{$env}) );
    	}
    	# Sets $contents and modifies $after
    	if (&find_end_env($env,$contents,$after)) {
    	    print STDOUT "\nIN-A {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
    	    &process_command($counters_rx, $before)
    		if ($before =~ /$counters_rx/);
    	    # This may modify $before and $after
    	    # Modifies $contents
    #RRM: the do_env_... subroutines handle when to translate sub-environments
    #	    $contents = &translate_environments($contents) if
    ##		((!$defenv) && (&defined_env($env)) && (! $raw_arg_cmds{$env})
    ##		&& (!$declarations{$env})
    #		((&defined_env($env)) && (! $raw_arg_cmds{$env})
    #		&& (!($env =~ /latexonly|enumerate|figure|table|makeimage|wrap_inline/))
    #		&& ((! $NO_SIMPLE_MATH)||(!($env =~ /wrap/)))
    #		&& (!($env =~ /(math|wrap|equation|eqnarray|makeimage|minipage|tabular)/) )
    #		);
    	    if ($opt_arg) { 
    		&process_environment(1, $env, $br_id, $style_info); # alters $contents
    	    } else {
    		&process_environment(0, $env, $br_id, '');
    	    }
    	    undef $_;
    	    print STDOUT "\nOUT-A {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
    	    #JCL(jcl-env) - insert the $O$br_id$C stuff to handle environment grouping
    	    if (!($contents eq '')) {
    		$after =~ s/^\n//o if ($defenv);
    		$this_env = join("", $before, $closures
    			  , $contents
    			  , ($defenv ? '': &balance_tags())
    			  , $reopens ); $_ = $after;
    	    } else { 
    		$this_env = join("", $before , $closures
    			  , ($defenv ? '': &balance_tags())
    			  , $reopens ); $_ = $after;
    	    };
    	### Evan Welsh  added the next 24 lines ##
    	} elsif (&defined_env($env)) {
    	    print STDOUT "\nIN-B {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
    	    # If I specify a function for the environment then it
    	    # calls it with the contents truncated at the next section.
    	    # It assumes I know what I'm doing and doesn't give a
    	    # deferred warning.
    	    $contents = $after;
    	    if ($opt_arg) { 
    		$contents = &process_environment(1, $env, $br_id, $style_info);
    	    } else {
    		$contents = &process_environment(0, $env, $br_id, '');
    	    }
    	    print STDOUT "\nOUT-B {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
    	    $this_env = join("", $before, $closures ,$contents, $reopens);
    
    	    # there should not be anything left over 
    #	    $_ = $after;
    	    $_ = '';
    	} elsif ($ignore{$env}) {
    	    print STDOUT "\nIGNORED {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
    	    # If I specify that the environment should be ignored then
    	    # it is but I get a deferred warning.
    	    $this_env = join("", $before , $closures , &balance_tags()
    		      , $contents, $reopens );
    	    $_ = $after;
    	    &write_warnings("\n\\end{$env} not found (ignored).\n");
    	} elsif ($raw_arg_cmds{$env}) {
    	    print "\nIN-C {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
    	    # If I specify that the environment should be passed to tex
    	    # then it is with the environment truncated at the next
    	    # section and I get a deferred warning.
    
    	    $contents = $after;
    	    if ($opt_arg) { 
    		$contents = &process_environment(1, $env, $br_id, $style_info);
    	    } else {
    		$contents = &process_environment(0, $env, $br_id, '');
    	    }
    	    print STDOUT "\nOUT-C {$env $br_id}\n$contents\n" if ($VERBOSITY > 4);
    	    $this_env = join("", $before, $closures
    			     , $contents, &balance_tags(), $reopens );
    	    $_='';
    	    &write_warnings(
    	        "\n\\end{$env $br_id} not found (truncated at next section boundary).\n");
    	} else {
    	    $pattern = &escape_rx_chars($pattern);
    	    s/$pattern/$closures/;
    	    print "\nCannot find \\end{$env $br_id}\n";
    	    $_ .= join('', &balance_tags(), $reopens) unless ($defenv);
    	}
    	if ($this_env =~ /$begin_env_rx|$begin_cmd_rx/) {
    	    $_ = $this_env . $_;
    	} else { push (@processedE, $this_env) }
        }
        $_ = join('',@processedE) . $_;
        $tmp = $_; undef $_;
        &process_command($counters_rx, $tmp) if ($tmp =~ /$counters_rx/);
        $_ = $tmp; undef $tmp;
        $_
    }
    
    sub find_end_env {
        # MRO: find_end_env($env,$contents,$rest)
        #local ($env, *ref_contents, *rest) = @_;
        my $env = $_[0];
        my $be_rx = &make_begin_end_env_rx($env);
        my $count = 1;
    
        while ($_[2] =~ /($be_rx)(\n?)/s) { # $rest
    	$_[1] .= $`; # $contents
    
    	if ($2 eq "begin") { ++$count }
    	else { --$count };
    
    	#include any final \n at an {end} only
    	$_[2] = (($2 eq 'end')? $5 : '') . $'; # $rest
    	last if $count == 0;
    
    	$_[1] .= $1; # $contents
        }
    
        if ($count != 0) {
    	$_[2] = join('', $_[1], $_[2]); # $rest = join('', $contents, $rest);
    	$_[1] = ''; # $contents
    	return(0)
        } else { return(1) }
    }
    
    
    sub process_group_env {
        local($contents) = @_;
        local(@save_open_tags) = @$open_tags_R;
        local($open_tags_R) = [ @save_open_tags ];
        print STDOUT "\nIN::{group $br_id}" if ($VERBOSITY > 4);
        print STDOUT "\n:$contents\n" if ($VERBOSITY > 6);
    
        # need to catch explicit local font-changes
        local(%font_size) = %font_size if (/\\font\b/);
    
        # record class/id info for a style-sheet entry
        local($env_id, $tmp, $etmp);
        if (($USING_STYLES) && !$PREAMBLE ) { $env_id = $br_id; }
    #	$env_id = "grp$br_id";
    #	$styleID{$env_id} = " ";
    #        $env_id = " ID=\"$env_id\"";
    #    }
    
        undef $_;
        $contents =~ s/^\s*$par_rx\s*//s; # don't start with a \par 
        if ($contents =~ /^\s*\\($image_switch_rx)\b\s*/s) {
    	# catch TeX-like environments: {\fontcmd ... }
    	local($image_style) = $1;
    	if ($USING_STYLES) {
    	    $env_style{$image_style} = " " unless ($env_style{$image_style});
    	}
    	local($switch_cmd) = "do_cmd_${image_style}";
    	if (defined &$switch_cmd ) {
    	    eval "\$contents = \&${switch_cmd}(\$')";
    	    print "\n*** &$switch_cmd didn't work: $@\n$contents\n\n" if ($@);
    	} elsif ($contents =~ /$par_rx/) {
    	    # split into separate image for each paragraph
    	    local($par_style,$this_par_img) = '';
    	    local(@par_pieces) = split($par_rx, $contents);
    	    local($this_par,$par_style,$par_comment);
    	    $contents = '';
    	    while (@par_pieces) {
    		$this_par = shift @par_pieces;
    		if ($this_par =~ /^\s*\\($image_switch_rx)\b/s) {
    		    $image_style = $1;
    		    $par_style = 'P.'.$1;
    		    $env_style{$par_style} = " " unless ($env_style{$par_style});
    		}
    #	no comment: source is usually too highly encoded to be meaningful
    #	$par_comment = &make_comment($image_style,$this_par);
    		$this_par_img = &process_in_latex("\{".$this_par."\}");
    		$contents .=  join(''  #,"\n", $par_comment
    			, "\n", $this_par_img
    			, "

    \n"); if (@par_pieces) { # discard the pieces from matching $par_rx $dum = shift @par_pieces; $dum = shift @par_pieces; $dum = shift @par_pieces; $dum = shift @par_pieces; $dum = shift @par_pieces; $dum = shift @par_pieces; # $contents .= "\n

    \n

    "; } } } else { $contents = &process_undefined_environment("tex2html_accent_inline" , ++$global{'max_id'},"\{".$contents."\}"); } } elsif ($contents =~ /^\s*\\(html)?url\b($O\d+$C)[^<]*\2\s*/) { # do nothing $contents = &translate_environments($contents); $contents = &translate_commands($contents); } elsif (($env_switch_rx)&&($contents =~ s/^(\s*)\\($env_switch_rx)\b//s)) { # write directly into images.tex, protected by \begingroup...\endgroup local($prespace, $cmd, $tmp) = ($1,$2,"do_cmd_$2"); $latex_body .= "\n\\begingroup "; if (defined &$tmp) { eval("\$contents = &do_cmd_$cmd(\$contents)"); } $contents = &translate_environments($contents); $contents = &translate_commands($contents); undef $tmp; undef $cmd; $contents .= "\n\\endgroup "; } elsif ($contents =~ /^\s*\\([a-zA-Z]+)\b/s) { local($after_cmd) = $'; local($cmd) = $1; $tmp = "do_cmd_$cmd"; $etmp = "do_env_$cmd"; if (($cmd =~/^(rm(family)?|normalsize)$/) ||($declarations{$cmd}&&(defined &$tmp))) { do{ local(@save_open_tags) = @$open_tags_R; eval "\$contents = \&$tmp(\$after_cmd);"; print "\n*** eval &$tmp failed: $@\n$contents\n\n" if ($@); $contents .= &balance_tags(); }; } elsif ($declarations{$cmd}&&(defined &$etmp)) { eval "\$contents = \&$etmp(\$after_cmd);"; } else { $contents = &translate_environments($contents); $contents = &translate_commands($contents) if ($contents =~ /$match_br_rx/o); # Modifies $contents &process_command($single_cmd_rx,$contents) if ($contents =~ /\\/o); } undef $cmd; undef $tmp; undef $etmp; } else { $contents = &translate_environments($contents); $contents = &translate_commands($contents) if ($contents =~ /$match_br_rx/o); # Modifies $contents &process_command($single_cmd_rx,$contents) if ($contents =~ /\\/o); } $contents . &balance_tags(); } # MODIFIES $contents sub process_environment { local($opt, $env, $id, $styles) = @_; local($envS) = $env; $envS =~ s/\*\s*$/star/; local($env_sub,$border,$attribs,$env_id) = ("do_env_$envS",'','',''); local($original) = $contents; if ($env =~ /tex2html_deferred/ ) { $contents = &do_env_tex2html_deferred($contents); return ($contents); } $env_id = &read_style_info($opt, $env, $id, $styles) if (($USING_STYLES)&&($opt)); if (&defined_env($env)) { print STDOUT ","; print STDOUT "{$env $id}" if ($VERBOSITY > 1); # $env_sub =~ s/\*$/star/; $contents = &$env_sub($contents); } elsif ($env =~ /tex2html_nowrap/) { #pass it on directly for LaTeX, via images.tex $contents = &process_undefined_environment($env, $id, $contents); return ($contents); # elsif (&special_env) { # &special_env modifies $contents } else { local($no_special_chars) = 0; local($failed) = 0; local($has_special_chars) = 0; &special_env; # modifies $contents print STDOUT "\n" if ($VERBOSITY > 3); if ($failed || $has_special_chars) { $contents = $original; $failed = 1; print STDOUT " !failed!\n" if ($VERBOSITY > 3); } } if (($contents) && ($contents eq $original)) { if ($ignore{$env}) { return(''); } # Generate picture if ($contents =~ s/$htmlborder_rx//o) { $attribs = $2; $border = (($4)? "$4" : 1) } elsif ($contents =~ s/$htmlborder_pr_rx//o) { $attribs = $2; $border = (($4)? "$4" : 1) } $contents = &process_undefined_environment($env, $id, $contents); $env_sub = "post_latex_$env_sub"; # i.e. post_latex_do_env_ENV if ( defined &$env_sub) { $contents = &$env_sub($contents); } elsif (($border||($attributes))&&($HTML_VERSION > 2.1)) { $contents = &make_table($border,$attribs,'','','',$contents); } else { $contents = join('',"
    \n",$contents,"\n
    ") unless (!($contents)||($inner_math)||($env =~ /^(tex2html_wrap|tex2html_nowrap|\w*math|eq\w*n)/o )); } } $contents; } #RRM: This reads the style information contained in the optional argument # to the \begin command. It is stored to be recovered later as an entry # within the automatically-generated style-sheet, if $USING_STYLES is set. # Syntax for this info is: # gosa-core-2.7.4/ihtml/themes/default/framework.tpl0000644000175000017500000000427611473751621020623 0ustar mikemike {$php_errors}

    • {$logo}
    • {image path="{$logoutimage}"}
    • {$loggedin}
    {if $hideMenus} {$contents} {$msg_dialogs} {else} {$menu} {$msg_dialogs}
    {$pathMenu} {$contents}
    {/if} {if $channel != ""} {/if} {$errors} {$focus}
    gosa-core-2.7.4/ihtml/themes/default/copyPasteDialog.tpl0000644000175000017500000000203011470506143021671 0ustar mikemike

    {t}Copy & paste wizard{/t}

    {$message}

    {if $Complete == false} {t}Some values need to be unique in the complete directory while some combinations make no sense. Please edit the values below to fulfill the policies.{/t}
    {t}Remember that some properties like taken snapshots will not be copied!{/t}  {t}Or if you copy or cut an entry within GOsa and delete the source object, you may get errors while pasting this object again!{/t}

    {$AttributesToFix} {if $SubDialog == false}
    {if $type == "modified"} {/if}
    {/if} {else}

    {t}Operation complete{/t}

    {/if} gosa-core-2.7.4/ihtml/themes/default/password.tpl0000644000175000017500000001466111470506143020461 0ustar mikemike GOsa - {t}Change your password{/t} {$php_errors}
    • {$logo}
    {$msg_dialogs} {if $changed}

    {t}Your password has been changed successfully.{/t}

    {else}

    {t}Password change{/t}

    {if $ssl}{/if} {if $message}{/if}

    {t}Enter the current password and the new password (twice) in the fields below and press the 'Set password' button.{/t}

    {if $show_directory_chooser} {/if}
    {t}Directory{/t}
    {t}User name{/t} {if $display_username} {else} {$uid} {/if}
    {factory type='password' name='current_password' id='current_password' onfocus="nextfield= 'new_password';"}
    {factory type='password' name='new_password' id='new_password' onkeyup="testPasswordCss(\$('new_password').value)" onfocus="nextfield= 'new_password_repeated';"}
    {factory type='password' name='new_password_repeated' id='new_password_repeated' onfocus="nextfield= 'password_finish';"}
    {t}Password strength{/t}

    {$errors} {/if}
    gosa-core-2.7.4/ihtml/themes/default/login.tpl0000644000175000017500000000555011424325206017722 0ustar mikemike {$php_errors}
    • {$logo}
    • {$version}
    {image path="images/empty.png" align="top" action="focus"} {$msg_dialogs} {if $ssl}{/if} {if $lifetime}{/if}
    gosa-core-2.7.4/ihtml/themes/default/removeEntries.tpl0000644000175000017500000000104411362006411021426 0ustar mikemike
    {image path="images/warning.png" align="top"}
    {t}Attention{/t}

    {$info}

    {t}If you're sure you want to do this press 'Delete' to continue or 'Cancel' to abort.{/t}


    gosa-core-2.7.4/ihtml/themes/default/acl.tpl0000644000175000017500000000532511553546244017363 0ustar mikemike{if !$acl_readable}

    {msgPool type=permView}

    {else} {if $dialogState eq 'head'}

    {t}Assigned ACL for current entry{/t}

    {$aclList} {if $acl_createable} {/if} {/if} {if $dialogState eq 'create'}

    {t}Options{/t}

    {t}ACL type{/t} {if !$acl_writeable}   {else}   {if $javascript eq 'false'} {/if} {/if}
    {t}Additional filter options{/t} {if !$acl_writeable} {else} {/if}

    {t}Members{/t}

    {$aclMemberList}     {if $aclType ne 'reset'} {if $aclType ne 'role'} {if $aclType ne 'base'}

    {t}List of available ACL categories{/t}

    {$aclList} {/if} {/if} {/if} {if $aclType eq 'base'}

    {t}ACL for this object{/t}

    {$aclSelector} {/if} {if $aclType eq 'role'}

    {t}Available roles{/t}

    {$roleSelector} {/if}
    {if $acl_writeable}   {/if}
    {/if} {if $dialogState eq 'edit'}

    {$headline}

    {$aclSelector}
     
    {/if} {/if} gosa-core-2.7.4/ihtml/themes/default/logout.tpl0000644000175000017500000000113311455625073020125 0ustar mikemike

    {t}Your GOsa session has expired!{/t}

    {t}It has been a while since your last interaction with GOsa took place. Your session has been closed for security reasons. Please login again to continue with administrative tasks.{/t}


    gosa-core-2.7.4/ihtml/themes/default/userFilterEditor.tpl0000644000175000017500000000560111354657233022114 0ustar mikemike

    {t}Filter editor{/t}


    {$must}
    {$must}

    {t}Public visible{/t}
    {t}Enabled{/t}



    {foreach from=$queries item=item key=key} {t}Query{/t} #{$key}
    {/foreach}
    gosa-core-2.7.4/ihtml/themes/default/userFilter.tpl0000644000175000017500000000051111346200732020725 0ustar mikemike

    {t}List of defined filters{/t}

    {$list}
    gosa-core-2.7.4/ihtml/themes/default/logout-close.tpl0000644000175000017500000000077311361071674021237 0ustar mikemike

    {t}Your GOsa session has been closed!{/t}

    {t}Please close this browser window and clean the authentication caches to avoid an automatic re-authentication by your browser.{/t}

    gosa-core-2.7.4/ihtml/themes/default/setup_headers.tpl0000644000175000017500000000164311427574224021455 0ustar mikemike {if isset($title)}{$title}{else}GOsa{/if} gosa-core-2.7.4/ihtml/themes/default/help.tpl0000644000175000017500000000205211361046166017541 0ustar mikemike {$php_errors}
    {t}GOsa help viewer{/t} {$backward}    {t}Index{/t}    {$forward}  
    {$help_contents}
    gosa-core-2.7.4/ihtml/themes/default/infoPage.tpl0000644000175000017500000000712211475656132020352 0ustar mikemike
    {if $personalInfoAllowed}

    {t}User information{/t}

    {if $jpegPhoto == ""} {else} {/if} {if $uid != ""}{/if} {if $sn != ""}{/if} {if $givenName != ""}{/if} {if $personalTitle != ""}{/if} {if $academicTitle != ""}{/if} {if $homePostalAddress != ""}{/if} {if $dateOfBirth != ""}{/if} {if $mail != ""}{/if} {if $homePhone != ""}{/if}
    {t}User ID{/t}:{$uid}
    {t}Surname{/t}:{$sn}
    {t}Given name{/t}:{$givenName}
    {t}Personal title{/t}:{$personalTitle}
    {t}Academic title{/t}:{$academicTitle}
    {t}Home postal address{/t}:{$homePostalAddress}
    {t}Date of birth{/t}:{$dateOfBirth}
    {t}Mail{/t}:{$mail}
    {t}Home phone number{/t}:{$homePhone}
    {if $o != ""}{/if} {if $ou != ""}{/if} {if $l != ""}{/if} {if $street != ""}{/if} {if $departmentNumber != ""}{/if} {if $employeeNumber != ""}{/if} {if $employeeType != ""}{/if}
    {t}Organization{/t}:{$o}
    {t}Organizational Unit{/t}:{$ou}
    {t}Location{/t}:{$l}
    {t}Street{/t}:{$street}
    {t}Department number{/t}:{$departmentNumber}
    {t}Employee number{/t}:{$employeeNumber}
    {t}Employee type{/t}:{$employeeType}
    {/if} {if $plugins != ""}

    {t}User settings{/t}

    {$plugins}
    {/if} {if !$personalInfoAllowed && $plugins == ""}
    {t}You have no permission to edit any properties. Please contact your administrator.{/t}
    {/if} {if $managersCnt != 0}

    {t}Administrative contact{/t}

    {foreach from=$managers item=item}
    {$item.str}
    {/foreach}
    {/if}

    gosa-core-2.7.4/doc/0000755000175000017500000000000011752422547012615 5ustar mikemikegosa-core-2.7.4/doc/core/0000755000175000017500000000000011752422552013541 5ustar mikemikegosa-core-2.7.4/doc/core/de/0000755000175000017500000000000011752422551014130 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/0000755000175000017500000000000011752422551015074 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/users/0000755000175000017500000000000011752422551016235 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/users/list_root.png0000644000175000017500000000152410437001512020750 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/de/html/users/search.png0000644000175000017500000000177710437001512020211 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/de/html/users/node33.html0000644000175000017500000000204410766256174020230 0ustar mikemike phpGroupware-Konto

    phpGroupware-Konto

    Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den phpGroupware-Server erlauben.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node20.html0000644000175000017500000000320210766256174020221 0ustar mikemike Mail

    Mail

    Das Mailkonto wird in direkter Verbindung mit dem Mailserver verwaltet. Um eines fr den Benutzer anzulegen, klicken Sie auf Neues Mail-Konto erzeugen. Wenn Sie das Mailkonto wieder entfernen mchten, klicken Sie auf Mail-Konto entfernen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node48.html0000644000175000017500000000232310766256174020236 0ustar mikemike Telefon-Makro

    Telefon-Makro

    Whlen Sie aus der Liste das Makro, das ausgefhrt werden soll, wenn der Benutzer eine Nummer whlt (Gegebenenfalls mssen/knnen noch weitere Makrospezifische Optionen eingestellt werden, z.B. Nummer der Mailbox, Weiterleitungen, Zeit bis Weiterleitung, etc.).




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node12.html0000644000175000017500000000422710766256174020232 0ustar mikemike System-Vertrauen

    System-Vertrauen

    Dieser Abschnitt dient der Definition von Zugriffsbeschrnkungen auf definierte Systeme, Gerte, etc.

    Die mglichen Vertrauensmodi:

    • deaktiviert: Der Benutzer darf sich auf allen Hosts anmelden.
    • Vollzugriff: Der Benutzer darf sich auf allen Hosts anmelden.
    • erlaube Zugriff auf diese Hosts: Der Benutzer darf sich nur auf den aufgefhrten Hosts anmelden.

      • Hinzufgen: Um einen oder mehrere Hosts in die Liste aufzunehmen, klicken Sie auf den Knopf Hinzufgen. Aus der Liste der Hosts whlen Sie einen oder mehrere zulssige Hosts und klicken Sie auf den Knopf Hinzufgen. Die Hosts werden nun in der Liste aufgefhrt. Um den Vorgang abzubrechen, klicken Sie auf den Knopf Abbrechen.
      • Entfernen: Um einen oder mehrere Hosts aus der Liste zu entfernen, markieren Sie den oder die gewnschten Hosts aus der Liste und drcken Sie den Knopf Entfernen. Die Hosts werden nun nicht mehr in der Liste aufgefhrt.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/select_phone.png0000644000175000017500000000142010437001512021375 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/de/html/users/node43.html0000644000175000017500000000277110766256174020240 0ustar mikemike Sperrlisten

    Sperrlisten

    Die Sperrlisten dienen dazu, den Empfang und Versand von und zu bestimmten Nummern zu unterbinden, um z.B. Werbefaxe zu vermeiden. Die Dialoge der Sperrlisten fr eingehende und ausgehende Faxe verhalten sich analog, weshalb im Folgenden einfach darauf verzichtet wird, vorzuschreiben, welchen Bearbeiten-Knopf Sie gedrckt haben.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/smallenv.png0000644000175000017500000000133510437001512020553 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/de/html/users/node10.html0000644000175000017500000000264710766256174020234 0ustar mikemike Gruppenmitgliedschaft

    Gruppenmitgliedschaft

    Die Liste zeigt alle UNIX-Gruppen, in denen der Benutzer Mitglied ist. Um eine weitere Mitgliedschaft hinzuzufgen, klicken Sie auf den Knopf Hinzufgen unterhalb der Liste. Markieren Sie eine oder mehrere Gruppen und klicken Sie auf hinzufgen. Um den Benutzer aus einer oder mehrerer Gruppen zu entfernen, markieren Sie eine oder mehrere Gruppen und klicken auf Entfernen unterhalb der Liste.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node34.html0000644000175000017500000000203510766256174020231 0ustar mikemike Intranet-Konto

    Intranet-Konto

    Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den Intranet-Server erlauben.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node25.html0000644000175000017500000000260410766256174020233 0ustar mikemike Samba

    Samba

    Um ein Samba-Konto fr den Benutzer zu erstellen, klicken Sie auf den Knopf Samba-Konto erstellen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/mailto.png0000644000175000017500000000117310437001512020217 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8(IDAT8œAKTQ׹yXf-f˚SF#J ČV>F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/doc/core/de/html/users/list_new_user.png0000644000175000017500000000142410437001512021613 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "Ω2IDAT8ˍKHT{XfYkT{HaPTPAI )*-Z1l A$A5BT"hX#fFf²(:&<noŏEfmƿ[I0bKt0-t6"G){0|砨8h[א[Z?j=IK4nK{̖="B|nקis3VP>بH$r:bqih !"~Z.I !J|eRBNA(i{ @](dw=/ݼ2LCAW=w*Մi 4*A{p)|nu"Tsht <®) aIo喭=B~@`ݾէw:uB33QĞsȩk2WHKPո(ɺm%+ z=h*x“mҎQ t~ХSIENDB`gosa-core-2.7.4/doc/core/de/html/users/users.css0000644000175000017500000000261010766256174020121 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN. { } #hue105 { color: #000000; } #hue135 { color: #0000ff; } #hue220 { color: #000000; } #hue222 { color: #000000; } #hue238 { color: #000000; } #hue435 { color: #000000; } #hue436 { color: #000000; } #hue437 { color: #ff0000; } #hue440 { color: #ff0000; } #hue441 { color: #ff0000; } #hue45 { color: #000000; } #hue456 { color: #000000; } #hue463 { color: #ff0000; } #hue465 { color: #ff0000; } #hue55 { color: #000000; } gosa-core-2.7.4/doc/core/de/html/users/labels.pl0000644000175000017500000000025010437001512020016 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/users/node29.html0000644000175000017500000000342010766256174020234 0ustar mikemike Konnektivitt

    Konnektivitt

    Unter diesem Reiter finden sich diverse Mglichkeiten, um die Zugriffsmglichkeiten des Benutzers zu erweitern:



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node1.html0000644000175000017500000002510710766256174020150 0ustar mikemike Liste der Benutzer

    Liste der Benutzer

    Die Liste der Benutzer dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag Benutzer aus der Kategorie Administration (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Benutzer geladen (berschrift: Benutzerverwaltung). Auf dieser Seite knnen Benutzer hinzugefgt, bearbeitet oder entfernt werden.

    Die Liste ist in drei Spalten geteilt:

    • Die erste Spalte enthlt zunchst die verfgbaren Abteilungen, dann die Namen der Benutzer (alphabetisch sortiert).
    • Die zweite Spalte enthlt Knpfe fr den Schnellzugriff auf die verschiedenen Reiter des Benutzers (nur verfgbar, wenn die entsprechende Eigenschaft aktiviert ist). Sie dient ausserdem fr einen schnellen berblick ber die aktivierten Eigenschaften eines Benutzers.

      • Die mglichen Symbole und ihre Bedeutung:
        Symbol Bedeutung
        Image penguin Benutzer verfgt ber allgemeine Eigenschaften
        Image select_user Benutzer verfgt ber ein UNIX-Konto
        Image smallenv Benutzer verfgt ber Umgebungs-Einstellungen
        Image mailto Benutzer verfgt ber ein Mail-Konto
        Image select_phone Benutzer verfgt ber ein Telefon-Konto
        Image fax_small Benutzer verfgt ber ein Fax-Konto
        Image select_winstation Benutzer verfgt ber ein SAMBA-Konto
        Image select_netatalk Benutzer verfgt ber ein Netatalk-Konto
    • Die dritte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufgaben durchzufhren (Ausschneiden, Kopieren, Bearbeiten, Entfernen)
    Die vier Knpfe Image list_root, Image list_back , Image list_home und Image list_reload oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie:

    • Image list_root: Zur Wurzel
    • Image list_back: Eine Abteilung nach oben
    • Image list_home: Zur Basis des angemeldeten Benutzers
    • Image list_reload: Aktuelle Abteilung neu laden
    Es ist weiterhin mglich, die Anzeige der Benutzer mithilfe von Filtern zu beeinflussen (Kasten Filter Image rocket am rechten Rand):

    • Nach Namen suchen:

      • Klick auf * zeigt alle Benutzer an
      • Klick auf einen Buchstaben zeigt alle Benutzer an, deren Name mit dem gewhlten Buchstaben beginnt
      • Klick auf eine Ziffer zeigt alle Benutzer an, deren Name mit der gewhlten Ziffer beginnt
    • Weitere Suchoptionen:
      (Die folgenden Filter arbeiten so, dass nur Benutzer angezeigt werden, die ber mindestens eine der ausgewhlten Optionen verfgen; Standardmssig werden alle echten Benutzer angezeigt, also keine Vorlagen)

      • Zeige Vorlagen: Zeigt Benutzervorlagen (standardmssig deaktiviert)
      • Zeige zweckbezogene Benutzer: Benutzer, die ausschliesslich ber die allgemeinen Angaben verfgen
      • Zeige UNIX-Benutzer: Benutzer, fr die die UNIX-Erweiterung aktiviert ist
      • Zeige Mail-Benutzer: Benutzer, fr die die Mail-Erweiterung aktiviert ist
      • Zeige SAMBA-Benutzer: Benutzer, fr die die SAMBA-Erweiterung aktiviert ist
      • Zeige Proxy-Benutzer: Benutzer, fr die das Proxy-Konto aktiviert ist
    • Zustzlich zu der o.g. funktionalen Filterung kann die Liste durch lexikalische Filterung weiter eingeschrnkt werden. Dazu dienen zum Einen die vordefinierten Buchstaben/Zahlen, die die Liste fr Benutzer einschrnken, die mit dem gewhlten Buchstaben/der Ziffer beginnen. Komplexere Einschrnkungen ber regulre Ausdrcke bietet das Textfeld im unteren Bereich des Kastens Filter (beginnt mit dem Symbol Image search). In dieses Feld knnen Sie beliebige Buchstaben/Ziffern-Kombinationen eingeben, um die Suche einzuschrnken. Um die Suchergebnisse in der Liste anzeigen zu lassen, Klicken Sie auf Filter anwenden.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node44.html0000644000175000017500000000331210766256174020231 0ustar mikemike Bearbeiten:

    Bearbeiten:

    Wenn Sie den Knopf Bearbeiten gedrckt haben, sehen Sie eine zweigeteilte Seite. Auf der linken Seite sehen Sie die aktuell gltigen Nummern/Listen, gegen die ein-/ bzw. ausgehende Nummern geprft werden. Um eine Nummer hinzuzufgen, geben Sie diese um Textfeld unterhalb der Liste ein und klicken Sie den Knopf Hinzufgen. Um eine bereits bestehende Liste aus einer Unterabteilung hinzuzufgen whlen Sie in der rechten Liste die Unterabteilung, die die Liste enthlt und drcken Sie den Knopf Liste zu den Sperrlisten hinzufgen. Um eine oder mehrere Nummern/Listen aus der Liste zu entfernen, markieren Sie diese/n und drcken Sie den Knopf Entfernen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/penguin.png0000644000175000017500000000170410437001512020377 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<VIDATxbd@:::ibbblllʿ~bxGmM3 fgg|)7os)L@ 55K,>?cƌ@@eX &HJJ9߿eXh=Û?xãXXXT@ R@,HDܹs FF ߾`w u Ve Ei]]]_W cױ| / Ni 7$@8''ׯ_ oV~)3 (#߾}@ ͹@2 ?5Bo߾ "" ((y0aUȀ&%r@04߾ b_ ğ^lٺ?cW çO>~+3Öm;?^ze5PM>VVFSfݼyYAJWa?TAH>ÏO^?^I`p| 33==v[,exnfg N* ٘AA %# Ƣ36&!-gE,@pA7@|+ ܫl_}0IENDB`gosa-core-2.7.4/doc/core/de/html/users/node45.html0000644000175000017500000000303310766256174020232 0ustar mikemike Telefon

    Telefon

    Um die Telefon-Erweiterung fr den Benutzer zu aktivieren, klicken Sie auf den Knopf Telefon-Konto erstellen. Wenn Sie die Erweiterung wieder entfernen mchten, klicken Sie auf den Knopf Telefon-Konto entfernen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node4.html0000644000175000017500000000304710766256174020152 0ustar mikemike Generelle Informationen

    Generelle Informationen

    • Um die Bearbeitung des Benutzers (auch neuer Benutzer) abzuschliessen, drcken Sie auf den Knopf Speichern unten rechts; Um den Vorgang zu verwerfen, drcken Sie auf den Knopf Abbrechen, der sich ebenfalls unten rechts befindet.
    • Alle Felder, die mit einem roten Sternchen * enden, sind Pflichtfelder und mssen daher zwingend ausgefllt werden.
    • In der rechten, oberen Ecke findet sich der komplette dn des aktuell geffneten Benutzers.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node42.html0000644000175000017500000000423710766256174020236 0ustar mikemike Alternative Fax-Nummern

    Alternative Fax-Nummern

    Es ist mglich, weitere Fax-Nummern fr den Benutzer einzutragen. Alle alternativen Nummern, die dem Benutzer zugeordnet sind, werden in der Liste aufgefhrt.

    • Hinzufgen: Um eine Nummer hinzuzufgen, geben Sie die Nummer in das Textfeld links neben dem Knopf ein und drcken Sie auf den Knopf Hinzufgen.
    • Lokale hinzufgen: Um eine Nummer hinzuzufgen, die bereits einem Benutzer zugeordnet wurde, drcken Sie auf den Knopf Lokale hinzufgen. Whlen Sie nun aus der Liste einen oder mehrere Benutzer, deren Faxnummern dem aktuell geffneten Benutzer zugeordet whlen sollen, und drcken Sie den Knopf Hinzufgen. Um den Vorgang abzubrechen, drcken Sie auf den Knopf Abbrechen.
    • Entfernen: Um eine oder mehrere Nummern wieder zu entfernen, markieren Sie diese in der Liste (mit gedrckter STRG-Taste knnen Sie mehrere Nummern markieren) und drcken Sie den Knopf Entfernen. Die Nummern werden nun nicht mehr in der Liste aufgefhrt.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/WARNINGS0000644000175000017500000000020010766256174017412 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/users/users.html0000644000175000017500000001062710766256174020304 0ustar mikemike Benutzerverwaltung

    Benutzerverwaltung





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node18.html0000644000175000017500000000171010766256174020232 0ustar mikemike Hotplug-Gerte

    Hotplug-Gerte




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node22.html0000644000175000017500000000245510766256174020234 0ustar mikemike Alternative Adressen

    Alternative Adressen

    Alternative Adressen sind weitere Adressen, unter denen der Benutzer Mails empfangen soll.

    Verwenden Sie den Knopf Hinzufgen um eine alternative Adresse hinzuzufgen. Wenn Sie eine Adresse entfernen mchten, markieren Sie diese und drcken Sie auf den Knopf Entfernen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/rocket.png0000644000175000017500000000147410437001512020225 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/users/node16.html0000644000175000017500000000171310766256174020233 0ustar mikemike Anmelde-Skripte

    Anmelde-Skripte




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/list_home.png0000644000175000017500000000154110437001512020714 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/de/html/users/select_netatalk.png0000644000175000017500000000147410437001512022100 0ustar mikemikePNG  IHDRabKGD pHYs  tIME%5)IDAT8ˍKh\eut2:FcCх|v#%P[pSE V\RPTčR*-U"ZֶBAkJ"6qNssg -]l(֦Sj-*/"=k/mHJXDQu&Rp^v~s`(OOd+שb4?|u->H}.'OЊϞc߰c.$^Q2,]fn! }~D!L< ,(XO|U04Te!-|^mnvҮZ.F)=Il8}zbN_oDmIENDB`gosa-core-2.7.4/doc/core/de/html/users/node47.html0000644000175000017500000000322410766256174020236 0ustar mikemike Telefon-Hardware

    Telefon-Hardware

    Telefon Whlen Sie das Telefon aus der Liste, wenn der Benutzer ein
    Voicemail-PIN* Geben Sie den vierstelligen PIN-Code ein, den der Benutzer eingeben muss, um seine Mailbox zu erreichen.
    Telefon-PIN* Geben Sie den vierstelligen PIN-Code ein, den der Benutzer eingeben muss, um sich an seinem Telefon anzumelden.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node32.html0000644000175000017500000000201410766256174020224 0ustar mikemike WebDAV-Konto

    WebDAV-Konto

    Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den WebDAV-Server erlauben.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node50.html0000644000175000017500000000325010766256174020227 0ustar mikemike About this document ...

    About this document ...

    Benutzerverwaltung

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/users/ users.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node2.html0000644000175000017500000000314610766256174020150 0ustar mikemike Benutzerkonto anlegen

    Benutzerkonto anlegen

    Um ein neues Benutzerkonto anzulegen klicken Sie auf den Knopf Image list_new_user. Befolgen Sie dann die nachfolgende Beschreibung fr die Bearbeitung bestehender Benutzerkonten. Sie mssen zustzlich am Ende des Vorgangs ein Passwort vergeben.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/select_winstation.png0000644000175000017500000000124310437001512022466 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME &(2*0IDATx=Lq]+M TzmTbR`(!!02982888Hd1܌F ba)QN g%'%(GG-*s څ˳cn&8K+1%6(*+Pzd߾8_yߧ G}dX,L=\Ja2RZ!nu_?(z+b4[O ԿouJ]q:1e– |'hw=`v)#24LaT\A2e ?T:ُVJA*]C8M;C޸vhxUάlHf vwi湔!w!atNs7/Ab:V H@!ݼIsQOdw` Z,ּDQ[¾p3xZg= $cj!]L~UM4wynL 0?Fh&VP|6_t&)[9Y.:{7:?=e aOIENDB`gosa-core-2.7.4/doc/core/de/html/users/select_user.png0000644000175000017500000000136110437001512021246 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe Fax

    Fax

    Um fr den Benutzer die Fax-Erweiterung zu aktivieren, klicken Sie auf den Knopf Fax-Konto erzeugen. Um die Erweiterung wieder zu entfernen, klicken Sie auf den Knopf Fax-Konto entfernen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node49.html0000644000175000017500000000206510766256174020242 0ustar mikemike Referenzen

    Referenzen

    Unter Referenzen findet sich eine Auflistung aller Verbindungen des Benutzers zu anderen Eintrge im LDAP (z.B. Gruppen, Systeme etc.).


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/list_back.png0000644000175000017500000000153610437001512020670 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Unix

    Unix

    Um die Unix-Erweiterung zu aktivieren, drcken Sie auf den Knopf UNIX-Konto erstellen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/list_reload.png0000644000175000017500000000161610437001512021235 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/html/users/node27.html0000644000175000017500000001226010766256174020234 0ustar mikemike Terminal-Server

    Terminal-Server

    • Anmeldung am Terminalserver zulassen
    Basisverzeichnis Der Pfad zum Basisverzeichnis des Benutzers in UNC-Notation (z.B. \\SERVER\homes\user). Whlen Sie aus der Liste, unter welchem Laufwerksbuchstaben das Basisverzeichnis verbunden wird.
    Profil-Pfad Der Pfad zum Profil des Benutzers

    • Client-Konfiguration bernehmen
    Startprogramm Das Programm, das beim Start der Sitzung ausgefhrt wird.
    Arbeitsverzeichnis Das Arbeitsverzeichnis, in dem das Programm ausgefhrt wird.

    • Zeitlimit (in Minuten) Mit Hilfe der nachfolgenden Optionen kann fr den Benutzer die Sitzung zeitlich begrenzt werden:
    Verbinden Die maximale Dauer, die der Benutzer verbunden sein darf - nach Ablauf wird die Verbindung getrennt.
    Trennen Eine nicht mehr verbundene Sitzung des Benutzers wird nach Ablauf dieser Zeit automatisch beendet.
    Leerlauf Eine verbundene aber unttige Sitzung des Benutzers wird nach Ablauf dieser Zeit automatisch beendet.

    • Client-Gerte
    Client-Laufwerke beim Anmelden verbinden Die lokalen Laufwerke des Clients als Netzlaufwerke verbinden
    Client-Drucker beim Anmelden verbinden Die lokalen Drucker des Clients als Netzwerkdrucker verbinden
    Standard-Drucker vom Client whlen Als Standard-Drucker den Standard-Drucker des Clients verwenden

    • Verschiedenes:

      - Spiegeln: Diese Option steuert das Verhalten der Remoteberwachung:

      • deaktiviert: Remoteberwachung ist deaktiviert
      • Eingabe EIN, Benachrichtigen EIN: Sitzung kann gesteuert werden, Benutzer wird gefragt
      • Eingabe EIN, Benachrichtigen AUS: Sitzung kann gesteuert werden, Benutzer wird nicht gefragt
      • Eingabe AUS, Benachrichtigen EIN: Sitzung wird nur angezeigt, Benutzer wird gefragt
      • Eingabe AUS, Benachrichtigen AUS: Sitzung wird nur angezeigt, Benutzer wird nicht gefragt
      - Bei Trennung oder abgelaufenem Zeitlimit: Sie knnen whlen, ob eine Sitzung, die getrennt wurde (vom Client oder durch ein abgelaufenes Zeitlimit) automatisch zurckgesetzt werden soll, oder nicht: Zum Zurcksetzen whlen Sie zurcksetzen. Bei trennen bleibt die Sitzung erhalten.

      - Wiederherstellen falls unterbrochen: Wenn eine Sitzung des Benutzers unterbrochen wurde (Absturz, Netzwerkprobleme etc.) kann mithilfe dieser Einstellung festgelegt werden, dass sich der Benutzer nur von dem ursprnglichen Client in seine noch aktive Sitzung verbinden darf. Wenn diese gewnscht ist, whlen Sie den Eintrag nur von vorherigem Client. Mit der Einstellung von jedem Client darf der Benutzer sich von jedem Client zu seiner Sitzung verbinden.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node13.html0000644000175000017500000000351110766256174020226 0ustar mikemike Umgebung

    Umgebung

    Um die Umgebungserweiterung fr einen Benutzer zu aktivieren, klicken Sie auf den Knopf Umgebungs-Erweiterung hinzufgen. Wenn Sie die Umgebungserweiterung deaktivieren mchten, klicken Sie auf den Knopf Umgebungs-Erweiterung-entfernen.


    Wenn die Erweiterung aktiv ist, finden sich folgende Einstellmglichkeiten:



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node30.html0000644000175000017500000000360510766256174020231 0ustar mikemike Proxy Konto

    Proxy Konto

    Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den Proxy-Server erlauben:

    • Filtern von unerwnschten Inhalten (z.B. pornografische oder gewaltttige Inhalte): Diese Option aktiviert den Inhaltsfilter fr den Benutzer. Dies hat zur Folge, dass keine Seiten aufgerufen werden knnen, die ber fragwrdige Inhalte verfgen (bzw. vom Filter als solche erkannt werden).
    • Inhaltsfilterung nur whrend der Arbeitszeit: Die Inhaltsfilterung kann mit dieser Option ausschliesslich fr die Arbeitszeit aktiviert werden (whlen Sie den Zeitraum). Ausserhalb der eingestellten Arbeitszeit ist der Zugriff uneingeschrnkt.
    • Proxynutzung durch Kontingent einschrnken: Mit dieser Option knnen Sie die maximal bertragene Menge fr einen Zeitraum fr den Benutzer festlegen. Wenn die Menge erreicht ist, kann der Benutzer keine Seiten mehr aufrufen.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node23.html0000644000175000017500000000715010766256174020232 0ustar mikemike Mail-Einstellungen

    Mail-Einstellungen

    Unter diese Kategorie fallen weitere Einstellungsmglichkeiten:

    • Keine Zustellung in eigenes Postfach: Wenn diese Option aktiviert ist, werden ankommende Mails ausschliesslich an die Adressen gesendet, die im Kasten Nachrichten weiterleiten an (s. u.)aufgefhrt sind. Eine Speicherung der Nachricht im Postfach des Benutzers findet nicht statt.
    • Urlaubsbenachrichtigung aktivieren: Wenn diese Option aktiviert ist, wird der Inhalt des Kastens Urlaubsbenachrichtung an den Sender jeder ankommenden Mail gesendet.
    • Verschiebe Mails mit einem SPAM-Level grer als [Spam-Level] in den Ordner [Ordner]: Die ankommenden Mails werden auf mglichen Spam-Inhalt geprft. Diese Prfung erkennt SPAM mit einer gewissen Wahrscheinlichkeit, die als Spam-Level in den Kopf der Nachricht geschrieben wird (blicherweise haben SPAM-Mails einen SPAM-Level ab 4-6).
      Wenn Sie diese Option aktivieren, werden Mails die ber mindestens den gewhlten SPAM-Level verfgen in den gewnschten Ziel-Ordner verschoben, ohne dass diese direkt im Posteingang des Benutzers sichtbar sind.
    • Mails abweisen, die grer sind als [Gre] MB: Ankommende Mails (fr diesen Benutzer), die grer sind als der angegebene Wert (in MB), werden nicht zugestellt.
    • Nachrichten weiterleiten an:
      Dieser Kasten dient dazu, Kopien der ankommenden Mails an weitere Adressen zu versenden (z.B. Telefone, PDAs etc.).

      - Adresse hinzufgen: Um eine Adresse hinzuzufgen, tragen Sie diese in das Textfeld unterhalb des Kastens ein und drcken den Knopf Hinzufgen. Die Adresse wird nun in der Liste aufgefhrt.

      - Lokale Adresse hinzufgen: Um eine lokale Adresse (=Adresse auf demselben Mail-Server) hinzuzufgen, tragen Sie den Namen des Postfachs in das Textfeld unterhalb des Kastens ein und drcken den Knopf Lokale hinzufgen. Die lokale Adresse wird nun in der Liste aufgefhrt.

      - (Lokale) Adresse entfernen: Um eine Adresse wieder aus der Liste zu entfernen, markieren Sie den entsprechenden Eintrag in der Liste und drcken den Knopf Entfernen. Der Eintrag wird nun nicht mehr in der Liste aufgefhrt.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node24.html0000644000175000017500000000304210766256174020227 0ustar mikemike Erweiterte Mail-Einstellungen

    Erweiterte Mail-Einstellungen

    • Der Benutzer darf nur lokale Mails senden und empfangen: Wenn diese Option aktiv ist, darf der Benutzer ausschliesslich Mails an interne Adressaten versenden und von diesen empfangen. Eingehende Mails von externen Adressen werden nicht zugestellt.
    • Eigenes Sieve-Skript verwenden: Wenn diese Option aktiv ist, werden alle Mail-Einstellungen deaktiviert! Dies ist erforderlich, wenn eigene Sieve-Skripte verwendet werden sollen, da diese sonst berschrieben werden.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node26.html0000644000175000017500000000343210766256174020234 0ustar mikemike Allgemein

    Allgemein

    Basisverzeichnis Der Pfad zum Basisverzeichnis des Benutzers in UNC-Notation (z.B. \\SERVER\homes\user). Whlen Sie aus der Liste, unter welchem Laufwerksbuchstaben das Basisverzeichnis verbunden wird.
    Domne Die Domne, zu der der Benutzer zugeordnet ist.
    Anmeldeskript Das Programm, das beim Start der Sitzung ausgefhrt wird.
    Profil-Pfad Das Arbeitsverzeichnis, in dem das Programm ausgefhrt wird.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node5.html0000644000175000017500000000234510766256174020153 0ustar mikemike Allgemein

    Allgemein



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node17.html0000644000175000017500000000167110766256174020237 0ustar mikemike Freigaben

    Freigaben




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/fax_small.png0000644000175000017500000000142310437001512020676 0ustar mikemikePNG  IHDRagAMA7IDATx}k\U~mqlF &TjD4PDPp#ؔ Eѭ !l])2։|ܙ0s>]Y^xy~⬭}Y:S@\ ^X^^2a"<<h|JucѸ~wccFYH)QJJ<Pַ?yZ?0AO }FÔa2L =zݔVK;$I{eee!I8&5os5 O'Gєxï *EQda~gKw-`c}3⽆4osKweYҚ0#5eY9BH9;Th+(Z#,'(Za! }JkvVc ZYӪƘ+5ƘAcDQhcRR@V}/.BW>RJ<ϋn{>;;f-Ӕ`~?PoV8pΡ4r||L$ςv4w=s,c'b| 4#=2c(˒_i8澨z8?~*ty~\qůTi9j2 C0R\ 9GV#"Ӹwd2) ^K/b{IENDB`gosa-core-2.7.4/doc/core/de/html/users/node15.html0000644000175000017500000000170210766256174020230 0ustar mikemike Kiosk-Profil

    Kiosk-Profil




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node40.html0000644000175000017500000000271210766256174020230 0ustar mikemike Allgemein

    Allgemein

    Fax* Die Fax-Nummer des Benutzers
    Sprache Whlen Sie die gewnschte Sprache aus der Liste
    Auslieferungsformat Whlen Sie das gewnschte Format aus der Liste




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node36.html0000644000175000017500000000200610766256174020231 0ustar mikemike PPTP-Konto

    PPTP-Konto

    Mit diesem Konto knnen Sie dem Benutzer den VPN-Zugriff via PPTP erlauben.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node6.html0000644000175000017500000001100010766256174020140 0ustar mikemike Persnliche Informationen

    Persnliche Informationen

    Nachname* Nachname des Benutzers
    Vorname* Vorname des Benutzers
    Kennung* Kennung (=Benutzername) des Benutzers
    Titel Anrede (Herr, Frau etc.)
    Akademischer Titel Akademischer Titel (z.B. Prof., Dr., Prof. Dr., etc.)
    Geburtsdatum Mit dem Knopf Setzen kann das Geburtsdatum eingestellt werden
    Geschlecht Whlen Sie den passenden Eintrag aus der Liste.
    Bevorzugte Sprache Sprache der Oberflche (de_DE=Deutsch, en = Englisch, etc.)
    Basis Die Abteilung des Benutzers (Die Verwaltung der Abteilungen geschieht ber den Knopf Abteilungen im linken Men).
    Benutzerbild Um ein Bild des Benutzers zu speichern, drcken Sie auf den Knopf Bild ndern. Whlen Sie das gewnschte Bild. Das Bild wird nun angezeigt. Um es zu speichern, drcken Sie auf den Knopf Speichern. Wenn Sie das Bild nicht speichern mchten, drcken Sie auf den Knopf abbrechen.
    Adresse Die Privat-Adresse des Benutzers
    Privat-Telefon Die Private Telefonnummer des Benutzers (Sie sollten diese sinnvollerweise im internationalen Format einfgen, z.B. +49 1234 555-0)
    Homepage Die Homepage des Benutzers
    Passwort-Speicherung Whlen Sie die Methode aus, mit der das Passwort verschlsselt werden soll, bevor es im LDAP gespeichert wird.
    Zertifikate Drcken Sie auf den Knopf Zertifikate bearbeiten. Sie knnen dann drei verschiedene Zertifikate hochladen. Zum Speichern der Zertifikate, drcken Sie auf Speichern.
    Kerberos Drcken Sie auf den Knopf Eigenschaften bearbeiten




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node28.html0000644000175000017500000000633010766256174020236 0ustar mikemike Zugriffsoptionen

    Zugriffsoptionen

    Die unter Zugriffsoptionen aufgefhrten Einstellung dienen zum Anpassen der Passwort-Einstellungen. Sie sollten genau aufpassen, welche Einstellungen Sie vornehmen.

    • Die folgenden Optionen sind verfgbar:

      • Der Benutzer darf das Passwort vom Client aus ndern: Wenn diese Option aktiv ist, darf der Benutzer vom Windows-Client sein Passwort ndern.
      • Die Anmeldung vom Windows-Client erfordert kein Passwort: Wenn diese Option aktiv ist, bentigt der Benutzer kein Passwort, um sich anzumelden.
      • Samba-Konto sperren: Wenn diese Option aktiv ist, kann der Benutzer sich nicht mehr verbinden.
      • Passwort luft ab am: Whlen Sie ein Datum, an dem das Passwort abluft, das Konto wird dann automatisch gesperrt.
      • Limitiere Logon-Zeit: Zu dieser Einstellung sind keine Informationen verfgbar (sambaLogonTime).
      • Limitiere Logoff-Zeit: Zu dieser Einstellung sind keine Informationen verfgbar (sambaLogoffTime).
      • Konto luft ab am: Whlen Sie ein Datum, an dem das Konto automatisch gesperrt wird.
    • Erlaube Verbindungen nur von diesen Arbeitsstationen: Wenn Sie den Zugriff des Benutzers auf eine bis mehrere Arbeitsstationen beschrnken mchten, tragen Sie diese in die Liste ein. Wenn die Liste leer ist, ist der Zugriff von allen Clients mglich.

      • Hinzufgen: Um eine Arbeitsstation hinzufgen, klicken Sie auf den Knopf Hinzufgen und whlen Sie eine oder mehrere Arbeitsstationen aus der Liste, indem Sie sei markieren. Wenn Sie mit der Auswahl zufrieden sind, drcken Sie den Knopf Hinzufgen. Die gewnschten Arbeitsstation werden nun in der Liste aufgefhrt.
      • Entfernen: Um eine oder mehrere Arbeitsstationen aus der Liste zu entfernen, markieren Sie den oder die gewnschten Eintrge in der Liste und drcken auf den Knopf entfernen. Die markierten Arbeitsstationen werden nun nicht mehr in der Liste aufgefhrt.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node21.html0000644000175000017500000000324110766256174020225 0ustar mikemike Allgemein

    Allgemein

    Primre Adresse* Die Mail-Adresse des Benutzers
    Server Der Server, auf dem das Postfach des Benutzers gespeichert werden soll.
    Kontingent-Nutzung Der momentan genutzte Speicherplatz des Kontingents.
    Kontingent-Gre Die maximale Gre der Mailbox




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node9.html0000644000175000017500000000411010766256174020147 0ustar mikemike Generic

    Generic

    Basisverzeichnis* Das persnliche Verzeichnis des Benutzers
    Shell Die Shell, die beim Anmelden ausgefhrt werden soll (/bin/false sorgt dafr, dass sich der Benutzer nicht anmelden kann)
    Primre Gruppe Die primre Gruppe des Benutzers, zu der er hinzugefgt werden soll (Um Gruppen zu verwalten, klicken Sie aus dem Men-Abschnitt Administration auf den Knopf Gruppen)
    Status Zeigt an, ob das Konto aktiv ist
    Erzwinge UID/GID Mit dieser Funktion knnen die UNIX UID und GID auf einen bestimmten Wert erzwungen werden.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node35.html0000644000175000017500000000305410766256174020234 0ustar mikemike Opengroupware

    Opengroupware

    Mit dieser Option knnen Sie dem Benutzer den Zugriff auf den Opengroupware-Server erlauben:

    • rtliches Team: Das rtliche Team, zu dem der Benutzer gehren wird.
    • Benutzer-Vorlage:
    • Gesperrt: Diese Option dient dazu, das Opengroupware-Konto zeitweilig zu sperren, ohne die Einstellungen zu verlieren. Wenn sie aktiv ist, kann der Benutzer sich nicht zum Opengroupware-Server verbinden.
    • Teams: Aktivieren Sie die Teams, denen der Benutzer angehren soll.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node31.html0000644000175000017500000000471010766256174020230 0ustar mikemike FTP Konto

    FTP Konto

    Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den FTP-Server erlauben:

    • Bandbreite: Erlaubt Einschrnkung der Bandbreite (Aus Sicht des Benutzers)

      • Upload-Bandbreite: Die maximale Bandbreite fr den Upload (Senderichtung). Wenn Sie 0 eintragen, ist die Beschrnkung nicht aktiv.
      • Download-Bandbreite: Die maximale Bandbreite fr den Download (Empfangsrichtung). Wenn Sie 0 eintragen, ist die Beschrnkung nicht aktiv.
    • Verhltnis: Der Benutzer kann gezwungen werden, ein Verhltnis von Up- und Download von Dateien einzuhalten.

      • Hoch- / heruntergeladene Dateien: Stellen Sie das Verhltnis in Dateien ein (z.B. 4/1: 4 Dateien mssen hochgeladen werden, damit der Benutzer eine Datei herunterladen darf).
    • Kontingent: Einschrnkung des Kontingents in Dateien oder bertragenen Datenmengen

      • Dateien: Die maximale Anzahl an Dateien, die der Benutzer bertragen darf. Wenn Sie 0 eintragen, ist die Beschrnkung nicht aktiv.
      • Gre: Die maximale Datenmenge, die der Benutzer bertragen darf. Wenn Sie 0 eintragen, ist die Beschrnkung nicht aktiv.
    • Verschiedenes:

      • Temporres Abschalten des FTP-Zugriffs: Mit dieser Option knnen Sie den Zugriff auf den FTP-Server deaktivieren, ohne dabei die vorgenommenen Einstellungen zu verlieren.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node14.html0000644000175000017500000000166310766256174020235 0ustar mikemike Profile

    Profile




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node11.html0000644000175000017500000000460110766256174020225 0ustar mikemike Konto

    Konto

    Die Einstellungen dieser Kategorie beziehen sich auf Einschrnkungen fr das Passwort des Benutzers (dies betrifft selbstverstndlich lediglich das UNIX-Konto):

    • Der Benutzer muss bei ersten Anmelden sein Passwort ndern: Mit dem Setzen dieser Option wird erzwungen, dass der Benutzer beim ersten Anmeldevorgang zunchst sein Passwort ndern muss.
    • Passwort kann bis zu [Anzahl der Tage] Tage nach der letzten nderung nicht gendert werden:
    • Der Benutzer muss sein Passwort nach [Anzahl der Tage] Tagen ndern: Mit dem Setzen dieser Option erhlt der Benutzer nach dem gewhlten Zeitraum die Aufforderung, sein Passwort zu ndern.
    • Passwort luft ab am [Datum]: Mit dem Setzen dieser Option kann der Benutzer sich mit Ablauf des gewhlten Datums nicht mehr anmelden.
    • Konto nach [Anzahl der Tage] Tagen nach Ablauf ohne Aktivitt deaktivieren: Wenn der gewhlte Zeitraum ohne Aktivitt (ohne Anmeldung) erreicht wurde, wird das Passwort deaktiviert, der Benutzer kann sich somit nicht mehr anmelden.
    • Benutzer [Anzahl der Tage] Tage vor dem Ablauf des Passwortes warnen: Der Benutzer erhlt eine Warnung, dass sein Passwort zum festgelegten Zeitpunk abluft.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node38.html0000644000175000017500000000201210766256174020230 0ustar mikemike GLPI-Konto

    GLPI-Konto

    If you activated the GLPI option, the user will access GLPI software.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/index.html0000644000175000017500000001062710766256174020252 0ustar mikemike Benutzerverwaltung

    Benutzerverwaltung





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node41.html0000644000175000017500000000310610766256174020227 0ustar mikemike Auslieferungsmethode

    Auslieferungsmethode

    • Temporres Abschalten der Fax-Benutzung: Deaktiviert das Fax-Konto des Benutzers, ohne die Einstellungen zu verlieren (Wenn Sie das Konto dauerhaft entfernen mchten, klicken Sie den Knopf Fax-Konto entfernen).
    • Fax als Mail ausliefern an: Die Mail-Adresse, an die das Fax im ausgewhlten Format gesendet wird (blicherweise die Mailbox des Benutzers).
    • Fax an Drucker weiterleiten: Whlen Sie aus der Liste den Drucker, auf dem ein empfangenes Fax gedruckt wird.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node37.html0000644000175000017500000000206110766256174020233 0ustar mikemike PHPScheduleit-Konto

    PHPScheduleit-Konto

    Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den PHPscheduleit-Server erlauben:



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node7.html0000644000175000017500000000576210766256174020163 0ustar mikemike Angabe zur Organisationseinheit

    Angabe zur Organisationseinheit

    Organisation Der Name der Organisation (z.B. GONICUS GmbH)
    Abteilung Der Name der Abteilung (z.B. Technik)
    Abteilungs-Nr. Die Nummer der Abteilung (z.B. )
    Angestellten-Nr. Die Nummer des Angestellten
    Anstellungsart Die Position des Angestellten
    Zimmer-Nr. Die Zimmernummer des Angestellten
    Telefon Die Telefonnummer des Angestellten
    Mobiltelefon Die Mobiltelefonnummer des Angestellten
    Pager Die Pager-Nummer des Angestellten
    Fax Die Faxnummer des Angestellten
    Ort Der Ort der Organisation (oder Abteilung)
    Land Das Land der Organisation (oder Abteilung)
    Adresse Die Postadresse der Organisation (oder Abteilung)




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node46.html0000644000175000017500000000253710766256174020243 0ustar mikemike Telefonnummern

    Telefonnummern

    In dieser Liste werden die Telefonnummern aufgefhrt, die dem Benutzer zugeordnet sind.

    • Nummer hinzufgen: Geben Sie die Nummer in die Eingabezeile ein und drcken Sie den Knopf Hinzufgen
    • Nummer entfernen: Markieren Sie die Nummer aus der Liste und drcken Sie den Knopf Entfernen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node3.html0000644000175000017500000000237210766256174020151 0ustar mikemike Ein bestehendes Benutzerkonto bearbeiten

    Ein bestehendes Benutzerkonto bearbeiten

    Klicken Sie in der Liste der Benutzer auf den Benutzernamen des gewnschten Benutzers. Die Seite, die nun geladen wird, verfgt ber Reiter, die jeweils fr eine Erweiterung stehen (aktuell sind dies u.a. Allgemein, Unix, Umgebung, usw.).



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/users/node19.html0000644000175000017500000000166610766256174020245 0ustar mikemike Drucker

    Drucker




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/0000755000175000017500000000000011752422551016413 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/groups/list_root.png0000644000175000017500000000152410437001512021126 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/de/html/groups/node20.html0000644000175000017500000000325310766256174020405 0ustar mikemike About this document ...

    About this document ...

    Gruppenverwaltung

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/groups/ groups.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/node12.html0000644000175000017500000000233010766256174020401 0ustar mikemike Anwendungen

    Anwendungen

    Um die Anwendungs-Eigenschaften fr diese Gruppe zu aktivieren, drcken Sie auf den Knopf Anwendungen erstellen. Um die Anwendungs-Eigenschaften wieder zu entfernen, drcken Sie auf den Knopf Anwendung entfernen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/smallenv.png0000644000175000017500000000133510437001512020731 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/de/html/groups/node10.html0000644000175000017500000000171210766256174020402 0ustar mikemike Hotplug-Gerte

    Hotplug-Gerte




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/mailto.png0000644000175000017500000000117310437001512020375 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8(IDAT8œAKTQ׹yXf-f˚SF#J ČV>F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/doc/core/de/html/groups/labels.pl0000644000175000017500000000025010437001512020174 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/groups/select_application.png0000644000175000017500000000167710437001512022763 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/de/html/groups/node1.html0000644000175000017500000001662710766256174020335 0ustar mikemike Liste der Gruppen

    Liste der Gruppen

    Die Liste der Gruppen dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag Gruppen aus der Kategorie Administration (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Gruppen geladen (berschrift: Gruppenverwaltung). Auf dieser Seite knnen Gruppen hinzugefgt, bearbeitet oder entfernt werden.

    Die Liste ist in drei Spalten geteilt:

    • Die erste Spalte enthlt zunchst die verfgbaren Abteilungen, dann die Namen der Gruppn (alphabetisch sortiert)
    • Die zweite Spalte enthlt Knpfe fr den Schnellzugriff auf die verschiedenen Reiter der Gruppe (nur verfgbar, wenn die entsprechende Erweiterung aktiviert ist). Sie dient daher ausserdem fr einen schnellen berblick ber die aktivierten Erweiterungen einer Gruppe

      • Die mglichen Symbole und ihre Bedeutung:
        Symbol Bedeutung
        Image select_groups Gruppe verfgt ber UNIX-Eigenschaften
        Image smallenv Gruppe verfgt ber Umgebungs-Einstellungen
        Image mailto Gruppe verfgt ber ein Mail-Konto
        Image select_winstation Gruppe verfgt ber SAMBA-Eigenschaften
        Image select_application Gruppe verfgt ber Anwendungs-Eigenschaften
    • Die dritte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufgaben durchzufhren (Ausschneiden, Kopieren, Bearbeiten, Entfernen)
    Die Knpfe (Image list_root, Image list_back, Image list_home, Image list_reload) dienen zur Navigation innerhalb der Abteilungshierarchie:


    • Image list_root Zur Wurzel
    • Image list_back Eine Abteilung nach oben
    • Image list_home Zur Basis des Benutzers
    • Image list_reload Aktuelle Abteilung neu laden
    Es ist weiterhin mglich, die Anzeige der Gruppen mithilfe von Filtern zu beeinflussen (Kasten Filter Image rocket am rechten Rand):

    • Nach Namen suchen:

      • Klick auf * zeigt alle Gruppen an
      • Klick auf einen Buchstaben zeigt alle Gruppen an, deren Namen mit dem gewhlten Buchstaben beginnt
      • Klick auf eine Ziffer zeigt alle Gruppen an, deren Name mit der gewhlten Ziffer beginnt
    • Weitere Suchoptionen:
      (Die folgenden Filter arbeiten so, dass nur Gruppen angezeigt werden, die ber mindestens eine der ausgewhlten Optionen verfgen; Standardmssig werden alle Gruppen angezeigt

      • Zeige primre Gruppen: Zeigt Gruppen, die fr mindestens einen Benutzer die primre Gruppe ist
      • Zeige Samba-Gruppen: Zeigt Gruppen, die ber Samba-Eigenschaften verfgen
      • Zeige Anwendungs-Gruppen: Zeigt Gruppen, die ber Anwendungs-Eigenschaften verfgen
      • Zeige E-Mail-Gruppen: Zeigt Gruppen, die ber ein Mail-Konto verfgen
      • Zeige Funktions-Gruppen: Zeigt Gruppen, die nur ber die generischen Attribute verfgen
    • Komplexere Einschrnkungen ber regulre Ausdrcke bieten die Textfelder im unteren Bereich des Kastens Filter:

      • Im ersten Feld kann nach Namen gesucht werden, die auf den eingebenen regulren Ausdruck passen.
      • Im zweiten Feld kann nach Gruppen anhand eines eingebenen Benutzerausdrucks gesucht werden, es werden also Gruppen gefunden, in denen ein auf den Suchausdruck passender Benutzer Mitglied ist.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/groups.html0000644000175000017500000000466110766256174020641 0ustar mikemike Gruppenverwaltung

    Gruppenverwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/node4.html0000644000175000017500000000300510766256174020322 0ustar mikemike Generelle Informationen

    Generelle Informationen

    • Um die Bearbeitung der Gruppe (auch neuer Gruppen) abzuschliessen, drcken Sie auf den Knopf Speichern unten rechts; Um den Vorgang zu verwerfen, drcken Sie auf den Knopf Abbrechen, der sich ebenfalls unten rechts befindet.
    • Alle Felder, die mit einem roten Sternchen * enden, sind Pflichtfelder und mssen daher zwingend ausgefllt werden.
    • In der rechten, oberen Ecke findet sich der komplette dn der aktuell geffneten Gruppe.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/WARNINGS0000644000175000017500000000017710441304026017561 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/groups/node18.html0000644000175000017500000000214510766256174020413 0ustar mikemike Zugriffsregeln

    Zugriffsregeln

    Mithilfe der Zugriffsregeln kann fein granuliert eingestellt werden, ber welchen GOsa-spezifischen Rechte die Mitglieder dieser Gruppe verfgen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/rocket.png0000644000175000017500000000147410437001512020403 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/groups/node16.html0000644000175000017500000000332410766256174020411 0ustar mikemike Geteilter Ordner

    Geteilter Ordner

    Standard-Berechtigungen Whlen Sie die Berechtigung, die fr alle Benutzer gilt, die nicht explizit aufgefhrt sind.
    Mitglieder-Berechtigungen Whlen Sie die Berechtigung, die fr alle Benutzer gilt, die Mitglieder in dieser Gruppe sind.
    Weitere Email-Adresse Whlen Sie die Berechtung fr eine weitere Email-Adresse. Drcken Sie auf Hinzufgen, um die Adresse mit der Berechtigung hinzuzufgen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/list_home.png0000644000175000017500000000154110437001512021072 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/de/html/groups/node2.html0000644000175000017500000000277410766256174020334 0ustar mikemike Gruppe anlegen

    Gruppe anlegen

    Um eine neue Gruppe anzulegen klicken Sie auf den Knopf Image list_new_group. Befolgen Sie dann die nachfolgende Beschreibung fr die Bearbeitung bestehender Gruppen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/select_winstation.png0000644000175000017500000000124310437001512022644 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME &(2*0IDATx=Lq]+M TzmTbR`(!!02982888Hd1܌F ba)QN g%'%(GG-*s څ˳cn&8K+1%6(*+Pzd߾8_yߧ G}dX,L=\Ja2RZ!nu_?(z+b4[O ԿouJ]q:1e– |'hw=`v)#24LaT\A2e ?T:ُVJA*]C8M;C޸vhxUάlHf vwi湔!w!atNs7/Ab:V H@!ݼIsQOdw` Z,ּDQ[¾p3xZg= $cj!]L~UM4wynL 0?Fh&VP|6_t&)[9Y.:{7:?=e aOIENDB`gosa-core-2.7.4/doc/core/de/html/groups/list_back.png0000644000175000017500000000153610437001512021046 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Freigaben

    Freigaben




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/list_reload.png0000644000175000017500000000161610437001512021413 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/html/groups/node13.html0000644000175000017500000000370310766256174020407 0ustar mikemike Mail

    Mail

    Ein Mail-Konto einer Gruppe ist ein gemeinsam genutzter Ordner (Shared Folder) auf einem IMAP-Server, d.h. dass mehr als ein Benutzer Zugriff auf die Mails in diesem Ordner hat. Diese Ordner sind sinnvoll, um z.B. Verteiler anzulegen, aber auch, um Dateien (wie z.B. Kalender oder Adressbcher) abzulegen. Um ein Mail-Konto fr die Gruppe zu erstellen, drcken Sie auf den Knopf Neues Mail-Konto erzeugen. Um ein vorhandenes Mail-Konto wieder zu entfernen, drcken Sie auf den Knopf Mail-Konto entfernen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/select_groups.png0000644000175000017500000000154410437001512021770 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^E Allgemein

    Allgemein

    Gruppenname* Der Name der Gruppe
    Beschreibung Die Beschreibung (oder ein Kommentar) der Gruppe
    Basis* Die Abteilung der Gruppe (Die Verwaltung der Abteilungen geschieht ber den Knopf Abteilungen im linken Men).

    • Erzwinge GID: Mit dieser Funktion kann die UNIX GID einmalig auf bestimmten Wert gesetzt werden
    • [Samba-Gruppe] in der Domain [Domne]: Diese Einstellung legt fest, ob die Gruppe auch fr Windows-Benutzer aktviert ist. Dabei knnen Sie die folgenden Einstellungsmglichkeiten whlen:

      • Samba-Gruppe: Die Gruppe ist eine normale Samba-Gruppe
      • Domnen-Administratoren: Die Gruppe ist speziell fr Domnen-Administratoren
      • Domnen-Benutzer: Die Gruppe ist speziell fr Domnen-Benutzer
      • Domnen-Gste: Die Gruppe ist speziell fr Domnen-Gste
    • Mitglieder sind in einer Telefon-Gruppe: Diese Funktion dient dazu, organisatorische Bereiche auch telefonisch abzutrennen. Weitere Dokumentation wird folgen.
    • Gruppenmitglieder: Die Gruppe verfgt ber Mitglieder, die in dieser Liste aufgefhrt werden. Es knnen Mitglieder hinzugefgt und entfernt werden:

      • Hinzufgen: Um ein Gruppenmitglieder hinzuzufgen, drcken Sie auf den Knopf Hinzufgen. Whlen Sie aus der Liste einen oder mehrere Benutzer und drcken Sie auf den Knopf Hinzufgen. Die neuen Mitglieder werden nun in der Liste aufgefhrt.
        Wenn Sie den Vorgang abbrechen mchten, drcken Sie auf den Knopf Abbrechen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/node17.html0000644000175000017500000000341110766256174020407 0ustar mikemike Weiterleiten der Nachrichten an nicht-Gruppenmitglieder

    Weiterleiten der Nachrichten an nicht-Gruppenmitglieder

    Mithilfe dieser Eigenschaften knnen Nachrichten, die an den gemeinsam genutzten Order geschickt werden, automatisch an weitere Adressen versendet werden. Geben Sie dazu in das Textfeld die Adresse ein, die Mails empfangen soll und drcken Sie auf den Knopf Hinzufgen. Wenn Sie einen oder mehrere Benutzer in die Liste aufnehmen mchten, die in dieser Organisation bereits ber ein Mail-Konto verfgen, drcken Sie auf den Knopf Lokale hinzufgen. Whlen Sie den oder die gewnschten Benutzer aus der Liste, in dem Sie diese markieren und klicken Sie auf den Knopf Hinzufgen, um Sie in die Liste zu bernehmen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/node15.html0000644000175000017500000000247710766256174020420 0ustar mikemike Alternative Adressen

    Alternative Adressen

    Alternative Adressen sind weitere Adressen, unter denen der gemeinsam genutzte Ordner Mails empfangen soll.

    Verwenden Sie den Knopf Hinzufgen um eine alternative Adresse hinzuzufgen. Wenn Sie eine Adresse entfernen mchten, markieren Sie diese und drcken Sie auf den Knopf Entfernen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/list_new_group.png0000644000175000017500000000161710437001512022153 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 S Umgebung

    Umgebung

    Um die Umgebungs-Erweiterung zu aktivieren, drcken Sie auf den Knopf Umgebungs-Erweiterung hinzufgen. Um die Umgebungs-Erweiterung wieder zu entfernen, drcken Sie auf den Knopf Umgebungs-Erweiterung entfernen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/node9.html0000644000175000017500000000171510766256174020335 0ustar mikemike Anmelde-Skripte

    Anmelde-Skripte




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/node14.html0000644000175000017500000000340610766256174020410 0ustar mikemike Allgemein

    Allgemein

    Primre Adresse* Die primre Adresse des gemeinsam genutzten Ordners
    Server Whlen Sie den Mail-Server aus der Liste, auf dem das Konto verwaltet wird.
    Kontingent-Nutzung Zeigt die Ausnutzung des Kontingents an (Wenn ein Kontingent definiert wurde)
    Kontingent-Gre Die Grsse des Kontingents der Mail-Benutzung der Gruppe (in KB). Dies betrifft ein- u. ausgehende Mail.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/node11.html0000644000175000017500000000167010766256174020406 0ustar mikemike Drucker

    Drucker




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/index.html0000644000175000017500000000466110766256174020431 0ustar mikemike Gruppenverwaltung

    Gruppenverwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/groups.css0000644000175000017500000000213410766256174020456 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN. { } #hue170 { color: #ff0000; } #hue171 { color: #ff0000; } #hue174 { color: #ff0000; } #hue45 { color: #000000; } #hue79 { color: #0000ff; } gosa-core-2.7.4/doc/core/de/html/groups/node7.html0000644000175000017500000000414710766256174020335 0ustar mikemike Profile

    Profile

    • Benutze Profil-Verwaltung:

      • Profil-Pfad:
      • Profil-Kontingent:
      • Profil lokal zwischenspeichern:
    • Kiosk-Profil: Wenn die Gruppe ber ein Kiosk-Profil verfgen soll, whlen Sie das gewnschte Profil aus der Liste.

      • Verwalten: Um die Kiosk-Profile zu verwalten, klicken Sie auf den Knopf Verwalten. Hier knnen Sie vorhandene Kiosk-Profile entfernen, sowie neue Kiosk-Profile hinzufgen.
    • Auflsung nderbar whrend des Betriebs: Wenn Sie mchten, dass Mitglieder dieser Gruppe die Auflsung Ihres Arbeitsplatzrechners whrend der Sitzung ndern drfen, aktivieren Sie diese Option.
    • Auflsung: Legen Sie die Auflsung fr Arbeitsplatzrechner, die dieses Kiosk-Profil verwenden, fest, indem Sie die gewnschte Auflsung aus der Liste whlen. Um automatisch die beste Auflsung zu verwenden, whlen Sie auto.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/node3.html0000644000175000017500000000241710766256174020327 0ustar mikemike Eine bestehende Gruppe bearbeiten

    Eine bestehende Gruppe bearbeiten

    Klicken Sie in der Liste der Gruppen auf den Gruppennamen der Gruppe, die Sie bearbeiten mchten. Die Seite, die nun geladen wird, verfgt ber Reiter, die jeweils fr eine Erweiterung stehen (aktuell sind dies u.a. Allgemein, Umgebung, Anwendungen, Mail, Zugriffsregeln, usw.).



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/groups/node19.html0000644000175000017500000000202310766256174020407 0ustar mikemike Referenzen

    Referenzen

    Unter Referenzen werden alle Verbindungen dieser Gruppe zu anderen Teilen des LDAP-Baumes angezeigt.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/fonreports/0000755000175000017500000000000011752422551017275 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/fonreports/labels.pl0000644000175000017500000000025010443263556021075 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/fonreports/node1.html0000644000175000017500000000262110766256174021204 0ustar mikemike Telefon-Berichte

    Telefon-Berichte

    Dieses Modul dient der Anzeige von Telefonberichten. Dabei kann die Anzeige mithilfe von Filtern beeinflusst werden.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/fonreports/WARNINGS0000644000175000017500000000017710443263556020461 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/fonreports/rocket.png0000644000175000017500000000147410443263556021304 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/fonreports/node2.html0000644000175000017500000000452710766256174021214 0ustar mikemike Filter

    Filter Image rocket

    Suche nach ZEICHENKETTE in ABTEILUNG whrend MONAT in JAHR:

    ZEICHENKETTE Geben Sie die Zeichenkette ein, nach der sie suchen mchten.
    ABTEILUNG Whlen Sie die Abteilung aus der Liste, auf die Sie die Suche begrenzen mchten.
    MONAT Whlen Sie den Monat aus der Liste, auf den Sie die Suche begrenzen mchten.
    JAHR Whlen Sie das Jahr aus der Liste, auf das Sie die Suche begrenzen mchten.

    Zum Durchfhren der Suche mit den vorgenommenen Einstellungen drcken Sie auf den Knopf Suchen ganz rechts.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/fonreports/fonreports.html0000644000175000017500000000263010766256174022377 0ustar mikemike Zustzliches

    Zustzliches






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/fonreports/index.html0000644000175000017500000000263010766256174021305 0ustar mikemike Zustzliches

    Zustzliches






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/fonreports/fonreports.css0000644000175000017500000000201210443263556022207 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } #hue35 { color: #000000; } gosa-core-2.7.4/doc/core/de/html/fonreports/node3.html0000644000175000017500000000326610766256174021214 0ustar mikemike About this document ...

    About this document ...

    Zustzliches

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/fonreports/ fonreports.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/conference/0000755000175000017500000000000011752422551017203 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/conference/select_new_component.png0000644000175000017500000000070410442247761024127 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 'QIDAT8˥1HBQdCA57Ec%M8DKFj)[l5&VA5$aCK.oZo٫|:^s^%"8kn'Qjȿ/^5<W Zg{>zQ.7S`gO\Q}dvt08"z Q^Xwn䡢\sX0n]F*#?6yT)p1A 0y(+ϯ 1L@O|`e}-) ilj,˒j" vv*_4 n8 +=uxR@+oN IENDB`gosa-core-2.7.4/doc/core/de/html/conference/list_root.png0000644000175000017500000000152410442247761021734 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/de/html/conference/search.png0000644000175000017500000000177710442247761021175 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/de/html/conference/conference.html0000644000175000017500000000300010766256174022203 0ustar mikemike Konferenz-Verwaltung

    Konferenz-Verwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/conference/labels.pl0000644000175000017500000000025010442247761021002 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/conference/node1.html0000644000175000017500000001114510766256174021113 0ustar mikemike Liste der Konferenz-Rume

    Liste der Konferenz-Rume

    Die Liste der Konferenz-Rume dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag Telefon-Konferenzen aus der Kategorie Administration (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Konferenz-Rume geladen (berschrift: Konferenz-Verwaltung). Auf dieser Seite knnen Telefon-Konferenzen hinzugefgt, bearbeitet oder entfernt werden.

    Die Liste ist in vier Spalten geteilt:

    • Die erste Spalte enthlt den Namen der Telefon-Konferenz
    • Die zweite Spalte enthlt den Besitzer der Telefon-Konferenz
    • Die dritte Spalte zeigt an, ob fr die Telefon-Konferenz ein PIN voreingestellt wurde
    • Die vierte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufgaben durchzufhren (Bearbeiten, Entfernen).
    Die vier Knpfe Image list_root, Image list_back , Image list_home und Image list_reload oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie:


    • Image list_root: Zur Wurzel
    • Image list_back: Eine Abteilung nach oben
    • Image list_home: Zur Basis des angemeldeten Benutzers
    • Image list_reload: Aktuelle Abteilung neu laden
    Es ist weiterhin mglich, die Anzeige der Konferenzen mithilfe von Filtern zu beeinflussen (Kasten Filter Image rocket am rechten Rand):

    • Nach Namen suchen :

      - Klick auf * zeigt alle Konferenzen an

      - Klick auf einen Buchstaben zeigt alle Konferenzen an, deren Name mit dem gewhlten Buchstaben beginnt

      - Klick auf eine Zahl zeigt alle Konferenzen an, deren Name mit der gewhlten Ziffer beginnt

    • Schnellsuche Image search: Suchkriterium (z.B. Name der Konferenz) eingeben, Klick auf Knopf Filter anwenden.


      Um einen neuen Konferenz-Raum zu erstellen, drcken Sie auf den Knopf Image select_new_component oberhalb der Liste.

      Um einen bestehenden Konferenz-Raum zu bearbeiten, drcken Sie auf seinen Namen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/conference/node4.html0000644000175000017500000000351210766256174021115 0ustar mikemike Optionen

    Optionen

    • PIN voreinstellen
      Whlen Sie diese Option, wenn Sie die Konferenz mit einem allgemeinen PIN schtzen mchten. Geben Sie dazu die PIN in das Feld PIN ein.
    • Konferenz aufnehmen

      Whlen Sie diese Option, wenn Sie die Konferenz aufzeichnen mchten. Whlen Sie dazu aus der Liste das gewnschte Format fr die Aufnahme.

    • Wartemusik bei Halten
      Whlen Sie diese Option, wenn der oder die gehaltenen Anrufer eine Wartemusik hren sollen.
    • Sitzungsmen aktivieren

      Whlen Sie diese Option, wenn Sie das Sitzungsmen aktivieren mchten.

    • Benachrichtige ber Zugang/Abgang von Teilnehmern

      Whlen Sie diese Option, um jedesmal, wenn ein Teilnehmer die Konferenz betritt oder verlsst eine Benachrichtigung abzuspielen.

    • Zhle Benutzer

      Whlen Sie diese Option, um die Anzahl der Teilnehmer zu zhlen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/conference/WARNINGS0000644000175000017500000000017710442247761020366 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/conference/rocket.png0000644000175000017500000000147410442247761021211 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/conference/list_home.png0000644000175000017500000000154110442247761021700 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/de/html/conference/node2.html0000644000175000017500000000231210766256174021110 0ustar mikemike Allgemein

    Allgemein



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/conference/list_back.png0000644000175000017500000000153610442247761021654 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/html/conference/conference.css0000644000175000017500000000241710766256174022042 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } #hue16 { color: #0000ff; } #hue36 { color: #000000; } #hue39 { color: #000000; } #hue41 { color: #000000; } #hue43 { color: #000000; } #hue45 { color: #000000; } #hue78 { color: #ff0000; } #hue79 { color: #ff0000; } #hue80 { color: #ff0000; } #hue81 { color: #ff0000; } gosa-core-2.7.4/doc/core/de/html/conference/node5.html0000644000175000017500000000211310766256174021112 0ustar mikemike Referenzen

    Referenzen

    Unter Referenzen werden alle Verbindungen dieser Telefon-Konferenz zu anderen Objekten im LDAP-Verzeichnis aufgelistet.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/conference/node6.html0000644000175000017500000000327610766256174021126 0ustar mikemike About this document ...

    About this document ...

    Konferenz-Verwaltung

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/conference/ conference.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/conference/index.html0000644000175000017500000000300010766256174021203 0ustar mikemike Konferenz-Verwaltung

    Konferenz-Verwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/conference/node3.html0000644000175000017500000000413610766256174021117 0ustar mikemike Eigenschaften

    Eigenschaften

    Konferenz-Name* Der eindeutige Name des Konferenz-Raums
    Typ* Whlen Sie den Typ des Konferenz-Raums aus der Liste
    Basis* Whlen Sie die aus der Liste die Abteilung, der der Konferenz-Raum zugeordnet werden soll.
    Beschreibung Kurze Beschreibung des Konferenz-Raums
    Lebenszeit (in Tagen) Geben Sie die Zeit ein, die der Konferenz-Raum existieren soll
    Telefonnummer* Die Telefonnummer, unter der die Konferenz zu erreichen ist




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/logview/0000755000175000017500000000000011752422551016550 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/logview/logview.css0000644000175000017500000000171010443256377020744 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.arabic { } SPAN.textbf { font-weight: bold } gosa-core-2.7.4/doc/core/de/html/logview/labels.pl0000644000175000017500000000025010443256377020353 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/logview/node1.html0000644000175000017500000000223110766256174020454 0ustar mikemike Systemprotokolle

    Systemprotokolle



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/logview/WARNINGS0000644000175000017500000000012310443256377017726 0ustar mikemikeNo implementation found for style `fontenc' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/logview/node2.html0000644000175000017500000000362310766256174020463 0ustar mikemike Filter

    Filter

    Zeige Rechner Whlen Sie den Rechners aus der Liste, dessen Protokoll Sie anzeigen mchten.
    Prioritt Whlen Sie die minimal Prioritt der Meldungen, damit diese angezeigt werden.
    Zeit-Intervall Whlen Sie das Zeit-Intervall aus der Liste, auf die die Meldungen beschrnkt werden.
    Suche nach Die Zeichenkette, nach der gesucht werden soll (oder '*' fr alle Meldungen)
    Regelsatz Erstellen Sie aus der Suche einen Regelsatz, um sptere Anzeigen zu beschleunigen.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/logview/logview.html0000644000175000017500000000246410766256174021132 0ustar mikemike Zustzliches

    Zustzliches





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/logview/index.html0000644000175000017500000000246410766256174020565 0ustar mikemike Zustzliches

    Zustzliches





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/logview/node3.html0000644000175000017500000000325210766256174020462 0ustar mikemike About this document ...

    About this document ...

    Zustzliches

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/logview/ logview.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/macro/0000755000175000017500000000000011752422551016175 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/macro/list_root.png0000644000175000017500000000152410442211230020704 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/de/html/macro/search.png0000644000175000017500000000177710442211230020145 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/de/html/macro/macro.css0000644000175000017500000000251310766256174020023 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } #hue100 { color: #ff0000; } #hue101 { color: #ff0000; } #hue16 { color: #0000ff; } #hue35 { color: #000000; } #hue37 { color: #000000; } #hue42 { color: #000000; } #hue47 { color: #000000; } #hue71 { color: #000000; } #hue95 { color: #000000; } #hue96 { color: #000000; } #hue97 { color: #ff0000; } #hue99 { color: #ff0000; } gosa-core-2.7.4/doc/core/de/html/macro/false.png0000644000175000017500000000135110442211230017756 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/de/html/macro/labels.pl0000644000175000017500000000025010442211230017752 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/macro/node1.html0000644000175000017500000001211510766256174020103 0ustar mikemike Liste der Makros

    Liste der Makros

    Die Liste der Makros dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag Telefon-Makros aus der Kategorie Administration (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Telefon-Makros geladen (berschrift: Telefon-Makro-Verwaltung). Auf dieser Seite knnen Makros hinzugefgt, bearbeitet oder entfernt werden.

    Die Liste ist in drei Spalten geteilt:

    • Die erste Spalte enthlt zunchst die verfgbaren Abteilungen, dann die Namen der Makros (alphabetisch sortiert).
    • Die zweite Spalte zeigt an, ob das Makro fr Benutzer sichtbar ist (Wenn es sichtbar ist, wird Image true angezeigt, anderenfallsImage false).
    • Die dritte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufgaben durchzufhren (Bearbeiten, Entfernen).
    Die vier Knpfe Image list_root, Image list_back , Image list_home und Image list_reload oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie:


    • Image list_root: Zur Wurzel
    • Image list_back: Eine Abteilung nach oben
    • Image list_home: Zur Basis des angemeldeten Benutzers
    • Image list_reload: Aktuelle Abteilung neu laden
    Es ist weiterhin mglich, die Anzeige der Makros mithilfe von Filtern zu beeinflussen (Kasten Filter Image rocket am rechten Rand):

    • Nach Namen suchen:

      • Klick auf * zeigt alle Makros an
      • Klick auf einen Buchstaben zeigt alle Makros an, deren Name mit dem gewhlten Buchstaben beginnt
      • Klick auf eine Ziffer zeigt alle Makros an, deren Name mit der gewhlten Ziffer beginnt
    • Komplexere Einschrnkungen ber regulre Ausdrcke bietet das Textfeld im unteren Bereich des Kastens Filter (beginnt mit dem Symbol Image search). In dieses Feld knnen Sie beliebige Buchstaben/Ziffern-Kombinationen eingeben, um die Suche einzuschrnken. Um die Suchergebnisse in der Liste anzeigen zu lassen, Klicken Sie auf Filter anwenden.


    Um ein neues Makro anzulegen, drcken Sie auf den Knopf Image list_new_macro oberhalb der Liste. Wenn Sie ein bestehendes Makro bearbeiten mchen, drcken Sie auf den Namen des Makros.

    Die Seite, die nun geladen wird, verfgt ber Reiter, die im Folgenden nher erlutert werden.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/macro/node4.html0000644000175000017500000000334410766256174020112 0ustar mikemike Parameter

    Parameter

    Alle mglichen Parameter, die im Feld Makro-Inhalt des Reiters Allgemein verwendet wurden, knnen auf dieser Seite konfiguriert werden.

    Argument Der verwendete Name im Makro-Inhalt
    Name Der allgemeine Name des Parameters
    Typ Der Datentyp des Parameters
    Standardwert Der Standardwert des Parameters




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/macro/WARNINGS0000644000175000017500000000017710442211230017336 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/macro/rocket.png0000644000175000017500000000147410442211230020161 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/macro/list_home.png0000644000175000017500000000154110442211230020650 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/de/html/macro/node2.html0000644000175000017500000000303610766256174020106 0ustar mikemike Generelle Informationen

    Generelle Informationen

    • Um die Bearbeitung des Makros (auch neuer Makros) abzuschliessen, drcken Sie auf den Knopf Speichern unten rechts; Um den Vorgang zu verwerfen, drcken Sie auf den Knopf Abbrechen, der sich ebenfalls unten rechts befindet.
    • Alle Felder, die mit einem roten Sternchen * enden, sind Pflichtfelder und mssen daher zwingend ausgefllt werden.
    • In der rechten, oberen Ecke findet sich der komplette dn des aktuell geffneten Makros.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/macro/list_back.png0000644000175000017500000000153610442211230020624 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/html/macro/macro.html0000644000175000017500000000277110766256174020205 0ustar mikemike Telefon-Makro-Verwaltung

    Telefon-Makro-Verwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/macro/node5.html0000644000175000017500000000206610766256174020113 0ustar mikemike Referenzen

    Referenzen

    Unter Referenzen werden alle Verbindungen dieses Makros zu anderen Objekten im LDAP-Verzeichnis aufgelistet.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/macro/node6.html0000644000175000017500000000325610766256174020116 0ustar mikemike About this document ...

    About this document ...

    Telefon-Makro-Verwaltung

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/macro/ macro.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/macro/list_new_macro.png0000644000175000017500000000146710442211230021701 0ustar mikemikePNG  IHDRabKGD pHYs  tIME#2IDAT8ˍKHTaxͦ%D6Ѣ=MS$f,A݉)E"**(qR%1%YmiSѓ1cjs3::{ZA-Vp}_'$o)9$e^k~_bXCT*h!@CD:qhJ!0$2@R 0GBDZ3q)4ˁeSA@2 C>h$(ö!cQֽ*wn H @s/O/^srTLO0d%~n&]JTqFhJ: /q M*f!۞cAt'0MSZDt"HLiLplI=pXW;FlqYsu445`04'm*.v5A3gKrc8Kr^)o'iqH F 5\)%FNS8u$neh9ш>V^+,F6Y@0ڇPRge2MS|;$t=XA9|\6Z8֧7]pl]RAX>M11a%4_~A6=ݗs5x>gϵe տ;m-N x޽N뭗xIENDB`gosa-core-2.7.4/doc/core/de/html/macro/index.html0000644000175000017500000000277110766256174020213 0ustar mikemike Telefon-Makro-Verwaltung

    Telefon-Makro-Verwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/macro/true.png0000644000175000017500000000122510442211230017643 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<'IDATxb?% (8Qc@7 @2@ĬHl(A!A X2lj okȧdP}گ? ?YB/oV qj $dIH6]'P"@10" H3]"rTW__WہÀꞀOS ; B׀&03$0Z11|88> F1  F " @aC/Gpr000r10 0`^1a8ph:P"A %^`` S @@14%$@ xjPM3 g 0f6Or n5]ex4ؿU |i X?=L ^5S(\ `N~` /, {b,HIflb47Ź QU!6IENDB`gosa-core-2.7.4/doc/core/de/html/macro/node3.html0000644000175000017500000000360710766256174020113 0ustar mikemike Allgemein

    Allgemein

    Makro-Name* Der eindeutige Name des Makros
    Angezeigter Name* Der Name, der in der Liste der Makros angezeigt werden soll
    Basis* Whlen Sie aus der Liste die Abteilung, der dieses Makro zugeordnet werden soll
    Beschreibung Kurze Beschreibung des Makros
    Sichtbar fr Benutzer ?


    • Makro-Inhalt




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/blocklists/0000755000175000017500000000000011752422551017245 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/blocklists/list_root.png0000644000175000017500000000152410442235363021771 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/de/html/blocklists/search.png0000644000175000017500000000177710442235363021232 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/de/html/blocklists/labels.pl0000644000175000017500000000025010442235363021037 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/blocklists/node1.html0000644000175000017500000001052010766256174021151 0ustar mikemike Liste der Sperrlisten

    Liste der Sperrlisten

    Die Liste der Sperrlisten dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag Fax-Sperrlisten aus der Kategorie Administration (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Sperrlisten geladen (berschrift: Sperrlistenverwaltung). Auf dieser Seite knnen Sperrlisten hinzugefgt, bearbeitet oder entfernt werden.

    Die Liste ist in zwei Spalten geteilt:

    • Die erste Spalte enthlt die Namen der Sperrlisten
    • Die zweite Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufgaben durchzufhren (Bearbeiten, Entfernen)
    Die vier Knpfe Image list_root, Image list_back, Image list_home, und Image list_reload oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie:


    • Image list_root: Zur Wurzel
    • Image list_back: Eine Abteilung nach oben
    • Image list_home: Zur Basis des angemeldeten Benutzers
    • Image list_reload: Aktuelle Abteilung neu laden
    Es ist weiterhin mglich, die Anzeige der Sperrlisten mithilfe von Filtern zu beeinflussen (Kasten Filter Image rocket am rechten Rand):

    • Nach Namen suchen :

      - Klick auf * zeigt alle Sperrlisten an

      - Klick auf einen Buchstaben zeigt alle Sperrlisten an, deren Name mit dem gewhlten Buchstaben beginnt

      - Klick auf eine Zahl zeigt alle Sperrlisten an, deren Name mit der gewhlten Ziffer beginnt

    • Schnellsuche Image search: Suchkriterium (z.B. Name der Sperrlisten) eingeben, Klick auf Knopf Filter anwenden.


      Um eine neue Sperrliste zu erstellen, drcken Sie auf den Knopf Image list_new_blocklist oberhalb der Liste.

      Um eine bestehende Sperrliste zu bearbeiten, drcken Sie auf den Namen der Sperrliste



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/blocklists/node4.html0000644000175000017500000000206510766256174021161 0ustar mikemike Information

    Information

    Hier wird Ihnen lediglich die Information eingeblendet, dass Sie in den Nummern Platzhalter (z.B. *) verwenden knnen.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/blocklists/WARNINGS0000644000175000017500000000017710442235363020423 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/blocklists/rocket.png0000644000175000017500000000147410442235363021246 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/blocklists/blocklists.css0000644000175000017500000000201210766256174022135 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } #hue75 { color: #ff0000; } gosa-core-2.7.4/doc/core/de/html/blocklists/blocklists.html0000644000175000017500000000270010766256174022315 0ustar mikemike Sperrlistenverwaltung

    Sperrlistenverwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/blocklists/list_home.png0000644000175000017500000000154110442235363021735 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/de/html/blocklists/list_new_blocklist.png0000644000175000017500000000141510442235363023644 0ustar mikemikePNG  IHDRabKGD pHYs  tIME1[IDAT8ˍMHaVH&Q((PAPCHRQiF}P d") "e ҚY~W]Cfy EG| J@5 @Na ,O}S,x[Dx&"VN wTfMY0EDD1OGwȯ6C̷e6/bm@`39! @HiXbZ() eN`$!&j;9 %= L:Z,@ 4QptެB˃NwB]d>+HƪNo{!hMS_)u7R=d޳fCti'\{,}SKsS Allgemein

    Allgemein

    Listenname* Name der Sperrliste
    Basis Whlen Sie aus der Liste die Abteilung, der die Liste zugeordnet werden soll
    Typ Whlen Sie aus der Liste, ob die Sperrliste fr eingehende (empfangen) oder ausgehende (senden) Faxe verwendet werden soll.
    Beschreibung Kurze Beschreibung der Sperrliste




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/blocklists/list_back.png0000644000175000017500000000153610442235363021711 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/html/blocklists/node5.html0000644000175000017500000000327710766256174021170 0ustar mikemike About this document ...

    About this document ...

    Sperrlistenverwaltung

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/blocklists/ blocklists.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/blocklists/index.html0000644000175000017500000000270010766256174021253 0ustar mikemike Sperrlistenverwaltung

    Sperrlistenverwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/blocklists/node3.html0000644000175000017500000000263210766256174021160 0ustar mikemike Gesperrte Nummern

    Gesperrte Nummern

    In der Liste der gesperrten Nummern, werden alle Nummern aufgefhrt, die momentan dieser Liste zugeordnet sind. Um eine weitere Nummer einzufgen, geben Sie die Nummer in das Textfeld unterhalb der Liste ein und drcken Sie auf den Knopf Hinzufgen. Um eine oder mehrere Nummern aus der Liste zu entfernen, markieren Sie diese in der Liste und drcken Sie auf den Knopf Entfernen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/faxreports/0000755000175000017500000000000011752422551017271 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/faxreports/labels.pl0000644000175000017500000000025010443263556021071 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/faxreports/node1.html0000644000175000017500000000246710766256174021210 0ustar mikemike Fax-Berichte

    Fax-Berichte

    Dieses Modul dient der Anzeige von Faxberichten. Dabei kann die Anzeige mithilfe von Filtern beeinflusst werden.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/faxreports/WARNINGS0000644000175000017500000000017710443263556020455 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/faxreports/rocket.png0000644000175000017500000000147410443263556021300 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/faxreports/node2.html0000644000175000017500000000441510766256174021204 0ustar mikemike Filter

    Filter Image rocket

    Suche nach ZEICHENKETTE in ABTEILUNG whrend MONAT in JAHR:

    ZEICHENKETTE Geben Sie die Zeichenkette ein, nach der sie suchen mchten.
    ABTEILUNG Whlen Sie die Abteilung aus der Liste, auf die Sie die Suche begrenzen mchten.
    MONAT Whlen Sie den Monat aus der Liste, auf den Sie die Suche begrenzen mchten.
    JAHR Whlen Sie das Jahr aus der Liste, auf das Sie die Suche begrenzen mchten.

    Zum Durchfhren der Suche mit den vorgenommenen Einstellungen drcken Sie auf den Knopf Suchen ganz rechts.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/faxreports/faxreports.html0000644000175000017500000000251210766256174022366 0ustar mikemike Zustzliches

    Zustzliches






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/faxreports/index.html0000644000175000017500000000251210766256174021300 0ustar mikemike Zustzliches

    Zustzliches






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/faxreports/faxreports.css0000644000175000017500000000177010766256174022217 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN. { } #hue34 { color: #000000; } gosa-core-2.7.4/doc/core/de/html/faxreports/node3.html0000644000175000017500000000315410766256174021204 0ustar mikemike About this document ...

    About this document ...

    Zustzliches

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/faxreports/ faxreports.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/mailqueue/0000755000175000017500000000000011752422551017063 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/mailqueue/mailqueue.css0000644000175000017500000000174510766256174021605 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN. { } #hue43 { color: #000000; } gosa-core-2.7.4/doc/core/de/html/mailqueue/mailq_requeue.png0000644000175000017500000000161610443761145022434 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/html/mailqueue/mailq_unhold.png0000644000175000017500000000147510443761145022255 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME  54IDATxuOheߟn2MӖjZE RHE=x)!<^ē=9Pւ CڪIQt 6ih;I~3Fޏ{{T-i hY7nf@E%NKkvI'zQvGKmZྼA̭"B^-'Opb01?&J}6s@ B~_yfl7Q*jƟH%I@q4/>gmtu]xc,~FO+'ޙH btbf ~ADOrJ: RQWT6*y=?0<`f ]x϶#TIn^eglhG{§'an>:Yd2xaʹPB$kClIdFH]րb҂oi2O\! b!Z1Ȏ0a%``Ef )@~~##c_\86wBkcQ4w 01zeLڟAG΄8ntV^;U_s]{Du/Fā}o,X~d퍀p+[ /z]#u옧JGeA,ELu1WMuÇžGIENDB`gosa-core-2.7.4/doc/core/de/html/mailqueue/labels.pl0000644000175000017500000000025010443761145020660 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/mailqueue/node1.html0000644000175000017500000000272110766256174020773 0ustar mikemike Mail-Warteschlange

    Mail-Warteschlange

    Dieses Modul dient der Anzeige der Mail-Warteschlange. Dabei kann die Anzeige mithilfe von Filtern beeinflusst werden.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/mailqueue/node4.html0000644000175000017500000000326210766256174020777 0ustar mikemike About this document ...

    About this document ...

    Zustzliches

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/mailqueue/ mailqueue.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/mailqueue/WARNINGS0000644000175000017500000000017710443761145020244 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/mailqueue/rocket.png0000644000175000017500000000147410443761145021067 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/mailqueue/node2.html0000644000175000017500000000500210766256174020767 0ustar mikemike Filter

    Filter Image rocket

    Suche nach ZEICHENKETTE in WARTESCHLANGE mit Status: STATUS innerhalb der letzten ZEITBESCHRNKUNG:

    ZEICHENKETTE Geben Sie die Zeichenkette ein, nach der sie suchen mchten.
    WARTESCHLANGE Whlen Sie den Mail-Server aus der Liste, auf die Sie die Suche begrenzen mchten, oder Alle, wenn Sie alle Warteschlangen durchsuchen mchten.
    STATUS Whlen Sie den Status aus der Liste, auf den Sie die Suche begrenzen mchten.
    ZEITBESCHRNKUNG Whlen Sie die zeitliche Beschrnkung aus der Liste, auf die Sie die Suche begrenzen mchten.

    Zum Durchfhren der Suche mit den vorgenommenen Einstellungen drcken Sie auf den Knopf Suchen ganz rechts.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/mailqueue/edittrash.png0000644000175000017500000000126310443761145021563 0ustar mikemikePNG  IHDRagAMA7jIDATxmkQ$m#iFԂPPpEą݉"p+ѽ FDA*Mͳd3̸psֵ=酩1B2>Ġ]oR̗OW?EcyxQPCB*?•RQ(|0]`@8:`EMvI 8,^W kK g%p<ֶfk7JR! b@WBF AoH MC7LC` iPkPV%KQ4 #}v:'9`+P \W"a`:UN RAɂf34Mz˜ab8U9/(骄d"nbقj*C J G[t@1XKoө3>yePؠ/ /r>c?%>X-׭@` Npjihtn؇3{hj~ĩp/?}o| ~ALѼBIENDB`gosa-core-2.7.4/doc/core/de/html/mailqueue/mailqueue.html0000644000175000017500000000272110766256174021754 0ustar mikemike Zustzliches

    Zustzliches






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/mailqueue/index.html0000644000175000017500000000272110766256174021074 0ustar mikemike Zustzliches

    Zustzliches






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/mailqueue/mailq_hold.png0000644000175000017500000000135610443761145021710 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME '9fN{IDATxڅSKSq=ݺnm6b!DBBQP\҇{ zo=ҋD102GfkNo}Zl<9|>!8` `wñC{ggrIP#p=ޣ> n$f@gjfA|p!Bǃ8Lve{vybAL<xpEB?2XvN6&o~t;Ao0Fnj )rf$pR֥Ei_ {԰m@}~uEI\ ټ]r6_;ɘmpdD2EV/#3(T@(㰙 p vO'p(ثA*|`%ԉ9M<+&/PPK`x{OV Œajfѫȱ  kfB9;7Q>&4%ƚ#~ ~JZʦ vNַm2HM# -&򤪪zVC86vÍ&3]F婧AnmQUU@QKdX"=QHYj.olȩZdiIENDB`gosa-core-2.7.4/doc/core/de/html/mailqueue/node3.html0000644000175000017500000000347310766256174021002 0ustar mikemike Aktionen

    Aktionen

    Mit den gefundenen Nachrichten sind weitere Aktionen mglich. Um eine Aktion auf eine oder mehrere Nachrichten anzuwenden, markieren Sie die gewnschten Nachrichten in der Liste und drcken Sie auf eines der folgenden Symbole:

    • Image edittrash: Nachricht(en) aus der Warteschlange entfernen
    • Image mailq_hold: Nachricht(en) aus der Warteschlange vorhalten
    • Image mailq_unhold: Nachricht(en) aus der Warteschlange ausliefern
    • Image mailq_requeue: Nachricht(en) neu in die Warteschlange einreihen



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/0000755000175000017500000000000011752422551017422 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/departments/list_root.png0000644000175000017500000000152410437001512022135 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/de/html/departments/search.png0000644000175000017500000000177710437001512021376 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/de/html/departments/departments.css0000644000175000017500000000210410766256174022471 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } #hue75 { color: #ff0000; } #hue76 { color: #ff0000; } #hue77 { color: #ff0000; } gosa-core-2.7.4/doc/core/de/html/departments/labels.pl0000644000175000017500000000025010437001512021203 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/departments/node1.html0000644000175000017500000001033710766256174021334 0ustar mikemike Liste der Abteilungen

    Liste der Abteilungen

    Die Liste der Abteilungen dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag Abteilungen aus der Kategorie Administration (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Abteilungen geladen (berschrift: Abteilungsverwaltung). Auf dieser Seite knnen Abteilungen hinzugefgt, bearbeitet oder entfernt werden.

    Die Liste ist in zwei Spalten geteilt:

    • Die erste Spalte enthlt die Namen der Abteilungen
    • Die zweite Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufgaben durchzufhren (Bearbeiten, Entfernen)
    Die vier Knpfe Image list_root, Image list_back, Image list_home, und Image list_reload oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie:

    • Image list_root: Zur Wurzel
    • Image list_back: Eine Abteilung nach oben
    • Image list_home: Zur Basis des angemeldeten Benutzers
    • Image list_reload: Aktuelle Abteilung neu laden
    Es ist weiterhin mglich, die Anzeige der Abteilungen mithilfe von Filtern zu beeinflussen (Kasten Filter Image rocket am rechten Rand):

    • Nach Namen suchen:

      • Klick auf * zeigt alle Abteilungen an
      • Klick auf einen Buchstaben zeigt alle Abteilungen an, deren Name mit dem gewhlten Buchstaben beginnt
      • Klick auf eine Ziffer zeigt alle Abteilungen an, deren Name mit der gewhlten Ziffer beginnt
    • Schnellsuche (Textfeld Image search): Geben Sie einen Teil des Names (oder den ganzen Namen) der Abteilung ein, die Sie suchen und klicken Sie auf den Knopf Filter anwenden.




    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/node4.html0000644000175000017500000000242510766256174021336 0ustar mikemike Allgemein

    Allgemein



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/edit.png0000644000175000017500000000166210437001512021047 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<DIDATxbp_/Zba@0Y=0xFll ,l Հ>30X)#W0FvvG;qrqͽq훗 30˿ /d]ݾpo߼dسc Pb¦ _8c $#𗁅ʥ+@U 0\ f[@GA!O>^#1ܻs a`{6(h2 R ,KNn bnbEOPԼ ;;hP,ï/~'&F&`a ^@4/×O[3pcf P##? AA *P(rLD. 2\&[Ձ0 ?[o af`bVd2f&.nn&&@g`&bBvӏzj k  lhc񷠐,##8 I5T L6f-66fff..NX[n2ܿs XyaՊ5< '22cX~ t_ OÀ0a/ 15dIENDB`gosa-core-2.7.4/doc/core/de/html/departments/WARNINGS0000644000175000017500000000025410441304026020564 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/departments/rocket.png0000644000175000017500000000147410437001512021412 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/departments/list_home.png0000644000175000017500000000154110437001512022101 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/de/html/departments/node2.html0000644000175000017500000000236010766256174021332 0ustar mikemike Abteilung erstellen

    Abteilung erstellen

    Um eine neue Abteilung zu erstellen, drcken Sie auf den Knopf Image list_new_department. Befolgen Sie dann die nachfolgende Beschreibung fr die Bearbeitung bestehender Abteilungen.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/list_back.png0000644000175000017500000000153610441304026022056 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Referenzen

    Referenzen

    Unter Referenzen werden alle Verbindungen dieser Abteilung zu anderen LDAP-Eintrgen angezeigt.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/list_reload.png0000644000175000017500000000161610437001512022422 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/html/departments/node5.html0000644000175000017500000000325010766256174021334 0ustar mikemike Eigenschaften

    Eigenschaften

    Name der Abteilung* Der Name der Abteilung
    Beschreibung* Die Beschreibung (oder ein Kommentar) der Abteilung
    Kategorie Die Kategorie der Abteilung
    Basis* Die Basis (die bergeordnete Abteilung) der Abteilung




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/departments.html0000644000175000017500000000334110766256174022651 0ustar mikemike Abteilungsverwaltung

    Abteilungsverwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/node6.html0000644000175000017500000000324110766256174021335 0ustar mikemike Ort

    Ort

    Land Das Land, in dem sich die Abteilung befindet
    Ort Der Ort, in dem sich die Abteilung befindet
    Adresse Die Anschrift der Abteilung
    Telefon Die Telefonnummer der Zentrale der Abteilung
    Fax Die Faxnummer der Abteilung



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/node9.html0000644000175000017500000000330210766256174021336 0ustar mikemike About this document ...

    About this document ...

    Abteilungsverwaltung

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/departments/ departments.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/index.html0000644000175000017500000000334110766256174021432 0ustar mikemike Abteilungsverwaltung

    Abteilungsverwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/list_new_department.png0000644000175000017500000000131510437001512024164 0ustar mikemikePNG  IHDRabKGD pHYs  tIME $5)RZIDAT8˕]HSaxvvvΦDWQZ4}.++ꦺQ (Ƌ!U`AHPAA7C(̘4cHgtN.έz}W/Q#)+tAсZ5W<ƹ'uOB9MY[uL&E{(#A"qq43gkjS{U\B{L@=\Vƀ> &8v'=5^-MAAyYolad7v >!y H4! )g L$`CV Co"!pj06 Æ}|D Administrative Einstellungen

    Administrative Einstellungen

    • Abteilung als eigenstndige administrative Einheit kennzeichnen:




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/departments/node3.html0000644000175000017500000000233610766256174021336 0ustar mikemike Eine bestehende Abteilung bearbeiten

    Eine bestehende Abteilung bearbeiten

    Klicken Sie in der Liste der Abteilungen auf das Symbol Image edit in der Zeile der Abteilung, die Sie bearbeiten mchten.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/ogroups/0000755000175000017500000000000011752422551016572 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/ogroups/list_root.png0000644000175000017500000000152410441304026021306 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/de/html/ogroups/search.png0000644000175000017500000000177710441304026020547 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/de/html/ogroups/labels.pl0000644000175000017500000000025010441304026020354 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/ogroups/node1.html0000644000175000017500000001164510766256174020507 0ustar mikemike Liste der Objektgruppen

    Liste der Objektgruppen

    Eine Objektgruppe ist eine heterogene Gruppenvariante, die es erlaubt, beliebige Arten von (LDAP-) Objekten zu einer logischen Einheit zusammenzufassen. Sie erreichen die Liste der Objektgruppen ber den Meneintrag Objektgruppen aus der Kategorie Administration (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Objektgruppen geladen (berschrift: Objektgruppen). Auf dieser Seite knnen Objektgruppen hinzugefgt, bearbeitet oder entfernt werden.

    Die Liste ist in drei Spalten aufgeteilt:

    • Die erste Spalte zeigt die Namen der Objektgruppen.
    • Die zweite Spalte enthlt Knpfe fr den Schnellzugriff auf die Eigenschaften der Objektgruppe. Sie dient ausserdem fr einen schnellen berblick ber die verschiedenen Objekt-Typen, die die Objektgruppe enthlt.
    • Die dritte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufgaben durchzufhren (Ausschneiden, Kopieren, Bearbeiten, Entfernen)
    Die vier Knpfe Image list_root, Image list_back, Image list_home, und Image list_reload oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie:

    • Image list_root: Zur Wurzel
    • Image list_back: Eine Abteilung nach oben
    • Image list_home: Zur Basis des angemeldeten Benutzers
    • Image list_reload: Aktuelle Abteilung neu laden


    Es ist weiterhin mglich, die Anzeige der Objektgruppen mithilfe von Filter zu beeinflussen (Kasten Filter Image rocket am rechten Rand):


    • Nach Namen suchen:

      • Klick auf * zeigt alle Objektgruppen an
      • Klick auf einen Buchstaben zeigt alle Objektgruppen an, deren Name mit dem gewhlten Buchstaben beginnt
      • Klick auf eine Ziffer zeigt alle Objektgruppen an, deren Name mit der gewhlten Ziffer beginnt
    • Weitere Suchoptionen:

      • Whlen Sie eine oder mehrere der Optionen Zeige Gruppen mit ..., um die Anzeige auf eben diese Objektgruppen zu beschrnken
    • Schnellsuche (Feld Image search): Geben Sie mindestens einen Teil des Namens der Objektgruppe, die Sie suchen, ein und drcken Sie auf den Knopf Filter anwenden, um die Suche durchzufhren.


    Um eine Objektgruppe zu erstellen, drcken Sie auf den Knopf Image list_new_ogroup oberhalb der Liste. Um eine bestehende Objektgruppe zu bearbeiten, klicken Sie auf den Namen der gewnschten Objektgruppe. Es ffnet sich in beiden Fllen eine neue Seite, die die folgenden Reiter enthlt:



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/ogroups/node4.html0000644000175000017500000000323010766256174020501 0ustar mikemike About this document ...

    About this document ...

    Objektgruppenverwaltung

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/ogroups/ ogroups.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/ogroups/WARNINGS0000644000175000017500000000020010441304026017723 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/ogroups/rocket.png0000644000175000017500000000147410441304026020563 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/ogroups/list_home.png0000644000175000017500000000154110441304026021252 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/de/html/ogroups/list_new_ogroup.png0000644000175000017500000000136210441304026022507 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "z?LIDAT8˵[H}Z˙+KtLT)JdBAQ{衇 %r./=tѢ*nQ.e-7󛻞"ߟ9gpwq`FktPĘHkTn&ً~Ђ"^x!RFq׋k򧀀}py Ŝcݥ<6% YIkuҼھQt2mΥˋJ$mn:_I$@5§0xYG )]o-k[`B)pLiK.]EY } zSa.d#`P`J 7 ƪK(ԮZ]V(>^Ǡ2 0jpYVNkS)c`n7?;-fAy x MU*ha"08_>(;NyL]: o/`{렭]_L<o&%Wv/M7" "-"re[UΩ*HwLy6%aH'# yTV;$ngY LMN)E[č[#$yIENDB`gosa-core-2.7.4/doc/core/de/html/ogroups/node2.html0000644000175000017500000000367310766256174020512 0ustar mikemike Allgemein

    Allgemein

    Gruppenname* Der eindeutige Name der Objektgruppe
    Beschreibung Kurze Beschreibung / kurzer Kommentar zur Gruppe
    Basis* Whlen Sie aus der Liste die Abteilung, der diese Objektgruppe zugeordnet werden soll
    Zusammengefasste Objekte Die Liste der zusammengefassten Objekte. Drcken Sie Hinzufgen, um eines oder mehrere Objekte hinzuzufgen. Wenn Sie eines oder mehrere Objekte aus der Gruppe entfernen mchten, markieren Sie diese und drcken Sie den Knopf Entfernen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/ogroups/ogroups.html0000644000175000017500000000257410766256174021200 0ustar mikemike Objektgruppenverwaltung

    Objektgruppenverwaltung





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/ogroups/list_back.png0000644000175000017500000000153610441304026021226 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/html/ogroups/ogroups.css0000644000175000017500000000214110766256174021012 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } #hue14 { color: #0000ff; } #hue35 { color: #000000; } #hue65 { color: #ff0000; } #hue66 { color: #ff0000; } gosa-core-2.7.4/doc/core/de/html/ogroups/index.html0000644000175000017500000000257410766256174020611 0ustar mikemike Objektgruppenverwaltung

    Objektgruppenverwaltung





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/ogroups/node3.html0000644000175000017500000000204010766256174020476 0ustar mikemike Referenzen

    Referenzen

    Unter Referenzen werden alle Verbindungen dieses LDAP-Eintrags zu anderen Eintrgen im Verzeichnis aufgelistet.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/0000755000175000017500000000000011752422551017562 5ustar mikemikegosa-core-2.7.4/doc/core/de/html/applications/list_root.png0000644000175000017500000000152410437001512022275 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/de/html/applications/search.png0000644000175000017500000000177710437001512021536 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/de/html/applications/applications.css0000644000175000017500000000206010766256174022772 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } #hue112 { color: #ff0000; } gosa-core-2.7.4/doc/core/de/html/applications/labels.pl0000644000175000017500000000025010437001512021343 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/de/html/applications/node1.html0000644000175000017500000001037610766256174021477 0ustar mikemike Liste der Anwendungen

    Liste der Anwendungen

    Die Liste der Anwendungen dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag Anwendungen aus der Kategorie Administration (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Anwendungen geladen (berschrift: Anwendungsverwaltung).

    Die Liste ist in zwei Spalten geteilt:

    • Die erste Spalte enthlt zunchst die verfgbaren Abteilungen, dann die Namen der Anwendungen (alphabetisch sortiert)
    • Die zweite Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufgaben durchzufhren (Ausschneiden, Kopieren, Bearbeiten, Entfernen)
    Die vier Knpfe Image list_root, Image list_back, Image list_home, und Image list_reload oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie:

    • Image list_root: Zur Wurzel
    • Image list_back: Eine Abteilung nach oben
    • Image list_home: Zur Basis des angemeldeten Benutzers
    • Image list_reload: Aktuelle Abteilung neu laden
    Es ist weiterhin mglich, die Anzeige der Anwendungen mithilfe von Filtern zu beeinflussen (Kasten Filter Image rocket am rechten Rand):

    • Nach Namen suchen :

      - Klick auf * zeigt alle Anwendungen an

      - Klick auf einen Buchstaben zeigt alle Anwendungen an, deren Name mit dem gewhlten Buchstaben beginnt

      - Klick auf eine Zahl zeigt alle Anwendungen an, deren Name mit der gewhlten Ziffer beginnt

    • Schnellsuche Image search: Suchkriterium (z.B. Name der Anwendung) eingeben, Klick auf Knopf Filter anwenden.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/applications.html0000644000175000017500000000324410766256174023153 0ustar mikemike Anwendungsverwaltung

    Anwendungsverwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/node4.html0000644000175000017500000000427710766256174021505 0ustar mikemike Optionen

    Optionen

    • Nur ausfhrbar fr Gruppen-Mitglieder

      Wenn diese Option gewhlt ist, drfen nur Mitglieder einer entsprechenden UNIX- oder Objektgruppe die Anwendung ausfhren (Es werden die Rechte der Datei unter Ausfhren angepasst, daher ist diese Option nur sinnvoll, wenn die Anwendung nur einer Gruppe zugeordnet ist).

    • Konfiguration bei jedem Start ersetzen

      Wenn diese Option gewhlt ist, wird bei jedem Start der Anwendung die vorhandene Konfiguration mit der Standardkonfiguration berschrieben.

    • Platziere das Symbol auf dem Desktop der Gruppenmitglieder

      Wenn diese Option gewhlt ist, erscheint das Anwendungssymbol auf dem Desktop der Gruppenmitglieder.

    • Platziere einen Eintrag im Startmen der Gruppenmitglieder

      Wenn diese Option gewhlt ist, erscheint die Anwendung als Eintrag im Startmen der Gruppenmitglieder.

    • Platziere einen Eintrag in der Kontrollleiste der Gruppenmitglieder

      Wenn diese Option gewhlt ist, erscheint die Anwendung als Symbol in der Kontrollleiste der Gruppenmitglieder.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/edit.png0000644000175000017500000000166210437001512021207 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<DIDATxbp_/Zba@0Y=0xFll ,l Հ>30X)#W0FvvG;qrqͽq훗 30˿ /d]ݾpo߼dسc Pb¦ _8c $#𗁅ʥ+@U 0\ f[@GA!O>^#1ܻs a`{6(h2 R ,KNn bnbEOPԼ ;;hP,ï/~'&F&`a ^@4/×O[3pcf P##? AA *P(rLD. 2\&[Ձ0 ?[o af`bVd2f&.nn&&@g`&bBvӏzj k  lhc񷠐,##8 I5T L6f-66fff..NX[n2ܿs XyaՊ5< '22cX~ t_ OÀ0a/ 15dIENDB`gosa-core-2.7.4/doc/core/de/html/applications/WARNINGS0000644000175000017500000000025410766256174020750 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/de/html/applications/rocket.png0000644000175000017500000000147410437001512021552 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/html/applications/list_home.png0000644000175000017500000000154110437001512022241 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/de/html/applications/node2.html0000644000175000017500000000527610766256174021503 0ustar mikemike Eine Anwendung hinzufgen / Eine bestehende Anwendung bearbeiten

    Eine Anwendung hinzufgen / Eine bestehende Anwendung bearbeiten

    Um eine Anwendung hinzuzufgen, klicken Sie auf den Knopf Image list_new_app (Er befindet sich oberhalb der Liste). Wenn Sie keine neue Anwendung hinzufgen wollen, sondern eine vorhandene bearbeiten mchten, klicken Sie entweder auf den Eintrag in der Liste (z.B. gimp - [Bildbearbeitung]) oder auf den Knopf Image edit des entsprechenden Eintrags.

    Es ffnet sich eine Seite mit drei Reitern (Allgemein / Optionen / Referenzen). Diese dienen dazu, die Eigenschaften der Anwendung logisch aufzuteilen (Unter Allgemein werden die generellen Eigenschaften der Anwendung konfiguriert, Optionen dient dazu, Umgebungsvariablen fr die Anwendung zu setzen und Referenzen zeigt an, von welchen Objekten (Benutzer, Gruppen, etc.) die gewhlte Anwendung verwendet wird).

    Um nderungen zu speichern, verwenden Sie den Knopf Anwenden. Um die vorgenommenen nderungen zu verwerfen und wieder in die Liste der Anwendungen zu gelangen, verwenden Sie den Knopf Abbrechen.

    Die Felder, die mit einem roten Sternchen enden, sind Pflichtfelder und mssen zwingend ausgefllt werden (GOsa wird die nderungen sonst nicht bernehmen).

    Im Folgenden werden die Reiter ausfhrlich beschrieben.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/list_back.png0000644000175000017500000000153610437001512022215 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H About this document ...

    About this document ...

    Anwendungsverwaltung

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/applications/ applications.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/list_reload.png0000644000175000017500000000161610437001512022562 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/html/applications/node5.html0000644000175000017500000000303610766256174021476 0ustar mikemike Skript

    Skript

    Der Inhalt dieser Textbox wird beim Start der Anwendung ausgefhrt. Sie knnen entweder das Skript direkt in der Textbox editieren, oder ein vorhandenes Skript hochladen (Dazu klicken Sie auf den Knopf rechts neben der Eingabezeile unterhalb der Textbox - dieser ist je nach Browser unterschiedlich - und whlen das gewnschte Skript aus. Um das gewhlte Skript in das Fenster zu laden, klicken Sie auf den Knopf Hochladen.

    Beispiele fr die Verwendung eines Skriptes:

    • Erstellen von Verzeichnissen
    • Setzen von Konfigurationsparametern




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/node6.html0000644000175000017500000000352310766256174021500 0ustar mikemike Optionen

    Optionen

    Der Reiter Optionen dient dazu, Umgebungsvariablen fr Anwendungen zu setzen. Standardmssig sind Optionen deaktiviert und mssen zunchst mit einem Klick auf den Knopf Optionen aktivieren hinzugefgt werden. Die verfgbaren Felder auf der Seite sind in der folgenden Tabelle beschrieben:

    Variable Name der Variablen
    Standardwert Der Standardwert der Variablen (kann berschrieben werden)


    Um eine neue Variable hinzuzufgen, verwenden Sie den Knopf Option hinzufgen. Um eine vorhanden Variable zu entfernen, verwenden Sie den Knopf Entfernen.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/list_new_app.png0000644000175000017500000000143210437001512022741 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8ɅIDAT8ˍMhTWsL&M8h*Th w u*Rt"] U+"1V?(4񚙛3s=ŝHP|/sx ,qf v\>T>EY"ע~ h6[ZFU9Uis]cgo:o"56jމb _s`0`'wS/; l6C._]}P今}N9Tg9vi2ա]Gd6/^GwϗONh9Zک^x]lqG `3'(7ѬghIENDB`gosa-core-2.7.4/doc/core/de/html/applications/index.html0000644000175000017500000000324410766256174021574 0ustar mikemike Anwendungsverwaltung

    Anwendungsverwaltung






    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/node7.html0000644000175000017500000000225010766256174021475 0ustar mikemike Referenzen

    Referenzen

    Der Reiter Referenzen dient dazu, sich einen berblick zu verschaffen, von welchen Objekten diese Anwendung verwendet wird. In der Regel werden dies UNIX-Gruppen sein, andere Objekt-Typen sind jedoch mglich.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/html/applications/node3.html0000644000175000017500000000520610766256174021475 0ustar mikemike Allgemein

    Allgemein

    Name der Anwendung* Der allgemeine Name der Anwendung (Kurzform), z.B. gimp
    Angezeigter Name Der angezeigte Name der Anwendung, z.B. GIMP
    Ausfhren* Der Befehl, der verwendet werden soll, um die Anwendung zu starten (z.B. gimp-remote-2.2 %U)
    Beschreibung Eine kurze Beschreibung der Anwendung (z.B. Bildbearbeitung)
    Basis* Die Abteilung, in die diese Anwendung eingefgt werden soll.
    Symbol Das zugehrige Symbol zur Anwendung. Die Auswahl erfolgt mit dem Knopf rechts neben dem Eingabefeld (je nach Browser unterschiedlich). Um das Symbol mit der Anwendung zu verknpfen, klicken Sie auf den Knopf Anwenden.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/de/lyx-source/0000755000175000017500000000000011752422551016242 5ustar mikemikegosa-core-2.7.4/doc/core/de/lyx-source/blocklists.lyx0000644000175000017500000001451410442235363021154 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Sperrlistenverwaltung \layout Section Liste der Sperrlisten \layout Standard Die Liste der Sperrlisten dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag \series bold \color blue Fax-Sperrlisten \series default \color default aus der Kategorie \series bold Administration \series default (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Sperrlisten geladen (berschrift: \emph on Sperrlistenverwaltung) \emph default . Auf dieser Seite knnen Sperrlisten hinzugefgt, bearbeitet oder entfernt werden. \layout Standard Die Liste ist in zwei Spalten geteilt: \layout Itemize Die erste Spalte enthlt die Namen der Sperrlisten \layout Itemize Die zweite Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufga ben durchzufhren (Bearbeiten, Entfernen) \layout Standard \added_space_bottom medskip Die vier Knpfe \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset , und \begin_inset Graphics filename images/list_reload.png \end_inset oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset : Zur Wurzel \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset : Eine Abteilung nach oben \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset : Zur Basis des angemeldeten Benutzers \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset : Aktuelle Abteilung neu laden \layout Standard Es ist weiterhin mglich, die Anzeige der Sperrlisten mithilfe von Filtern zu beeinflussen (Kasten \series bold Filter \series default \begin_inset Graphics filename images/rocket.png \end_inset am rechten Rand): \layout Itemize \color black Nach Namen suchen : \begin_deeper \layout Standard - Klick auf \series bold * \series default zeigt alle Sperrlisten an \layout Standard \color black - Klick auf einen Buchstaben zeigt alle \color default Sperrlisten \color black an, deren Name mit dem gewhlten Buchstaben beginnt \layout Standard \color black - Klick auf eine Zahl zeigt alle \color default Sperrlisten \color black an, deren Name mit der gewhlten Ziffer beginnt \end_deeper \layout Itemize Schnellsuche \begin_inset Graphics filename images/search.png \end_inset : Suchkriterium (z.B. Name der Sperrlisten) eingeben, Klick auf Knopf \emph on Filter anwenden \emph default . \begin_deeper \layout Standard \added_space_top medskip Um eine neue Sperrliste zu erstellen, drcken Sie auf den Knopf \begin_inset Graphics filename images/list_new_blocklist.png \end_inset oberhalb der Liste. \layout Standard Um eine bestehende Sperrliste zu bearbeiten, drcken Sie auf den Namen der Sperrliste \end_deeper \layout Subsection \pagebreak_top Allgemein \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard List \color black enname \color red * \end_inset \begin_inset Text \layout Standard Name der Sperrliste \end_inset \begin_inset Text \layout Standard Basis \end_inset \begin_inset Text \layout Standard Whlen Sie aus der Liste die Abteilung, der die Liste zugeordnet werden soll \end_inset \begin_inset Text \layout Standard Typ \end_inset \begin_inset Text \layout Standard Whlen Sie aus der Liste, ob die Sperrliste fr eingehende ( \emph on empfangen \emph default ) oder ausgehende ( \emph on senden \emph default ) Faxe verwendet werden soll. \end_inset \begin_inset Text \layout Standard Beschreibung \end_inset \begin_inset Text \layout Standard Kurze Beschreibung der Sperrliste \end_inset \end_inset \layout Subsection \added_space_top bigskip Gesperrte Nummern \layout Standard In der Liste der gesperrten Nummern, werden alle Nummern aufgefhrt, die momentan dieser Liste zugeordnet sind. Um eine weitere Nummer einzufgen, geben Sie die Nummer in das Textfeld unterhalb der Liste ein und drcken Sie auf den Knopf \emph on Hinzufgen \emph default . Um eine oder mehrere Nummern aus der Liste zu entfernen, markieren Sie diese in der Liste und drcken Sie auf den Knopf \emph on Entfernen \emph default . \layout Subsection \added_space_top bigskip Information \layout Standard Hier wird Ihnen lediglich die Information eingeblendet, dass Sie in den Nummern Platzhalter (z.B. *) verwenden knnen. \layout Standard \the_end gosa-core-2.7.4/doc/core/de/lyx-source/ldapmanager.lyx0000644000175000017500000001423110443256377021263 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Zustzliches \layout Section LDAP-Manager \layout Subsection Export \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Exportiere einzelnen Eintrag \end_inset \begin_inset Text \layout Standard Exportieren Sie den im Feld angebenen Eintrag (DN des Eintrags), indem Sie auf den Knopf \emph on Export \emph default drcken. \end_inset \begin_inset Text \layout Standard Exportiere vollstndige LDIF-Datei fr \end_inset \begin_inset Text \layout Standard Whlen Sie aus die Abteilung aus der Liste, die Sie exportieren mchten ('/' exportiert alles) und drcken Sie den Knopf \emph on Export \emph default . \end_inset \end_inset \layout Subsection \added_space_top medskip Excel-Export \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Exportiere einzelnen Eintrag \end_inset \begin_inset Text \layout Standard Exportieren Sie eine Organisationseinheit (Organization Unit) in eine Excel-Date i. Whlen Sie dazu die OU aus der Liste und drcken Sie auf den Knopf \emph on Export \emph default . \end_inset \begin_inset Text \layout Standard Exportiere vollstndige XLS-Datei fr \end_inset \begin_inset Text \layout Standard Exportieren Sie eine gesamte Abteilung in eine Excel-Datei. Whlen Sie dazu die Abteilung aus der Liste ('/' fr alles) und drcken Sie auf den Knopf \emph on Export \emph default . \end_inset \end_inset \layout Subsection \added_space_top medskip Importieren \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Importiere LDIF Datei \end_inset \begin_inset Text \layout Standard Drcken Sie auf den Knopf neben dem Textfeld, um die Dateiauswahl zu starten. Whlen Sie die LDIF-Datei, die Sie importieren mchten. \end_inset \end_inset \layout Itemize \added_space_top smallskip berschreibe vorhandene Attribute: Attribute, die bereits vorhanden sind, werden mit dem Wert aus der LDIF-Datei berschrieben \layout Itemize Existierenden Eintrag berschreiben: Eintrge, die bereits vorhanden sind, werden mit dem Eintrag aus der LDIF-Datei berschrieben \newline \newline Drcken Sie auf den Knopf \emph on Importieren \emph default , um den Importvorgang durchzufhren. \layout Subsection \added_space_top medskip CSV Import \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Auswahl der zu importierenden CVS Datei \end_inset \begin_inset Text \layout Standard Drcken Sie auf den Knopf neben dem Textfeld, um die Dateiauswahl zu starten. Whlen Sie die CSV-Datei, die Sie importieren mchten. \end_inset \begin_inset Text \layout Standard Auswahl der Vorlage \end_inset \begin_inset Text \layout Standard Whlen Sie die Vorlage, die verwendet werden soll, um nicht existente Werte (in der CVS-Datei) mit Werten zu fllen. Diese Option ist hilfreich, wenn Sie automatisiert sehr viele Benutzerkonten anlegen mchten. \end_inset \end_inset \the_end gosa-core-2.7.4/doc/core/de/lyx-source/ogroups.lyx0000644000175000017500000001512410441267103020473 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title Objektgruppenverwaltung \layout Section Liste der Objektgruppen \layout Standard Eine Objektgruppe ist eine heterogene Gruppenvariante, die es erlaubt, beliebige Arten von (LDAP-) Objekten zu einer logischen Einheit zusammenzufassen. Sie erreichen die Liste der Objektgruppen ber den Meneintrag \series bold \color blue Objektgruppen \series default \color default aus der Kategorie \series bold Administration \series default (Men am linken Rand des Bildschirms). Bei Auswahl wird die \emph on Liste der Objektgruppen \emph default geladen (berschrift: \emph on Objektgruppen \emph default ). Auf dieser Seite knnen Objektgruppen hinzugefgt, bearbeitet oder entfernt werden. \layout Standard Die Liste ist in drei Spalten aufgeteilt: \layout Itemize Die erste Spalte zeigt die Namen der Objektgruppen. \layout Itemize Die zweite Spalte enthlt Knpfe fr den Schnellzugriff auf die Eigenschaften der Objektgruppe. Sie dient ausserdem fr einen schnellen berblick ber die verschiedenen Objekt-Typen, die die Objektgruppe enthlt. \layout Itemize Die dritte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufga ben durchzufhren (Ausschneiden, Kopieren, Bearbeiten, Entfernen) \layout Standard Die vier Knpfe \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset , und \begin_inset Graphics filename images/list_reload.png \end_inset oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset : Zur Wurzel \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset : Eine Abteilung nach oben \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset : Zur Basis des angemeldeten Benutzers \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset : Aktuelle Abteilung neu laden \layout Standard \added_space_top medskip \added_space_bottom medskip Es ist weiterhin mglich, die Anzeige der Objektgruppen mithilfe von Filter zu beeinflussen (Kasten Filter \begin_inset Graphics filename images/rocket.png \end_inset am rechten Rand): \layout Itemize \color black Nach Namen suchen: \begin_deeper \layout Itemize Klick auf \emph on * \emph default zeigt alle Objektgruppen an \layout Itemize Klick auf einen Buchstaben zeigt alle Objektgruppen an, deren Name mit dem gewhlten Buchstaben beginnt \layout Itemize Klick auf eine Ziffer zeigt alle Objektgruppen an, deren Name mit der gewhlten Ziffer beginnt \end_deeper \layout Itemize Weitere Suchoptionen: \begin_deeper \layout Itemize Whlen Sie eine oder mehrere der Optionen \emph on Zeige Gruppen mit ... \emph default , um die Anzeige auf eben diese Objektgruppen zu beschrnken \end_deeper \layout Itemize \added_space_bottom medskip Schnellsuche (Feld \begin_inset Graphics filename images/search.png \end_inset ): Geben Sie mindestens einen Teil des Namens der Objektgruppe, die Sie suchen, ein und drcken Sie auf den Knopf \emph on Filter anwenden \emph default , um die Suche durchzufhren. \layout Standard Um eine Objektgruppe zu erstellen, drcken Sie auf den Knopf \begin_inset Graphics filename images/list_new_ogroup.png \end_inset oberhalb der Liste. Um eine bestehende Objektgruppe zu bearbeiten, klicken Sie auf den Namen der gewnschten Objektgruppe. Es ffnet sich in beiden Fllen eine neue Seite, die die folgenden Reiter enthlt: \layout Subsection \pagebreak_top Allgemein \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Gruppenname \color red * \end_inset \begin_inset Text \layout Standard Der eindeutige Name der Objektgruppe \end_inset \begin_inset Text \layout Standard Beschreibung \end_inset \begin_inset Text \layout Standard Kurze Beschreibung / kurzer Kommentar zur Gruppe \end_inset \begin_inset Text \layout Standard Basis \color red * \end_inset \begin_inset Text \layout Standard Whlen Sie aus der Liste die Abteilung, der diese Objektgruppe zugeordnet werden soll \end_inset \begin_inset Text \layout Standard Zusammengefasste Objekte \end_inset \begin_inset Text \layout Standard Die Liste der zusammengefassten Objekte. Drcken Sie \emph on Hinzufgen \emph default , um eines oder mehrere Objekte hinzuzufgen. Wenn Sie eines oder mehrere Objekte aus der Gruppe entfernen mchten, markieren Sie diese und drcken Sie den Knopf \emph on Entfernen \emph default . \end_inset \end_inset \layout Subsection \added_space_top bigskip Referenzen \layout Standard Unter Referenzen werden alle Verbindungen dieses LDAP-Eintrags zu anderen Eintrgen im Verzeichnis aufgelistet. \the_end gosa-core-2.7.4/doc/core/de/lyx-source/fonreports.lyx0000644000175000017500000000674310443263556021217 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Zustzliches \layout Section Telefon-Berichte \layout Standard Dieses Modul dient der Anzeige von Telefonberichten. Dabei kann die Anzeige mithilfe von Filtern beeinflusst werden. \layout Subsection Filter \color black \begin_inset Graphics filename images/rocket.png \end_inset \layout Standard Suche nach \emph on \noun on Zeichenkette \emph default \noun default in \emph on \noun on Abteilung \emph default \noun default whrend \emph on \noun on Monat \emph default \noun default in \emph on \noun on Jahr: \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \emph on \noun on Zeichenkette \end_inset \begin_inset Text \layout Standard Geben Sie die Zeichenkette ein, nach der sie suchen mchten. \end_inset \begin_inset Text \layout Standard \emph on \noun on Abteilung \end_inset \begin_inset Text \layout Standard Whlen Sie die Abteilung aus der Liste, auf die Sie die Suche begrenzen mchten. \end_inset \begin_inset Text \layout Standard \emph on \noun on Monat \end_inset \begin_inset Text \layout Standard Whlen Sie den Monat aus der Liste, auf den Sie die Suche begrenzen mchten. \end_inset \begin_inset Text \layout Standard \emph on \noun on Jahr \end_inset \begin_inset Text \layout Standard Whlen Sie das Jahr aus der Liste, auf das Sie die Suche begrenzen mchten. \end_inset \end_inset \layout Standard Zum Durchfhren der Suche mit den vorgenommenen Einstellungen drcken Sie auf den Knopf \emph on Suchen \emph default ganz rechts. \the_end gosa-core-2.7.4/doc/core/de/lyx-source/faxreports.lyx0000644000175000017500000000673610443263556021215 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding default \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Zustzliches \layout Section Fax-Berichte \layout Standard Dieses Modul dient der Anzeige von Faxberichten. Dabei kann die Anzeige mithilfe von Filtern beeinflusst werden. \layout Subsection Filter \color black \begin_inset Graphics filename images/rocket.png \end_inset \layout Standard Suche nach \emph on \noun on Zeichenkette \emph default \noun default in \emph on \noun on Abteilung \emph default \noun default whrend \emph on \noun on Monat \emph default \noun default in \emph on \noun on Jahr: \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \emph on \noun on Zeichenkette \end_inset \begin_inset Text \layout Standard Geben Sie die Zeichenkette ein, nach der sie suchen mchten. \end_inset \begin_inset Text \layout Standard \emph on \noun on Abteilung \end_inset \begin_inset Text \layout Standard Whlen Sie die Abteilung aus der Liste, auf die Sie die Suche begrenzen mchten. \end_inset \begin_inset Text \layout Standard \emph on \noun on Monat \end_inset \begin_inset Text \layout Standard Whlen Sie den Monat aus der Liste, auf den Sie die Suche begrenzen mchten. \end_inset \begin_inset Text \layout Standard \emph on \noun on Jahr \end_inset \begin_inset Text \layout Standard Whlen Sie das Jahr aus der Liste, auf das Sie die Suche begrenzen mchten. \end_inset \end_inset \layout Standard Zum Durchfhren der Suche mit den vorgenommenen Einstellungen drcken Sie auf den Knopf \emph on Suchen \emph default ganz rechts. \the_end gosa-core-2.7.4/doc/core/de/lyx-source/images/0000755000175000017500000000000011752422551017507 5ustar mikemikegosa-core-2.7.4/doc/core/de/lyx-source/images/select_new_component.png0000644000175000017500000000070410435550444024430 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 'QIDAT8˥1HBQdCA57Ec%M8DKFj)[l5&VA5$aCK.oZo٫|:^s^%"8kn'Qjȿ/^5<W Zg{>zQ.7S`gO\Q}dvt08"z Q^Xwn䡢\sX0n]F*#?6yT)p1A 0y(+ϯ 1L@O|`e}-) ilj,˒j" vv*_4 n8 +=uxR@+oN IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_root.png0000644000175000017500000000152410435550444022235 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/search.png0000644000175000017500000000177710435550444021476 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/forward.png0000644000175000017500000000132610435550444021663 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<hIDATxb?% (R7oX>>zxgQ)W'i P] '+; ,--mv/.@! e< lL3ncPf@ 022(/nf&@'J}ΘyS#x\l@1T pS]ڝ7 ?~c7 p#s >냅@1*C??2J~j 4 KzDka. o)_m5!.'×@X_@`Wp22oo}f߿32ܹ ;$bf_W]H_ /rOb/W՞0 eb b V x~ђ=vcҜsb~@ Xwt"we` YzJ o߾1xzzfg D=T3 @` 455@,q Vf@F!ϟ?G5 p`/ *IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/blocklists.png0000644000175000017500000001030710435550444022367 0ustar mikemikePNG  IHDR00WgAMAܲ~IDATxyxT?Y2$dK, J"(X˥O`j.PE nEvňlaHBI2If2l3b{>}sΜ3[?>jbkf@}W|'~Oz/R7mU} Wz-JOH֐)p]JYܻt߳ e{>\*.գhfՀo:98nXRWT|prK* eXܹwʲokkN=n΁@E|D4$HJw=dQSϗ[jI7Ǟo:~孞m W^(nZeH[,RBCH c"? %$NX\1{k_=?ּ/y|o89)1ĸt9 "6͑#=#&*'P=Z97ݤE[ZOw+ c@޵l7&.w2Az/LqwuU $ww|g*MB*O7AEӊ]V{hnݩ}fȏڟӷ,3@@c4h5  J,G˝X HEQՈ]ˍ 'kO%f_=2f1w4r;;Vo=[Pgj9Hy2AV lMLI)d ?UBbsKyW]˙~[! ֵ\ e{[R2-Odr 1Ut/@(c(a*Rr3\S2⻅%^8ps+/3֪;)T]ڑIch魳7s{ʚ`5 he1c 0jw&df TfOޛslDqu֑Z/lo- iCfcwlO?#;ęU@VA: * BC 8>1繇 L.ę`bAΙ]t+6F-礢جz﮲>ь+ڷa?->!`I~X'-Pp]_[b\qC>?c>/7i GRvtIaNѢ)Lл 68ز`GLJ$enc3:5]7D8m:+ũ%g,&kJ?Y&Apƃ##_dA):Ņ 9DД('w>L.O<=ʪF~=H^Y=TUG. @[sMN e Ϟ7}^pl3^G*A[S v F?6,AƏ&RNY~olfǡp]-љsgr ܮM;o41`8ݤ>ƞA r07N7FQp /J=m?W.5S6}tb5(\$)XcD7$$.yhwlYbUS8N&O NYy#owsG `9׏uߛo ]F$p%;| ?!qh-^l̝3Ma2IHh?Vsؿ/o6~*bu d{_^).G Q6~!S-Ji 2rwbV*C+y[0}%o i0F I7v46{O|bb?`J܅-yo-1&"GQ|AY,x %"TJ' шa#[}߃lm/{ fJw= y? ZS@7R9# cY`3G;{ .ָITF4o!5 h lcUNxg\`d --_Z!3&i@\>?}*OkS,6UѮ9B8Uj 1>PX37ZHK1'%XATŀm*UDyH J= P}?rHrHƋk SJ`er=:GeQ~1FFH0kSu@YsJMaXt!m`¤8/Ʊ&Li/\ {@3:WٸwA䜫JF c7K$^vݨ;֮Z=MLoaѳ>~"',e:.Ԁs*{ҊxX:( @B<Cځ~5AB^zz"wM7>p'IZ}dG"1q,dM~OTD5#]v wO{n 7F C@ \qCKJF5 Ec*vΟ]*.sE=Ź&Ӊd{ {@BN9?֮|^$Ǝ"T&Na\JK).N2i? я#SD:ȹ>ٖ+]yվݭ͓HHkW#6JƻIdxp6tu\vFtRR"mpG/12N ywPjBg7~P][Wbg RҒظKSS#3il.SՏ6RS~i5fHHS^Z[pϽ2¿`{ׄ)rΣzQī5IJ: ϛu]/u}`t]:o.:pM7/~ң~`Q|ՒbM&[۝Bh8GL=1@ =Z@ul-PfR{/>tev֋y`~~pv.o.W=buǺt.)o&(iIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_invalid_application.png0000644000175000017500000000153210435550444025566 0ustar mikemikePNG  IHDRabKGD pHYs  tIME +SP{IDAT8m[lLy?g朙1s:ZE6lZ/,RK!B/ i<vmi_$UB..1HF)#έ3S9}Z]Kt))aN@$ mR]BŤi֒Ӊǁ$KQ5Mozj P0Ԃuf5 W)kK"e2Yr͋w++4`,XJVcCmvžI S2>7\ r[ ` ߏy7Cƒ;v"Y$dQpU>zG%Xf LND3 SJ][uw'LcC ݝ@Peߥ<]`X.}Cމe+H BGw7/u L 4};K*ĭѼnyD4.B Qj8/Zmlwvm!BRBwں]@)`WjaG%?is??^@'"=O..`G#5y08K2PKzIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/dtree.png0000644000175000017500000000126610435550444021325 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<HIDATxb?-@XM{69 ~ 4 R? ~}Z@, Cݍ~b`O ߡ ~= 4?ĥ'а_ 47? FbC(@,|%@ FfFпȂ@/,^@, r gϞ͐J0r@ 1}GTP Xgr)VC!|bt s- _8 lA gd-q0  6y\BL90ATM#>CA F. E@ dM`_Ѵ%!f` ,@l YJgj;@1Ҫ &;QL! <IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/crossref.png0000644000175000017500000000116410435550444022045 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME 8veIDATx͒;hQ{wfgggfwnVP4•DETXXXM"FERX(!ME K3{bIWuNq>klDe*PXH0ۺFďiPƢjZ(y3Cҹ\Ϸԛ!M L6/16mHPl ,]<]mܙ-^f<]~ 2q0vrB9ZhCW) E̬~z.}cLQׂ`gu,!ӛ1b]lP4lh;3N= )znldz=t@)!{ `ߎZº,*t#*AHā-eEWpߚ?/-p!;(ׅ=NߦddɈŤyו(:@YyǨ_ȀHta\msmQLU4*ft?͈Ȇ,ޮU}wIMZa) ! 7jZH®]4!!MseWP6 !m:@!&rNy=tnL@Wlv gԎr`olwg=fR"TA;~ "؅DŽC[9F6o|YNӗ~#q=*Crc z#@q\ضy=x/ gO;(mh2/QG.䄵ܪYuCapb1Ñ%@ZMm-vHcn >@1;zh#thA &}N]--ul©zRH\O2bƃYr5^Gk2B {\up@nMHz .e)i5AcI@ G!h\/ sž7H"aT'P8RFZtlt.Isf/\'M"BH5hK@I\GLޅx \W)gA9R H2#htQVصHY'2ƪa2Di@dZl4H7J SRS]/it9AJAR@RBHHD!HVj%E.(nP=6$_Epyn> nq=%c&# FL(Ю@p #px@*ANG&NI(w厠8sg3i7 eFd%@HEsh`w&=%"GapD?tl*9-_C&B|% e%4T]?OY(ZW] -x(>@EWs*-bMP#B2BbA(iOJJP0`98Љ\zo_/疇yi^.LN*syKc'U2ߒ*suU $0 (iȧ?tmZOIc "eAqMt>};'7z(b2+Qz[̻dHPJ dwF q~a4HFmDZ]8Dp l9l.dV0On3A/OۦutnGd(?x H~ $R@ rRЯ}RRy5IWF@֭Z-^LY/5P..Y;[?ӿ @nXͨ5*$f'q4xēHZ;PTJ-d5t9Jp5BP~ 2EZf}u )OHpܜjsUk_*W'Hy4^%2iiN%15nN6~gy^ݛao otێ-(*Dy xJpvyq/_.߉l%Ab22oj4dmD<)$:y98AUe6j( )m`Na60@|ɞgʐQdPe a.rU B$=X3VuA]b (?-f .0/ٸ3}iݑ,,pla3Qhc\cLz# D>}L'm6g_H:bk?ҋY=W7,Zrii2$ݐ('`7U@[y0R/0>yi Օؐϱ [\@RbB)tg+_1ge;%#WB啐pS90}zdE>NHtvMT,>Dž#СY tG6ⱕ!~jRpu3Ǟ|5GD=7eމ*\qR8Uʑ8I0I̱ Rń{< 8kG 1 ҧ K5R}\6Oq.~# ^a1O؋Jt͡/ #f8 Rܶ|3o.ܷX/]^۳{Ov}hG5F>zw;7Xm}&ٌ9g&Ln&E k' ƏekswЙގ<h9IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fai_new_packages.png0000644000175000017500000000134710435550444023470 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  ;`].tIDAT8ˍIhQD'KѸ.*1D%rP ՓE"'ԓ=$Tp"IzLf_yP⇪W3A%l.\2"T^>t!x;+-P WM0uE^vuبw6,TH0C˧"J$aN܉P7v3.2@R[RҶF'|7|}&G;$TL#Pʗ'o/tPճ$kHD B)T/^}}In ZZ;w8-/FB Sv!3O4$nYҴq}4G-P ȧ~^aI 9CEXj]7&@,X_(Œ+ p\0J)nPR.}fܸ~$uJYIk)σД:onX^0izwnRPLfݲ,c6 DQE0 |vhqz$ /-3s/d"b!B]ױ,Ot )ggt.UMJ)l6m8>Y$WPcpRz3ucOF210~2Do !ߪ< A y>30g`Hߠ4 4&). 5 z _e8+fM￿ g`ge`fb VX2 ,o00|{ 4Ῐ?.?@X50g  h 33 26`f/k tv2 XB33ܻwaҥ ?d00a0f03K jz/0&Ac  ...@ \ np10p 4?ff@|?!N}|@, :k  Q @glf1 a`ߜ0p^pWH蒯`/0V@0ϟ0zׯ B o2z@  `aXŠo`Lt ` v?8P7c&'P#01eD`+3#@>ϓ`noP_o߁n njR@0*k2IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fullfolder.png0000644000175000017500000000111310435550444022347 0ustar mikemikePNG  IHDRagAMA7IDATx?hAs3g!(F8 ڤT L!_aB.XXXV\"1] [E"^uKw heݹ}gr o̼}3o"ƕ'D)@x~G?̮K`E#;6#_sc2JT+(P(br߶3Rpc/hkPoQA~cXgZG6ynz;[Bpő(\{z;YҬǮguZ<8.ؙvwQO-5 4m&&&bLMo h-H *rRDwH k~A\}0Rf)TUrw<  Ww2V*\ץ x=,~C2VaTC]-1hIRd26fP?,//7 "KKVVVwrqD"UCw!R2t=+33/ikv H61]RIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_phone.png0000644000175000017500000000142010435550444022662 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/mailq_requeue.png0000644000175000017500000000161610435550444023057 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fai_hook.png0000644000175000017500000000126410435550444021777 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_F*IDATxb@ QPPp/?2`fq#Bm$_ynA0333 dۏ?6@Е0@pxxxXXX @ F8rH 0 6߿pC~ v +++ ߿0E M @o߾ ;`%X=@ 9aat...p؀  FA{ dH x܀W^Ah+ȩ޽d8H'O02@ i0ȿRRRxJD_~VJƅ7@@@l(X܃Ȁ#k @p1]jK LX :?x3dIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/smallenv.png0000644000175000017500000000133510435550444022040 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/group.png0000644000175000017500000001020010435550444021342 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbdH1a! z1 @?Ͽ 7>`X 2?bSkZ$44%Ye`xts>~f`xѧ_3to{0h|y h3Cm\尪#s[Nar (p';_"聋 @Üg0ƺ>pr` a8P_АORDx&2H_?1[p~&d}C`a@$GF?Pzd`````G`2 L}ga^ &+31!n~~I5c6gw1#ÝK= S!a"P"[A*YU᫃ O0; /Í=/E2jOjdxv:S 1!d+rry P

    003@\'08 @!y]9dЏ/Njb C/ ˁR`bi8Ġİ_)Y~X=[HX/ \fti/!1w<9! X@>e`^63xqޮW s2HZ292<=phm// b`O&vX=pwV6N33yotOV3p31(*Y=@,|fˣ b ?ax|- B R%6 >?&wWo~0<}݁> n <\~{/xmag\@ h/1à cA5A#Zq ۅ3Ny LL|uL7P⶗'@@_ _N`~pg"iƠ p߁Ic l ~n ~AH wH{`T DlHrǿlf`x~_A'(fjׯDA<%K|cycPAޠ ?z~e:f`KXX*[)1(3pCkӟ ;"(ԾK!1y :AWO3°Z|~6 XW14KNr(Yaq7HȉHO݃ҏtaؿ|Õwac[uXDyDvnk@ _JA E bz ֥ F4nNbX,*/A_2@4S@X'r1xK1(ZCP{t Ӟ~bM Cs X,#f2&7ɠ4q- { uABɍ!T[DٔALՔAbG_!~S /d,ݮF=(AK%~"!I@/.>֯Xf~6ÿ_oݥ@ \ O=,'`/`T dc8`ygt[-qO Т?Xy׀!BA)/_zs;%N2>ʏ7ڦA+<@ƅ@+H"C#+oG?ypLG1h-%Iq'qIm:k)^~V}y0o|Y%`  )*\Ќ@Y`Wa+TwU9^L!ט`0h#MߞL<`Z@(yx$%}[.s O|ax j520P|{19rI/^e` 륓_}8b$ g?0K X-:^`Z%Kvx/}f`'ϐI#~hnz A3OduĈ-䁾:r<wi)+ {z}vօ1(1_ֽ=b`[UP| ,zedxY"YJAﻻ QgxxhJ00䮇?`ĂtIG_; PݏD; ODIǙ .3e5j {1=&aWQd}MA\<  P (yם;c1 O.0<4;;P e$a뿖 P;AU  @ ߿ G ,726x2\ I Z h 36i~7 ,6001e8P ")8Ubp3bЇ'@Vzҋ(p1c@ D[*0sR~VppCv,@{ F,a/FX運)`lfI5SVIv8#_XP?P?zSZns@)$ Q!!~q]v; ?3hĆu:cݾkx$BWPV W|u/@+2p }k?2yn2&K?H ) gmtu]xc,~FO+'ޙH btbf ~ADOrJ: RQWT6*y=?0<`f ]x϶#TIn^eglhG{§'an>:Yd2xaʹPB$kClIdFH]րb҂oi2O\! b!Z1Ȏ0a%``Ef )@~~##c_\86wBkcQ4w 01zeLڟAG΄8ntV^;U_s]{Du/Fā}o,X~d퍀p+[ /z]#u옧JGeA,ELu1WMuÇžGIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/back.png0000644000175000017500000000133510435550444021117 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<oIDATxb?% (cdb``bd``@Gn\|dFl(P ȩT~93|;W @X]UTR@2HXLNjd;+\-@1a "){ 5`~Z'1Xne`bac7\=@ k9a8f 20;[g/i[1p2 @,H6s_")'?×~`'.[7/ ?|dcg8O3"7a_k?@ԝo ߾a/ç/LYYZ ao,/3~/k~%&&sA \^jb;w34?Ç7޽oϟ~1|?@y6F@sie̱ed0y?|N ll=zZ $@]#_.ͼS@1; bu( Ġ@ f1j4 ڸ2@4-QJf@8Ļ RAΕ  mxlUVV1#@ѓƱIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fai_new_profile.png0000644000175000017500000000160710435550444023351 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  2IDAT8u]Lu(KeG5dٕ"Q a#8/1gbL\H1hp:[&. vl *Юv}۾/ sYw\䜜 79E[ :;?xvW^&x~?Ǟ:A Y2liv(FVnjXd: 6j- Gf;Ydx̓'~yr%rǍ:3kQG*BĕrFd}#O]\.U1o[+(t!_"" :@4Yc>Ew強#0uc2D2Or=\ ,0cG-TV_PfÇ&WZ]1>ŗ ʐ! ŨÕ̭ۅZ@Uվwlpe+ʭ<]Fx)b8kkcY/,şgVh27-:>մ~3dYo^VO{  ӢZ2 hxFH07u{ #30I # # ?PZ0C`ZA @_uA : sB¡@i;j!@0@uG1c5-WG?@M8̀0ɫkYra4,`!H(`PA7J,' IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/mailto.png0000644000175000017500000000117310435550444021504 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8(IDAT8œAKTQ׹yXf-f˚SF#J ČV>F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/false.png0000644000175000017500000000135110435550444021307 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/editcut.png0000644000175000017500000000144410435550444021661 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME  *}IDATxڍKL}vXHPhA&hƃ!zx0Qc@<`7IOhHԾݶE0F̟2f=466{ebb>0::]/ ܝ,,'w{}}O z/MI F,SC~ؗ # ЂpnE[["B1BQx}jjqZW?EQp<7<<پ_[& !V^B& puv2 3:֒L.C\c[{. UiN=q:j;st](:Rhf0FJW( 5cכOZр`5u@@k=%'gt]>/y5׈y-$Ukp؃%:OĴ@k}JpO,)/NngUoMYQ9u.B:RZC\FNǥrw[*R쉒ȣ#|Q/~U+3e]d)ӥrRk}4Xq,S*A5Y J>I!J)( Fܫւ|IJ @Lf7- %^hsO<0LZ\'ʋU o  28Փũf%mSOS 8G:}+}_rB,OIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/proxy.png0000644000175000017500000001215310435550444021400 0ustar mikemikePNG  IHDR00WgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATxb?P$FPOڏw)-n+ïO:gXDplBf}:* `d岝M_ɑl) B \ , _cxáM'NJ6~>yO@/b C!CL#-6Q x 0ٸ1023H 2D1|? ̌~Ձ/^207 2180ܺ~eY;5=@`dg#PX=0?@?3`+"g/1|Lf~1_ &*@@v $|w-0@Qr`GJ3ܯ \$#+عX5~qP^~`F?` 4,XxN-+12@"+'?/'~}a&!)j #Po fl>o?LLez !`l XeQX)a(>&vn ĵ[n΂1!RHKi-| `˨5b%=wJ>Z?*#$ .7G"};b(b{t}f9>KjU`q :klHAA\6iDKfΐ3Nڏ=Ϣ=>ǽ-#>󆖔9tP^#: 55ԨD6ѣH@Ɏ81,*^ $.t TQTKPӔ?twן0s 0p3Ȉ 1h*(0(J2Hr2hBۧϟ>+?uI`¯߿@٘M60p1  Yc/ ,Nc*Q,JXr53E~1HeP /ZaxÓgO^| L hPcp"Oza@ ߁Z\|@ 1@pkb6`!'A "F Ofen bBt$2H ЧO2x >fgE >\A% =@'I +1rp 30p[ 8?^3( 1?dË޿K˥) PR@,l|c{.*J9,vcXr}+sn{;,Bul ,:h 1} 칁 I`gcetP@&=V]$@' yf <;#8Av"#,HXY ,!3XeaSba%?`-u;Z ҿ@L| <<ܭ,,lf~[@g00K !DVv49~}Z@V M+f`oSO F\\)ї(mA|P LԼ,׸8~df`+3 G`-@g6;>)y+]fe 0@1qrM.anN&.N㿾;&/4ԧz4 RZ >b`y سg`gX13;:c`X_;6?x9yoM3y d{;0?"1.!L OAZ>?PWX"vӻO*磬cāe:_Nds~ a{1'ƕRK>bT l'80C[3LO$%,Ʌ2zhy :.?|z}XٽM+ Mz_rmr3@kAgۅدΘ! LB҂ 2 B2P&7`X2/?Ϗ?2<;z@aۗw (8= y)##5)TUT5o~ʚ sVhVJλ%W\Cng|bf`!i`^8-o_:^ ''jkPlH2& qy)))n`ҥKgϞ@¾[Pz?wx%dߧo8ٙX ?|ëw_><@ G~edg@0Ԯ4 e 0[`Gׯ_߯Y… s;r'@1†ׁH01"u8AZGFe&~/Pn៬:Lzb@;I*(*333J#D4񬬨߸iݻvF &@!HRa6h>aU@5 #8@ LB*晲̲*L\bo^z-x4;?Ho P=ȁR RR`_?]xݻw( +++{Vs?^+|u2(2=3ïj[Ґn# [pNq/ʪ8W۷o;{  a \ 9_l# *kg4Ī ɊYդٕ 9N*g Xax!Ð|DGAZ`鳧 gΞyy;.\ > O]Bl;P,Kǯ 0//) 셩ʳ 2Ϛ-ePnee8p<.[~0\7aД Gy|]`ih0h0^fOO2awc`yA%, lt !f?ny;g4XC}#@|H# )U,ͪdM,i;/g2:py `_s `} 6gRa> u3hJ9f9 B HR=`JF Y\fP6jb4 ß߯> `[jn_ e`f~ _ hI %"%@aݴ } &~, b" ֿ`8(ABy'-e`wT>'G''>2\=  r/@EOh E#@&~{pNG=vIk3fjdebbcvÅ~ .ic"͎T<|;hJz#Dy ǏSnXm/ р L |.ݼp?Ϙf|dxb?AEy;AR 4D@C773H1(s1hˉ2l?%4Aeǟ*&!_2n|1_ePy gh !%A H*_н O2< Ѥ$yF[߼~fy 3.A Z\bXRM>$b$uDhh!v‹ 7=!>B0 %t;wOH %T?}>0}) Bܷt/Iz4ͱ_oPGO8ds1_ᰒ(tӿ⅚/H;?Vx FrۀZʇڇ8̀?P;7Q*-r J6G7YIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/cant_editpaste.png0000644000175000017500000000072110435550444023204 0ustar mikemikePNG  IHDR7bKGD̿ pHYs  tIME5kbIDAT(=;kTQ{7be0 ],-bka-X#XX(QXa eu,vL;'6˯VW|^1R+svuӝt[;بӞ8޼޳ }an_AKmNk9%i[(-]?<[} ⱁiHRߢb+m}[ q10ԓƾJB:-RJa`H@&͛v 6z$Lj#}\K]Iq&6טAK9VO |k 4J햄ڬQ '4ģG Ep\#h)5Z=IT7GDꌞIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_printer.png0000644000175000017500000000124610435550444023242 0ustar mikemikePNG  IHDRagAMA7]IDATxRMOQ=o aB3M)mb V t¿nK Y!a 4b hCie>ޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fax.png0000644000175000017500000000643010435550444020776 0ustar mikemikePNG  IHDR00WgAMA7 IDATx_\}?ݙݙװ ^c~VB!R )THyCH'$Cy j"Q)) Dxh0nD212Fwwwvf?>̜;]i~ў{s~y㮻[)e+I$ap'ajYʾ?߮gm6MzmY@F']tu7{$I!D^fsI)=$I"RTY0HdC7:׳ xꩧ]׿mV^JR2557.\f:7`Ox֭#[l!ΩE)wO;R \J ryiG5о7d4QLL;Z̠ SJr%,p]7v]!RJ(J钥F}\.3::JIJ,LƠz}zk`Y 霞&/]<ȿ?ӻ-kz/<N3g|;>0 & 2Z1dA/s[׆ih4J Kk=y^>u]vűcXXXO#iZ5x$ C@aD^c"!eq^ŋ+-[n*/4M(Bc`!ML#mHሀ-%ܽn `޽W_};V%H9P("IΞ=rrj-r֠&?P\oe[cH$3'g⡇j:{l`0#8t( (0 ŕPk']G2C wwݏzDR.n!-_y8###Hb066ĭ:Unϩ, R 8y 2\.buu)Mw)q\:;ڶ.F|IB${DHTrIJ"aĎiE1?ƒC˘b/}J 2 a:NjbޡJGRȢұIL=RIJ`[s6R ۶cAheRP~n0*UIB:̧ۣPR(c8FJu7,<ö4aR(PJAP,z mCS(k"]t::P>3@fnnrLRj/dttnŬz뭌kf}N-ABIyul& C `dd50q0\]]… m:fzcGAg,|>z`ztl6T*DQĶmhZ,,,P. )%Be HiUF @}= tٻQ}odcBP(h6($IBXdyy9ufI\>NDJIZMy\|bطn/X)Ȃr R,--177E>KKKX$Iˬ]^!`)}8K>j Z!buu(t:,,,pwP.i6?Q&''Y\\sة)vMOT*"nb.RA %HiJ얆RvW>mSh4inrK4MlN3fee v˲67) t-I:l⯭Q9x\NbD~{cydHt:044DXL"PV !QtjTU֮R:=}zВ$ g7߹y_-yC|r~~8\(Rmn àhPTIw0 \exxp]7^{qv_J8t:Ző•V}Oо} =0jÉvjE˲c~~ͫjbYR)ͼApi>ZYYn333s ,8ޙvargΜaϞ=yoQ*4~D>l4e'~SUexUQ8NJ m;I`uEfggO?00` EVv2B={044Dbnn{6(ϓ*JyW7%WYykfW_}zzzzm XsssE 022=܃yaۙ87ߌmݣ]r5ޮ%׮]īuZApSx_ ,+ٵkOǘfEQZ⎏S*X^^^!Ju[afꄚ>Vi6)t:u?̹s7G`V+ _?|orvQnYXX`qqRDTB)KW*f8{twwyn/40:Yz}o#0q _W" CСC+خ.ҭo@F9@^ۘS2IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_new_user.png0000644000175000017500000000142410435550444023100 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "Ω2IDAT8ˍKHT{XfYkT{HaPTPAI )*-Z1l A$A5BT"hX#fFf²(:&<noŏEfmƿ[I0bKt0-t6"G){0|砨8h[א[Z?j=IK4nK{̖="B|nקis3VP>بH$r:bqih !"~Z.I !J|eRBNA(i{ @](dw=/ݼ2LCAW=w*Մi 4*A{p)|nu"Tsht <®) aIo喭=B~@`ݾէw:uB33QĞsȩk2WHKPո(ɺm%+ z=h*x“mҎQ t~ХSIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/log_info.png0000644000175000017500000000165010435550444022013 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME %9tEXtCommentCreated with The GIMPd%n IDATxeMh\eΝ;3ɤI̤FMZSVP'J PӅ.EnE•l "]KR`6`(EZCM:!3M&sHZ=r8G|12~ܖ@-J+կݱ7}{^l7n}׏va.j$8e& _>nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R%o.aY_?O3~׋ ?b.m3sۅH8 (r=9 1{c}m# gO0| '##'?, ~g/txs+[t7+3 bgb&dO  @}KKOg dPa:?=o3{ /^hcsܰCopRa _~a *0AgZߗa刺 e!ÿ'*0Ruޗ\B L 10䙁1t<01ӿJ^];,[@7а ~C_'~01231< >20vɆ+;+3/1K >2 y9~h ,/,gTV`?Wf\ "o .8lF8 ;&^ b | 33 ??s|>3|`d\1p210{PgJ@32|cK;~M@p Un8@Gx3 _y'@0mc8]ANVAZ30l0|pؔA[N_'>vf6`^83f'×_^IoyX to'(J_ /`2<@X0×L b\Pe~=?'_W>3\|χ?0>0gw }>>QWBVNzvQXPO`b`@IaArׯ>3_!++a % *l `,y=r ?ߜ /SMN.=uF_ B@'= zx?@_?~C@3ë rb @c̀z~=~XIKp p ?2k001|'4ShYcy.(~U.@x=z=qʸCX> ??l$ & ?H /_~0SV֯ "|_} #OY2H iF߭g7ÛORGްH\%@g Q+X&1[x/!L\i4B nܸh?o}ms {7G 8&ŧj0SٮPS~>6$pl 2 8+TYiN/&ܤsraG"M T3T|dy*E`ivvv KUr&"R|y6P!VƆTYWԀm%Ns )9tvp7(P vv)#02H{cR?X@&P?(to> /r9@恓3"e5*0u&, ?;?accgxSظg|v䕗/ i s>_X !;1$aƿ?W^yĀp](04ZZӸxUWϠ b{-/y@Bƛˏ!JŒOtlZLeR_MqN.GX)wԭŠP0Ge(NɐҴY[yB&`fc`o_+%`+Bp,2/45`\qr2}LLس_! )X?3w5N` 0ՌL`{@{p}$HTAH+P^db7C/88ٹ~?/]/*@1sW>9-% ",~0/Wυ.ܶdcH @, l\ ğߠ?8ɀ  ! G]o`̟AI?ЮR 9Kd1f,4 X3}kw s~fxF䅗֫`%LR@65>`-'0Jq3z˧_4 0LLbeXL&8cT< ޿60D1l]{AO@}eP [ RbG?  s0y\cd?d?'@E,u@_pP0ZA4`z 0:; +ã;ٿ 00 !56IgϞ3dz0 ,mlX<€[쉠d{cCA;oPd֠l@ Ѵ~0<:>›a``6Xv2T#t=@zddrry`fР^< 'd26pwo2U06@e>}Y四9h F76 DӤ\Ǯ1|:<$R:B "z@ZR!ԝԁg4zٓ'ai`:Z h0r1S{sR BAv3| \_ذ#: C' ~ k׮Jb,o]}t_p i|nhޡ-ӿLTJ1܎gD4 q<,LP@D߼yWP?`޹l43@8&ނ;wH(xP ݏ+HAW Ġ)XP* Sؙ>sPfމ0G: :RA1hX4  @GG90[ 3b0oB|o&έ[  9Da~B@ <gw CCpGTH3< vo?lr|au$ s4L=( (}  `V=#G>GACV9>?+!9rx>0Ք g0|~R??0ǃA@3 3HI?0 N@̜ ;|'7`t" r,3`& BZ569@KB)_&DMl,yCTq420<ۻOIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fai_script.png0000644000175000017500000000113110435550444022334 0ustar mikemikePNG  IHDRabKGD pHYs  tIME n&IDATxڝjSAL޴B)Z .,tkZ|7og5M2XDZh7ir"i4ā33?k6+VkXju)x3(rqe܏tGO!,3[xZ f0CUUDQCTQt}> OSuq K`fC8Fycef>RS cf8_f;@a[8L`!GGGRbxݠS9}2zq\ &h k5 2s+RR,eD,1Tisb &eW)0E4^~Zpg_M)_w:rptd7+O8~sV?s3bi ˳$I ^Gz^iJJq*JL50IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_server.png0000644000175000017500000000155710435550444023072 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% X.?0Dgïen|%20}Çocg8wn@d`óg?'h: ncSAQUAXVJ^a߿uA@5HPZCK_NAw?b󛁁Ve Xxygij%++ 01332* $?Al VRL[N=߿U"//&U@P/a X@/߲ _0\u( ff!,@< >@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/ftp.png0000644000175000017500000001041510435550444021007 0ustar mikemikePNG  IHDR00WgAMAܲIDATxit\y޹"͌4]%Y-/n@L8RC\H!$MЖ&pچ)!-@@lcl!+-o,kf$>w+&kS <<3gg}?ɟa,ZvwMpy2u-0M@Y7dfKV8z,l?v9%g:xT0Z+ 7 `)#$:BϱYX7$uEc$Fw=\2Cs,,Z}K"mN6;{pK.w|oѫme ђryH]`XX`Xe,eE*~ ۶Hg 6t`ʲy5\r~=ya;oH+|%uw. Cihߣ\d 7IPH;j`](co㇯$H"O28'O0H1:$Q\Tmvl!TRV ln)DK~@uO~iխ~ť.E]'lj##0tu I-oKӴR,fJ09p(a$RYdؖYTH]{І*VUW|}}9eW--N, T1IГ*0Ac@I$ν8,lFl!W]@Waa& lZ"@zvC h:_ai" x';MU{ F6FUI!#6yIFFdzDzd~ RDqBab HH"FtDQD$I RYx9P >kv0MWxʸT!C~…H .j\{>t:>8霅a:hIp'bE\3w {i?KIITFxw<[p뀯v+j dY7^2-7ڎsF6ظP$r΂zA5Xb}}<:: EmoF`bө"0ŶA?p/H<멫(*Ji( 7+tTG%*=<9Ka{{E&Z B G֔05BsK+%bZ6{a[m>(gUre"+{<2fͬ#3ٺ㈓X{jղo^GEfv?fݎ$Bi |'1Y*a;"pJ̝ݎhXtF'7ZZ;pApvzؼ(?"]'clzSlvDMkyzVZm.[䥱Z摗KC8Nd=-έ"I"=}#׏2VD48mC7(* 9dͺv1oRA:g,)yշ;{ͻ#3&2~?p^y'di\e4#s`ٮƓL '* "yDTCEyk`0a!A8u"sӕ{,9經;I}q DEy)m{ˍxBo;{Sss)Eh0R/duߝa|,:"#O`ۘ6Wd2ּ_nõyLҡxKp]1xn;w! y|׮$ZD|\מ|Y~[~cͱ/&xvLmJSYdi7ũ/?=#nc,O}Un:]E$m?d.zzWܥ1L3gнgqһJǴ~ٳvħrdʪHH)-V` !򋭣";m' >u#*S=KƧ~I Y-wֿH+KG$L rHb<;G;_#@Lg|Gwll;X|I?сxϖm#,-kjj<55eCGBS,@U tzOv{:Z׀$RgnA\wo㲒_x#}SC)Ѣ蔆]0gS|>P7t-Nw?su#w۶xǀu>T~ ki{2^@ JZ6 ),54&Y% 1Θ|T$oTyIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/dns.png0000644000175000017500000001120310435550444020776 0ustar mikemikePNG  IHDR00WgAMA7:IDATx͚y]W}?yzƞͳd{c'N␅JV (BZHPhURJ+$(P D)I.2ǞqƳo{gb=]{;o!T]]K0t(wcL7D:SRx̞ 7Km:͟R;{v ;;nou%ւ.rcj׮T7K(chBogQC?j}]8G ф#Zk-^ԙ ..pf3} }Vȿcl._ZkZrh Rf%/mT劲Fx(e?M vx޲ S~}OAKsbR9D[ R\G8G:! }P^0×~g>y+?{H=y|>CPP Bc@m,6#k0bŘ9 h@O+212_e-@ݞ:ɏgrxd M1Q0t[1PhSINzi47а|u3tf&/Gk݁] ? V.[R(z6qhVۛ0ւon!`P,\ǥ k-劊ظب4yvlfip뭰QsgMu.,g Ez>X\<}[45&QJGnek-վm 2h%4-kcQ!+mk}s W(ؖr5 BAұ#,jGPFJQSz$$Dk,hM*azƮde-["(+kߦ0 aKl;ZGX&[(^^drr%KPPl2BHˢZ)RH'Ifu]R JڰV@JAwނl|?]DVm2 uP02B!(S*fXbz~wpDRԈs^)@B Fna5[u"% o?t^sK{})ǡ]=\!q! a C҆j W80EFx:R[y:RH$:J^bna.$(\XL3T&7 w<|p;҉pkk3qxo/.k Ja:CƲ026@o+=M I?vnL--̈́R,^z`YKSC=F'e)W6lno#Uc@+r[ ߢTVl W\_ _ymI,dFzB`,(q`bz?:ljdq{6sK&(E+M1({>³i[knLqmʀdbvez;(WtFiE+KFpvd>s>&fH5s~8;2wb!ܷ1 }1qL|BrEE~]/H2Āk}֖0ԔC#%/Yb@}wA9dy5Oorc,GoJeōS9ۆlđ /Y..Q,Vέ \iRQ H)YXoc1la.$9}mJEHF `k  G"$qZ37tgjۅRXc5!GՖ7PR5P*D.*ˏN*Rm)viԀa6-nJz6]*vt/ [8 )Tt d8!LH ]WLUhQIݮ$DMӷM QW[un!Z֔e ސFڨ]w8Apq\Xr9T*qE `׮]311hL]]a̹sbj1&ڵ(Zc]!*^%r9֌0 }͛7S,IR444eڨ^vڅ1QLGG}}}aHss3$I|g2??ر={P*(˄ac pClm@ p`~a?~d2֚L&Cgg'dX/2T#GŖ-[6|pΝĚUJL&I$a L!t:vZpwq|ߧq顩)^AT'>R u57p >?;;ˍ7ضm{/aN%NT*rwrCyH))dY&&&طo.]"+ޢaee8VWW) BEx饗A:;;yG8uL&V`3֏8x8H)֒H$F8<݄a"bL I$l߾׍r؅R8q\.g|>ٺu+O= T B.Qbn䡇5" CmF.nG9s ¥iN8?{n/HD/yh PK\y˜>}:LuILMM.|/ƵZ<:uuu,//3:: 311~3Rsssr9~i8k׮/8N\&G{n߾k-/)e}q$H$bk[HJ%_)%J) }YAT*8^kR*>bرcRٳg|r7k}`W U;e7Ѕ_zvOg2kTY~ϙ j)GskhAIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/editcopy.png0000644000175000017500000000141110435550444022032 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb}/>>nKK=;QQYp*߿^c ~e`x 00)me +ŕ? @5?a4 P ۷X!!Nׯ?0|6?~ xo&$  `VIIQ9..B0@ .. --4 X@l 0@1"_Nl`W߁~ ??`0?`z0b@y|XﺺNJʰ7,`q!#@9Y3f at2H߿62 A^ @(061+0m$sF7@ ٢,ˠNkdeeſ@X&8@ 'a` c8z<4]y v˗ blIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/empty.png0000644000175000017500000000025610435550444021356 0ustar mikemikePNG  IHDRabKGD pHYs  tIME ( "ytEXtCommentCreated with The GIMPd%nIDATxc``E,IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_application.png0000644000175000017500000000167710435550444024072 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/snd_hardware.png0000644000175000017500000000144310435550444022660 0ustar mikemikePNG  IHDRabKGD pHYs  tIME lMIDAT8œkTg;qI&IIЊ2n̪T]>ҵ ĸJ]Ԁ>h3l<I&w̝ޯ D,Y8[i>wc7@"_#~jZ'^?|z3M$%HCBi|B,CL*ɉQ,g>Z^^hozs35hCt>5#' wY9DT6,K$5fW(:$ՊtRMtwo(NR%0/aṮt6"}Ikя|Iq34hX):C;w C[Rɽ5x7~![Ǎ#Z9g G{QȌ3? p]%|ߧZ1n"Dٶmzc0b2_"~,RJzRm۴mY敃gS  X\tDARq.]hd2r85Ѹݻ_T*s~(XEguuuPY}m~Baԩw^r(<\ST֊ŢrqWVVNnmmAxn}$;@/٢Zw5IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_up.png0000644000175000017500000000153610435550444021701 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HcaXv0 0Vـ{9`b5'Z 2&fAGv !YQEP/ @s03h̎dwW?0<[!fx @PCjVJyD2rD3ۿ#S.@1t ެTIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/addressbook.png0000644000175000017500000001247210435550444022523 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?`EMбħ I3{._x+?9BC@ZbbwM j>6f`dvf`;Yk]ysY)@1 N3T00210K]f``Pѵy}+%ݐ qfbFfNp~!Z0= >{%T'Kx6H@@I/|?M߿,L< ?XST߿$zx&F}#çW -f*C l,1@x*~FF z?ٰPsw1 w. /Ù=ՖENo@ v 10|jg& X8gp«7cL zt:<(tߩ!V 1 ke8֬g`xό@2qJ:=@>~~+FQq!^v#MĂ'e6ו}ڔ+'r?=/ې!_Y h.`.ϔmz14()31JNȟȐD8; 㽋 =s_xuP _QQMl\, Z?՟-KxCn80!z$x2XVc`x?8?;/0&O zQJ69d 3/Db ΝoUl|k' &/kG#Mޯ?mvtm- O0( ;R|d$8|eS8@K&d;.00Cбيum@@LCX?2}Ͽٞl)0Ɛ y>_ ¹|Ĥ%Ccx8OHHiB׋~? p)E_׿~_/+F gpO?Wp)+Е!\ J Br Y Ƈ80V*dl.aeb\W dZt@(?2z?3*G`&_E64-`IŐ~SHu0s/0&DɟKaJvؠ Y!kHÒgDaAI6{+4٠Rtab\a,O퇟fgbb`gF T 1u^d`fRm Ơ% I`fS7t eXPOd# M6BWm%l PB/C8 ӗD~ 4 VF¿3|.K]!R?O@={q27@3@ͭÒ=)x`istë {Wi @L2+ _I~ d!( !0TO,T EmP;vxab0k_&ؒ 2 &h/c-Ng~ 2Ch(_P!} #Аp nga X&`}l u`/ `;ps9qy L `!'Bc(4;tbaH`u%G=idX?Xo7VX-@g]QLL9", 21"/~i6'C_!+B E1|D, 2X(3L9M+a.x f&`7v6Z5yqFQ!Fv6v`,.3|,2{ ?@yvcm T0M| :*| ;Ne :ػ/3$0ϱ3, ?)'E*pdW< Fǿ2x9M7 /p38$ "( ܜL \ ? ! S| *yWy0Ĺ0,#ː6ar[aA{ٮ03y-0=..Vl V, p=U1qD<; w31(HdHe8wW!E[`aV  i.>&`)޾ 7fi3*ܻǰ;7܂֟e7~>_=ϓ%tzRU!(_/S^1;ϟ^3 +-0 qAB>~7CL RҊ?~2\( $̐ΰxCh70 >23We0V`Pd(Pffdy{3`.ݾg[qCQKa>>`AE'fx ߌl 30302p(>q߉>#7| TE99~f?v538S l ]~HX/a9U/n n0fm9e`6L /}T EEG^IS@<,Ϯ4Cj?'Mb8u`a~Iz ؁e9;$9;&b7`>q13( ?Y~+*v& u.el0 iہH2@N3î^}%>6@sRb,rf_qs)/$,y0TeQe0dbglAɉ  rVLOǠ(̐ . ,7Cf4=?3;0cfgfL$@XG%|E6-;Z,(r ýGO' 0Z9970^[Ҡ:xPq X~:XBb ~av1;zXchf``X. D+{pcW3Rñ)@7 w)~.]Xk18p3(ɫ-6}063'AZ ~C4ofǗ/899X+g cxS1+3,29LҒn {g__. _02J08eˠxfGA JNPxhC,7?4U=pAyAM@U'}0 z݇?=夦칟8!v%>p5@KK[ ߾~VdL4 A1{E)$V8X`'c ] i _3AŁ ?v{O?>٭sX79ſ:+eCzÕ "ܯɄջ ?ƮçǃB/4//r< 4F I X}򝁛ANAa ->e},zI@FuI@mշl}krJ?=~ɠ& XLJ3B% rϿ:t%/$/vS*MqF`ŰeKg_2~߯{d9h7n Ϟ}P헰il6H̔W@Еtr (/pC^{Prbdy5/$ìu?};~t2Px '8Lʬx)ߘPn _тO I3sr 6)1(0fgdM?@bTTOױ\pU\VFa A7Fv`\23(/0B6 /^& d o̓i}8J69)OFQz¯O/|?a)# ڊB662/BA OaaxXt<(ɰK6 Ȟfڿ\87?'n=8 zӅ v+9k Ңa8|Q ؜b`g>_2\AAJ`iӿ߻ˉI6 Ȟ#{7KCh,y ÇOVl|s篘]} w~0aQavC{ eA3\ѻw~z0eǖl@Q4w'Է?n1uzccߞ}`ږϬ& @T_jɛpxk/9E1|zlU]P==J+< &VYfɨz&V?_:4h{ (]{=*Z Rl<^PC:RGIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/penguin.png0000644000175000017500000000170410435550444021664 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<VIDATxbd@:::ibbblllʿ~bxGmM3 fgg|)7os)L@ 55K,>?cƌ@@eX &HJJ9߿eXh=Û?xãXXXT@ R@,HDܹs FF ߾`w u Ve Ei]]]_W cױ| / Ni 7$@8''ׯ_ oV~)3 (#߾}@ ͹@2 ?5Bo߾ "" ((y0aUȀ&%r@04߾ b_ ğ^lٺ?cW çO>~+3Öm;?^ze5PM>VVFSfݼyYAJWa?TAH>ÏO^?^I`p| 33==v[,exnfg N* ٘AA %# Ƣ36&!-gE,@pA7@|+ ܫl_}0IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/null.gif0000644000175000017500000000006110435550444021145 0ustar mikemikeGIF89a!,T;gosa-core-2.7.4/doc/core/de/lyx-source/images/select_ogroup.png0000644000175000017500000000143210435550444023067 0ustar mikemikePNG  IHDRagAMA7IDATx}OhS?O$vMԦSF;"<(Q"xcTe`yA=̓ )JT1$%/y<I~/,Ɗ'5ظyAn)2;v]=,"n}]惵3Zujqg}|h n^*e<`}HHxHiH$:,ʟfֹ~@L-8X H`ija,pXSs`kXdU@ͽƺ0b_6nh]sBPP+o>Iں1@ی=vO[OxC3ӯQtoZNs`MCX=<{;{.7'^LO2|Ζ[:hM-`pC0YHO[hݫBo~{Ǎ|UWI匕&BfDaJa'J|b5 ,?f4Y/e0T\MSVsU+kG<%(M|V_m*Y'[X1ugW? S fӵPQ-2qGm^P"^q;7imKVn1P.;HEAq޵wAD`hkvѣGz$:yX:s73.hIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fai_new_hook.png0000644000175000017500000000122610435550444022646 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  *#IDAT8˥MkQsgrgjmERM܋M?d5Kѽ+n[P\h)~k>\SSc6. /}{8l6-q\zΛk0Rgw0Facp6V+\ʸs0@K(eq"Bj2Rcf,_HLyc%<<Ͱ"'5ՌkIl _N((,`0q8FD2L0? "i: \EDZ1Z\%cR???i֚,˦|CDc( Xk鎎>jR(m\}y jeRyvXMZ6Nm'Ipj̅w!mZz^>F}>lS w` Ճ\w:|h4\.+6^.>!H)X,>+++J%c,6t y2p X[[]PVܤi@"\ dwfiIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/info.png0000644000175000017500000000225310435550444021152 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<=IDATxbdTbw9/߿U/fs_KM?@1 &U8~r3|e0b`D/?x5Ȓ@]|l@/p 1 1` sw=g8(ӛ>Ix#L % #8C:C! XA}ëo <p N>Pz+` rl8@1C ݯ4t'q m5&oXh0'>.)UB, F {/~d+ߟ~ &Y|]̤?P( ,̑ᯠAY5a>m]@}`d]|f`70TtmgVdTQPM lv?XyL^~Q; Z `>6u?10g',ٳ|b% B@8TA℄w  bt5Ý ?B1)30>z@ xD1 M|>08h n>loz)2W X@9kx$vm$?3~Ȁ3 t__3<@#3?~&çB 0?`}J3Lb1ߟ|.|@LB#`a€B1zPe_);@țm $ߟ ,ܿ3s"@17 J :\E0B#8ý pu ;}| vo_gpTn;0pvc`y`W3q3p*>]ϳgD Ŧ`[ϫ `NT*;? ] .6М*8E]K70|~si WXL-<" WDMHz #P qShA>DLE,8B 4ke `e{xIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/members.png0000644000175000017500000000154410435550444021653 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_workstation.png0000644000175000017500000000146110435550444024142 0ustar mikemikePNG  IHDRagAMA7IDATxmk\U{g\C&8I D("?FBё".C;۵K֭_j: IM"4L<|Vϻx~#VVV>F`>512Ό~Ƨkkk8^7)d(# SnϮ›o\\WN̝c?}cS(J1DaQH؋ז_qјFlLgYCKcJ!/ vwS]GKIE))pY_笡⹮q{:SHv?qgC (uApu8_tI([Xˤij~$QbJoŝd3Rd7YyLtFeYdҐ5Z;oȘ_(T6R.7JzB퓹f/MXhn=mG1yiPd#cĆ3g^|<@+#Pw ݏ5ߒ-M0 5ƱO cu?qy/(@PopX4_heE/`> YJIT7Wm h<>sT_]Ѹ{N&>dڋ Q*֮;M՗ݼİE"b %^@y:BA-cI>f2k߂Q%̫y5=_o@x b.T (IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/copypaste.png0000644000175000017500000000173610435550444022233 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<pIDATxbA 22|_=-!***#-1ÌY5>߻3j/bɳ\~a3 }.NG^maggg3>Z 3.}#&"-f!` r;Ý _f! ▒ __{MMk?302g ?10l# ~52e[kTmbandʣ@,>f?_kS1|ĠÅAAA0~a` k d AZ/G{YMJZ(yݢ3x%ɔ{oP668ZG=W|  ׂ h /JDt "4ϟ _?2 tg߁  `fafL l Ϟb@l̓)vqd~D*>bl)Tlכ2 b ܧ|Ob X i .߁^gbbf _VL̄_ i hD1>ba ⿿0g'. p{\? 0m`2""( CgԄH03% fgg_L@|P00 P. #C>0vУj^$B|0Ao4IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/addr_company.png0000644000175000017500000000343210435550444022657 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@b rq@nVVKNGqQ+qa zyos@BC  I>K._{Gg?/Xw{Lwl&\nVWXٯ$BBLҦ׎_|o>Տ}?~AĿ|y_P-aVi 3S!irkC1G>19 2 jG&WԹ3\q֝ }a׿ ?32(ʊ2zh@'Ff| #.p坋v}@ dMhH|ѓG 3|??@Z "| eW~ZqϧIT2W,3r2|OfoGU9A؁AHH( 27?@/2<{GݝKAPÞԉ ?0i103d/Л< \?wgcx3#3br,rvr6Wa`c+K`d`+ t0# 3#(X.d0߿nǾS p")*($, ̠)p_/Zp='7êm7T'0}o_'0|ٹ t{2H*@L?1 2d1 g}`~P(H ~Go0L F: wb`?@|?Aб Od矟x)f~ÇO.T|{k2 1(*1?u ^?tX  v\b(02~cf`,s 0 dga`Ҭ l /|e8|.=W~Π" ?óן>n ?'PV@C?zr[A&tcO?II 0 s1q38?7?'?y]'#wxÿW 2 >Bbf"Ҝ" @9y9r2p],'/0aÏN@o Q8NV-h}خch} ;a^,lZ 1xZsIlu3DPJx%~xr)Xr@Pn&L!@)@w('\Ew!w2xpLk'B$5NmLcjw&yBRDue!Gˤ&Yw5JA"~&Kh;<a \ *]IRdPfPP(;ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/hotplug.png0000644000175000017500000000153510435550444021703 0ustar mikemikePNG  IHDRasBIT|dtEXtTitleMade with Sodipodi/'tEXtAuthorUnknown! zTXtDescriptionxKT(L.)-J_~ ,IDATxOH߻}M&ԽOY%u ALHC#0"޽y<]L6/FVPjT&hdL'۫msbԩ9}x!&'g XL4&d$;tK/~Fp:,GeD0$#V[9./.׷ĵc i_Cc];?slVp(Ǎ# fWX殻|[{j<@0zW}%)ldrX@ˑZ)6t5L,.N+@KKvD '}·Usa#4ӜK6UTz_g%_mmeH$ ï&\*A :MҗbaXq*A7a2]BZ LA:JC?*P^dpݫ+(eBB8X߉=zD7UU%.xA@<B!b553H]{,444yyur&CXQUu$Ia0 2QHҋv{k_3|0#IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_blocklist.png0000644000175000017500000000123710435550444023241 0ustar mikemikePNG  IHDRagAMA7VIDATxMHTQw|Ր }a[H j!.t#b6$}TXЦe$ BDҌi5lfޛwx3 ù9(RhAP(-IXZrdŦnpN֪5N AN8Hzxy(P(ۣ CB,JAc݃kDO'!!dwmա05)*ga Iib[ugxǷQVhs{WH9>| LӤLJ.]>`SDmp,o `M67͞^̥(rI+GRX (,\Y4!@oGس39Yz/T $qM$e!Y} !) L?WL|re'W>߁sݰKl:ŃvfJL;ǨST׹kaZh%Rp Ct_`bsV3{YZҘ||ۮ3,}/@6 ]>t=56Z~~;__wo(U@0@a58HaI~?>:ãS>8Ɔi ׀ @, h@E,IBǑ 111Ë ^`ЖgДƐ?C9aC8㋻gfF1~E3Cf~uz56~ C? `Qv;7_2{L@@ 0"c@s$f<<Ă?0z'` 􍵽.]rb0/& 0J8!hן >}c8@b 9EDah+PYb2'#`Nva`x oGn.<37gc4@6 P 616`pB0?{? _.=/ttoqQf/om+1R~wfz:斒2,)-pzK_<`?@>˖xU|I( ,bVePcaWd?0 ۷><Ձ 0a2YIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/edit.png0000644000175000017500000000166210435550444021147 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<DIDATxbp_/Zba@0Y=0xFll ,l Հ>30X)#W0FvvG;qrqͽq훗 30˿ /d]ݾpo߼dسc Pb¦ _8c $#𗁅ʥ+@U 0\ f[@GA!O>^#1ܻs a`{6(h2 R ,KNn bnbEOPԼ ;;hP,ï/~'&F&`a ^@4/×O[3pcf P##? AA *P(rLD. 2\&[Ձ0 ?[o af`bVd2f&.nn&&@g`&bBvӏzj k  lhc񷠐,##8 I5T L6f-66fff..NX[n2ܿs XyaՊ5< '22cX~ t_ OÀ0a/ 15dIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/scanner.png0000644000175000017500000000145110435550444021647 0ustar mikemikePNG  IHDRagAMA7IDATxmk[e?{ɺ4i~,M2+l*MXnVfV BA^/hA](z͔B)bpbv'i=9=Eָ^=yyj3^Rjn}$ɯR_A8fuu tQ߷aZ FQd}O0 mGGGBkXk,8e^'ɔ4;;;?nnnNkf4l68Ok!_YYY~p>j8̖hƘ=ql/ ۟a!n5/n~ܺrҥ̃✃ccy%ǂ[+q% jYf 9bqq pbMgS +0a; ZsZmTR'@KҊ,= DYΝpO׮,^2-{tbKH!2Yr>E)RUJo,e(hQ*$YZc&quٙW2dcHEX `($^Nsf+LnNrVcĔG!<*E;|!)'XFq( $A cFNx`rjzX!1\y2ɔ;%ۇO Z IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_component.png0000644000175000017500000000071210435550444023556 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_F@IDATxb?:Ȭߍ)]d2Ψp ]=@0AݳGlk`<@4DЀn qA+ ʀ"h!@@8s2 %e`dQٳg3|b [Ȉ5|_32&b( gϞ?wJJJΞ=ˠ;;;Ǐ?Pfff&&Dxrqq1tuu1}ݻw ?d(..f @ # į5M!@!% ,IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_new_printer.png0000644000175000017500000000135210435550444024111 0ustar mikemikePNG  IHDRabKGD pHYs  tIME pfwIDAT8}RKSq|2у-: M%ջ2^dC@0Q|kDeB&^C-=`s?v}{ۼ/YD;i4 333%I-m$ /5a0 Bm1f5N]a4M!i&y;74MXe@ū,^0 p8+Iެy :;;ţ#"2*JKFGGoY?88ȜQ|1smizI~3_E)ab|M-[ɲs5\oJ:~ w¶l8tw 1˲@cZA0cɲ̪j6N1\&A衔R @!׀c7 ?e$OX,V`O.C\E%0 DwPvr(O<cXD> }R l؃ ]D7,7Y(Vp*<1Hm#ΫL&3, Iax?IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/rocket.png0000644000175000017500000000147410435550444021512 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/editpaste.png0000644000175000017500000000173610435550444022206 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<pIDATxbA 22|_=-!***#-1ÌY5>߻3j/bɳ\~a3 }.NG^maggg3>Z 3.}#&"-f!` r;Ý _f! ▒ __{MMk?302g ?10l# ~52e[kTmbandʣ@,>f?_kS1|ĠÅAAA0~a` k d AZ/G{YMJZ(yݢ3x%ɔ{oP668ZG=W|  ׂ h /JDt "4ϟ _?2 tg߁  `fafL l Ϟb@l̓)vqd~D*>bl)Tlכ2 b ܧ|Ob X i .߁^gbbf _VL̄_ i hD1>ba ⿿0g'. p{\? 0m`2""( CgԄH03% fgg_L@|P00 P. #C>0vУj^$B|0Ao4IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_seperator.png0000644000175000017500000000026110435550444023253 0ustar mikemikePNG  IHDR03bKGD{# pHYs  tIME'tEXtCommentCreated with The GIMPd%nIDATcp&A\a/8*IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_new_terminal.png0000644000175000017500000000141010435550444024234 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME ;4JHpIDATxmkTW?;̛Ay &Z(F `URD,H-]MW*tΌ;)EɪE0fT"* d0?ƉwOR 9+Z۩ka4M? әvdyyeP(x"qdnZl>ׅfgg c Fj7jEmVWW{td2loo+vw"qEMFFFT*wll6k-"sIAF {T={$n=Yc Z"R\.GcPUsՍuMN3=RFDaH6%EW~gSڍcr?' Xr1bC܊od<}o><_tx{RZMӔNҔ?`r8 5_e`` n8q4}+F~򟞁gO/_|} _kUPջ:[w: )p >Ts=@u>Pj z z H#OXztM+=좘!!zu#x,Y<'4NSIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_home.png0000644000175000017500000000154110435550444022201 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_netatalk.png0000644000175000017500000000147410435550444023365 0ustar mikemikePNG  IHDRabKGD pHYs  tIME%5)IDAT8ˍKh\eut2:FcCх|v#%P[pSE V\RPTčR*-U"ZֶBAkJ"6qNssg -]l(֦Sj-*/"=k/mHJXDQu&Rp^v~s`(OOd+שb4?|u->H}.'OЊϞc߰c.$^Q2,]fn! }~D!L< ,(XO|U04Te!-|^mnvҮZ.F)=Il8}zbN_oDmIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/log_critical.png0000644000175000017500000000135110435550444022650 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/envelope.png0000644000175000017500000000151310435550444022032 0ustar mikemikePNG  IHDRaIDATxڅSMh\U=7ɛ̏3d^Lh bK!⦴lD(fh7PA20)E:4M4y̤fef޼h,spa94exyIƿ/\1,SCC}/vJeKKt~ż&%Y5С2tJ8ՉLOԧ:HXvp&3HPy oGn. }`33??A^`Dܶcu 焵 0Pt)WT~{ʕJ&9pm@J uPHHvHiB}ưu5Juxу6R R08D^$FDR='%L&Tʂq,,1?_D@a 1_˴`:?W2U.׿u3xtLS _]-_v$R9XHngƍSF}?@17(.nv1v. `jbqViΝOkޭS_Ov,f|W)W_Q IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_new_ogroup.png0000644000175000017500000000136210435550444023436 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "z?LIDAT8˵[H}Z˙+KtLT)JdBAQ{衇 %r./=tѢ*nQ.e-7󛻞"ߟ9gpwq`FktPĘHkTn&ً~Ђ"^x!RFq׋k򧀀}py Ŝcݥ<6% YIkuҼھQt2mΥˋJ$mn:_I$@5§0xYG )]o-k[`B)pLiK.]EY } zSa.d#`P`J 7 ƪK(ԮZ]V(>^Ǡ2 0jpYVNkS)c`n7?;-fAy x MU*ha"08_>(;NyL]: o/`{렭]_L<o&%Wv/M7" "-"re[UΩ*HwLy6%aH'# yTV;$ngY LMN)E[č[#$yIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_new_conference.png0000644000175000017500000000161010435550444024226 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 7/UhIDAT8u}Hu_w{T7Nr&ˇmr)?h"n1VDWe$Mj0h1FQl0M4˦Kf=~7|>/YUzfi1r.^uP 4JCrãW?}) }FU64nM`7f.K뵆t"<0x1!d1vҾ*v~*-am NCA ׅP5n s8zQ~8J[sљ)FmH@z"H C ǩ,J2=f1xD{,sdO4%t"}" I͕ox[&!V8Eۓk8ry`*䟕.beUc{hc׼*5 eh&@ .r5# Mq X_dt"͙0uK**ш0cTkg(e"r.fS@J9w+sk.M4 c;¹ͳ9|tXξ@e_>\k!yN9e6Iw$5U&M~2Pj("rC?~Jm{݅?MAR\F-_/~P+/-́=WZ*LF\.ף]z(y #ڴ8P (IAO"IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/head.png0000644000175000017500000000136110435550444021117 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb?}ˇ6:L@oAOW VV6S'v/ 2| h?1 `a`ff /`XXYlFZ073)gX؀t+ԓ@,0Bc h;?&f X44F  b 60Y003"rȃ(-&3Pbb{j;3  fLrBJai?$@,09nVDnbp 0M0Y 9O_:'abbZ@'361#0Z|f@Iۀ6ƩIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/email.png0000644000175000017500000001005610435550444021306 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y`q g,h?~:~|˒%K~@ŋ ;)?=>>.qq!+W0ܽ{Ńs.3e t^% ?vvv~qqAeeI>>nO~0|i@π+f@kOc0 0Ȉ0ʊ2 BPi/ş>3Q<@4 2cD$89 }fbd`aafԲ76~tr׮]oq%#6n<Ȕd31 bb z7fff(f>~h&..b ]N/x_66V`H ia: /,I7Jڞ?|l%@Q={C 6(CJ B޿Ɓ"4]de =8|lҎE%Fv( #?1|APP1`f~-$$LJ_|=/I8z40m3CAiZTT\gHLd_&n&&FGaLQQ;֧֭[.^*ab=Pz8 KĞαO0A@xFF()I3g{` roB<3 n_6R??/M Qc?"cx8@5XLUUGVVV;.]6dbb9t80yQ8\W:L> @ǿ͉5al^!!m=# 0hPlĖ?>| "ഏ 32Bh==y`o--++ˋn˖-¦  W^|cGf.cd/v)< SO'EPg5ıPbFޥKY~MP+W p^^""v1 wbPcfx+1l 11H2x(c0 5fۏD1JR88XY/?Z(((j滰 @XcTz?3y N>V]%6s%-VE96^V5iw1{ ܿ^332&//70Ty0BfpAfoGW~2/j<, L \<Э|d`4 oP0| N7/1p|_ Ǐ" XF6-k_LO<qo215 @sPHxyh 3Hpu~?GM hw,b֭wbߎ:t[@wŷ?3Pآe`b>@ 1?P-;TTԁ2 ,ase׿Y70v8彰0?Q%* 64T>Y˂0@='71` HUCD1|a}o>[by ؀&I III9P o/, b`0uq`ջC0(ـ@X0 =D9%=/ D;S6mb9@=pӯ3 C p:/(l)`EQ (_V]bayur?10c0A>29#@I!@Oz怟~3|XVr RFF'GNwE `߿7'fϮXɊ@ʤ. 0RA  ,.  Hrã ?e3.#l N _ϟ?;cFvPTk'~'É?.bƄ05XCid)!2A\ >}AJs00*]{pM'O_NLZ( ;'U Do& U&#A`F);( zH,2_ "Њ/^|`8~6_[?>=:uj^B1OQV >:2I3 4aPW@? AĘ~2p2l_ \6# &O{phğ?/OwogE$@,-/ fp 0 70cyAM? +K,,\ ^̿~֗/N H+?eA%?1 A/s`(rvv H+_R70 }y/ ?߿eNP3<{;47W>|`OO hZM4@(OÁ؁%; m0#b)b/`1-$xd`IM omn`584Z G 6b#3`[>!7BɊBS7 lZ+J;72@=/;c@/`Sا~ %$y$^= 6:=' @L7O^gh&XfII3>02p LL l %2$u'PSacgbi !A[`˘ @ْlKg wlzVΠL v AyfdP.8`jgÆ_A_lGS¥JnbXI0 PDgMgiŇc ,ZA靕cFcC+P=H00 ?~+|>v|^C<@Sn]) NTb`^30#8sCAk s)4}rIJy *.e?ӌt$3f ^~cfgCK} 䑹KUzk&h?xC?iX]L?!TDJA{^-P Bl _{ƣC ?;iZ|aQ#9Plp1hG2,ĉ6(9?Abv/THGءm" zIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/addr_home.png0000644000175000017500000000254510435550444022145 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?Z3(d@11 ur0ݽFz"hQ9x8*o3@x%3𱺨-gPb ߁&ΐNAg{  . AZы߀,/0;%m* V3谲0g6c4 bcgwHA bb01030<Z 08񇁗@$ޫf yD8~tE>3|ϙ0;PWyX0KbaFeIr1^f`bd 01&=ԕ \" =cxƠ(43 Ha8 Qu{ 3ŬrJV R "@?3/Ag^`I19pU/080l5Yl`fjrQrg7F'_0ae8ALUA(c6Nvf{O,a1/n W fDs1H90|psacCV 'odΠ ߹y i3rs0|ݲAVA@qn0S1ù[ʷ/akg`x]B]g ̷2 ?0fuwcx**pa<SEަ=7d\{_}h\5b~Û fv | ?c&)5\e0Jf@p-Vn[2{ DvAyuVq b[Lx~?xFPxǖ-W€lBN!}dXŰ=ÜD ùw027Hׯ_ h)aBIc42gd`A0_f`vh п\~^ ?€Ā 1? ?`AA /0s΁  40q3K10gz1+<@A7+@(9',{"Ds3]A\hX @VVVvvv?a (߽;a%(Hc +P B-gde ~y;20y)IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/mailq_header.png0000644000175000017500000000165010435550444022632 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME %9tEXtCommentCreated with The GIMPd%n IDATxeMh\eΝ;3ɤI̤FMZSVP'J PӅ.EnE•l "]KR`6`(EZCM:!3M&sHZ=r8G|12~ܖ@-J+կݱ7}{^l7n}׏va.j$8e& _>nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/department.png0000644000175000017500000000722010435550444022361 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<"IDATxb?%@? G^͵ RH]~~ǗC^_y{h /f]>3 `Ovo|y;Ԏ"Jfab93+PdYSpg2ӟWI-OYPn~?5Q 10T10 200t0;s~ =hzpg߯> +x HQސi  <n~ n!BGBИ/?8g`", -0omgm l@O\|@DŀzW`<(Phw<30|:30?GG  }66`+`lí zAh#z KB/A Q8 O? ?#@,͐lcAcI6P'$%k"{>kͰ hũP&"ـS hY>>/'1 fnJ( . dr ##¡L`#y PЂJ(F`,} { _1 P_)g&V̙}. `w<|yXȞE.=x)iK%`) MZ z#'@.548&5޽Ƃ"4C!< Nh 9PPa` l 7g`cxa8'3 1I p&!`?@3=]i.`p+30 A Dw,r q>m)'ñg@9@O|&oڗY&de L6_@iboDDBAgFw&@|!!*@pCX4 +/`k4 C 6q@32"8?-ga" iXP`|A2+! p`Rbq!!#0YX1kۃWd" l뀳 "r{涙,Pe&;v@ѯd̈ҎP{ pPhA*#CZ ,˯D?#R -28\!zAb28y4A  ,vPUtlC   3$&Xi6HHAB rqfVYPz7` p^Xo!.$@=bG,yP}I%%;‘ZbʇP  l0:a _ @LBE$3Bh聒 d'%h\ɇF7 MeM76Ծ_C,\u Zx=qS dz"G;(iB3RSܗxR TJcxz&sp$ }X T Hx *FI=2AWXF6 CB(v}] E~aI!za`% BA1stǰB+6fh]X3An..'<0N<5ӳ߾|r3/ߠT'=u8 ;$`&Vfȗ|@cL,:R |_oWx/vks?8gh@x,10"`7ԣ!kOCxX_;@N |m!wuoG蟟??<ٳv ,@4ji @̈Bv64f#v>>,Nb?##{To8ڟ? z58A`:M󙡭L(4 umMҷO3, y { `F"8: z[+g`e+th]uf%}6pCC@y9{B:;L\ CVߋ>iEAFuxOGˢ>s濎O0DF35dvL!=T0Ac w:|bsNF, &fzۋYϾz*2%ynfA%/hm Ɂ%~: +g2i P#f Hz]IN^87`/X.#0Bz\ ϰ@xtڵOe`},7C{(o(ٳ@OR ZR\ Be0:A<`;C9߿2U n=&E@Q4O 7 NN)inJm@gA+^1, 2z*YtLz9R&0@CgTe1+2y1X eXۏG{-tR#5Pgs\\x{ ofG OAڿ THY'8>rhHC*YRs@1RsQ t46RfB= ȝ%s^NKIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_new_blocklist.png0000644000175000017500000000141510435550444024110 0ustar mikemikePNG  IHDRabKGD pHYs  tIME1[IDAT8ˍMHaVH&Q((PAPCHRQiF}P d") "e ҚY~W]Cfy EG| J@5 @Na ,O}S,x[Dx&"VN wTfMY0EDD1OGwȯ6C̷e6/bm@`39! @HiXbZ() eN`$!&j;9 %= L:Z,@ 4QptެB˃NwB]d>+HƪNo{!hMS_)u7R=d޳fCti'\{,}SKsS TGyLǏh4PO|盏{f?/~ٳgg!VWWyWx'g&Ή'|7_~_{9=y{|V?3'҈1B ƈsӧO>puС_TbT egݵ٭UkS={G"|/(bl2?? թcBҿ k01#T|g#2F$DUbLXGb\#!Dņ>Y/}SC)ι Y]Oedj2K9ܐg|NӍΌ!BH=~) OQ"O1>P/tXş$1Ơc&s9Q&ZM ΂ 8Q QET1MgшQ`Cug̟8ʀImy{S$d FE5C$$!z1*#,nli ::?V@aevn*@yh}D!$AN}G0Ͻ;j 5VI-38 q9;;9=6YC1!DDQD"hiZz^?p˜SR׮sJ{߽ sa>=>hweybJ(wbKC=0֠ 0ZSzH$"&q=Mak6y{ʚ'sjdg"g?KZfyꇫyy#(|F*m67dY6R1Fj$ܠ>IS-aߣU3ffxnGD-8~ޛQg_q[J!$; $&UHİ=9 E$7/"e =aeZ 2vȭGghքA^xꆧz zJI}z 5FwOB[=\nsl~?8OLK}Ԙly: DĭB>bS4.Fk³ruPƗT`nd;\zN}_AdWn!bc+` k]V !r}>ؤt>u;nO)>l_pmy^,HlsId_.״ 7z6t6zD)VN?Zz0ng>/!4 W6#fDc&cXCTey:35bP$ BG2w8lm{Z;|s!\aIP>D`1srGQ6>YL&ݝ1Df cn>Klu 'fU۷XZrn,aFlsB*$]frGYR9j^{us/\B5p-XkorutRυA 볗jXZ)˗x|I3Ho=c^s #s8gqΒ,.KꍜT`S " Kf0"lv5yUQRf]h4{5^@Vňt* Yf֤Re#2~_?-ƛ+2~dP(_my-p:/Be҆++wѡuqӢ&UXJ Y!-_e~Ff0WY[xup`} 6&n59b )Rf>Ǫm7 dV$1R.vA-7t:=81~C.~-vʽ_,sT\1): Q%o$PֺCu1koѾe㹰B=oW_o;kg/rh z}^> # Ei.ݣJ=*tLQ% ! @Ցxa9Zu"Տ,ڝt @h *AB!@@LJFc?v!f? ?~&@G8+faId5Yc*!! )Cϖ2 I׌ " ̘l)bg!9Y$5 LLHJvĠ҃a(:?۷?3<, P/ ؆$b^S<FI$wv`$! v|T w_?p3· j* ~c  D) h1>p'u9N7KQnn&pSU30|L, B "뗟=WX@`+ #!pgpk' . v,b?"@J,l $bpsfwogٻo106'pf ¬cdf2r0r2p32 1Z1 ,\c͠<13 .N2 b"b[vrusn\^>良<@Lfd38Ho ܬ nV\ \(DQ1:a3S`s10308 3z ((LJ=Ą&Vʵ;!`obFRD[`O86 :`R$+Pllb Waji TȈ kGiU?;w2X3!#Ąf5a G( 2lp`05WT6026@=)cR@[L؀U?#?v8"am~&h @@gE{BrvTb16sp '%BÒC? 4A@OHI1 yX9, H-y%'))FsSUfY9,)m%PjCv3@aAPfbp$J3"4J6AILc@BK! '(/l R G o`R&^1!&p u4̇y,9A3r Z^ 031C@iyBAPH@L H?ifp_~R W`_ ߾@~3NRǐR4/09iX23;L@14%x;;#o$`x  /`(QX@1AY <`HIJ@T&%0uep\=~ ܜL@~1(p= \I`op3`,???m/bVcg@Y HB?/12l@q2(HJ1=GPh2[`c:8NFz+<|VW9| p: abXredP(^  _>ccePcuý +/ VGJ)p- u8(IJiCRpJsFÚ Hp-) ̟RC? ,×O;L_h/T }u78V̀ſ!JTpBA_8=RaH bPgfv&ph3+@3o@&@0(c hbH8 gDj: z*, >*3< n |h#TZJ@n  zE' {>E #1I? /3>6!X%3$Fa!< J|~TBU2J c]_p6Hrcbx#u70b?i2 ݻ> 3/bAn[HEpr@⋉cxOhϊGKߌn#3Q@{9ؘ(O +jAaÍk:tdY8p #tA/yJ)NAfV..&H& F,6)Aw+w],Amo>~XEɇDT9 ԙC#*/HR\P4%;&h&VZ҈mTľyʵ_CTo?!WfpA⬰<p'Á;8{ 0_E? k(~?Ѵ|}"/@· UPl(s kɟdxc36^@y F{׏;G` m  " Aњ+#&W@_hlfM_2ٽ3kA֠ 29EA'7ox='?8Ğ: zZPc#(0>OnОz %h~D4+CWXOϤƐ?r4,=I <[Z1Z^+`8awnj 扁ա|IˢU5s %Tx;HFUt~eZXvGg0=ЉC PhcnhLZ9'yiJ{l ~2 7d?|HF}7o^](:S J?p(@Qe N.~1߈ iy-m u{nv6nn61!v>xF4}cx Wn߾9s+WA@g7@Qu#laa'si9=[^1UN.av66N& }yo|x7.u"H%d'@Q}46XVPԐ mKB5gXK? -$@= u<Z] ./А_`9;d=!IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/branch_small.png0000644000175000017500000000114110435550444022637 0ustar mikemikePNG  IHDRabKGD pHYs  tIME&1IDATxڥ?OTQv<e( 1R,V64XH֘bDteaagf,.*{&9slLۢjׂbNpwR)j]kUeԕR HF(SLQ5|P47Pbl-5 P5a8"FE(H@׋x/YA"D#`hw9,<\t?hJPUDRQQ`M?C| ]@5xAgooNC۝bIA dEDQV%ʲbA/lإ3 eY !w0K8P`vMfcc,@fs_ +t%l n fmgpOXX0+h4ln> '-!*ͮpD)G^ w*J-cL Oe`@"ч(p%=_2ChIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/cutpaste.png0000644000175000017500000000160210435550444022044 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 7J{mIDAT8EKh\eߝoięINJjm1JZ*`-teEE t҅vBR|[+Z Vmj2Ν^.&mq:Ei8Ѽ{Ƈ_oeg.CT$q*5I+LkC7+t->]G2f@4ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_password.png0000644000175000017500000000126510435550444023116 0ustar mikemikePNG  IHDRagAMA7lIDATxAHSqǿmo:ޞ{\c)<]ޡ( (v6A%!V/^6kn鞋|ӗ'Т`8~ZV]55M[^^~);\g<\X,?::B@4}y xF?0#OlfV{{^7a  wE9o&)-,, Zx<. :I(|p8X[[KD"~V:66v$ N'rBPnέ`4; 0 z{{A4@Ql6dY>RU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_user.png0000644000175000017500000000136110435550444022533 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe18~I0e6yCxƶbs^t^NB,Ll+WC'v/BEÉpkUq!scKu=Tx/mlo#0ҟھT0IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/monitoring.png0000644000175000017500000001130410435550444022401 0ustar mikemikePNG  IHDR00WIDATxŚieus}uY !EIT 2,%r "ɏGJ$~X@A ۑ%ŴbARPYHp}y޽ɏzR quUTY'jOO6=}`Æ]7ۘtzy?y,/Z-v'ç+/<5"'"y 8n wIo>?wyw?;b8 WRz}z'nolHN|?ވnIˠH.;R1m;;C8.9^H29Hk o&F&\2w}3OWGgϾ>222>M)."済p' 7( n[H<^$TL@[UuwɁuh |%؅;oO'fXZZ,\pWA{A%1`-13aqpob.T|-ܡr!SVMz.2NSN~+_8:=L*(+7+PKހ+aPs,s#hRw)q+|/b> JUJ!Jwd n*KN*۵㟮ezR-W1QE +,o kI;nk.f&o4嵟a>IR:1uKW;vkL5Nl IAJb KTErKeګBܸ[ƚ tr`<8lXQ$F'5y˂fecF^#9uw>ŠpwqWK]b?##P'mbiSzusG{)K\rUeTU[-ʹj,us<7=B3;3zMDOМ o{WyC80I,//\Yopw-WL*06(dQqw:{K9WWF蕁T9UAJ6}щw&0:¸K[jZX6ԇAD#BuBSӇnPgOr7&_IzEhA:E){7@P<}cvj&?v~ۿg_W۷MD w|'߱ёraނVJTd;cTUܵo͉؅k_}V^Qd4_ͷv!DS5Rόȋ/hϟ׭;6հ7'um~ÒFu/SO9rľoh@0_ 22l"YbTz=,J @駟98qZ,1 ?_%9@@4 ܝ, ܭN?zݙ@T< .WV]1+HRNAWݙN֙HY@LUe>۸K;!ݶյ 1S3q vNo~͟iUn!q͂x5b< <^.]!s?{Kk n[q"dQ~.-CO7nB*EeW6SdA>b^].vNRVzװ]*ȂxE'# ?Lސ+U k]h޶fEVȶ:] ݁V_༼L`dxD-^!IVHdYɂX#L͞-=o3\uTw 6eIu]A10 \}[zWv*n*0~_g{.*<MXPUa\kkw.ҍa`Ԏç>or15*Rq2%R 1s,p̷yll'&V.pȂP'S!]xD`}cEY]]1:Y&Ј+~+<>՟|jkߧB(g}ʝ BOIv^~5H=!dK j\j˔׳N ^A$W>sADEE =~J~ 204fuX记ݨQ,1eܾubuvvUe 6>_;`eSGeVsBJPtqi۷nY2ӵ5RnY׀T({("dYmY1u[_@d+eݶS2??oH bs$"7nsT"YB$,r\c &,f.--"̒$?X1;toW98ZK Cb>NE:̂%Asa`ybbǷi ȯs+^Ǟ'{j]Ǒ#G03$PωR!3{m j *hP3~Sl  J:ovቻ+]^Wh6Pw.8?TѣG)˂:Q)j;uAH j*y) ةȟوv,S I贴4[<ד"k3mV=>b/~_l MbfUĖSC~{3/a:C۟#ϐ`~ 㫉l.bFS<䴙6-F,5_|q:oVkVf/jz۶oiUw/v -t`k\$7(*i#sT@w١c!(=J{hg+AwgSdZms7C<_ӓIV{/"f͜2huh5pDDdl:es[=w=g1)sȥ+WlixV%̮.dסG kog NȁG|r!]\~qtW/ga!֕EQga}BwSSO=uKF̿?26t\<A.~ֶ ynϋϾA.M%*E;GK᷀-?G==596je[rصyrW$f疺W_q嗀sIiu2S jX%un孷;ԯ| d/y7o~{ a:aIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fai_packages.png0000644000175000017500000000167710435550444022625 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_back.png0000644000175000017500000000153610435550444022155 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HK&vӷ aa9hxEܫZG;qwoP?삔̹֮[/_(oz`yw?@-pcP.֙>|bJ@s=yڂ0+ 82a(!,B=嫣 #aĄR}&Wy~)@|€~ØVtQqN׆矟Sw^D(Z_Oxp03; CsXP`Io \к8tߓZ6`~ `BIT@w̝q 9跠Bi%_RƳZXW Q.` 4;`vrP ahAr,6~Db.ZV󒎿+Yl媲j#, 5S+f#2_F瓬[T ·YY+(BJ嘳kzP`0i,@[yYo){}wͅ5w0[)3OfhYz)$O!IQjIdh p!- E(5rV97ЮU+):Xƿ˩`Fnbw_1u(o3 N h!$:#$>⮄-Ty7J(Ak#,$m i X]V›ⰵM)s)} 6<~+6 9@O35̧~FԒщ[(J3fȻ&)&EiSm uGWYhv^ CQNE,$@JOV 4f7S|wW{ "WL4rF0`*eBX)V3G_K;doL>@$ VC FA)eܸy XQ^{r'ϲ诒4vHad3"| x['S1E˭3ߑyȐOaJV$ׁi2=yS຾jX]2{697Gх|kuӵU =ilF2M@z)!-.tt&*KYR'r5R$AN47|`BJ%н ;@#q';MOx|gס{BgEx`~N{m3mu3Y^P=T.EoVj+8vy׃Zh ~AI]H?\˧fA*v.kY#`|A9+(0h*8;i;Pp!NAE 04h0dS4 ? “Ӟ kuZ^s0x|FK)0pYv%M Ƕឩu6+ %0{ d,UCr*A FC!}@9LU%L8FGK;^''džh#ҪŨ Uq$4&,B$)*s@ɂ5Y]@z2qMGI-,D a5uf Lj81RvD MhhqO7tHBM q#,.[V?D19hx\]' MӜOE54%5'ɢry ^ 맟nB9 4e`n#hB 5{9ozޒ/n}kt >=]=]o>+T⽇ @2G0Xy"ৡH\WEBrfx~+ cvIً**us rߛ^D!W6vhp ˎf eV*e'Qa 1RG J|z91;#_w 3sCwKMYXT>`05M*ѭS`w7/ZX]g3@@EEH-S#e^CS:zޕwfAW2.ws+Ju,;%"Ȝ  R{J={u<dzGUMTi{> bZH5C BtU ta1AJKksjگ~R&V9u-~_$҅(V%2З)(xT&&F/jZZFTĨV1 "7Dخǽt`YzNnKm#b@&LLX:OK> Sp0Ϯ@7gX+wdSiKV3|za](Ĉ$mO[?nRx [swg`8ZY|2G\#Nڛ“/~ܶL,yYm^^Ƕ]J95 LY4FȳƇsP'1y EB[>Kxw$SZW<b@ǎGUϘ <8oo'I쾲+J1)JC:hb2+Lx眻OE TE>`:tV5/Q7*p+ |X^ })!-,ѿ 6Ҽ  H[?HMG IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/ldapserver.png0000644000175000017500000000631410435550444022370 0ustar mikemikePNG  IHDR00WbKGD IDATx{pT}?ݽ+$$@@ 6j .-űIe:t8P4k;qch`@& ST $xEd]c}OglzZfٳqvƾo8prՅz]~𩲶6=$QTT|=3rr\rs?:u^TVF.QywǏNgtxYUmA[K^^,/˯@uE]O3h=ᰆz7DNNyyl{55p] PyfS\bتU'.jl|i&CߙDbNĆ,FeE5k^bmtimmwSl<)0cѥ& "x:e95fL1/Sd[O.^?]O<1b1M=&xh39TK @ Dxo[젠p+}kIw:OtsT?(%ݜ2\4%I I2 -(W WƎSihltֶ}Us<&)>?i&F)"HR,K45!@BD!ƌTT4ow jvW̙q824X2JęfrdH,AsYe())m*(..YqK?#@]ݵuuuoBOСCq;U%'CJeG65nmٰ= 3s{}1ƎMAA.DH$MBEE" ;#rXt-99 6g ܾ>JZ%~F$b+#)sa"HܫiZN.vފ5q6XaDgLPIqQEG؋Mp+p\/0 {$T aTɓRS)@$ I:0[oBQ"Yn5MH[ژ=sIdԩBM%~?b!Q Eii9D6͛EP$0nܷx o5MC5B#`zTE0"E^n>41u=[b&Q2Y1XI~c& Ə/G0 0Pr^?/5w'd˸pVTO!%I2ha,GϘ`?bnRh-(E9#4y}l@HP_Bii'/fK$==;0>n %IbҤInbD= 7n-!'']ځ,!%u]'6vc!HE.]jDQ$ewW4933c֭;TQ2p`$e0~fdd8HD(0N l۷DSSVk)FpŒK ]GL8.W;7@v$KСSt:+|rի.$ضH9 h,\8Cfy9rgrpر٢efaZcckblZldf3rpNf͏q8uޯn~WHXCFTlgϡ/o9a/dXBYh63ػ8 ## U%JժQ͊ZZ8vJKv*+W҇'O^}-[ ^@U˻L/x`tidY4۬iMgE[tunWoiMjQJYH #esZy]a倭&P,X`VwusH{%`0HRTi2X,ɱH,2lX׿)Nd٫_hiqvmdB~3(/{׿htCÕ+xgٹso LHS< CB;# s0wv%kZZڧ.Wʺ ͠BfBUv;,Y2[.||`NZ(FJY4c}$279wh Z[۬޻캺^Yp;ke˞-()!֯+$=N0"ŅQU; "=ڋP\{ag4^M|ir]-_h $ _nDMJWP]}ܩZx.q8"gތE8˿&T-`#ފ_s9oiWG.~p(Z86b>M0ChP[cA[:Hǣpt>;7 4#S=XL{r.B@q :•0 PR+ Q;mEre ]FJ5PZzo= iiv>V6|ШC*Vq0;PXM 8%)ltMQh1Vn/x?>RrRV:]^5Ѯ}Gvᇜ;q(~|癁s7 #_j&kO@ϧg~=0 o7<)0IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/branch.png0000644000175000017500000000126610435550444021457 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<HIDATxb?-@XM{69 ~ 4 R? ~}Z@, Cݍ~b`O ߡ ~= 4?ĥ'а_ 47? FbC(@,|%@ FfFпȂ@/,^@, r gϞ͐J0r@ 1}GTP Xgr)VC!|bt s- _8 lA gd-q0  6y\BL90ATM#>CA F. E@ dM`_Ѵ%!f` ,@l YJgj;@1Ҫ &;QL! <IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/gfx_hardware.png0000644000175000017500000000146310435550444022662 0ustar mikemikePNG  IHDRabKGD pHYs  tIMEfGIDAT8œMh\U}o~;I&LgT *]R)XR7-ՅՕB"JԠ$̴8i2Lw߽.)gq,%&''o^;xF"JYQSSS+. K[e@c%܎!kIBdpP4D]>s5>>ʞGHy){ܪ5l$ketC"-5vxBqk&XmM:hVdZY[, R:XA#EF6YF HPeHW`y^{/vhFmZa(T tNkSMW2rnƷq lCj-.n8JIdhp]orS* (O+ )$뺸-ĒFJqxOy(1Ndt㣿2߁:PluOA*lx:xIHBq2Ej |<ϓ\vef}sPV(ks&= ^irw)sɓ\ .'Cg9@#A_\doO@;9[@?f@Āğ?O@{ x#يr =DPC3̬~08 ]W DO2@L M# .;?M% wԽtjP#B8 @ 0ÈP:\IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fai.png0000644000175000017500000001150310435550444020754 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?PD )'d133bUŸLUs);%{W!a(`a2,py×?>0U> *@yI 悆8(Yd,NbSL@q ѱ@V.ui]).r¿T=o>g cpjp:?4E~)~'s-b s8#OLR1ο ~`7? @h+,~'Xxݼ&OT7? ZRzIx <#DjadTֶВl N23gb:ـYH3000,_TDU?3>P??s_Ojw<۶z}&ïwǀJ%"5<*6EH`ß_!@_3hH3*H0%Uf xph@ I'/ӹ*R5&T0x衸r_?% L5W3(*| E6 4`)GZ^?>/_`6 6J|_: 0{M ׏c0F~3|PF@*(_&)u& ^| P'fq@de?޸_7KO12cxC.=H>`fad F~XyY3hkP{5ߠgn" +<}fgo0\x̑K J3\f 5n~zV ~'X :ݹ_y baQeƗgxRfPB$A.0ˇ/@|eg`eee<)o`gQ+υg,~|v $ ""'5׷O'x*xC*o_1|򃁓/%!5Ϡ#);Wʽy (of&/<.`Ҵb+/`A40p?( Wa  3# 7@bl,0Џݻn&@1QДt?0 ncop hT?ؕ?a|.û/`cxNV`P%g`Ц`O@nbx[ˠSL?!bpo+On\znZ2cs3tcxy͖r55~R%@1QE*A؀3 z)x NF;B31H31ܻ̱&/g-xss } ?Z'X luԱ011JE`r+ve;PFng*~g`x(ˠo!ëyIa (e/0>0 ?߾ 5_cIPPPT^^XZZTHJsW|s/ˣ~a 4`{:|/blZGPGr<0r0HJ3*2g7~gexgo?~;Ӈ}]? q[Xddd20s-޽+37fdxߖWDX"&=k ,blF02#@G +3(+3P\00ۏ+OBBNZZZGpp00d*[ @%'}k1y]%8 ]X^̛ 1|ğXX$/v,!b?0=0y7v= *{@`׮^-"",1 i#XaggZp~~1g`fHLKS)G>ne݋ \JADBA@TAg:X?Ë| n2sϮ+a Z} x\HHHjƌG===yxxࡎA >}A;'8Ԏ˰b}nD1fpƆXܼ$v O^S/`n10Pl>1L|̛r u8T Uee%K2Z @ bfU:L Tchfp}#O.1?#u=0d!$+ ıTbT׃Ę!Q @35[J6ϟ?g}6.0?1a  lNq~(g`;xA! i0C*Hd+ X$%%y4ɀdijj{رӡvERd0z0 .`5wTX!fa@;$ 3p@LK2' ۲+08ǏW޽裇 ?ı a%35렴A NVHgDaf"c XC\yC&_  vb63,A#pULZz%dPfftpgB$ JJYU bw#^Hk~`E`L hCeUb(E---pxX1 ¯2SxP 3|^hF S'HPtVtX'߾23AU|9`ջo ̼,#<(JZ27> @LW^=tϬЎ4#jo ~? &h) O: XE7>1\p bfB z<@L?|aú˟?}g(70y| L BE :/bS0ǿ{ӷ . |@20*C#+tVĔleܕ8q  UdN_ LfZ%?g;\<: 1@E fq2 ˬ(i CIAʉpA"͍2,_͕w0s|#.?yEo?|>7n>|/_k@uи43Uʧt[`?@!4h[0Jf8<06 aQ /.^< JKˈrC+?v(! }PR߾}cX`CWWk׮J_gڭۏGC]C_L^`֓ Kjm:wyoo: R;y /]tr"Br 8kJP X1̜9ԩSJ f]ZhgWO=|/ƣ w]vs^X 97@hI:) lfY^1(J Bʕ+ wС/^\ @O3@YYTܚ&N `sCcOݻocPol q̞QU9:2 5ɓ'e+`7Oc; 5 ANyleu}'_ z>A;/ߡa ıA-Ҽ OAC-%W4G20 sġ⿠@i\  ,d u8 ҌE/(eIa īa6_CĘd ơ cY/ 9IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/network.png0000644000175000017500000000157610435550444021717 0ustar mikemikePNG  IHDRagAMA75IDATxmKL\u1s;S`Z"2 QIdhPCMWMh\ǢIƸָ11q4i1M`AR3j@[#S@ {;s.os|'H<+w_=7jۅ0gn;at1̉b,*eS!D,Dt$>1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fai_new_partitionTable.png0000644000175000017500000000145110435550444024667 0ustar mikemikePNG  IHDRabKGD pHYs  tIME   (?UIDAT8˥ku?37;331nT(6]ABģx꥽1b)@ (^E+HMldnffg~&,"=}{?O>rMwcWkl ,dž,#st􇩾uڕ;F XYY}G8c[2[1VtP倽$~g@J/Ԯ+{mkhEŁHq9%<Jɪp8`LĘNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/time.png0000644000175000017500000000203110435550444021147 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@*o*?}ߟ?^M 9{;8ß=p#_ן|O⻋`zԒW6&~6FV0ccc\@ }}P@LE) 6Ro~2|zEk@'@1XߞnYj" ʲ@00pꙇ r@g30:|*r''5O ī} "BtTp;eN =SqS { VE g&FIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/launch.png0000644000175000017500000000235710435550444021476 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb`xPsq/d?fc@xAԪnX?@kYJ00100"PC #r 20c 3| 4t?dzo?o6b004I.uf^&ß[1s1|3` z0 p!H) d`7=@04ӷ ?~d`|}˗ b9  K˪r%2*2`pf)2#?8xNc`ysŧ ?k >0pd@axP=#!Y>qA3c+c`&?rcL@C@1#:hXC"C] w1 l¬ '^K1 В~IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/monitor.png0000644000175000017500000000133510435550444021706 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_groups.png0000644000175000017500000000154410435550444023077 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EoDpxl\ћ0`> \V ܝXI7+(\m`ɖ&c2) ˖&`7PZ&s8k[Xel%:r|'کuI't)M^+V &p>*{ICc)S4T;D?1ih uPl6}^ij3|[\ein/&n5O7DAC\0fc 3P"ڼ2D"#26&uhb2N7V\Nͻ򟁏zC)k/2M-2L[WN~,@Ƃ+ _a/!0'0n;@[25AQb :AHO;[`f3<IM=UvmWe t"BgY߶/ 9 lIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/phonereport.png0000644000175000017500000000606510435550444022571 0ustar mikemikePNG  IHDR00WbKGD pHYs  tIME S~P IDATxYytT}쓙,$HBB ";mŠC-GN r0rP"-d1$dO&ɬ{oH!+s=gwwOu\@Hn+i(_#}iZ^5X)ARw9QPHl\xQcb;󵸑.? BAևex:@j#$d0 |6gt#N`CTT7g; @.IۺyQ D<(G\V*Ϭk&+ C8`c$0g=P{%@0l$g1!@*}3R=kmI >ȈyiL2 IN_Gh1U.<6̠-"gIp!qJn WVxFLҘiLB|{HLNV93SGsbz Oڤ[ WN%׾F"#Rv>qikso Fw0=8' ܄C/FQYB %Ԯ.e@ޗ.x#\Sh ̹}6# E\`@ƈc}h\D"cX aФ H'$kz29jϙ-_ruN7G;e)v>Yso6ꌵveeQ ;0/eC)MI9K;d6h.ʳ˙90JVꨞǤV>iUM}'vlsee(yt:yO˟Qg`ʥ=j0,Ij1GUB'c^Ά P<@ 3⭩;]^.(>^J#5 3{'HC?L%@^ԭV6^:w tOޡ 5`D&)N<45w ]־8y;1 }./eD:Tϫ{~Ck& īNpa0IͱM\Ȁ]lmR=&W2Rot޴!Hɜ%X-Io%)ï[sl4!yvʚF]{ n[ @M~$B.ʱmE#A HO6]pC^a23kC\M1#Q7)> :𯪱ϭݿ]ˇ޾a& "({iW-͘?z5WѥעirEs=nؖ[_ƁXIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/password.png0000644000175000017500000000636410435550444022070 0ustar mikemikePNG  IHDR00WgAMA7 IDATxZ{l[U߉c'N&4!%I4:TΪBVHZXUbhW V,J)1,mC m]6:IS7vc;~_?an2+_|;w)?{z/+++dX8#tZYXXv?|n Y\P+mڴ驶_vttU__bYth<ED?xM`v8q055E~9X܏h4ѩ)o***~o^ Y ̧~J^/ٽ{m iZKggClN*|7Bp}вZ7Zl \'<99y%p+++7ηp[ Xj5Dǽ«](JdYFh_/l6 V jE#@eU۹033s- eDQp;: 3s3nK(\zlKKή6r;r6UY0;; ߏD"ՊbX,=}l0bI~X,֭[a4f QA4!p:jx<;v"f3 "N' hF9q]qƟKEQ $IlF8F<""XEKK F#Rnܸ T EidYPF; k"@SeeaC)B.C>(`Y:V|l,aiȲ Iqb!y,+WC(Å8X!K|_Qyr9($9˲KsX]}x2 h+W$ %dP(HEQ0\.R @e $Lh4l6JKQL&\.BZ j,_^YKg"lou dYp8d2 a0 (»;:99y 9PV~(ķ|>EQٌxMe2\*X MMMz8vcXmL,~_T*ݻ( x,cf80K@`hhs=Nk\SQW_ut)f2, e199GE~K)`0kϟ?pM)K岱,QUUU5Mr(*144PVd2sy|| Cף6l `=wvc{d`r|hfffb9pȑ#oZjVwttfvD"0)vu[odzik]],0͘&Y0 v ! ͂0??2Bهxƍqa"(P(@R!Jh4[7C1Fb)PTKlJ9O|b4j<'b),AlH/uzzz!L/]"! v8NH$.7?~ǝ<(s%t…wDW#sydYgff8rJ%2̬,LKK.QAQÇ]|;Aw^z)rN[uXyQI('BcIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_conference.png0000644000175000017500000000154410435550444023667 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  (IDAT8uKle_;L۩NjJ%R*HH0(!!.P؀!. wF7- $1@ /rZZt},W=IN>W4=zQ@fz~g_:ؚ{rOԉ$48z t+2AcRbj@@ŀ_mB'%!p uJ2U,,. (NOwٵcc7JbCI74G Rl'pl}2$CЮ 䎩P Hhݒ49'T4T.pk) n 3Ft 5c3/J-m 8;HOQ& -*.ws }Q[k ~Sl:fdd㑝h lunߘы]Cou[cmi%g׵e]9ױlr }L]z~ӕk;^M}agzJmon _i=jlz='IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/logview.png0000644000175000017500000000651610435550444021701 0ustar mikemikePNG  IHDR00WgAMAOX2tEXtSoftwareAdobe ImageReadyqe< IDATxb?PĂaddK䁔V₻kc&҇-:Px12r 2q3|w@ቤ@,TU   < rb B ¼ \ [10:eR Fh!6 H@r, @ 2H 2(H 2h 2*4?A ;k#xd$@,ʏ @;V[YADA@vQ=$ 2 1@,XG)ء$ ."Ƞt(/0i030Cs?؂V h9qn) ,x7 &0dyb#C`ŕ@1 /_=@iŅ[7ýD8~ɵX\ΈD 7 x =- 3L&f3&\`:9F#ǒl`4(Dx ) ]T.?t~tBb.q4f -ƃ\wɘl ?@CX|ۇ:PB 3#򫜢P? r6@(cE߅O> LF,  ǂ+V_گdENH Q !LFLǎc  &좌>~ 6, $oDG` eB?gŞ@jA-)r?7n`}6},y~3 3`cd'j3A2#|Pq4t402 s`a#P&0 CL<햁+2 hS9FP3/HTDg' PbVmҺh'0RxhC12͂ge8 "P2'#|rrrpFv J|Ov0fZ?z/$`4_A+R#KJ1xy plj?! 6)@_?~0q@Byt&Pb@O> = wdb7 &;Uh^|$!l L q .:ـ Rʌ\@ÌЌ(*͌X=@bz3$/|fb542#XZxcpI + (+4\'N 1=`P} /`y $'=M:LhIZ$o'|@Lxޙ/<} lO%(1lLO 9 s4# s 03]x[`P:86&#`$aiZqh)ꁿLW?0<}$Tb^= pX.70h,E ]h(<ʸj`%3W]@40'V &8|dY` o |,gf;)}ꃿRx^wg@7~KȠ'0$$ò~Rm".7^hzX0e~:l@?k_f$O_o~0K< P 0+(/V91͈wx N0](TA%+ؑ y_/}U *,1r \83 y_|c{Aɘk@0|ǯ ? l₆ߙVRAAMAZ¢rME~'_^# 0_a`?F܁Vq ϟ~0; | 2L@20( r, c)0I=yo I  iԼw/ı @ z(?kA`,Qo~3|>cx7?P=* rR:? @DN_W?pe`ax'F|a،d4@ )u,4@5SJF~1l72\?$tX tD(c P_n`@IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/action.png0000644000175000017500000000061510435550444021474 0ustar mikemikePNG  IHDRw=TIDATx1NP_"@D마"qV$ DGJ$.Q(S,mN"E/&vT湗.@vb9B|k-݆hkj b .1dyZM@:`wF֔ _)UgULC7ϓ|b;hiBP:Oo R.u>,U}X^`Q=/Mb· |!d(5 8gG\[_EuϞ| N3#v~pw rd@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/memory.png0000644000175000017500000000164310435550444021531 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<5IDATxb?% X/^ 3@{UΛ<՛@, ?hqpE)+ˇhh 2h+ DNon:{ܿ8  f&66Fzz" \l ’jҒ2~by=  87F!I 6vcçO|l Fv_?{tO7|_R>#Go ?exû78x$ 9x<z_=@13ʺž{pq~I%!^x `dÿ |B¼?~_`A +&' 8DZ!v] 7w10K2:3<~Txxtud%|A̡  22)""!&]AWN!0.(Ӱ@RO"3H  Af<+ֶ%4ơ=r6;*ɫ$tt?ן[}kׯZ@A@heGݿ F?Kgbb2Jq`S@H#ׁD!! !&bռ= 5IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/dfs.png0000644000175000017500000000707610435550444021003 0ustar mikemikePNG  IHDR00WgAMA7 IDATxIu;ͯgMR(J(KHaYaɒv N{Ehc A b0,%E5$fo{oH&x[uιCx⅓9GD|Y ,9q[ozkt걿>hs J1RB H!B Pm)0ۯvz"2ns?W/~=^x 7Ϡgz|S&j8g*I9oxQp7]WJ1 9&&?=?Z\|{ >Ð`RBQUHXa-Bx`-&w:'%^v;(IX17{PJV5΁s1.\GJHHHQ|dL0$ #q4eu>SQHz!R@57W?賾W||*QFiR 5z88Ͽ봻]Jlԙh PB>ĜuDqɽI<_&|"yZ* :8htDaX 1(,pDQ{RfZr+ $Z)T>|D)5+F cƘDnr8C,[vO{rynHQB!r|hMsMb8)iaNRJ✣$:4';{$u!%9nvhwH!Anu-5>1XYq I)p1EhV80" :]DDz)Rd`q T`(%h6ժaX-G:LhoPVj| s4˽+%,'bԺ'6ЕjV;ZcGSTU.VrcR /M3ltJJ0 ( +ZGI))QƂԊv.j48~R dyeqk}CCM!"%8p;0 I> A{8q}4j51X-p Qg :kQt0= (('&:)Wb\=cqiٙij*5c꠵fu}ha.jCfY9KޠnSUEjIj_ @ҨT5\Q>iJR'q]PR qG BJ0XZޠ2?dY!3c,y:]ɢj >aeF`P9\q@@d|eV_ch4_8Y+Q.EQ@Avo@nYQ7I!? iQWم ZCdA53Ӟ KP6;!ZIޖ=\G ޤ3X$S3ahM*wZ>X*Ck r` Xl!}/YxXufL% 5Ҙ-h4<3foRJU w@zЁi6(̑b-kF3%ZoAf)p[-Jq[γ"tn-hwYpf:0MV(Eӗ>}gnRj˪,ۂQpѼt^>v?sx,䟻hD @tvT{f8s%gw*~apZt%$_K$ Ǐ!3|˿җN XZ?^\G<]XXع' RV.'6s׮~ϔfRkkk!W^yN.g~^ o* }C@)77\|,9̅t:m@>5yɹ9鑄a ǁ+ p.,,,J/:VVn6Y[[v{TիW2ccc[m!Ib\0[J;\@Jq~[Kg}]r`@F,/ M;lltX^^ųa|C̾(o~{ggY&Fl$~_ce0YZZn˛jM&IH)EMTvlj]Rcۼԩǟ;|Чܔm۶- @=~׆t؏4*{ \-3M% Kd%"IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/help.png0000644000175000017500000000216010435550444021144 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?-@FFF S  A > @z#I <|t #@3hhPS=30>yy==&}}߇^_%o@C430L@7 Ѓh3@GZZYܺ ?3gbwڵ@=0C?G`G>) @2d&@ y4Pgwg6o`o ]4f0@1'a SqYY=~qϟ 20lp4ځ.- V+ -P- @C@%ioV{7ñc Hd ÷ @k2p@SH xX@D7`:')HX~kZ?w0A(vh@0 =;ľ{?3pwv^ٳp_b``0 H22 b+W2 ߅ Q3, `.f`S_i\ ~$;B`lk a`y60ILd`&Y 6@1A[~bO0 d '2)l e /4YX]$y2#G i  6@b`&ɉ-Pg`&G99`Bϟ pZxǏ~!aaM?ZZ >>ɓQ_Al,U &$߂$bżȦ],v%Pw2 0R%AWIAB܉>0kw? CK7Z/RK@VJA9`C#C䃑o3ITh|}$ߐ#%7ugXR8e|pEpLr܎wҭI I{@;e{`48fp5b԰eOeS.`'Iz$eEFUa=0 ކ*Қ4+dR}1Gn ?jH=uG@@ym +5@32k! Us DU,' `Oib@JIP5hM:3S9Pދ'СT}oju5&~ah{=vD+!@]B"5T/ez&elK_&6v#>x  ֑A&x'N3_hگi`p{ n_`'(x nC(Z͍WUow_qZ;A)趲{uk38yg<߃j)= Xr` lpLp/{~o1>dIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_new.png0000644000175000017500000000120210435550444022034 0ustar mikemikePNG  IHDRabKGD pHYs  tIME3t IDAT8˕KTQ?{Qrpe  nH\-jE E@Hj.MA YH %"5{ZQ4/|^{ν Z拽>Gc2btyj%{Y2VŸǢw#6\үcUաVUn#Uw*mfp?}4X*J5w(H?<Ɍɣ 1*m)?5zu}kZ9Iv^ Z%lrQ3I5*f?O竩M7g o؝[^K4'N-JP!J$tRG,w|JX￁r@t FIQIV2|*f'%*ȮkZ潨LݒT8V¡å{WUSffTc.3`jQ\צye6 ^L"5舺^K8Q͇4U 51۴TΆ'7fECu5_#$beO0te972F}8ԏsj5vC߱;*i@O؝[^K4'wץRM( kҩ}`~_i?bwymzU/Ҁ awKb. a̒9+k䉨fGyv|kݟx1kݟx1g^ag^aWzWzv|v|kݟx1kݟx1g^ag^aWzWzv|v|?gosa-core-2.7.4/doc/core/de/lyx-source/images/user.png0000644000175000017500000000620410435550444021175 0ustar mikemikePNG  IHDR00WgAMA7 ;IDATxŚylWv?;6^`6,Hdit44T:ڪU۩W]U&FQf2$Q'd!CB` ^?~F=W;s=&WֳFW٣ v*JJŲϤy#]9^\q޵V#&|=-I4وnc(3-_\G. ?f ?77U'zo{$?Vg~G^f1mq,'Ï<NS;Yˮ'=C1\?]!B(F9d/b+SLNV[|_O,j=ƕ ]_e?%\׌]c38V.} U.pz$NK(*3oakdf/@I>IѵfǗYwߓEB*٥eZ%r%K̹4rǁ/ϬnήMw1pqʋE\X"vyhG>RR:w|0\-j{سZaY|ϭY@* ,L#=q TXۇ2xf,5lbU8ṿ{uŽo ? DbaD F`?'TS/.srNqK;:Vtcփw$D( NxiƀZ̯ZWyϽy޺p8QPàE:'3_8p|'=&0⠆"je~z$(珽žp(>PSXfV7f7&pfP P@׈3Wx韟y?^/ٮX0"Z0葥`č8 %@sY8ѿzSc8@Ez h$h0z,؈E-p?䫯 `,57 N|n#hSljH pYz''9;u)ʼvqT}<ȖF79anca{ !B HAbI\HY遯k}U^,ke _:/v>8J[JW4'wnr#nj ?\H[n!%f@$!kktLN36tvޱs֖0(. A 0"Wpb/=l9* 4 8k̤Eڱ}`h?MJ{g=Pm-*DBIssr)a5 TjZ)wW?zm|:`A E^|l̺}H)>wu +Źta/@C͏XC u=>ؙ9^{7C="&y]_BłD]J1{~|͎ڸ.mڳ9ՈTög04`[gf\Y׹z0 C~07@[ƍwr9\E{kl $JX[cw7M `h pYP  eޝ_)Lm5+=дa`n&MasE|װWϞUJG֯ eh:CX6BEP*g0k۫ m{v]0 ҽ*~uɅT5p-Rq89i^;RBwO#ql!HWkOOx"CȄ\fSiT[, CP'7 5eѦ;;V B0vbi*Q.Z&2-A~Jf /!TPh|_ TҸΧ#TA:]drbyudH]ʕ{r1^B!J+ޚ6ܲ\R Qu!7tGAU|]= |{ߟu첝~~|J%pYZ-ai}mi\Agg1 UYZI>Y1>>ٳs:u>57w]STqĬ NEId!cx4놩iu)},p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/fax_small.png0000644000175000017500000000142310435550444022163 0ustar mikemikePNG  IHDRagAMA7IDATx}k\U~mqlF &TjD4PDPp#ؔ Eѭ !l])2։|ܙ0s>]Y^xy~⬭}Y:S@\ ^X^^2a"<<h|JucѸ~wccFYH)QJJ<Pַ?yZ?0AO }FÔa2L =zݔVK;$I{eee!I8&5os5 O'Gєxï *EQda~gKw-`c}3⽆4osKweYҚ0#5eY9BH9;Th+(Z#,'(Za! }JkvVc ZYӪƘ+5ƘAcDQhcRR@V}/.BW>RJ<ϋn{>;;f-Ӕ`~?PoV8pΡ4r||L$ςv4w=s,c'b| 4#=2c(˒_i8澨z8?~*ty~\qůTi9j2 C0R\ 9GV#"Ӹwd2) ^K/b{IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/search_user.png0000644000175000017500000000170210435550444022520 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  &yAIOIDAT8]ou7ϝ]>:ŶTmb1hc1c@@Ap@艃áDF#814Jj_Ȳm!g}t3; |M_._ʈ.,/޶lyOW"> }wĕ.\sS<o T%MU=WCg؏Οli/X.npӅ, !h(̎^K~Zx IoLsGMjrV ({Q2 /B vCM@{b+!l<ϰ0pAb>S H"*!tX; >i5ȜJXp`kjyT/55s 8І Dnm*v]  T`S MC~[ؤaA`#F&Shr2zynj;u[ktAx=ƎdD*[Pܭs@Tڒ ',N/ +,X0( 5X ]H[b C@nc̦?PkR*«TXOn1<= L*Lfiv3SJƷ,!?gUhi|b=>mod,z3 Mlh9!n_a;d[NEՓ 0G &EVv4pKw< x$.Y Pcѩ ?kxOPWgQrVM>Z[5tcQ7?|M#<'5i}yIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/display.png0000644000175000017500000000133510435550444021664 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/posix.png0000644000175000017500000000776310435550444021374 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@PÐׯ>}ӧN>|0ƪʯ_DRl@ׯ߽{wﴤk@HzQR\ÙXYY@d߿a  wayWvvzzz3O 7P?r@d{`߾}faa1 ߿ϟ?4g'O2\x񟩩&UUƙ3g^zdY8qbPLfff>aaapď?l<0& ##ãzΜ9ZD:;;K:А G޻wѣ o߾c0 Νc2w @+> "MMM@'prr28991bUrU^~ v((ـ< fÇ0)Ȩ2et@P`]&!!,I@w$tRph= W\˰rJ11˗/?~%&O0BCvv4C?010mG@ŀ` r(kjjތ ĸ Vd3f߾}d`J x4 ʤ ʔ 2… RAYY`%}AEEV嫁La`>h6(Ad9,8Pri޽{^ NJ`E,taP`ccc˃ްawAA;ˈ6@awwcDzA$ȱ A<ALȑ ٳg h:y `4ݻI@! ?q 0DxB `!*_| /ae; & %%V2afߺu n/777éSӭ@\|@8cXFG5BXJ"""4 19ׯ ff@ qd""cOO v6 ;@ l~xr/l Ѻϟ?7lL 'N0C |XX@m `y \ "߯ l@ϱF`;p,;M=9" `EgG;qy pz͛7@ XA*&QQQp,UBjbb ԌxXYc4!C>``xW. @ݻ `+yaaP}䉌wb_Un3<~ATR^z]vKX[c^˔3(j2(+);k 3=-AעeX;;;pp9P~%3^^> ~(s`RR_`.6׭[PQQd`\<PA,ca +8-7 ]:$2B%//'ѥdOfbܔc =`P%Lg$j>+cy{U%T mBk-|I)QJ]w)PAC X,lPaM '~]?|`;X@oܸ?** l` `@Һ y Jc}m@ƇE)V`!88\2/H ,"gBpP6\5P2WBBB`A@+@ Ądê}dzyy1U`MPb~30 #@T3+(  5= dT _k c`9#@V&u5I\szt ́y1 E44cx@J`S\s0. cÒe jV*Fccc<,iJsh2z Ġ N ^ @, %0AM0G;,ZAE?8A`GZ0 kK9pjW|:0A ?<JH @@|Z/0CE\\XZ,ttti20 Fa=3d#̇efP,P@|OA51uP jZ hj 3` t:A Y k"â9 BdO2v-4? ȟ ?@ ~q"@Evr@棋!;摓rRa,BoA`R< @:4N9q(ؠа\z {d >&'ǏC> 9`ƹ ʣ,+"l!MЇyyA ˟@0 3@5 >r:EM9V<2̱0Apl9p v`9 .";=:̱9yw)A NGΞ= oA#ܸ @x;5 4xmK0#װ"CN60'AlPln}0@,36`k3W`D y|i1j[6o|o@Lp5@-urbhP \I8zA/Mf 1 @=[-*Z9a2r%yc G2+`  |F3)  :+&&6յP /Na]APM j,c†A8/4/o߾5ƍ뛡͛gJcw#+ߧO>VFvVpwyA0=; #f|֭>| J:w@. ㇓zǏ8O<\l\03<{p, q00p=JJGg} $XD2J2 PGaW?n|w MViB3]!?%&f6` RUoˇ q0|9 þ '{W|ڛ @AT#/]#G.AM ?H2l&'%Ó>?߻w>1 _b?ûy_? un_V`Zv঵Ms/@6Ĕc+?.!c}̳?I1ȶdL8v\h0x| 8uE檹YkdZRV߿WiE')}v ߎqGLM4i7ڹ`iA%t6Hx<ཉ^yɑ}&Cl_kJTb[vx~GHGI#s$z٪ySl(/LٍzWeepOTBXY jR}z^.P*xhyݟ77݂ ivcQ2N_$@bꐩRDRV5,-k@pwȅJVR@IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/personal.png0000644000175000017500000001002710435550444022040 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?!ȈW^M? )#77;3пׯ߾|㇋~?#_x׋;h33&F (';3fÛ7_ypSwڟ?_ɥ?.}TԮafSPWkQ4ggc`abbï6Ar@c'vn;s|6 ",mT8}_@Aaifg 012pq2|a ݕwZ=6p Hf xy,?~?A1 nVg3,_ދgS?~9whdOr'@uR&fF֖1N PF`h<$> #ĩ; 7x_ozH%U@R%FCUۯ 1201Bx'v':q?g,?IYAE97?dyχ@s@ 9$D~o㙁3(3JmDr`h 3xopr`xpߑ[;ǣb,@%d&&vr9f} Œ@I ' lq80X MFNNB d`a`V \ēX6cT~6"pUS};Vp_&1_ J?8X1=+3ȡ`O0c7$)<,}wV)>Ne7>@Dy v_|g`VP)d1ʠ&åL 0K29|=6# w@1M@j5@  GRbbd`0nAVT37_3;74ـ<dI> Hl*@A~"^ eax_,W&?sn.6`@2= 5&.`O f}X `f v(( p ?10c_;(`&c`̐l20+0P]0Cˈ2{b̰#ã}!ad N6g&7nV`lJ03Hp3ȲtBD>4yZ2sZ3pK`R+2p,nALv5Ea o N?=?g}dd l*'s3212 0iQV1av~^ ,Tr@g//\X!ϩ7efc@ π*: X3ha0_0Ԓcgl @ j123IQ?2 <畏*1Un5r8@9 l | 4> k3} |kf/?ςA h!(0@A1A 010o^N@z"{ax=1l1ԡ@6L, D Aj@|K JMb g}t\BcLCBPr8 u0 YS׼u@ᆫ"s~c j{4 >0F*+C̊p8|Y?q=ȗ@W03Տe5~07v 1 IZtC b 9ϰ=ǟSf|/Ba Hȩ׺`[⛯?QC&$ w0LLHb?|*eZ݇.yr@;* -.W^BЗ =6i%#X??yNvM]_ ݃wbDɸ03mސ"%@*vf;psئ˷~0>zO_%A]Wz| F G@toun/03 `3Zϴ9;_a_@/Rƅ CL&/_v_`ϙl `擿 _\t`KgGOZT~&5<0ifq`{?3KGH=\H1+ᓒxW_dӣGw*y (̙!$ ..x"m`c`Pag`O |kNpB%.w `u? r0 1𑁑_&9n`_?:?(guz1&: &Ǐ߽q;4Vߟ~kXX~{c߿$$啋 AyG_"D_Qi`Ơ߇w ?d=8hANJ=9hcTPP-*auD&N\eZaa>H(TEղo_14 RؿƄ0yth@${`ڴ?~luqq!hBx0|>P1F>o ** qu/ )y HO:$**l3CW:/Ɋ f`avXrp  FPXil<<4+@E-A O Ϟ2 ؐ1 3XpqM"%t7x^l`r8Q l\Kfg8''0-ȣ`O0i^55 W--e\ĸ H? 1qPڇ<(iBXع88?eX  03 pOXe&&"+tşBHAq8 !  2ݼ&V`aXBYvHbAKKHD~o@K!9..vV`||6 b 0?ck0 .`˩ۻkB33z )kX/i`Il9XO3| q0#4>opaz w@nN@y %#b!2倅(A! 09P;#&`^2yj\?8XTUUу6|{"*k q.P 1Xҁ84_ ,oL`Laf=- 4`1 fٌSQ%0f(0PK+ݺtEWv7$rS.5_%-mo0"GTvwub(B!Ԗk$N#)M1mf+ bYbg*wNO, 3DࢤKGP" NIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/system.png0000644000175000017500000000604110435550444021542 0ustar mikemikePNG  IHDR00WgAMA7 IDATxŚklu샻\!֖h&EǪTvbF䴮`8 5 jh (RR!AQ)CIĒ[zR$9Ę&E!.]kfl%%r.s?R0o/ކUWW>z9q#G-г>ǎSSSZ))8qmYVsN&O:th%onn~߿Qߣ%IkK/MAkM8fXlO̪~0011A<GkaxKh^kL5Xh48I8&>Zq]xhhp%CGG\n@B~[\|_{X֜E|>nݢ&&''QJ8b|lݺSNH$PJ-SA Zk(=dr'eth4JGGGyZ;&ϔR.ZS__O0dffXIK477j*7 !(5Xa)%~T*uWid,i.R"Lb}L&qt:M"0 Y0Md2I.fgY3055Ecc}ف\BO** ,_r)vPGKe^v/!e[Ⱦ%k0BLD)Eww7 Zj)6)%xRz$,b@JYkzz\.Guu•{Rg1==d{P){*bppH$Byyyh1Rܖ@)UpהR$ t{kPDq0nn0MR3)Ӷm2 m#XEۨai e›%TA!U@1[0@Y(u:oBl.l)ẁ k,ŀ7^\mFJeYFk1-P_!>)J(.f-}9Ww=RElf!n@ok9irZk,Z/Pju^D3|\ٸq͕aX,H@A>n^/BfYHmc JN ZZZa```y,,|q!{%հ_ )6eeU1`@ n&0dǎ:eW.^)KɫRAl|%>J Cp[ >D\)۽X,F*͛tuuΟE;@{ pbQffl7&0MVOœ!t?h,7EeeeTTTP^^^Ⱦ[T *E,f&r tD#e`Mp1Q*[gTTTy|7z|SRmH$9p]eˎw @qh`%Gahh8Uo~v-l6U]]W^y{Ν[ZZZBuuuYfX6* ǏSu4-P4Wl{1n?إwy8t:f_5 ۷]vXECCܼyy6lT*E:.x&Yƽi Gj~&6}6l|ё80p<(mGT o}K4G45yq1z>"8yp'99y;B(!ݛ:mA|y *+@C9πiS ?_\?KÕUl 6>`%,gBi$uupf v?~p5u'4wjY硭ZQVNʇ !|Pa8ys{g7Ci)jFG>?`/!OZƼ|-pt r( zw=NonH[)P 3d+W1X Y*`4O >M(L3>cퟁ7a. T *Hfa<uXN:{{_}6i'.\J}U2ʊ*Cf*a|$>MeQ)ZSg-ڀ?( * u$Sl|;;WGy[!p\dQi5^G'wV&&ӛʂeU}g"2)`eQG?8f׏@+hm]_߸nH^B@aLL]ٹ3 S='iAUgtlo W v4lFΦgo hspRmɳ*1"&L;-ʉ7>BIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_new_group.png0000644000175000017500000000161710435550444023262 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 S/ < 1hK05ovV=]!6y4@,w~d4e6_\\X8`axˠTH_,@Fݷ q-̰K ptDh,q 7?!s.1~/}&g+>3gzGϿ>2|"K?e9SA[?]3_]](00bp{\1?ߪ&=G 9NofZ>L <`/Ԁ@|Cf/}gb`._"|l ,~9˰ , R f`fcf8xw_ȁ A^ڝ !;`  5QP)2~->&1AعA$D'5 G'=6^3M&:EA '" 8 *֠ݡeS ÿ$E|{W ߿gbg)'$?1~*PWX aV( ɠ[_|g`_0B k _1sW2###+%`fd 0(b;?r'/x\uLY8Ei;;+0%8~;S @X=tkGo6`"y>f b a+Rbucs3,lP ˀ\ S^s(jvIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/edittrash.png0000644000175000017500000000126310435550444022206 0ustar mikemikePNG  IHDRagAMA7jIDATxmkQ$m#iFԂPPpEą݉"p+ѽ FDA*Mͳd3̸psֵ=酩1B2>Ġ]oR̗OW?EcyxQPCB*?•RQ(|0]`@8:`EMvI 8,^W kK g%p<ֶfk7JR! b@WBF AoH MC7LC` iPkPV%KQ4 #}v:'9`+P \W"a`:UN RAɂf34Mz˜ab8U9/(骄d"nbقj*C J G[t@1XKoө3>yePؠ/ /r>c?%>X-׭@` Npjihtn؇3{hj~ĩp/?}o| ~ALѼBIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/editdelete.png0000644000175000017500000000157410435550444022334 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb勏 w>f``cCL@auv&7àk00?dx9++éGjb`y? _c`*b`ݻ-Vfff6B-;~`Wo2Nb`߻Som3&1i` #\ @$c`9Q;wXd->YDԓ@,0& .O3دnf`xᷖû 5|a&&p4@0YX8b`xo;P3#,! B/œ;+^dkd[ aWm@qrAmG rdo~E&3|^k,| ̯^120z ^0sb`tc/+~2|Xkz?^abknA>`)V ï^ +J OuN>dj6?4gs531|LP`^nJxIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/banana.png0000644000175000017500000000142010435550444021432 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/mainboard.png0000644000175000017500000000141610435550444022153 0ustar mikemikePNG  IHDRagAMAܲIDATx?lu?l/vۄP΀Tm,C2Db KbXUtCЩ"(C*$D(qN*d-߷WQz'_4RJLB,e{/>nh1uyuKп^N_'$Ďk~oOX/ z5*8<7&>T ',*Kݻ4u (sT&u%uIG1#,_ۤZl3l2_q0 4v_gInA,++mduȞָ#,UHKҹWd8ż5Ki^g:"F~ wSgE«,Doһ``_f1O/Sm`` /E@M:o'C0kB&^!%A*`$A||v˨ua=HDI^D{qEZkU. iS{;0ګIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/mailq_active.png0000644000175000017500000000107610435550444022657 0ustar mikemikePNG  IHDR+>}bKGD pHYs  tIME BIDAT(=KHqfu`5dd$=@2ҥC:D١CǂB@D EKbkMuݝpgf?˧ΫP7=%'CDh7+l7M@QLUE? A5ǩ PTBD;0 :mX=gڜ.xu b-}@?*W{"c b;!;]+`8 I+dFbe$VŇ] Zϟz!=`\U<\r ,cX)ߎus,mG^k)C'&-bq4J*ؠ-wkʲJށlRJtY^חvfU8q')u=۳-qIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_macro.png0000644000175000017500000000163710435550444022664 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?% &zA쀀_|ygE/1225, w|c_|`k?y鿟tׂ"``e`0ǰxb&̙3]@, ͩ g'Po ϟFwGv/ Ƿ/3Y5ASCh0m ?~|khlld,**/&&PQQ@0vgu-M_>p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/login.png0000644000175000017500000002247510435550444021337 0ustar mikemikePNG  IHDRvqbKGDn pHYs  tIME  b IDATxOoXqڢXHj1@2VzUpq\oƞ78za8Fofqڕ2.\@(HBG}P$-<$%?DJ _?sf׿* hQ Ի_]]I? >F5, N2IG10L!X3fff϶_X ߵgFvs>"f5U`}i)wB333dS!b0|5_X5*}s*e$WWWT؜:kquu%~0/`Xgggf kJ$D¼F򋈥-_UUѩb +~zf& 3_ɤq1+Lⳋ Q e"I?f7p"T,ūFDl"0 #LEa"t,h=PDĚԬW3bŧl`(bGR;H(-ۂc+Q}rE+.KA8bk@4\W2bS+j!5 &B\8 &Br&aEl)=8V#$N+wnhO dElmi6zx @PBݴ7❭; LFl&o>l[o?ψ1`@QZ:j\cb! )֑m㕳4:P bD,RHA  D,RHҾجۺ;)ZH, b b@ ")X b@klERR\.XHert˘ɴuTu͗FOƂuy8}ݚ&QJLq"[ew;-W`ֹ F5\{78ss<>F/bgY-Y͇O-:B껍YMu5w;cS&Η+EϦzORkn__&'6`q RHA  D,RH^#fXH LQhRRrDe:5woyc"1smu56!El9G"1Uio2FDl[ q XEQt[d݊b`P߽-!-ǟϝrY/(Wrz\a~еY-92>6z[0~e aWZփ"%6 W!/ʕ߷xS)WyJq>|vߟ~!bu.v0_EY|薯LN]|Ւ7l_`į ‹Nו!{fr'k:e#nc!Y-7A]@BLN]|H ͇׎y ;{Dʾ~q)|!0 Bw<~'+Zrߣ*],6\d#yR:_H j1SW@D]_XX,o~$: P,E)Z׺xcn_\< X OW筟2) iXۄf ]ML"+泚s'l׺/ߟh8Kҿ pcSw>6z5P9Rp3إE 1;,b(eM"eY98̮XJ/z~Oˊ}Vw;9̑\qE[F  Qer)[I`'UxUlexXHerT8 />6z   D,RHA  qKj~Su#&--ǟ϶/ُyﴌ:(y`-A[um=(Zr}[{LN-WG˙ׯ~gNSs)S6_Vw &BCŵoo/@Zuvr*Ԉ}W;BjpC&"CY 0"ykSwsU>@"6jMUI qX&e^viWDmp|pE'hDl:-Qe0 o??/{99n *ElVK:?\[vZI19f\?L2굮l`'"avi.V?q^, Pϋja1 U˝?ŒAD+Ԉ-W4ہeg{O {w nK0q/͇, ZOXJ8&29umcy{QI Ͼf} 梬KAy)Br0LN-W4E}?`V0X0?iD EuZ  )V</괌[GqؓՒR;b"׺;[G~+ww~u_׺+,Ssf*l}'^@TBN=կWk!so2r*Ԉ}ۑn-=e1^vZca:XVu[{p EluV6>%u,aWV?Z4{#7 Bm rE+W4ۛ7%|VK:6Y@|T:V!TeŃrE+k {a?x,RE֣8-_o$~3YfuNjmp*'1:imWO1I Od<<㶫uXHX~QwXK,|<;[?mwE|uՒ#A o#imrw6)#Ŏ1븱Gpu"vӵ>y!mW% @|EGfdrmtz]=x?߱n}l,|C`{sgGی++bZC )IM<&w#cbanz VƏضn}I{<>$TLbe"I1a1IXyӢqɴ(kBJ+oǝbq+bCninqVKJjvx|E3\\ɒfWz4"n6zE -WfrG!{i.Wx|r'lk}\^>= [h=֑G\{`~ lyī׺?=b{|];ޅ(FoQ7{?xVVKR)om>x\{ꏟh3ug֭ôzSS~)Uh֩"hvT6 )k[?((,tV`%ɐ݉^_|웱قQB8'eCqdfrC)K&B'NY0)?NB|L )fr|,W+`RHLrE{yu42c7B鳯K$rLN]|<~AK&WNSuڬ,4 \Mmfrj~Lhd͞ )&\S 09G0Ť(D,RHA EkwnXa `:D7㩱Bj0/H\flEWXJц0YDqh֭׺4SL#vg^fn}g ((J[: 抢ko #Wxm ؽث;/\0[uG{ǝO;[GC_ Oim/hggI ODluS[}Z,6Fgm,+ZKGj~/6Dmbgm=vKz<_7~'xjS,7f_):Y-]*drƷn6=fdq+b=<~ۃ)*W4O<,c+W~bW6Oߗt]&-0n6 _ʷs[M! #֣ҢfV?<+Gl[w]+ﰹ1vavyX{@". ֊˙Ҟ 0e"R*4ReaXy>y@<`R(vۥ?ZJ0__s|eZ8]vѻDW>r_Ev=:7"EQvڽSuX@m;[?wZ~7tZioĖ+RO~>kL ;=~rMuu4j9i/R7P=[ݻЬ׺ZXJ3Λ6{k&_Mm,]K0m|Çk/A|-n6zn]Yw6-~OT KGBN 줝0wd$C8 0pfCqyeײ+`" /eə/IDATWUk Z׻meu>]]]]]]^,@T"]V9X, @RO}-ĥՕ̌(OnSΣ%fr|rO W_Yq N;a1 +]Y׺ΐ{aT~7jUâOgggXtf}p޺b)m.AzAjB*Lf󳳳D"!>J$D,L3b 8======;; ,bpzrrTU'D"133CD{vvz`2bkߒ̌aoVU`Faggg'''׿y͍7oDFl` D,RHA  D,RHA  D,Z/>@ ")XF09D,כY.nX7ca{iiCpfffğj}HWaӳӓS0˫Ϭ 1iFDk}-K!HqX&5`? =bEXZ_*MXjW7 T٧ZU5\͚UD"!^+ 8:>~L&E֚q+Vv6lX[:;;{yyi-aUtNQ[|5A9D9VlyHSq_XTrD"LTYwb͛zyyL& a38m*d2y֭d2)Zc{+^i m3_R$uTȊ{Ś^]]Y7^;bX4ɬek)|Y!"YX0qW+̔+bͱbldUUnWJX,dmYm굢v_֗f^^^*1K&ΌS&38YmlI5ogT6np[j^i6\,^*#_^qb/SVoHh=aKYURjMaXZV$+঱KcXOq+ Uu 3 խ[ "f Tןkfৎ]g&K7N5StIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/service.png0000644000175000017500000001004710435550444021657 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y#1~ofpq!ɓ^?"ogxǁ +nF18@_.ߟĐ13=@xcEV{ @/Tp? '`'/PΠ  _?`(2gXibA|X ɰ `P8ĞPE6   xEf9 T'h \ +dg'^l/IJ@ H}d` ,qyP0u> xa" /0Bbe CO @Ē@,7"íG +0$ưC!75=@ppU@tq|I`'!#4s9`Ѓ w2ibH <@HG@[1+@|GdbV' #t @!X1L1 DEj #qx AC9Č@3~b`}bhC p)a0C,a|5fsn.I1`g:A)ģeѷ ?^|dE Xc0,op 2h= P ԥ [w0Xu&4'1So9,^|ߜ_}Z@1,UPBt,, ay]ޟ'OPRzTB31ЬL-9:1F ~%1}`z9Y 2bf)#oQ/T M(!@11D1F0h2/ch BM4S0#޻ό҅#̑b`V̐-,6v^`a3 7>3? F@ fhX~[ | 8dy;6Eh`.uG[2|Wb~#C>`!,DYiBV x9ؙ~A#}>6~}˫W(<#ZN oߟxs2U %C.UL,BC-TZ|@|ZWY `i ?{ǷI1v6f`e?~exlw+2<5bkVx`ڶ:J3A;'(N@;P31<0$jh\zjD$+?;fa+&ܝ@K ^c}vfhs!k[/"úWݥ(^<ݾ< yAIAʟ@10z"\>q`H}6?ll NhHb@lژY%v@?(vh{4b[o^ld& f65`EЃW pz^  ?iesex%A;VN`ee X< ȃ<4L_B=L w5 ȭϿ)B",@G-HG /tW1|dga8`%>O?0\va+yPA-Pi4ݼмˆAGK`,aUdxZ^akܞ?NIC5kWz~xgn W? b]]B~mNbd/m?![_ A ń&+[2`Xn?G9?I~"]q/?GPa%,Ĩ)/GV`=wa>ⓦjRK m0J3s׵ \m?߶6l\&Ŀm}z=h @^&(& w^0|zS=~rk~\Ytx{X ڂ?X&2V<>2gb~=|˥io.-`^|-w6e#gCaL~{12 ū5Ќ J_{B~ƌG8Fn7ЀxZ(A MhJx nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R:IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/house.png0000644000175000017500000000131110435550444021334 0ustar mikemikePNG  IHDRagAMA7IDATxOHTQ9oftxhcZ´MaI`.QF(*jD\D5AEAEd"mtt|#M?;-rj6s=/:O{{z|iGZ)SrE p&-v̞b,%3~%в֯eC\hqWQH$ vMp vU小'up$Aaz}~VzJíCICt-{b7 a՗d7dGecy=/&$P($sss,@@drW|Kl;Nx!08mcDq +@!谉$I,"e-1EM+FtXJA“Gڲt]GDQe9AWW$^\&/*#a&~?4AW~5/45IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/expand.png0000644000175000017500000000026710435550444021501 0ustar mikemikePNG  IHDR/ebKGD pHYs  ~tIME  DIDATxU 0Ü.Ӡ^%DiГˊ-чl3=)̷଻WGGYDZh)7IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/default_icon.png0000644000175000017500000000364510435550444022661 0ustar mikemikePNG  IHDR00WgAMA abKGDf>l pHYs  ~tIME 74"IDATx_hY?ID[V-*KiwEjT$ia-HuJV]\A} ¾*Ex6([[TdKڅ&&&3wfχs3w2wL"Ýw~93sɚZ1qgL)===l:e*x^ĪTx[HV؏y">~}<3;w Z#+򛿾hK|%\"Ye? BDRkk+^~ ײ=>-hO9,[6$ , $\r۶O,Fg֚ǡumcFyl߾ӧO"˱eR:u z{{`vvb Lw~vsss M(;.bah;,X ͂UӒl-YBPVmC:la033qF<ϫG>|X]4 ȯ8V Y"eY8^^nܹsCu0 BP6! 8H868h׹q/\/p{"\4F*$(f %9\244C2_ Ƈn|زx"?EJؽ{w(@IΗe&''ߨfgO*IoHk 'hdiDƵm:J@Ν;DJdU˙8sJa[uݺp}q98Dl>l6ߐӚƟ6/>_W4_ͷ>R ~ԙzÊy|>U}_مdB9|? <2.xGqIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_new_workstation.png0000644000175000017500000000147310435550444025016 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME 6ՖIDATxmMh\Usνw_N:bK-RP b#Bh(`;[ҵ+YPHш5L{>3G}{[\{QbP(fQjKnnn~,k|qm' ~>sk Ô0Hb{s^8K5jq뇈"&^Nc% 2%{],1m4I/EDFk4)Ø#g1h6i,ϻ!M-As~h? =iH=~'$Mh$N (HFe;8R)P(x9c4 Ir"r/"5ʔ+%ʕ}sw֪%=zƻC >y˽VW~)@Dj"[tIvݓl˓NhW:|efO.YZVޱOO D]A1~0|ݑ#3V%rnѾYmg/]" [o^E)9~Iu1Z5W.JY@jޏd)uIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_template.png0000644000175000017500000000100010435550444023356 0ustar mikemikePNG  IHDRabKGD pHYs  tIME+IDAT8˝jTQsF$I'2wP, | *A` ̝sI8Y7{\fNf2i|&K4wQosWw0-L'V ];@ 2B]rΘp60!=J)*ç/#ek C1wcx*#-BpV)59Y%eEEZX "U@ {߲"jʰD Mc@Dz|"P.AE`-Xk n}!FC z+]l0|CGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/zip.png0000644000175000017500000000142710435550444021023 0ustar mikemikePNG  IHDRagAMA7IDATxO-yKK_,Ж6@-m8`f=\EϞX; ~p`$j#;HҲm//ov/o=8ms^.2|Mz+sssߔu;wfL&f3R ,v$Iݗxwtdd$IrxxlFu A^zG͓Y nKR+"\CCC'''L&ubPNHָËvPx>MFѰ,h(e \y<=P'Dy* \gBMM{$t:)E,A-&0 i˪\r:جVފ^&44M$8SSSϯρG|~V+lLLLH$-x!E=˽UWWL&sxTM(Ȳz0 L2;;{7|/p8<>::Z["!"&[<IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/closedlock.png0000644000175000017500000000135610435550444022344 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME $84Fe{IDATx}MHTQ81IR*CPw)DZjpn (E\Xʍ"4;!Mgq8ӌSgu=\ιuo#mmᇭ͏Ȳf\zrTw^áDZq(*# ɟZ&hVBuEέJyi3 iLuNWs$uUxv `57 'ՑPc(p"D$ nXAT)y {ˆP_ <J܋mǀP- qŝ;_~ʀ@1Džڐ8ʅfps0 * Kpp!93@`5 *VEXp@5lLl4m-(``X12I#2l0ٴ̦:pg*V7mp)āݹ[IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/processor.png0000644000175000017500000000062010435550444022232 0ustar mikemikePNG  IHDROc#"bKGDiBըIDATx;08Âp Q(,8H‚{QHCg&~f}Y*']r 3숨9e`d!0$644/䂭***,*?fU B/3vttkR%%%"xCIyϻv-2ǩw mL5qZbCtEXtSoftware@(#)ImageMagick 4.1.0 98/09/08 cristy@mystic.es.dupont.comeB*tEXtSignature7d98d3510a3f5a072a46133f5d59ec2b? IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/phone.png0000644000175000017500000001024710435550444021332 0ustar mikemikePNG  IHDR00WgAMA7^IDATx{\Wyܹٝ}&Y?bb\!«( @*?ZQԨTH-*D}@BCKj^~,/n CC55ayVLg=ڂU</ mp=B|oع*<(\6ŢkklNOtLl~77ݟܽݲ׍" }}ρX! `sh65oN}M!q=\)DsPݮ %sP6;kA[ixAɇ?G__.m. C#yh Ib`7m۶MٲzUKyX-:9I+mhQ}DسWh`UA5ahƒIKK{׻x :5OcT/zՆZy)Y+EfY$Oؕ J~Ww,TW,_j}W''Jsh_kZmQD7%Zu*q` /zAjo.5[޸{ c00v퇽o{578x#v4*AibΓ&bm۷=/皟$| eW q}?`#@1[,K>VՒ.co3`Oo?qͥ'.:1-aq 8p80+׮4_{J3{μ b=-n[j[][dǼ\k=oGo~ͷdGWsҞր1a4ֈZ1!7spAk,NbݽP;;pmsS˶v|`kN>[ d(BZ|NpFZXt-Wݸql7Nl)}DHl5awm lR3f+Km?;k(/Ȋ>b9qVqReB`)stg)Ca?t$ Cr~"ð "qj-vk-Xcc&j[+"N%%\G99R ,$  ?On!RAWŗ`I`rRl(EqhovOm*E48ZPKYM, )g䖅S,?)mn8 ]撂2a/F:psm31;!I]yNers'*($yN! $Į]*1e(=8$!c=tsMb"3uj_kѩM 0;x-8k( i)ўTT*,5>++e2!XB!`}n+& +?8FtfgMl2c+t΄O]ȇ}h*ѕP t?$O..R(m u]hZ<쳔e0\Cϖa6q4^mG--QUVW}?|؃5]`":QZR-q沌z]Bp0$MS @*8ell0 9=7:AU, hvR9wݰR\*Y.BZ %RB_.ӬҔZLŲ,|ߧl)!,*iHfAJ^lR,l@.2`77}/>ꈅE[HAV =; ##yNٶatm8}S.W_}5JVeYرRdTcffqX^^)yΝ[&<8YƜ 'V%bI?Q|Owm;%ܡVBAJ<umdq4eaa~:A@ivv$I8q籼L-pm<Ǎc0$n4mir'<|pG5M9sׇ=<v}R A:B<'"x֚o۷tGaѠn|ji n3d!yHs$%& \ǁ8F!Ws |=Q/zStơV-MZaR u9{,{Ak} O=Jb4bj#gDV ZA .]$@/^טOZW--{.s1ND_~/~Z)q#IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/dhcp.png0000644000175000017500000001110210435550444021126 0ustar mikemikePNG  IHDR00WgAMA7IDATx͙yl}?N-AZ 4)zpQiIh iu%;V؎+KVlYEKJK.yW%)EÙ7} ~aAfsK/XZDLe/-FSx_W_uR]-ف-] w ܵEΎLk zq4jy G[wM۞H|i [nݵCܱw[zhΦ7ٹRU\X Ns'co|#yonǾ{=X:mkqaU\rRK9\kc|ץ|?<X-_i6<'o+]#sPZ<)1")!W)*~t2_+i /1P ry!x0oI~1dbrI 2Z(ePVm2mSTcIG{+k;BCDXH!^X*d1bZ0ơ9M8=.C͏?涍cZkK[9?6D9XF)v,(#PHcKsSUN7BXhnj"5Z&fTB:;:lh$c`X.!j}χv{hS]Y4#ZC-GJHdžuؼ~5Z*aD*1l&,S Ⱥ^GK NӇ0+)$[wn`Ӻn6> ۙ254e@T:83s/O`ZPD&䐤@XRdEnP*,Jx$HYN<ϓL 6 ײo5 Ʊ"ٺq[vn"7~Ls7$pK6qvt?KlNJ%6揾8B;Pcceb)NsezS<޻0dR)^Maq8ҚH^vl|}lS`kyM2Ό^9 r* -cN9Q4F;.Ns×Igعy-kV;}֥k "nj~?o!S]:K~B(Wbʕ895]369W+l\#eh|5DžW~S|oU~sϾ-ı!54NtkiT],UU6>=S(XXX(V"J1+Ut_?wIuR~Uo05= D6~z2ǑT0Hʵbb5luUCR~};~k TqTwNOPƵ2ҭH?8|.ܔKg6NtjT=/qP?֥8_:?։Qy2٥8vo~YhAZ7$ 0Jrih ?>׆I8lVWugN"F6*4*%#ӳת(~*FX!xin^0<#_1R(mP _(Q;?| ?ѡbz"*O?aT5mq/ikWg](G8G5bCI~#ӎln2zgyGJ{usf5]\rjX")+Ri逍ܺs=s"z̻̍ji?\6XڜϿx׏%ղi%R!0<ܲ}-$tbM[s>űRCJt*$*e8{y鱪+]xXvzb%Fk{LL8(V 8C= l4<)%k6[y$koFkpch!{ c,J;,B΍6mcll !%~ߓ|I>AKV#~ *0{iϮx)_ZIYKij0TTcUXeh1I; ђMXȤ]9z)7|.m=,*̗٦LZ}t* OAl4iҩjesGKSCE~J+q\3˦#_dgGgKog3ã'd<0Z!A 0HWvL*DX6:n-n&1Q*_Z%yDQ12P dBT(k-ٳ)3055ŋfΝc8y${Eӧ)l۶^RQ111sd͍*8}4SSS ϥ>\ `vvBo"`޽H)v.\` E~;===\pr [ošC[wu;k΄u/>>Z[[9uG%N76ljj_9r1z{{yaxxƻRJ|'.?Ժ7h|gAJya,RJ9x ޿qsOkk+ ;whjjj˥mWRhyDyJ%<Vy\xq`||A Z322pu[LM%b]ce_Ç}?I\uj\~fօYf[ _JZ t?QkfIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_new_macro.png0000644000175000017500000000146710435550444023232 0ustar mikemikePNG  IHDRabKGD pHYs  tIME#2IDAT8ˍKHTaxͦ%D6Ѣ=MS$f,A݉)E"**(qR%1%YmiSѓ1cjs3::{ZA-Vp}_'$o)9$e^k~_bXCT*h!@CD:qhJ!0$2@R 0GBDZ3q)4ˁeSA@2 C>h$(ö!cQֽ*wn H @s/O/^srTLO0d%~n&]JTqFhJ: /q M*f!۞cAt'0MSZDt"HLiLplI=pXW;FlqYsu445`04'm*.v5A3gKrc8Kr^)o'iqH F 5\)%FNS8u$neh9ш>V^+,F6Y@0ڇPRge2MS|;$t=XA9|\6Z8֧7]pl]RAX>M11a%4_~A6=ݗs5x>gϵe տ;m-N x޽N뭗xIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_new_app.png0000644000175000017500000000143210435550444022701 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8ɅIDAT8ˍMhTWsL&M8h*Th w u*Rt"] U+"1V?(4񚙛3s=ŝHP|/sx ,qf v\>T>EY"ע~ h6[ZFU9Uis]cgo:o"56jމb _s`0`'wS/; l6C._]}P今}N9Tg9vi2ա]Gd6/^GwϗONh9Zک^x]lqG `3'(7ѬghIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/netatalk.png0000644000175000017500000000707210435550444022026 0ustar mikemikePNG  IHDR00WsBIT|d IDATh՚k%Uuk9޹` 8 OAA5V Ƀ1&_Ry*$&_b"I$$Vh "{dqfe<{|}=fSOsvZ_k13!"ͬʕΧ+9DW3V:Ewv TV:>V\? L4^Enz#nU9ul^@ ʌŎ}[`>˛kxGԷ ƿCOƈvzܣ9pc,PG`z{w7 ]'09 ycz 7̳~ZnW9mSN(]{n}BȏS6w?[ya_#ndaqbgyΧ_k>Or;/]L핞h_s*u|cKmZ޵N7y,17Gee) "4Ÿ}3ٳsUpp u?yJPư %:fj>t9Ύs%'7nbn 7| ;Ohc_ 7}̘/85LMtwD "D2Y\8̹]W\R$u~}l -*h EzRdy@E13C: D7C|}WrbCiDABYK=1BxT1^.q@#O}qLMOq9ᜂf6UU7sտbAUy [y'8vz>p dyNR"`fQI`~b7Sʲ<¾/NwnW^ +}_1/_;n7û5buc "d d@(V;TBUY#Dž@T*o~F.fM%-fsPuT1QC Q q H@4ӫhw*OR "Te"e5~KnN84V[n6I"8J[e[L*#ш1ن0NI"8K]:pΈL={P?9nØ@YXژ0>dYx^G/!J4)YéИѨz)+|(M!.<{;'z&y^E4ڣC%Nn#L3UkUX=aҎ́ʠӫ"sFy͐h84VMΥJ9bӏ kO;hQ Jlve4=30J>!EX9y=|'DAW\ęK1\XD *|Ɓw3ވ %zSTFtP;EUhTqm$RVBdBxЀAaG}M'"hNb-v.qY 4 B%'Q$e?`^]N0?*4Rw10$*96 RJ1*4~LJCT *Z'b(OUvY{-l׫;[j|FUhS"qYk Z0UĘBV@!%=>8J#ͨ #:^:@wqU/B[b$@#1bDX@W &u8B2g>xBP 5,,Ź6ϧPAX$V} 6o=K6VI9֥YrURE501 ާ, ̣S|pZxgDkIzk_e73h B5E$=, Q)L 1P˕X$W\H!.SOENkYsxz&y+ ̳XR8 <4'h2%F$6 J(~3gۙ};TV̰j&K9Ij&9;W{8yiv&'瓴kyn.v|o%_M{¢.AE(# ={HЋ.=0~{Fj 3~l@c(ZwI~n! Pz}GǾ#{GwˮFaV\4$2}rgEw%{t^; yNj V{9B6o+ދ9,/b/?6n9KUXTA/8pC^dWͬ'̿?63j Bʹ %t:oCӚ*o"&< JpJIJCA !*xJGFk2cxNT6Zwe+~@3zdpUXE<%QB!8$3(y y Adu}eBKir7*X51 g8nfS5:C_΁n4<1ȲeL RnKw.yf-fr{/;dg)8%-C}WU+UL5< eF hfؘ̠Әjjªl期ǝ, 3F{ 28'lË+{t;|Cy &@J+ B3@# <{4 cW;~=ݙn9?F$vFI-]{|6`,!=~3[3g\uK,৿dM!:X<nߍ {jޣKu"YLz<)̛k~V|D6pJ?YvXY1RyY1r%sq#؝IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/mailqueue.png0000644000175000017500000001004410435550444022203 0ustar mikemikePNG  IHDR00W pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?2`ddd 0 K(ȮP@n31iz pq9Xi r=&-_ot%dN R`p:NϽ {G./)H?)IV0`V*n>W@xGҭ[M$ 4Ks/@ye_x?T~AoziTB!6h9^"1~?^~ogo}+p(F_/j9_Q攈^"%8? o`ql?!C]e%N>IGu&)& R<qbA~1d`X Exr.ɍ%ǁ߀7z nb!6ٹsL8a? s2|,LG(ty.`0 Ku6< ]?P51`T3+VU2eg|x < 0ft4L b7 ++Kz>KFDdf&٣x|da@ h~O ȖbfVfxoi^bJ#"LbB6B|д#80.0/C~r/-#`#Nr s~e`8u>{A?.Qyŕߦ%y[(00 `С0ǂ1$LZ 5"\(I7hR?tգ;_; b<)g<2ExF(bA.!z& +,fB==$p|3åg~s@PT{z!W}yW )q⚪ LA~kyVVeӮ N?e8t>lM,%L`ʷ<=ꁟ_A},:x  ܜl L @<QS70|ffH5aOw`x;k?1La I ߿`8pG7z; >'e; 剪xr 0|ɯ [nk2Ć1K hLq+LJg`ӻμb (ː * &4>aPc ~ >Sťy|"2,=22ǰCܜ] 11TVtLYHa@eWc|mZj yu#0w60lQ SRe+?_A?.' n2!#ܒAM`Ab$ vgĹ n00q2[`g0%N?[ t4ʨ0I @X+2hWNdQWJ&؀׳7gvdTd:- L1|a`.l_@}𗉉A\6wafXw)[2A%@amJ@3@w3 lVqUS#\6x~zi> }vV`)$zL!? 윿$xonb` 13z@ʣמ *AɠZ p5#d`R=K,؀,C_hE(& F6Ux 2؞c`rk1pCv_Xv۠? Ps96r ,B-5ՔmQsg{ᎆA+Waﯿ /cه]}e@nJ1X n%z \`lNAr4064Vo]_w/:#tXpX nb$a%6j=L]TTe@tǃ0 o6_z0{ϹP#;99 @$NĆ|nd:0'qОxi'w{w"9#ڈ @19O -7A]JGCWgUq9 )cc.N??~3<Ὧ.>y-gh!x0w y/tDj~;O/~Zyu< d֧o矼>w~zA@03"7t 7m]ݕ DyB[ko>l>riɽwpÒWpR @\^0Ï_ϻp{١/@CB7)G@Q_9 4Et@Qbay,bcJCʜTYs7@1cP17g1IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/save.png0000644000175000017500000000112310435550444021150 0ustar mikemikePNG  IHDRVΎWgAMA abKGD pHYs  ~tIME   A IDATx1A ll2)N X)>"7IU:QoUYD9ŝ${ 1 ط緳!0>1pGBBB *Of!xqy{{{lp849g4Ecv:HUU]~/3uzU'߿hEj>Pz׼ck<@~yHta*wr,9汔8|[@*«޼jPup4'O+9iYju;PDU]9l& ~DJUL .YaZKݦhQ.dYF c&ɢ<OӅֿ7Zkk-YQ0c/e%I|oT S*tW HBi)oDXNc'IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/sound.png0000644000175000017500000000160210435550444021344 0ustar mikemikePNG  IHDRagAMA79IDATxmK#w?$!u!DBmͶC!BڃЛ^RDEdX ?i%th&3qn;{^4555 z].r6HCX k&nvS,1M4T*n x!|!kDAY0 ]1MUUQݎhf&?*[@vMV$I!u^TUEeE!L室x<uUU#`/^ t:xjL&_D&a48;;tZ4 au]$ ""ȏM$i^e˅ndYCkKqʊpIOO^˅aݑ4_NNN `fP(h6r6%R*`||l6{K?>o, '&&fdd}RmIj%J%3  Pe;IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/hardware.png0000644000175000017500000000150410435550444022012 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% (DIJr啗o_h(ß @@/?D _֭s:*Uؘ9adw//1830p13po n@AJBb3  T=K2ALBK %٬/>Ǐ/ CaWό?ޱaɠiʠ݀A7 , 10o <\j $1<b5#~&1 a7N @,a231y&,wj ߘ00rs1|AWALOA߻@, ve R _0\8 ;/wx33X@ E 5ca5 g'pex[E >H0 #-) 1ߏPײo;#3;@L [of( 66o >

    l@ aπз1?Ёf. SA.QNj(@PX A   ;Wfk(`0@a r&` þ4f0@a5* ǰ_[KWB^290W:FȆ2|o3@1Ja 66EEpR<Ǝ=ď_30|33(?Ɗi8@1.Ca>ȥ C1/"`B"  \*h7נd1܆AleFP)EL⇆~e&#nhb8(S@?G_c /AYqo|Dv,ޟ]lef08%] d?-@fJS`K)  ԥ3 0&Py DWM@`.EyH 4IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/ldif.png0000644000175000017500000000536110435550444021140 0ustar mikemikePNG  IHDR00W pHYs  gAMA|Q cHRMz%u0`:o_F gIDATxb?P0@PRR"ڐݻw볱]7GUbį_~^^^ĉ۴9޿O -غuk1 ?~t~@1D&!۷7 ..SW^1<˻;33޽{"̛7O\DDa%#  RRR /^cfffmA@(<@D{zjnݺuǏ߾}c`<{_Ӈ݁F&/<."IIItttzɓ'`ywށ1($# =pʕ p1Ϝ9NyP3ÇXXX$%%X~_R<@dy`ҥ 7 {h>a`^\\ l&@䁂VWW_4K9 ˗/{d?< AѠĞTVV!{ HѣG7CȈ,#;Tbݿa:`q y]]]@eh3s6<+@#r#0wh[[[{߾}p.b!k׮*q<,Y\ 222>|.`m(] u` j=2? bh 30:pX @E&,= 呝;wC4.AwY@ k?S_`~@p>PX(y$ AL 7ưHXhPhjt` Pc T U0Ê}'{:5U\RqB[mPRy| @+|Zi+<3Ňq5 k+ܫ$SU(l4( aw5^(Vv0, _P Ho8PȡAI4 ?P:hFXnp_5 " ֶ( r (ŋAX t7 @ 0&?9D`l0IJJa5+ФI@ d{T?@AfGuP X APY?q0R{C!y˗/F(`$ Ǐg|CP+PYAL`6(}AB f6AiZ,&4C00aP?;V*ԁ<`Z{.(OB}P> @gE7y`ūrZL LH?l<{nE"@AJ"0qXVBǠvLÿ!> bEv,aCN`a'WdO>;ȡU%L Ah%t"/ ,5A<\{{X $L l.<߱>%1 )aiABv(5a1 yP>>@1[zS0 wa0aixX L;wnR @GVe#r FGzA?px[@:K00( "(݋Zɥip?@A T#ek\'`1>/a:`Q( pQwnh>Ăn uA y(ކGd<Լrؙd,T ]{?Gk|`0iaCGhDj @ਊa9yH&DN:N, BHOh!x I`P aa=#9Q A!Ќ_P ub<@`ܻAx/jgA꣢vQc80sIjh`H8fjA%(h A-`~CEj@@;*X~'TdboAv<'gj  DIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/list_new_department.png0000644000175000017500000000131510435550444024264 0ustar mikemikePNG  IHDRabKGD pHYs  tIME $5)RZIDAT8˕]HSaxvvvΦDWQZ4}.++ꦺQ (Ƌ!U`AHPAA7C(̘4cHgtN.έz}W/Q#)+tAсZ5W<ƹ'uOB9MY[uL&E{(#A"qq43gkjS{U\B{L@=\Vƀ> &8v'=5^-MAAyYolad7v >!y H4! )g L$`CV Co"!pj06 Æ}|DCGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/encrypted.png0000644000175000017500000000232710435550444022216 0ustar mikemikePNG  IHDRU_gbKGD pHYs  ~tIME  NfdIDATxoUU}ιmi{)!PS@#J8`d!ę`LL*`9 Ġ;h,k Ԇ>RBs9gK _w[klv333o*XYYPJ}gbbbrhhH1s""G}Q~KD(!k:uG?|0DD… P͛7,//Kgt|ffsN9 XKhoo,aș3g>vy366x[vH[ǵ$If099W;JsZ0Io;{XdYVSJ!"(dl9qyɋ(, pT3Gb_Casּ4cJ ^kz1^UӶqk]t(kC- AEoCJwrе~#$z BP@s#6Aaut6af[CL8\AV܏(wBjKheD!n|f6wSw]%2MR JaPjh Ie,-au ?Dz~͙W=-`grsȋرűEz$_ݘzu# ‹{ág#_ȵ'ӞBU*p Jpu9"x|b 3(ل1aj0}GZ) "0<8Xka=%!`880Ll6y^T&ҰTqc8b6z6{TQAʮJc>Z(3>y4rN~nFv]HYj2$"Vz(ۚYCZ&Ä3>%>^^~%̷=1WubIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/true.png0000644000175000017500000000122510435550444021174 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<'IDATxb?% (8Qc@7 @2@ĬHl(A!A X2lj okȧdP}گ? ?YB/oV qj $dIH6]'P"@10" H3]"rTW__WہÀꞀOS ; B׀&03$0Z11|88> F1  F " @aC/Gpr000r10 0`^1a8ph:P"A %^`` S @@14%$@ xjPM3 g 0f6Or n5]ex4ؿU |i X?=L ^5S(\ `N~` /, {b,HIflb47Ź QU!6IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/alternatemail.png0000644000175000017500000000157510435550444023047 0ustar mikemikePNG  IHDRaDIDATxڅMhu|dcfv&nHi"ڔڃR%q(FփTb{(TJ! R")YXj$a!eH7Ygc3u6UAz~W5JY8z}]'ߞ?:ߌ]S FWWeeWXXXyimm{.^̊ ağڷoLF9 Iޭ`%`tD"e%c C$ ccC($ۊ޾]: #n0_DBt@[["nY͐$93eh .]vDX]y-nY?@)! R"#pc|pp Q vODU zsJaH[hXRd ]|ژ^C+ Ttt q'iV~NnَڭVtuZpmLO`eR 0~{3)d o>a {KwЛ샦jhiA5FMM2<-]JK8O;O|$* -װ[C0Fǭ[ƍEu3֪}b:dP 9 k?fp{Hz}%67T睯 !)GԓzGIJ&'|7cfS. Jqoc:obޜrs[ WbAP߫G/8*s+?Ծd}wt:A<*%ıN3zoՋAG7/|b'"IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/openlock.png0000644000175000017500000000163310435550444022032 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<-IDATxb?Crr3fcccWVI?Û7_߽xߦ_έe ('9?*M]] 4O+-۷H0}7BƞD7a͛p?~SWU0gOH[:o @L ,>XZ((3[am]O5x֭S@Hӧ& = @`>|2@AEEV͛ _:eee:uֵkݼyANNLO = @`/UNd~^_¥12,'߿1U^  Z?R((L~K?@563 "L'&& 2`JL|b``ebU@afo&f |'I}{Y lW^Mt!E/+|a`x>0@ x t'P=@(hK`ûJl?@o? adhT ?@ R؀ I FmA5A "/$@ ف @?i }/$llwb?Ff(A d8wc Msn'!IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/sort_down.png0000644000175000017500000000025610435550444022236 0ustar mikemikePNG  IHDRB%}bKGD pHYs  ~tIME (8s;IDATxu |? !X$W-< dϐeh7fȥ=f"aIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/select_terminal.png0000644000175000017500000000141210435550444023365 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `!8` `wñC{ggrIP#p=ޣ> n$f@gjfA|p!Bǃ8Lve{vybAL<xpEB?2XvN6&o~t;Ao0Fnj )rf$pR֥Ei_ {԰m@}~uEI\ ټ]r6_;ɘmpdD2EV/#3(T@(㰙 p vO'p(ثA*|`%ԉ9M<+&/PPK`x{OV Œajfѫȱ  kfB9;7Q>&4%ƚ#~ ~JZʦ vNַm2HM# -&򤪪zVC86vÍ&3]F婧AnmQUU@QKdX"=QHYj.olȩZdiIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/mouse.png0000644000175000017500000000135710435550444021353 0ustar mikemikePNG  IHDRagAMA7IDATxuKQ)% M]СBd".HA.y!P;"iQQۺ*&owg7wf̼5t^=NWDP(044~0'TRGGBzvzz$볳eQd&WR1sNN2|p.0222ND! F&GݢyZXXeJ`YRU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]ۯo@du [[0&0p=Ky6Yh݉J'N.<\]^y R!l<=q8JAEeVf'`lO{&JKu6*'~{~]VP[[J \v=Wg!tr:2675k=uu Y$x A(h?+=4e&?{E1AihNĎBc-ttR)d(.@ސԏIYɩŐd)[]ikZX;>[챸pa8o(Ñcp3 ׁ3颇; fF57wsWyx\ ?&yf^?!`4֊ݝ&n|O]ilnX੩6 Z.A}\Rɯnm*'Lv < ,9{h!bZ[/CXrv,}yPi+=,oSIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/hdd_linux_unmount.png0000644000175000017500000001522510435550444023765 0ustar mikemikePNG  IHDR00W pHYs   9iCCPPhotoshop ICC profilexڝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEVRrҺpanh39X H_P^TA@5Ta-CSE3?~~у|yٵWMR P}i$WO12eg`ggg`eecn.v.2, ) lȠ& 6VV1?nnO9 9SNII@.FFhE9d0!?~`غ~+gggP]]]'Ο?lf(`ضi%+oؾh7b8}`=AFZ݃,'$$Ġ |gXf Caa!'N`5kÄt`!;3AP *oHm?@G0m`hf Fh2"U| U R2cr7'''0pYaa:}}}6CqAh V%@1Ak`3 x͈HLh}XI [͍_0;wa) Nb8x X/ hDzj @@=+cH{'=}&|1 d{hrd3͛wFؤ~o`s3` ۏ :ԋhY G%ðy CK5Lہ)no!_>^Pǀ ]i쁛7o2\t XQE`#n 0g)ww>/ (1vFQQD h`~*p. { }>8< N.A!nhhd8~$8_ xcO>M`I􍡬,a, 0V  O~*KfpIA./Aؒ#RaBJJ'O@/_nݺ+0d45h "pg~z+eŋ$ފ wN;ÞW5_!V1&;8>}!rF `?0A׮^0ZW\&ǟ f$O8j0,[@a>>>9dA-^b޳gmUU|/bWL :&O@[@ tB`L ^( % &0X[[@C1g;T2Ao`%'l2A&1q )ipc`ǂҴPax7feecz"ׯ_={ɓ'@1e.::̣ RCEa~?(d}ZL@ϝ;O*&$G";0ǏPj01@C0ĄV}_kϪU!vi珟!:QW`ĝ ? 46v`''@ ( /4yfffePSf PK3([˗f'$$88yE75TG@Gn2hi(0-`KBk.1\p6hcרğ}n5'>Is0qKVЮ%+,>~$#FFDݠu++k4͡=kO>P74}nO|U8x\-, UhШ&+W.cALgƙQC]ԩ /u@5y~8~Ǐ|gua]KX1*/GNFr ,`0yR]޽ KHt1CɓvihFPU`@y@XCf70<{= rp}`q?]K@ɰ{{E7/fwqD.l͑թeprfx>&̰/ (/}w*~awgп?0\%X|VIπ @r .TT 0@Lpcʕ}229|X1ke8),`+u+W2e;кvȧ@Sg\b(+`g;Ч_@j_`QAb9@[#@:C*)]K'l_<}fm)3 v }+ǻE Nc}* 3 d`@ˌUWO IlO u?N}xan&̰ "wyR\qrsGK!Vmۮ2\t{'} , d]bdjoj>$1@Q2cRNNo~='O.gШ f$2B  F*tpp+˟{'-sh[CG2#o@,u[hNy\ BIENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/reports.png0000644000175000017500000001031210435550444021710 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<\IDATxb?PBb999`cÿ(A//P ((P//߿d$2c9Z=|`222ib$%`z෕^u`O_'1_=<} P7 M01Ɗ.w/1z`cI $cKMQaL^=8 XH?`]|`G3113033i&&0DE%E$Z@5e`300`gay 0&DB Dt0a߿ʸy+88<81fffX{^BP4s C}ᝇ8(@,tP\!7CB{)㿠f67Y4+8d. gdjK+`L@=RFԦ+OFIp&g֓e4WgҖ`bfgNR{@G$'Px|8dF(F o'AIdZ9\&*@pH: \~n&?zIkZ<($!`_X: )> @1*VAH?R'ԬA)@-[X @1(  DQ{S+m:wBm֋O+sLCCjwj!9 !sc!gZ!{;C萷"@jzlp `66oy!09=A`f$F mP U i $V.!L V :ZX׾o Ó]"U$ ,(:o?}PG\cn %+@(RCMsg/ T9iQP.R wKm{@X*L?$UZs@\6'9VBd tpy ,,l$% :8R4#@ax߾< l; `7lX`fe` 0y>} ,*v0&fDx)p =}@XqT2{sWu]Nh9 4`z<ؙ!l@ꘁygʱ~| &l>;\ #7-`Ɉ{& i`,4zXS 3yȘ'aVY  XA6&fL40K*Fpi'n0K1<{AV^Ґʈ]:Z<ˆ%.mZϟ }bf&_.`pPe,`Pꐀ/PRBZ^;`p`ȳ3|fbp3AI hclR @K@`onn\w!pi< -Y XŠ3#fI72p3Wɠ3\ps cz pz`ٲ@O8l^эZfj0Ap {0h)K}`p \ @xG怞Vl+ñM[,`8q2?= ޾p5SW0<~AOGܹ[w ZMMоS fPAZش a#X(,? GnE`H9x1Jn{)xDNAA>t<&ɟ>}pcU5E'7+p+ ں kV`xC0D.bP dsq Ë ,@O𫃓*,XR@46zE5G.\pc`q0†SPJAEMQX`ecfKax|+% `v@B`FH҂R'U63h{IB@}20i]ā$'PcYCLj @x; 0Hbd57!LbZPO0= &䤁nb Ckf} ßWW W'<}$XHf`N8@Qh !9-e  O| 8 2n&cR}@-U+($'h&C) 1--f@XEKNB c4ڀA]^PVp Á1! [D@Q)UFԡE?,ys O.f89&` u!nmE&ELcD"$O\ ^Q>`@d'!?U^*Nǣ':& G&AU}PY8xÅkPUq!Ñ@=Oq `%;_ "}m4$G6/D .'?p/ag&@QP>'G %867G^^ ą`3WArfMHA FX tu<b~Yd[[=C.36B֛38q Аx=_/r2 =41F(fB@__#) q40& AՃT)12ˋ38p%<=@gؿkOkjJ3890 r \t+ٳ}ogM$5 Xho_L6i`ן۶]_X>9nbA`4@[ρ"? Ac<J30< @* LrTOg`Kt8a|lؑH-ܿ AF&@6029޽n818 R3ɉ< yFF\шɆRAĎógAyA &$vÇ//,^./CcCEпa|P ܽaɒ3 oT<^|&$3() !āy0iiIsp%* X-2&d6rD<$p+j]0eJR<@Hy>~~H@֟~8f&&vD3@ʀHh ___O Ǐ?rH B)F>}߾0P)AVv/jb`ceab~V66DG8NC=$v 31@!ǀW|g,߿|3|o 1q.|aFFZ.iz>hw,B 7n<a03S4 $a= |x@% pez{?*?.z;UT`yT&C!;w^zhyL7N8c`!.ΊXv50XBc5ۗ޼x?y{G:8_@RVu к P̐İaMebֺ<*B3|xS@S lw ?df9M'Oc8uX **V;I@<Pp038 l å^Ex ~gxɠ X9Aރ:H Y B |_ ^af6*9,(@ <@y `SzP 21A0 o}et 7򓁏 yK f8S4ol < c5X<֔O0()h- n| 1/  NV Ullj(O8 4ܬ<7~`C~د!WKM`^ϰn˭@\KQQF @ptv;/]z*f ;#'( 0\L& ,60?ݻY@ؼcU:l ̴??`ǟ.y>```v50,H@:sÑ#>Ą!@]IfAl>F&?9~f=t`1!3 :L0mS wa w&] 5c@i764% Op!y"1D??/// -<$]?>!g R G(?kkKK3V`[y\TIXY)CbX=¬F9J* PaXó_c=gxr.6` ,B*1` } + Þǟ~dxPAKK >@!BnzpcK!ye/ ޵ȋ'7 e>FpbF=^rޟcA\ᝏ l G9@$ RO|= }A%)X2%-Ǡj^>gmIy_%P01T6YPM?>O bbl /~D߰p30;Uje`Xq_c:peF`ؼ`d -PevS,@!KKEc0k3,Zt`>`[%"BX?b|f`X[* 56\$ n> e `y 2 * a@Po4)HP: >x|eAjf `mn1󌁙wt:(1+(.9j b`l}WT x 9 0Cuu Ri)Ó˗/d8LB1n x #PGׯ] 5d&@ j1TQ@A[U߿QMC r%22 @E 3030HJBh "c +4 3l00=<a9  u b r @=.]b0ZMIIn [`āki ዊ20DD Pw:uu a'X*@`APFcOCV3/%̿,`4@2TS/Q" @~ JQU ffF>`&?( @ L23ʊ""_{oA?@ > ?P#27>pj0@ > cb :oBj. @`20? +(2DqH H-T|;Ќ.Y 34(psAT00̝HNf`X`ǫW ~<2` x!X 20UP PwC !B)61* BC/R@aK.W363oS =B1f0@a  ^-!WMbx} iUM̽IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/images/filesaveas.png0000644000175000017500000000234510435550444022343 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<wIDATxb?Cnl  >C`1A$D _4-O'H X@:X(3yyYi{g0s*y"w=kd!H?ͅM`5 _;+Q rd1 ȯePn|?_?N0/eaZ[ #/## R_20u0ػ1y_1} X@q+D3dȾ ߿chG\ba9;/J\x X@./X?Ah1P?'718پerG 7s/|rRY<@B?4C O *͟3?``sa 95 @ @噶3a(2a`-.J|ſ@1 Iv LA"q fEg.a'~ @,4r)eI&JV, t-38ܿ#KF،aa, Y 3 J:? &! dCAAb/ axAݱ >b`A 1D\ Q_'ph ] "C r >`=8 0 9?4c00H]7(#LK203>fPq%,[X> 21᳗`PÔ~?8 3~D@ Pj i@C>WV ܌ CeA  `C`"ۏ? ?˃ߠH4!,(`DH \278wF,@>;A`bܹ?j@287H=@3 〦?NPb1j08y#8200C1c/@@<5@+[4IENDB`gosa-core-2.7.4/doc/core/de/lyx-source/departments.lyx0000644000175000017500000002021710442224551021323 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Abteilungsverwaltung \layout Section Liste der Abteilungen \layout Standard Die Liste der Abteilungen dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag \series bold Abteilungen \series default aus der Kategorie \series bold \color blue Administration \series default \color default (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Abteilungen geladen (berschrift: Abteilungsverw altung). Auf dieser Seite knnen Abteilungen hinzugefgt, bearbeitet oder entfernt werden. \layout Standard Die Liste ist in zwei Spalten geteilt: \layout Itemize Die erste Spalte enthlt die Namen der Abteilungen \layout Itemize Die zweite Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufga ben durchzufhren (Bearbeiten, Entfernen) \layout Standard Die vier Knpfe \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset , und \begin_inset Graphics filename images/list_reload.png \end_inset oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset : Zur Wurzel \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset : Eine Abteilung nach oben \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset : Zur Basis des angemeldeten Benutzers \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset : Aktuelle Abteilung neu laden \layout Standard Es ist weiterhin mglich, die Anzeige der Abteilungen mithilfe von Filtern zu beeinflussen (Kasten \series bold Filter \series default \begin_inset Graphics filename images/rocket.png \end_inset am rechten Rand): \layout Itemize Nach Namen suchen: \begin_deeper \layout Itemize Klick auf * zeigt alle Abteilungen an \layout Itemize Klick auf einen Buchstaben zeigt alle Abteilungen an, deren Name mit dem gewhlten Buchstaben beginnt \layout Itemize Klick auf eine Ziffer zeigt alle Abteilungen an, deren Name mit der gewhlten Ziffer beginnt \end_deeper \layout Itemize \added_space_bottom medskip Schnellsuche (Textfeld \begin_inset Graphics filename images/search.png \end_inset ): Geben Sie einen Teil des Names (oder den ganzen Namen) der Abteilung ein, die Sie suchen und klicken Sie auf den Knopf \emph on Filter anwenden \emph default . \layout Subsection* Abteilung erstellen \layout Standard Um eine neue Abteilung zu erstellen, drcken Sie auf den Knopf \begin_inset Graphics filename images/list_new_department.png \end_inset . Befolgen Sie dann die nachfolgende Beschreibung fr die Bearbeitung bestehender Abteilungen. \layout Subsection* Eine bestehende Abteilung bearbeiten \layout Standard Klicken Sie in der Liste der Abteilungen auf das Symbol \begin_inset Graphics filename images/edit.png \end_inset in der Zeile der Abteilung, die Sie bearbeiten mchten. \layout Subsection \pagebreak_top Allgemein \layout Subsubsection Eigenschaften \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Name der Abteilung \color red * \end_inset \begin_inset Text \layout Standard Der Name der Abteilung \end_inset \begin_inset Text \layout Standard Beschreibung \color red * \end_inset \begin_inset Text \layout Standard Die Beschreibung (oder ein Kommentar) der Abteilung \end_inset \begin_inset Text \layout Standard Kategorie \end_inset \begin_inset Text \layout Standard Die Kategorie der Abteilung \end_inset \begin_inset Text \layout Standard Basis \color red * \end_inset \begin_inset Text \layout Standard Die Basis (die bergeordnete Abteilung) der Abteilung \end_inset \end_inset \layout Subsubsection \added_space_top medskip Ort \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Land \end_inset \begin_inset Text \layout Standard Das Land, in dem sich die Abteilung befindet \end_inset \begin_inset Text \layout Standard Ort \end_inset \begin_inset Text \layout Standard Der Ort, in dem sich die Abteilung befindet \end_inset \begin_inset Text \layout Standard Adresse \end_inset \begin_inset Text \layout Standard Die Anschrift der Abteilung \end_inset \begin_inset Text \layout Standard Telefon \end_inset \begin_inset Text \layout Standard Die Telefonnummer der Zentrale der Abteilung \end_inset \begin_inset Text \layout Standard Fax \end_inset \begin_inset Text \layout Standard Die Faxnummer der Abteilung \end_inset \end_inset \layout Subsubsection Administrative Einstellungen \layout Itemize \emph on Abteilung als eigenstndige administrative Einheit kennzeichnen \emph default : \layout Subsection \added_space_top bigskip Referenzen \layout Standard Unter Referenzen werden alle Verbindungen dieser Abteilung zu anderen LDAP-Eintr gen angezeigt. \the_end gosa-core-2.7.4/doc/core/de/lyx-source/macro.lyx0000644000175000017500000002252610442211230020071 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Telefon-Makro-Verwaltung \layout Section Liste der Makros \layout Standard Die Liste der Makros dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag \series bold \color blue Telefon-Makros \series default \color default aus der Kategorie \series bold Administration \series default (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Telefon-Makros geladen (berschrift: \emph on Telefon-Makro-Verwaltung) \emph default . Auf dieser Seite knnen Makros hinzugefgt, bearbeitet oder entfernt werden. \layout Standard Die Liste ist in drei Spalten geteilt: \layout Itemize Die erste Spalte enthlt zunchst die verfgbaren Abteilungen, dann die Namen der Makros (alphabetisch sortiert). \layout Itemize Die zweite Spalte zeigt an, ob das Makro fr Benutzer sichtbar ist (Wenn es sichtbar ist, wird \begin_inset Graphics filename images/true.png \end_inset angezeigt, anderenfalls \begin_inset Graphics filename images/false.png \end_inset ). \layout Itemize Die dritte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufga ben durchzufhren (Bearbeiten, Entfernen). \layout Standard \added_space_bottom medskip Die vier Knpfe \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset und \begin_inset Graphics filename images/list_reload.png \end_inset oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset : Zur Wurzel \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset : Eine Abteilung nach oben \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset : Zur Basis des angemeldeten Benutzers \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset : Aktuelle Abteilung neu laden \layout Standard \color black Es ist weiterhin mglich, die Anzeige der Makros mithilfe von Filtern zu beeinflussen (Kasten \series bold Filter \series default \begin_inset Graphics filename images/rocket.png \end_inset am rechten Rand): \layout Itemize \color black Nach Namen suchen: \begin_deeper \layout Itemize \color black Klick auf * zeigt alle Makros an \layout Itemize \color black Klick auf einen Buchstaben zeigt alle Makros an, deren Name mit dem gewhlten Buchstaben beginnt \layout Itemize Klick auf eine Ziffer zeigt alle Makros an, deren Name mit der gewhlten Ziffer beginnt \end_deeper \layout Itemize Komplexere Einschrnkungen ber regulre Ausdrcke bietet das Textfeld im unteren Bereich des Kastens \series bold Filter \series default (beginnt mit dem Symbol \begin_inset Graphics filename images/search.png \end_inset ). In dieses Feld knnen Sie beliebige Buchstaben/Ziffern-Kombinationen eingeben, um die Suche einzuschrnken. Um die Suchergebnisse in der Liste anzeigen zu lassen, Klicken Sie auf \emph on Filter anwenden \emph default . \layout Standard \added_space_top medskip Um ein neues Makro anzulegen, drcken Sie auf den Knopf \begin_inset Graphics filename images/list_new_macro.png \end_inset oberhalb der Liste. Wenn Sie ein bestehendes Makro bearbeiten mchen, drcken Sie auf den Namen des Makros. \layout Standard Die Seite, die nun geladen wird, verfgt ber Reiter, die im Folgenden nher erlutert werden. \layout Subsubsection* Generelle Informationen \layout Itemize Um die Bearbeitung des Makros (auch neuer Makros) abzuschliessen, drcken Sie auf den Knopf \emph on Speichern \emph default unten rechts; Um den Vorgang zu verwerfen, drcken Sie auf den Knopf \emph on Abbrechen \emph default , der sich ebenfalls unten rechts befindet. \layout Itemize Alle Felder, die mit einem roten Sternchen \color red * \color default enden, sind Pflichtfelder und mssen daher zwingend ausgefllt werden. \layout Itemize In der rechten, oberen Ecke findet sich der komplette \emph on dn \emph default des aktuell geffneten Makros. \layout Subsection \pagebreak_top Allgemein \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Makro-Name \color red * \end_inset \begin_inset Text \layout Standard Der eindeutige Name des Makros \end_inset \begin_inset Text \layout Standard Angezeigter Nam \color black e \color red * \end_inset \begin_inset Text \layout Standard Der Name, der in der Liste der Makros angezeigt werden soll \end_inset \begin_inset Text \layout Standard Basis \color red * \end_inset \begin_inset Text \layout Standard Whlen Sie aus der Liste die Abteilung, der dieses Makro zugeordnet werden soll \end_inset \begin_inset Text \layout Standard Beschreibung \end_inset \begin_inset Text \layout Standard Kurze Beschreibung des Makros \end_inset \begin_inset Text \layout Standard Sichtbar fr Benutzer \end_inset \begin_inset Text \layout Standard ? \end_inset \end_inset \layout Itemize \added_space_top medskip Makro-Inhalt \layout Subsection \added_space_top bigskip Parameter \layout Standard Alle mglichen Parameter, die im Feld \emph on Makro-Inhalt \emph default des Reiters \series bold Allgemein \series default verwendet wurden, knnen auf dieser Seite konfiguriert werden. \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Argument \end_inset \begin_inset Text \layout Standard Der verwendete Name im Makro-Inhalt \end_inset \begin_inset Text \layout Standard Name \end_inset \begin_inset Text \layout Standard Der allgemeine Name des Parameters \end_inset \begin_inset Text \layout Standard Typ \end_inset \begin_inset Text \layout Standard Der Datentyp des Parameters \end_inset \begin_inset Text \layout Standard Standardwert \end_inset \begin_inset Text \layout Standard Der Standardwert des Parameters \end_inset \end_inset \layout Subsection \added_space_top bigskip Referenzen \layout Standard Unter \emph on Referenzen \emph default werden alle Verbindungen dieses Makros zu anderen Objekten im LDAP-Verzeichnis aufgelistet. \the_end gosa-core-2.7.4/doc/core/de/lyx-source/users.lyx0000644000175000017500000017131510442224551020144 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Benutzerverwaltung \layout Section Liste der Benutzer \layout Standard Die Liste der Benutzer dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag \series bold \color blue Benutzer \series default \color default aus der Kategorie \series bold Administration \series default (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Benutzer geladen (berschrift: \emph on Benutzerverwaltung) \emph default . Auf dieser Seite knnen Benutzer hinzugefgt, bearbeitet oder entfernt werden. \layout Standard Die Liste ist in drei Spalten geteilt: \layout Itemize Die erste Spalte enthlt zunchst die verfgbaren Abteilungen, dann die Namen der Benutzer (alphabetisch sortiert). \layout Itemize Die zweite Spalte enthlt Knpfe fr den Schnellzugriff auf die verschiedenen Reiter des Benutzers (nur verfgbar, wenn die entsprechende Eigenschaft aktiviert ist). Sie dient ausserdem fr einen schnellen berblick ber die aktivierten Eigenschaften eines Benutzers. \begin_deeper \layout Itemize Die mglichen Symbole und ihre Bedeutung: \newline \begin_inset Tabular \begin_inset Text \layout Standard Symbol \end_inset \begin_inset Text \layout Standard Bedeutung \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/penguin.png scale 60 keepAspectRatio clip \end_inset \end_inset \begin_inset Text \layout Standard Benutzer verfgt ber allgemeine Eigenschaften \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_user.png scale 60 keepAspectRatio \end_inset \end_inset \begin_inset Text \layout Standard Benutzer verfgt ber ein UNIX-Konto \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/smallenv.png \end_inset \end_inset \begin_inset Text \layout Standard Benutzer verfgt ber Umgebungs-Einstellungen \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/mailto.png \end_inset \end_inset \begin_inset Text \layout Standard Benutzer verfgt ber ein Mail-Konto \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_phone.png \end_inset \end_inset \begin_inset Text \layout Standard Benutzer verfgt ber ein Telefon-Konto \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/fax_small.png \end_inset \end_inset \begin_inset Text \layout Standard Benutzer verfgt ber ein Fax-Konto \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_winstation.png \end_inset \end_inset \begin_inset Text \layout Standard Benutzer verfgt ber ein SAMBA-Konto \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_netatalk.png \end_inset \end_inset \begin_inset Text \layout Standard Benutzer verfgt ber ein Netatalk-Konto \end_inset \end_inset \end_deeper \layout Itemize Die dritte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufga ben durchzufhren (Ausschneiden, Kopieren, Bearbeiten, Entfernen) \layout Standard Die vier Knpfe \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset und \begin_inset Graphics filename images/list_reload.png \end_inset oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset : Zur Wurzel \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset : Eine Abteilung nach oben \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset : Zur Basis des angemeldeten Benutzers \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset : Aktuelle Abteilung neu laden \layout Standard \color black Es ist weiterhin mglich, die Anzeige der Benutzer mithilfe von Filtern zu beeinflussen (Kasten \series bold Filter \series default \begin_inset Graphics filename images/rocket.png \end_inset am rechten Rand): \layout Itemize \color black Nach Namen suchen: \begin_deeper \layout Itemize \color black Klick auf * zeigt alle Benutzer an \layout Itemize \color black Klick auf einen Buchstaben zeigt alle Benutzer an, deren Name mit dem gewhlten Buchstaben beginnt \layout Itemize Klick auf eine Ziffer zeigt alle Benutzer an, deren Name mit der gewhlten Ziffer beginnt \end_deeper \layout Itemize Weitere Suchoptionen: \newline (Die folgenden Filter arbeiten so, dass nur Benutzer angezeigt werden, die ber mindestens eine der ausgewhlten Optionen verfgen; Standardmssig werden alle echten Benutzer angezeigt, also keine Vorlagen) \begin_deeper \layout Itemize \emph on Zeige Vorlagen \emph default : Zeigt Benutzervorlagen (standardmssig deaktiviert) \layout Itemize \emph on Zeige zweckbezogene Benutzer \emph default : Benutzer, die ausschliesslich ber die allgemeinen Angaben verfgen \layout Itemize \emph on Zeige UNIX-Benutzer \emph default : Benutzer, fr die die UNIX-Erweiterung aktiviert ist \layout Itemize \emph on Zeige Mail-Benutzer \emph default : Benutzer, fr die die Mail-Erweiterung aktiviert ist \layout Itemize \emph on Zeige SAMBA-Benutzer \emph default : Benutzer, fr die die SAMBA-Erweiterung aktiviert ist \layout Itemize \emph on Zeige Proxy-Benutzer \emph default : Benutzer, fr die das Proxy-Konto aktiviert ist \end_deeper \layout Itemize Zustzlich zu der o.g. funktionalen Filterung kann die Liste durch lexikalische Filterung weiter eingeschrnkt werden. Dazu dienen zum Einen die vordefinierten Buchstaben/Zahlen, die die Liste fr Benutzer einschrnken, die mit dem gewhlten Buchstaben/der Ziffer beginnen. Komplexere Einschrnkungen ber regulre Ausdrcke bietet das Textfeld im unteren Bereich des Kastens \series bold Filter \series default (beginnt mit dem Symbol \begin_inset Graphics filename images/search.png \end_inset ). In dieses Feld knnen Sie beliebige Buchstaben/Ziffern-Kombinationen eingeben, um die Suche einzuschrnken. Um die Suchergebnisse in der Liste anzeigen zu lassen, Klicken Sie auf \emph on Filter anwenden \emph default . \layout Subsection* Benutzerkonto anlegen \layout Standard Um ein neues Benutzerkonto anzulegen klicken Sie auf den Knopf \begin_inset Graphics filename images/list_new_user.png \end_inset . Befolgen Sie dann die nachfolgende Beschreibung fr die Bearbeitung bestehender Benutzerkonten. Sie mssen zustzlich am Ende des Vorgangs ein Passwort vergeben. \layout Subsubsection* Ein bestehendes Benutzerkonto bearbeiten \layout Standard Klicken Sie in der Liste der Benutzer auf den Benutzernamen des gewnschten Benutzers. Die Seite, die nun geladen wird, verfgt ber Reiter, die jeweils fr eine Erweiterung stehen (aktuell sind dies u.a. Allgemein, Unix, Umgebung, usw.). \layout Subsubsection* Generelle Informationen \layout Itemize Um die Bearbeitung des Benutzers (auch neuer Benutzer) abzuschliessen, drcken Sie auf den Knopf \emph on Speichern \emph default unten rechts; Um den Vorgang zu verwerfen, drcken Sie auf den Knopf \emph on Abbrechen \emph default , der sich ebenfalls unten rechts befindet. \layout Itemize Alle Felder, die mit einem roten Sternchen \color red * \color default enden, sind Pflichtfelder und mssen daher zwingend ausgefllt werden. \layout Itemize In der rechten, oberen Ecke findet sich der komplette \emph on dn \emph default des aktuell geffneten Benutzers. \layout Subsection \pagebreak_top Allgemein \layout Subsubsection Persnliche Informationen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \color black Nachname \color red * \end_inset \begin_inset Text \layout Standard Nachname des Benutzers \end_inset \begin_inset Text \layout Standard \color black Vorname \color red * \end_inset \begin_inset Text \layout Standard Vorname des Benutzers \end_inset \begin_inset Text \layout Standard \color black Kennung \color red * \end_inset \begin_inset Text \layout Standard Kennung (=Benutzername) des Benutzers \end_inset \begin_inset Text \layout Standard Titel \end_inset \begin_inset Text \layout Standard Anrede (Herr, Frau etc.) \end_inset \begin_inset Text \layout Standard Akademischer Titel \end_inset \begin_inset Text \layout Standard Akademischer Titel (z.B. Prof., Dr., Prof. Dr., etc.) \end_inset \begin_inset Text \layout Standard Geburtsdatum \end_inset \begin_inset Text \layout Standard Mit dem Knopf \emph on Setzen \emph default kann das Geburtsdatum eingestellt werden \end_inset \begin_inset Text \layout Standard Geschlecht \end_inset \begin_inset Text \layout Standard Whlen Sie den passenden Eintrag aus der Liste. \end_inset \begin_inset Text \layout Standard Bevorzugte Sprache \end_inset \begin_inset Text \layout Standard Sprache der Oberflche (de_DE=Deutsch, en = Englisch, etc.) \end_inset \begin_inset Text \layout Standard Basis \end_inset \begin_inset Text \layout Standard Die Abteilung des Benutzers (Die Verwaltung der Abteilungen geschieht ber den Knopf \series bold \color blue Abteilungen \series default \color default im linken Men). \end_inset \begin_inset Text \layout Standard Benutzerbild \end_inset \begin_inset Text \layout Standard Um ein Bild des Benutzers zu speichern, drcken Sie auf den Knopf \emph on Bild ndern \emph default . Whlen Sie das gewnschte Bild. Das Bild wird nun angezeigt. Um es zu speichern, drcken Sie auf den Knopf \emph on Speichern \emph default . Wenn Sie das Bild nicht speichern mchten, drcken Sie auf den Knopf \emph on abbrechen \emph default . \end_inset \begin_inset Text \layout Standard Adresse \end_inset \begin_inset Text \layout Standard Die Privat-Adresse des Benutzers \end_inset \begin_inset Text \layout Standard Privat-Telefon \end_inset \begin_inset Text \layout Standard Die Private Telefonnummer des Benutzers (Sie sollten diese sinnvollerweise im internationalen Format einfgen, z.B. +49 1234 555-0) \end_inset \begin_inset Text \layout Standard Homepage \end_inset \begin_inset Text \layout Standard Die Homepage des Benutzers \end_inset \begin_inset Text \layout Standard Passwort-Speicherung \end_inset \begin_inset Text \layout Standard Whlen Sie die Methode aus, mit der das Passwort verschlsselt werden soll, bevor es im LDAP gespeichert wird. \end_inset \begin_inset Text \layout Standard Zertifikate \end_inset \begin_inset Text \layout Standard \color black Drcken Sie auf den Knopf \emph on Zertifikate bearbeiten. \emph default Sie knnen dann drei verschiedene Zertifikate hochladen. Zum Speichern der Zertifikate, drcken Sie auf \emph on Speichern \emph default . \end_inset \begin_inset Text \layout Standard Kerberos \end_inset \begin_inset Text \layout Standard Drcken Sie auf den Knopf \emph on Eigenschaften bearbeiten \end_inset \end_inset \layout Subsubsection \added_space_top medskip Angabe zur Organisationseinheit \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Organisation \end_inset \begin_inset Text \layout Standard Der Name der Organisation (z.B. GONICUS GmbH) \end_inset \begin_inset Text \layout Standard Abteilung \end_inset \begin_inset Text \layout Standard Der Name der Abteilung (z.B. Technik) \end_inset \begin_inset Text \layout Standard Abteilungs-Nr. \end_inset \begin_inset Text \layout Standard Die Nummer der Abteilung (z.B. ) \end_inset \begin_inset Text \layout Standard Angestellten-Nr. \end_inset \begin_inset Text \layout Standard Die Nummer des Angestellten \end_inset \begin_inset Text \layout Standard Anstellungsart \end_inset \begin_inset Text \layout Standard Die Position des Angestellten \end_inset \begin_inset Text \layout Standard Zimmer-Nr. \end_inset \begin_inset Text \layout Standard Die Zimmernummer des Angestellten \end_inset \begin_inset Text \layout Standard Telefon \end_inset \begin_inset Text \layout Standard Die Telefonnummer des Angestellten \end_inset \begin_inset Text \layout Standard Mobiltelefon \end_inset \begin_inset Text \layout Standard Die Mobiltelefonnummer des Angestellten \end_inset \begin_inset Text \layout Standard Pager \end_inset \begin_inset Text \layout Standard Die Pager-Nummer des Angestellten \end_inset \begin_inset Text \layout Standard Fax \end_inset \begin_inset Text \layout Standard Die Faxnummer des Angestellten \end_inset \begin_inset Text \layout Standard Ort \end_inset \begin_inset Text \layout Standard Der Ort der Organisation (oder Abteilung) \end_inset \begin_inset Text \layout Standard Land \end_inset \begin_inset Text \layout Standard Das Land der Organisation (oder Abteilung) \end_inset \begin_inset Text \layout Standard Adresse \end_inset \begin_inset Text \layout Standard Die Postadresse der Organisation (oder Abteilung) \end_inset \end_inset \layout Subsection \added_space_top bigskip Unix \layout Standard Um die Unix-Erweiterung zu aktivieren, drcken Sie auf den Knopf \emph on UNIX-Konto \emph default erstellen. \layout Subsubsection Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Basisverzeichnis \color red * \end_inset \begin_inset Text \layout Standard Das persnliche Verzeichnis des Benutzers \end_inset \begin_inset Text \layout Standard Shell \end_inset \begin_inset Text \layout Standard Die Shell, die beim Anmelden ausgefhrt werden soll (/bin/false sorgt dafr, dass sich der Benutzer nicht anmelden kann) \end_inset \begin_inset Text \layout Standard Primre Gruppe \end_inset \begin_inset Text \layout Standard Die primre Gruppe des Benutzers, zu der er hinzugefgt werden soll (Um Gruppen zu verwalten, klicken Sie aus dem Men-Abschnitt \series bold Administration \series default auf den Knopf \series bold \color blue Gruppen \series default \color default ) \end_inset \begin_inset Text \layout Standard Status \end_inset \begin_inset Text \layout Standard Zeigt an, ob das Konto aktiv ist \end_inset \begin_inset Text \layout Standard Erzwinge UID/GID \end_inset \begin_inset Text \layout Standard Mit dieser Funktion knnen die UNIX UID und GID auf einen bestimmten Wert erzwungen werden. \end_inset \end_inset \layout Subsubsection \added_space_top medskip Gruppenmitgliedschaft \layout Standard Die Liste zeigt alle UNIX-Gruppen, in denen der Benutzer Mitglied ist. Um eine weitere Mitgliedschaft hinzuzufgen, klicken Sie auf den Knopf \emph on Hinzufgen \emph default unterhalb der Liste. Markieren Sie eine oder mehrere Gruppen und klicken Sie auf hinzufgen. Um den Benutzer aus einer oder mehrerer Gruppen zu entfernen, markieren Sie eine oder mehrere Gruppen und klicken auf \emph on Entfernen \emph default unterhalb der Liste. \layout Subsubsection \added_space_top medskip Konto \layout Standard Die Einstellungen dieser Kategorie beziehen sich auf Einschrnkungen fr das Passwort des Benutzers (dies betrifft selbstverstndlich lediglich das UNIX-Konto): \layout Itemize \emph on Der Benutzer muss bei ersten Anmelden sein Passwort ndern \emph default : Mit dem Setzen dieser Option wird erzwungen, dass der Benutzer beim ersten Anmeldevorgang zunchst sein Passwort ndern muss. \layout Itemize \emph on Passwort kann bis zu \emph default [Anzahl der Tage] \emph on Tage nach der letzten nderung nicht gendert werden \emph default : \layout Itemize \emph on Der Benutzer muss sein Passwort nach \emph default [Anzahl der Tage] \emph on Tagen ndern \emph default : Mit dem Setzen dieser Option erhlt der Benutzer nach dem gewhlten Zeitraum die Aufforderung, sein Passwort zu ndern. \layout Itemize Passwort luft ab am [Datum]: Mit dem Setzen dieser Option kann der Benutzer sich mit Ablauf des gewhlten Datums nicht mehr anmelden. \layout Itemize \emph on Konto nach \emph default [Anzahl der Tage] \emph on Tagen nach Ablauf ohne Aktivitt deaktivieren \emph default : Wenn der gewhlte Zeitraum ohne Aktivitt (ohne Anmeldung) erreicht wurde, wird das Passwort deaktiviert, der Benutzer kann sich somit nicht mehr anmelden. \layout Itemize \emph on Benutzer \emph default [Anzahl der Tage] \emph on Tage vor dem Ablauf des Passwortes warnen \emph default : Der Benutzer erhlt eine Warnung, dass sein Passwort zum festgelegten Zeitpunk abluft. \layout Subsubsection \added_space_top medskip System-Vertrauen \layout Standard Dieser Abschnitt dient der Definition von Zugriffsbeschrnkungen auf definierte Systeme, Gerte, etc. \layout Standard Die mglichen Vertrauensmodi: \layout Itemize \emph on deaktiviert \emph default : Der Benutzer darf sich auf allen Hosts anmelden. \layout Itemize \emph on Vollzugriff \emph default : Der Benutzer darf sich auf allen Hosts anmelden. \layout Itemize \emph on erlaube Zugriff auf diese Hosts \emph default : Der Benutzer darf sich nur auf den aufgefhrten Hosts anmelden. \begin_deeper \layout Itemize \emph on Hinzufgen \emph default : Um einen oder mehrere Hosts in die Liste aufzunehmen, klicken Sie auf den Knopf \emph on Hinzufgen \emph default . Aus der Liste der Hosts whlen Sie einen oder mehrere zulssige Hosts und klicken Sie auf den Knopf \emph on Hinzufgen \emph default . Die Hosts werden nun in der Liste aufgefhrt. Um den Vorgang abzubrechen, klicken Sie auf den Knopf \emph on Abbrechen \emph default . \layout Itemize \emph on Entfernen \emph default : Um einen oder mehrere Hosts aus der Liste zu entfernen, markieren Sie den oder die gewnschten Hosts aus der Liste und drcken Sie den Knopf Entfernen. Die Hosts werden nun nicht mehr in der Liste aufgefhrt. \end_deeper \layout Subsection \added_space_top bigskip Umgebung \layout Standard Um die Umgebungserweiterung fr einen Benutzer zu aktivieren, klicken Sie auf den Knopf \emph on Umgebungs-Erweiterung hinzufgen \emph default . Wenn Sie die Umgebungserweiterung deaktivieren mchten, klicken Sie auf den Knopf \emph on Umgebungs-Erweiterung-entfernen \emph default . \layout Standard \added_space_top defskip \noindent Wenn die Erweiterung aktiv ist, finden sich folgende Einstellmglichkeiten: \layout Subsubsection Profile \layout Subsubsection \added_space_top medskip Kiosk-Profil \layout Subsubsection \added_space_top medskip Anmelde-Skripte \layout Subsubsection \added_space_top medskip Freigaben \layout Subsubsection \added_space_top medskip Hotplug-Gerte \layout Subsubsection \added_space_top medskip Drucker \layout Subsection \added_space_top bigskip Mail \layout Standard Das Mailkonto wird in direkter Verbindung mit dem Mailserver verwaltet. Um eines fr den Benutzer anzulegen, klicken Sie auf \shape italic Neues Mail-Konto erzeugen \shape default . Wenn Sie das Mailkonto wieder entfernen mchten, klicken Sie auf \emph on Mail-Konto entfernen \emph default . \layout Subsubsection Allgemein \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \color black Primre Adresse \color red * \end_inset \begin_inset Text \layout Standard Die Mail-Adresse des Benutzers \end_inset \begin_inset Text \layout Standard Server \end_inset \begin_inset Text \layout Standard Der Server, auf dem das Postfach des Benutzers gespeichert werden soll. \end_inset \begin_inset Text \layout Standard Kontingent-Nutzung \end_inset \begin_inset Text \layout Standard Der momentan genutzte Speicherplatz des Kontingents. \end_inset \begin_inset Text \layout Standard Kontingent-Gre \end_inset \begin_inset Text \layout Standard Die maximale Gre der Mailbox \end_inset \end_inset \layout Subsubsection \added_space_top medskip Alternative Adressen \layout Standard Alternative Adressen sind weitere Adressen, unter denen der Benutzer Mails empfangen soll. \layout Standard Verwenden Sie den Knopf \emph on Hinzufgen \emph default um eine alternative Adresse hinzuzufgen. Wenn Sie eine Adresse entfernen mchten, markieren Sie diese und drcken Sie auf den Knopf \emph on Entfernen \emph default . \layout Subsubsection \added_space_top medskip Mail-Einstellungen \layout Standard Unter diese Kategorie fallen weitere Einstellungsmglichkeiten: \layout Itemize \emph on Keine Zustellung in eigenes Postfach \emph default : Wenn diese Option aktiviert ist, werden ankommende Mails ausschliesslich an die Adressen gesendet, die im Kasten \emph on Nachrichten weiterleiten an \emph default (s. u.)aufgefhrt sind. Eine Speicherung der Nachricht im Postfach des Benutzers findet nicht statt. \layout Itemize \emph on Urlaubsbenachrichtigung aktivieren \emph default : Wenn diese Option aktiviert ist, wird der Inhalt des Kastens Urlaubsbenachrich tung an den Sender jeder ankommenden Mail gesendet. \layout Itemize \emph on Verschiebe Mails mit einem SPAM-Level grer als [Spam-Level] in den Ordner [Ordner] \emph default : Die ankommenden Mails werden auf mglichen Spam-Inhalt geprft. Diese Prfung erkennt SPAM mit einer gewissen Wahrscheinlichkeit, die als Spam-Level in den Kopf der Nachricht geschrieben wird (blicherweise haben SPAM-Mails einen SPAM-Level ab 4-6). \newline Wenn Sie diese Option aktivieren, werden Mails die ber mindestens den gewhlten SPAM-Level verfgen in den gewnschten Ziel-Ordner verschoben, ohne dass diese direkt im Posteingang des Benutzers sichtbar sind. \layout Itemize \emph on Mails abweisen, die grer sind als [Gre] MB \emph default : Ankommende Mails (fr diesen Benutzer), die grer sind als der angegebene Wert (in MB), werden nicht zugestellt. \layout Itemize \emph on \color black Nachrichten weiterleiten an \emph default : \newline Dieser Kasten dient dazu, Kopien der ankommenden Mails an weitere Adressen zu versenden (z.B. Telefone, PDAs etc.). \begin_deeper \layout Standard \color black - Adresse hinzufgen: Um eine Adresse hinzuzufgen, tragen Sie diese in das Textfeld unterhalb des Kastens ein und drcken den Knopf \emph on Hinzufgen \emph default . Die Adresse wird nun in der Liste aufgefhrt. \layout Standard \color black - Lokale Adresse hinzufgen: Um eine lokale Adresse (=Adresse auf demselben Mail-Server) hinzuzufgen, tragen Sie den Namen des Postfachs in das Textfeld unterhalb des Kastens ein und drcken den Knopf \emph on Lokale hinzufgen \emph default . Die lokale Adresse wird nun in der Liste aufgefhrt. \layout Standard \color black - (Lokale) Adresse entfernen: Um eine Adresse wieder aus der Liste zu entfernen, markieren Sie den entsprechenden Eintrag in der Liste und drcken den Knopf \emph on Entfernen \emph default . Der Eintrag wird nun nicht mehr in der Liste aufgefhrt. \end_deeper \layout Subsubsection \added_space_top medskip Erweiterte Mail-Einstellungen \layout Itemize \emph on Der Benutzer darf nur lokale Mails senden und empfangen \emph default : Wenn diese Option aktiv ist, darf der Benutzer ausschliesslich Mails an interne Adressaten versenden und von diesen empfangen. Eingehende Mails von externen Adressen werden nicht zugestellt. \layout Itemize \emph on Eigenes Sieve-Skript verwenden \emph default : Wenn diese Option aktiv ist, werden alle Mail-Einstellungen deaktiviert! Dies ist erforderlich, wenn eigene Sieve-Skripte verwendet werden sollen, da diese sonst berschrieben werden. \layout Subsection \added_space_top bigskip Samba \layout Standard Um ein Samba-Konto fr den Benutzer zu erstellen, klicken Sie auf den Knopf \shape italic Samba-Konto erstellen \shape default . \layout Subsubsection Allgemein \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Basisverzeichnis \end_inset \begin_inset Text \layout Standard Der Pfad zum Basisverzeichnis des Benutzers in UNC-Notation (z.B. \backslash \backslash SERVER \backslash homes \backslash user). Whlen Sie aus der Liste, unter welchem Laufwerksbuchstaben das Basisverzeichni s verbunden wird. \end_inset \begin_inset Text \layout Standard Domne \end_inset \begin_inset Text \layout Standard Die Domne, zu der der Benutzer zugeordnet ist. \end_inset \begin_inset Text \layout Standard Anmeldeskript \end_inset \begin_inset Text \layout Standard Das Programm, das beim Start der Sitzung ausgefhrt wird. \end_inset \begin_inset Text \layout Standard Profil-Pfad \end_inset \begin_inset Text \layout Standard Das Arbeitsverzeichnis, in dem das Programm ausgefhrt wird. \end_inset \end_inset \layout Subsubsection \added_space_top medskip Terminal-Server \layout Itemize \emph on Anmeldung am Terminalserver zulassen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Basisverzeichnis \end_inset \begin_inset Text \layout Standard Der Pfad zum Basisverzeichnis des Benutzers in UNC-Notation (z.B. \backslash \backslash SERVER \backslash homes \backslash user). Whlen Sie aus der Liste, unter welchem Laufwerksbuchstaben das Basisverzeichni s verbunden wird. \end_inset \begin_inset Text \layout Standard Profil-Pfad \end_inset \begin_inset Text \layout Standard Der Pfad zum Profil des Benutzers \end_inset \end_inset \layout Itemize \emph on Client-Konfiguration bernehmen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Startprogramm \end_inset \begin_inset Text \layout Standard Das Programm, das beim Start der Sitzung ausgefhrt wird. \end_inset \begin_inset Text \layout Standard Arbeitsverzeichnis \end_inset \begin_inset Text \layout Standard Das Arbeitsverzeichnis, in dem das Programm ausgefhrt wird. \end_inset \end_inset \layout Itemize \emph on Zeitlimit (in Minuten) \emph default Mit Hilfe der nachfolgenden Optionen kann fr den Benutzer die Sitzung zeitlich begrenzt werden: \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Verbinden \end_inset \begin_inset Text \layout Standard Die maximale Dauer, die der Benutzer verbunden sein darf - nach Ablauf wird die Verbindung getrennt. \end_inset \begin_inset Text \layout Standard Trennen \end_inset \begin_inset Text \layout Standard Eine nicht mehr verbundene Sitzung des Benutzers wird nach Ablauf dieser Zeit automatisch beendet. \end_inset \begin_inset Text \layout Standard Leerlauf \end_inset \begin_inset Text \layout Standard Eine verbundene aber unttige Sitzung des Benutzers wird nach Ablauf dieser Zeit automatisch beendet. \end_inset \end_inset \layout Itemize \emph on Client-Gerte \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Client-Laufwerke beim Anmelden verbinden \end_inset \begin_inset Text \layout Standard Die lokalen Laufwerke des Clients als Netzlaufwerke verbinden \end_inset \begin_inset Text \layout Standard Client-Drucker beim Anmelden verbinden \end_inset \begin_inset Text \layout Standard Die lokalen Drucker des Clients als Netzwerkdrucker verbinden \end_inset \begin_inset Text \layout Standard Standard-Drucker vom Client whlen \end_inset \begin_inset Text \layout Standard Als Standard-Drucker den Standard-Drucker des Clients verwenden \end_inset \end_inset \layout Itemize Verschiedenes: \begin_deeper \layout Standard - \emph on Spiegeln \emph default : Diese Option steuert das Verhalten der Remoteberwachung: \layout Itemize \emph on deaktiviert \emph default : Remoteberwachung ist deaktiviert \layout Itemize \emph on Eingabe EIN, Benachrichtigen EIN \emph default : Sitzung kann gesteuert werden, Benutzer wird gefragt \layout Itemize \emph on Eingabe EIN, Benachrichtigen AUS \emph default : Sitzung kann gesteuert werden, Benutzer wird nicht gefragt \layout Itemize \emph on Eingabe AUS, Benachrichtigen EIN \emph default : Sitzung wird nur angezeigt, Benutzer wird gefragt \layout Itemize \emph on Eingabe AUS, Benachrichtigen AUS \emph default : Sitzung wird nur angezeigt, Benutzer wird nicht gefragt \layout Standard - \emph on Bei Trennung oder abgelaufenem Zeitlimit \emph default : Sie knnen whlen, ob eine Sitzung, die getrennt wurde (vom Client oder durch ein abgelaufenes Zeitlimit) automatisch zurckgesetzt werden soll, oder nicht: Zum Zurcksetzen whlen Sie \emph on zurcksetzen \emph default . Bei \emph on trennen \emph default bleibt die Sitzung erhalten. \layout Standard - \emph on Wiederherstellen falls unterbrochen \emph default : Wenn eine Sitzung des Benutzers unterbrochen wurde (Absturz, Netzwerkprobleme etc.) kann mithilfe dieser Einstellung festgelegt werden, dass sich der Benutzer nur von dem ursprnglichen Client in seine noch aktive Sitzung verbinden darf. Wenn diese gewnscht ist, whlen Sie den Eintrag \emph on nur von vorherigem Client \emph default . Mit der Einstellung \emph on von jedem Client \emph default darf der Benutzer sich von jedem Client zu seiner Sitzung verbinden. \end_deeper \layout Subsubsection \added_space_top medskip Zugriffsoptionen \layout Standard Die unter Zugriffsoptionen aufgefhrten Einstellung dienen zum Anpassen der Passwort-Einstellungen. Sie sollten genau aufpassen, welche Einstellungen Sie vornehmen. \layout Itemize Die folgenden Optionen sind verfgbar: \begin_deeper \layout Itemize \emph on Der Benutzer darf das Passwort vom Client aus ndern \emph default : Wenn diese Option aktiv ist, darf der Benutzer vom Windows-Client sein Passwort ndern. \layout Itemize \emph on Die Anmeldung vom Windows-Client erfordert kein Passwort \emph default : Wenn diese Option aktiv ist, bentigt der Benutzer kein Passwort, um sich anzumelden. \layout Itemize \emph on Samba-Konto sperren \emph default : Wenn diese Option aktiv ist, kann der Benutzer sich nicht mehr verbinden. \layout Itemize \emph on Passwort luft ab am \emph default : Whlen Sie ein Datum, an dem das Passwort abluft, das Konto wird dann automatisch gesperrt. \layout Itemize \emph on Limitiere Logon-Zeit \emph default : Zu dieser Einstellung sind keine Informationen verfgbar (sambaLogonTime). \layout Itemize \emph on Limitiere Logoff-Zeit \emph default : Zu dieser Einstellung sind keine Informationen verfgbar (sambaLogoffTime). \layout Itemize \emph on Konto luft ab am \emph default : Whlen Sie ein Datum, an dem das Konto automatisch gesperrt wird. \end_deeper \layout Itemize \emph on Erlaube Verbindungen nur von diesen Arbeitsstationen \emph default : Wenn Sie den Zugriff des Benutzers auf eine bis mehrere Arbeitsstationen beschrnken mchten, tragen Sie diese in die Liste ein. Wenn die Liste leer ist, ist der Zugriff von allen Clients mglich. \begin_deeper \layout Itemize \emph on Hinzufgen \emph default : Um eine Arbeitsstation hinzufgen, klicken Sie auf den Knopf \emph on Hinzufgen \emph default und whlen Sie eine oder mehrere Arbeitsstationen aus der Liste, indem Sie sei markieren. Wenn Sie mit der Auswahl zufrieden sind, drcken Sie den Knopf \emph on Hinzufgen \emph default . Die gewnschten Arbeitsstation werden nun in der Liste aufgefhrt. \layout Itemize \emph on Entfernen \emph default : Um eine oder mehrere Arbeitsstationen aus der Liste zu entfernen, markieren Sie den oder die gewnschten Eintrge in der Liste und drcken auf den Knopf entfernen. Die markierten Arbeitsstationen werden nun nicht mehr in der Liste aufgefhrt. \end_deeper \layout Subsection \added_space_top bigskip Konnektivitt \layout Standard Unter diesem Reiter finden sich diverse Mglichkeiten, um die Zugriffsmglichkei ten des Benutzers zu erweitern: \layout Subsubsection Proxy Konto \layout Standard Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den Proxy-Server erlauben: \layout Itemize \emph on Filtern von unerwnschten Inhalten (z.B. pornografische oder gewaltttige Inhalte) \emph default : Diese Option aktiviert den Inhaltsfilter fr den Benutzer. Dies hat zur Folge, dass keine Seiten aufgerufen werden knnen, die ber fragwrdige Inhalte verfgen (bzw. vom Filter als solche erkannt werden). \layout Itemize \emph on Inhaltsfilterung nur whrend der Arbeitszeit \emph default : Die Inhaltsfilterung kann mit dieser Option ausschliesslich fr die Arbeitszei t aktiviert werden (whlen Sie den Zeitraum). Ausserhalb der eingestellten Arbeitszeit ist der Zugriff uneingeschrnkt. \layout Itemize \emph on Proxynutzung durch Kontingent einschrnken \emph default : Mit dieser Option knnen Sie die maximal bertragene Menge fr einen Zeitraum fr den Benutzer festlegen. Wenn die Menge erreicht ist, kann der Benutzer keine Seiten mehr aufrufen. \layout Subsubsection FTP Konto \layout Standard Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den FTP-Server erlauben: \layout Itemize Bandbreite: Erlaubt Einschrnkung der Bandbreite (Aus Sicht des Benutzers) \begin_deeper \layout Itemize \emph on Upload-Bandbreite \emph default : Die maximale Bandbreite fr den Upload (Senderichtung). Wenn Sie 0 eintragen, ist die Beschrnkung nicht aktiv. \layout Itemize \emph on Download-Bandbreite \emph default : Die maximale Bandbreite fr den Download (Empfangsrichtung). Wenn Sie 0 eintragen, ist die Beschrnkung nicht aktiv. \end_deeper \layout Itemize Verhltnis: Der Benutzer kann gezwungen werden, ein Verhltnis von Up- und Download von Dateien einzuhalten. \begin_deeper \layout Itemize \emph on Hoch- / heruntergeladene Dateien \emph default : Stellen Sie das Verhltnis in Dateien ein (z.B. 4/1: 4 Dateien mssen hochgeladen werden, damit der Benutzer eine Datei herunterladen darf). \end_deeper \layout Itemize Kontingent: Einschrnkung des Kontingents in Dateien oder bertragenen Datenmeng en \begin_deeper \layout Itemize \emph on Dateien \emph default : Die maximale Anzahl an Dateien, die der Benutzer bertragen darf. Wenn Sie 0 eintragen, ist die Beschrnkung nicht aktiv. \layout Itemize \emph on Gre \emph default : Die maximale Datenmenge, die der Benutzer bertragen darf. Wenn Sie 0 eintragen, ist die Beschrnkung nicht aktiv. \end_deeper \layout Itemize Verschiedenes: \begin_deeper \layout Itemize Temporres Abschalten des FTP-Zugriffs: Mit dieser Option knnen Sie den Zugriff auf den FTP-Server deaktivieren, ohne dabei die vorgenommenen Einstellu ngen zu verlieren. \end_deeper \layout Subsubsection WebDAV-Konto \layout Standard Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den WebDAV-Server erlauben. \layout Subsubsection phpGroupware-Konto \layout Standard Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den phpGroupware-Server erlauben. \layout Subsubsection Intranet-Konto \layout Standard \added_space_bottom smallskip Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den Intranet-Server erlauben. \layout Subsubsection Opengroupware \layout Standard Mit dieser Option knnen Sie dem Benutzer den Zugriff auf den Opengroupware-Serv er erlauben: \layout Itemize \emph on rtliches Team \emph default : Das rtliche Team, zu dem der Benutzer gehren wird. \layout Itemize \emph on Benutzer-Vorlage \emph default : \layout Itemize \emph on Gesperrt \emph default : Diese Option dient dazu, das Opengroupware-Konto zeitweilig zu sperren, ohne die Einstellungen zu verlieren. Wenn sie aktiv ist, kann der Benutzer sich nicht zum Opengroupware-Server verbinden. \layout Itemize \emph on Teams \emph default : Aktivieren Sie die Teams, denen der Benutzer angehren soll. \layout Subsubsection PPTP-Konto \layout Standard \added_space_bottom smallskip Mit diesem Konto knnen Sie dem Benutzer den VPN-Zugriff via PPTP erlauben. \layout Subsubsection PHPScheduleit-Konto \layout Standard \added_space_bottom smallskip Mit diesem Konto knnen Sie dem Benutzer den Zugriff auf den PHPscheduleit-Serve r erlauben: \layout Subsubsection GLPI-Konto \layout Standard If you activated the GLPI option, the user will access GLPI software. \layout Subsection \added_space_top bigskip Fax \layout Standard Um fr den Benutzer die Fax-Erweiterung zu aktivieren, klicken Sie auf den Knopf \emph on Fax-Konto er \emph default zeugen. Um die Erweiterung wieder zu entfernen, klicken Sie auf den Knopf \emph on Fax-Konto entfernen \emph default . \layout Subsubsection Allgemein \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Fax \color red * \end_inset \begin_inset Text \layout Standard Die Fax-Nummer des Benutzers \end_inset \begin_inset Text \layout Standard Sprache \end_inset \begin_inset Text \layout Standard Whlen Sie die gewnschte Sprache aus der Liste \end_inset \begin_inset Text \layout Standard Auslieferungsformat \end_inset \begin_inset Text \layout Standard Whlen Sie das gewnschte Format aus der Liste \end_inset \end_inset \layout Subsubsection \added_space_top medskip Auslieferungsmethode \layout Itemize \emph on Temporres Abschalten der Fax-Benutzung \emph default : Deaktiviert das Fax-Konto des Benutzers, ohne die Einstellungen zu verlieren (Wenn Sie das Konto dauerhaft entfernen mchten, klicken Sie den Knopf \emph on Fax-Konto entfernen \emph default ). \layout Itemize \emph on Fax als Mail ausliefern an \emph default : Die Mail-Adresse, an die das Fax im ausgewhlten Format gesendet wird (blicherweise die Mailbox des Benutzers). \layout Itemize \emph on Fax an Drucker weiterleiten \emph default : Whlen Sie aus der Liste den Drucker, auf dem ein empfangenes Fax gedruckt wird. \layout Subsubsection \added_space_top medskip Alternative Fax-Nummern \layout Standard Es ist mglich, weitere Fax-Nummern fr den Benutzer einzutragen. Alle alternativen Nummern, die dem Benutzer zugeordnet sind, werden in der Liste aufgefhrt. \layout Itemize \emph on Hinzufgen \emph default : Um eine Nummer hinzuzufgen, geben Sie die Nummer in das Textfeld links neben dem Knopf ein und drcken Sie auf den Knopf \emph on Hinzufgen \emph default . \layout Itemize \emph on Lokale hinzufgen \emph default : Um eine Nummer hinzuzufgen, die bereits einem Benutzer zugeordnet wurde, drcken Sie auf den Knopf \emph on Lokale hinzufgen \emph default . Whlen Sie nun aus der Liste einen oder mehrere Benutzer, deren Faxnummern dem aktuell geffneten Benutzer zugeordet whlen sollen, und drcken Sie den Knopf \emph on Hinzufgen \emph default . Um den Vorgang abzubrechen, drcken Sie auf den Knopf \emph on Abbrechen \emph default . \layout Itemize \emph on Entfernen \emph default : Um eine oder mehrere Nummern wieder zu entfernen, markieren Sie diese in der Liste (mit gedrckter STRG-Taste knnen Sie mehrere Nummern markieren) und drcken Sie den Knopf \emph on Entfernen \emph default . Die Nummern werden nun nicht mehr in der Liste aufgefhrt. \layout Subsubsection \added_space_top medskip Sperrlisten \layout Standard Die Sperrlisten dienen dazu, den Empfang und Versand von und zu bestimmten Nummern zu unterbinden, um z.B. Werbefaxe zu vermeiden. Die Dialoge der Sperrlisten fr eingehende und ausgehende Faxe verhalten sich analog, weshalb im Folgenden einfach darauf verzichtet wird, vorzuschreibe n, welchen \emph on Bearbeiten \emph default -Knopf Sie gedrckt haben. \layout Paragraph* Bearbeiten: \layout Standard Wenn Sie den Knopf \emph on Bearbeiten \emph default gedrckt haben, sehen Sie eine zweigeteilte Seite. Auf der linken Seite sehen Sie die aktuell gltigen Nummern/Listen, gegen die ein-/ bzw. ausgehende Nummern geprft werden. Um eine Nummer hinzuzufgen, geben Sie diese um Textfeld unterhalb der Liste ein und klicken Sie den Knopf \emph on Hinzufgen \emph default . Um eine bereits bestehende Liste aus einer Unterabteilung hinzuzufgen whlen Sie in der rechten Liste die Unterabteilung, die die Liste enthlt und drcken Sie den Knopf \emph on Liste zu den Sperrlisten hinzufgen \emph default . Um eine oder mehrere Nummern/Listen aus der Liste zu entfernen, markieren Sie diese/n und drcken Sie den Knopf \emph on Entfernen \emph default . \layout Subsection \added_space_top bigskip Telefon \layout Standard Um die Telefon-Erweiterung fr den Benutzer zu aktivieren, klicken Sie auf den Knopf \emph on Telefon-Konto erstellen \emph default . Wenn Sie die Erweiterung wieder entfernen mchten, klicken Sie auf den Knopf \emph on Telefon-Konto entfernen \emph default . \layout Subsubsection Telefonnummern \layout Standard In dieser Liste werden die Telefonnummern aufgefhrt, die dem Benutzer zugeordne t sind. \layout Itemize \emph on Nummer hinzufgen \emph default : Geben Sie die Nummer in die Eingabezeile ein und drcken Sie den Knopf \emph on Hinzufgen \layout Itemize Nummer entfernen: Markieren Sie die Nummer aus der Liste und drcken Sie den Knopf \emph on Entfernen. \layout Subsubsection \added_space_top medskip Telefon-Hardware \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Telefon \end_inset \begin_inset Text \layout Standard Whlen Sie das Telefon aus der Liste, wenn der Benutzer ein \end_inset \begin_inset Text \layout Standard Voicemail-PIN \color red * \end_inset \begin_inset Text \layout Standard Geben Sie den vierstelligen PIN-Code ein, den der Benutzer eingeben muss, um seine Mailbox zu erreichen. \end_inset \begin_inset Text \layout Standard Telefon-PIN \color red * \end_inset \begin_inset Text \layout Standard Geben Sie den vierstelligen PIN-Code ein, den der Benutzer eingeben muss, um sich an seinem Telefon anzumelden. \end_inset \end_inset \layout Subsubsection \added_space_top medskip Telefon-Makro \layout Standard Whlen Sie aus der Liste das Makro, das ausgefhrt werden soll, wenn der Benutzer eine Nummer whlt (Gegebenenfalls mssen/knnen noch weitere Makrospez ifische Optionen eingestellt werden, z.B. Nummer der Mailbox, Weiterleitungen, Zeit bis Weiterleitung, etc.). \layout Subsection \added_space_top bigskip Referenzen \layout Standard Unter Referenzen findet sich eine Auflistung aller Verbindungen des Benutzers zu anderen Eintrge im LDAP (z.B. Gruppen, Systeme etc.). \the_end gosa-core-2.7.4/doc/core/de/lyx-source/conference.lyx0000644000175000017500000001770510442247761021124 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Konferenz-Verwaltung \layout Section Liste der Konferenz-Rume \layout Standard Die Liste der Konferenz-Rume dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag \series bold \color blue Telefon-Konferenzen \series default \color default aus der Kategorie \series bold Administration \series default (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Konferenz-Rume geladen (berschrift: \emph on Konferenz-Verwaltung) \emph default . Auf dieser Seite knnen Telefon-Konferenzen hinzugefgt, bearbeitet oder entfernt werden. \layout Standard Die Liste ist in vier Spalten geteilt: \layout Itemize Die erste Spalte enthlt den Namen der Telefon-Konferenz \layout Itemize Die zweite Spalte enthlt den Besitzer der Telefon-Konferenz \layout Itemize Die dritte Spalte zeigt an, ob fr die Telefon-Konferenz ein PIN voreingestellt wurde \layout Itemize Die vierte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufga ben durchzufhren (Bearbeiten, Entfernen). \layout Standard \added_space_bottom medskip Die vier Knpfe \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset und \begin_inset Graphics filename images/list_reload.png \end_inset oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset : Zur Wurzel \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset : Eine Abteilung nach oben \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset : Zur Basis des angemeldeten Benutzers \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset : Aktuelle Abteilung neu laden \layout Standard Es ist weiterhin mglich, die Anzeige der Konferenzen mithilfe von Filtern zu beeinflussen (Kasten \series bold Filter \series default \begin_inset Graphics filename images/rocket.png \end_inset am rechten Rand): \layout Itemize \color black Nach Namen suchen : \begin_deeper \layout Standard - Klick auf \series bold * \series default zeigt alle Konferenzen an \layout Standard \color black - Klick auf einen Buchstaben zeigt alle \color default Konferenzen \color black an, deren Name mit dem gewhlten Buchstaben beginnt \layout Standard \color black - Klick auf eine Zahl zeigt alle \color default Konferenzen \color black an, deren Name mit der gewhlten Ziffer beginnt \end_deeper \layout Itemize Schnellsuche \begin_inset Graphics filename images/search.png \end_inset : Suchkriterium (z.B. Name der Konferenz) eingeben, Klick auf Knopf \emph on Filter anwenden \emph default . \begin_deeper \layout Standard \added_space_top medskip Um einen neuen Konferenz-Raum zu erstellen, drcken Sie auf den Knopf \begin_inset Graphics filename images/select_new_component.png \end_inset oberhalb der Liste. \layout Standard Um einen bestehenden Konferenz-Raum zu bearbeiten, drcken Sie auf seinen Namen. \end_deeper \layout Subsection \pagebreak_top Allgemein \layout Subsubsection Eigenschaften \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Konferenz-Name \color red * \end_inset \begin_inset Text \layout Standard Der eindeutige Name des Konferenz-Raums \end_inset \begin_inset Text \layout Standard Typ \color red * \end_inset \begin_inset Text \layout Standard Whlen Sie den Typ des Konferenz-Raums aus der Liste \end_inset \begin_inset Text \layout Standard Basis \color red * \end_inset \begin_inset Text \layout Standard Whlen Sie die aus der Liste die Abteilung, der der Konferenz-Raum zugeordnet werden soll. \end_inset \begin_inset Text \layout Standard Beschreibung \end_inset \begin_inset Text \layout Standard Kurze Beschreibung des Konferenz-Raums \end_inset \begin_inset Text \layout Standard Lebenszeit (in Tagen) \end_inset \begin_inset Text \layout Standard Geben Sie die Zeit ein, die der Konferenz-Raum existieren soll \end_inset \begin_inset Text \layout Standard Telefonnummer \color red * \end_inset \begin_inset Text \layout Standard Die Telefonnummer, unter der die Konferenz zu erreichen ist \end_inset \end_inset \layout Subsubsection \added_space_top medskip Optionen \layout Itemize PIN voreinstellen \newline Whlen Sie diese Option, wenn Sie die Konferenz mit einem allgemeinen PIN schtzen mchten. Geben Sie dazu die PIN in das Feld PIN ein. \layout Itemize Konferenz aufnehmen \begin_deeper \layout Standard Whlen Sie diese Option, wenn Sie die Konferenz aufzeichnen mchten. Whlen Sie dazu aus der Liste das gewnschte Format fr die Aufnahme. \end_deeper \layout Itemize Wartemusik bei Halten \newline Whlen Sie diese Option, wenn der oder die gehaltenen Anrufer eine Wartemusik hren sollen. \layout Itemize Sitzungsmen aktivieren \begin_deeper \layout Standard Whlen Sie diese Option, wenn Sie das Sitzungsmen aktivieren mchten. \end_deeper \layout Itemize Benachrichtige ber Zugang/Abgang von Teilnehmern \begin_deeper \layout Standard Whlen Sie diese Option, um jedesmal, wenn ein Teilnehmer die Konferenz betritt oder verlsst eine Benachrichtigung abzuspielen. \end_deeper \layout Itemize Zhle Benutzer \begin_deeper \layout Standard Whlen Sie diese Option, um die Anzahl der Teilnehmer zu zhlen. \end_deeper \layout Subsection \added_space_top bigskip Referenzen \layout Standard Unter \emph on Referenzen \emph default werden alle Verbindungen dieser Telefon-Konferenz zu anderen Objekten im LDAP-Verzeichnis aufgelistet. \the_end gosa-core-2.7.4/doc/core/de/lyx-source/logview.lyx0000644000175000017500000000617410443256377020473 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Zustzliches \layout Section Systemprotokolle \layout Subsection Filter \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Zeige Rechner \end_inset \begin_inset Text \layout Standard Whlen Sie den Rechners aus der Liste, dessen Protokoll Sie anzeigen mchten. \end_inset \begin_inset Text \layout Standard Prioritt \end_inset \begin_inset Text \layout Standard Whlen Sie die minimal Prioritt der Meldungen, damit diese angezeigt werden. \end_inset \begin_inset Text \layout Standard Zeit-Intervall \end_inset \begin_inset Text \layout Standard Whlen Sie das Zeit-Intervall aus der Liste, auf die die Meldungen beschrnkt werden. \end_inset \begin_inset Text \layout Standard Suche nach \end_inset \begin_inset Text \layout Standard Die Zeichenkette, nach der gesucht werden soll (oder '*' fr alle Meldungen) \end_inset \begin_inset Text \layout Standard Regelsatz \end_inset \begin_inset Text \layout Standard Erstellen Sie aus der Suche einen Regelsatz, um sptere Anzeigen zu beschleunige n. \end_inset \end_inset \the_end gosa-core-2.7.4/doc/core/de/lyx-source/mailqueue.lyx0000644000175000017500000001070310443761145020771 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Zustzliches \layout Section Mail-Warteschlange \layout Standard Dieses Modul dient der Anzeige der Mail-Warteschlange. Dabei kann die Anzeige mithilfe von Filtern beeinflusst werden. \layout Subsection Filter \color black \begin_inset Graphics filename images/rocket.png \end_inset \layout Standard Suche nach \emph on \noun on Zeichenkette \emph default \noun default in \emph on \noun on Warteschlange \emph default \noun default mit Status: \emph on \noun on Status \emph default \noun default innerhalb der letzten \emph on \noun on Zeitbeschrnkung: \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \emph on \noun on Zeichenkette \end_inset \begin_inset Text \layout Standard Geben Sie die Zeichenkette ein, nach der sie suchen mchten. \end_inset \begin_inset Text \layout Standard \emph on \noun on Warteschlange \end_inset \begin_inset Text \layout Standard Whlen Sie den Mail-Server aus der Liste, auf die Sie die Suche begrenzen mchten, oder \emph on Alle \emph default , wenn Sie alle Warteschlangen durchsuchen mchten. \end_inset \begin_inset Text \layout Standard \emph on \noun on Status \end_inset \begin_inset Text \layout Standard Whlen Sie den Status aus der Liste, auf den Sie die Suche begrenzen mchten. \end_inset \begin_inset Text \layout Standard \emph on \noun on Zeitbeschrnkung \end_inset \begin_inset Text \layout Standard Whlen Sie die zeitliche Beschrnkung aus der Liste, auf die Sie die Suche begrenzen mchten. \end_inset \end_inset \layout Standard Zum Durchfhren der Suche mit den vorgenommenen Einstellungen drcken Sie auf den Knopf \emph on Suchen \emph default ganz rechts. \layout Subsection Aktionen \layout Standard Mit den gefundenen Nachrichten sind weitere Aktionen mglich. Um eine Aktion auf eine oder mehrere Nachrichten anzuwenden, markieren Sie die gewnschten Nachrichten in der Liste und drcken Sie auf eines der folgenden Symbole: \layout Itemize \begin_inset Graphics filename images/edittrash.png \end_inset : Nachricht(en) aus der Warteschlange entfernen \layout Itemize \begin_inset Graphics filename images/mailq_hold.png \end_inset : Nachricht(en) aus der Warteschlange vorhalten \layout Itemize \begin_inset Graphics filename images/mailq_unhold.png \end_inset : Nachricht(en) aus der Warteschlange ausliefern \layout Itemize \begin_inset Graphics filename images/mailq_requeue.png \end_inset : Nachricht(en) neu in die Warteschlange einreihen \the_end gosa-core-2.7.4/doc/core/de/lyx-source/applications.lyx0000644000175000017500000003005210442224551021461 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Anwendungsverwaltung \layout Section Liste der Anwendungen \layout Standard Die Liste der Anwendungen dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag \series bold \color blue Anwendungen \series default \color default aus der Kategorie \series bold Administration \series default (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Anwendungen geladen (berschrift: \family sans \color black \emph on Anwendungsverwaltung \family default \emph default \color default ). \layout Standard Die Liste ist in zwei Spalten geteilt: \layout Itemize Die erste Spalte enthlt zunchst die verfgbaren Abteilungen, dann die Namen der Anwendungen (alphabetisch sortiert) \layout Itemize Die zweite Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufga ben durchzufhren (Ausschneiden, Kopieren, Bearbeiten, Entfernen) \layout Standard Die vier Knpfe \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset , und \begin_inset Graphics filename images/list_reload.png \end_inset oberhalb der Liste dienen zur Navigation innerhalb der Abteilungshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset : Zur Wurzel \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset : Eine Abteilung nach oben \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset : Zur Basis des angemeldeten Benutzers \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset : Aktuelle Abteilung neu laden \layout Standard \noindent Es ist weiterhin mglich, die Anzeige der Anwendungen mithilfe von Filtern zu beeinflussen (Kasten \series bold Filter \series default \begin_inset Graphics filename images/rocket.png \end_inset am rechten Rand): \layout Itemize \color black Nach Namen suchen : \begin_deeper \layout Standard - Klick auf \series bold * \series default zeigt alle Anwendungen an \layout Standard \color black - Klick auf einen Buchstaben zeigt alle Anwendungen an, deren Name mit dem gewhlten Buchstaben beginnt \layout Standard \color black - Klick auf eine Zahl zeigt alle Anwendungen an, deren Name mit der gewhlten Ziffer beginnt \end_deeper \layout Itemize Schnellsuche \begin_inset Graphics filename images/search.png \end_inset : Suchkriterium (z.B. Name der Anwendung) eingeben, Klick auf Knopf \emph on Filter anwenden \emph default . \layout Subsection* Eine Anwendung hinzufgen / Eine bestehende Anwendung bearbeiten \layout Standard Um eine Anwendung hinzuzufgen, klicken Sie auf den Knopf \begin_inset Graphics filename images/list_new_app.png \end_inset (Er befindet sich oberhalb der Liste). Wenn Sie keine neue Anwendung hinzufgen wollen, sondern eine vorhandene bearbeiten mchten, klicken Sie entweder auf den Eintrag in der Liste (z.B. \series bold gimp - [Bildbearbeitung] \series default ) oder auf den Knopf \begin_inset Graphics filename images/edit.png clip \end_inset des entsprechenden Eintrags. \layout Standard Es ffnet sich eine Seite mit drei Reitern ( \emph on Allgemein \emph default / \emph on Optionen \emph default / \emph on Referenzen \emph default ). Diese dienen dazu, die Eigenschaften der Anwendung logisch aufzuteilen (Unter \emph on Allgemein \emph default werden die generellen Eigenschaften der Anwendung konfiguriert, \emph on Optionen \emph default dient dazu, Umgebungsvariablen fr die Anwendung zu setzen und \emph on Referenzen \emph default zeigt an, von welchen Objekten (Benutzer, Gruppen, etc.) die gewhlte Anwendung verwendet wird). \layout Standard Um nderungen zu speichern, verwenden Sie den Knopf \emph on Anwenden \emph default . Um die vorgenommenen nderungen zu verwerfen und wieder in die Liste der Anwendungen zu gelangen, verwenden Sie den Knopf \emph on Abbrechen \emph default . \layout Standard Die Felder, die mit einem roten Sternchen enden, sind Pflichtfelder und mssen zwingend ausgefllt werden (GOsa wird die nderungen sonst nicht bernehmen). \layout Standard Im Folgenden werden die Reiter ausfhrlich beschrieben. \layout Subsection \pagebreak_top Allgemein \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \color black Name der Anwendung \color red * \end_inset \begin_inset Text \layout Standard Der allgemeine Name der Anwendung (Kurzform), z.B. \series bold gimp \end_inset \begin_inset Text \layout Standard Angezeigter Name \end_inset \begin_inset Text \layout Standard Der angezeigte Name der Anwendung, z.B. GIMP \end_inset \begin_inset Text \layout Standard Ausfhren \color red * \end_inset \begin_inset Text \layout Standard Der Befehl, der verwendet werden soll, um die Anwendung zu starten (z.B. \series bold gimp-remote-2.2 %U \series default ) \end_inset \begin_inset Text \layout Standard Beschreibung \end_inset \begin_inset Text \layout Standard Eine kurze Beschreibung der Anwendung (z.B. \series bold Bildbearbeitung \series default ) \end_inset \begin_inset Text \layout Standard Basis \color red * \end_inset \begin_inset Text \layout Standard Die Abteilung, in die diese Anwendung eingefgt werden soll. \end_inset \begin_inset Text \layout Standard Symbol \end_inset \begin_inset Text \layout Standard Das zugehrige Symbol zur Anwendung. Die Auswahl erfolgt mit dem Knopf rechts neben dem Eingabefeld (je nach Browser unterschiedlich). Um das Symbol mit der Anwendung zu verknpfen, klicken Sie auf den Knopf \emph on Anwenden \emph default . \end_inset \end_inset \layout Subsubsection Optionen \layout Itemize \emph on Nur ausfhrbar fr Gruppen-Mitglieder \begin_deeper \layout Standard Wenn diese Option gewhlt ist, drfen nur Mitglieder einer entsprechenden UNIX- oder Objektgruppe die Anwendung ausfhren (Es werden die Rechte der Datei unter \emph on Ausfhren \emph default angepasst, daher ist diese Option nur sinnvoll, wenn die Anwendung nur einer Gruppe zugeordnet ist). \end_deeper \layout Itemize \emph on Konfiguration bei jedem Start ersetzen \begin_deeper \layout Standard Wenn diese Option gewhlt ist, wird bei jedem Start der Anwendung die vorhandene Konfiguration mit der Standardkonfiguration berschrieben. \end_deeper \layout Itemize \emph on Platziere das Symbol auf dem Desktop der Gruppenmitglieder \begin_deeper \layout Standard Wenn diese Option gewhlt ist, erscheint das Anwendungssymbol auf dem Desktop der Gruppenmitglieder. \end_deeper \layout Itemize \emph on Platziere einen Eintrag im Startmen der Gruppenmitglieder \begin_deeper \layout Standard Wenn diese Option gewhlt ist, erscheint die Anwendung als Eintrag im Startmen der Gruppenmitglieder. \end_deeper \layout Itemize \emph on Platziere einen Eintrag in der Kontrollleiste der Gruppenmitglieder \begin_deeper \layout Standard Wenn diese Option gewhlt ist, erscheint die Anwendung als Symbol in der Kontrollleiste der Gruppenmitglieder. \end_deeper \layout Subsubsection \added_space_top medskip Skript \layout Standard Der Inhalt dieser Textbox wird beim Start der Anwendung ausgefhrt. Sie knnen entweder das Skript direkt in der Textbox editieren, oder ein vorhandenes Skript hochladen (Dazu klicken Sie auf den Knopf rechts neben der Eingabezeile unterhalb der Textbox - dieser ist je nach Browser unterschied lich - und whlen das gewnschte Skript aus. Um das gewhlte Skript in das Fenster zu laden, klicken Sie auf den Knopf \emph on Hochladen \emph default . \layout Standard Beispiele fr die Verwendung eines Skriptes: \layout Itemize Erstellen von Verzeichnissen \layout Itemize Setzen von Konfigurationsparametern \layout Subsection \added_space_top bigskip Optionen \layout Standard Der Reiter \emph on Optionen \emph default dient dazu, Umgebungsvariablen fr Anwendungen zu setzen. Standardmssig sind Optionen deaktiviert und mssen zunchst mit einem Klick auf den Knopf \emph on Optionen aktivieren \emph default hinzugefgt werden. Die verfgbaren Felder auf der Seite sind in der folgenden Tabelle beschrieben: \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Variable \end_inset \begin_inset Text \layout Standard Name der Variablen \end_inset \begin_inset Text \layout Standard Standardwert \end_inset \begin_inset Text \layout Standard Der Standardwert der Variablen (kann berschrieben werden) \end_inset \end_inset \layout Standard \added_space_top medskip Um eine neue Variable hinzuzufgen, verwenden Sie den Knopf \emph on Option hinzufgen \emph default . Um eine vorhanden Variable zu entfernen, verwenden Sie den Knopf \emph on Entfernen \emph default . \layout Subsection Referenzen \layout Standard Der Reiter \emph on Referenzen \emph default dient dazu, sich einen berblick zu verschaffen, von welchen Objekten diese Anwendung verwendet wird. In der Regel werden dies UNIX-Gruppen sein, andere Objekt-Typen sind jedoch mglich. \the_end gosa-core-2.7.4/doc/core/de/lyx-source/groups.lyx0000644000175000017500000005024110442224551020314 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language ngerman \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 1 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title \series bold Gruppenverwaltung \layout Section Liste der Gruppen \layout Standard Die Liste der Gruppen dient als Ausgangspunkt fr alle weiteren Schritte. Sie wird erreicht ber den Meneintrag \series bold \color blue Gruppen \series default \color default aus der Kategorie \series bold Administration \series default (Men am linken Rand des Bildschirms). Bei Auswahl wird die Liste der Gruppen geladen (berschrift: Gruppenverwaltung). Auf dieser Seite knnen Gruppen hinzugefgt, bearbeitet oder entfernt werden. \layout Standard Die Liste ist in drei Spalten geteilt: \layout Itemize Die erste Spalte enthlt zunchst die verfgbaren Abteilungen, dann die Namen der Gruppn (alphabetisch sortiert) \layout Itemize Die zweite Spalte enthlt Knpfe fr den Schnellzugriff auf die verschiedenen Reiter der Gruppe (nur verfgbar, wenn die entsprechende Erweiterung aktiviert ist). Sie dient daher ausserdem fr einen schnellen berblick ber die aktivierten Erweiterungen einer Gruppe \begin_deeper \layout Itemize Die mglichen Symbole und ihre Bedeutung: \newline \begin_inset Tabular \begin_inset Text \layout Standard Symbol \end_inset \begin_inset Text \layout Standard Bedeutung \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_groups.png \end_inset \end_inset \begin_inset Text \layout Standard Gruppe verfgt ber UNIX-Eigenschaften \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/smallenv.png \end_inset \end_inset \begin_inset Text \layout Standard Gruppe verfgt ber Umgebungs-Einstellungen \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/mailto.png \end_inset \end_inset \begin_inset Text \layout Standard Gruppe verfgt ber ein Mail-Konto \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_winstation.png \end_inset \end_inset \begin_inset Text \layout Standard Gruppe verfgt ber SAMBA-Eigenschaften \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_application.png \end_inset \end_inset \begin_inset Text \layout Standard Gruppe verfgt ber Anwendungs-Eigenschaften \end_inset \end_inset \end_deeper \layout Itemize Die dritte Spalte enthlt Knpfe fr die mglichen Aktionen, um Verwaltungsaufga ben durchzufhren (Ausschneiden, Kopieren, Bearbeiten, Entfernen) \layout Standard \added_space_bottom medskip Die Knpfe ( \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset , \begin_inset Graphics filename images/list_reload.png \end_inset ) dienen zur Navigation innerhalb der Abteilungshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset Zur Wurzel \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset Eine Abteilung nach oben \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset Zur Basis des Benutzers \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset Aktuelle Abteilung neu laden \layout Standard Es ist weiterhin mglich, die Anzeige der Gruppen mithilfe von Filtern zu beeinflussen (Kasten \series bold Filter \series default \begin_inset Graphics filename images/rocket.png \end_inset am rechten Rand): \layout Itemize \color black Nach Namen suchen: \begin_deeper \layout Itemize Klick auf * zeigt alle Gruppen an \layout Itemize Klick auf einen Buchstaben zeigt alle Gruppen an, deren Namen mit dem gewhlten Buchstaben beginnt \layout Itemize Klick auf eine Ziffer zeigt alle Gruppen an, deren Name mit der gewhlten Ziffer beginnt \end_deeper \layout Itemize Weitere Suchoptionen: \newline (Die folgenden Filter arbeiten so, dass nur Gruppen angezeigt werden, die ber mindestens eine der ausgewhlten Optionen verfgen; Standardmssig werden alle Gruppen angezeigt \begin_deeper \layout Itemize \emph on Zeige primre Gruppen \emph default : Zeigt Gruppen, die fr mindestens einen Benutzer die primre Gruppe ist \layout Itemize \emph on Zeige Samba-Gruppen \emph default : Zeigt Gruppen, die ber Samba-Eigenschaften verfgen \layout Itemize \emph on Zeige Anwendungs-Gruppen \emph default : Zeigt Gruppen, die ber Anwendungs-Eigenschaften verfgen \layout Itemize \emph on Zeige E-Mail-Gruppen \emph default : Zeigt Gruppen, die ber ein Mail-Konto verfgen \layout Itemize \emph on Zeige Funktions-Gruppen \emph default : Zeigt Gruppen, die nur ber die generischen Attribute verfgen \end_deeper \layout Itemize Komplexere Einschrnkungen ber regulre Ausdrcke bieten die Textfelder im unteren Bereich des Kastens Filter: \begin_deeper \layout Itemize Im ersten Feld kann nach Namen gesucht werden, die auf den eingebenen regulren Ausdruck passen. \layout Itemize Im zweiten Feld kann nach Gruppen anhand eines eingebenen Benutzerausdrucks gesucht werden, es werden also Gruppen gefunden, in denen ein auf den Suchausdr uck passender Benutzer Mitglied ist. \end_deeper \layout Subsection* Gruppe anlegen \layout Standard Um eine neue Gruppe anzulegen klicken Sie auf den Knopf \begin_inset Graphics filename images/list_new_group.png \end_inset . Befolgen Sie dann die nachfolgende Beschreibung fr die Bearbeitung bestehender Gruppen. \layout Subsubsection* Eine bestehende Gruppe bearbeiten \layout Standard Klicken Sie in der Liste der Gruppen auf den Gruppennamen der Gruppe, die Sie bearbeiten mchten. Die Seite, die nun geladen wird, verfgt ber Reiter, die jeweils fr eine Erweiterung stehen (aktuell sind dies u.a. Allgemein, Umgebung, Anwendungen, Mail, Zugriffsregeln, usw.). \layout Subsubsection* Generelle Informationen \layout Itemize Um die Bearbeitung der Gruppe (auch neuer Gruppen) abzuschliessen, drcken Sie auf den Knopf \emph on Speichern \emph default unten rechts; Um den Vorgang zu verwerfen, drcken Sie auf den Knopf \emph on Abbrechen \emph default , der sich ebenfalls unten rechts befindet. \layout Itemize Alle Felder, die mit einem roten Sternchen \color red * \color default enden, sind Pflichtfelder und mssen daher zwingend ausgefllt werden. \layout Itemize In der rechten, oberen Ecke findet sich der komplette dn der aktuell geffneten Gruppe. \layout Subsection \pagebreak_top Allgemein \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Gruppenname \color red * \end_inset \begin_inset Text \layout Standard Der Name der Gruppe \end_inset \begin_inset Text \layout Standard Beschreibung \end_inset \begin_inset Text \layout Standard Die Beschreibung (oder ein Kommentar) der Gruppe \end_inset \begin_inset Text \layout Standard Basis \color red * \end_inset \begin_inset Text \layout Standard Die Abteilung der Gruppe (Die Verwaltung der Abteilungen geschieht ber den Knopf \series bold \color blue Abteilungen \series default \color default im linken Men). \end_inset \end_inset \layout Itemize \emph on Erzwinge GID \emph default : Mit dieser Funktion kann die UNIX GID einmalig auf bestimmten Wert gesetzt werden \layout Itemize [Samba-Gruppe] \emph on in der Domain \emph default [Domne]: Diese Einstellung legt fest, ob die Gruppe auch fr Windows-Benutzer aktviert ist. Dabei knnen Sie die folgenden Einstellungsmglichkeiten whlen: \begin_deeper \layout Itemize \emph on Samba-Gruppe \emph default : Die Gruppe ist eine normale Samba-Gruppe \layout Itemize \emph on Domnen-Administratoren \emph default : Die Gruppe ist speziell fr Domnen-Administratoren \layout Itemize \emph on Domnen-Benutzer \emph default : Die Gruppe ist speziell fr Domnen-Benutzer \layout Itemize \emph on Domnen-Gste \emph default : Die Gruppe ist speziell fr Domnen-Gste \end_deeper \layout Itemize \emph on Mitglieder sind in einer Telefon-Gruppe \emph default : Diese Funktion dient dazu, organisatorische Bereiche auch telefonisch abzutrennen. Weitere Dokumentation wird folgen. \layout Itemize \emph on Gruppenmitglieder \emph default : Die Gruppe verfgt ber Mitglieder, die in dieser Liste aufgefhrt werden. Es knnen Mitglieder hinzugefgt und entfernt werden: \begin_deeper \layout Itemize \emph on Hinzufgen \emph default : Um ein Gruppenmitglieder hinzuzufgen, drcken Sie auf den Knopf \emph on Hinzufgen \emph default . Whlen Sie aus der Liste einen oder mehrere Benutzer und drcken Sie auf den Knopf \emph on Hinzufgen \emph default . Die neuen Mitglieder werden nun in der Liste aufgefhrt. \newline Wenn Sie den Vorgang abbrechen mchten, drcken Sie auf den Knopf \emph on Abbrechen \emph default . \end_deeper \layout Subsection \added_space_top bigskip Umgebung \layout Standard Um die Umgebungs-Erweiterung zu aktivieren, drcken Sie auf den Knopf \emph on Umgebungs-Erweiterung hinzufgen \emph default . Um die Umgebungs-Erweiterung wieder zu entfernen, drcken Sie auf den Knopf \emph on Umgebungs-Erweiterung entfernen \emph default . \layout Subsubsection Profile \layout Itemize \emph on Benutze Profil-Verwaltung \emph default : \begin_deeper \layout Itemize \emph on Profil-Pfad \emph default : \layout Itemize \emph on Profil-Kontingent \emph default : \layout Itemize \emph on Profil lokal zwischenspeichern \emph default : \end_deeper \layout Itemize \emph on Kiosk-Profil \emph default : Wenn die Gruppe ber ein Kiosk-Profil verfgen soll, whlen Sie das gewnschte Profil aus der Liste. \begin_deeper \layout Itemize \emph on Verwalten \emph default : Um die Kiosk-Profile zu verwalten, klicken Sie auf den Knopf \emph on Verwalten \emph default . Hier knnen Sie vorhandene Kiosk-Profile entfernen, sowie neue Kiosk-Profile hinzufgen. \end_deeper \layout Itemize \emph on Auflsung nderbar whrend des Betriebs \emph default : Wenn Sie mchten, dass Mitglieder dieser Gruppe die Auflsung Ihres Arbeitspla tzrechners whrend der Sitzung ndern drfen, aktivieren Sie diese Option. \layout Itemize \emph on Auflsung \emph default : Legen Sie die Auflsung fr Arbeitsplatzrechner, die dieses Kiosk-Profil verwenden, fest, indem Sie die gewnschte Auflsung aus der Liste whlen. Um automatisch die beste Auflsung zu verwenden, whlen Sie \emph on auto \emph default . \layout Subsubsection Freigaben \layout Subsubsection \added_space_top medskip Anmelde-Skripte \layout Subsubsection \added_space_top medskip Hotplug-Gerte \layout Subsubsection \added_space_top medskip Drucker \layout Subsection \added_space_top bigskip Anwendungen \layout Standard Um die Anwendungs-Eigenschaften fr diese Gruppe zu aktivieren, drcken Sie auf den Knopf \emph on Anwendungen erstellen \emph default . Um die Anwendungs-Eigenschaften wieder zu entfernen, drcken Sie auf den Knopf \emph on Anwendung entfernen \emph default . \layout Subsection \added_space_top bigskip Mail \layout Standard Ein Mail-Konto einer Gruppe ist ein gemeinsam genutzter Ordner ( \emph on Shared Folder \emph default ) auf einem IMAP-Server, d.h. dass mehr als ein Benutzer Zugriff auf die Mails in diesem Ordner hat. Diese Ordner sind sinnvoll, um z.B. Verteiler anzulegen, aber auch, um Dateien (wie z.B. Kalender oder Adressbcher) abzulegen. Um ein Mail-Konto fr die Gruppe zu erstellen, drcken Sie auf den Knopf \emph on Neues Mail-Konto erzeugen \emph default . Um ein vorhandenes Mail-Konto wieder zu entfernen, drcken Sie auf den Knopf \emph on Mail-Konto entfernen \emph default . \layout Subsubsection Allgemein \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Primre Adresse \color red * \end_inset \begin_inset Text \layout Standard Die primre Adresse des gemeinsam genutzten Ordners \end_inset \begin_inset Text \layout Standard Server \end_inset \begin_inset Text \layout Standard Whlen Sie den Mail-Server aus der Liste, auf dem das Konto verwaltet wird. \end_inset \begin_inset Text \layout Standard Kontingent-Nutzung \end_inset \begin_inset Text \layout Standard Zeigt die Ausnutzung des Kontingents an (Wenn ein Kontingent definiert wurde) \end_inset \begin_inset Text \layout Standard Kontingent-Gre \end_inset \begin_inset Text \layout Standard Die Grsse des Kontingents der Mail-Benutzung der Gruppe (in KB). Dies betrifft ein- u. ausgehende Mail. \end_inset \end_inset \layout Subsubsection \added_space_top medskip Alternative Adressen \layout Standard Alternative Adressen sind weitere Adressen, unter denen der gemeinsam genutzte Ordner Mails empfangen soll. \layout Standard Verwenden Sie den Knopf \emph on Hinzufgen \emph default um eine alternative Adresse hinzuzufgen. Wenn Sie eine Adresse entfernen mchten, markieren Sie diese und drcken Sie auf den Knopf \emph on Entfernen \emph default . \layout Subsubsection \added_space_top medskip Geteilter Ordner \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Standard-Berechtigungen \end_inset \begin_inset Text \layout Standard Whlen Sie die Berechtigung, die fr alle Benutzer gilt, die nicht explizit aufgefhrt sind. \end_inset \begin_inset Text \layout Standard Mitglieder-Berechtigungen \end_inset \begin_inset Text \layout Standard Whlen Sie die Berechtigung, die fr alle Benutzer gilt, die Mitglieder in dieser Gruppe sind. \end_inset \begin_inset Text \layout Standard Weitere Email-Adresse \end_inset \begin_inset Text \layout Standard Whlen Sie die Berechtung fr eine weitere Email-Adresse. Drcken Sie auf \emph on Hinzufgen \emph default , um die Adresse mit der Berechtigung hinzuzufgen. \end_inset \end_inset \layout Subsubsection \added_space_top medskip Weiterleiten der Nachrichten an nicht-Gruppenmitglieder \layout Standard Mithilfe dieser Eigenschaften knnen Nachrichten, die an den gemeinsam genutzten Order geschickt werden, automatisch an weitere Adressen versendet werden. Geben Sie dazu in das Textfeld die Adresse ein, die Mails empfangen soll und drcken Sie auf den Knopf \emph on Hinzufgen \emph default . Wenn Sie einen oder mehrere Benutzer in die Liste aufnehmen mchten, die in dieser Organisation bereits ber ein Mail-Konto verfgen, drcken Sie auf den Knopf \emph on Lokale hinzufgen \emph default . Whlen Sie den oder die gewnschten Benutzer aus der Liste, in dem Sie diese markieren und klicken Sie auf den Knopf \emph on Hinzufgen \emph default , um Sie in die Liste zu bernehmen. \layout Subsection \added_space_top bigskip Zugriffsregeln \layout Standard Mithilfe der Zugriffsregeln kann fein granuliert eingestellt werden, ber welchen GOsa-spezifischen Rechte die Mitglieder dieser Gruppe verfgen. \layout Subsection \added_space_top bigskip Referenzen \layout Standard Unter Referenzen werden alle Verbindungen dieser Gruppe zu anderen Teilen des LDAP-Baumes angezeigt. \the_end gosa-core-2.7.4/doc/core/fr/0000755000175000017500000000000011752422550014146 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/0000755000175000017500000000000011752422550015112 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/users/0000755000175000017500000000000011752422550016253 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/users/list_root.png0000644000175000017500000000152410437070613020777 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/fr/html/users/search.png0000644000175000017500000000177710437070613020240 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/fr/html/users/node33.html0000644000175000017500000000300110766256174020241 0ustar mikemike Informations gnrales

    Informations gnrales

    Fax* Insrez le numro de fax de l'utilisateur
    Langue Faites votre slection dans la liste droulante
    Format de distribution Faites votre slection dans la liste droulante




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node20.html0000644000175000017500000000465410766256174020254 0ustar mikemike Options du compte de messagerie

    Options du compte de messagerie

    Gestion des options du compte de messagerie de l'utilisateur :

    • Aucune distribution des messages dans la boite de l'utilisateur : envoie une copie l'adresse mentionne dans transfrer les messages vers , sans en mettre une copie dans la messagerie de l'utilisateur.
    • Activer la notification d'absence : envoie le message crit dans message d'absence.
    • Dplacer les messages ayant un niveau de spam suprieur (a) vers le rpertoire (b) : envoie les messages ayant un score suprieur (a) dans le rpertoire (b).
    • Rejeter les messages plus gros que (c) MB : ne pas accepter les messages plus gros que (c) MB.
    • Utilisez les boutons Ajouter ou Ajouter en local pour la gestion des adresses :

      - Le bouton Ajouter en local permet de slectionner parmis la liste des adresses locales.

      - Le bouton Ajouter permet l'ajout d'adresses extrieures au systme.

      - Utilisez le bouton Supprimerpour effacer les adresses de messagerie.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node12.html0000644000175000017500000000170510766256174020247 0ustar mikemike Kiosk profile

    Kiosk profile




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node10.html0000644000175000017500000000323210766256174020242 0ustar mikemike Environnement

    Environnement

    Cliquez sur le bouton ajouter une extension environnemental pour voir apparatre les diffrents points destins la configuration environnementale de l'utilisateur.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node34.html0000644000175000017500000000255010766256174020252 0ustar mikemike Mthodes de distribution

    Mthodes de distribution

    • Desactiver temporairement l'utilisation du fax : interdit l'utilisation du fax par cet utilisateur.
    • Dlivrer les fax comme des mails : envoie les fax sous le format de distribution dfini dans la messagerie de l'utilisateur
    • Imprimer directement les fax : permet de slectionner l'imprimante laquelle envoyer les fax reus par cet utilisateur




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node25.html0000644000175000017500000000313210766256174020247 0ustar mikemike Options d'accs

    Options d'accs

    • Il s'agit de la gestion du mot de passe de l'utilisateur. Diffrentes propositions peuvent tre coches la fois mais l'administrateur doit veiller rester cohrent pour viter les conflits dans l'application de ses choix.
    • Le champ droite doit tre rempli par les noms de stations partir desquelles l'utilisateur peut se connecter. L'administrateur doit utiliser les boutons Ajouter pour y insrer les noms de stations. Le bouton Ajouter renvoie la liste des stations. Utilisez le bouton Supprimer pour effacer des stations.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/list_new_user.png0000644000175000017500000000142410437070613021642 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "Ω2IDAT8ˍKHT{XfYkT{HaPTPAI )*-Z1l A$A5BT"hX#fFf²(:&<noŏEfmƿ[I0bKt0-t6"G){0|砨8h[א[Z?j=IK4nK{̖="B|nקis3VP>بH$r:bqih !"~Z.I !J|eRBNA(i{ @](dw=/ݼ2LCAW=w*Մi 4*A{p)|nu"Tsht <®) aIo喭=B~@`ݾէw:uB33QĞsȩk2WHKPո(ɺm%+ z=h*x“mҎQ t~ХSIENDB`gosa-core-2.7.4/doc/core/fr/html/users/users.css0000644000175000017500000000221010766256174020134 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } #hue171 { color: #000000; } #hue327 { color: #ff0000; } #hue64 { color: #ff0000; } #hue75 { color: #ff0000; } gosa-core-2.7.4/doc/core/fr/html/users/labels.pl0000644000175000017500000000025010437070613020045 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/users/node29.html0000644000175000017500000000202610766256174020254 0ustar mikemike Compte WebDAV
    Compte WebDAV

    Si vous activez l'option WebDav, l'utilisateur aura accs au serveur WebDAV



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node1.html0000644000175000017500000001645610766256174020176 0ustar mikemike Utilisateurs

    Utilisateurs

    L'administrateur peut crer ou modifier un compte ou accder aux informations sur un compte en cliquant sur le bouton utilisateurs de la partie Administration dans le menu gauche. La page Administration des utilisateurs s'affiche, elle est divise en trois colonnes. Au fur et mesure que les utilisateurs sont configurs ils apparatront dans la premire colonne, classs selon leur dpartement.

    Les deux dernires colonnes comportent des icnes qui sont des raccourcis vers les proprits de chaque utilisateur et les actions excuter sur l'utilisateur. Les flches en entte ( Image list_back, Image list_root, Image list_home ) servent modifier l'affichage selon le dpartement, elles prdominent sur toutes autres slections d'affichage.

    C'est partir de la page Administration des utilisateurs que l'administrateur systme aura une vue globale et pourra grer la liste des utilisateurs.

    Dans la partie droite de la page se trouve un tableau intitul Filtres Image rocket.

    • Ce tableau sert modifier l'affichage de la liste des utilisateurs :

      - Cliquer sur une lettre pour que s'affichent tous les utilisateurs dont le nom commence par la lettre slectionne;

      - Cliquez sur l'astrisque et tous les noms d'utilisateurs apparatront classs alphabtiquement.

    • Plus bas d'autres possibilits d'affichage sont possibles :

      - Cochez une ou plusieurs propositions pour un affichage cibl;

      - Insrez soit une lettre soit un numro tous deux suivis de l'astrisque soit un nom d'utilisateur dans le champ prcd d'une loupe Image search, cette icne symbolise la recherche d'un item. Cliquez sur le bouton Appliquer pour faire apparatre le(s) utilisateur(s) recherch(s).

    Pour crer un compte cliquez sur Image list_new_user. Si le compte est dj cr cliquez sur le compte lui-mme.

    Apparat alors l'espace de configuration munie d'onglets qui reprsentent chacun un espace de configuration. Ces onglets sont des extensions apportes GOsa. L'administrateur configure ces extensions pour chaque utilisateur.

    Pour terminer la configuration, cliquez sur le bouton Termin en bas droite. Pour revenir la liste des utilisateurscliquez sur le bouton Annuler.


    Tous les champs prcds d'une astrisque doivent tre remplis obligatoirement.

    Dans le haut droite vous avez la fois l'identite de l'utilisateur sur lequel vous travaillez mais aussi sa place dans l'arbre LDAP.

    L'image Image closedlock signale que l'utilisateur est en mode verrouill. Ce mode pemet d'viter les modifications simultanes.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node4.html0000644000175000017500000000635010766256174020171 0ustar mikemike Informations sur l'entreprise

    Informations sur l'entreprise

    Entreprise Introduisez le nom de la socit
    Dpartement Introduisez le nom du dpartement auquel appartient l'utilisateur
    N° du dpartement Introduisez le numro du dpartement
    N° de l'employ Introduisez le numro attribu l'utilisateur
    Type de l'employ Prcisez son statut dans la socit
    N° du bureau Introduisez le numro du bureau dans lequel travaille l'utilisateur
    Tlphone Introduisez le numro de tlphone de l'utilisateur
    Portable Introduisez le numro du mobile ou GSM de l'utilisateur
    Bip Introduisez le numro du bipeur de l'utilisateur
    Fax Introduisez le numro de Fax de l'utilisateur
    Lieu Introduisez la localisation du bureau de l'utilisateur si la socit possde des succursales
    Dpartement Introduisez le nom de la rgion o la socit est localise ?
    Adresse Introduisez l'adresse de l'entreprise




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node42.html0000644000175000017500000000326510766256174020255 0ustar mikemike About this document ...

    About this document ...

    ADMINISTRATION DES UTILISATEURS

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/users/ users.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/WARNINGS0000644000175000017500000000025510766256174017443 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/users/users.html0000644000175000017500000000724410766256174020324 0ustar mikemike ADMINISTRATION DES UTILISATEURS

    ADMINISTRATION DES UTILISATEURS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node18.html0000644000175000017500000000340110766256174020250 0ustar mikemike Informations gnrales

    Informations gnrales

    Adresse principale* Introduisez l'adresse de messagerie de l'utilisateur
    Serveur Slectionnez le serveur ou est stocke le compte de messagerie de l'utilisateur
    Utilisation des quota Prcisez si vous dsirez appliquer un quota au niveau du compte de messagerie de l'utilisateur
    Tailles du quota Prcisez en KB la taille du quota




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node22.html0000644000175000017500000000261510766256174020251 0ustar mikemike Samba

    Samba

    Pour crer un compte samba pour un utilisateur cliquez sur le bouton Crer un compte samba.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/rocket.png0000644000175000017500000000147410437070613020254 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/fr/html/users/node16.html0000644000175000017500000000167710766256174020263 0ustar mikemike Imprimante

    Imprimante




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/list_home.png0000644000175000017500000000154110437070613020743 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/fr/html/users/node32.html0000644000175000017500000000272310766256174020252 0ustar mikemike Fax

    Fax

    Pour crer un compte Fax pour un utilisateur cliquez sur le bouton Crer un compte Fax.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node2.html0000644000175000017500000000241210766256174020162 0ustar mikemike Informations gnrales

    Informations gnrales



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node39.html0000644000175000017500000000322410766256174020256 0ustar mikemike Matriel tlphonique

    Matriel tlphonique

    Tlphone Faites votre slection dans la liste droulante
    VoicemailPIN* Introduisez le code PIN utilis par l'utilisateur pour atteindre sa bote vocale.
    Phone PIN* Introduisez le code PIN utilis par l'utilisateur pour dverouiller son tlphone.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/list_back.png0000644000175000017500000000153610437070613020717 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Compte

    Compte

    Il s'agit de la gestion du mot de passe de l'utilisateur. Diffrentes propositions peuvent tre coches la fois mais l'administrateur doit veiller rester cohrent pour viter les conflits dans l'application de ses choix.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node27.html0000644000175000017500000000214010766256174020247 0ustar mikemike Compte Proxy
    Compte Proxy

    Si vous activez l'option Proxy pour l'utilisateur vous pouvez filtrer sur le contenu, limit l'accs certaines heures et restreindre le tlchargement.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node13.html0000644000175000017500000000170510766256174020250 0ustar mikemike Logon scripts

    Logon scripts




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node30.html0000644000175000017500000000206410766256174020246 0ustar mikemike Compte PHPGroupware
    Compte PHPGroupware

    Si vous activez l'option PHPGroupware, l'utilisateur aura accs au logiciel PHPGroupware



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node23.html0000644000175000017500000000355610766256174020257 0ustar mikemike Informations gnrales

    Informations gnrales

    Rpertoire Home Indiquez le chemin du rpertoire personnel de l'utilisateur en notation UNC ex: \\SERVER\homes\utilisateur. Choisissez dans la liste droulante la lettre associe au rpertoire personnel de l'utilisateur.
    Domaine Slctionnez le domaine dans lequel se trouve la machine de l'utilisateur
    Chemin du Script Indiquez le script de dmarrage de l'utilisateur
    Chemin du Profile Indiquez le chemin pour accder au profile de l'utilisateur




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node24.html0000644000175000017500000000750510766256174020256 0ustar mikemike Serveur de terminal

    Serveur de terminal

    • Permet la connexion sur un serveur de terminal
    Rpertoire Home Indiquez le chemin du rpertoire personnel de l'utilisateur en notation UNC ex: \\SERVER\homes\utilisateur. Choisissez dans la liste droulante la lettre associe au rpertoire personnel de l'utilisateur.
    Chemin du Profile Indiquez le chemin pour accder au profile de l'utilisateur

    • Hrite de la configuration du client
    Programme initial Indiquez le chemin vers l'application par dfaut
    Rpertoire Home Indiquez le chemin pour accder au repertoire de base de l'application ?

    • Configuration du temps d'attente (en minutes) :
    Connexion Cochez afin d'indiquer le temps d'attente maximum lors d'une connexion
    Dconnexion Cochez afin d'indiquer le temps d'attente maximum lors d'une dconnexion
    En attente Cochez afin d'indiquer le temps d'attente maximum lors d'une requte

    • Priphriques clients :
    Connecter les lecteurs clients l'identification Cochez afin de connecter les lecteurs de l'utilisateur lors de l'identification
    Connecter les imprimantes clients l'identification Cochez afin de connecter les imprimantes de l'utilisateur lors de l'identification
    Imprimante par dfaut Cochez afin de dfinir l'imprimante par dfaut de l'utilisateur lors de l'identification

    • Divers :

      - Masquer : ?

      - Sur interrompu ou temps d'attente dpass : permet de choisir si il faut dconnecter le client ou faire une remise zro.

      - Reconnexion si dconnect : permet de choisir si la reconnexion doit tre faite depuis le mme client, ou si elle peut tre effectue depuis un autre client.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node26.html0000644000175000017500000000311010766256174020244 0ustar mikemike Connectivit

    Connectivit

    L'administrateur peut affiner la gestion du compte de l'utilisateur en configurant les services supplmentaires auquel il peut se connecter.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node5.html0000644000175000017500000000271010766256174020166 0ustar mikemike Unix

    Unix

    Pour activer le compte Unix pour un utilisateur cliquez sur le bouton crer un compte unix.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node17.html0000644000175000017500000000303510766256174020252 0ustar mikemike Mail

    Mail

    Le compte mail est li au serveur de messagerie. Pour activer le compte de messagerie d'un utilisateur cliquez sur Crer un compte mail.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node15.html0000644000175000017500000000171310766256174020251 0ustar mikemike Hotplug devices

    Hotplug devices




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node40.html0000644000175000017500000000202510766256174020244 0ustar mikemike Phone macro

    Phone macro

    Permet de slctionner une macro mettre dans le tlphone de l'utilisateur.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node36.html0000644000175000017500000000330610766256174020254 0ustar mikemike Listes rouges

    Listes rouges

    Le fax est aujourd'hui frquemment utilis pour distribuer des messages publicitaires. Certains peuvent tre apparents des spams. Pour viter que les utilisateurs soient submergs par ces messages, l'administrateur peut instaurer une liste rouge reprenant les numros de fax indsirables qu'ils soient entrant ou sortant.

    En cliquant sur le bouton Edit vous faites apparatre une page comprenant deux listes, du ct gauche on trouve les numros refuss pour cet utilisateur, du cte droit on retrouve les listes rouges prdefinies par l'administrateur.

    Selectionnez la ou les listes que vous dsirez utiliser dans la liste de droite et cliquer sur Ajouter la liste rouge pour l'activer.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node6.html0000644000175000017500000000406110766256174020170 0ustar mikemike Informations gnrales

    Informations gnrales

    Rpertoire home Introduisez le chemin vers le rpertoire de l'utilisateur
    Shell Choisir dans la liste droulante le type de shell (console) utilis
    Groupe principal Indiquez le groupe principal auquel appartient l'utilisateur. (Pour la cration de groupe allez au bouton Groupes dans le menu de gauche dans la partie Administration)
    Statut Indique si le compte est activ ou non
    Forcer l'UID/GID Cochez si vous dsirez forcer l'uid/gid de l'utilisateur une certaine valeur




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node28.html0000644000175000017500000000226310766256174020256 0ustar mikemike Compte FTP
    Compte FTP

    Si vous activez l'option FTP, vous pouvez rgler la bande passante montante et descendante, le ratio des donnes et le quota ne pas dpasser pour le transfert de fichiers . Vous pouvez aussi partir de cet endroit dsactiver le compte FTP.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node21.html0000644000175000017500000000265510766256174020254 0ustar mikemike Options de messagerie avances

    Options de messagerie avances

    • Les utilisateurs ne sont autoriss qu'a envoy et recevoir des emails locaux : l'administrateur peut forcer l'envoi et la reception des messages en local uniquement.
    • Utiliser des scripts sieve personnaliss : l'administrateur peut crire des scripts sieve qui tablissent les rgles de gestion de la messagerie. Attention ! cela dsactive toutes les options de messagerie.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node9.html0000644000175000017500000000305510766256174020175 0ustar mikemike Systme de confiance

    Systme de confiance

    Le systme de confiance sert grer l'accs de l'utilisateur aux diffrents systmes, phriphriques, etc... . Le systme de confiance peut tre en mode :

    • dsactiv,
    • accs complet : l'utilisateur l'accs complet aux systmes,
    • permettre l'accs ces htes :

      - Utilisez le bouton Ajouter pour faire apparatre la liste des htes auxquels l'utilisateur pourrait avoir accs,

      - Utilisez le bouton Supprimer pour effacer les htes auxquels l'utilisateur n'a plus accs.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node35.html0000644000175000017500000000277510766256174020264 0ustar mikemike Numros de fax alternatif

    Numros de fax alternatif

    L'administrateur peut complter la configuration du fax par une srie d'autres numros de fax utiliss dans la socit. Utilisez les boutons Ajouter, Ajouter en local pour remplir le champ.

    • Le bouton Ajouter en local renvoie la liste des numros de fax.
    • Le bouton Ajouter permet d'insrer des numros de fax autres que ceux de la liste.
    Utilisez le bouton Supprimer pour effacer des numros de fax.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node31.html0000644000175000017500000000272110766256174020247 0ustar mikemike Compte Intranet
    Compte Intranet

    Si vous activez l'option Intranet, l'utilisateur aura accs au serveur Intranet

    Compte PPTP

    Si vous activez l'option PPTP, l'utilisateur aura accs au serveur PPTP

    Compte PHPScheduleIt

    Si vous activez l'option PHPScheduleIt, l'utilisateur aura accs au logiciel PHPScheduleIt

    Compte GLPI

    Si vous activez l'option GLPI, l'utilisateur aura accs au logiciel GLPI




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node14.html0000644000175000017500000000170210766256174020246 0ustar mikemike Attach share

    Attach share




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node11.html0000644000175000017500000000166610766256174020254 0ustar mikemike Profiles

    Profiles




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node38.html0000644000175000017500000000212710766256174020256 0ustar mikemike Numros de tlphone

    Numros de tlphone

    Insrez le ou les numro(s) de tlphone de l'utilisateur en utilisant le bouton Ajouter.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/closedlock.png0000644000175000017500000000135610437070613021106 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME $84Fe{IDATx}MHTQ81IR*CPw)DZjpn (E\Xʍ"4;!Mgq8ӌSgu=\ιuo#mmᇭ͏Ȳf\zrTw^áDZq(*# ɟZ&hVBuEέJyi3 iLuNWs$uUxv `57 'ՑPc(p"D$ nXAT)y {ˆP_ <J܋mǀP- qŝ;_~ʀ@1Džڐ8ʅfps0 * Kpp!93@`5 *VEXp@5lLl4m-(``X12I#2l0ٴ̦:pg*V7mp)āݹ[IENDB`gosa-core-2.7.4/doc/core/fr/html/users/index.html0000644000175000017500000000724410766256174020272 0ustar mikemike ADMINISTRATION DES UTILISATEURS

    ADMINISTRATION DES UTILISATEURS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node41.html0000644000175000017500000000213010766256174020242 0ustar mikemike Rfrences

    Rfrences

    Les rfrences prsentent les proprits de l'utilisateur. Cela permet l'administrateur d'avoir une information rapide sur la situation de l'utilisateur dans la socit.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node37.html0000644000175000017500000000263710766256174020263 0ustar mikemike Tlphone

    Tlphone

    Pour activer le compte tlphone pour un utilisateur cliquez sur le bouton Crer un compte tlphone.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node7.html0000644000175000017500000000244410766256174020174 0ustar mikemike Appartient aux groupes

    Appartient aux groupes

    Utilisez les boutons Ajouter et Supprimer pour insrer ou effacer les groupes dans le champ vide. Le bouton Ajouter renvoie la liste des groupes cres par l'administrateur. L'utilisateur peut appartenir un ou plusieurs groupes.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node3.html0000644000175000017500000001045310766256174020167 0ustar mikemike Informations personnelles

    Informations personnelles

    Nom* Introduisez le nom de l'utilisateur
    Prnom* Introduisez le prnom de l'utilisateur
    Identifiant* Introduisez l'identificateur de l'utilisateur
    Titre personnel Introduisez le titre (Madame, Mademoiselle ou Monsieur) de l'utilisateur ?
    Titre Universitaire Introduisez le diplome obtenu
    Date de naissance Cliquez sur le bouton '' Remplir'' pour voir apparatre une liste droulante
    Sexe Faites votre slction dans la liste droulante
    Langue Faites votre slction dans la liste droulante
    Base Choix du dpartement. (la cration de dpartements se fait partir du bouton dpartement dans le menu de gauchedans la partie Administration).
    Adresse Introduisez l'adresse personnelle de l'utilisateur
    Numro de tlphone priv Introduisez le numro priv selon la nomenclature nationale ou internationale. (veillez garder la mme nomenclature pour tous les utilisateurs)
    Page d'accueil Introduisez l'url de la page personnelle de l'utilisateur
    Format de stockage des mots de passe Faites votre slction dans la liste droulante
    Certificats Cliquez sur le bouton'' Modification des certificats''. GOsa vous propose trois types de certificats rechercher dans l' arborescence de votre ordinateur. Pour enregistrer cliquez sur le bouton'' Termin''.
    Kerberos Cliquez sur le bouton'' Modifier les proprits''.?


    Vous pouvez aussi si vous le dsirez agrmenter d'une photo le profil de l'utilisateur en cliquant sur le bouton changer la photo. Vous parcourez alors l'arborescence de votre ordinateur pour aller chercher l'image.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/users/node19.html0000644000175000017500000000254010766256174020254 0ustar mikemike Alternative addresses

    Alternative addresses

    L'utilisateur peut tre en possession d'alias. Ces alias sont insrer dans le champ adresses alternatives.

    Utilisez le bouton Ajouter pour insrer les alias. L'alias doit tre introduit dans le champ vide prcdant le bouton Ajouter. Utilisez le bouton Supprimer pour effacer les alias.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/0000755000175000017500000000000011752422550016431 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/groups/list_root.png0000644000175000017500000000152410437070613021155 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/fr/html/groups/node12.html0000644000175000017500000000352010766256174020422 0ustar mikemike Informations gnrales

    Informations gnrales

    Adresse principale* Introduisez l'adresse principale du groupe
    Serveur Slectionnez le nom du serveur associ cette adresse
    Utilisation des Quota Prcisez si vous dsirez tablir une limite au niveau de la quantit de mail entrant.
    Taille des Quota Prcisez en kb la taille du quota




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node10.html0000644000175000017500000000301710766256174020421 0ustar mikemike Applications

    Applications

    Pour activer l'extension Applications cliquez sur Crer des applications.

    L'administrateur dispose de la liste des applications dans la colonne Applications disponibles. Il peut attribuer une ou plusieurs applications un groupe. Il suffit de cliquer sur le nom d'une application celle ci apparat dans la colonne Applications utilises.

    A l'aide du bouton Sparateur l'administrateur peut sparer de manire visuelle une application par rapport aux autres.

    Pour terminer cliquer sur le bouton Terminer.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/labels.pl0000644000175000017500000000025010437070613020223 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/groups/node1.html0000644000175000017500000001251510766256174020344 0ustar mikemike Groupes

    Groupes

    L'administrateur peut crer ou modifier un groupe ou accder aux informations sur un groupe partir du bouton Groupe dans le menu de gauche dans Administration. La page Administration des groupes s'affiche.

    La page est divise en trois colonnes :

    -La premire colonne est destine afficher la liste des groupes ou des dpartements,

    -les deux dernires colonnes contiennent des icnes. Elles reprsentent les raccourcis vers les proprits du groupe et les actions excuter sur le groupe.

    -Les flches en entte ( Image list_back, Image list_root, Image list_home ) servent modifier l'affichage selon le dpartement, elles prdominent sur toutes autres formes de slection d'affichage.


    C'est partir de la page Administration du groupe que l'administrateur gre la liste des groupes de la socit.

    Comme pour les utilisateurs, il est possible de modifier l'affichage des groupes en utilisant le tableau intitul Filtres Image rocket. L'administrateur peut faire une recherche nominative et/ou sur les proprits du groupe :

    • Pour la recherche sur les noms :

      - cliquer sur l'astrisque (ou toile : *) pour voir apparatre tous les groupes;

      - cliquez sur une lettre et tous les groupes commenant par cette lettre seront affichs;

      - cliquez sur un numro, les groupes ayant un nom dbutant par le numro choisi s'afficheront.

    • Pour la recherche partir des proprits du groupe il suffit :

      - de cocher une ou plusieurs propositions;

    • Pour la recherche d'un nom partir d'une lettre :

      - remplir le premier champ avec une lettre suivi de l'astrisque, cliquer sur le bouton Appliquer, tous les noms dbutant par cettre lettre seront affichs,

      - remplir le deuxime champ avec une lettre suivi de l'astrisque, cliquer sur le bouton Appliquer, tous les noms contenant cette lettre seront affichs.

    Pour crer un groupe l'administrateur doit cliquer sur le bouton Image list_new_group.

    Apparat alors l'espace de configuration. L'administrateur configure les extensions pour chaque groupe.

    A chaque extension configure, pour enregistrer les modifications, cliquer sur le bouton Termin et pour revenir la page prcdente cliquer sur le bouton Annuler.

    Tous les champs prcds d'une astrisque doivent tre remplis obligatoirement.

    En haut droite une srie d'information vous est donne : le nom du groupe sur lequel vous tes occup, et sa place dans l'arbre LDAP.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/groups.html0000644000175000017500000000454010766256174020654 0ustar mikemike ADMINISTRATION DES GROUPES

    ADMINISTRATION DES GROUPES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node4.html0000644000175000017500000000167010766256174020347 0ustar mikemike Profiles

    Profiles




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/WARNINGS0000644000175000017500000000025510766256174017621 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/groups/node18.html0000644000175000017500000000326410766256174020435 0ustar mikemike About this document ...

    About this document ...

    ADMINISTRATION DES GROUPES

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/groups/ groups.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/rocket.png0000644000175000017500000000147410437070613020432 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/fr/html/groups/node16.html0000644000175000017500000000207110766256174020426 0ustar mikemike ACL

    ACL

    Cette partie permet l'administrateur de configurer les droits d'accs de l'utilisateur ou du groupe aux diffrentes parties de GOsa.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/list_home.png0000644000175000017500000000154110437070613021121 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/fr/html/groups/node2.html0000644000175000017500000000427610766256174020352 0ustar mikemike Informations gnrales

    Informations gnrales

    • Nom du groupe* Introduisez le nom du groupe
      Description Introduisez une description, un commentaire sur le groupe
      Base* Faites votre slection dans la liste droulante
    • Forcer le GID : Forcer le groupe utiliser le numro inscrit dans le champ.
    • Groupe / Domaine Samba : Met les membres dans un groupe et un domaine samba
    • Groupe tlphonique : Met les membres dans un groupe tlphonique
    • Groupe Nagios : Met les membres dans un groupe nagios
    L'administrateur insre les membres du personnel devant faire partie de ce groupe. Il suffit d'utiliser le bouton Ajouter qui renvoie la liste des utilisateurs. L'administrateur doit slectionner les futurs membres du groupe. Pour enlever un membre, utiliser le bouton Supprimer.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/list_back.png0000644000175000017500000000153610437070613021075 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Hotplug devices

    Hotplug devices




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node13.html0000644000175000017500000000235010766256174020423 0ustar mikemike Adresses alternatives

    Adresses alternatives

    Le mail peut tre redirig vers une ou plusieurs autres adresses. Ces adresses sont des alias insrer dans Adresses alternatives.

    Utilisez les boutons Ajouter ou Supprimer pour grer les alias.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node5.html0000644000175000017500000000170710766256174020351 0ustar mikemike Kiosk profile

    Kiosk profile




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node17.html0000644000175000017500000000175510766256174020437 0ustar mikemike Rfrences

    Rfrences

    Les rfrences rsument les relations existantes entre objets.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node15.html0000644000175000017500000000301610766256174020425 0ustar mikemike Transfrer les messages vers un membre n'appartenant pas au groupe

    Transfrer les messages vers un membre n'appartenant pas au groupe

    Des utilisateurs peuvent recevoir les messages d'un groupe sans pour autant en tre membre. Il suffit d'insrer les adresses de ces utilisateurs dans le champ qui prcde les boutons Ajouter, Ajouter en local et Supprimer. Le bouton Ajouter en local renvoie aux adresses dj enregistres dans GOsa.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/list_new_group.png0000644000175000017500000000161710437070613022202 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 S Logon scripts

    Logon scripts




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node9.html0000644000175000017500000000170110766256174020347 0ustar mikemike Imprimante

    Imprimante




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node14.html0000644000175000017500000000325410766256174020430 0ustar mikemike Rpertoire partag IMAP

    Rpertoire partag IMAP

    Permission par dfaut Faites votre slection dans la liste droulante du type d'accs par dfaut au dossier IMAP
    Permission des membres Faites votre slection dans la liste droulante du type d'accs accord aux membres au dossier IMAP
      L'administrateur peut ajouter partir de ce champ d'autres adresses de messagerie avec un droit d'accs au dossier IMAP




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node11.html0000644000175000017500000000302410766256174020420 0ustar mikemike Mail

    Mail

    Pour activer un compte mail cliquez sur Crer un compte de messagerie.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/index.html0000644000175000017500000000454010766256174020444 0ustar mikemike ADMINISTRATION DES GROUPES

    ADMINISTRATION DES GROUPES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/groups.css0000644000175000017500000000174510766256174020504 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN. { } #hue96 { color: #000000; } gosa-core-2.7.4/doc/core/fr/html/groups/node7.html0000644000175000017500000000170410766256174020350 0ustar mikemike Attach share

    Attach share




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/groups/node3.html0000644000175000017500000000310010766256174020334 0ustar mikemike Environnement

    Environnement

    Pour activer l'extension Environnement cliquer sur Ajouter l'extension environnement.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/fonreports/0000755000175000017500000000000011752422550017313 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/fonreports/labels.pl0000644000175000017500000000025010437070613021105 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/fonreports/node1.html0000644000175000017500000000173010766256174021223 0ustar mikemike Rapports des tlphones

    Rapports des tlphones



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/fonreports/WARNINGS0000644000175000017500000000020010766256174020471 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/fonreports/node2.html0000644000175000017500000000330010766256174021217 0ustar mikemike About this document ...

    About this document ...

    RAPPORTS TELEPHONIQUES

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/fonreports/ fonreports.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/fonreports/fonreports.html0000644000175000017500000000242710766256174022422 0ustar mikemike RAPPORTS TELEPHONIQUES

    RAPPORTS TELEPHONIQUES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/fonreports/index.html0000644000175000017500000000242710766256174021330 0ustar mikemike RAPPORTS TELEPHONIQUES

    RAPPORTS TELEPHONIQUES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/fonreports/fonreports.css0000644000175000017500000000164310766256174022245 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN. { } gosa-core-2.7.4/doc/core/fr/html/ldapmanager/0000755000175000017500000000000011752422550017365 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/ldapmanager/labels.pl0000644000175000017500000000025010437070613021157 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/ldapmanager/node1.html0000644000175000017500000000166310766256174021302 0ustar mikemike GERER LDAP

    GERER LDAP



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/ldapmanager/WARNINGS0000644000175000017500000000020010766256174020543 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/ldapmanager/ldapmanager.html0000644000175000017500000000235010766256174022541 0ustar mikemike GERER LDAP

    GERER LDAP





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/ldapmanager/node2.html0000644000175000017500000000327010766256174021277 0ustar mikemike About this document ...

    About this document ...

    GERER LDAP

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/ldapmanager/ ldapmanager.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/ldapmanager/ldapmanager.css0000644000175000017500000000164310766256174022371 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN. { } gosa-core-2.7.4/doc/core/fr/html/ldapmanager/index.html0000644000175000017500000000235010766256174021375 0ustar mikemike GERER LDAP

    GERER LDAP





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/conference/0000755000175000017500000000000011752422550017221 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/conference/list_root.png0000644000175000017500000000152410437070613021745 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/fr/html/conference/search.png0000644000175000017500000000177710437070613021206 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/fr/html/conference/conference.png0000644000175000017500000000777610437070613022055 0ustar mikemikePNG  IHDR00WgAMAܲIDATxyp\ŝ?ޛnY,[2` r ,BڭŰ@0Iő,Q ,,! X(n`|"K%>ft?͈Ȇ,ޮU}wIMZa) ! 7jZH®]4!!MseWP6 !m:@!&rNy=tnL@Wlv gԎr`olwg=fR"TA;~ "؅DŽC[9F6o|YNӗ~#q=*Crc z#@q\ضy=x/ gO;(mh2/QG.䄵ܪYuCapb1Ñ%@ZMm-vHcn >@1;zh#thA &}N]--ul©zRH\O2bƃYr5^Gk2B {\up@nMHz .e)i5AcI@ G!h\/ sž7H"aT'P8RFZtlt.Isf/\'M"BH5hK@I\GLޅx \W)gA9R H2#htQVصHY'2ƪa2Di@dZl4H7J SRS]/it9AJAR@RBHHD!HVj%E.(nP=6$_Epyn> nq=%c&# FL(Ю@p #px@*ANG&NI(w厠8sg3i7 eFd%@HEsh`w&=%"GapD?tl*9-_C&B|% e%4T]?OY(ZW] -x(>@EWs*-bMP#B2BbA(iOJJP0`98Љ\zo_/疇yi^.LN*syKc'U2ߒ*suU $0 (iȧ?tmZOIc "eAqMt>};'7z(b2+Qz[̻dHPJ dwF q~a4HFmDZ]8Dp l9l.dV0On3A/OۦutnGd(?x H~ $R@ rRЯ}RRy5IWF@֭Z-^LY/5P..Y;[?ӿ @nXͨ5*$f'q4xēHZ;PTJ-d5t9Jp5BP~ 2EZf}u )OHpܜjsUk_*W'Hy4^%2iiN%15nN6~gy^ݛao otێ-(*Dy xJpvyq/_.߉l%Ab22oj4dmD<)$:y98AUe6j( )m`Na60@|ɞgʐQdPe a.rU B$=X3VuA]b (?-f .0/ٸ3}iݑ,,pla3Qhc\cLz# D>}L'm6g_H:bk?ҋY=W7,Zrii2$ݐ('`7U@[y0R/0>yi Օؐϱ [\@RbB)tg+_1ge;%#WB啐pS90}zdE>NHtvMT,>Dž#СY tG6ⱕ!~jRpu3Ǟ|5GD=7eމ*\qR8Uʑ8I0I̱ Rń{< 8kG 1 ҧ K5R}\6Oq.~# ^a1O؋Jt͡/ #f8 Rܶ|3o.ܷX/]^۳{Ov}hG5F>zw;7Xm}&ٌ9g&Ln&E k' ƏekswЙގ<h9IENDB`gosa-core-2.7.4/doc/core/fr/html/conference/conference.html0000644000175000017500000000315310766256174022233 0ustar mikemike ADMINISTRATION DES CONFERENCES TELEPHONIQUES

    ADMINISTRATION DES CONFERENCES TELEPHONIQUES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/conference/labels.pl0000644000175000017500000000025010437070613021013 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/conference/node1.html0000644000175000017500000001000110766256174021120 0ustar mikemike Confrences tlphoniques

    Confrences tlphoniques

    L'administrateur peut configurer les phone conferences partir du bouton Confrences tlphoniques dans le menu de gauche dans la partie Administration. La page Gestion des confrences s'affiche.

    La page est divise en quatre colonnes :

    - la premire colonne est destine afficher les noms ou numros de confrence,

    - la deuxime colonne affiche le nom du propritaire de la confrence,

    - la troisime indique si il existe un code PIN pour la confrence,

    - la dernire colonne contient les icnes qui sont les actions que l'on peut executer sur ces confrences.

    Les flches en entte ( Image list_back, Image list_root, Image list_home ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage.


    C'est partir de la page Gestion des confrences que l'administrateur gre les confrences tlphoniques organises dans la socit.

    Il est possible de modifier l'affichage des noms ou des numros en utilisant le tableau intitul Filtres Image rocket.

    L'administrateur peut faire une recherche sur le nom :

    - cliquez sur l'astrisque (toile : *) pour voir apparatre tous les noms et numros;

    - cliquez sur une lettre et tous les noms des confrences tlphoniques dbutant par cette lettre s'afficheront;

    - cliquez sur un numro et tous les numros des confrences tlponiques dbutant par ce numro s'afficheront;

    - recherche rapide Image search : remplissez le champ par le nom ou le numro d'une confrence tlphonique et ensuite cliquez sur le bouton Appliquer.


    Pour crer et configurer une confrence tlphonique, l'administrateur doit cliquer sur le bouton Image conference.

    Apparat l'espace de configuration.

    Pour enregistrer la configuration, cliquez sur le bouton Termin, pour revenir la page prcdente cliquez sur le bouton Annuler.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/conference/node4.html0000644000175000017500000000317410766256174021140 0ustar mikemike Options

    Options

    • Code PIN prslectionn

      Cochez si vous dsirez qu'un code PIN prdfini soit utilis pour cette confrence.

    • Enregistrer la confrence

      Cochez si vous dsirez enregistrer la confrence.

    • Musique d'attente

      Cochez si vous dsirez activer la musique d'attente.

    • Activer le menu de session

      Cochez si vous dsirez activer le menu de session.

    • Annoncer les nouveaux utilisateurs et ceux qui quittent

      Cochez si vous dsirez qu'une annonce soit faite lorsque un participant rejoint ou quitte la confrence.

    • Compter les utilisateurs

      Cochez si vous dsirez compter les participants.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/conference/WARNINGS0000644000175000017500000000025510766256174020411 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/conference/rocket.png0000644000175000017500000000147410437070613021222 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/fr/html/conference/list_home.png0000644000175000017500000000154110437070613021711 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/fr/html/conference/node2.html0000644000175000017500000000235510766256174021136 0ustar mikemike Informations gnrales

    Informations gnrales



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/conference/list_back.png0000644000175000017500000000153610437070613021665 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Rfrences

    Rfrences

    Les rfrences rsument les relations existantes entre objets.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/conference/node6.html0000644000175000017500000000332610766256174021141 0ustar mikemike About this document ...

    About this document ...

    ADMINISTRATION DES CONFERENCES TELEPHONIQUES

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/conference/ conference.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/conference/index.html0000644000175000017500000000315310766256174021233 0ustar mikemike ADMINISTRATION DES CONFERENCES TELEPHONIQUES

    ADMINISTRATION DES CONFERENCES TELEPHONIQUES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/conference/node3.html0000644000175000017500000000412110766256174021130 0ustar mikemike Proprits

    Proprits

    Nom de la confrence* Introduisez le nom de la confrence
    Type* Faites votre slection dans la liste droulante
    Base* Faites votre slection dans la liste droulante
    Description* Introduisez une description, un commentaire sur la confrence
    Dure (en jours) Introduisez la validit de la confrence
    Numro de tlphone* Introduisez le numro de tlphone de la confrence




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/logview/0000755000175000017500000000000011752422550016566 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/logview/logview.css0000644000175000017500000000164310766256174020773 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN. { } gosa-core-2.7.4/doc/core/fr/html/logview/labels.pl0000644000175000017500000000025010437070613020360 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/logview/node1.html0000644000175000017500000000166410766256174020504 0ustar mikemike Logs systmes

    Logs systmes



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/logview/WARNINGS0000644000175000017500000000020010766256174017744 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/logview/node2.html0000644000175000017500000000325310766256174020501 0ustar mikemike About this document ...

    About this document ...

    LOGS SYSTEMES

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/logview/ logview.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/logview/logview.html0000644000175000017500000000235410766256174021147 0ustar mikemike LOGS SYSTEMES

    LOGS SYSTEMES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/logview/index.html0000644000175000017500000000235410766256174020602 0ustar mikemike LOGS SYSTEMES

    LOGS SYSTEMES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/macro/0000755000175000017500000000000011752422550016213 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/macro/list_root.png0000644000175000017500000000152410437070613020737 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/fr/html/macro/search.png0000644000175000017500000000177710437070613020200 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/fr/html/macro/macro.css0000644000175000017500000000211410766256174020037 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } #hue47 { color: #000000; } #hue69 { color: #ff0000; } gosa-core-2.7.4/doc/core/fr/html/macro/labels.pl0000644000175000017500000000025010437070613020005 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/macro/node1.html0000644000175000017500000000740710766256174020132 0ustar mikemike Phone macros

    Phone macros

    L'administrateur peut configurer les phone macros partir du bouton Phone macros dans le menu de gauche dans la partie Administration. La page Phone macro management s'affiche.

    La page est divise en trois colonnes :

    - la premire colonne est destine afficher les noms des macros tlphoniques,

    - la deuxime colonne indique si la macro est visible ou non par l'utilisateur,

    - la troisime colonne contient les icnes qui sont les actions que l'on peut executer sur ces macros tlphoniques.

    Les flches en entte ( Image list_back, Image list_root, Image list_home ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage.


    C'est partir de la page Phone macro management que l'administrateur gre les phone macros instaures dans la socit.

    Il est possible de modifier l'affichage des phone macros en utilisant le tableau intitul Filtres Image rocket.

    L'administrateur peut faire une recherche sur le nom :

    - cliquez sur l'astrisque (toile : *) pour voir apparatre toutes les macros tlphoniques;

    - cliquez sur une lettre et tous les noms des macros tlphoniques dbutant par cette lettre s'afficheront;

    - cliquez sur un numro et tous les noms des macros tlphoniques dbutant par ce numro s'afficheront;

    - recherche rapide Image search : remplissez le champ par le nom de la macro et ensuite cliquez sur le bouton Appliquer.


    Pour crer et configurer une macro tlphonique, l'administrateur doit cliquer sur le bouton Image list_new_macro.

    Apparat l'espace de configuration.

    Pour enregistrer la configuration, cliquez sur le bouton Termin, pour revenir la page prcdente cliquez sur le bouton Annuler.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/macro/node4.html0000644000175000017500000000175310766256174020133 0ustar mikemike Rfrences

    Rfrences

    Les rfrences rsument les relations existantes entre objets.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/macro/WARNINGS0000644000175000017500000000025510766256174017403 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/macro/rocket.png0000644000175000017500000000147410437070613020214 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/fr/html/macro/list_home.png0000644000175000017500000000154110437070613020703 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/fr/html/macro/node2.html0000644000175000017500000000421010766256174020120 0ustar mikemike Informations gnrales

    Informations gnrales

    Nom de la macro* Introduisez le nom de la macro
    Nom afficher* Introduisez le nom qui sera visible par l'utilisateur
    Base* Faites votre slection dans la liste droulante
    Description Introduisez une description, un commentaire sur la macro tlphonique
    Visible pour l'utilisateur Cochez si vous voulez que la macro apparaisse lors de la slction des macros tlphoniques
    Texte de la macro Contenu de la macro excuter




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/macro/list_back.png0000644000175000017500000000153610437070613020657 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H ADMINISTRATION DES MACROS TELEPHONIQUES

    ADMINISTRATION DES MACROS TELEPHONIQUES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/macro/node5.html0000644000175000017500000000327510766256174020135 0ustar mikemike About this document ...

    About this document ...

    ADMINISTRATION DES MACROS TELEPHONIQUES

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/macro/ macro.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/macro/list_new_macro.png0000644000175000017500000000146710437070613021734 0ustar mikemikePNG  IHDRabKGD pHYs  tIME#2IDAT8ˍKHTaxͦ%D6Ѣ=MS$f,A݉)E"**(qR%1%YmiSѓ1cjs3::{ZA-Vp}_'$o)9$e^k~_bXCT*h!@CD:qhJ!0$2@R 0GBDZ3q)4ˁeSA@2 C>h$(ö!cQֽ*wn H @s/O/^srTLO0d%~n&]JTqFhJ: /q M*f!۞cAt'0MSZDt"HLiLplI=pXW;FlqYsu445`04'm*.v5A3gKrc8Kr^)o'iqH F 5\)%FNS8u$neh9ш>V^+,F6Y@0ڇPRge2MS|;$t=XA9|\6Z8֧7]pl]RAX>M11a%4_~A6=ݗs5x>gϵe տ;m-N x޽N뭗xIENDB`gosa-core-2.7.4/doc/core/fr/html/macro/index.html0000644000175000017500000000300210766256174020216 0ustar mikemike ADMINISTRATION DES MACROS TELEPHONIQUES

    ADMINISTRATION DES MACROS TELEPHONIQUES





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/macro/node3.html0000644000175000017500000000167710766256174020137 0ustar mikemike Paramtres

    Paramtres




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/blocklists/0000755000175000017500000000000011752422550017263 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/blocklists/list_root.png0000644000175000017500000000152410437070613022007 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/fr/html/blocklists/search.png0000644000175000017500000000177710437070613021250 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/fr/html/blocklists/labels.pl0000644000175000017500000000025010437070613021055 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/blocklists/node1.html0000644000175000017500000000707610766256174021204 0ustar mikemike Liste Rouge des Fax

    Liste Rouge des Fax

    L'administrateur peut configurer une liste rouge partir du bouton Liste Rouge des Fax dans le menu de gauche dans la partie Administration.

    La page Configuration des listes rouges s'affiche. La page est divise en deux colonnes :

    - la premire colonne est destine afficher les listes rouges,

    - la deuxime colonne contient les icnes qui sont les actions que l'on peut executer sur ces listes.

    Les flches en entte ( Image list_back, Image list_root, Image list_home ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage.


    C'est partir de la page Configurations des listes rouges que l'administrateur gre les listes rouges des fax instaures dans la socit.

    Il est possible de modifier l'affichage des listes en utilisant le tableau intitul Filtres Image rocket.

    A partir de ce tableau l'administrateur peut faire une recherche sur le nom :

    - cliquez sur l'astrisque (toile : *) pour voir apparatre toutes les listes;

    - cliquez sur une lettre et tous les noms des listes dbutant par cette lettre s'afficheront;

    - cliquez sur un numro et tous les noms des listes dbutant par ce numro s'afficheront;

    - recherche rapide Image search : remplissez le champ par le nom d'une liste rouge et ensuite cliquez sur le bouton Appliquer.


    Pour crer et configurer les listes rouges des fax, l'administrateur doit cliquer sur le bouton Image list_new_blocklist.

    Apparat l'espace de configuration.

    Pour enregistrer la configuration, cliquez sur le bouton Termin, pour revenir la page prcdente cliquez sur le bouton Annuler.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/blocklists/node4.html0000644000175000017500000000332110766256174021174 0ustar mikemike About this document ...

    About this document ...

    ADMINISTRATION DES LISTES ROUGES DE FAX

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/blocklists/ blocklists.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/blocklists/WARNINGS0000644000175000017500000000025510766256174020453 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/blocklists/rocket.png0000644000175000017500000000147410437070613021264 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/fr/html/blocklists/blocklists.css0000644000175000017500000000206210766256174022161 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN. { } #hue25 { color: #0000ff; } #hue44 { color: #000000; } #hue58 { color: #ff0000; } gosa-core-2.7.4/doc/core/fr/html/blocklists/blocklists.html0000644000175000017500000000273510766256174022344 0ustar mikemike ADMINISTRATION DES LISTES ROUGES DE FAX

    ADMINISTRATION DES LISTES ROUGES DE FAX





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/blocklists/list_home.png0000644000175000017500000000154110437070613021753 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/fr/html/blocklists/list_new_blocklist.png0000644000175000017500000000141510437070613023662 0ustar mikemikePNG  IHDRabKGD pHYs  tIME1[IDAT8ˍMHaVH&Q((PAPCHRQiF}P d") "e ҚY~W]Cfy EG| J@5 @Na ,O}S,x[Dx&"VN wTfMY0EDD1OGwȯ6C̷e6/bm@`39! @HiXbZ() eN`$!&j;9 %= L:Z,@ 4QptެB˃NwB]d>+HƪNo{!hMS_)u7R=d޳fCti'\{,}SKsS Informations gnrales

    Informations gnrales

    Nom de la liste* Insrez le nom de la liste rouge des fax
    Base Faites votre slection dans la liste droulante du dpartement associ la liste
    Type Choisissez dans la liste droulante si la liste rouge des fax s'applique en sortie ou en entre
    Description Description de l'utilisation de la liste fax




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/blocklists/list_back.png0000644000175000017500000000153610437070613021727 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H ADMINISTRATION DES LISTES ROUGES DE FAX

    ADMINISTRATION DES LISTES ROUGES DE FAX





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/blocklists/node3.html0000644000175000017500000000230310766256174021172 0ustar mikemike Numros bloqus

    Numros bloqus

    L'administrateur doit insrer dans le champ infrieur les numros de fax qui seront lis la nouvelle liste rouge cree. Utilisez les boutons Ajouter et Supprimer pour la gestion de ces numros.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/faxreports/0000755000175000017500000000000011752422550017307 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/faxreports/labels.pl0000644000175000017500000000025010437070613021101 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/faxreports/node1.html0000644000175000017500000000170310766256174021217 0ustar mikemike Rapports des Fax

    Rapports des Fax



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/faxreports/WARNINGS0000644000175000017500000000020010766256174020465 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/faxreports/node2.html0000644000175000017500000000327210766256174021223 0ustar mikemike About this document ...

    About this document ...

    RAPPORTS DES FAX

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/faxreports/ faxreports.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/faxreports/faxreports.html0000644000175000017500000000237610766256174022415 0ustar mikemike RAPPORTS DES FAX

    RAPPORTS DES FAX





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/faxreports/index.html0000644000175000017500000000237610766256174021327 0ustar mikemike RAPPORTS DES FAX

    RAPPORTS DES FAX





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/faxreports/faxreports.css0000644000175000017500000000164310766256174022235 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN. { } gosa-core-2.7.4/doc/core/fr/html/departments/0000755000175000017500000000000011752422550017440 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/departments/list_root.png0000644000175000017500000000152410437070613022164 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/fr/html/departments/search.png0000644000175000017500000000177710437070613021425 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/fr/html/departments/departments.css0000644000175000017500000000214110766256174022511 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } DIV.flushleft { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } #hue69 { color: #ff0000; } #hue71 { color: #ff0000; } gosa-core-2.7.4/doc/core/fr/html/departments/labels.pl0000644000175000017500000000025010437070613021232 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/departments/node1.html0000644000175000017500000000765610766256174021365 0ustar mikemike Dpartements

    Dpartements

    L'administrateur peut crer ou modifier un dpartement ou accder aux informations sur un dpartement en utilisant le bouton dpartements de la partie Administrateur dans le menu de gauche. La page Configuration des dpartements s'affiche.

    La page est divise en deux colonnes :

    - la premire colonne est destine afficher les noms de dpartements,

    - la deuxime colonne contient des icnes qui sont les actions executer sur un dpartement.

    Les flches en entte ( Image list_back, Image list_root , Image list_home ) servent modifier l'affichage selon le dpartement. Elles prdominent sur toutes autres formes de slction d'affichage.


    C'est partir de la page Configuration des dpartements que l'administrateur gre la liste des dpartements cres pour la socit.

    Il est possible de modifier l'affichage des dpartements en utilisant le tableau intitul Filtres Image rocket.

    L'administrateur peut y faire une recherche sur le nom :

    - cliquez sur l'astrisque (toile) pour voir aparatre tous les dpartements,

    - cliquez sur une lettre, et tous les noms de dpartements commenant par cette lettre s'afficheront,

    - cliquez sur un numro, et tous les noms de dpartements commenant par ce numro s'afficheront,

    - recherche rapide Image search : remplissez le champ avec un nom de dpartement, ensuite cliquez sur le bouton Appliquer.


    Pour crer un dpartement, l'administrateur doit cliquer sur le bouton Image list_new_department .

    Apparat alors l'espace de configuration des dpartements avec l'onglet informations gnrales et l'onglet Rfrences.

    Pour enregistrer la configuration cliquer sur le bouton Termin, pour revenir la page prcdente cliquer sur le bouton Annuler.

    Tous les champs prcds d'une astrisque doivent tre remplis obligatoirement.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/departments/node4.html0000644000175000017500000000345510766256174021361 0ustar mikemike Lieu

    Lieu

    Dans le cas d'une socit possdant plusieurs dpartements sur des sites spars.

    Dpartement Introduisez le nom du dpartement
    Lieu Introduisez l'endroit ou est situ le dpartement
    Adresse Introduisez l'adresse du dpartement
    Tlphone Introduisez le tlphone central du dpartement
    Fax Introduisez le fax central du dpartement




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/departments/WARNINGS0000644000175000017500000000025510766256174020630 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/departments/rocket.png0000644000175000017500000000147410437070613021441 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/fr/html/departments/list_home.png0000644000175000017500000000154110437070613022130 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/fr/html/departments/node2.html0000644000175000017500000000235410766256174021354 0ustar mikemike Informations gnrales

    Informations gnrales



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/departments/list_back.png0000644000175000017500000000153610437070613022104 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Rfrences

    Rfrences

    Les rfrences rsument les relations existantes entre objets.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/departments/departments.html0000644000175000017500000000306610766256174022674 0ustar mikemike ADMINISTRATION DES DEPARTEMENTS

    ADMINISTRATION DES DEPARTEMENTS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/departments/node6.html0000644000175000017500000000331510766256174021356 0ustar mikemike About this document ...

    About this document ...

    ADMINISTRATION DES DEPARTEMENTS

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/departments/ departments.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/departments/index.html0000644000175000017500000000306610766256174021455 0ustar mikemike ADMINISTRATION DES DEPARTEMENTS

    ADMINISTRATION DES DEPARTEMENTS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/departments/list_new_department.png0000644000175000017500000000131510437070613024213 0ustar mikemikePNG  IHDRabKGD pHYs  tIME $5)RZIDAT8˕]HSaxvvvΦDWQZ4}.++ꦺQ (Ƌ!U`AHPAA7C(̘4cHgtN.έz}W/Q#)+tAсZ5W<ƹ'uOB9MY[uL&E{(#A"qq43gkjS{U\B{L@=\Vƀ> &8v'=5^-MAAyYolad7v >!y H4! )g L$`CV Co"!pj06 Æ}|D Proprits

    Proprits

    Nom du dpartement* Introduisez le nom du dpartement.
    Description*
    Introduisez une description, un commentaire sur le dpartement

    Catgorie  
    Base* Faites votre slection dans la liste droulante




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/ogroups/0000755000175000017500000000000011752422550016610 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/ogroups/list_root.png0000644000175000017500000000152410437070613021334 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/fr/html/ogroups/search.png0000644000175000017500000000177710437070613020575 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/fr/html/ogroups/labels.pl0000644000175000017500000000025010437070613020402 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/ogroups/node1.html0000644000175000017500000001023610766256174020521 0ustar mikemike Groupes d'objets

    Groupes d'objets

    Un Groupe d'objets est un groupe htrogne. C'est la possibilit qu'a l'administrateur de crer des combinaisons d'objets de nature diffrente dans un mme groupe pour rpondre la problmatique d'une situation donne. C'est ce qu'on appelle le Groupe d'objets. Cela permet une gestion plus souple et plus approprie que la cration de groupes classiques.

    L'administrateur peut ajouter et configurer les Groupes d'objets partir du bouton Groupes d'objets dans le menu de gauche dans la partie Administration. La page Groupes d'objets s'affiche.

    La page est divise en trois colonnes :

    - la premire colonne est destine afficher les noms des Groupes d'objets,

    - la deuxime colonne contient les icnes qui sont des raccourcis vers les proprits des Groupes d'objets,

    - la troisime colonne contient les icnes qui sont les actions que l'on peut excuter sur les Groupes d'objets.

    Les flches en entte ( Image list_back, Image list_root, Image list_home ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage.


    C'est partir de la page Groupes d'objets que l'administrateur gre les Groupes d'objets crs pour la socit.

    Il est possible de modifier l'affichage de la liste des Groupes en utilisant le tableau intitul Filtres Image rocket.

    • L'administrateur peut faire une recherche sur le nom :

      - cliquez sur l'astrisque (toile : *) pour voir apparatre tous les noms de Groupes d'objets;

      - cliquez sur une lettre et tous les noms de Groupes d'objets dbutant par cette lettre s'afficheront;

      - cliquez sur un numro et tous les noms des Groupes d'objets dbutant par ce numro s'afficheront.

    • L'administrateur peut faire une recherche partir des proprits du Groupe d'objets :

      - cochez une ou plusieurs propositions

    • Ou encore la recherche rapide Image search : remplissez le champ par le nom du Groupes d'objets recherch et ensuite cliquez sur le bouton Appliquer.


    Pour crer, configurer ou modifier un Groupe d'objets, l'administrateur doit cliquer sur le bouton Image list_new_ogroup.

    Tous les champs prcds d'une astrisque doivent tre remplis obligatoirement.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/ogroups/node4.html0000644000175000017500000000325410766256174020526 0ustar mikemike About this document ...

    About this document ...

    ADMINISTRATION

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/ogroups/ ogroups.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/ogroups/WARNINGS0000644000175000017500000000025510766256174020000 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/ogroups/rocket.png0000644000175000017500000000147410437070613020611 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/fr/html/ogroups/list_home.png0000644000175000017500000000154110437070613021300 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/fr/html/ogroups/list_new_ogroup.png0000644000175000017500000000136210437070613022535 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "z?LIDAT8˵[H}Z˙+KtLT)JdBAQ{衇 %r./=tѢ*nQ.e-7󛻞"ߟ9gpwq`FktPĘHkTn&ً~Ђ"^x!RFq׋k򧀀}py Ŝcݥ<6% YIkuҼھQt2mΥˋJ$mn:_I$@5§0xYG )]o-k[`B)pLiK.]EY } zSa.d#`P`J 7 ƪK(ԮZ]V(>^Ǡ2 0jpYVNkS)c`n7?;-fAy x MU*ha"08_>(;NyL]: o/`{렭]_L<o&%Wv/M7" "-"re[UΩ*HwLy6%aH'# yTV;$ngY LMN)E[č[#$yIENDB`gosa-core-2.7.4/doc/core/fr/html/ogroups/node2.html0000644000175000017500000000354010766256174020522 0ustar mikemike Informations gnrales

    Informations gnrales

    Nom du groupe* Introduisez le nom du groupe crer
    Description Introduisez une description, un commentaire sur le groupe
    Base* Faites votre slection dans la liste droulante
    Objets membres L'objet membre reprend la liste des objets associs au Groupe d'objets cre. Le bouton Ajouter renvoie la liste des objets existants, utilisez le bouton Supprimer pour effacer.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/ogroups/ogroups.html0000644000175000017500000000260410766256174021211 0ustar mikemike ADMINISTRATION

    ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/ogroups/list_back.png0000644000175000017500000000153610437070613021254 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H ADMINISTRATION

    ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/ogroups/node3.html0000644000175000017500000000175710766256174020533 0ustar mikemike Rfrences

    Rfrences

    Les rfrences rsument les relations existantes entre objets.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/0000755000175000017500000000000011752422550017600 5ustar mikemikegosa-core-2.7.4/doc/core/fr/html/applications/list_root.png0000644000175000017500000000152410437070613022324 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/fr/html/applications/search.png0000644000175000017500000000177710437070613021565 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/fr/html/applications/applications.css0000644000175000017500000000211410766256174023011 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } #hue75 { color: #ff0000; } #hue77 { color: #ff0000; } gosa-core-2.7.4/doc/core/fr/html/applications/labels.pl0000644000175000017500000000025010437070613021372 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/fr/html/applications/node1.html0000644000175000017500000000766010766256174021520 0ustar mikemike Applications

    Applications

    L'administrateur peut installer et configurer une application partir du bouton Applications dans le menu de gauche dans la partie Administration. La page Configuration des applications s'affiche.

    La page est divise en deux colonnes :

    - la premire colonne est destine afficher la liste des applications,

    - la deuxime colonne contient les icnes qui sont les actions que l'on peut executer sur l'application.

    Les flches en entte ( Image list_back, Image list_root, Image list_home ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage.


    C'est partir de la page Configurations des applications que l'administrateur gre la liste des applications installe pour le personnel de la socit.

    Il est possible de modifier l'affichage de la liste des applications en utilisant le tableau intitul Filtres Image rocket.

    L'administrateur peut faire une recherche sur le nom :

    - cliquez sur l'astrisque pour voir apparatre toutes les applications;

    - cliquez sur une lettre et tous les noms d'applications dbutant par cette lettre s'afficheront;

    - cliquez sur un numro et tous les noms d'applications dbutant par ce numro s'afficheront;

    - recherche rapide Image search : remplissez le champ par le nom d'une application et ensuite cliquez sur le bouton Appliquer.


    Pour configurer une application, l'administrateur doit cliquer sur le bouton Image list_new_app.

    Apparat l'espace de configuration contenant trois onglets : informations gnrales, options et rfrences.

    Pour enregistrer la configuration, cliquez sur le bouton Termin, pour revenir la page prcdente cliquez sur le bouton Annuler.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/applications.html0000644000175000017500000000324410766256174023172 0ustar mikemike ADMINISTRATION DES APPLICATIONS

    ADMINISTRATION DES APPLICATIONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/node4.html0000644000175000017500000000302410766256174021511 0ustar mikemike Options

    Options

    • Excutable uniquement par les membres

      Cochez si vous dsirez que l'application soit excute uniquement par les membres d'un mme groupe.

    • Remplacer la configuration de l'utilisateur au dmarrage

      Rinstaller la configuration par dfaut de l'application chaque dmarrage.

    • Placer une icne sur le bureau des membres

      Cochez si vous dsirez faire apparatre l'icne sur le bureau des membres.

    • Placer une entre dans le menu dmarrage des membres

      Crer une entre pour l'application dans le menu dmarrage.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/WARNINGS0000644000175000017500000000025510766256174020770 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/fr/html/applications/rocket.png0000644000175000017500000000147410437070613021601 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/fr/html/applications/list_home.png0000644000175000017500000000154110437070613022270 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/fr/html/applications/node2.html0000644000175000017500000000242010766256174021506 0ustar mikemike Informations

    Informations



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/list_back.png0000644000175000017500000000153610437070613022244 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H About this document ...

    About this document ...

    ADMINISTRATION DES APPLICATIONS

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/applications/ applications.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/node5.html0000644000175000017500000000170110766256174021512 0ustar mikemike Script

    Script




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/node6.html0000644000175000017500000000257110766256174021521 0ustar mikemike Options

    Options

    Variable Nom de la variable
    Valeur par dfaut Valeurs par defaut asscocies la variable


    Utilisez le bouton Supprimez pour effacer une variable.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/list_new_app.png0000644000175000017500000000143210437070613022770 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8ɅIDAT8ˍMhTWsL&M8h*Th w u*Rt"] U+"1V?(4񚙛3s=ŝHP|/sx ,qf v\>T>EY"ע~ h6[ZFU9Uis]cgo:o"56jމb _s`0`'wS/; l6C._]}P今}N9Tg9vi2ա]Gd6/^GwϗONh9Zک^x]lqG `3'(7ѬghIENDB`gosa-core-2.7.4/doc/core/fr/html/applications/index.html0000644000175000017500000000324410766256174021613 0ustar mikemike ADMINISTRATION DES APPLICATIONS

    ADMINISTRATION DES APPLICATIONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/node7.html0000644000175000017500000000177110766256174021523 0ustar mikemike Rfrences

    Rfrences

    Les rfrences rsument les relations existantes entre objets.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/html/applications/node3.html0000644000175000017500000000417410766256174021517 0ustar mikemike Informations

    Informations

    Nom de l'application* Indiquez le nom de l'application.
    Nom afficher* Nom de l'application qui sera visible par l'utilisateur
    Excuter* Application excuter avec ses paramtres ventuels
    Description Description de l'application
    Base Faites votre slection dans la liste droulante du dpartement associ l'application.
    Icne Slectionnez l'image dans l'arborescence de votre systme, ensuite cliquez sur le bouton Mise jour. L'icne est alors associe l'application.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/fr/lyx-source/0000755000175000017500000000000011752422551016261 5ustar mikemikegosa-core-2.7.4/doc/core/fr/lyx-source/blocklists.lyx0000644000175000017500000001304610342534367021177 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold ADMINISTRATION DES LISTES ROUGES DE FAX \layout Section Liste Rouge des Fax \layout Standard L'administrateur peut configurer une liste rouge partir du bouton \series bold \color blue Liste Rouge des Fax \series default \color default dans le menu de gauche dans la partie \series bold Administration \series default . \layout Standard La page \family sans Configuration des listes rouges \family default s'affiche. La page est divise en deux colonnes : \layout Standard - la premire colonne est destine afficher les listes rouges, \layout Standard - la deuxime colonne contient les icnes qui sont les actions que l'on peut executer sur ces listes. \layout Standard Les flches en entte ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage. \layout Standard \added_space_top medskip C'est partir de la page \family sans Configurations des listes rouges \family default que l'administrateur gre les listes rouges des fax instaures dans la socit. \layout Standard Il est possible de modifier l'affichage des listes en utilisant le tableau intitul Filtres \begin_inset Graphics filename images/rocket.png \end_inset . \layout Standard A partir de ce tableau l'administrateur peut faire une recherche sur le nom : \layout Standard - cliquez sur l'astrisque (toile : *) pour voir apparatre toutes les listes; \layout Standard - cliquez sur une lettre et tous les noms des listes dbutant par cette lettre s'afficheront; \layout Standard - cliquez sur un numro et tous les noms des listes dbutant par ce numro s'afficheront; \layout Standard - recherche rapide \begin_inset Graphics filename images/search.png \end_inset : remplissez le champ par le nom d'une liste rouge et ensuite cliquez sur le bouton Appliquer. \layout Standard \added_space_top medskip Pour crer et configurer les listes rouges des fax, l'administrateur doit cliquer sur le bouton \begin_inset Graphics filename images/list_new_blocklist.png \end_inset . \layout Standard Apparat l'espace de configuration. \layout Standard Pour enregistrer la configuration, cliquez sur le bouton Termin, pour revenir la page prcdente cliquez sur le bouton Annuler. \layout Subsection \pagebreak_top Informations gnrales \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \color black Nom de la liste \color red * \end_inset \begin_inset Text \layout Standard Insrez le nom de la liste rouge des fax \end_inset \begin_inset Text \layout Standard Base \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante du dpartement associ la liste \end_inset \begin_inset Text \layout Standard Type \end_inset \begin_inset Text \layout Standard Choisissez dans la liste droulante si la liste rouge des fax s'applique en sortie ou en entre \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Description de l'utilisation de la liste fax \end_inset \end_inset \layout Subsection \added_space_top bigskip Numros bloqus \layout Standard L'administrateur doit insrer dans le champ infrieur les numros de fax qui seront lis la nouvelle liste rouge cree. Utilisez les boutons \emph on Ajouter \emph default et \emph on Supprimer \emph default pour la gestion de ces numros. \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/ldapmanager.lyx0000644000175000017500000000145110342534367021276 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 1 0 8 -1 \end_bullet \bullet 2 0 8 -1 \end_bullet \bullet 3 0 8 4 \end_bullet \layout Title \series bold GERER LDAP \layout Section GERER LDAP \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/ogroups.lyx0000644000175000017500000001413110342533443020512 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold ADMINISTRATION \layout Section Groupes d'objets \layout Standard Un Groupe d'objets est un groupe htrogne. C'est la possibilit qu'a l'administrateur de crer des combinaisons d'objets de nature diffrente dans un mme groupe pour rpondre la problmatique d'une situation donne. C'est ce qu'on appelle le Groupe d'objets. Cela permet une gestion plus souple et plus approprie que la cration de groupes classiques. \layout Standard L'administrateur peut ajouter et configurer les Groupes d'objets partir du bouton \series bold \color blue Groupes d'objets \series default \color default dans le menu de gauche dans la partie \series bold Administration \series default . La page \family sans Groupes d'objets \family default s'affiche. \layout Standard La page est divise en trois colonnes : \layout Standard - la premire colonne est destine afficher les noms des Groupes d'objets, \layout Standard - la deuxime colonne contient les icnes qui sont des raccourcis vers les proprits des Groupes d'objets, \layout Standard - la troisime colonne contient les icnes qui sont les actions que l'on peut excuter sur les Groupes d'objets. \layout Standard Les flches en entte ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage. \layout Standard \added_space_top medskip C'est partir de la page \family sans Groupes d'objets \family default que l'administrateur gre les Groupes d'objets crs pour la socit. \layout Standard Il est possible de modifier l'affichage de la liste des Groupes en utilisant le tableau intitul Filtres \begin_inset Graphics filename images/rocket.png \end_inset . \layout Itemize L'administrateur peut faire une recherche sur le nom : \begin_deeper \layout Standard - cliquez sur l'astrisque (toile : *) pour voir apparatre tous les noms de Groupes d'objets; \layout Standard - cliquez sur une lettre et tous les noms de Groupes d'objets dbutant par cette lettre s'afficheront; \layout Standard - cliquez sur un numro et tous les noms des Groupes d'objets dbutant par ce numro s'afficheront. \end_deeper \layout Itemize L'administrateur peut faire une recherche partir des proprits du Groupe d'objets : \begin_deeper \layout Standard - cochez une ou plusieurs propositions \end_deeper \layout Itemize Ou encore la recherche rapide \begin_inset Graphics filename images/search.png \end_inset : remplissez le champ par le nom du Groupes d'objets recherch et ensuite cliquez sur le bouton \emph on Appliquer \emph default . \layout Standard \added_space_top medskip Pour crer, configurer ou modifier un Groupe d'objets, l'administrateur doit cliquer sur le bouton \begin_inset Graphics filename images/list_new_ogroup.png \end_inset . \layout Standard Tous les champs prcds d'une astrisque doivent tre remplis obligatoirement. \layout Subsection \pagebreak_top Informations gnrales \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Nom du groupe \color red * \end_inset \begin_inset Text \layout Standard Introduisez le nom du groupe crer \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Introduisez une description, un commentaire sur le groupe \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante \end_inset \begin_inset Text \layout Standard Objets membres \end_inset \begin_inset Text \layout Standard \color black L'objet membre reprend la liste des objets associs au Groupe d'objets cr \color default e. Le bouton Ajouter renvoie la liste des objets existants, utilisez le bouton Supprimer pour effacer. \end_inset \end_inset \layout Subsection \added_space_top bigskip Rfrences \layout Standard Les rfrences rsument les relations existantes entre objets. \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/fonreports.lyx0000644000175000017500000000150210342534367021221 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 1 0 8 -1 \end_bullet \bullet 2 0 8 -1 \end_bullet \bullet 3 0 8 4 \end_bullet \layout Title \series bold RAPPORTS TELEPHONIQUES \layout Section Rapports des tlphones \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/faxreports.lyx0000644000175000017500000000146510343003530021205 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 1 0 8 -1 \end_bullet \bullet 2 0 8 -1 \end_bullet \bullet 3 0 8 4 \end_bullet \layout Title \series bold RAPPORTS DES FAX \layout Section Rapports des Fax \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/images/0000755000175000017500000000000011752422551017526 5ustar mikemikegosa-core-2.7.4/doc/core/fr/lyx-source/images/select_new_component.png0000644000175000017500000000070410320737370024445 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 'QIDAT8˥1HBQdCA57Ec%M8DKFj)[l5&VA5$aCK.oZo٫|:^s^%"8kn'Qjȿ/^5<W Zg{>zQ.7S`gO\Q}dvt08"z Q^Xwn䡢\sX0n]F*#?6yT)p1A 0y(+ϯ 1L@O|`e}-) ilj,˒j" vv*_4 n8 +=uxR@+oN IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_root.png0000644000175000017500000000152410320737370022252 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/search.png0000644000175000017500000000177710320737370021513 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/forward.png0000644000175000017500000000132610320737370021700 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<hIDATxb?% (R7oX>>zxgQ)W'i P] '+; ,--mv/.@! e< lL3ncPf@ 022(/nf&@'J}ΘyS#x\l@1T pS]ڝ7 ?~c7 p#s >냅@1*C??2J~j 4 KzDka. o)_m5!.'×@X_@`Wp22oo}f߿32ܹ ;$bf_W]H_ /rOb/W՞0 eb b V x~ђ=vcҜsb~@ Xwt"we` YzJ o߾1xzzfg D=T3 @` 455@,q Vf@F!ϟ?G5 p`/ *IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/blocklists.png0000644000175000017500000001030710320737370022404 0ustar mikemikePNG  IHDR00WgAMAܲ~IDATxyxT?Y2$dK, J"(X˥O`j.PE nEvňlaHBI2If2l3b{>}sΜ3[?>jbkf@}W|'~Oz/R7mU} Wz-JOH֐)p]JYܻt߳ e{>\*.գhfՀo:98nXRWT|prK* eXܹwʲokkN=n΁@E|D4$HJw=dQSϗ[jI7Ǟo:~孞m W^(nZeH[,RBCH c"? %$NX\1{k_=?ּ/y|o89)1ĸt9 "6͑#=#&*'P=Z97ݤE[ZOw+ c@޵l7&.w2Az/LqwuU $ww|g*MB*O7AEӊ]V{hnݩ}fȏڟӷ,3@@c4h5  J,G˝X HEQՈ]ˍ 'kO%f_=2f1w4r;;Vo=[Pgj9Hy2AV lMLI)d ?UBbsKyW]˙~[! ֵ\ e{[R2-Odr 1Ut/@(c(a*Rr3\S2⻅%^8ps+/3֪;)T]ڑIch魳7s{ʚ`5 he1c 0jw&df TfOޛslDqu֑Z/lo- iCfcwlO?#;ęU@VA: * BC 8>1繇 L.ę`bAΙ]t+6F-礢جz﮲>ь+ڷa?->!`I~X'-Pp]_[b\qC>?c>/7i GRvtIaNѢ)Lл 68ز`GLJ$enc3:5]7D8m:+ũ%g,&kJ?Y&Apƃ##_dA):Ņ 9DД('w>L.O<=ʪF~=H^Y=TUG. @[sMN e Ϟ7}^pl3^G*A[S v F?6,AƏ&RNY~olfǡp]-љsgr ܮM;o41`8ݤ>ƞA r07N7FQp /J=m?W.5S6}tb5(\$)XcD7$$.yhwlYbUS8N&O NYy#owsG `9׏uߛo ]F$p%;| ?!qh-^l̝3Ma2IHh?Vsؿ/o6~*bu d{_^).G Q6~!S-Ji 2rwbV*C+y[0}%o i0F I7v46{O|bb?`J܅-yo-1&"GQ|AY,x %"TJ' шa#[}߃lm/{ fJw= y? ZS@7R9# cY`3G;{ .ָITF4o!5 h lcUNxg\`d --_Z!3&i@\>?}*OkS,6UѮ9B8Uj 1>PX37ZHK1'%XATŀm*UDyH J= P}?rHrHƋk SJ`er=:GeQ~1FFH0kSu@YsJMaXt!m`¤8/Ʊ&Li/\ {@3:WٸwA䜫JF c7K$^vݨ;֮Z=MLoaѳ>~"',e:.Ԁs*{ҊxX:( @B<Cځ~5AB^zz"wM7>p'IZ}dG"1q,dM~OTD5#]v wO{n 7F C@ \qCKJF5 Ec*vΟ]*.sE=Ź&Ӊd{ {@BN9?֮|^$Ǝ"T&Na\JK).N2i? я#SD:ȹ>ٖ+]yվݭ͓HHkW#6JƻIdxp6tu\vFtRR"mpG/12N ywPjBg7~P][Wbg RҒظKSS#3il.SՏ6RS~i5fHHS^Z[pϽ2¿`{ׄ)rΣzQī5IJ: ϛu]/u}`t]:o.:pM7/~ң~`Q|ՒbM&[۝Bh8GL=1@ =Z@ul-PfR{/>tev֋y`~~pv.o.W=buǺt.)o&(iIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/dtree.png0000644000175000017500000000126610320737370021342 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<HIDATxb?-@XM{69 ~ 4 R? ~}Z@, Cݍ~b`O ߡ ~= 4?ĥ'а_ 47? FbC(@,|%@ FfFпȂ@/,^@, r gϞ͐J0r@ 1}GTP Xgr)VC!|bt s- _8 lA gd-q0  6y\BL90ATM#>CA F. E@ dM`_Ѵ%!f` ,@l YJgj;@1Ҫ &;QL! <IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/crossref.png0000644000175000017500000000116410320737370022062 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME 8veIDATx͒;hQ{wfgggfwnVP4•DETXXXM"FERX(!ME K3{bIWuNq>klDe*PXH0ۺFďiPƢjZ(y3Cҹ\Ϸԛ!M L6/16mHPl ,]<]mܙ-^f<]~ 2q0vrB9ZhCW) E̬~z.}cLQׂ`gu,!ӛ1b]lP4lh;3N= )znldz=t@)!{ `ߎZº,*t#*AHā-eEWpߚ?/-p!;(ׅ=NߦddɈŤyו(:@YyǨ_ȀHta\msmQLU4*ft?͈Ȇ,ޮU}wIMZa) ! 7jZH®]4!!MseWP6 !m:@!&rNy=tnL@Wlv gԎr`olwg=fR"TA;~ "؅DŽC[9F6o|YNӗ~#q=*Crc z#@q\ضy=x/ gO;(mh2/QG.䄵ܪYuCapb1Ñ%@ZMm-vHcn >@1;zh#thA &}N]--ul©zRH\O2bƃYr5^Gk2B {\up@nMHz .e)i5AcI@ G!h\/ sž7H"aT'P8RFZtlt.Isf/\'M"BH5hK@I\GLޅx \W)gA9R H2#htQVصHY'2ƪa2Di@dZl4H7J SRS]/it9AJAR@RBHHD!HVj%E.(nP=6$_Epyn> nq=%c&# FL(Ю@p #px@*ANG&NI(w厠8sg3i7 eFd%@HEsh`w&=%"GapD?tl*9-_C&B|% e%4T]?OY(ZW] -x(>@EWs*-bMP#B2BbA(iOJJP0`98Љ\zo_/疇yi^.LN*syKc'U2ߒ*suU $0 (iȧ?tmZOIc "eAqMt>};'7z(b2+Qz[̻dHPJ dwF q~a4HFmDZ]8Dp l9l.dV0On3A/OۦutnGd(?x H~ $R@ rRЯ}RRy5IWF@֭Z-^LY/5P..Y;[?ӿ @nXͨ5*$f'q4xēHZ;PTJ-d5t9Jp5BP~ 2EZf}u )OHpܜjsUk_*W'Hy4^%2iiN%15nN6~gy^ݛao otێ-(*Dy xJpvyq/_.߉l%Ab22oj4dmD<)$:y98AUe6j( )m`Na60@|ɞgʐQdPe a.rU B$=X3VuA]b (?-f .0/ٸ3}iݑ,,pla3Qhc\cLz# D>}L'm6g_H:bk?ҋY=W7,Zrii2$ݐ('`7U@[y0R/0>yi Օؐϱ [\@RbB)tg+_1ge;%#WB啐pS90}zdE>NHtvMT,>Dž#СY tG6ⱕ!~jRpu3Ǟ|5GD=7eމ*\qR8Uʑ8I0I̱ Rń{< 8kG 1 ҧ K5R}\6Oq.~# ^a1O؋Jt͡/ #f8 Rܶ|3o.ܷX/]^۳{Ov}hG5F>zw;7Xm}&ٌ9g&Ln&E k' ƏekswЙގ<h9IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/sort_up.png0000644000175000017500000000026010320737370021723 0ustar mikemikePNG  IHDRB%}bKGD pHYs  ~tIME (DK=IDATxm1 !'yLj /Y9n Q}l2iD1:/RW&IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/tree.png0000644000175000017500000000157610320737370021202 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbmKXϯ a/o@_3? `~b3Pb'_>OF210~2Do !ߪ< A y>30g`Hߠ4 4&). 5 z _e8+fM￿ g`ge`fb VX2 ,o00|{ 4Ῐ?.?@X50g  h 33 26`f/k tv2 XB33ܻwaҥ ?d00a0f03K jz/0&Ac  ...@ \ np10p 4?ff@|?!N}|@, :k  Q @glf1 a`ߜ0p^pWH蒯`/0V@0ϟ0zׯ B o2z@  `aXŠo`Lt ` v?8P7c&'P#01eD`+3#@>ϓ`noP_o߁n njR@0*k2IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/fullfolder.png0000644000175000017500000000111310320737370022364 0ustar mikemikePNG  IHDRagAMA7IDATx?hAs3g!(F8 ڤT L!_aB.XXXV\"1] [E"^uKw heݹ}gr o̼}3o"ƕ'D)@x~G?̮K`E#;6#_sc2JT+(P(br߶3Rpc/hkPoQA~cXgZG6ynz;[Bpő(\{z;YҬǮguZ<8.ؙvwQO-5 4m&&&bLMo h-H *rRDwH k~A\}0Rf)TUrw<  Ww2V*\ץ x=,~C2VaTC]-1hIRd26fP?,//7 "KKVVVwrqD"UCw!R2t=+33/ikv H61]RIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_phone.png0000644000175000017500000000142010320737370022677 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/group.png0000644000175000017500000001020010320737370021357 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbdH1a! z1 @?Ͽ 7>`X 2?bSkZ$44%Ye`xts>~f`xѧ_3to{0h|y h3Cm\尪#s[Nar (p';_"聋 @Üg0ƺ>pr` a8P_АORDx&2H_?1[p~&d}C`a@$GF?Pzd`````G`2 L}ga^ &+31!n~~I5c6gw1#ÝK= S!a"P"[A*YU᫃ O0; /Í=/E2jOjdxv:S 1!d+rry P

    003@\'08 @!y]9dЏ/Njb C/ ˁR`bi8Ġİ_)Y~X=[HX/ \fti/!1w<9! X@>e`^63xqޮW s2HZ292<=phm// b`O&vX=pwV6N33yotOV3p31(*Y=@,|fˣ b ?ax|- B R%6 >?&wWo~0<}݁> n <\~{/xmag\@ h/1à cA5A#Zq ۅ3Ny LL|uL7P⶗'@@_ _N`~pg"iƠ p߁Ic l ~n ~AH wH{`T DlHrǿlf`x~_A'(fjׯDA<%K|cycPAޠ ?z~e:f`KXX*[)1(3pCkӟ ;"(ԾK!1y :AWO3°Z|~6 XW14KNr(Yaq7HȉHO݃ҏtaؿ|Õwac[uXDyDvnk@ _JA E bz ֥ F4nNbX,*/A_2@4S@X'r1xK1(ZCP{t Ӟ~bM Cs X,#f2&7ɠ4q- { uABɍ!T[DٔALՔAbG_!~S /d,ݮF=(AK%~"!I@/.>֯Xf~6ÿ_oݥ@ \ O=,'`/`T dc8`ygt[-qO Т?Xy׀!BA)/_zs;%N2>ʏ7ڦA+<@ƅ@+H"C#+oG?ypLG1h-%Iq'qIm:k)^~V}y0o|Y%`  )*\Ќ@Y`Wa+TwU9^L!ט`0h#MߞL<`Z@(yx$%}[.s O|ax j520P|{19rI/^e` 륓_}8b$ g?0K X-:^`Z%Kvx/}f`'ϐI#~hnz A3OduĈ-䁾:r<wi)+ {z}vօ1(1_ֽ=b`[UP| ,zedxY"YJAﻻ QgxxhJ00䮇?`ĂtIG_; PݏD; ODIǙ .3e5j {1=&aWQd}MA\<  P (yם;c1 O.0<4;;P e$a뿖 P;AU  @ ߿ G ,726x2\ I Z h 36i~7 ,6001e8P ")8Ubp3bЇ'@Vzҋ(p1c@ D[*0sR~VppCv,@{ F,a/FX運)`lfI5SVIv8#_XP?P?zSZns@)$ Q!!~q]v; ?3hĆu:cݾkx$BWPV W|u/@+2p }k?2yn2&K?H ) #30I # # ?PZ0C`ZA @_uA : sB¡@i;j!@0@uG1c5-WG?@M8̀0ɫkYra4,`!H(`PA7J,' IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/mailto.png0000644000175000017500000000126410320737370021522 0ustar mikemikePNG  IHDRZgAMA abKGD pHYs  tIME,2=p1IDATxݒKTQ=׹Xf-\-+IJ5@h:h.\MBB eXY4`5 )u{gs[\0AAw8>s࿕~/w90mPHPenXnhXn˵m? $HQ&_E^QPB)r \P60o(۴ȁ cãV>솨Cl9wFiiO+:ya~f6hG}cdr!5Uԟ8 Q*A| j`1B'#>tfx_W^i!0pU!D1H96Y˲I^5f&^]'\#jk{Cʟ&6=RXI$AWV}ײ@J4]~Snw Ḻ1I~Cp% P.ҥ2BG_6MN6Q(,πJ &FLNmavbuAC08ğʹ;{3[Ud?7 #o*IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/false.png0000644000175000017500000000135110320737370021324 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/proxy.png0000644000175000017500000001215310320737370021415 0ustar mikemikePNG  IHDR00WgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATxb?P$FPOڏw)-n+ïO:gXDplBf}:* `d岝M_ɑl) B \ , _cxáM'NJ6~>yO@/b C!CL#-6Q x 0ٸ1023H 2D1|? ̌~Ձ/^207 2180ܺ~eY;5=@`dg#PX=0?@?3`+"g/1|Lf~1_ &*@@v $|w-0@Qr`GJ3ܯ \$#+عX5~qP^~`F?` 4,XxN-+12@"+'?/'~}a&!)j #Po fl>o?LLez !`l XeQX)a(>&vn ĵ[n΂1!RHKi-| `˨5b%=wJ>Z?*#$ .7G"};b(b{t}f9>KjU`q :klHAA\6iDKfΐ3Nڏ=Ϣ=>ǽ-#>󆖔9tP^#: 55ԨD6ѣH@Ɏ81,*^ $.t TQTKPӔ?twן0s 0p3Ȉ 1h*(0(J2Hr2hBۧϟ>+?uI`¯߿@٘M60p1  Yc/ ,Nc*Q,JXr53E~1HeP /ZaxÓgO^| L hPcp"Oza@ ߁Z\|@ 1@pkb6`!'A "F Ofen bBt$2H ЧO2x >fgE >\A% =@'I +1rp 30p[ 8?^3( 1?dË޿K˥) PR@,l|c{.*J9,vcXr}+sn{;,Bul ,:h 1} 칁 I`gcetP@&=V]$@' yf <;#8Av"#,HXY ,!3XeaSba%?`-u;Z ҿ@L| <<ܭ,,lf~[@g00K !DVv49~}Z@V M+f`oSO F\\)ї(mA|P LԼ,׸8~df`+3 G`-@g6;>)y+]fe 0@1qrM.anN&.N㿾;&/4ԧz4 RZ >b`y سg`gX13;:c`X_;6?x9yoM3y d{;0?"1.!L OAZ>?PWX"vӻO*磬cāe:_Nds~ a{1'ƕRK>bT l'80C[3LO$%,Ʌ2zhy :.?|z}XٽM+ Mz_rmr3@kAgۅدΘ! LB҂ 2 B2P&7`X2/?Ϗ?2<;z@aۗw (8= y)##5)TUT5o~ʚ sVhVJλ%W\Cng|bf`!i`^8-o_:^ ''jkPlH2& qy)))n`ҥKgϞ@¾[Pz?wx%dߧo8ٙX ?|ëw_><@ G~edg@0Ԯ4 e 0[`Gׯ_߯Y… s;r'@1†ׁH01"u8AZGFe&~/Pn៬:Lzb@;I*(*333J#D4񬬨߸iݻvF &@!HRa6h>aU@5 #8@ LB*晲̲*L\bo^z-x4;?Ho P=ȁR RR`_?]xݻw( +++{Vs?^+|u2(2=3ïj[Ґn# [pNq/ʪ8W۷o;{  a \ 9_l# *kg4Ī ɊYդٕ 9N*g Xax!Ð|DGAZ`鳧 gΞyy;.\ > O]Bl;P,Kǯ 0//) 셩ʳ 2Ϛ-ePnee8p<.[~0\7aД Gy|]`ih0h0^fOO2awc`yA%, lt !f?ny;g4XC}#@|H# )U,ͪdM,i;/g2:py `_s `} 6gRa> u3hJ9f9 B HR=`JF Y\fP6jb4 ß߯> `[jn_ e`f~ _ hI %"%@aݴ } &~, b" ֿ`8(ABy'-e`wT>'G''>2\=  r/@EOh E#@&~{pNG=vIk3fjdebbcvÅ~ .ic"͎T<|;hJz#Dy ǏSnXm/ р L |.ݼp?Ϙf|dxb?AEy;AR 4D@C773H1(s1hˉ2l?%4Aeǟ*&!_2n|1_ePy gh !%A H*_н O2< Ѥ$yF[߼~fy 3.A Z\bXRM>$b$uDhh!v‹ 7=!>B0 %t;wOH %T?}>0}) Bܷt/Iz4ͱ_oPGO8ds1_ᰒ(tӿ⅚/H;?Vx FrۀZʇڇ8̀?P;7Q*-r J6G7YIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_printer.png0000644000175000017500000000124610320737370023257 0ustar mikemikePNG  IHDRagAMA7]IDATxRMOQ=o aB3M)mb V t¿nK Y!a 4b hCie>ޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/fax.png0000644000175000017500000000643010320737370021013 0ustar mikemikePNG  IHDR00WgAMA7 IDATx_\}?ݙݙװ ^c~VB!R )THyCH'$Cy j"Q)) Dxh0nD212Fwwwvf?>̜;]i~ў{s~y㮻[)e+I$ap'ajYʾ?߮gm6MzmY@F']tu7{$I!D^fsI)=$I"RTY0HdC7:׳ xꩧ]׿mV^JR2557.\f:7`Ox֭#[l!ΩE)wO;R \J ryiG5о7d4QLL;Z̠ SJr%,p]7v]!RJ(J钥F}\.3::JIJ,LƠz}zk`Y 霞&/]<ȿ?ӻ-kz/<N3g|;>0 & 2Z1dA/s[׆ih4J Kk=y^>u]vűcXXXO#iZ5x$ C@aD^c"!eq^ŋ+-[n*/4M(Bc`!ML#mHሀ-%ܽn `޽W_};V%H9P("IΞ=rrj-r֠&?P\oe[cH$3'g⡇j:{l`0#8t( (0 ŕPk']G2C wwݏzDR.n!-_y8###Hb066ĭ:Unϩ, R 8y 2\.buu)Mw)q\:;ڶ.F|IB${DHTrIJ"aĎiE1?ƒC˘b/}J 2 a:NjbޡJGRȢұIL=RIJ`[s6R ۶cAheRP~n0*UIB:̧ۣPR(c8FJu7,<ö4aR(PJAP,z mCS(k"]t::P>3@fnnrLRj/dttnŬz뭌kf}N-ABIyul& C `dd50q0\]]… m:fzcGAg,|>z`ztl6T*DQĶmhZ,,,P. )%Be HiUF @}= tٻQ}odcBP(h6($IBXdyy9ufI\>NDJIZMy\|bطn/X)Ȃr R,--177E>KKKX$Iˬ]^!`)}8K>j Z!buu(t:,,,pwP.i6?Q&''Y\\sة)vMOT*"nb.RA %HiJ얆RvW>mSh4inrK4MlN3fee v˲67) t-I:l⯭Q9x\NbD~{cydHt:044DXL"PV !QtjTU֮R:=}zВ$ g7߹y_-yC|r~~8\(Rmn àhPTIw0 \exxp]7^{qv_J8t:Ző•V}Oо} =0jÉvjE˲c~~ͫjbYR)ͼApi>ZYYn333s ,8ޙvargΜaϞ=yoQ*4~D>l4e'~SUexUQ8NJ m;I`uEfggO?00` EVv2B={044Dbnn{6(ϓ*JyW7%WYykfW_}zzzzm XsssE 022=܃yaۙ87ߌmݣ]r5ޮ%׮]īuZApSx_ ,+ٵkOǘfEQZ⎏S*X^^^!Ju[afꄚ>Vi6)t:u?̹s7G`V+ _?|orvQnYXX`qqRDTB)KW*f8{twwyn/40:Yz}o#0q _W" CСC+خ.ҭo@F9@^ۘS2IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_new_user.png0000644000175000017500000000142410320737370023115 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "Ω2IDAT8ˍKHT{XfYkT{HaPTPAI )*-Z1l A$A5BT"hX#fFf²(:&<noŏEfmƿ[I0bKt0-t6"G){0|砨8h[א[Z?j=IK4nK{̖="B|nקis3VP>بH$r:bqih !"~Z.I !J|eRBNA(i{ @](dw=/ݼ2LCAW=w*Մi 4*A{p)|nu"Tsht <®) aIo喭=B~@`ݾէw:uB33QĞsȩk2WHKPո(ɺm%+ z=h*x“mҎQ t~ХSIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/log_info.png0000644000175000017500000000165010320737370022030 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME %9tEXtCommentCreated with The GIMPd%n IDATxeMh\eΝ;3ɤI̤FMZSVP'J PӅ.EnE•l "]KR`6`(EZCM:!3M&sHZ=r8G|12~ܖ@-J+կݱ7}{^l7n}׏va.j$8e& _>nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R%o.aY_?O3~׋ ?b.m3sۅH8 (r=9 1{c}m# gO0| '##'?, ~g/txs+[t7+3 bgb&dO  @}KKOg dPa:?=o3{ /^hcsܰCopRa _~a *0AgZߗa刺 e!ÿ'*0Ruޗ\B L 10䙁1t<01ӿJ^];,[@7а ~C_'~01231< >20vɆ+;+3/1K >2 y9~h ,/,gTV`?Wf\ "o .8lF8 ;&^ b | 33 ??s|>3|`d\1p210{PgJ@32|cK;~M@p Un8@Gx3 _y'@0mc8]ANVAZ30l0|pؔA[N_'>vf6`^83f'×_^IoyX to'(J_ /`2<@X0×L b\Pe~=?'_W>3\|χ?0>0gw }>>QWBVNzvQXPO`b`@IaArׯ>3_!++a % *l `,y=r ?ߜ /SMN.=uF_ B@'= zx?@_?~C@3ë rb @c̀z~=~XIKp p ?2k001|'4ShYcy.(~U.@x=z=qʸCX> ??l$ & ?H /_~0SV֯ "|_} #OY2H iF߭g7ÛORGްH\%@g Q+X&1[x/!L\i4B nܸh?o}ms {7G 8&ŧj0SٮPS~>6$pl 2 8+TYiN/&ܤsraG"M T3T|dy*E`ivvv KUr&"R|y6P!VƆTYWԀm%Ns )9tvp7(P vv)#02H{cR?X@&P?(to> /r9@恓3"e5*0u&, ?;?accgxSظg|v䕗/ i s>_X !;1$aƿ?W^yĀp](04ZZӸxUWϠ b{-/y@Bƛˏ!JŒOtlZLeR_MqN.GX)wԭŠP0Ge(NɐҴY[yB&`fc`o_+%`+Bp,2/45`\qr2}LLس_! )X?3w5N` 0ՌL`{@{p}$HTAH+P^db7C/88ٹ~?/]/*@1sW>9-% ",~0/Wυ.ܶdcH @, l\ ğߠ?8ɀ  ! G]o`̟AI?ЮR 9Kd1f,4 X3}kw s~fxF䅗֫`%LR@65>`-'0Jq3z˧_4 0LLbeXL&8cT< ޿60D1l]{AO@}eP [ RbG?  s0y\cd?d?'@E,u@_pP0ZA4`z 0:; +ã;ٿ 00 !56IgϞ3dz0 ,mlX<€[쉠d{cCA;oPd֠l@ Ѵ~0<:>›a``6Xv2T#t=@zddrry`fР^< 'd26pwo2U06@e>}Y四9h F76 DӤ\Ǯ1|:<$R:B "z@ZR!ԝԁg4zٓ'ai`:Z h0r1S{sR BAv3| \_ذ#: C' ~ k׮Jb,o]}t_p i|nhޡ-ӿLTJ1܎gD4 q<,LP@D߼yWP?`޹l43@8&ނ;wH(xP ݏ+HAW Ġ)XP* Sؙ>sPfމ0G: :RA1hX4  @GG90[ 3b0oB|o&έ[  9Da~B@ <gw CCpGTH3< vo?lr|au$ s4L=( (}  `V=#G>GACV9>?+!9rx>0Ք g0|~R??0ǃA@3 3HI?0 N@̜ ;|'7`t" r,3`& BZ569@KB)_&DMl,yCTq420<ۻOIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_server.png0000644000175000017500000000155710320737370023107 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% X.?0Dgïen|%20}Çocg8wn@d`óg?'h: ncSAQUAXVJ^a߿uA@5HPZCK_NAw?b󛁁Ve Xxygij%++ 01332* $?Al VRL[N=߿U"//&U@P/a X@/߲ _0\u( ff!,@< >@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/ftp.png0000644000175000017500000001041510320737370021024 0ustar mikemikePNG  IHDR00WgAMAܲIDATxit\y޹"͌4]%Y-/n@L8RC\H!$MЖ&pچ)!-@@lcl!+-o,kf$>w+&kS <<3gg}?ɟa,ZvwMpy2u-0M@Y7dfKV8z,l?v9%g:xT0Z+ 7 `)#$:BϱYX7$uEc$Fw=\2Cs,,Z}K"mN6;{pK.w|oѫme ђryH]`XX`Xe,eE*~ ۶Hg 6t`ʲy5\r~=ya;oH+|%uw. Cihߣ\d 7IPH;j`](co㇯$H"O28'O0H1:$Q\Tmvl!TRV ln)DK~@uO~iխ~ť.E]'lj##0tu I-oKӴR,fJ09p(a$RYdؖYTH]{І*VUW|}}9eW--N, T1IГ*0Ac@I$ν8,lFl!W]@Waa& lZ"@zvC h:_ai" x';MU{ F6FUI!#6yIFFdzDzd~ RDqBab HH"FtDQD$I RYx9P >kv0MWxʸT!C~…H .j\{>t:>8霅a:hIp'bE\3w {i?KIITFxw<[p뀯v+j dY7^2-7ڎsF6ظP$r΂zA5Xb}}<:: EmoF`bө"0ŶA?p/H<멫(*Ji( 7+tTG%*=<9Ka{{E&Z B G֔05BsK+%bZ6{a[m>(gUre"+{<2fͬ#3ٺ㈓X{jղo^GEfv?fݎ$Bi |'1Y*a;"pJ̝ݎhXtF'7ZZ;pApvzؼ(?"]'clzSlvDMkyzVZm.[䥱Z摗KC8Nd=-έ"I"=}#׏2VD48mC7(* 9dͺv1oRA:g,)yշ;{ͻ#3&2~?p^y'di\e4#s`ٮƓL '* "yDTCEyk`0a!A8u"sӕ{,9經;I}q DEy)m{ˍxBo;{Sss)Eh0R/duߝa|,:"#O`ۘ6Wd2ּ_nõyLҡxKp]1xn;w! y|׮$ZD|\מ|Y~[~cͱ/&xvLmJSYdi7ũ/?=#nc,O}Un:]E$m?d.zzWܥ1L3gнgqһJǴ~ٳvħrdʪHH)-V` !򋭣";m' >u#*S=KƧ~I Y-wֿH+KG$L rHb<;G;_#@Lg|Gwll;X|I?сxϖm#,-kjj<55eCGBS,@U tzOv{:Z׀$RgnA\wo㲒_x#}SC)Ѣ蔆]0gS|>P7t-Nw?su#w۶xǀu>T~ ki{2^@ JZ6 ),54&Y% 1Θ|T$oTyIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/dns.png0000644000175000017500000001120310320737370021013 0ustar mikemikePNG  IHDR00WgAMA7:IDATx͚y]W}?yzƞͳd{c'N␅JV (BZHPhURJ+$(P D)I.2ǞqƳo{gb=]{;o!T]]K0t(wcL7D:SRx̞ 7Km:͟R;{v ;;nou%ւ.rcj׮T7K(chBogQC?j}]8G ф#Zk-^ԙ ..pf3} }Vȿcl._ZkZrh Rf%/mT劲Fx(e?M vx޲ S~}OAKsbR9D[ R\G8G:! }P^0×~g>y+?{H=y|>CPP Bc@m,6#k0bŘ9 h@O+212_e-@ݞ:ɏgrxd M1Q0t[1PhSINzi47а|u3tf&/Gk݁] ? V.[R(z6qhVۛ0ւon!`P,\ǥ k-劊ظب4yvlfip뭰QsgMu.,g Ez>X\<}[45&QJGnek-վm 2h%4-kcQ!+mk}s W(ؖr5 BAұ#,jGPFJQSz$$Dk,hM*azƮde-["(+kߦ0 aKl;ZGX&[(^^drr%KPPl2BHˢZ)RH'Ifu]R JڰV@JAwނl|?]DVm2 uP02B!(S*fXbz~wpDRԈs^)@B Fna5[u"% o?t^sK{})ǡ]=\!q! a C҆j W80EFx:R[y:RH$:J^bna.$(\XL3T&7 w<|p;҉pkk3qxo/.k Ja:CƲ026@o+=M I?vnL--̈́R,^z`YKSC=F'e)W6lno#Uc@+r[ ߢTVl W\_ _ymI,dFzB`,(q`bz?:ljdq{6sK&(E+M1({>³i[knLqmʀdbvez;(WtFiE+KFpvd>s>&fH5s~8;2wb!ܷ1 }1qL|BrEE~]/H2Āk}֖0ԔC#%/Yb@}wA9dy5Oorc,GoJeōS9ۆlđ /Y..Q,Vέ \iRQ H)YXoc1la.$9}mJEHF `k  G"$qZ37tgjۅRXc5!GՖ7PR5P*D.*ˏN*Rm)viԀa6-nJz6]*vt/ [8 )Tt d8!LH ]WLUhQIݮ$DMӷM QW[un!Z֔e ސFڨ]w8Apq\Xr9T*qE `׮]311hL]]a̹sbj1&ڵ(Zc]!*^%r9֌0 }͛7S,IR444eڨ^vڅ1QLGG}}}aHss3$I|g2??ر={P*(˄ac pClm@ p`~a?~d2֚L&Cgg'dX/2T#GŖ-[6|pΝĚUJL&I$a L!t:vZpwq|ߧq顩)^AT'>R u57p >?;;ˍ7ضm{/aN%NT*rwrCyH))dY&&&طo.]"+ޢaee8VWW) BEx饗A:;;yG8uL&V`3֏8x8H)֒H$F8<݄a"bL I$l߾׍r؅R8q\.g|>ٺu+O= T B.Qbn䡇5" CmF.nG9s ¥iN8?{n/HD/yh PK\y˜>}:LuILMM.|/ƵZ<:uuu,//3:: 311~3Rsssr9~i8k׮/8N\&G{n߾k-/)e}q$H$bk[HJ%_)%J) }YAT*8^kR*>bرcRٳg|r7k}`W U;e7Ѕ_zvOg2kTY~ϙ j)GskhAIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/editcopy.png0000644000175000017500000000141110320737370022047 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb}/>>nKK=;QQYp*߿^c ~e`x 00)me +ŕ? @5?a4 P ۷X!!Nׯ?0|6?~ xo&$  `VIIQ9..B0@ .. --4 X@l 0@1"_Nl`W߁~ ??`0?`z0b@y|XﺺNJʰ7,`q!#@9Y3f at2H߿62 A^ @(061+0m$sF7@ ٢,ˠNkdeeſ@X&8@ 'a` c8z<4]y v˗ blIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/empty.png0000644000175000017500000000025610320737370021373 0ustar mikemikePNG  IHDRabKGD pHYs  tIME ( "ytEXtCommentCreated with The GIMPd%nIDATxc``E,IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_application.png0000644000175000017500000000167710320737370024107 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_up.png0000644000175000017500000000153610320737370021716 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HcaXv0 0Vـ{9`b5'Z 2&fAGv !YQEP/ @s03h̎dwW?0<[!fx @PCjVJyD2rD3ۿ#S.@1t ެTIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/addressbook.png0000644000175000017500000001247210320737370022540 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?`EMбħ I3{._x+?9BC@ZbbwM j>6f`dvf`;Yk]ysY)@1 N3T00210K]f``Pѵy}+%ݐ qfbFfNp~!Z0= >{%T'Kx6H@@I/|?M߿,L< ?XST߿$zx&F}#çW -f*C l,1@x*~FF z?ٰPsw1 w. /Ù=ՖENo@ v 10|jg& X8gp«7cL zt:<(tߩ!V 1 ke8֬g`xό@2qJ:=@>~~+FQq!^v#MĂ'e6ו}ڔ+'r?=/ې!_Y h.`.ϔmz14()31JNȟȐD8; 㽋 =s_xuP _QQMl\, Z?՟-KxCn80!z$x2XVc`x?8?;/0&O zQJ69d 3/Db ΝoUl|k' &/kG#Mޯ?mvtm- O0( ;R|d$8|eS8@K&d;.00Cбيum@@LCX?2}Ͽٞl)0Ɛ y>_ ¹|Ĥ%Ccx8OHHiB׋~? p)E_׿~_/+F gpO?Wp)+Е!\ J Br Y Ƈ80V*dl.aeb\W dZt@(?2z?3*G`&_E64-`IŐ~SHu0s/0&DɟKaJvؠ Y!kHÒgDaAI6{+4٠Rtab\a,O퇟fgbb`gF T 1u^d`fRm Ơ% I`fS7t eXPOd# M6BWm%l PB/C8 ӗD~ 4 VF¿3|.K]!R?O@={q27@3@ͭÒ=)x`istë {Wi @L2+ _I~ d!( !0TO,T EmP;vxab0k_&ؒ 2 &h/c-Ng~ 2Ch(_P!} #Аp nga X&`}l u`/ `;ps9qy L `!'Bc(4;tbaH`u%G=idX?Xo7VX-@g]QLL9", 21"/~i6'C_!+B E1|D, 2X(3L9M+a.x f&`7v6Z5yqFQ!Fv6v`,.3|,2{ ?@yvcm T0M| :*| ;Ne :ػ/3$0ϱ3, ?)'E*pdW< Fǿ2x9M7 /p38$ "( ܜL \ ? ! S| *yWy0Ĺ0,#ː6ar[aA{ٮ03y-0=..Vl V, p=U1qD<; w31(HdHe8wW!E[`aV  i.>&`)޾ 7fi3*ܻǰ;7܂֟e7~>_=ϓ%tzRU!(_/S^1;ϟ^3 +-0 qAB>~7CL RҊ?~2\( $̐ΰxCh70 >23We0V`Pd(Pffdy{3`.ݾg[qCQKa>>`AE'fx ߌl 30302p(>q߉>#7| TE99~f?v538S l ]~HX/a9U/n n0fm9e`6L /}T EEG^IS@<,Ϯ4Cj?'Mb8u`a~Iz ؁e9;$9;&b7`>q13( ?Y~+*v& u.el0 iہH2@N3î^}%>6@sRb,rf_qs)/$,y0TeQe0dbglAɉ  rVLOǠ(̐ . ,7Cf4=?3;0cfgfL$@XG%|E6-;Z,(r ýGO' 0Z9970^[Ҡ:xPq X~:XBb ~av1;zXchf``X. D+{pcW3Rñ)@7 w)~.]Xk18p3(ɫ-6}063'AZ ~C4ofǗ/899X+g cxS1+3,29LҒn {g__. _02J08eˠxfGA JNPxhC,7?4U=pAyAM@U'}0 z݇?=夦칟8!v%>p5@KK[ ߾~VdL4 A1{E)$V8X`'c ] i _3AŁ ?v{O?>٭sX79ſ:+eCzÕ "ܯɄջ ?ƮçǃB/4//r< 4F I X}򝁛ANAa ->e},zI@FuI@mշl}krJ?=~ɠ& XLJ3B% rϿ:t%/$/vS*MqF`ŰeKg_2~߯{d9h7n Ϟ}P헰il6H̔W@Еtr (/pC^{Prbdy5/$ìu?};~t2Px '8Lʬx)ߘPn _тO I3sr 6)1(0fgdM?@bTTOױ\pU\VFa A7Fv`\23(/0B6 /^& d o̓i}8J69)OFQz¯O/|?a)# ڊB662/BA OaaxXt<(ɰK6 Ȟfڿ\87?'n=8 zӅ v+9k Ңa8|Q ؜b`g>_2\AAJ`iӿ߻ˉI6 Ȟ#{7KCh,y ÇOVl|s篘]} w~0aQavC{ eA3\ѻw~z0eǖl@Q4w'Է?n1uzccߞ}`ږϬ& @T_jɛpxk/9E1|zlU]P==J+< &VYfɨz&V?_:4h{ (]{=*Z Rl<^PC:RGIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/penguin.png0000644000175000017500000000170410320737370021701 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<VIDATxbd@:::ibbblllʿ~bxGmM3 fgg|)7os)L@ 55K,>?cƌ@@eX &HJJ9߿eXh=Û?xãXXXT@ R@,HDܹs FF ߾`w u Ve Ei]]]_W cױ| / Ni 7$@8''ׯ_ oV~)3 (#߾}@ ͹@2 ?5Bo߾ "" ((y0aUȀ&%r@04߾ b_ ğ^lٺ?cW çO>~+3Öm;?^ze5PM>VVFSfݼyYAJWa?TAH>ÏO^?^I`p| 33==v[,exnfg N* ٘AA %# Ƣ36&!-gE,@pA7@|+ ܫl_}0IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/null.gif0000644000175000017500000000006110320737370021162 0ustar mikemikeGIF89a!,T;gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_ogroup.png0000644000175000017500000000143210320737370023104 0ustar mikemikePNG  IHDRagAMA7IDATx}OhS?O$vMԦSF;"<(Q"xcTe`yA=̓ )JT1$%/y<I~/,Ɗ'5ظyAn)2;v]=,"n}]惵3Zujqg}|h n^*e<`}HHxHiH$:,ʟfֹ~@L-8X H`ija,pXSs`kXdU@ͽƺ0b_6nh]sBPP+o>Iں1@ی=vO[OxC3ӯQtoZNs`MCX=<{;{.7'^LO2|Ζ[:hM-`pC0YHO[hݫBo~{Ǎ|UWI匕&BfDaJa'J|b5 ,?f4Y/e0T\MSVsU+kG<%(M|V_m*Y'[X1ugW? S fӵPQ-2qGm^P"^q;7imKVn1P.;HEAq޵wAD`hkvѣGz$:yX:s73.hIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/info.png0000644000175000017500000000225310320737370021167 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<=IDATxbdTbw9/߿U/fs_KM?@1 &U8~r3|e0b`D/?x5Ȓ@]|l@/p 1 1` sw=g8(ӛ>Ix#L % #8C:C! XA}ëo <p N>Pz+` rl8@1C ݯ4t'q m5&oXh0'>.)UB, F {/~d+ߟ~ &Y|]̤?P( ,̑ᯠAY5a>m]@}`d]|f`70TtmgVdTQPM lv?XyL^~Q; Z `>6u?10g',ٳ|b% B@8TA℄w  bt5Ý ?B1)30>z@ xD1 M|>08h n>loz)2W X@9kx$vm$?3~Ȁ3 t__3<@#3?~&çB 0?`}J3Lb1ߟ|.|@LB#`a€B1zPe_);@țm $ߟ ,ܿ3s"@17 J :\E0B#8ý pu ;}| vo_gpTn;0pvc`y`W3q3p*>]ϳgD Ŧ`[ϫ `NT*;? ] .6М*8E]K70|~si WXL-<" WDMHz #P qShA>DLE,8B 4ke `e{xIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/members.png0000644000175000017500000000154410320737370021670 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_workstation.png0000644000175000017500000000146110320737370024157 0ustar mikemikePNG  IHDRagAMA7IDATxmk\U{g\C&8I D("?FBё".C;۵K֭_j: IM"4L<|Vϻx~#VVV>F`>512Ό~Ƨkkk8^7)d(# SnϮ›o\\WN̝c?}cS(J1DaQH؋ז_qјFlLgYCKcJ!/ vwS]GKIE))pY_笡⹮q{:SHv?qgC (uApu8_tI([Xˤij~$QbJoŝd3Rd7YyLtFeYdҐ5Z;oȘ_(T6R.7JzB퓹f/MXhn=mG1yiPd#cĆ3g^|<@+#Pw ݏ5ߒ-M0 5ƱO cu?qy/(@PopX4_heE/`> YJIT7Wm h<>sT_]Ѹ{N&>dڋ Q*֮;M՗ݼİE"b %^@y:BA-cI>f2k߂Q%̫y5=_o@x b.T (IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/addr_company.png0000644000175000017500000000343210320737370022674 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@b rq@nVVKNGqQ+qa zyos@BC  I>K._{Gg?/Xw{Lwl&\nVWXٯ$BBLҦ׎_|o>Տ}?~AĿ|y_P-aVi 3S!irkC1G>19 2 jG&WԹ3\q֝ }a׿ ?32(ʊ2zh@'Ff| #.p坋v}@ dMhH|ѓG 3|??@Z "| eW~ZqϧIT2W,3r2|OfoGU9A؁AHH( 27?@/2<{GݝKAPÞԉ ?0i103d/Л< \?wgcx3#3br,rvr6Wa`c+K`d`+ t0# 3#(X.d0߿nǾS p")*($, ̠)p_/Zp='7êm7T'0}o_'0|ٹ t{2H*@L?1 2d1 g}`~P(H ~Go0L F: wb`?@|?Aб Od矟x)f~ÇO.T|{k2 1(*1?u ^?tX  v\b(02~cf`,s 0 dga`Ҭ l /|e8|.=W~Π" ?óן>n ?'PV@C?zr[A&tcO?II 0 s1q38?7?'?y]'#wxÿW 2 >Bbf"Ҝ" @9y9r2p],'/0ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_blocklist.png0000644000175000017500000000123710320737370023256 0ustar mikemikePNG  IHDRagAMA7VIDATxMHTQw|Ր }a[H j!.t#b6$}TXЦe$ BDҌi5lfޛwx3 ù9(RhAP(-IXZrdŦnpN֪5N AN8Hzxy(P(ۣ CB,JAc݃kDO'!!dwmա05)*ga Iib[ugxǷQVhs{WH9>| LӤLJ.]>`SDmp,o `M67͞^̥(rI+GRX (,\Y4!@oGس39Yz/T $qM$e!Y} !) L?WL|re'W>߁sݰKl:ŃvfJL;ǨST׹kaZh%Rp Ct_`bsV3{YZҘ||ۮ3,}/@6 ]>t=56Z~~;__wo(U@0@a58HaI~?>:ãS>8Ɔi ׀ @, h@E,IBǑ 111Ë ^`ЖgДƐ?C9aC8㋻gfF1~E3Cf~uz56~ C? `Qv;7_2{L@@ 0"c@s$f<<Ă?0z'` 􍵽.]rb0/& 0J8!hן >}c8@b 9EDah+PYb2'#`Nva`x oGn.<37gc4@6 P 616`pB0?{? _.=/ttoqQf/om+1R~wfz:斒2,)-pzK_<`?@>˖xU|I( ,bVePcaWd?0 ۷><Ձ 0a2YIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/edit.png0000644000175000017500000000166210320737370021164 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<DIDATxbp_/Zba@0Y=0xFll ,l Հ>30X)#W0FvvG;qrqͽq훗 30˿ /d]ݾpo߼dسc Pb¦ _8c $#𗁅ʥ+@U 0\ f[@GA!O>^#1ܻs a`{6(h2 R ,KNn bnbEOPԼ ;;hP,ï/~'&F&`a ^@4/×O[3pcf P##? AA *P(rLD. 2\&[Ձ0 ?[o af`bVd2f&.nn&&@g`&bBvӏzj k  lhc񷠐,##8 I5T L6f-66fff..NX[n2ܿs XyaՊ5< '22cX~ t_ OÀ0a/ 15dIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/scanner.png0000644000175000017500000000145110320737370021664 0ustar mikemikePNG  IHDRagAMA7IDATxmk[e?{ɺ4i~,M2+l*MXnVfV BA^/hA](z͔B)bpbv'i=9=Eָ^=yyj3^Rjn}$ɯR_A8fuu tQ߷aZ FQd}O0 mGGGBkXk,8e^'ɔ4;;;?nnnNkf4l68Ok!_YYY~p>j8̖hƘ=ql/ ۟a!n5/n~ܺrҥ̃✃ccy%ǂ[+q% jYf 9bqq pbMgS +0a; ZsZmTR'@KҊ,= DYΝpO׮,^2-{tbKH!2Yr>E)RUJo,e(hQ*$YZc&quٙW2dcHEX `($^Nsf+LnNrVcĔG!<*E;|!)'XFq( $A cFNx`rjzX!1\y2ɔ;%ۇO Z IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_component.png0000644000175000017500000000071210320737370023573 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_F@IDATxb?:Ȭߍ)]d2Ψp ]=@0AݳGlk`<@4DЀn qA+ ʀ"h!@@8s2 %e`dQٳg3|b [Ȉ5|_32&b( gϞ?wJJJΞ=ˠ;;;Ǐ?Pfff&&Dxrqq1tuu1}ݻw ?d(..f @ # į5M!@!% ,IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_new_printer.png0000644000175000017500000000135210320737370024126 0ustar mikemikePNG  IHDRabKGD pHYs  tIME pfwIDAT8}RKSq|2у-: M%ջ2^dC@0Q|kDeB&^C-=`s?v}{ۼ/YD;i4 333%I-m$ /5a0 Bm1f5N]a4M!i&y;74MXe@ū,^0 p8+Iެy :;;ţ#"2*JKFGGoY?88ȜQ|1smizI~3_E)ab|M-[ɲs5\oJ:~ w¶l8tw 1˲@cZA0cɲ̪j6N1\&A衔R @!׀c7 ?e$OX,V`O.C\E%0 DwPvr(O<cXD> }R l؃ ]D7,7Y(Vp*<1Hm#ΫL&3, Iax?IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/rocket.png0000644000175000017500000000147410320737370021527 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/editpaste.png0000644000175000017500000000173610320737370022223 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<pIDATxbA 22|_=-!***#-1ÌY5>߻3j/bɳ\~a3 }.NG^maggg3>Z 3.}#&"-f!` r;Ý _f! ▒ __{MMk?302g ?10l# ~52e[kTmbandʣ@,>f?_kS1|ĠÅAAA0~a` k d AZ/G{YMJZ(yݢ3x%ɔ{oP668ZG=W|  ׂ h /JDt "4ϟ _?2 tg߁  `fafL l Ϟb@l̓)vqd~D*>bl)Tlכ2 b ܧ|Ob X i .߁^gbbf _VL̄_ i hD1>ba ⿿0g'. p{\? 0m`2""( CgԄH03% fgg_L@|P00 P. #C>0vУj^$B|0Ao4IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_seperator.png0000644000175000017500000000026110320737370023270 0ustar mikemikePNG  IHDR03bKGD{# pHYs  tIME'tEXtCommentCreated with The GIMPd%nIDATcp&A\a/8*IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_new_terminal.png0000644000175000017500000000141010320737370024251 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME ;4JHpIDATxmkTW?;̛Ay &Z(F `URD,H-]MW*tΌ;)EɪE0fT"* d0?ƉwOR 9+Z۩ka4M? әvdyyeP(x"qdnZl>ׅfgg c Fj7jEmVWW{td2loo+vw"qEMFFFT*wll6k-"sIAF {T={$n=Yc Z"R\.GcPUsՍuMN3=RFDaH6%EW~gSڍcr?' Xr1bC܊od<}o><_tx{RZMӔNҔ?`r8 5_e`` n8q4}+F~򟞁gO/_|} _kUPջ:[w: )p >Ts=@u>Pj z z H#OXztM+=좘!!zu#x,Y<'4NSIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_home.png0000644000175000017500000000154110320737370022216 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/log_critical.png0000644000175000017500000000135110320737370022665 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/envelope.png0000644000175000017500000000151310320737370022047 0ustar mikemikePNG  IHDRaIDATxڅSMh\U=7ɛ̏3d^Lh bK!⦴lD(fh7PA20)E:4M4y̤fef޼h,spa94exyIƿ/\1,SCC}/vJeKKt~ż&%Y5С2tJ8ՉLOԧ:HXvp&3HPy oGn. }`33??A^`Dܶcu 焵 0Pt)WT~{ʕJ&9pm@J uPHHvHiB}ưu5Juxу6R R08D^$FDR='%L&Tʂq,,1?_D@a 1_˴`:?W2U.׿u3xtLS _]-_v$R9XHngƍSF}?@17(.nv1v. `jbqViΝOkޭS_Ov,f|W)W_Q IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_new_ogroup.png0000644000175000017500000000136210320737370023453 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "z?LIDAT8˵[H}Z˙+KtLT)JdBAQ{衇 %r./=tѢ*nQ.e-7󛻞"ߟ9gpwq`FktPĘHkTn&ً~Ђ"^x!RFq׋k򧀀}py Ŝcݥ<6% YIkuҼھQt2mΥˋJ$mn:_I$@5§0xYG )]o-k[`B)pLiK.]EY } zSa.d#`P`J 7 ƪK(ԮZ]V(>^Ǡ2 0jpYVNkS)c`n7?;-fAy x MU*ha"08_>(;NyL]: o/`{렭]_L<o&%Wv/M7" "-"re[UΩ*HwLy6%aH'# yTV;$ngY LMN)E[č[#$yIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/head.png0000644000175000017500000000136110320737370021134 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb?}ˇ6:L@oAOW VV6S'v/ 2| h?1 `a`ff /`XXYlFZ073)gX؀t+ԓ@,0Bc h;?&f X44F  b 60Y003"rȃ(-&3Pbb{j;3  fLrBJai?$@,09nVDnbp 0M0Y 9O_:'abbZ@'361#0Z|f@Iۀ6ƩIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/email.png0000644000175000017500000001005610320737370021323 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y`q g,h?~:~|˒%K~@ŋ ;)?=>>.qq!+W0ܽ{Ńs.3e t^% ?vvv~qqAeeI>>nO~0|i@π+f@kOc0 0Ȉ0ʊ2 BPi/ş>3Q<@4 2cD$89 }fbd`aafԲ76~tr׮]oq%#6n<Ȕd31 bb z7fff(f>~h&..b ]N/x_66V`H ia: /,I7Jڞ?|l%@Q={C 6(CJ B޿Ɓ"4]de =8|lҎE%Fv( #?1|APP1`f~-$$LJ_|=/I8z40m3CAiZTT\gHLd_&n&&FGaLQQ;֧֭[.^*ab=Pz8 KĞαO0A@xFF()I3g{` roB<3 n_6R??/M Qc?"cx8@5XLUUGVVV;.]6dbb9t80yQ8\W:L> @ǿ͉5al^!!m=# 0hPlĖ?>| "ഏ 32Bh==y`o--++ˋn˖-¦  W^|cGf.cd/v)< SO'EPg5ıPbFޥKY~MP+W p^^""v1 wbPcfx+1l 11H2x(c0 5fۏD1JR88XY/?Z(((j滰 @XcTz?3y N>V]%6s%-VE96^V5iw1{ ܿ^332&//70Ty0BfpAfoGW~2/j<, L \<Э|d`4 oP0| N7/1p|_ Ǐ" XF6-k_LO<qo215 @sPHxyh 3Hpu~?GM hw,b֭wbߎ:t[@wŷ?3Pآe`b>@ 1?P-;TTԁ2 ,ase׿Y70v8彰0?Q%* 64T>Y˂0@='71` HUCD1|a}o>[by ؀&I III9P o/, b`0uq`ջC0(ـ@X0 =D9%=/ D;S6mb9@=pӯ3 C p:/(l)`EQ (_V]bayur?10c0A>29#@I!@Oz怟~3|XVr RFF'GNwE `߿7'fϮXɊ@ʤ. 0RA  ,.  Hrã ?e3.#l N _ϟ?;cFvPTk'~'É?.bƄ05XCid)!2A\ >}AJs00*]{pM'O_NLZ( ;'U Do& U&#A`F);( zH,2_ "Њ/^|`8~6_[?>=:uj^B1OQV >:2I3 4aPW@? AĘ~2p2l_ \6# &O{phğ?/OwogE$@,-/ fp 0 70cyAM? +K,,\ ^̿~֗/N H+?eA%?1 A/s`(rvv H+_R70 }y/ ?߿eNP3<{;47W>|`OO hZM4@(OÁ؁%; m0#b)b/`1-$xd`IM omn`584Z G 6b#3`[>!7BɊBS7 lZ+J;72@=/;c@/`Sا~ %$y$^= 6:=' @L7O^gh&XfII3>02p LL l %2$u'PSacgbi !A[`˘ @ْlKg wlzVΠL v AyfdP.8`jgÆ_A_lGS¥JnbXI0 PDgMgiŇc ,ZA靕cFcC+P=H00 ?~+|>v|^C<@Sn]) NTb`^30#8sCAk s)4}rIJy *.e?ӌt$3f ^~cfgCK} 䑹KUzk&h?xC?iX]L?!TDJA{^-P Bl _{ƣC ?;iZ|aQ#9Plp1hG2,ĉ6(9?Abv/THGءm" zIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/addr_home.png0000644000175000017500000000254510320737370022162 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?Z3(d@11 ur0ݽFz"hQ9x8*o3@x%3𱺨-gPb ߁&ΐNAg{  . AZы߀,/0;%m* V3谲0g6c4 bcgwHA bb01030<Z 08񇁗@$ޫf yD8~tE>3|ϙ0;PWyX0KbaFeIr1^f`bd 01&=ԕ \" =cxƠ(43 Ha8 Qu{ 3ŬrJV R "@?3/Ag^`I19pU/080l5Yl`fjrQrg7F'_0ae8ALUA(c6Nvf{O,a1/n W fDs1H90|psacCV 'odΠ ߹y i3rs0|ݲAVA@qn0S1ù[ʷ/akg`x]B]g ̷2 ?0fuwcx**pa<SEަ=7d\{_}h\5b~Û fv | ?c&)5\e0Jf@p-Vn[2{ DvAyuVq b[Lx~?xFPxǖ-W€lBN!}dXŰ=ÜD ùw027Hׯ_ h)aBIc42gd`A0_f`vh п\~^ ?€Ā 1? ?`AA /0s΁  40q3K10gz1+<@A7+@(9',{"Ds3]A\hX @VVVvvv?a (߽;a%(Hc +P B-gde ~y;20y)IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/terminal_small.png0000644000175000017500000000141210320737370023233 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/department.png0000644000175000017500000000722010320737370022376 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<"IDATxb?%@? G^͵ RH]~~ǗC^_y{h /f]>3 `Ovo|y;Ԏ"Jfab93+PdYSpg2ӟWI-OYPn~?5Q 10T10 200t0;s~ =hzpg߯> +x HQސi  <n~ n!BGBИ/?8g`", -0omgm l@O\|@DŀzW`<(Phw<30|:30?GG  }66`+`lí zAh#z KB/A Q8 O? ?#@,͐lcAcI6P'$%k"{>kͰ hũP&"ـS hY>>/'1 fnJ( . dr ##¡L`#y PЂJ(F`,} { _1 P_)g&V̙}. `w<|yXȞE.=x)iK%`) MZ z#'@.548&5޽Ƃ"4C!< Nh 9PPa` l 7g`cxa8'3 1I p&!`?@3=]i.`p+30 A Dw,r q>m)'ñg@9@O|&oڗY&de L6_@iboDDBAgFw&@|!!*@pCX4 +/`k4 C 6q@32"8?-ga" iXP`|A2+! p`Rbq!!#0YX1kۃWd" l뀳 "r{涙,Pe&;v@ѯd̈ҎP{ pPhA*#CZ ,˯D?#R -28\!zAb28y4A  ,vPUtlC   3$&Xi6HHAB rqfVYPz7` p^Xo!.$@=bG,yP}I%%;‘ZbʇP  l0:a _ @LBE$3Bh聒 d'%h\ɇF7 MeM76Ծ_C,\u Zx=qS dz"G;(iB3RSܗxR TJcxz&sp$ }X T Hx *FI=2AWXF6 CB(v}] E~aI!za`% BA1stǰB+6fh]X3An..'<0N<5ӳ߾|r3/ߠT'=u8 ;$`&Vfȗ|@cL,:R |_oWx/vks?8gh@x,10"`7ԣ!kOCxX_;@N |m!wuoG蟟??<ٳv ,@4ji @̈Bv64f#v>>,Nb?##{To8ڟ? z58A`:M󙡭L(4 umMҷO3, y { `F"8: z[+g`e+th]uf%}6pCC@y9{B:;L\ CVߋ>iEAFuxOGˢ>s濎O0DF35dvL!=T0Ac w:|bsNF, &fzۋYϾz*2%ynfA%/hm Ɂ%~: +g2i P#f Hz]IN^87`/X.#0Bz\ ϰ@xtڵOe`},7C{(o(ٳ@OR ZR\ Be0:A<`;C9߿2U n=&E@Q4O 7 NN)inJm@gA+^1, 2z*YtLz9R&0@CgTe1+2y1X eXۏG{-tR#5Pgs\\x{ ofG OAڿ THY'8>rhHC*YRs@1RsQ t46RfB= ȝ%s^NKIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_new_blocklist.png0000644000175000017500000000141510320737370024125 0ustar mikemikePNG  IHDRabKGD pHYs  tIME1[IDAT8ˍMHaVH&Q((PAPCHRQiF}P d") "e ҚY~W]Cfy EG| J@5 @Na ,O}S,x[Dx&"VN wTfMY0EDD1OGwȯ6C̷e6/bm@`39! @HiXbZ() eN`$!&j;9 %= L:Z,@ 4QptެB˃NwB]d>+HƪNo{!hMS_)u7R=d޳fCti'\{,}SKsS  @h *AB!@@LJFc?v!f? ?~&@G8+faId5Yc*!! )Cϖ2 I׌ " ̘l)bg!9Y$5 LLHJvĠ҃a(:?۷?3<, P/ ؆$b^S<FI$wv`$! v|T w_?p3· j* ~c  D) h1>p'u9N7KQnn&pSU30|L, B "뗟=WX@`+ #!pgpk' . v,b?"@J,l $bpsfwogٻo106'pf ¬cdf2r0r2p32 1Z1 ,\c͠<13 .N2 b"b[vrusn\^>良<@Lfd38Ho ܬ nV\ \(DQ1:a3S`s10308 3z ((LJ=Ą&Vʵ;!`obFRD[`O86 :`R$+Pllb Waji TȈ kGiU?;w2X3!#Ąf5a G( 2lp`05WT6026@=)cR@[L؀U?#?v8"am~&h @@gE{BrvTb16sp '%BÒC? 4A@OHI1 yX9, H-y%'))FsSUfY9,)m%PjCv3@aAPfbp$J3"4J6AILc@BK! '(/l R G o`R&^1!&p u4̇y,9A3r Z^ 031C@iyBAPH@L H?ifp_~R W`_ ߾@~3NRǐR4/09iX23;L@14%x;;#o$`x  /`(QX@1AY <`HIJ@T&%0uep\=~ ܜL@~1(p= \I`op3`,???m/bVcg@Y HB?/12l@q2(HJ1=GPh2[`c:8NFz+<|VW9| p: abXredP(^  _>ccePcuý +/ VGJ)p- u8(IJiCRpJsFÚ Hp-) ̟RC? ,×O;L_h/T }u78V̀ſ!JTpBA_8=RaH bPgfv&ph3+@3o@&@0(c hbH8 gDj: z*, >*3< n |h#TZJ@n  zE' {>E #1I? /3>6!X%3$Fa!< J|~TBU2J c]_p6Hrcbx#u70b?i2 ݻ> 3/bAn[HEpr@⋉cxOhϊGKߌn#3Q@{9ؘ(O +jAaÍk:tdY8p #tA/yJ)NAfV..&H& F,6)Aw+w],Amo>~XEɇDT9 ԙC#*/HR\P4%;&h&VZ҈mTľyʵ_CTo?!WfpA⬰<p'Á;8{ 0_E? k(~?Ѵ|}"/@· UPl(s kɟdxc36^@y F{׏;G` m  " Aњ+#&W@_hlfM_2ٽ3kA֠ 29EA'7ox='?8Ğ: zZPc#(0>OnОz %h~D4+CWXOϤƐ?r4,=I <[Z1Z^+`8awnj 扁ա|IˢU5s %Tx;HFUt~eZXvGg0=ЉC PhcnhLZ9'yiJ{l ~2 7d?|HF}7o^](:S J?p(@Qe N.~1߈ iy-m u{nv6nn61!v>xF4}cx Wn߾9s+WA@g7@Qu#laa'si9=[^1UN.av66N& }yo|x7.u"H%d'@Q}46XVPԐ mKB5gXK? -$@= u<Z] ./А_`9;d=!IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/log_warning.png0000644000175000017500000000147510320737370022547 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?\IcQ32D 1sq|۫/~bX°>ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_password.png0000644000175000017500000000126510320737370023133 0ustar mikemikePNG  IHDRagAMA7lIDATxAHSqǿmo:ޞ{\c)<]ޡ( (v6A%!V/^6kn鞋|ӗ'Т`8~ZV]55M[^^~);\g<\X,?::B@4}y xF?0#OlfV{{^7a  wE9o&)-,, Zx<. :I(|p8X[[KD"~V:66v$ N'rBPnέ`4; 0 z{{A4@Ql6dY>RU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_user.png0000644000175000017500000000136110320737370022550 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe18~I0e6yCxƶbs^t^NB,Ll+WC'v/BEÉpkUq!scKu=Tx/mlo#0ҟھT0IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_back.png0000644000175000017500000000153610320737370022172 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HK&vӷ aa9hxEܫZG;qwoP?삔̹֮[/_(oz`yw?@-pcP.֙>|bJ@s=yڂ0+ 82a(!,B=嫣 #aĄR}&Wy~)@|€~ØVtQqN׆矟Sw^D(Z_Oxp03; CsXP`Io \к8tߓZ6`~ `BIT@w̝q 9跠Bi%_RƳZXW Q.` 4;`vrP ahAr,6~Db.ZV󒎿+Yl媲j#, 5S+f#2_F瓬[T ·YY+(BJ嘳kzP`0i,@[yYo){}wͅ5w0[)3OfhYz)$O!IQjIdh p!- E(5rV97ЮU+):Xƿ˩`Fnbw_1u(o3 N h!$:#$>⮄-Ty7J(Ak#,$m i X]V›ⰵM)s)} 6<~+6 9@O35̧~FԒщ[(J3fȻ&)&EiSm uGWYhv^ CQNE,$@JOV 4f7S|wW{ "WL4rF0`*eBX)V3G_K;doL>@$ VC FA)eܸy XQ^{r'ϲ诒4vHad3"| x['S1E˭3ߑyȐOaJV$ׁi2=yS຾jX]2{697Gх|kuӵU =ilF2M@z)!-.tt&*KYR'r5R$AN47|`BJ%н ;@#q';MOx|gס{BgEx`~N{m3mu3Y^P=T.EoVj+8vy׃Zh ~AI]H?\˧fA*v.kY#`|A9+(0h*8;i;Pp!NAE 04h0dS4 ? “Ӟ kuZ^s0x|FK)0pYv%M Ƕឩu6+ %0{ d,UCr*A FC!}@9LU%L8FGK;^''džh#ҪŨ Uq$4&,B$)*s@ɂ5Y]@z2qMGI-,D a5uf Lj81RvD MhhqO7tHBM q#,.[V?D19hx\]' MӜOE54%5'ɢry ^ 맟nB9 4e`n#hB 5{9ozޒ/n}kt >=]=]o>+T⽇ @2G0Xy"ৡH\WEBrfx~+ cvIً**us rߛ^D!W6vhp ˎf eV*e'Qa 1RG J|z91;#_w 3sCwKMYXT>`05M*ѭS`w7/ZX]g3@@EEH-S#e^CS:zޕwfAW2.ws+Ju,;%"Ȝ  R{J={u<dzGUMTi{> bZH5C BtU ta1AJKksjگ~R&V9u-~_$҅(V%2З)(xT&&F/jZZFTĨV1 "7Dخǽt`YzNnKm#b@&LLX:OK> Sp0Ϯ@7gX+wdSiKV3|za](Ĉ$mO[?nRx [swg`8ZY|2G\#Nڛ“/~ܶL,yYm^^Ƕ]J95 LY4FȳƇsP'1y EB[>Kxw$SZW<b@ǎGUϘ <8oo'I쾲+J1)JC:hb2+Lx眻OE TE>`:tV5/Q7*p+ |X^ })!-,ѿ 6Ҽ  H[?HMG IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/ldapserver.png0000644000175000017500000000631410320737370022405 0ustar mikemikePNG  IHDR00WbKGD IDATx{pT}?ݽ+$$@@ 6j .-űIe:t8P4k;qch`@& ST $xEd]c}OglzZfٳqvƾo8prՅz]~𩲶6=$QTT|=3rr\rs?:u^TVF.QywǏNgtxYUmA[K^^,/˯@uE]O3h=ᰆz7DNNyyl{55p] PyfS\bتU'.jl|i&CߙDbNĆ,FeE5k^bmtimmwSl<)0cѥ& "x:e95fL1/Sd[O.^?]O<1b1M=&xh39TK @ Dxo[젠p+}kIw:OtsT?(%ݜ2\4%I I2 -(W WƎSihltֶ}Us<&)>?i&F)"HR,K45!@BD!ƌTT4ow jvW̙q824X2JęfrdH,AsYe())m*(..YqK?#@]ݵuuuoBOСCq;U%'CJeG65nmٰ= 3s{}1ƎMAA.DH$MBEE" ;#rXt-99 6g ܾ>JZ%~F$b+#)sa"HܫiZN.vފ5q6XaDgLPIqQEG؋Mp+p\/0 {$T aTɓRS)@$ I:0[oBQ"Yn5MH[ژ=sIdԩBM%~?b!Q Eii9D6͛EP$0nܷx o5MC5B#`zTE0"E^n>41u=[b&Q2Y1XI~c& Ə/G0 0Pr^?/5w'd˸pVTO!%I2ha,GϘ`?bnRh-(E9#4y}l@HP_Bii'/fK$==;0>n %IbҤInbD= 7n-!'']ځ,!%u]'6vc!HE.]jDQ$ewW4933c֭;TQ2p`$e0~fdd8HD(0N l۷DSSVk)FpŒK ]GL8.W;7@v$KСSt:+|rի.$ضH9 h,\8Cfy9rgrpر٢efaZcckblZldf3rpNf͏q8uޯn~WHXCFTlgϡ/o9a/dXBYh63ػ8 ## U%JժQ͊ZZ8vJKv*+W҇'O^}-[ ^@U˻L/x`tidY4۬iMgE[tunWoiMjQJYH #esZy]a倭&P,X`VwusH{%`0HRTi2X,ɱH,2lX׿)Nd٫_hiqvmdB~3(/{׿htCÕ+xgٹso LHS< CB;# s0wv%kZZڧ.Wʺ ͠BfBUv;,Y2[.||`NZ(FJY4c}$279wh Z[۬޻캺^Yp;ke˞-()!֯+$=N0"ŅQU; "=ڋP\{ag4^ .'Cg9@#A_\doO@;9[@?f@Āğ?O@{ x#يr =DPC3̬~08 ]W DO2@L M# .;?M% wԽtjP#B8 @ 0ÈP:\IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/network.png0000644000175000017500000000157610320737370021734 0ustar mikemikePNG  IHDRagAMA75IDATxmKL\u1s;S`Z"2 QIdhPCMWMh\ǢIƸָ11q4i1M`AR3j@[#S@ {;s.os|'H<+w_=7jۅ0gn;at1̉b,*eS!D,Dt$>1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/time.png0000644000175000017500000000203110320737370021164 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@*o*?}ߟ?^M 9{;8ß=p#_ן|O⻋`zԒW6&~6FV0ccc\@ }}P@LE) 6Ro~2|zEk@'@1XߞnYj" ʲ@00pꙇ r@g30:|*r''5O ī} "BtTp;eN =SqS { VE g&FIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/launch.png0000644000175000017500000000235710320737370021513 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb`xPsq/d?fc@xAԪnX?@kYJ00100"PC #r 20c 3| 4t?dzo?o6b004I.uf^&ß[1s1|3` z0 p!H) d`7=@04ӷ ?~d`|}˗ b9  K˪r%2*2`pf)2#?8xNc`ysŧ ?k >0pd@axP=#!Y>qA3c+c`&?rcL@C@1#:hXC"C] w1 l¬ '^K1 В~IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_groups.png0000644000175000017500000000154410320737370023114 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EoDpxl\ћ0`> \V ܝXI7+(\m`ɖ&c2) ˖&`7PZ&s8k[Xel%:r|'کuI't)M^+V &p>*{ICc)S4T;D?1ih uPl6}^ij3|[\ein/&n5O7DAC\0fc 3P"ڼ2D"#26&uhb2N7V\Nͻ򟁏zC)k/2M-2L[WN~,@Ƃ+ _a/!0'0n;@[25AQb :AHO;[`f3<IM=UvmWe t"BgY߶/ 9 lIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/phonereport.png0000644000175000017500000000606510320737370022606 0ustar mikemikePNG  IHDR00WbKGD pHYs  tIME S~P IDATxYytT}쓙,$HBB ";mŠC-GN r0rP"-d1$dO&ɬ{oH!+s=gwwOu\@Hn+i(_#}iZ^5X)ARw9QPHl\xQcb;󵸑.? BAևex:@j#$d0 |6gt#N`CTT7g; @.IۺyQ D<(G\V*Ϭk&+ C8`c$0g=P{%@0l$g1!@*}3R=kmI >ȈyiL2 IN_Gh1U.<6̠-"gIp!qJn WVxFLҘiLB|{HLNV93SGsbz Oڤ[ WN%׾F"#Rv>qikso Fw0=8' ܄C/FQYB %Ԯ.e@ޗ.x#\Sh ̹}6# E\`@ƈc}h\D"cX aФ H'$kz29jϙ-_ruN7G;e)v>Yso6ꌵveeQ ;0/eC)MI9K;d6h.ʳ˙90JVꨞǤV>iUM}'vlsee(yt:yO˟Qg`ʥ=j0,Ij1GUB'c^Ά P<@ 3⭩;]^.(>^J#5 3{'HC?L%@^ԭV6^:w tOޡ 5`D&)N<45w ]־8y;1 }./eD:Tϫ{~Ck& īNpa0IͱM\Ȁ]lmR=&W2Rot޴!Hɜ%X-Io%)ï[sl4!yvʚF]{ n[ @M~$B.ʱmE#A HO6]pC^a23kC\M1#Q7)> :𯪱ϭݿ]M`v8q055E~9X܏h4ѩ)o***~o^ Y ̧~J^/ٽ{m iZKggClN*|7Bp}вZ7Zl \'<99y%p+++7ηp[ Xj5Dǽ«](JdYFh_/l6 V jE#@eU۹033s- eDQp;: 3s3nK(\zlKKή6r;r6UY0;; ߏD"ՊbX,=}l0bI~X,֭[a4f QA4!p:jx<;v"f3 "N' hF9q]qƟKEQ $IlF8F<""XEKK F#Rnܸ T EidYPF; k"@SeeaC)B.C>(`Y:V|l,aiȲ Iqb!y,+WC(Å8X!K|_Qyr9($9˲KsX]}x2 h+W$ %dP(HEQ0\.R @e $Lh4l6JKQL&\.BZ j,_^YKg"lou dYp8d2 a0 (»;:99y 9PV~(ķ|>EQٌxMe2\*X MMMz8vcXmL,~_T*ݻ( x,cf80K@`hhs=Nk\SQW_ut)f2, e199GE~K)`0kϟ?pM)K岱,QUUU5Mr(*144PVd2sy|| Cף6l `=wvc{d`r|hfffb9pȑ#oZjVwttfvD"0)vu[odzik]],0͘&Y0 v ! ͂0??2Bهxƍqa"(P(@R!Jh4[7C1Fb)PTKlJ9O|b4j<'b),AlH/uzzz!L/]"! v8NH$.7?~ǝ<(s%t…wDW#sydYgff8rJ%2̬,LKK.QAQÇ]|;Aw^z)rN[uXyQI('BcIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/logview.png0000644000175000017500000000707610320737370021720 0ustar mikemikePNG  IHDR00WgAMA7 IDATxIu;ͯgMR(J(KHaYaɒv N{Ehc A b0,%E5$fo{oH&x[uιCx⅓9GD|Y ,9q[ozkt걿>hs J1RB H!B Pm)0ۯvz"2ns?W/~=^x 7Ϡgz|S&j8g*I9oxQp7]WJ1 9&&?=?Z\|{ >Ð`RBQUHXa-Bx`-&w:'%^v;(IX17{PJV5΁s1.\GJHHHQ|dL0$ #q4eu>SQHz!R@57W?賾W||*QFiR 5z88Ͽ봻]Jlԙh PB>ĜuDqɽI<_&|"yZ* :8htDaX 1(,pDQ{RfZr+ $Z)T>|D)5+F cƘDnr8C,[vO{rynHQB!r|hMsMb8)iaNRJ✣$:4';{$u!%9nvhwH!Anu-5>1XYq I)p1EhV80" :]DDz)Rd`q T`(%h6ժaX-G:LhoPVj| s4˽+%,'bԺ'6ЕjV;ZcGSTU.VrcR /M3ltJJ0 ( +ZGI))QƂԊv.j48~R dyeqk}CCM!"%8p;0 I> A{8q}4j51X-p Qg :kQt0= (('&:)Wb\=cqiٙij*5c꠵fu}ha.jCfY9KޠnSUEjIj_ @ҨT5\Q>iJR'q]PR qG BJ0XZޠ2?dY!3c,y:]ɢj >aeF`P9\q@@d|eV_ch4_8Y+Q.EQ@Avo@nYQ7I!? iQWم ZCdA53Ӟ KP6;!ZIޖ=\G ޤ3X$S3ahM*wZ>X*Ck r` Xl!}/YxXufL% 5Ҙ-h4<3foRJU w@zЁi6(̑b-kF3%ZoAf)p[-Jq[γ"tn-hwYpf:0MV(Eӗ>}gnRj˪,ۂQpѼt^>v?sx,䟻hD @tvT{f8s%gw*~apZt%$_K$ Ǐ!3|˿җN XZ?^\G<]XXع' RV.'6s׮~ϔfRkkk!W^yN.g~^ o* }C@)77\|,9̅t:m@>5yɹ9鑄a ǁ+ p.,,,J/:VVn6Y[[v{TիW2ccc[m!Ib\0[J;\@Jq~[Kg}]r`@F,/ M;lltX^^ųa|C̾(o~{ggY&Fl$~_ce0YZZn˛jM&IH)EMTvlj]Rcۼԩǟ;|Чܔm۶- @=~׆t؏4*{ \-3M% Kd%"IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/action.png0000644000175000017500000000061510320737370021511 0ustar mikemikePNG  IHDRw=TIDATx1NP_"@D마"qV$ DGJ$.Q(S,mN"E/&vT湗.@vb9B|k-݆hkj b .1dyZM@:`wF֔ _)UgULC7ϓ|b;hiBP:Oo R.u>,U}X^`Q=/Mb· |!d(5 8gG\[_EuϞ| N3#v~pw rd@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/help.png0000644000175000017500000000216010320737370021161 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?-@FFF S  A > @z#I <|t #@3hhPS=30>yy==&}}߇^_%o@C430L@7 Ѓh3@GZZYܺ ?3gbwڵ@=0C?G`G>) @2d&@ y4Pgwg6o`o ]4f0@1'a SqYY=~qϟ 20lp4ځ.- V+ -P- @C@%ioV{7ñc Hd ÷ @k2p@SH xX@D7`:')HX~kZ?w0A(vh@0 =;ľ{?3pwv^ٳp_b``0 H22 b+W2 ߅ Q3, `.f`S_i\ ~$;B`lk a`y60ILd`&Y 6@1A[~bO0 d '2)l e /4YX]$y2#G i  6@b`&ɉ-Pg`&G99`Bϟ pZxǏ~!aaM?ZZ >>ɓQ_Al,U &$߂$bżȦ],v%Pw2 0R%AWIAB܉>0kw? CK7Z/RK@VJA9`C#C䃑o3ITh|}$ߐ#%7ugXR8e|pEpLr܎wҭI I{@;e{`48fp5b԰eOeS.`'Iz$eEFUa=0 ކ*Қ4+dR}1Gn ?jH=uG@@ym +5@32k! Us DU,' `Oib@JIP5hM:3S9Pދ'СT}oju5&~ah{=vD+!@]B"5T/ez&elK_&6v#>x  ֑A&x'N3_hگi`p{ n_`'(x nC(Z͍WUow_qZ;A)趲{uk38yg<߃j)= Xr` lpLp/{~o1>dIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_new.png0000644000175000017500000000120210320737370022051 0ustar mikemikePNG  IHDRabKGD pHYs  tIME3t IDAT8˕KTQ?{Qrpe  nH\-jE E@Hj.MA YH %"5{ZQ4/|^{ν Z拽>Gc2btyj%{Y2VŸǢw#6\үcUաVUn#Uw*mfp?}4X*J5w(H?<Ɍɣ 1*m)?5zu}kZ9Iv^ Z%lrQ3I5*f?O竩M7g o؝[^K4'N-JP!J$tRG,w|JX￁r@t FIQIV2|*f'%*ȮkZ潨LݒT8V¡å{WUSffTc.3`jQ\צye6 ^L"5舺^K8Q͇4U 51۴TΆ'7fECu5_#$beO0te972F}8ԏsj5vC߱;*i@O؝[^K4'wץRM( kҩ}`~_i?bwymzU/Ҁ awKb. a̒9+k䉨fGyv|kݟx1kݟx1g^ag^aWzWzv|v|kݟx1kݟx1g^ag^aWzWzv|v|?gosa-core-2.7.4/doc/core/fr/lyx-source/images/user.png0000644000175000017500000000620410320737370021212 0ustar mikemikePNG  IHDR00WgAMA7 ;IDATxŚylWv?;6^`6,Hdit44T:ڪU۩W]U&FQf2$Q'd!CB` ^?~F=W;s=&WֳFW٣ v*JJŲϤy#]9^\q޵V#&|=-I4وnc(3-_\G. ?f ?77U'zo{$?Vg~G^f1mq,'Ï<NS;Yˮ'=C1\?]!B(F9d/b+SLNV[|_O,j=ƕ ]_e?%\׌]c38V.} U.pz$NK(*3oakdf/@I>IѵfǗYwߓEB*٥eZ%r%K̹4rǁ/ϬnήMw1pqʋE\X"vyhG>RR:w|0\-j{سZaY|ϭY@* ,L#=q TXۇ2xf,5lbU8ṿ{uŽo ? DbaD F`?'TS/.srNqK;:Vtcփw$D( NxiƀZ̯ZWyϽy޺p8QPàE:'3_8p|'=&0⠆"je~z$(珽žp(>PSXfV7f7&pfP P@׈3Wx韟y?^/ٮX0"Z0葥`č8 %@sY8ѿzSc8@Ez h$h0z,؈E-p?䫯 `,57 N|n#hSljH pYz''9;u)ʼvqT}<ȖF79anca{ !B HAbI\HY遯k}U^,ke _:/v>8J[JW4'wnr#nj ?\H[n!%f@$!kktLN36tvޱs֖0(. A 0"Wpb/=l9* 4 8k̤Eڱ}`h?MJ{g=Pm-*DBIssr)a5 TjZ)wW?zm|:`A E^|l̺}H)>wu +Źta/@C͏XC u=>ؙ9^{7C="&y]_BłD]J1{~|͎ڸ.mڳ9ՈTög04`[gf\Y׹z0 C~07@[ƍwr9\E{kl $JX[cw7M `h pYP  eޝ_)Lm5+=дa`n&MasE|װWϞUJG֯ eh:CX6BEP*g0k۫ m{v]0 ҽ*~uɅT5p-Rq89i^;RBwO#ql!HWkOOx"CȄ\fSiT[, CP'7 5eѦ;;V B0vbi*Q.Z&2-A~Jf /!TPh|_ TҸΧ#TA:]drbyudH]ʕ{r1^B!J+ޚ6ܲ\R Qu!7tGAU|]= |{ߟu첝~~|J%pYZ-ai}mi\Agg1 UYZI>Y1>>ٳs:u>57w]STqĬ NEId!cx4놩iu)},p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/fax_small.png0000644000175000017500000000142310320737370022200 0ustar mikemikePNG  IHDRagAMA7IDATx}k\U~mqlF &TjD4PDPp#ؔ Eѭ !l])2։|ܙ0s>]Y^xy~⬭}Y:S@\ ^X^^2a"<<h|JucѸ~wccFYH)QJJ<Pַ?yZ?0AO }FÔa2L =zݔVK;$I{eee!I8&5os5 O'Gєxï *EQda~gKw-`c}3⽆4osKweYҚ0#5eY9BH9;Th+(Z#,'(Za! }JkvVc ZYӪƘ+5ƘAcDQhcRR@V}/.BW>RJ<ϋn{>;;f-Ӕ`~?PoV8pΡ4r||L$ςv4w=s,c'b| 4#=2c(˒_i8澨z8?~*ty~\qůTi9j2 C0R\ 9GV#"Ӹwd2) ^K/b{IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/display.png0000644000175000017500000000133510320737370021701 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/posix.png0000644000175000017500000000776310320737370021411 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@PÐׯ>}ӧN>|0ƪʯ_DRl@ׯ߽{wﴤk@HzQR\ÙXYY@d߿a  wayWvvzzz3O 7P?r@d{`߾}faa1 ߿ϟ?4g'O2\x񟩩&UUƙ3g^zdY8qbPLfff>aaapď?l<0& ##ãzΜ9ZD:;;K:А G޻wѣ o߾c0 Νc2w @+> "MMM@'prr28991bUrU^~ v((ـ< fÇ0)Ȩ2et@P`]&!!,I@w$tRph= W\˰rJ11˗/?~%&O0BCvv4C?010mG@ŀ` r(kjjތ ĸ Vd3f߾}d`J x4 ʤ ʔ 2… RAYY`%}AEEV嫁La`>h6(Ad9,8Pri޽{^ NJ`E,taP`ccc˃ްawAA;ˈ6@awwcDzA$ȱ A<ALȑ ٳg h:y `4ݻI@! ?q 0DxB `!*_| /ae; & %%V2afߺu n/777éSӭ@\|@8cXFG5BXJ"""4 19ׯ ff@ qd""cOO v6 ;@ l~xr/l Ѻϟ?7lL 'N0C |XX@m `y \ "߯ l@ϱF`;p,;M=9" `EgG;qy pz͛7@ XA*&QQQp,UBjbb ԌxXYc4!C>``xW. @ݻ `+yaaP}䉌wb_Un3<~ATR^z]vKX[c^˔3(j2(+);k 3=-AעeX;;;pp9P~%3^^> ~(s`RR_`.6׭[PQQd`\<PA,ca +8-7 ]:$2B%//'ѥdOfbܔc =`P%Lg$j>+cy{U%T mBk-|I)QJ]w)PAC X,lPaM '~]?|`;X@oܸ?** l` `@Һ y Jc}m@ƇE)V`!88\2/H ,"gBpP6\5P2WBBB`A@+@ Ądê}dzyy1U`MPb~30 #@T3+(  5= dT _k c`9#@V&u5I\szt ́y1 E44cx@J`S\s0. cÒe jV*Fccc<,iJsh2z Ġ N ^ @, %0AM0G;,ZAE?8A`GZ0 kK9pjW|:0A ?<JH @@|Z/0CE\\XZ,ttti20 Fa=3d#̇efP,P@|OA51uP jZ hj 3` t:A Y k"â9 BdO2v-4? ȟ ?@ ~q"@Evr@棋!;摓rRa,BoA`R< @:4N9q(ؠа\z {d >&'ǏC> 9`ƹ ʣ,+"l!MЇyyA ˟@0 3@5 >r:EM9V<2̱0Apl9p v`9 .";=:̱9yw)A NGΞ= oA#ܸ @x;5 4xmK0#װ"CN60'AlPln}0@,36`k3W`D y|i1j[6o|o@Lp5@-urbhP \I8zA/Mf 1 @=[-*Z9a2r%yc G2+`  |F3)  :+&&6յP /Na]APM j,c†A8/4/o߾5ƍ뛡͛gJcw#+ߧO>VFvVpwyA0=; #f|֭>| J:w@. ㇓zǏ8O<\l\03<{p, q00p=JJGg} $XD2J2 PGaW?n|w MViB3]!?%&f6` RUoˇ q0|9 þ '{W|ڛ @AT#/]#G.AM ?H2l&'%Ó>?߻w>1 _b?ûy_? un_V`Zv঵Ms/@6Ĕc+?.!c}̳?I1ȶdL8v\h0x| 8uE檹YkdZRV߿WiE')}v ߎqGLM4i7ڹ`iA%t6Hx<ཉ^yɑ}&Cl_kJTb[vx~GHGI#s$z٪ySl(/LٍzWeepOTBXY jR}z^.P*xhyݟ77݂ ivcQ2N_$@bꐩRDRV5,-k@pwȅJVR@IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/personal.png0000644000175000017500000001002710320737370022055 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?!ȈW^M? )#77;3пׯ߾|㇋~?#_x׋;h33&F (';3fÛ7_ypSwڟ?_ɥ?.}TԮafSPWkQ4ggc`abbï6Ar@c'vn;s|6 ",mT8}_@Aaifg 012pq2|a ݕwZ=6p Hf xy,?~?A1 nVg3,_ދgS?~9whdOr'@uR&fF֖1N PF`h<$> #ĩ; 7x_ozH%U@R%FCUۯ 1201Bx'v':q?g,?IYAE97?dyχ@s@ 9$D~o㙁3(3JmDr`h 3xopr`xpߑ[;ǣb,@%d&&vr9f} Œ@I ' lq80X MFNNB d`a`V \ēX6cT~6"pUS};Vp_&1_ J?8X1=+3ȡ`O0c7$)<,}wV)>Ne7>@Dy v_|g`VP)d1ʠ&åL 0K29|=6# w@1M@j5@  GRbbd`0nAVT37_3;74ـ<dI> Hl*@A~"^ eax_,W&?sn.6`@2= 5&.`O f}X `f v(( p ?10c_;(`&c`̐l20+0P]0Cˈ2{b̰#ã}!ad N6g&7nV`lJ03Hp3ȲtBD>4yZ2sZ3pK`R+2p,nALv5Ea o N?=?g}dd l*'s3212 0iQV1av~^ ,Tr@g//\X!ϩ7efc@ π*: X3ha0_0Ԓcgl @ j123IQ?2 <畏*1Un5r8@9 l | 4> k3} |kf/?ςA h!(0@A1A 010o^N@z"{ax=1l1ԡ@6L, D Aj@|K JMb g}t\BcLCBPr8 u0 YS׼u@ᆫ"s~c j{4 >0F*+C̊p8|Y?q=ȗ@W03Տe5~07v 1 IZtC b 9ϰ=ǟSf|/Ba Hȩ׺`[⛯?QC&$ w0LLHb?|*eZ݇.yr@;* -.W^BЗ =6i%#X??yNvM]_ ݃wbDɸ03mސ"%@*vf;psئ˷~0>zO_%A]Wz| F G@toun/03 `3Zϴ9;_a_@/Rƅ CL&/_v_`ϙl `擿 _\t`KgGOZT~&5<0ifq`{?3KGH=\H1+ᓒxW_dӣGw*y (̙!$ ..x"m`c`Pag`O |kNpB%.w `u? r0 1𑁑_&9n`_?:?(guz1&: &Ǐ߽q;4Vߟ~kXX~{c߿$$啋 AyG_"D_Qi`Ơ߇w ?d=8hANJ=9hcTPP-*auD&N\eZaa>H(TEղo_14 RؿƄ0yth@${`ڴ?~luqq!hBx0|>P1F>o ** qu/ )y HO:$**l3CW:/Ɋ f`avXrp  FPXil<<4+@E-A O Ϟ2 ؐ1 3XpqM"%t7x^l`r8Q l\Kfg8''0-ȣ`O0i^55 W--e\ĸ H? 1qPڇ<(iBXع88?eX  03 pOXe&&"+tşBHAq8 !  2ݼ&V`aXBYvHbAKKHD~o@K!9..vV`||6 b 0?ck0 .`˩ۻkB33z )kX/i`Il9XO3| q0#4>opaz w@nN@y %#b!2倅(A! 09P;#&`^2yj\?8XTUUу6|{"*k q.P 1Xҁ84_ ,oL`Laf=- 4`1 fٌSQ%0f(0PK+ݺtEWv7$rS.5_%-mo0"GTvwub(B!Ԗk$N#)M1mf+ bYbg*wNO, 3DࢤKGP" NIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/system.png0000644000175000017500000000604110320737370021557 0ustar mikemikePNG  IHDR00WgAMA7 IDATxŚklu샻\!֖h&EǪTvbF䴮`8 5 jh (RR!AQ)CIĒ[zR$9Ę&E!.]kfl%%r.s?R0o/ކUWW>z9q#G-г>ǎSSSZ))8qmYVsN&O:th%onn~߿Qߣ%IkK/MAkM8fXlO̪~0011A<GkaxKh^kL5Xh48I8&>Zq]xhhp%CGG\n@B~[\|_{X֜E|>nݢ&&''QJ8b|lݺSNH$PJ-SA Zk(=dr'eth4JGGGyZ;&ϔR.ZS__O0dffXIK477j*7 !(5Xa)%~T*uWid,i.R"Lb}L&qt:M"0 Y0Md2I.fgY3055Ecc}ف\BO** ,_r)vPGKe^v/!e[Ⱦ%k0BLD)Eww7 Zj)6)%xRz$,b@JYkzz\.Guu•{Rg1==d{P){*bppH$Byyyh1Rܖ@)UpהR$ t{kPDq0nn0MR3)Ӷm2 m#XEۨai e›%TA!U@1[0@Y(u:oBl.l)ẁ k,ŀ7^\mFJeYFk1-P_!>)J(.f-}9Ww=RElf!n@ok9irZk,Z/Pju^D3|\ٸq͕aX,H@A>n^/BfYHmc JN ZZZa```y,,|q!{%հ_ )6eeU1`@ n&0dǎ:eW.^)KɫRAl|%>J Cp[ >D\)۽X,F*͛tuuΟE;@{ pbQffl7&0MVOœ!t?h,7EeeeTTTP^^^Ⱦ[T *E,f&r tD#e`Mp1Q*[gTTTy|7z|SRmH$9p]eˎw @qh`%Gahh8Uo~v-l6U]]W^y{Ν[ZZZBuuuYfX6* ǏSu4-P4Wl{1n?إwy8t:f_5 ۷]vXECCܼyy6lT*E:.x&Yƽi Gj~&6}6l|ё80p<(mGT o}K4G45yq1z>"8yp'99y;B(!ݛ:mA|y *+@C9πiS ?_\?KÕUl 6>`%,gBi$uupf v?~p5u'4wjY硭ZQVNʇ !|Pa8ys{g7Ci)jFG>?`/!OZƼ|-pt r( zw=NonH[)P 3d+W1X Y*`4O >M(L3>cퟁ7a. T *Hfa<uXN:{{_}6i'.\J}U2ʊ*Cf*a|$>MeQ)ZSg-ڀ?( * u$Sl|;;WGy[!p\dQi5^G'wV&&ӛʂeU}g"2)`eQG?8f׏@+hm]_߸nH^B@aLL]ٹ3 S='iAUgtlo W v4lFΦgo hspRmɳ*1"&L;-ʉ7>BIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_new_group.png0000644000175000017500000000161710320737370023277 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 SĠ]oR̗OW?EcyxQPCB*?•RQ(|0]`@8:`EMvI 8,^W kK g%p<ֶfk7JR! b@WBF AoH MC7LC` iPkPV%KQ4 #}v:'9`+P \W"a`:UN RAɂf34Mz˜ab8U9/(骄d"nbقj*C J G[t@1XKoө3>yePؠ/ /r>c?%>X-׭@` Npjihtn؇3{hj~ĩp/?}o| ~ALѼBIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/editdelete.png0000644000175000017500000000157410320737370022351 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb勏 w>f``cCL@auv&7àk00?dx9++éGjb`y? _c`*b`ݻ-Vfff6B-;~`Wo2Nb`߻Som3&1i` #\ @$c`9Q;wXd->YDԓ@,0& .O3دnf`xᷖû 5|a&&p4@0YX8b`xo;P3#,! B/œ;+^dkd[ aWm@qrAmG rdo~E&3|^k,| ̯^120z ^0sb`tc/+~2|Xkz?^abknA>`)V ï^ +J OuN>dj6?4gs531|LP`^nJxIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/banana.png0000644000175000017500000000142010320737370021447 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_macro.png0000644000175000017500000000163710320737370022701 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?% &zA쀀_|ygE/1225, w|c_|`k?y鿟tׂ"``e`0ǰxb&̙3]@, ͩ g'Po ϟFwGv/ Ƿ/3Y5ASCh0m ?~|khlld,**/&&PQQ@0vgu-M_>p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/login.png0000644000175000017500000002247510320737370021354 0ustar mikemikePNG  IHDRvqbKGDn pHYs  tIME  b IDATxOoXqڢXHj1@2VzUpq\oƞ78za8Fofqڕ2.\@(HBG}P$-<$%?DJ _?sf׿* hQ Ի_]]I? >F5, N2IG10L!X3fff϶_X ߵgFvs>"f5U`}i)wB333dS!b0|5_X5*}s*e$WWWT؜:kquu%~0/`Xgggf kJ$D¼F򋈥-_UUѩb +~zf& 3_ɤq1+Lⳋ Q e"I?f7p"T,ūFDl"0 #LEa"t,h=PDĚԬW3bŧl`(bGR;H(-ۂc+Q}rE+.KA8bk@4\W2bS+j!5 &B\8 &Br&aEl)=8V#$N+wnhO dElmi6zx @PBݴ7❭; LFl&o>l[o?ψ1`@QZ:j\cb! )֑m㕳4:P bD,RHA  D,RHҾجۺ;)ZH, b b@ ")X b@klERR\.XHert˘ɴuTu͗FOƂuy8}ݚ&QJLq"[ew;-W`ֹ F5\{78ss<>F/bgY-Y͇O-:B껍YMu5w;cS&Η+EϦzORkn__&'6`q RHA  D,RH^#fXH LQhRRrDe:5woyc"1smu56!El9G"1Uio2FDl[ q XEQt[d݊b`P߽-!-ǟϝrY/(Wrz\a~еY-92>6z[0~e aWZփ"%6 W!/ʕ߷xS)WyJq>|vߟ~!bu.v0_EY|薯LN]|Ւ7l_`į ‹Nו!{fr'k:e#nc!Y-7A]@BLN]|H ͇׎y ;{Dʾ~q)|!0 Bw<~'+Zrߣ*],6\d#yR:_H j1SW@D]_XX,o~$: P,E)Z׺xcn_\< X OW筟2) iXۄf ]ML"+泚s'l׺/ߟh8Kҿ pcSw>6z5P9Rp3إE 1;,b(eM"eY98̮XJ/z~Oˊ}Vw;9̑\qE[F  Qer)[I`'UxUlexXHerT8 />6z   D,RHA  qKj~Su#&--ǟ϶/ُyﴌ:(y`-A[um=(Zr}[{LN-WG˙ׯ~gNSs)S6_Vw &BCŵoo/@Zuvr*Ԉ}W;BjpC&"CY 0"ykSwsU>@"6jMUI qX&e^viWDmp|pE'hDl:-Qe0 o??/{99n *ElVK:?\[vZI19f\?L2굮l`'"avi.V?q^, Pϋja1 U˝?ŒAD+Ԉ-W4ہeg{O {w nK0q/͇, ZOXJ8&29umcy{QI Ͼf} 梬KAy)Br0LN-W4E}?`V0X0?iD EuZ  )V</괌[GqؓՒR;b"׺;[G~+ww~u_׺+,Ssf*l}'^@TBN=կWk!so2r*Ԉ}ۑn-=e1^vZca:XVu[{p EluV6>%u,aWV?Z4{#7 Bm rE+W4ۛ7%|VK:6Y@|T:V!TeŃrE+k {a?x,RE֣8-_o$~3YfuNjmp*'1:imWO1I Od<<㶫uXHX~QwXK,|<;[?mwE|uՒ#A o#imrw6)#Ŏ1븱Gpu"vӵ>y!mW% @|EGfdrmtz]=x?߱n}l,|C`{sgGی++bZC )IM<&w#cbanz VƏضn}I{<>$TLbe"I1a1IXyӢqɴ(kBJ+oǝbq+bCninqVKJjvx|E3\\ɒfWz4"n6zE -WfrG!{i.Wx|r'lk}\^>= [h=֑G\{`~ lyī׺?=b{|];ޅ(FoQ7{?xVVKR)om>x\{ꏟh3ug֭ôzSS~)Uh֩"hvT6 )k[?((,tV`%ɐ݉^_|웱قQB8'eCqdfrC)K&B'NY0)?NB|L )fr|,W+`RHLrE{yu42c7B鳯K$rLN]|<~AK&WNSuڬ,4 \Mmfrj~Lhd͞ )&\S 09G0Ť(D,RHA EkwnXa `:D7㩱Bj0/H\flEWXJц0YDqh֭׺4SL#vg^fn}g ((J[: 抢ko #Wxm ؽث;/\0[uG{ǝO;[GC_ Oim/hggI ODluS[}Z,6Fgm,+ZKGj~/6Dmbgm=vKz<_7~'xjS,7f_):Y-]*drƷn6=fdq+b=<~ۃ)*W4O<,c+W~bW6Oߗt]&-0n6 _ʷs[M! #֣ҢfV?<+Gl[w]+ﰹ1vavyX{@". ֊˙Ҟ 0e"R*4ReaXy>y@<`R(vۥ?ZJ0__s|eZ8]vѻDW>r_Ev=:7"EQvڽSuX@m;[?wZ~7tZioĖ+RO~>kL ;=~rMuu4j9i/R7P=[ݻЬ׺ZXJ3Λ6{k&_Mm,]K0m|Çk/A|-n6zn]Yw6-~OT KGBN 줝0wd$C8 0pfCqyeײ+`" /eə/IDATWUk Z׻meu>]]]]]]^,@T"]V9X, @RO}-ĥՕ̌(OnSΣ%fr|rO W_Yq N;a1 +]Y׺ΐ{aT~7jUâOgggXtf}p޺b)m.AzAjB*Lf󳳳D"!>J$D,L3b 8======;; ,bpzrrTU'D"133CD{vvz`2bkߒ̌aoVU`Faggg'''׿y͍7oDFl` D,RHA  D,RHA  D,Z/>@ ")XF09D,כY.nX7ca{iiCpfffğj}HWaӳӓS0˫Ϭ 1iFDk}-K!HqX&5`? =bEXZ_*MXjW7 T٧ZU5\͚UD"!^+ 8:>~L&E֚q+Vv6lX[:;;{yyi-aUtNQ[|5A9D9VlyHSq_XTrD"LTYwb͛zyyL& a38m*d2y֭d2)Zc{+^i m3_R$uTȊ{Ś^]]Y7^;bX4ɬek)|Y!"YX0qW+̔+bͱbldUUnWJX,dmYm굢v_֗f^^^*1K&ΌS&38YmlI5ogT6np[j^i6\,^*#_^qb/SVoHh=aKYURjMaXZV$+঱KcXOq+ Uu 3 խ[ "f Tןkfৎ]g&K7N5StIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/service.png0000644000175000017500000001004710320737370021674 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y#1~ofpq!ɓ^?"ogxǁ +nF18@_.ߟĐ13=@xcEV{ @/Tp? '`'/PΠ  _?`(2gXibA|X ɰ `P8ĞPE6   xEf9 T'h \ +dg'^l/IJ@ H}d` ,qyP0u> xa" /0Bbe CO @Ē@,7"íG +0$ưC!75=@ppU@tq|I`'!#4s9`Ѓ w2ibH <@HG@[1+@|GdbV' #t @!X1L1 DEj #qx AC9Č@3~b`}bhC p)a0C,a|5fsn.I1`g:A)ģeѷ ?^|dE Xc0,op 2h= P ԥ [w0Xu&4'1So9,^|ߜ_}Z@1,UPBt,, ay]ޟ'OPRzTB31ЬL-9:1F ~%1}`z9Y 2bf)#oQ/T M(!@11D1F0h2/ch BM4S0#޻ό҅#̑b`V̐-,6v^`a3 7>3? F@ fhX~[ | 8dy;6Eh`.uG[2|Wb~#C>`!,DYiBV x9ؙ~A#}>6~}˫W(<#ZN oߟxs2U %C.UL,BC-TZ|@|ZWY `i ?{ǷI1v6f`e?~exlw+2<5bkVx`ڶ:J3A;'(N@;P31<0$jh\zjD$+?;fa+&ܝ@K ^c}vfhs!k[/"úWݥ(^<ݾ< yAIAʟ@10z"\>q`H}6?ll NhHb@lژY%v@?(vh{4b[o^ld& f65`EЃW pz^  ?iesex%A;VN`ee X< ȃ<4L_B=L w5 ȭϿ)B",@G-HG /tW1|dga8`%>O?0\va+yPA-Pi4ݼмˆAGK`,aUdxZ^akܞ?NIC5kWz~xgn W? b]]B~mNbd/m?![_ A ń&+[2`Xn?G9?I~"]q/?GPa%,Ĩ)/GV`=wa>ⓦjRK m0J3s׵ \m?߶6l\&Ŀm}z=h @^&(& w^0|zS=~rk~\Ytx{X ڂ?X&2V<>2gb~=|˥io.-`^|-w6e#gCaL~{12 ū5Ќ J_{B~ƌG8Fn7ЀxZ(A MhJx nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{RICt-{b7 a՗d7dGecy=/&$P($sss,@@drW|Kl;Nx!08mcDq +@!谉$I,"e-1EM+FtXJA“Gڲt]GDQe9AWW$^\&/*#a&~?4AW~5/45IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/expand.png0000644000175000017500000000026710320737370021516 0ustar mikemikePNG  IHDR/ebKGD pHYs  ~tIME  DIDATxU 0Ü.Ӡ^%DiГˊ-чl3=)̷଻WGGYDZh)7IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/default_icon.png0000644000175000017500000000364510320737370022676 0ustar mikemikePNG  IHDR00WgAMA abKGDf>l pHYs  ~tIME 74"IDATx_hY?ID[V-*KiwEjT$ia-HuJV]\A} ¾*Ex6([[TdKڅ&&&3wfχs3w2wL"Ýw~93sɚZ1qgL)===l:e*x^ĪTx[HV؏y">~}<3;w Z#+򛿾hK|%\"Ye? BDRkk+^~ ײ=>-hO9,[6$ , $\r۶O,Fg֚ǡumcFyl߾ӧO"˱eR:u z{{`vvb Lw~vsss M(;.bah;,X ͂UӒl-YBPVmC:la033qF<ϫG>|X]4 ȯ8V Y"eY8^^nܹsCu0 BP6! 8H868h׹q/\/p{"\4F*$(f %9\244C2_ Ƈn|زx"?EJؽ{w(@IΗe&''ߨfgO*IoHk 'hdiDƵm:J@Ν;DJdU˙8sJa[uݺp}q98Dl>l6ߐӚƟ6/>_W4_ͷ>R ~ԙzÊy|>U}_مdB9|? <2.xGqIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_new_workstation.png0000644000175000017500000000147310320737370025033 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME 6ՖIDATxmMh\Usνw_N:bK-RP b#Bh(`;[ҵ+YPHш5L{>3G}{[\{QbP(fQjKnnn~,k|qm' ~>sk Ô0Hb{s^8K5jq뇈"&^Nc% 2%{],1m4I/EDFk4)Ø#g1h6i,ϻ!M-As~h? =iH=~'$Mh$N (HFe;8R)P(x9c4 Ir"r/"5ʔ+%ʕ}sw֪%=zƻC >y˽VW~)@Dj"[tIvݓl˓NhW:|efO.YZVޱOO D]A1~0|ݑ#3V%rnѾYmg/]" [o^E)9~Iu1Z5W.JY@jޏd)uIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_template.png0000644000175000017500000000100010320737370023373 0ustar mikemikePNG  IHDRabKGD pHYs  tIME+IDAT8˝jTQsF$I'2wP, | *A` ̝sI8Y7{\fNf2i|&K4wQosWw0-L'V ];@ 2B]rΘp60!=J)*ç/#ek C1wcx*#-BpV)59Y%eEEZX "U@ {߲"jʰD Mc@Dz|"P.AE`-Xk n}!FC z+]l0|CGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/zip.png0000644000175000017500000000142710320737370021040 0ustar mikemikePNG  IHDRagAMA7IDATxO-yKK_,Ж6@-m8`f=\EϞX; ~p`$j#;HҲm//ov/o=8ms^.2|Mz+sssߔu;wfL&f3R ,v$Iݗxwtdd$IrxxlFu A^zG͓Y nKR+"\CCC'''L&ubPNHָËvPx>MFѰ,h(e \y<=P'Dy* \gBMM{$t:)E,A-&0 i˪\r:جVފ^&44M$8SSSϯρG|~V+lLLLH$-x!E=˽UWWL&sxTM(Ȳz0 L2;;{7|/p8<>::Z["!"&[<IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/closedlock.png0000644000175000017500000000135610320737370022361 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME $84Fe{IDATx}MHTQ81IR*CPw)DZjpn (E\Xʍ"4;!Mgq8ӌSgu=\ιuo#mmᇭ͏Ȳf\zrTw^áDZq(*# ɟZ&hVBuEέJyi3 iLuNWs$uUxv `57 'ՑPc(p"D$ nXAT)y {ˆP_ <J܋mǀP- qŝ;_~ʀ@1Džڐ8ʅfps0 * Kpp!93@`5 *VEXp@5lLl4m-(``X12I#2l0ٴ̦:pg*V7mp)āݹ[IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/phone.png0000644000175000017500000001024710320737370021347 0ustar mikemikePNG  IHDR00WgAMA7^IDATx{\Wyܹٝ}&Y?bb\!«( @*?ZQԨTH-*D}@BCKj^~,/n CC55ayVLg=ڂU</ mp=B|oع*<(\6ŢkklNOtLl~77ݟܽݲ׍" }}ρX! `sh65oN}M!q=\)DsPݮ %sP6;kA[ixAɇ?G__.m. C#yh Ib`7m۶MٲzUKyX-:9I+mhQ}DسWh`UA5ahƒIKK{׻x :5OcT/zՆZy)Y+EfY$Oؕ J~Ww,TW,_j}W''Jsh_kZmQD7%Zu*q` /zAjo.5[޸{ c00v퇽o{578x#v4*AibΓ&bm۷=/皟$| eW q}?`#@1[,K>VՒ.co3`Oo?qͥ'.:1-aq 8p80+׮4_{J3{μ b=-n[j[][dǼ\k=oGo~ͷdGWsҞր1a4ֈZ1!7spAk,NbݽP;;pmsS˶v|`kN>[ d(BZ|NpFZXt-Wݸql7Nl)}DHl5awm lR3f+Km?;k(/Ȋ>b9qVqReB`)stg)Ca?t$ Cr~"ð "qj-vk-Xcc&j[+"N%%\G99R ,$  ?On!RAWŗ`I`rRl(EqhovOm*E48ZPKYM, )g䖅S,?)mn8 ]撂2a/F:psm31;!I]yNers'*($yN! $Į]*1e(=8$!c=tsMb"3uj_kѩM 0;x-8k( i)ўTT*,5>++e2!XB!`}n+& +?8FtfgMl2c+t΄O]ȇ}h*ѕP t?$O..R(m u]hZ<쳔e0\Cϖa6q4^mG--QUVW}?|؃5]`":QZR-q沌z]Bp0$MS @*8ell0 9=7:AU, hvR9wݰR\*Y.BZ %RB_.ӬҔZLŲ,|ߧl)!,*iHfAJ^lR,l@.2`77}/>ꈅE[HAV =; ##yNٶatm8}S.W_}5JVeYرRdTcffqX^^)yΝ[&<8YƜ 'V%bI?Q|Owm;%ܡVBAJ<umdq4eaa~:A@ivv$I8q籼L-pm<Ǎc0$n4mir'<|pG5M9sׇ=<v}R A:B<'"x֚o۷tGaѠn|ji n3d!yHs$%& \ǁ8F!Ws |=Q/zStơV-MZaR u9{,{Ak} O=Jb4bj#gDV ZA .]$@/^טOZW--{.s1ND_~/~Z)q#IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/dhcp.png0000644000175000017500000001110210320737370021143 0ustar mikemikePNG  IHDR00WgAMA7IDATx͙yl}?N-AZ 4)zpQiIh iu%;V؎+KVlYEKJK.yW%)EÙ7} ~aAfsK/XZDLe/-FSx_W_uR]-ف-] w ܵEΎLk zq4jy G[wM۞H|i [nݵCܱw[zhΦ7ٹRU\X Ns'co|#yonǾ{=X:mkqaU\rRK9\kc|ץ|?<X-_i6<'o+]#sPZ<)1")!W)*~t2_+i /1P ry!x0oI~1dbrI 2Z(ePVm2mSTcIG{+k;BCDXH!^X*d1bZ0ơ9M8=.C͏?涍cZkK[9?6D9XF)v,(#PHcKsSUN7BXhnj"5Z&fTB:;:lh$c`X.!j}χv{hS]Y4#ZC-GJHdžuؼ~5Z*aD*1l&,S Ⱥ^GK NӇ0+)$[wn`Ӻn6> ۙ254e@T:83s/O`ZPD&䐤@XRdEnP*,Jx$HYN<ϓL 6 ײo5 Ʊ"ٺq[vn"7~Ls7$pK6qvt?KlNJ%6揾8B;Pcceb)NsezS<޻0dR)^Maq8ҚH^vl|}lS`kyM2Ό^9 r* -cN9Q4F;.Ns×Igعy-kV;}֥k "nj~?o!S]:K~B(Wbʕ895]369W+l\#eh|5DžW~S|oU~sϾ-ı!54NtkiT],UU6>=S(XXX(V"J1+Ut_?wIuR~Uo05= D6~z2ǑT0Hʵbb5luUCR~};~k TqTwNOPƵ2ҭH?8|.ܔKg6NtjT=/qP?֥8_:?։Qy2٥8vo~YhAZ7$ 0Jrih ?>׆I8lVWugN"F6*4*%#ӳת(~*FX!xin^0<#_1R(mP _(Q;?| ?ѡbz"*O?aT5mq/ikWg](G8G5bCI~#ӎln2zgyGJ{usf5]\rjX")+Ri逍ܺs=s"z̻̍ji?\6XڜϿx׏%ղi%R!0<ܲ}-$tbM[s>űRCJt*$*e8{y鱪+]xXvzb%Fk{LL8(V 8C= l4<)%k6[y$koFkpch!{ c,J;,B΍6mcll !%~ߓ|I>AKV#~ *0{iϮx)_ZIYKij0TTcUXeh1I; ђMXȤ]9z)7|.m=,*̗٦LZ}t* OAl4iҩjesGKSCE~J+q\3˦#_dgGgKog3ã'd<0Z!A 0HWvL*DX6:n-n&1Q*_Z%yDQ12P dBT(k-ٳ)3055ŋfΝc8y${Eӧ)l۶^RQ111sd͍*8}4SSS ϥ>\ `vvBo"`޽H)v.\` E~;===\pr [ošC[wu;k΄u/>>Z[[9uG%N76ljj_9r1z{{yaxxƻRJ|'.?Ժ7h|gAJya,RJ9x ޿qsOkk+ ;whjjj˥mWRhyDyJ%<Vy\xq`||A Z322pu[LM%b]ce_Ç}?I\uj\~fօYf[ _JZ t?QkfIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_new_macro.png0000644000175000017500000000146710320737370023247 0ustar mikemikePNG  IHDRabKGD pHYs  tIME#2IDAT8ˍKHTaxͦ%D6Ѣ=MS$f,A݉)E"**(qR%1%YmiSѓ1cjs3::{ZA-Vp}_'$o)9$e^k~_bXCT*h!@CD:qhJ!0$2@R 0GBDZ3q)4ˁeSA@2 C>h$(ö!cQֽ*wn H @s/O/^srTLO0d%~n&]JTqFhJ: /q M*f!۞cAt'0MSZDt"HLiLplI=pXW;FlqYsu445`04'm*.v5A3gKrc8Kr^)o'iqH F 5\)%FNS8u$neh9ш>V^+,F6Y@0ڇPRge2MS|;$t=XA9|\6Z8֧7]pl]RAX>M11a%4_~A6=ݗs5x>gϵe տ;m-N x޽N뭗xIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_new_app.png0000644000175000017500000000143210320737370022716 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8ɅIDAT8ˍMhTWsL&M8h*Th w u*Rt"] U+"1V?(4񚙛3s=ŝHP|/sx ,qf v\>T>EY"ע~ h6[ZFU9Uis]cgo:o"56jމb _s`0`'wS/; l6C._]}P今}N9Tg9vi2ա]Gd6/^GwϗONh9Zک^x]lqG `3'(7ѬghIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/save.png0000644000175000017500000000112310320737370021165 0ustar mikemikePNG  IHDRVΎWgAMA abKGD pHYs  ~tIME   A IDATx1A ll2)N X)>"7IU:QoUYD9ŝ${ 1 ط緳!0>1pGBBB *Of!xqy{{{lp849g4Ecv:HUU]~/3uzU'߿hEj>Pz׼ck<@~yHta*wr,9汔8|[@*«޼jPup4'O+9iYju;PDU]9l& ~DJUL .YaZKݦhQ.dYF c&ɢ<OӅֿ7Zkk-YQ0c/e%I|oT S*tW HBi)oDXNc'IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/sound.png0000644000175000017500000000160210320737370021361 0ustar mikemikePNG  IHDRagAMA79IDATxmK#w?$!u!DBmͶC!BڃЛ^RDEdX ?i%th&3qn;{^4555 z].r6HCX k&nvS,1M4T*n x!|!kDAY0 ]1MUUQݎhf&?*[@vMV$I!u^TUEeE!L室x<uUU#`/^ t:xjL&_D&a48;;tZ4 au]$ ""ȏM$i^e˅ndYCkKqʊpIOO^˅aݑ4_NNN `fP(h6r6%R*`||l6{K?>o, '&&fdd}RmIj%J%3  Pe;IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/hardware.png0000644000175000017500000000150410320737370022027 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% (DIJr啗o_h(ß @@/?D _֭s:*Uؘ9adw//1830p13po n@AJBb3  T=K2ALBK %٬/>Ǐ/ CaWό?ޱaɠiʠ݀A7 , 10o <\j $1<b5#~&1 a7N @,a231y&,wj ߘ00rs1|AWALOA߻@, ve R _0\8 ;/wx33X@ E 5ca5 g'pex[E >H0 #-) 1ߏPײo;#3;@L [of( 66o >

    l@ aπз1?Ёf. SA.QNj(@PX A   ;Wfk(`0@a r&` þ4f0@a5* ǰ_[KWB^290W:FȆ2|o3@1Ja 66EEpR<Ǝ=ď_30|33(?Ɗi8@1.Ca>ȥ C1/"`B"  \*h7נd1܆AleFP)EL⇆~e&#nhb8(S@?G_c /AYqo|Dv,ޟ]lef08%] d?-@fJS`K)  ԥ3 0&Py DWM@`.EyH 4IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/ldif.png0000644000175000017500000000536110320737370021155 0ustar mikemikePNG  IHDR00W pHYs  gAMA|Q cHRMz%u0`:o_F gIDATxb?P0@PRR"ڐݻw볱]7GUbį_~^^^ĉ۴9޿O -غuk1 ?~t~@1D&!۷7 ..SW^1<˻;33޽{"̛7O\DDa%#  RRR /^cfffmA@(<@D{zjnݺuǏ߾}c`<{_Ӈ݁F&/<."IIItttzɓ'`ywށ1($# =pʕ p1Ϝ9NyP3ÇXXX$%%X~_R<@dy`ҥ 7 {h>a`^\\ l&@䁂VWW_4K9 ˗/{d?< AѠĞTVV!{ HѣG7CȈ,#;Tbݿa:`q y]]]@eh3s6<+@#r#0wh[[[{߾}p.b!k׮*q<,Y\ 222>|.`m(] u` j=2? bh 30:pX @E&,= 呝;wC4.AwY@ k?S_`~@p>PX(y$ AL 7ưHXhPhjt` Pc T U0Ê}'{:5U\RqB[mPRy| @+|Zi+<3Ňq5 k+ܫ$SU(l4( aw5^(Vv0, _P Ho8PȡAI4 ?P:hFXnp_5 " ֶ( r (ŋAX t7 @ 0&?9D`l0IJJa5+ФI@ d{T?@AfGuP X APY?q0R{C!y˗/F(`$ Ǐg|CP+PYAL`6(}AB f6AiZ,&4C00aP?;V*ԁ<`Z{.(OB}P> @gE7y`ūrZL LH?l<{nE"@AJ"0qXVBǠvLÿ!> bEv,aCN`a'WdO>;ȡU%L Ah%t"/ ,5A<\{{X $L l.<߱>%1 )aiABv(5a1 yP>>@1[zS0 wa0aixX L;wnR @GVe#r FGzA?px[@:K00( "(݋Zɥip?@A T#ek\'`1>/a:`Q( pQwnh>Ăn uA y(ކGd<Լrؙd,T ]{?Gk|`0iaCGhDj @ਊa9yH&DN:N, BHOh!x I`P aa=#9Q A!Ќ_P ub<@`ܻAx/jgA꣢vQc80sIjh`H8fjA%(h A-`~CEj@@;*X~'TdboAv<'gj  DIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/list_new_department.png0000644000175000017500000000131510320737370024301 0ustar mikemikePNG  IHDRabKGD pHYs  tIME $5)RZIDAT8˕]HSaxvvvΦDWQZ4}.++ꦺQ (Ƌ!U`AHPAA7C(̘4cHgtN.έz}W/Q#)+tAсZ5W<ƹ'uOB9MY[uL&E{(#A"qq43gkjS{U\B{L@=\Vƀ> &8v'=5^-MAAyYolad7v >!y H4! )g L$`CV Co"!pj06 Æ}|DRBs9gK _w[klv333o*XYYPJ}gbbbrhhH1s""G}Q~KD(!k:uG?|0DD… P͛7,//Kgt|ffsN9 XKhoo,aș3g>vy366x[vH[ǵ$If099W;JsZ0Io;{XdYVSJ!"(dl9qyɋ(, pT3Gb_Casּ4cJ ^kz1^UӶqk]t(kC- AEoCJwrе~#$z BP@s#6Aaut6af[CL8\AV܏(wBjKheD!n|f6wSw]%2MR JaPjh Ie,-au ?Dz~͙W=-`grsȋرűEz$_ݘzu# ‹{ág#_ȵ'ӞBU*p Jpu9"x|b 3(ل1aj0}GZ) "0<8Xka=%!`880Ll6y^T&ҰTqc8b6z6{TQAʮJc>Z(3>y4rN~nFv]HYj2$"Vz(ۚYCZ&Ä3>%>^^~%̷=1WubIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/true.png0000644000175000017500000000122510320737370021211 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<'IDATxb?% (8Qc@7 @2@ĬHl(A!A X2lj okȧdP}گ? ?YB/oV qj $dIH6]'P"@10" H3]"rTW__WہÀꞀOS ; B׀&03$0Z11|88> F1  F " @aC/Gpr000r10 0`^1a8ph:P"A %^`` S @@14%$@ xjPM3 g 0f6Or n5]ex4ؿU |i X?=L ^5S(\ `N~` /, {b,HIflb47Ź QU!6IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/alternatemail.png0000644000175000017500000000157510320737370023064 0ustar mikemikePNG  IHDRaDIDATxڅMhu|dcfv&nHi"ڔڃR%q(FփTb{(TJ! R")YXj$a!eH7Ygc3u6UAz~W5JY8z}]'ߞ?:ߌ]S FWWeeWXXXyimm{.^̊ ağڷoLF9 Iޭ`%`tD"e%c C$ ccC($ۊ޾]: #n0_DBt@[["nY͐$93eh .]vDX]y-nY?@)! R"#pc|pp Q vODU zsJaH[hXRd ]|ژ^C+ Ttt q'iV~NnَڭVtuZpmLO`eR 0~{3)d o>a {KwЛ샦jhiA5FMM2<-]JK8O;O|$* -װ[C0Fǭ[ƍEu3֪}b:dP 9 k?fp{Hz}%67T睯 !)GԓzGIJ&'|7cfS. Jqoc:obޜrs[ WbAP߫G/8*s+?Ծd}wt:A<*%ıN3zoՋAG7/|b'"IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/openlock.png0000644000175000017500000000163310320737370022047 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<-IDATxb?Crr3fcccWVI?Û7_߽xߦ_έe ('9?*M]] 4O+-۷H0}7BƞD7a͛p?~SWU0gOH[:o @L ,>XZ((3[am]O5x֭S@Hӧ& = @`>|2@AEEV͛ _:eee:uֵkݼyANNLO = @`/UNd~^_¥12,'߿1U^  Z?R((L~K?@563 "L'&& 2`JL|b``ebU@afo&f |'I}{Y lW^Mt!E/+|a`x>0@ x t'P=@(hK`ûJl?@o? adhT ?@ R؀ I FmA5A "/$@ ف @?i }/$llwb?Ff(A d8wc Msn'!IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/sort_down.png0000644000175000017500000000025610320737370022253 0ustar mikemikePNG  IHDRB%}bKGD pHYs  ~tIME (8s;IDATxu |? !X$W-< dϐeh7fȥ=f"aIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/select_terminal.png0000644000175000017500000000141210320737370023402 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `RU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]ۯo@du [[0&0p=Ky6Yh݉J'N.<\]^y R!l<=q8JAEeVf'`lO{&JKu6*'~{~]VP[[J \v=Wg!tr:2675k=uu Y$x A(h?+=4e&?{E1AihNĎBc-ttR)d(.@ސԏIYɩŐd)[]ikZX;>[챸pa8o(Ñcp3 ׁ3颇; fF57wsWyx\ ?&yf^?!`4֊ݝ&n|O]ilnX੩6 Z.A}\Rɯnm*'Lv < ,9{h!bZ[/CXrv,}yPi+=,oSIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/hdd_linux_unmount.png0000644000175000017500000001522510320737370024002 0ustar mikemikePNG  IHDR00W pHYs   9iCCPPhotoshop ICC profilexڝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEVRrҺpanh39X H_P^TA@5Ta-CSE3?~~у|yٵWMR P}i$WO12eg`ggg`eecn.v.2, ) lȠ& 6VV1?nnO9 9SNII@.FFhE9d0!?~`غ~+gggP]]]'Ο?lf(`ضi%+oؾh7b8}`=AFZ݃,'$$Ġ |gXf Caa!'N`5kÄt`!;3AP *oHm?@G0m`hf Fh2"U| U R2cr7'''0pYaa:}}}6CqAh V%@1Ak`3 x͈HLh}XI [͍_0;wa) Nb8x X/ hDzj @@=+cH{'=}&|1 d{hrd3͛wFؤ~o`s3` ۏ :ԋhY G%ðy CK5Lہ)no!_>^Pǀ ]i쁛7o2\t XQE`#n 0g)ww>/ (1vFQQD h`~*p. { }>8< N.A!nhhd8~$8_ xcO>M`I􍡬,a, 0V  O~*KfpIA./Aؒ#RaBJJ'O@/_nݺ+0d45h "pg~z+eŋ$ފ wN;ÞW5_!V1&;8>}!rF `?0A׮^0ZW\&ǟ f$O8j0,[@a>>>9dA-^b޳gmUU|/bWL :&O@[@ tB`L ^( % &0X[[@C1g;T2Ao`%'l2A&1q )ipc`ǂҴPax7feecz"ׯ_={ɓ'@1e.::̣ RCEa~?(d}ZL@ϝ;O*&$G";0ǏPj01@C0ĄV}_kϪU!vi珟!:QW`ĝ ? 46v`''@ ( /4yfffePSf PK3([˗f'$$88yE75TG@Gn2hi(0-`KBk.1\p6hcרğ}n5'>Is0qKVЮ%+,>~$#FFDݠu++k4͡=kO>P74}nO|U8x\-, UhШ&+W.cALgƙQC]ԩ /u@5y~8~Ǐ|gua]KX1*/GNFr ,`0yR]޽ KHt1CɓvihFPU`@y@XCf70<{= rp}`q?]K@ɰ{{E7/fwqD.l͑թeprfx>&̰/ (/}w*~awgп?0\%X|VIπ @r .TT 0@Lpcʕ}229|X1ke8),`+u+W2e;кvȧ@Sg\b(+`g;Ч_@j_`QAb9@[#@:C*)]K'l_<}fm)3 v }+ǻE Nc}* 3 d`@ˌUWO IlO u?N}xan&̰ "wyR\qrsGK!Vmۮ2\t{'} , d]bdjoj>$1@Q2cRNNo~='O.gШ f$2B  F*tpp+˟{'-sh[CG2#o@,u[hNy\ BIENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/reports.png0000644000175000017500000001031210320737370021725 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<\IDATxb?PBb999`cÿ(A//P ((P//߿d$2c9Z=|`222ib$%`z෕^u`O_'1_=<} P7 M01Ɗ.w/1z`cI $cKMQaL^=8 XH?`]|`G3113033i&&0DE%E$Z@5e`300`gay 0&DB Dt0a߿ʸy+88<81fffX{^BP4s C}ᝇ8(@,tP\!7CB{)㿠f67Y4+8d. gdjK+`L@=RFԦ+OFIp&g֓e4WgҖ`bfgNR{@G$'Px|8dF(F o'AIdZ9\&*@pH: \~n&?zIkZ<($!`_X: )> @1*VAH?R'ԬA)@-[X @1(  DQ{S+m:wBm֋O+sLCCjwj!9 !sc!gZ!{;C萷"@jzlp `66oy!09=A`f$F mP U i $V.!L V :ZX׾o Ó]"U$ ,(:o?}PG\cn %+@(RCMsg/ T9iQP.R wKm{@X*L?$UZs@\6'9VBd tpy ,,l$% :8R4#@ax߾< l; `7lX`fe` 0y>} ,*v0&fDx)p =}@XqT2{sWu]Nh9 4`z<ؙ!l@ꘁygʱ~| &l>;\ #7-`Ɉ{& i`,4zXS 3yȘ'aVY  XA6&fL40K*Fpi'n0K1<{AV^Ґʈ]:Z<ˆ%.mZϟ }bf&_.`pPe,`Pꐀ/PRBZ^;`p`ȳ3|fbp3AI hclR @K@`onn\w!pi< -Y XŠ3#fI72p3Wɠ3\ps cz pz`ٲ@O8l^эZfj0Ap {0h)K}`p \ @xG怞Vl+ñM[,`8q2?= ޾p5SW0<~AOGܹ[w ZMMоS fPAZش a#X(,? GnE`H9x1Jn{)xDNAA>t<&ɟ>}pcU5E'7+p+ ں kV`xC0D.bP dsq Ë ,@O𫃓*,XR@46zE5G.\pc`q0†SPJAEMQX`ecfKax|+% `v@B`FH҂R'U63h{IB@}20i]ā$'PcYCLj @x; 0Hbd57!LbZPO0= &䤁nb Ckf} ßWW W'<}$XHf`N8@Qh !9-e  O| 8 2n&cR}@-U+($'h&C) 1--f@XEKNB c4ڀA]^PVp Á1! [D@Q)UFԡE?,ys O.f89&` u!nmE&ELcD"$O\ ^Q>`@d'!?U^*Nǣ':& G&AU}PY8xÅkPUq!Ñ@=Oq `%;_ "}m4$G6/D .'?p/ag&@QP>'G %867G^^ ą`3WArfMHA FX tu<b~Yd[[=C.36B֛38q Аx=_/r2 =41F(fB@__#) q40& AՃT)12ˋ38p%<=@gؿkOkjJ3890 r \t+ٳ}ogM$5 Xho_L6i`ן۶]_X>9nbA`4@[ρ"? Ac<J30< @* LrTOg`Kt8a|lؑH-ܿ AF&@6029޽n818 R3ɉ< yFF\шɆRAĎógAyA &$vÇ//,^./CcCEпa|P ܽaɒ3 oT<^|&$3() !āy0iiIsp%* X-2&d6rD<$p+j]0eJR<@Hy>~~H@֟~8f&&vD3@ʀHh ___O Ǐ?rH B)F>}߾0P)AVv/jb`ceab~V66DG8NC=$v 31@!ǀW|g,߿|3|o 1q.|aFFZ.iz>hw,B 7n<a03S4 $a= |x@% pez{?*?.z;UT`yT&C!;w^zhyL7N8c`!.ΊXv50XBc5ۗ޼x?y{G:8_@RVu к P̐İaMebֺ<*B3|xS@S lw ?df9M'Oc8uX **V;I@<Pp038 l å^Ex ~gxɠ X9Aރ:H Y B |_ ^af6*9,(@ <@y `SzP 21A0 o}et 7򓁏 yK f8S4ol < c5X<֔O0()h- n| 1/  NV Ullj(O8 4ܬ<7~`C~د!WKM`^ϰn˭@\KQQF @ptv;/]z*f ;#'( 0\L& ,60?ݻY@ؼcU:l ̴??`ǟ.y>```v50,H@:sÑ#>Ą!@]IfAl>F&?9~f=t`1!3 :L0mS wa w&] 5c@i764% Op!y"1D??/// -<$]?>!g R G(?kkKK3V`[y\TIXY)CbX=¬F9J* PaXó_c=gxr.6` ,B*1` } + Þǟ~dxPAKK >@!BnzpcK!ye/ ޵ȋ'7 e>FpbF=^rޟcA\ᝏ l G9@$ RO|= }A%)X2%-Ǡj^>gmIy_%P01T6YPM?>O bbl /~D߰p30;Uje`Xq_c:peF`ؼ`d -PevS,@!KKEc0k3,Zt`>`[%"BX?b|f`X[* 56\$ n> e `y 2 * a@Po4)HP: >x|eAjf `mn1󌁙wt:(1+(.9j b`l}WT x 9 0Cuu Ri)Ó˗/d8LB1n x #PGׯ] 5d&@ j1TQ@A[U߿QMC r%22 @E 3030HJBh "c +4 3l00=<a9  u b r @=.]b0ZMIIn [`āki ዊ20DD Pw:uu a'X*@`APFcOCV3/%̿,`4@2TS/Q" @~ JQU ffF>`&?( @ L23ʊ""_{oA?@ > ?P#27>pj0@ > cb :oBj. @`20? +(2DqH H-T|;Ќ.Y 34(psAT00̝HNf`X`ǫW ~<2` x!X 20UP PwC !B)61* BC/R@aK.W363oS =B1f0@a  ^-!WMbx} iUM̽IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/images/filesaveas.png0000644000175000017500000000234510320737370022360 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<wIDATxb?Cnl  >C`1A$D _4-O'H X@:X(3yyYi{g0s*y"w=kd!H?ͅM`5 _;+Q rd1 ȯePn|?_?N0/eaZ[ #/## R_20u0ػ1y_1} X@q+D3dȾ ߿chG\ba9;/J\x X@./X?Ah1P?'718پerG 7s/|rRY<@B?4C O *͟3?``sa 95 @ @噶3a(2a`-.J|ſ@1 Iv LA"q fEg.a'~ @,4r)eI&JV, t-38ܿ#KF،aa, Y 3 J:? &! dCAAb/ axAݱ >b`A 1D\ Q_'ph ] "C r >`=8 0 9?4c00H]7(#LK203>fPq%,[X> 21᳗`PÔ~?8 3~D@ Pj i@C>WV ܌ CeA  `C`"ۏ? ?˃ߠH4!,(`DH \278wF,@>;A`bܹ?j@287H=@3 〦?NPb1j08y#8200C1c/@@<5@+[4IENDB`gosa-core-2.7.4/doc/core/fr/lyx-source/departments.lyx0000644000175000017500000001757210342533443021356 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold ADMINISTRATION DES DEPARTEMENTS \layout Section Dpartements \layout Standard L'administrateur peut crer ou modifier un dpartement ou accder aux informatio ns sur un dpartement en utilisant le bouton \series bold \color blue dpartements \series default \color default de la partie \series bold Administrateur \series default dans le menu de gauche. La page \family sans Configuration des dpartements \family default s'affiche. \layout Standard La page est divise en deux colonnes : \layout Standard - la premire colonne est destine afficher les noms de dpartements, \layout Standard - la deuxime colonne contient des icnes qui sont les actions executer sur un dpartement. \layout Standard Les flches en entte ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) servent modifier l'affichage selon le dpartement. Elles prdominent sur toutes autres formes de slction d'affichage. \layout Standard \added_space_top medskip C'est partir de la page \family sans Configuration des dpartements \family default que l'administrateur gre la liste des dpartements cres pour la socit. \layout Standard Il est possible de modifier l'affichage des dpartements en utilisant le tableau intitul \emph on Filtres \emph default \begin_inset Graphics filename images/rocket.png \end_inset . \layout Standard L'administrateur peut y faire une recherche sur le nom : \layout Standard - cliquez sur l'astrisque (toile) pour voir aparatre tous les dpartements, \layout Standard - cliquez sur une lettre, et tous les noms de dpartements commenant par cette lettre s'afficheront, \layout Standard - cliquez sur un numro, et tous les noms de dpartements commenant par ce numro s'afficheront, \layout Standard - recherche rapide \begin_inset Graphics filename images/search.png \end_inset : remplissez le champ avec un nom de dpartement, ensuite cliquez sur le bouton Appliquer. \layout Standard \added_space_top medskip Pour crer un dpartement, l'administrateur doit cliquer sur le bouton \begin_inset Graphics filename images/list_new_department.png \end_inset . \layout Standard Apparat alors l'espace de configuration des dpartements avec l'onglet \emph on informations gnrales \emph default et l'onglet \emph on Rfrences \emph default . \layout Standard Pour enregistrer la configuration cliquer sur le bouton Termin, pour revenir la page prcdente cliquer sur le bouton Annuler. \layout Standard Tous les champs prcds d'une astrisque doivent tre remplis obligatoirement. \layout Subsection \pagebreak_top Informations gnrales \layout Subsubsection Proprits \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Nom du dpartement \color red * \end_inset \begin_inset Text \layout Standard Introduisez le nom du dpartement. \end_inset \begin_inset Text \layout Standard Description \color red * \end_inset \begin_inset Text \layout Standard \align left Introduisez une description, un commentaire sur le dpartement \end_inset \begin_inset Text \layout Standard Catgorie \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante \end_inset \end_inset \layout Subsubsection \added_space_top medskip Lieu \layout Standard Dans le cas d'une socit possdant plusieurs dpartements sur des sites spars. \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Dpartement \end_inset \begin_inset Text \layout Standard Introduisez le nom du dpartement \end_inset \begin_inset Text \layout Standard Lieu \end_inset \begin_inset Text \layout Standard Introduisez l'endroit ou est situ le dpartement \end_inset \begin_inset Text \layout Standard Adresse \end_inset \begin_inset Text \layout Standard Introduisez l'adresse du dpartement \end_inset \begin_inset Text \layout Standard Tlphone \end_inset \begin_inset Text \layout Standard Introduisez le tlphone central du dpartement \end_inset \begin_inset Text \layout Standard Fax \end_inset \begin_inset Text \layout Standard Introduisez le fax central du dpartement \end_inset \end_inset \layout Subsection \added_space_top bigskip Rfrences \layout Standard Les rfrences rsument les relations existantes entre objets. \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/macro.lyx0000644000175000017500000001460710342534367020133 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold ADMINISTRATION DES MACROS TELEPHONIQUES \layout Section Phone macros \layout Standard L'administrateur peut configurer les phone macros partir du bouton \series bold \color blue Phone macros \series default \color default dans le menu de gauche dans la partie \series bold Administration \series default . La page \family sans Phone macro management \family default s'affiche. \layout Standard La page est divise en trois colonnes : \layout Standard - la premire colonne est destine afficher les noms des macros tlphoniques, \layout Standard - la deuxime colonne indique si la macro est visible ou non par l'utilisateur, \layout Standard - la troisime colonne contient les icnes qui sont les actions que l'on peut executer sur ces macros tlphoniques. \layout Standard Les flches en entte ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage. \layout Standard \added_space_top medskip C'est partir de la page \family sans Phone macro management \family default que l'administrateur gre les phone macros instaures dans la socit. \layout Standard Il est possible de modifier l'affichage des phone macros en utilisant le tableau intitul Filtres \begin_inset Graphics filename images/rocket.png \end_inset . \layout Standard L'administrateur peut faire une recherche sur le nom : \layout Standard - cliquez sur l'astrisque (toile : *) pour voir apparatre toutes les macros tlphoniques; \layout Standard - cliquez sur une lettre et tous les noms des macros tlphoniques dbutant par cette lettre s'afficheront; \layout Standard - cliquez sur un numro et tous les noms des macros tlphoniques dbutant par ce numro s'afficheront; \layout Standard - recherche rapide \begin_inset Graphics filename images/search.png \end_inset : remplissez le champ par le nom de la macro et ensuite cliquez sur le bouton \emph on Appliquer \emph default . \layout Standard \added_space_top medskip Pour crer et configurer une macro tlphonique, l'administrateur doit cliquer sur le bouton \begin_inset Graphics filename images/list_new_macro.png \end_inset . \layout Standard Apparat l'espace de configuration. \layout Standard Pour enregistrer la configuration, cliquez sur le bouton \emph on Termin \emph default , pour revenir la page prcdente cliquez sur le bouton \emph on Annuler \emph default . \layout Subsection \pagebreak_top Informations gnrales \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \color black Nom de la macro \color red * \end_inset \begin_inset Text \layout Standard Introduisez le nom de la macro \end_inset \begin_inset Text \layout Standard \color black Nom afficher \color red * \end_inset \begin_inset Text \layout Standard Introduisez le nom qui sera visible par l'utilisateur \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Introduisez une description, un commentaire sur la macro tlphonique \end_inset \begin_inset Text \layout Standard Visible pour l'utilisateur \end_inset \begin_inset Text \layout Standard Cochez si vous voulez que la macro apparaisse lors de la slction des macros tlphoniques \end_inset \begin_inset Text \layout Standard Texte de la macro \end_inset \begin_inset Text \layout Standard Contenu de la macro excuter \end_inset \end_inset \layout Subsection \added_space_top bigskip Paramtres \layout Subsection \added_space_top bigskip Rfrences \layout Standard Les rfrences rsument les relations existantes entre objets. \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/users.lyx0000644000175000017500000012720410342533443020163 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold ADMINISTRATION DES UTILISATEURS \layout Section Utilisateurs \layout Standard L'administrateur peut crer ou modifier un compte ou accder aux informations sur un compte en cliquant sur le bouton \series bold \color blue utilisateurs \series default \color default de la partie \series bold Administration \series default dans le menu gauche. La page \family sans \color black Administration des utilisateurs \family default \color default s'affiche, elle est divise en trois colonnes. Au fur et mesure que les utilisateurs sont configurs ils apparatront dans la premire colonne, classs selon leur dpartement. \layout Standard Les deux dernires colonnes comportent des icnes qui sont des raccourcis vers les proprits de chaque utilisateur et les actions excuter sur l'utilisateur. Les flches en entte ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) servent modifier l'affichage selon le dpartement, elles prdominent sur toutes autres slections d'affichage. \layout Standard C'est partir de la page \family sans \color black Administration des utilisateurs \family default \color default que l'administrateur systme aura une vue globale et pourra grer la liste des utilisateurs. \layout Standard \color black Dans la partie droite de la page se trouve un tableau intitul Filtres \begin_inset Graphics filename images/rocket.png \end_inset . \layout Itemize \color black Ce tableau sert modifier l'affichage de la liste des utilisateurs : \begin_deeper \layout Standard \color black - Cliquer sur une lettre pour que s'affichent tous les utilisateurs dont le nom commence par la lettre slectionne; \layout Standard \color black - Cliquez sur l'astrisque et tous les noms d'utilisateurs apparatront classs alphabtiquement. \end_deeper \layout Itemize Plus bas d'autres possibilits d'affichage sont possibles : \begin_deeper \layout Standard - Cochez une ou plusieurs propositions pour un affichage cibl; \layout Standard - Insrez soit une lettre soit un numro tous deux suivis de l'astrisque soit un nom d'utilisateur dans le champ prcd d'une loupe \begin_inset Graphics filename images/search.png \end_inset , cette icne symbolise la recherche d'un item. Cliquez sur le bouton Appliquer pour faire apparatre le(s) utilisateur(s) recherch(s). \end_deeper \layout Standard Pour crer un compte cliquez sur \begin_inset Graphics filename images/list_new_user.png \end_inset . Si le compte est dj cr cliquez sur le compte lui-mme. \layout Standard Apparat alors l'espace de configuration munie d'onglets qui reprsentent chacun un espace de configuration. Ces onglets sont des extensions apportes GOsa. L'administrateur configure ces extensions pour chaque utilisateur. \layout Standard \added_space_bottom medskip Pour terminer la configuration, cliquez sur le bouton Termin en bas droite. Pour revenir \color black la liste des utilisateurs \color default cliquez sur le bouton Annuler. \newline \layout Standard Tous les champs prcds d'une astrisque doivent tre remplis obligatoirement. \layout Standard Dans le haut droite vous avez la fois l'identite de l'utilisateur sur lequel vous travaillez mais aussi sa place dans l'arbre LDAP. \layout Standard L'image \begin_inset Graphics filename images/closedlock.png \end_inset signale que l'utilisateur est en mode verrouill. Ce mode pemet d'viter les modifications simultanes. \layout Subsection \pagebreak_top Informations gnrales \layout Subsubsection Informations personnelles \layout Standard \added_space_bottom medskip \begin_inset Tabular \begin_inset Text \layout Standard Nom \color red * \end_inset \begin_inset Text \layout Standard Introduisez le nom de l'utilisateur \end_inset \begin_inset Text \layout Standard Prnom \color red * \end_inset \begin_inset Text \layout Standard Introduisez le prnom de l'utilisateur \end_inset \begin_inset Text \layout Standard Identifiant \color red * \end_inset \begin_inset Text \layout Standard Introduisez l'identificateur de l'utilisateur \end_inset \begin_inset Text \layout Standard Titre personnel \end_inset \begin_inset Text \layout Standard Introduisez le titre (Madame, Mademoiselle ou Monsieur) de l'utilisateur \color red ? \end_inset \begin_inset Text \layout Standard Titre Universitaire \end_inset \begin_inset Text \layout Standard Introduisez le diplome obtenu \end_inset \begin_inset Text \layout Standard Date de naissance \end_inset \begin_inset Text \layout Standard Cliquez sur le bouton \begin_inset Quotes erd \end_inset Remplir \begin_inset Quotes erd \end_inset pour voir apparatre une liste droulante \end_inset \begin_inset Text \layout Standard Sexe \end_inset \begin_inset Text \layout Standard Faites votre slction dans la liste droulante \end_inset \begin_inset Text \layout Standard Langue \end_inset \begin_inset Text \layout Standard Faites votre slction dans la liste droulante \end_inset \begin_inset Text \layout Standard Base \end_inset \begin_inset Text \layout Standard Choix du dpartement. (la cration de dpartements se fait partir du bouton \series bold \color blue dpartement \series default \color default dans le menu de g \color black auche \color default dans la partie \series bold Administration \series default ). \end_inset \begin_inset Text \layout Standard Adresse \end_inset \begin_inset Text \layout Standard Introduisez l'adresse personnelle de l'utilisateur \end_inset \begin_inset Text \layout Standard Numro de tlphone priv \end_inset \begin_inset Text \layout Standard Introduisez le numro priv selon la nomenclature nationale ou internationale. (veillez garder la mme nomenclature pour tous les utilisateurs) \end_inset \begin_inset Text \layout Standard Page d'accueil \end_inset \begin_inset Text \layout Standard Introduisez l'url de la page personnelle de l'utilisateur \end_inset \begin_inset Text \layout Standard Format de stockage des mots de passe \end_inset \begin_inset Text \layout Standard Faites votre slction dans la liste droulante \end_inset \begin_inset Text \layout Standard Certificats \end_inset \begin_inset Text \layout Standard \color black Cliquez sur le bouton \begin_inset Quotes erd \end_inset Modification des certificats \begin_inset Quotes erd \end_inset . GOsa vous propose trois types de certificats rechercher dans l' arborescence de votre ordinateur. Pour enregistrer cliquez sur le bouton \begin_inset Quotes erd \end_inset Termin \begin_inset Quotes erd \end_inset . \end_inset \begin_inset Text \layout Standard Kerberos \end_inset \begin_inset Text \layout Standard \color black Cliquez sur le bouton \begin_inset Quotes erd \end_inset Modifier les proprits \begin_inset Quotes erd \end_inset . \color red ? \end_inset \end_inset \layout Standard Vous pouvez aussi si vous le dsirez agrmenter d'une photo le profil de l'utilisateur en cliquant sur le bouton \shape italic changer la photo \shape default . Vous parcourez alors l'arborescence de votre ordinateur pour aller chercher l'image. \layout Subsubsection \added_space_top medskip Informations sur l'entreprise \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Entreprise \end_inset \begin_inset Text \layout Standard Introduisez le nom de la socit \end_inset \begin_inset Text \layout Standard Dpartement \end_inset \begin_inset Text \layout Standard Introduisez le nom du dpartement auquel appartient l'utilisateur \end_inset \begin_inset Text \layout Standard N du dpartement \end_inset \begin_inset Text \layout Standard Introduisez le numro du dpartement \end_inset \begin_inset Text \layout Standard N de l'employ \end_inset \begin_inset Text \layout Standard Introduisez le numro attribu l'utilisateur \end_inset \begin_inset Text \layout Standard Type de l'employ \end_inset \begin_inset Text \layout Standard Prcisez son statut dans la socit \end_inset \begin_inset Text \layout Standard N du bureau \end_inset \begin_inset Text \layout Standard Introduisez le numro du bureau dans lequel travaille l'utilisateur \end_inset \begin_inset Text \layout Standard Tlphone \end_inset \begin_inset Text \layout Standard Introduisez le numro de tlphone de l'utilisateur \end_inset \begin_inset Text \layout Standard Portable \end_inset \begin_inset Text \layout Standard Introduisez le numro du mobile ou GSM de l'utilisateur \end_inset \begin_inset Text \layout Standard Bip \end_inset \begin_inset Text \layout Standard Introduisez le numro du bipeur de l'utilisateur \end_inset \begin_inset Text \layout Standard Fax \end_inset \begin_inset Text \layout Standard Introduisez le numro de Fax de l'utilisateur \end_inset \begin_inset Text \layout Standard Lieu \end_inset \begin_inset Text \layout Standard Introduisez la localisation du bureau de l'utilisateur si la socit possde des succursales \end_inset \begin_inset Text \layout Standard Dpartement \end_inset \begin_inset Text \layout Standard Introduisez le nom de la rgion o la socit est localise \color red ? \end_inset \begin_inset Text \layout Standard Adresse \end_inset \begin_inset Text \layout Standard Introduisez l'adresse de l'entreprise \end_inset \end_inset \layout Subsection \added_space_top bigskip Unix \layout Standard Pour activer le compte Unix pour un utilisateur cliquez sur le bouton \shape italic crer un compte unix. \layout Subsubsection Informations gnrales \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Rpertoire home \end_inset \begin_inset Text \layout Standard Introduisez le chemin vers le rpertoire de l'utilisateur \end_inset \begin_inset Text \layout Standard Shell \end_inset \begin_inset Text \layout Standard Choisir dans la liste droulante le type de shell (console) utilis \end_inset \begin_inset Text \layout Standard Groupe principal \end_inset \begin_inset Text \layout Standard Indiquez le groupe principal auquel appartient l'utilisateur. (Pour la cration de groupe allez au bouton \series bold \color blue Groupes \series default \color default dans le menu de gauche dans la partie \series bold Administration \series default ) \end_inset \begin_inset Text \layout Standard Statut \end_inset \begin_inset Text \layout Standard Indique si le compte est activ ou non \end_inset \begin_inset Text \layout Standard Forcer l'UID/GID \end_inset \begin_inset Text \layout Standard Cochez si vous dsirez forcer l'uid/gid de l'utilisateur une certaine valeur \end_inset \end_inset \layout Subsubsection \added_space_top medskip Appartient aux groupes \layout Standard Utilisez les boutons \emph on Ajouter \emph default et \emph on Supprimer \emph default pour insrer ou effacer les groupes dans le champ vide. Le bouton \emph on Ajouter \emph default renvoie la liste des groupes cres par l'administrateur. L'utilisateur peut appartenir un ou plusieurs groupes. \layout Subsubsection \added_space_top medskip Compte \layout Standard Il s'agit de la gestion du mot de passe de l'utilisateur. Diffrentes propositions peuvent tre coches la fois mais l'administrateur doit veiller rester cohrent pour viter les conflits dans l'application de ses choix. \layout Subsubsection \added_space_top medskip Systme de confiance \layout Standard Le systme de confiance sert grer l'accs de l'utilisateur aux diffrents systmes, phriphriques, etc... . Le systme de confiance peut tre en mode : \layout Itemize dsactiv, \layout Itemize accs complet : l'utilisateur l'accs complet aux systmes, \layout Itemize permettre l'accs ces htes : \begin_deeper \layout Standard - Utilisez le bouton \emph on Ajouter \emph default pour faire apparatre la liste des htes auxquels l'utilisateur pourrait avoir accs, \layout Standard - Utilisez le bouton \emph on Supprimer \emph default pour effacer les htes auxquels l'utilisateur n'a plus accs. \end_deeper \layout Subsection \added_space_top bigskip Environnement \layout Standard Cliquez sur le bouton \shape italic ajouter une extension environnemental \shape default pour voir apparatre les diffrents points destins la configuration environnementale de l'utilisateur. \layout Subsubsection Profiles \layout Subsubsection \added_space_top medskip Kiosk profile \layout Subsubsection \added_space_top medskip Logon scripts \layout Subsubsection \added_space_top medskip Attach share \layout Subsubsection \added_space_top medskip Hotplug devices \layout Subsubsection \added_space_top medskip Imprimante \layout Subsection \added_space_top bigskip Mail \layout Standard Le compte mail est li au serveur de messagerie. Pour activer le compte de messagerie d'un utilisateur cliquez sur \shape italic Crer un compte mail \shape default . \layout Subsubsection Informations gnrales \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Adresse principale \color red * \end_inset \begin_inset Text \layout Standard Introduisez l'adresse de messagerie de l'utilisateur \end_inset \begin_inset Text \layout Standard Serveur \end_inset \begin_inset Text \layout Standard Slectionnez le serveur ou est stocke le compte de messagerie de l'utilisateur \end_inset \begin_inset Text \layout Standard Utilisation des quota \end_inset \begin_inset Text \layout Standard Prcisez si vous dsirez appliquer un quota au niveau du compte de messagerie de l'utilisateur \end_inset \begin_inset Text \layout Standard Tailles du quota \end_inset \begin_inset Text \layout Standard Prcisez en KB la taille du quota \end_inset \end_inset \layout Subsubsection \added_space_top medskip Alternative addresses \layout Standard L'utilisateur peut tre en possession d'alias. Ces alias sont insrer dans le champ adresses alternatives. \layout Standard Utilisez le bouton \emph on Ajouter \emph default pour insrer les alias. L'alias doit tre introduit dans le champ vide prcdant le bouton \emph on Ajouter \emph default . Utilisez le bouton \emph on Supprimer \emph default pour effacer les alias. \layout Subsubsection \added_space_top medskip Options du compte de messagerie \layout Standard Gestion des options du compte de messagerie de l'utilisateur : \layout Itemize Aucune distribution des messages dans la boite de l'utilisateur : envoie une copie l'adresse mentionne dans \emph on transfrer les messages vers \emph default , sans en mettre une copie dans la messagerie de l'utilisateur. \layout Itemize Activer la notification d'absence : envoie le message crit dans \emph on message d'absence \emph default . \layout Itemize Dplacer les messages ayant un niveau de spam suprieur (a) vers le rpertoire (b) : envoie les messages ayant un score suprieur (a) dans le rpertoire (b). \layout Itemize Rejeter les messages plus gros que (c) MB : ne pas accepter les messages plus gros que (c) MB. \layout Itemize Utilisez les boutons \emph on Ajouter \emph default ou \emph on Ajouter en local \emph default \color black pour la gestion des adresses : \begin_deeper \layout Standard \color black - Le bouton \emph on Ajouter en local \emph default permet de slectionner parmis la liste des adresses locales. \layout Standard \color black - Le bouton \emph on Ajouter \emph default permet l'ajout d'adresses extrieures au systme. \layout Standard \color black - Utilisez le bouton \emph on Supprimer \emph default pour effacer les adresses de messagerie. \end_deeper \layout Subsubsection \added_space_top medskip Options de messagerie avances \layout Itemize Les utilisateurs ne sont autoriss qu'a envoy et recevoir des emails locaux : l'administrateur peut forcer l'envoi et la reception des messages en local uniquement. \layout Itemize Utiliser des scripts sieve personnaliss : l'administrateur peut crire des scripts sieve qui tablissent les rgles de gestion de la messagerie. \emph on Attention ! cela dsactive toutes les options de messagerie \emph default . \layout Subsection \added_space_top bigskip Samba \layout Standard Pour crer un compte samba pour un utilisateur cliquez sur le bouton \shape italic Crer un compte samba \shape default . \layout Subsubsection Informations gnrales \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Rpertoire Home \end_inset \begin_inset Text \layout Standard Indiquez le chemin du rpertoire personnel de l'utilisateur en notation UNC ex: \backslash \backslash SERVER \backslash homes \backslash utilisateur. Choisissez dans la liste droulante la lettre associe au rpertoire personnel de l'utilisateur. \end_inset \begin_inset Text \layout Standard Domaine \end_inset \begin_inset Text \layout Standard Slctionnez le domaine dans lequel se trouve la machine de l'utilisateur \end_inset \begin_inset Text \layout Standard Chemin du Script \end_inset \begin_inset Text \layout Standard Indiquez le script de dmarrage de l'utilisateur \end_inset \begin_inset Text \layout Standard Chemin du Profile \end_inset \begin_inset Text \layout Standard Indiquez le chemin pour accder au profile de l'utilisateur \end_inset \end_inset \layout Subsubsection \added_space_top medskip Serveur de terminal \layout Itemize Permet la connexion sur un serveur de terminal \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Rpertoire Home \end_inset \begin_inset Text \layout Standard Indiquez le chemin du rpertoire personnel de l'utilisateur en notation UNC ex: \backslash \backslash SERVER \backslash homes \backslash utilisateur. Choisissez dans la liste droulante la lettre associe au rpertoire personnel de l'utilisateur. \end_inset \begin_inset Text \layout Standard Chemin du Profile \end_inset \begin_inset Text \layout Standard Indiquez le chemin pour accder au profile de l'utilisateur \end_inset \end_inset \layout Itemize Hrite de la configuration du client \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Programme initial \end_inset \begin_inset Text \layout Standard Indiquez le chemin vers l'application par dfaut \end_inset \begin_inset Text \layout Standard Rpertoire Home \end_inset \begin_inset Text \layout Standard Indiquez le chemin pour accder au repertoire de base de l'application \color red ? \end_inset \end_inset \layout Itemize Configuration du temps d'attente (en minutes) : \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Connexion \end_inset \begin_inset Text \layout Standard Cochez afin d'indiquer le temps d'attente maximum lors d'une connexion \end_inset \begin_inset Text \layout Standard Dconnexion \end_inset \begin_inset Text \layout Standard Cochez afin d'indiquer le temps d'attente maximum lors d'une dconnexion \end_inset \begin_inset Text \layout Standard En attente \end_inset \begin_inset Text \layout Standard Cochez afin d'indiquer le temps d'attente maximum lors d'une requte \end_inset \end_inset \layout Itemize Priphriques clients : \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Connecter les lecteurs clients l'identification \end_inset \begin_inset Text \layout Standard Cochez afin de connecter les lecteurs de l'utilisateur lors de l'identification \end_inset \begin_inset Text \layout Standard Connecter les imprimantes clients l'identification \end_inset \begin_inset Text \layout Standard Cochez afin de connecter les imprimantes de l'utilisateur lors de l'identificati on \end_inset \begin_inset Text \layout Standard Imprimante par dfaut \end_inset \begin_inset Text \layout Standard Cochez afin de dfinir l'imprimante par dfaut de l'utilisateur lors de l'identification \end_inset \end_inset \layout Itemize Divers : \begin_deeper \layout Standard - Masquer : \color red ? \layout Standard - Sur interrompu ou temps d'attente dpass : permet de choisir si il faut dconnecter le client ou faire une remise zro. \layout Standard - Reconnexion si dconnect : permet de choisir si la reconnexion doit tre faite depuis le mme client, ou si elle peut tre effectue depuis un autre client. \end_deeper \layout Subsubsection \added_space_top medskip Options d'accs \layout Itemize Il s'agit de la gestion du mot de passe de l'utilisateur. Diffrentes propositions peuvent tre coches la fois mais l'administrateur doit veiller rester cohrent pour viter les conflits dans l'application de ses choix. \layout Itemize Le champ droite doit tre rempli par les noms de stations partir desquelles l'utilisateur peut se connecter. L'administrateur doit utiliser les boutons \emph on Ajouter \emph default pour y insrer les noms de stations. Le bouton \emph on Ajouter \emph default renvoie la liste des stations. Utilisez le bouton \emph on Supprimer \emph default pour effacer des stations. \layout Subsection \added_space_top bigskip Connectivit \layout Standard L'administrateur peut affiner la gestion du compte de l'utilisateur en configura nt les services supplmentaires auquel il peut se connecter. \layout Subparagraph* Compte Proxy \layout Standard Si vous activez l'option Proxy pour l'utilisateur vous pouvez filtrer sur le contenu, limit l'accs certaines heures et restreindre le tlchargement. \layout Subparagraph \added_space_top smallskip Compte FTP \layout Standard Si vous activez l'option FTP, vous pouvez rgler la bande passante montante et descendante, le ratio des donnes et le quota ne pas dpasser pour le transfert de fichiers . Vous pouvez aussi partir de cet endroit dsactiver le compte FTP. \layout Subparagraph \added_space_top smallskip Compte WebDAV \layout Standard Si vous activez l'option WebDav, l'utilisateur aura accs au serveur WebDAV \layout Subparagraph \added_space_top smallskip Compte PHPGroupware \layout Standard Si vous activez l'option PHPGroupware, l'utilisateur aura accs au logiciel PHPGroupware \layout Subparagraph \added_space_top smallskip Compte Intranet \layout Standard \added_space_bottom smallskip Si vous activez l'option Intranet, l'utilisateur aura accs au serveur Intranet \layout Standard \series bold Compte PPTP \layout Standard \added_space_bottom smallskip Si vous activez l'option PPTP, l'utilisateur aura accs au serveur PPTP \layout Standard \series bold Compte PHPScheduleIt \series default \layout Standard \added_space_bottom smallskip Si vous activez l'option PHPScheduleIt, l'utilisateur aura accs au logiciel PHPScheduleIt \layout Standard \series bold Compte GLPI \series default \layout Standard Si vous activez l'option GLPI, l'utilisateur aura accs au logiciel GLPI \layout Subsection \added_space_top bigskip Fax \layout Standard Pour crer un compte Fax pour un utilisateur cliquez sur le bouton \shape italic Crer un compte Fax. \layout Subsubsection Informations gnrales \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Fax \color red * \end_inset \begin_inset Text \layout Standard Insrez le numro de fax de l'utilisateur \end_inset \begin_inset Text \layout Standard Langue \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante \end_inset \begin_inset Text \layout Standard Format de distribution \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante \end_inset \end_inset \layout Subsubsection \added_space_top medskip Mthodes de distribution \layout Itemize Desactiver temporairement l'utilisation du fax : interdit l'utilisation du fax par cet utilisateur. \layout Itemize Dlivrer les fax comme des mails : envoie les fax sous le format de distribution dfini dans la messagerie de l'utilisateur \layout Itemize Imprimer directement les fax : permet de slectionner l'imprimante laquelle envoyer les fax reus par cet utilisateur \layout Subsubsection \added_space_top medskip Numros de fax alternatif \layout Standard L'administrateur peut complter la configuration du fax par une srie d'autres numros de fax utiliss dans la socit. Utilisez les boutons Ajouter, Ajouter en local pour remplir le champ. \layout Itemize Le bouton \emph on Ajouter en local \emph default renvoie la liste des numros de fax. \layout Itemize Le bouton \emph on Ajouter \emph default permet d'insrer des numros de fax autres que ceux de la liste. \layout Standard Utilisez le bouton \emph on Supprimer \emph default pour effacer des numros de fax. \layout Subsubsection \added_space_top medskip Listes rouges \layout Standard Le fax est aujourd'hui frquemment utilis pour distribuer des messages publicitaires. Certains peuvent tre apparents des spams. Pour viter que les utilisateurs soient submergs par ces messages, l'administr ateur peut instaurer une liste rouge reprenant les numros de fax indsirables qu'ils soient entrant ou sortant. \layout Standard En cliquant sur le bouton \emph on Edit \emph default vous faites apparatre une page comprenant deux listes, du ct gauche on trouve les numros refuss pour cet utilisateur, du cte droit on retrouve les listes rouges prdefinies par l'administrateur. \layout Standard Selectionnez la ou les listes que vous dsirez utiliser dans la liste de droite et cliquer sur \emph on Ajouter la liste rouge \emph default pour l'activer. \layout Subsection \added_space_top bigskip Tlphone \layout Standard Pour activer le compte tlphone pour un utilisateur cliquez sur le bouton \shape italic Crer un compte tlphone \shape default . \layout Subsubsection Numros de tlphone \layout Standard Insrez le ou les numro(s) de tlphone de l'utilisateur en utilisant le bouton \emph on Ajouter \emph default . \layout Subsubsection \added_space_top medskip Matriel tlphonique \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Tlphone \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante \end_inset \begin_inset Text \layout Standard VoicemailPIN \color red * \end_inset \begin_inset Text \layout Standard \color black Introduisez le code PIN utilis par l'utilisateur pour atteindre sa bote vocale. \color red \end_inset \begin_inset Text \layout Standard Phone PIN \color red * \end_inset \begin_inset Text \layout Standard \color black Introduisez le code PIN utilis par l'utilisateur pour dverouiller son tlphone. \end_inset \end_inset \layout Subsubsection \added_space_top medskip Phone macro \layout Standard Permet de slctionner une macro mettre dans le tlphone de l'utilisateur. \layout Subsection \added_space_top bigskip Rfrences \layout Standard Les rfrences prsentent les proprits de l'utilisateur. Cela permet l'administrateur d'avoir une information rapide sur la situation de l'utilisateur dans la socit. \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/conference.lyx0000644000175000017500000001673310342534367021143 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold ADMINISTRATION DES CONFERENCES TELEPHONIQUES \layout Section Confrences tlphoniques \layout Standard L'administrateur peut configurer les phone conferences partir du bouton \series bold \color blue Confrences tlphoniques \series default \color default dans le menu de gauche dans la partie \series bold Administration \series default . La page \family sans Gestion des confrences \family default s'affiche. \layout Standard La page est divise en quatre colonnes : \layout Standard - la premire colonne est destine afficher les noms ou numros de confrence, \layout Standard - la deuxime colonne affiche le nom du propritaire de la confrence, \layout Standard - la troisime indique si il existe un code PIN pour la confrence, \layout Standard - la dernire colonne contient les icnes qui sont les actions que l'on peut executer sur ces confrences. \layout Standard Les flches en entte ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage. \layout Standard \added_space_top medskip C'est partir de la page \family sans Gestion des confrences \family default que l'administrateur gre les confrences tlphoniques organises dans la socit. \layout Standard Il est possible de modifier l'affichage des noms ou des numros en utilisant le tableau intitul Filtres \begin_inset Graphics filename images/rocket.png \end_inset . \layout Standard L'administrateur peut faire une recherche sur le nom : \layout Standard - cliquez sur l'astrisque (toile : *) pour voir apparatre tous les noms et numros; \layout Standard - cliquez sur une lettre et tous les noms des confrences tlphoniques dbutant par cette lettre s'afficheront; \layout Standard - cliquez sur un numro et tous les numros des confrences tlponiques dbutant par ce numro s'afficheront; \layout Standard - recherche rapide \begin_inset Graphics filename images/search.png \end_inset : remplissez le champ par le nom ou le numro d'une confrence tlphonique et ensuite cliquez sur le bouton \emph on Appliquer \emph default . \layout Standard \added_space_top medskip Pour crer et configurer une confrence tlphonique, l'administrateur doit cliquer sur le bouton \begin_inset Graphics filename images/conference.png \end_inset . \layout Standard Apparat l'espace de configuration. \layout Standard Pour enregistrer la configuration, cliquez sur le bouton \emph on Termin \emph default , pour revenir la page prcdente cliquez sur le bouton \emph on Annuler \emph default . \layout Subsection \pagebreak_top Informations gnrales \layout Subsubsection Proprits \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \color black Nom de la confrence \color red * \end_inset \begin_inset Text \layout Standard Introduisez le nom de la confrence \end_inset \begin_inset Text \layout Standard Type \color red * \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante \end_inset \begin_inset Text \layout Standard Description \color red * \end_inset \begin_inset Text \layout Standard Introduisez une description, un commentaire sur la confrence \end_inset \begin_inset Text \layout Standard Dure (en jours) \end_inset \begin_inset Text \layout Standard Introduisez la validit de la confrence \end_inset \begin_inset Text \layout Standard Numro de tlphone \color red * \end_inset \begin_inset Text \layout Standard Introduisez le numro de tlphone de la confrence \end_inset \end_inset \layout Subsubsection \added_space_top medskip Options \layout Itemize Code PIN prslectionn \begin_deeper \layout Standard Cochez si vous dsirez qu'un code PIN prdfini soit utilis pour cette confrence. \end_deeper \layout Itemize Enregistrer la confrence \begin_deeper \layout Standard Cochez si vous dsirez enregistrer la confrence. \end_deeper \layout Itemize Musique d'attente \begin_deeper \layout Standard Cochez si vous dsirez activer la musique d'attente. \end_deeper \layout Itemize Activer le menu de session \begin_deeper \layout Standard Cochez si vous dsirez activer le menu de session. \end_deeper \layout Itemize Annoncer les nouveaux utilisateurs et ceux qui quittent \begin_deeper \layout Standard Cochez si vous dsirez qu'une annonce soit faite lorsque un participant rejoint ou quitte la confrence. \end_deeper \layout Itemize Compter les utilisateurs \begin_deeper \layout Standard Cochez si vous dsirez compter les participants. \end_deeper \layout Subsection \added_space_top bigskip Rfrences \layout Standard Les rfrences rsument les relations existantes entre objets. \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/logview.lyx0000644000175000017500000000145710342534367020505 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 1 0 8 -1 \end_bullet \bullet 2 0 8 -1 \end_bullet \bullet 3 0 8 4 \end_bullet \layout Title \series bold LOGS SYSTEMES \layout Section Logs systmes \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/applications.lyx0000644000175000017500000002063710342533443021512 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold ADMINISTRATION DES APPLICATIONS \layout Section Applications \layout Standard L'administrateur peut installer et configurer une application partir du bouton \series bold \color blue Applications \series default \color default dans le menu de gauche dans la partie \series bold Administration \series default . La page \family sans Configuration des applications \family default s'affiche. \layout Standard La page est divise en deux colonnes : \layout Standard - la premire colonne est destine afficher la liste des applications, \layout Standard - la deuxime colonne contient les icnes qui sont les actions que l'on peut executer sur l'application. \layout Standard Les flches en entte ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) servent modifier l'affichage selon le dpartement. Ces icnes prdominent sur toutes autres formes de slction d'affichage. \layout Standard \added_space_top medskip C'est partir de la page \family sans Configurations des applications \family default que l'administrateur gre la liste des applications installe pour le personnel de la socit. \layout Standard Il est possible de modifier l'affichage de la liste des applications en utilisant le tableau intitul Filtres \begin_inset Graphics filename images/rocket.png \end_inset . \layout Standard L'administrateur peut faire une recherche sur le nom : \layout Standard - cliquez sur l'astrisque pour voir apparatre toutes les applications; \layout Standard - cliquez sur une lettre et tous les noms d'applications dbutant par cette lettre s'afficheront; \layout Standard - cliquez sur un numro et tous les noms d'applications dbutant par ce numro s'afficheront; \layout Standard - recherche rapide \begin_inset Graphics filename images/search.png \end_inset : remplissez le champ par le nom d'une application et ensuite cliquez sur le bouton \emph on Appliquer \emph default . \layout Standard \added_space_top medskip Pour configurer une application, l'administrateur doit cliquer sur le bouton \begin_inset Graphics filename images/list_new_app.png \end_inset . \layout Standard Apparat l'espace de configuration contenant trois onglets : informations gnrales, options et rfrences. \layout Standard Pour enregistrer la configuration, cliquez sur le bouton \emph on Termin \emph default , pour revenir la page prcdente cliquez sur le bouton \emph on Annuler \emph default . \layout Subsection \pagebreak_top Informations \layout Subsubsection Informations \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Nom de l'application \color red * \end_inset \begin_inset Text \layout Standard Indiquez le nom de l'application. \end_inset \begin_inset Text \layout Standard Nom afficher \color red * \end_inset \begin_inset Text \layout Standard Nom de l'application qui sera visible par l'utilisateur \end_inset \begin_inset Text \layout Standard Excuter \color red * \end_inset \begin_inset Text \layout Standard Application excuter avec ses paramtres ventuels \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Description de l'application \end_inset \begin_inset Text \layout Standard Base \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante du dpartement associ l'application. \end_inset \begin_inset Text \layout Standard Icne \end_inset \begin_inset Text \layout Standard Slectionnez l'image dans l'arborescence de votre systme, ensuite cliquez sur le bouton Mise jour. L'icne est alors associe l'application. \end_inset \end_inset \layout Subsubsection \added_space_top medskip Options \layout Itemize Excutable uniquement par les membres \begin_deeper \layout Standard Cochez si vous dsirez que l'application soit excute uniquement par les membres d'un mme groupe. \end_deeper \layout Itemize Remplacer la configuration de l'utilisateur au dmarrage \begin_deeper \layout Standard Rinstaller la configuration par dfaut de l'application chaque dmarrage. \end_deeper \layout Itemize Placer une icne sur le bureau des membres \begin_deeper \layout Standard Cochez si vous dsirez faire apparatre l'icne sur le bureau des membres. \end_deeper \layout Itemize Placer une entre dans le menu dmarrage des membres \begin_deeper \layout Standard Crer une entre pour l'application dans le menu dmarrage. \end_deeper \layout Subsubsection \added_space_top medskip Script \layout Subsection \added_space_top bigskip Options \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Variable \end_inset \begin_inset Text \layout Standard Nom de la variable \end_inset \begin_inset Text \layout Standard Valeur par dfaut \end_inset \begin_inset Text \layout Standard Valeurs par defaut asscocies la variable \end_inset \end_inset \layout Standard \added_space_top medskip Utilisez le bouton \emph on Supprimez \emph default pour effacer une variable. \layout Subsection \added_space_top bigskip Rfrences \layout Standard Les rfrences rsument les relations existantes entre objets. \the_end gosa-core-2.7.4/doc/core/fr/lyx-source/groups.lyx0000644000175000017500000003131710342533443020340 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold ADMINISTRATION DES GROUPES \layout Section Groupes \layout Standard L'administrateur peut crer ou modifier un groupe ou accder aux informations sur un groupe partir du bouton \color blue Groupe \color default dans le menu de gauche dans \series bold Administration \series default . La page \family sans \color black Administration des groupes \family default s'affiche. \layout Standard \color black La page est divise en trois colonnes : \layout Standard \color black -La premire colonne est destine afficher la liste des groupes ou des dpartements, \layout Standard \color black -les deux dernires colonnes contiennent des icnes. Elles reprsentent les raccourcis vers les proprits du groupe et les actions excuter sur le groupe. \layout Standard \color black -Les flches en entte ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) servent modifier l'affichage selon le dpartement, elles prdominent sur toutes autres formes de slection d'affichage. \layout Standard \added_space_top medskip C'est partir de la page \family sans \color black Administration du groupe \family default \color default que l'administrateur gre la liste des groupes de la socit. \layout Standard Comme pour les utilisateurs, il est possible de modifier l'affichage des groupes en utilisant le tableau intitul Filtres \begin_inset Graphics filename images/rocket.png \end_inset . L'administrateur peut faire une recherche nominative et/ou sur les proprits du groupe : \layout Itemize Pour la recherche sur les noms : \begin_deeper \layout Standard - cliquer sur l'astrisque (ou toile : *) pour voir apparatre tous les groupes; \layout Standard - cliquez sur une lettre et tous les groupes commenant par cette lettre seront affichs; \layout Standard - cliquez sur un numro, les groupes ayant un nom dbutant par le numro choisi s'afficheront. \end_deeper \layout Itemize Pour la recherche partir des proprits du groupe il suffit : \begin_deeper \layout Standard - de cocher une ou plusieurs propositions; \end_deeper \layout Itemize Pour la recherche d'un nom partir d'une lettre : \begin_deeper \layout Standard - remplir le premier champ avec une lettre suivi de l'astrisque, cliquer sur le bouton Appliquer, tous les noms dbutant par cettre lettre seront affichs, \layout Standard - remplir le deuxime champ avec une lettre suivi de l'astrisque, cliquer sur le bouton Appliquer, tous les noms contenant cette lettre seront affichs. \end_deeper \layout Standard Pour crer un groupe l'administrateur doit cliquer sur le bouton \begin_inset Graphics filename images/list_new_group.png \end_inset . \layout Standard Apparat alors l'espace de configuration. L'administrateur configure les extensions pour chaque groupe. \layout Standard A chaque extension configure, pour enregistrer les modifications, cliquer sur le bouton Termin et pour revenir la page prcdente cliquer sur le bouton Annuler. \layout Standard Tous les champs prcds d'une astrisque doivent tre remplis obligatoirement. \layout Standard En haut droite une srie d'information vous est donne : le nom du groupe sur lequel vous tes occup, et sa place dans l'arbre LDAP. \layout Subsection \pagebreak_top Informations gnrales \layout Itemize \begin_inset Tabular \begin_inset Text \layout Standard Nom du groupe \color red * \end_inset \begin_inset Text \layout Standard Introduisez le nom du groupe \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Introduisez une description, un commentaire sur le groupe \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante \end_inset \end_inset \layout Itemize Forcer le GID : Forcer le groupe utiliser le numro inscrit dans le champ. \layout Itemize Groupe / Domaine Samba : Met les membres dans un groupe et un domaine samba \layout Itemize Groupe tlphonique : Met les membres dans un groupe tlphonique \layout Itemize Groupe Nagios : Met les membres dans un groupe nagios \layout Standard L'administrateur insre les membres du personnel devant faire partie de ce groupe. Il suffit d'utiliser le bouton \emph on Ajouter \emph default qui renvoie la liste des utilisateurs. L'administrateur doit slectionner les futurs membres du groupe. Pour enlever un membre, utiliser le bouton \emph on Supprimer \emph default . \layout Subsection \added_space_top bigskip Environnement \layout Standard Pour activer l'extension Environnement cliquer sur \shape italic Ajouter l'extension environnement \shape default . \layout Subsubsection Profiles \layout Subsubsection \added_space_top medskip Kiosk profile \layout Subsubsection \added_space_top medskip Logon scripts \layout Subsubsection \added_space_top medskip Attach share \layout Subsubsection \added_space_top medskip Hotplug devices \layout Subsubsection \added_space_top medskip Imprimante \layout Subsection \added_space_top bigskip Applications \layout Standard Pour activer l'extension Applications cliquez sur \shape italic Crer des applications \shape default . \layout Standard L'administrateur dispose de la liste des applications dans la colonne Applicatio ns disponibles. Il peut attribuer une ou plusieurs applications un groupe. Il suffit de cliquer sur le nom d'une application celle ci apparat dans la colonne Applications utilises. \layout Standard A l'aide du bouton Sparateur l'administrateur peut sparer de manire visuelle une application par rapport aux autres. \layout Standard Pour terminer cliquer sur le bouton \emph on Terminer \emph default . \layout Subsection \added_space_top bigskip Mail \layout Standard Pour activer un compte mail cliquez sur \shape italic Crer un compte \emph on \shape default de messagerie \emph default . \layout Subsubsection Informations gnrales \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Adresse principale \color red * \end_inset \begin_inset Text \layout Standard \color black Introduisez l'adresse principale du groupe \color red \end_inset \begin_inset Text \layout Standard Serveur \end_inset \begin_inset Text \layout Standard \color black Slectionnez le nom du serveur associ cette adresse \end_inset \begin_inset Text \layout Standard Utilisation des Quota \end_inset \begin_inset Text \layout Standard \color black Prcisez si vous dsirez tablir une limite au niveau de la quantit de mail \color red \color black entrant. \end_inset \begin_inset Text \layout Standard Taille des Quota \end_inset \begin_inset Text \layout Standard \color black Prcisez en kb la taille du quota \end_inset \end_inset \layout Subsubsection \added_space_top medskip Adresses alternatives \layout Standard Le mail peut tre redirig vers une ou plusieurs autres adresses. Ces adresses sont des alias insrer dans Adresses alternatives. \layout Standard Utilisez les boutons \emph on Ajouter \emph default ou \emph on Supprimer \emph default pour grer les alias. \layout Subsubsection \added_space_top medskip Rpertoire partag IMAP \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Permission par dfaut \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante du type d'accs par dfaut au dossier IMAP \end_inset \begin_inset Text \layout Standard Permission des membres \end_inset \begin_inset Text \layout Standard Faites votre slection dans la liste droulante du type d'accs accord aux membres au dossier IMAP \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard L'administrateur peut ajouter partir de ce champ d'autres adresses de messagerie avec un droit d'accs au dossier IMAP \end_inset \end_inset \layout Subsubsection \added_space_top medskip Transfrer les messages vers un membre n'appartenant pas au groupe \layout Standard Des utilisateurs peuvent recevoir les messages d'un groupe sans pour autant en tre membre. Il suffit d'insrer les adresses de ces utilisateurs dans le champ qui prcde les boutons \emph on Ajouter \emph default , \emph on Ajouter en local \emph default et \emph on Supprimer \emph default . Le bouton \emph on Ajouter en local \emph default renvoie aux adresses dj enregistres dans GOsa. \layout Subsection \added_space_top bigskip ACL \layout Standard Cette partie permet l'administrateur de configurer les droits d'accs de l'utilisateur ou du groupe aux diffrentes parties de GOsa. \layout Subsection \added_space_top bigskip Rfrences \layout Standard Les rfrences rsument les relations existantes entre objets. \the_end gosa-core-2.7.4/doc/core/es/0000755000175000017500000000000011752422550014146 5ustar mikemikegosa-core-2.7.4/doc/core/es/html/0000755000175000017500000000000011752422550015112 5ustar mikemikegosa-core-2.7.4/doc/core/es/lyx-source/0000755000175000017500000000000011752422550016260 5ustar mikemikegosa-core-2.7.4/doc/core/es/lyx-source/images/0000755000175000017500000000000011752422550017525 5ustar mikemikegosa-core-2.7.4/doc/core/es/lyx-source/images/select_new_component.png0000644000175000017500000000070410442562727024454 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 'QIDAT8˥1HBQdCA57Ec%M8DKFj)[l5&VA5$aCK.oZo٫|:^s^%"8kn'Qjȿ/^5<W Zg{>zQ.7S`gO\Q}dvt08"z Q^Xwn䡢\sX0n]F*#?6yT)p1A 0y(+ϯ 1L@O|`e}-) ilj,˒j" vv*_4 n8 +=uxR@+oN IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_root.png0000644000175000017500000000152410442562727022261 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/search.png0000644000175000017500000000177710442562727021522 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/forward.png0000644000175000017500000000132610442562727021707 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<hIDATxb?% (R7oX>>zxgQ)W'i P] '+; ,--mv/.@! e< lL3ncPf@ 022(/nf&@'J}ΘyS#x\l@1T pS]ڝ7 ?~c7 p#s >냅@1*C??2J~j 4 KzDka. o)_m5!.'×@X_@`Wp22oo}f߿32ܹ ;$bf_W]H_ /rOb/W՞0 eb b V x~ђ=vcҜsb~@ Xwt"we` YzJ o߾1xzzfg D=T3 @` 455@,q Vf@F!ϟ?G5 p`/ *IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/blocklists.png0000644000175000017500000001030710442562727022413 0ustar mikemikePNG  IHDR00WgAMAܲ~IDATxyxT?Y2$dK, J"(X˥O`j.PE nEvňlaHBI2If2l3b{>}sΜ3[?>jbkf@}W|'~Oz/R7mU} Wz-JOH֐)p]JYܻt߳ e{>\*.գhfՀo:98nXRWT|prK* eXܹwʲokkN=n΁@E|D4$HJw=dQSϗ[jI7Ǟo:~孞m W^(nZeH[,RBCH c"? %$NX\1{k_=?ּ/y|o89)1ĸt9 "6͑#=#&*'P=Z97ݤE[ZOw+ c@޵l7&.w2Az/LqwuU $ww|g*MB*O7AEӊ]V{hnݩ}fȏڟӷ,3@@c4h5  J,G˝X HEQՈ]ˍ 'kO%f_=2f1w4r;;Vo=[Pgj9Hy2AV lMLI)d ?UBbsKyW]˙~[! ֵ\ e{[R2-Odr 1Ut/@(c(a*Rr3\S2⻅%^8ps+/3֪;)T]ڑIch魳7s{ʚ`5 he1c 0jw&df TfOޛslDqu֑Z/lo- iCfcwlO?#;ęU@VA: * BC 8>1繇 L.ę`bAΙ]t+6F-礢جz﮲>ь+ڷa?->!`I~X'-Pp]_[b\qC>?c>/7i GRvtIaNѢ)Lл 68ز`GLJ$enc3:5]7D8m:+ũ%g,&kJ?Y&Apƃ##_dA):Ņ 9DД('w>L.O<=ʪF~=H^Y=TUG. @[sMN e Ϟ7}^pl3^G*A[S v F?6,AƏ&RNY~olfǡp]-љsgr ܮM;o41`8ݤ>ƞA r07N7FQp /J=m?W.5S6}tb5(\$)XcD7$$.yhwlYbUS8N&O NYy#owsG `9׏uߛo ]F$p%;| ?!qh-^l̝3Ma2IHh?Vsؿ/o6~*bu d{_^).G Q6~!S-Ji 2rwbV*C+y[0}%o i0F I7v46{O|bb?`J܅-yo-1&"GQ|AY,x %"TJ' шa#[}߃lm/{ fJw= y? ZS@7R9# cY`3G;{ .ָITF4o!5 h lcUNxg\`d --_Z!3&i@\>?}*OkS,6UѮ9B8Uj 1>PX37ZHK1'%XATŀm*UDyH J= P}?rHrHƋk SJ`er=:GeQ~1FFH0kSu@YsJMaXt!m`¤8/Ʊ&Li/\ {@3:WٸwA䜫JF c7K$^vݨ;֮Z=MLoaѳ>~"',e:.Ԁs*{ҊxX:( @B<Cځ~5AB^zz"wM7>p'IZ}dG"1q,dM~OTD5#]v wO{n 7F C@ \qCKJF5 Ec*vΟ]*.sE=Ź&Ӊd{ {@BN9?֮|^$Ǝ"T&Na\JK).N2i? я#SD:ȹ>ٖ+]yվݭ͓HHkW#6JƻIdxp6tu\vFtRR"mpG/12N ywPjBg7~P][Wbg RҒظKSS#3il.SՏ6RS~i5fHHS^Z[pϽ2¿`{ׄ)rΣzQī5IJ: ϛu]/u}`t]:o.:pM7/~ң~`Q|ՒbM&[۝Bh8GL=1@ =Z@ul-PfR{/>tev֋y`~~pv.o.W=buǺt.)o&(iIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_invalid_application.png0000644000175000017500000000153210442562727025612 0ustar mikemikePNG  IHDRabKGD pHYs  tIME +SP{IDAT8m[lLy?g朙1s:ZE6lZ/,RK!B/ i<vmi_$UB..1HF)#έ3S9}Z]Kt))aN@$ mR]BŤi֒Ӊǁ$KQ5Mozj P0Ԃuf5 W)kK"e2Yr͋w++4`,XJVcCmvžI S2>7\ r[ ` ߏy7Cƒ;v"Y$dQpU>zG%Xf LND3 SJ][uw'LcC ݝ@Peߥ<]`X.}Cމe+H BGw7/u L 4};K*ĭѼnyD4.B Qj8/Zmlwvm!BRBwں]@)`WjaG%?is??^@'"=O..`G#5y08K2PKzIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/dtree.png0000644000175000017500000000126610442562727021351 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<HIDATxb?-@XM{69 ~ 4 R? ~}Z@, Cݍ~b`O ߡ ~= 4?ĥ'а_ 47? FbC(@,|%@ FfFпȂ@/,^@, r gϞ͐J0r@ 1}GTP Xgr)VC!|bt s- _8 lA gd-q0  6y\BL90ATM#>CA F. E@ dM`_Ѵ%!f` ,@l YJgj;@1Ҫ &;QL! <IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/crossref.png0000644000175000017500000000116410442562727022071 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME 8veIDATx͒;hQ{wfgggfwnVP4•DETXXXM"FERX(!ME K3{bIWuNq>klDe*PXH0ۺFďiPƢjZ(y3Cҹ\Ϸԛ!M L6/16mHPl ,]<]mܙ-^f<]~ 2q0vrB9ZhCW) E̬~z.}cLQׂ`gu,!ӛ1b]lP4lh;3N= )znldz=t@)!{ `ߎZº,*t#*AHā-eEWpߚ?/-p!;(ׅ=NߦddɈŤyו(:@YyǨ_ȀHta\msmQLU4*ft?͈Ȇ,ޮU}wIMZa) ! 7jZH®]4!!MseWP6 !m:@!&rNy=tnL@Wlv gԎr`olwg=fR"TA;~ "؅DŽC[9F6o|YNӗ~#q=*Crc z#@q\ضy=x/ gO;(mh2/QG.䄵ܪYuCapb1Ñ%@ZMm-vHcn >@1;zh#thA &}N]--ul©zRH\O2bƃYr5^Gk2B {\up@nMHz .e)i5AcI@ G!h\/ sž7H"aT'P8RFZtlt.Isf/\'M"BH5hK@I\GLޅx \W)gA9R H2#htQVصHY'2ƪa2Di@dZl4H7J SRS]/it9AJAR@RBHHD!HVj%E.(nP=6$_Epyn> nq=%c&# FL(Ю@p #px@*ANG&NI(w厠8sg3i7 eFd%@HEsh`w&=%"GapD?tl*9-_C&B|% e%4T]?OY(ZW] -x(>@EWs*-bMP#B2BbA(iOJJP0`98Љ\zo_/疇yi^.LN*syKc'U2ߒ*suU $0 (iȧ?tmZOIc "eAqMt>};'7z(b2+Qz[̻dHPJ dwF q~a4HFmDZ]8Dp l9l.dV0On3A/OۦutnGd(?x H~ $R@ rRЯ}RRy5IWF@֭Z-^LY/5P..Y;[?ӿ @nXͨ5*$f'q4xēHZ;PTJ-d5t9Jp5BP~ 2EZf}u )OHpܜjsUk_*W'Hy4^%2iiN%15nN6~gy^ݛao otێ-(*Dy xJpvyq/_.߉l%Ab22oj4dmD<)$:y98AUe6j( )m`Na60@|ɞgʐQdPe a.rU B$=X3VuA]b (?-f .0/ٸ3}iݑ,,pla3Qhc\cLz# D>}L'm6g_H:bk?ҋY=W7,Zrii2$ݐ('`7U@[y0R/0>yi Օؐϱ [\@RbB)tg+_1ge;%#WB啐pS90}zdE>NHtvMT,>Dž#СY tG6ⱕ!~jRpu3Ǟ|5GD=7eމ*\qR8Uʑ8I0I̱ Rń{< 8kG 1 ҧ K5R}\6Oq.~# ^a1O؋Jt͡/ #f8 Rܶ|3o.ܷX/]^۳{Ov}hG5F>zw;7Xm}&ٌ9g&Ln&E k' ƏekswЙގ<h9IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fai_new_packages.png0000644000175000017500000000134710442562727023514 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  ;`].tIDAT8ˍIhQD'KѸ.*1D%rP ՓE"'ԓ=$Tp"IzLf_yP⇪W3A%l.\2"T^>t!x;+-P WM0uE^vuبw6,TH0C˧"J$aN܉P7v3.2@R[RҶF'|7|}&G;$TL#Pʗ'o/tPճ$kHD B)T/^}}In ZZ;w8-/FB Sv!3O4$nYҴq}4G-P ȧ~^aI 9CEXj]7&@,X_(Œ+ p\0J)nPR.}fܸ~$uJYIk)σД:onX^0izwnRPLfݲ,c6 DQE0 |vhqz$ /-3s/d"b!B]ױ,Ot )ggt.UMJ)l6m8>Y$WPcpRz3ucOF210~2Do !ߪ< A y>30g`Hߠ4 4&). 5 z _e8+fM￿ g`ge`fb VX2 ,o00|{ 4Ῐ?.?@X50g  h 33 26`f/k tv2 XB33ܻwaҥ ?d00a0f03K jz/0&Ac  ...@ \ np10p 4?ff@|?!N}|@, :k  Q @glf1 a`ߜ0p^pWH蒯`/0V@0ϟ0zׯ B o2z@  `aXŠo`Lt ` v?8P7c&'P#01eD`+3#@>ϓ`noP_o߁n njR@0*k2IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fullfolder.png0000644000175000017500000000111310442562727022373 0ustar mikemikePNG  IHDRagAMA7IDATx?hAs3g!(F8 ڤT L!_aB.XXXV\"1] [E"^uKw heݹ}gr o̼}3o"ƕ'D)@x~G?̮K`E#;6#_sc2JT+(P(br߶3Rpc/hkPoQA~cXgZG6ynz;[Bpő(\{z;YҬǮguZ<8.ؙvwQO-5 4m&&&bLMo h-H *rRDwH k~A\}0Rf)TUrw<  Ww2V*\ץ x=,~C2VaTC]-1hIRd26fP?,//7 "KKVVVwrqD"UCw!R2t=+33/ikv H61]RIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_phone.png0000644000175000017500000000142010442562727022706 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/mailq_requeue.png0000644000175000017500000000161610442562727023103 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fai_hook.png0000644000175000017500000000126410442562727022023 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_F*IDATxb@ QPPp/?2`fq#Bm$_ynA0333 dۏ?6@Е0@pxxxXXX @ F8rH 0 6߿pC~ v +++ ߿0E M @o߾ ;`%X=@ 9aat...p؀  FA{ dH x܀W^Ah+ȩ޽d8H'O02@ i0ȿRRRxJD_~VJƅ7@@@l(X܃Ȁ#k @p1]jK LX :?x3dIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/smallenv.png0000644000175000017500000000133510442562727022064 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/group.png0000644000175000017500000001020010442562727021366 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbdH1a! z1 @?Ͽ 7>`X 2?bSkZ$44%Ye`xts>~f`xѧ_3to{0h|y h3Cm\尪#s[Nar (p';_"聋 @Üg0ƺ>pr` a8P_АORDx&2H_?1[p~&d}C`a@$GF?Pzd`````G`2 L}ga^ &+31!n~~I5c6gw1#ÝK= S!a"P"[A*YU᫃ O0; /Í=/E2jOjdxv:S 1!d+rry P

    003@\'08 @!y]9dЏ/Njb C/ ˁR`bi8Ġİ_)Y~X=[HX/ \fti/!1w<9! X@>e`^63xqޮW s2HZ292<=phm// b`O&vX=pwV6N33yotOV3p31(*Y=@,|fˣ b ?ax|- B R%6 >?&wWo~0<}݁> n <\~{/xmag\@ h/1à cA5A#Zq ۅ3Ny LL|uL7P⶗'@@_ _N`~pg"iƠ p߁Ic l ~n ~AH wH{`T DlHrǿlf`x~_A'(fjׯDA<%K|cycPAޠ ?z~e:f`KXX*[)1(3pCkӟ ;"(ԾK!1y :AWO3°Z|~6 XW14KNr(Yaq7HȉHO݃ҏtaؿ|Õwac[uXDyDvnk@ _JA E bz ֥ F4nNbX,*/A_2@4S@X'r1xK1(ZCP{t Ӟ~bM Cs X,#f2&7ɠ4q- { uABɍ!T[DٔALՔAbG_!~S /d,ݮF=(AK%~"!I@/.>֯Xf~6ÿ_oݥ@ \ O=,'`/`T dc8`ygt[-qO Т?Xy׀!BA)/_zs;%N2>ʏ7ڦA+<@ƅ@+H"C#+oG?ypLG1h-%Iq'qIm:k)^~V}y0o|Y%`  )*\Ќ@Y`Wa+TwU9^L!ט`0h#MߞL<`Z@(yx$%}[.s O|ax j520P|{19rI/^e` 륓_}8b$ g?0K X-:^`Z%Kvx/}f`'ϐI#~hnz A3OduĈ-䁾:r<wi)+ {z}vօ1(1_ֽ=b`[UP| ,zedxY"YJAﻻ QgxxhJ00䮇?`ĂtIG_; PݏD; ODIǙ .3e5j {1=&aWQd}MA\<  P (yם;c1 O.0<4;;P e$a뿖 P;AU  @ ߿ G ,726x2\ I Z h 36i~7 ,6001e8P ")8Ubp3bЇ'@Vzҋ(p1c@ D[*0sR~VppCv,@{ F,a/FX運)`lfI5SVIv8#_XP?P?zSZns@)$ Q!!~q]v; ?3hĆu:cݾkx$BWPV W|u/@+2p }k?2yn2&K?H ) gmtu]xc,~FO+'ޙH btbf ~ADOrJ: RQWT6*y=?0<`f ]x϶#TIn^eglhG{§'an>:Yd2xaʹPB$kClIdFH]րb҂oi2O\! b!Z1Ȏ0a%``Ef )@~~##c_\86wBkcQ4w 01zeLڟAG΄8ntV^;U_s]{Du/Fā}o,X~d퍀p+[ /z]#u옧JGeA,ELu1WMuÇžGIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/back.png0000644000175000017500000000133510442562727021143 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<oIDATxb?% (cdb``bd``@Gn\|dFl(P ȩT~93|;W @X]UTR@2HXLNjd;+\-@1a "){ 5`~Z'1Xne`bac7\=@ k9a8f 20;[g/i[1p2 @,H6s_")'?×~`'.[7/ ?|dcg8O3"7a_k?@ԝo ߾a/ç/LYYZ ao,/3~/k~%&&sA \^jb;w34?Ç7޽oϟ~1|?@y6F@sie̱ed0y?|N ll=zZ $@]#_.ͼS@1; bu( Ġ@ f1j4 ڸ2@4-QJf@8Ļ RAΕ  mxlUVV1#@ѓƱIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fai_new_profile.png0000644000175000017500000000160710442562727023375 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  2IDAT8u]Lu(KeG5dٕ"Q a#8/1gbL\H1hp:[&. vl *Юv}۾/ sYw\䜜 79E[ :;?xvW^&x~?Ǟ:A Y2liv(FVnjXd: 6j- Gf;Ydx̓'~yr%rǍ:3kQG*BĕrFd}#O]\.U1o[+(t!_"" :@4Yc>Ew強#0uc2D2Or=\ ,0cG-TV_PfÇ&WZ]1>ŗ ʐ! ŨÕ̭ۅZ@Uվwlpe+ʭ<]Fx)b8kkcY/,şgVh27-:>մ~3dYo^VO{  ӢZ2 hxFH07u{ #30I # # ?PZ0C`ZA @_uA : sB¡@i;j!@0@uG1c5-WG?@M8̀0ɫkYra4,`!H(`PA7J,' IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/mailto.png0000644000175000017500000000117310442562727021530 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8(IDAT8œAKTQ׹yXf-f˚SF#J ČV>F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/false.png0000644000175000017500000000135110442562727021333 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/editcut.png0000644000175000017500000000144410442562727021705 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME  *}IDATxڍKL}vXHPhA&hƃ!zx0Qc@<`7IOhHԾݶE0F̟2f=466{ebb>0::]/ ܝ,,'w{}}O z/MI F,SC~ؗ # ЂpnE[["B1BQx}jjqZW?EQp<7<<پ_[& !V^B& puv2 3:֒L.C\c[{. UiN=q:j;st](:Rhf0FJW( 5cכOZр`5u@@k=%'gt]>/y5׈y-$Ukp؃%:OĴ@k}JpO,)/NngUoMYQ9u.B:RZC\FNǥrw[*R쉒ȣ#|Q/~U+3e]d)ӥrRk}4Xq,S*A5Y J>I!J)( Fܫւ|IJ @Lf7- %^hsO<0LZ\'ʋU o  28Փũf%mSOS 8G:}+}_rB,OIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/proxy.png0000644000175000017500000001215310442562727021424 0ustar mikemikePNG  IHDR00WgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATxb?P$FPOڏw)-n+ïO:gXDplBf}:* `d岝M_ɑl) B \ , _cxáM'NJ6~>yO@/b C!CL#-6Q x 0ٸ1023H 2D1|? ̌~Ձ/^207 2180ܺ~eY;5=@`dg#PX=0?@?3`+"g/1|Lf~1_ &*@@v $|w-0@Qr`GJ3ܯ \$#+عX5~qP^~`F?` 4,XxN-+12@"+'?/'~}a&!)j #Po fl>o?LLez !`l XeQX)a(>&vn ĵ[n΂1!RHKi-| `˨5b%=wJ>Z?*#$ .7G"};b(b{t}f9>KjU`q :klHAA\6iDKfΐ3Nڏ=Ϣ=>ǽ-#>󆖔9tP^#: 55ԨD6ѣH@Ɏ81,*^ $.t TQTKPӔ?twן0s 0p3Ȉ 1h*(0(J2Hr2hBۧϟ>+?uI`¯߿@٘M60p1  Yc/ ,Nc*Q,JXr53E~1HeP /ZaxÓgO^| L hPcp"Oza@ ߁Z\|@ 1@pkb6`!'A "F Ofen bBt$2H ЧO2x >fgE >\A% =@'I +1rp 30p[ 8?^3( 1?dË޿K˥) PR@,l|c{.*J9,vcXr}+sn{;,Bul ,:h 1} 칁 I`gcetP@&=V]$@' yf <;#8Av"#,HXY ,!3XeaSba%?`-u;Z ҿ@L| <<ܭ,,lf~[@g00K !DVv49~}Z@V M+f`oSO F\\)ї(mA|P LԼ,׸8~df`+3 G`-@g6;>)y+]fe 0@1qrM.anN&.N㿾;&/4ԧz4 RZ >b`y سg`gX13;:c`X_;6?x9yoM3y d{;0?"1.!L OAZ>?PWX"vӻO*磬cāe:_Nds~ a{1'ƕRK>bT l'80C[3LO$%,Ʌ2zhy :.?|z}XٽM+ Mz_rmr3@kAgۅدΘ! LB҂ 2 B2P&7`X2/?Ϗ?2<;z@aۗw (8= y)##5)TUT5o~ʚ sVhVJλ%W\Cng|bf`!i`^8-o_:^ ''jkPlH2& qy)))n`ҥKgϞ@¾[Pz?wx%dߧo8ٙX ?|ëw_><@ G~edg@0Ԯ4 e 0[`Gׯ_߯Y… s;r'@1†ׁH01"u8AZGFe&~/Pn៬:Lzb@;I*(*333J#D4񬬨߸iݻvF &@!HRa6h>aU@5 #8@ LB*晲̲*L\bo^z-x4;?Ho P=ȁR RR`_?]xݻw( +++{Vs?^+|u2(2=3ïj[Ґn# [pNq/ʪ8W۷o;{  a \ 9_l# *kg4Ī ɊYդٕ 9N*g Xax!Ð|DGAZ`鳧 gΞyy;.\ > O]Bl;P,Kǯ 0//) 셩ʳ 2Ϛ-ePnee8p<.[~0\7aД Gy|]`ih0h0^fOO2awc`yA%, lt !f?ny;g4XC}#@|H# )U,ͪdM,i;/g2:py `_s `} 6gRa> u3hJ9f9 B HR=`JF Y\fP6jb4 ß߯> `[jn_ e`f~ _ hI %"%@aݴ } &~, b" ֿ`8(ABy'-e`wT>'G''>2\=  r/@EOh E#@&~{pNG=vIk3fjdebbcvÅ~ .ic"͎T<|;hJz#Dy ǏSnXm/ р L |.ݼp?Ϙf|dxb?AEy;AR 4D@C773H1(s1hˉ2l?%4Aeǟ*&!_2n|1_ePy gh !%A H*_н O2< Ѥ$yF[߼~fy 3.A Z\bXRM>$b$uDhh!v‹ 7=!>B0 %t;wOH %T?}>0}) Bܷt/Iz4ͱ_oPGO8ds1_ᰒ(tӿ⅚/H;?Vx FrۀZʇڇ8̀?P;7Q*-r J6G7YIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/cant_editpaste.png0000644000175000017500000000072110442562727023230 0ustar mikemikePNG  IHDR7bKGD̿ pHYs  tIME5kbIDAT(=;kTQ{7be0 ],-bka-X#XX(QXa eu,vL;'6˯VW|^1R+svuӝt[;بӞ8޼޳ }an_AKmNk9%i[(-]?<[} ⱁiHRߢb+m}[ q10ԓƾJB:-RJa`H@&͛v 6z$Lj#}\K]Iq&6טAK9VO |k 4J햄ڬQ '4ģG Ep\#h)5Z=IT7GDꌞIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_printer.png0000644000175000017500000000124610442562727023266 0ustar mikemikePNG  IHDRagAMA7]IDATxRMOQ=o aB3M)mb V t¿nK Y!a 4b hCie>ޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fax.png0000644000175000017500000000643010442562727021022 0ustar mikemikePNG  IHDR00WgAMA7 IDATx_\}?ݙݙװ ^c~VB!R )THyCH'$Cy j"Q)) Dxh0nD212Fwwwvf?>̜;]i~ў{s~y㮻[)e+I$ap'ajYʾ?߮gm6MzmY@F']tu7{$I!D^fsI)=$I"RTY0HdC7:׳ xꩧ]׿mV^JR2557.\f:7`Ox֭#[l!ΩE)wO;R \J ryiG5о7d4QLL;Z̠ SJr%,p]7v]!RJ(J钥F}\.3::JIJ,LƠz}zk`Y 霞&/]<ȿ?ӻ-kz/<N3g|;>0 & 2Z1dA/s[׆ih4J Kk=y^>u]vűcXXXO#iZ5x$ C@aD^c"!eq^ŋ+-[n*/4M(Bc`!ML#mHሀ-%ܽn `޽W_};V%H9P("IΞ=rrj-r֠&?P\oe[cH$3'g⡇j:{l`0#8t( (0 ŕPk']G2C wwݏzDR.n!-_y8###Hb066ĭ:Unϩ, R 8y 2\.buu)Mw)q\:;ڶ.F|IB${DHTrIJ"aĎiE1?ƒC˘b/}J 2 a:NjbޡJGRȢұIL=RIJ`[s6R ۶cAheRP~n0*UIB:̧ۣPR(c8FJu7,<ö4aR(PJAP,z mCS(k"]t::P>3@fnnrLRj/dttnŬz뭌kf}N-ABIyul& C `dd50q0\]]… m:fzcGAg,|>z`ztl6T*DQĶmhZ,,,P. )%Be HiUF @}= tٻQ}odcBP(h6($IBXdyy9ufI\>NDJIZMy\|bطn/X)Ȃr R,--177E>KKKX$Iˬ]^!`)}8K>j Z!buu(t:,,,pwP.i6?Q&''Y\\sة)vMOT*"nb.RA %HiJ얆RvW>mSh4inrK4MlN3fee v˲67) t-I:l⯭Q9x\NbD~{cydHt:044DXL"PV !QtjTU֮R:=}zВ$ g7߹y_-yC|r~~8\(Rmn àhPTIw0 \exxp]7^{qv_J8t:Ző•V}Oо} =0jÉvjE˲c~~ͫjbYR)ͼApi>ZYYn333s ,8ޙvargΜaϞ=yoQ*4~D>l4e'~SUexUQ8NJ m;I`uEfggO?00` EVv2B={044Dbnn{6(ϓ*JyW7%WYykfW_}zzzzm XsssE 022=܃yaۙ87ߌmݣ]r5ޮ%׮]īuZApSx_ ,+ٵkOǘfEQZ⎏S*X^^^!Ju[afꄚ>Vi6)t:u?̹s7G`V+ _?|orvQnYXX`qqRDTB)KW*f8{twwyn/40:Yz}o#0q _W" CСC+خ.ҭo@F9@^ۘS2IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_new_user.png0000644000175000017500000000142410442562727023124 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "Ω2IDAT8ˍKHT{XfYkT{HaPTPAI )*-Z1l A$A5BT"hX#fFf²(:&<noŏEfmƿ[I0bKt0-t6"G){0|砨8h[א[Z?j=IK4nK{̖="B|nקis3VP>بH$r:bqih !"~Z.I !J|eRBNA(i{ @](dw=/ݼ2LCAW=w*Մi 4*A{p)|nu"Tsht <®) aIo喭=B~@`ݾէw:uB33QĞsȩk2WHKPո(ɺm%+ z=h*x“mҎQ t~ХSIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/log_info.png0000644000175000017500000000165010442562727022037 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME %9tEXtCommentCreated with The GIMPd%n IDATxeMh\eΝ;3ɤI̤FMZSVP'J PӅ.EnE•l "]KR`6`(EZCM:!3M&sHZ=r8G|12~ܖ@-J+կݱ7}{^l7n}׏va.j$8e& _>nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R%o.aY_?O3~׋ ?b.m3sۅH8 (r=9 1{c}m# gO0| '##'?, ~g/txs+[t7+3 bgb&dO  @}KKOg dPa:?=o3{ /^hcsܰCopRa _~a *0AgZߗa刺 e!ÿ'*0Ruޗ\B L 10䙁1t<01ӿJ^];,[@7а ~C_'~01231< >20vɆ+;+3/1K >2 y9~h ,/,gTV`?Wf\ "o .8lF8 ;&^ b | 33 ??s|>3|`d\1p210{PgJ@32|cK;~M@p Un8@Gx3 _y'@0mc8]ANVAZ30l0|pؔA[N_'>vf6`^83f'×_^IoyX to'(J_ /`2<@X0×L b\Pe~=?'_W>3\|χ?0>0gw }>>QWBVNzvQXPO`b`@IaArׯ>3_!++a % *l `,y=r ?ߜ /SMN.=uF_ B@'= zx?@_?~C@3ë rb @c̀z~=~XIKp p ?2k001|'4ShYcy.(~U.@x=z=qʸCX> ??l$ & ?H /_~0SV֯ "|_} #OY2H iF߭g7ÛORGްH\%@g Q+X&1[x/!L\i4B nܸh?o}ms {7G 8&ŧj0SٮPS~>6$pl 2 8+TYiN/&ܤsraG"M T3T|dy*E`ivvv KUr&"R|y6P!VƆTYWԀm%Ns )9tvp7(P vv)#02H{cR?X@&P?(to> /r9@恓3"e5*0u&, ?;?accgxSظg|v䕗/ i s>_X !;1$aƿ?W^yĀp](04ZZӸxUWϠ b{-/y@Bƛˏ!JŒOtlZLeR_MqN.GX)wԭŠP0Ge(NɐҴY[yB&`fc`o_+%`+Bp,2/45`\qr2}LLس_! )X?3w5N` 0ՌL`{@{p}$HTAH+P^db7C/88ٹ~?/]/*@1sW>9-% ",~0/Wυ.ܶdcH @, l\ ğߠ?8ɀ  ! G]o`̟AI?ЮR 9Kd1f,4 X3}kw s~fxF䅗֫`%LR@65>`-'0Jq3z˧_4 0LLbeXL&8cT< ޿60D1l]{AO@}eP [ RbG?  s0y\cd?d?'@E,u@_pP0ZA4`z 0:; +ã;ٿ 00 !56IgϞ3dz0 ,mlX<€[쉠d{cCA;oPd֠l@ Ѵ~0<:>›a``6Xv2T#t=@zddrry`fР^< 'd26pwo2U06@e>}Y四9h F76 DӤ\Ǯ1|:<$R:B "z@ZR!ԝԁg4zٓ'ai`:Z h0r1S{sR BAv3| \_ذ#: C' ~ k׮Jb,o]}t_p i|nhޡ-ӿLTJ1܎gD4 q<,LP@D߼yWP?`޹l43@8&ނ;wH(xP ݏ+HAW Ġ)XP* Sؙ>sPfމ0G: :RA1hX4  @GG90[ 3b0oB|o&έ[  9Da~B@ <gw CCpGTH3< vo?lr|au$ s4L=( (}  `V=#G>GACV9>?+!9rx>0Ք g0|~R??0ǃA@3 3HI?0 N@̜ ;|'7`t" r,3`& BZ569@KB)_&DMl,yCTq420<ۻOIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fai_script.png0000644000175000017500000000113110442562727022360 0ustar mikemikePNG  IHDRabKGD pHYs  tIME n&IDATxڝjSAL޴B)Z .,tkZ|7og5M2XDZh7ir"i4ā33?k6+VkXju)x3(rqe܏tGO!,3[xZ f0CUUDQCTQt}> OSuq K`fC8Fycef>RS cf8_f;@a[8L`!GGGRbxݠS9}2zq\ &h k5 2s+RR,eD,1Tisb &eW)0E4^~Zpg_M)_w:rptd7+O8~sV?s3bi ˳$I ^Gz^iJJq*JL50IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_server.png0000644000175000017500000000155710442562727023116 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% X.?0Dgïen|%20}Çocg8wn@d`óg?'h: ncSAQUAXVJ^a߿uA@5HPZCK_NAw?b󛁁Ve Xxygij%++ 01332* $?Al VRL[N=߿U"//&U@P/a X@/߲ _0\u( ff!,@< >@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/ftp.png0000644000175000017500000001041510442562727021033 0ustar mikemikePNG  IHDR00WgAMAܲIDATxit\y޹"͌4]%Y-/n@L8RC\H!$MЖ&pچ)!-@@lcl!+-o,kf$>w+&kS <<3gg}?ɟa,ZvwMpy2u-0M@Y7dfKV8z,l?v9%g:xT0Z+ 7 `)#$:BϱYX7$uEc$Fw=\2Cs,,Z}K"mN6;{pK.w|oѫme ђryH]`XX`Xe,eE*~ ۶Hg 6t`ʲy5\r~=ya;oH+|%uw. Cihߣ\d 7IPH;j`](co㇯$H"O28'O0H1:$Q\Tmvl!TRV ln)DK~@uO~iխ~ť.E]'lj##0tu I-oKӴR,fJ09p(a$RYdؖYTH]{І*VUW|}}9eW--N, T1IГ*0Ac@I$ν8,lFl!W]@Waa& lZ"@zvC h:_ai" x';MU{ F6FUI!#6yIFFdzDzd~ RDqBab HH"FtDQD$I RYx9P >kv0MWxʸT!C~…H .j\{>t:>8霅a:hIp'bE\3w {i?KIITFxw<[p뀯v+j dY7^2-7ڎsF6ظP$r΂zA5Xb}}<:: EmoF`bө"0ŶA?p/H<멫(*Ji( 7+tTG%*=<9Ka{{E&Z B G֔05BsK+%bZ6{a[m>(gUre"+{<2fͬ#3ٺ㈓X{jղo^GEfv?fݎ$Bi |'1Y*a;"pJ̝ݎhXtF'7ZZ;pApvzؼ(?"]'clzSlvDMkyzVZm.[䥱Z摗KC8Nd=-έ"I"=}#׏2VD48mC7(* 9dͺv1oRA:g,)yշ;{ͻ#3&2~?p^y'di\e4#s`ٮƓL '* "yDTCEyk`0a!A8u"sӕ{,9經;I}q DEy)m{ˍxBo;{Sss)Eh0R/duߝa|,:"#O`ۘ6Wd2ּ_nõyLҡxKp]1xn;w! y|׮$ZD|\מ|Y~[~cͱ/&xvLmJSYdi7ũ/?=#nc,O}Un:]E$m?d.zzWܥ1L3gнgqһJǴ~ٳvħrdʪHH)-V` !򋭣";m' >u#*S=KƧ~I Y-wֿH+KG$L rHb<;G;_#@Lg|Gwll;X|I?сxϖm#,-kjj<55eCGBS,@U tzOv{:Z׀$RgnA\wo㲒_x#}SC)Ѣ蔆]0gS|>P7t-Nw?su#w۶xǀu>T~ ki{2^@ JZ6 ),54&Y% 1Θ|T$oTyIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/dns.png0000644000175000017500000001120310442562727021022 0ustar mikemikePNG  IHDR00WgAMA7:IDATx͚y]W}?yzƞͳd{c'N␅JV (BZHPhURJ+$(P D)I.2ǞqƳo{gb=]{;o!T]]K0t(wcL7D:SRx̞ 7Km:͟R;{v ;;nou%ւ.rcj׮T7K(chBogQC?j}]8G ф#Zk-^ԙ ..pf3} }Vȿcl._ZkZrh Rf%/mT劲Fx(e?M vx޲ S~}OAKsbR9D[ R\G8G:! }P^0×~g>y+?{H=y|>CPP Bc@m,6#k0bŘ9 h@O+212_e-@ݞ:ɏgrxd M1Q0t[1PhSINzi47а|u3tf&/Gk݁] ? V.[R(z6qhVۛ0ւon!`P,\ǥ k-劊ظب4yvlfip뭰QsgMu.,g Ez>X\<}[45&QJGnek-վm 2h%4-kcQ!+mk}s W(ؖr5 BAұ#,jGPFJQSz$$Dk,hM*azƮde-["(+kߦ0 aKl;ZGX&[(^^drr%KPPl2BHˢZ)RH'Ifu]R JڰV@JAwނl|?]DVm2 uP02B!(S*fXbz~wpDRԈs^)@B Fna5[u"% o?t^sK{})ǡ]=\!q! a C҆j W80EFx:R[y:RH$:J^bna.$(\XL3T&7 w<|p;҉pkk3qxo/.k Ja:CƲ026@o+=M I?vnL--̈́R,^z`YKSC=F'e)W6lno#Uc@+r[ ߢTVl W\_ _ymI,dFzB`,(q`bz?:ljdq{6sK&(E+M1({>³i[knLqmʀdbvez;(WtFiE+KFpvd>s>&fH5s~8;2wb!ܷ1 }1qL|BrEE~]/H2Āk}֖0ԔC#%/Yb@}wA9dy5Oorc,GoJeōS9ۆlđ /Y..Q,Vέ \iRQ H)YXoc1la.$9}mJEHF `k  G"$qZ37tgjۅRXc5!GՖ7PR5P*D.*ˏN*Rm)viԀa6-nJz6]*vt/ [8 )Tt d8!LH ]WLUhQIݮ$DMӷM QW[un!Z֔e ސFڨ]w8Apq\Xr9T*qE `׮]311hL]]a̹sbj1&ڵ(Zc]!*^%r9֌0 }͛7S,IR444eڨ^vڅ1QLGG}}}aHss3$I|g2??ر={P*(˄ac pClm@ p`~a?~d2֚L&Cgg'dX/2T#GŖ-[6|pΝĚUJL&I$a L!t:vZpwq|ߧq顩)^AT'>R u57p >?;;ˍ7ضm{/aN%NT*rwrCyH))dY&&&طo.]"+ޢaee8VWW) BEx饗A:;;yG8uL&V`3֏8x8H)֒H$F8<݄a"bL I$l߾׍r؅R8q\.g|>ٺu+O= T B.Qbn䡇5" CmF.nG9s ¥iN8?{n/HD/yh PK\y˜>}:LuILMM.|/ƵZ<:uuu,//3:: 311~3Rsssr9~i8k׮/8N\&G{n߾k-/)e}q$H$bk[HJ%_)%J) }YAT*8^kR*>bرcRٳg|r7k}`W U;e7Ѕ_zvOg2kTY~ϙ j)GskhAIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/editcopy.png0000644000175000017500000000141110442562727022056 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb}/>>nKK=;QQYp*߿^c ~e`x 00)me +ŕ? @5?a4 P ۷X!!Nׯ?0|6?~ xo&$  `VIIQ9..B0@ .. --4 X@l 0@1"_Nl`W߁~ ??`0?`z0b@y|XﺺNJʰ7,`q!#@9Y3f at2H߿62 A^ @(061+0m$sF7@ ٢,ˠNkdeeſ@X&8@ 'a` c8z<4]y v˗ blIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/empty.png0000644000175000017500000000025610442562727021402 0ustar mikemikePNG  IHDRabKGD pHYs  tIME ( "ytEXtCommentCreated with The GIMPd%nIDATxc``E,IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_application.png0000644000175000017500000000167710442562727024116 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/snd_hardware.png0000644000175000017500000000144310442562727022704 0ustar mikemikePNG  IHDRabKGD pHYs  tIME lMIDAT8œkTg;qI&IIЊ2n̪T]>ҵ ĸJ]Ԁ>h3l<I&w̝ޯ D,Y8[i>wc7@"_#~jZ'^?|z3M$%HCBi|B,CL*ɉQ,g>Z^^hozs35hCt>5#' wY9DT6,K$5fW(:$ՊtRMtwo(NR%0/aṮt6"}Ikя|Iq34hX):C;w C[Rɽ5x7~![Ǎ#Z9g G{QȌ3? p]%|ߧZ1n"Dٶmzc0b2_"~,RJzRm۴mY敃gS  X\tDARq.]hd2r85Ѹݻ_T*s~(XEguuuPY}m~Baԩw^r(<\ST֊ŢrqWVVNnmmAxn}$;@/٢Zw5IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_up.png0000644000175000017500000000153610442562727021725 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HcaXv0 0Vـ{9`b5'Z 2&fAGv !YQEP/ @s03h̎dwW?0<[!fx @PCjVJyD2rD3ۿ#S.@1t ެTIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/addressbook.png0000644000175000017500000001247210442562727022547 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?`EMбħ I3{._x+?9BC@ZbbwM j>6f`dvf`;Yk]ysY)@1 N3T00210K]f``Pѵy}+%ݐ qfbFfNp~!Z0= >{%T'Kx6H@@I/|?M߿,L< ?XST߿$zx&F}#çW -f*C l,1@x*~FF z?ٰPsw1 w. /Ù=ՖENo@ v 10|jg& X8gp«7cL zt:<(tߩ!V 1 ke8֬g`xό@2qJ:=@>~~+FQq!^v#MĂ'e6ו}ڔ+'r?=/ې!_Y h.`.ϔmz14()31JNȟȐD8; 㽋 =s_xuP _QQMl\, Z?՟-KxCn80!z$x2XVc`x?8?;/0&O zQJ69d 3/Db ΝoUl|k' &/kG#Mޯ?mvtm- O0( ;R|d$8|eS8@K&d;.00Cбيum@@LCX?2}Ͽٞl)0Ɛ y>_ ¹|Ĥ%Ccx8OHHiB׋~? p)E_׿~_/+F gpO?Wp)+Е!\ J Br Y Ƈ80V*dl.aeb\W dZt@(?2z?3*G`&_E64-`IŐ~SHu0s/0&DɟKaJvؠ Y!kHÒgDaAI6{+4٠Rtab\a,O퇟fgbb`gF T 1u^d`fRm Ơ% I`fS7t eXPOd# M6BWm%l PB/C8 ӗD~ 4 VF¿3|.K]!R?O@={q27@3@ͭÒ=)x`istë {Wi @L2+ _I~ d!( !0TO,T EmP;vxab0k_&ؒ 2 &h/c-Ng~ 2Ch(_P!} #Аp nga X&`}l u`/ `;ps9qy L `!'Bc(4;tbaH`u%G=idX?Xo7VX-@g]QLL9", 21"/~i6'C_!+B E1|D, 2X(3L9M+a.x f&`7v6Z5yqFQ!Fv6v`,.3|,2{ ?@yvcm T0M| :*| ;Ne :ػ/3$0ϱ3, ?)'E*pdW< Fǿ2x9M7 /p38$ "( ܜL \ ? ! S| *yWy0Ĺ0,#ː6ar[aA{ٮ03y-0=..Vl V, p=U1qD<; w31(HdHe8wW!E[`aV  i.>&`)޾ 7fi3*ܻǰ;7܂֟e7~>_=ϓ%tzRU!(_/S^1;ϟ^3 +-0 qAB>~7CL RҊ?~2\( $̐ΰxCh70 >23We0V`Pd(Pffdy{3`.ݾg[qCQKa>>`AE'fx ߌl 30302p(>q߉>#7| TE99~f?v538S l ]~HX/a9U/n n0fm9e`6L /}T EEG^IS@<,Ϯ4Cj?'Mb8u`a~Iz ؁e9;$9;&b7`>q13( ?Y~+*v& u.el0 iہH2@N3î^}%>6@sRb,rf_qs)/$,y0TeQe0dbglAɉ  rVLOǠ(̐ . ,7Cf4=?3;0cfgfL$@XG%|E6-;Z,(r ýGO' 0Z9970^[Ҡ:xPq X~:XBb ~av1;zXchf``X. D+{pcW3Rñ)@7 w)~.]Xk18p3(ɫ-6}063'AZ ~C4ofǗ/899X+g cxS1+3,29LҒn {g__. _02J08eˠxfGA JNPxhC,7?4U=pAyAM@U'}0 z݇?=夦칟8!v%>p5@KK[ ߾~VdL4 A1{E)$V8X`'c ] i _3AŁ ?v{O?>٭sX79ſ:+eCzÕ "ܯɄջ ?ƮçǃB/4//r< 4F I X}򝁛ANAa ->e},zI@FuI@mշl}krJ?=~ɠ& XLJ3B% rϿ:t%/$/vS*MqF`ŰeKg_2~߯{d9h7n Ϟ}P헰il6H̔W@Еtr (/pC^{Prbdy5/$ìu?};~t2Px '8Lʬx)ߘPn _тO I3sr 6)1(0fgdM?@bTTOױ\pU\VFa A7Fv`\23(/0B6 /^& d o̓i}8J69)OFQz¯O/|?a)# ڊB662/BA OaaxXt<(ɰK6 Ȟfڿ\87?'n=8 zӅ v+9k Ңa8|Q ؜b`g>_2\AAJ`iӿ߻ˉI6 Ȟ#{7KCh,y ÇOVl|s篘]} w~0aQavC{ eA3\ѻw~z0eǖl@Q4w'Է?n1uzccߞ}`ږϬ& @T_jɛpxk/9E1|zlU]P==J+< &VYfɨz&V?_:4h{ (]{=*Z Rl<^PC:RGIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/penguin.png0000644000175000017500000000170410442562727021710 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<VIDATxbd@:::ibbblllʿ~bxGmM3 fgg|)7os)L@ 55K,>?cƌ@@eX &HJJ9߿eXh=Û?xãXXXT@ R@,HDܹs FF ߾`w u Ve Ei]]]_W cױ| / Ni 7$@8''ׯ_ oV~)3 (#߾}@ ͹@2 ?5Bo߾ "" ((y0aUȀ&%r@04߾ b_ ğ^lٺ?cW çO>~+3Öm;?^ze5PM>VVFSfݼyYAJWa?TAH>ÏO^?^I`p| 33==v[,exnfg N* ٘AA %# Ƣ36&!-gE,@pA7@|+ ܫl_}0IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/null.gif0000644000175000017500000000006110442562727021171 0ustar mikemikeGIF89a!,T;gosa-core-2.7.4/doc/core/es/lyx-source/images/select_ogroup.png0000644000175000017500000000143210442562727023113 0ustar mikemikePNG  IHDRagAMA7IDATx}OhS?O$vMԦSF;"<(Q"xcTe`yA=̓ )JT1$%/y<I~/,Ɗ'5ظyAn)2;v]=,"n}]惵3Zujqg}|h n^*e<`}HHxHiH$:,ʟfֹ~@L-8X H`ija,pXSs`kXdU@ͽƺ0b_6nh]sBPP+o>Iں1@ی=vO[OxC3ӯQtoZNs`MCX=<{;{.7'^LO2|Ζ[:hM-`pC0YHO[hݫBo~{Ǎ|UWI匕&BfDaJa'J|b5 ,?f4Y/e0T\MSVsU+kG<%(M|V_m*Y'[X1ugW? S fӵPQ-2qGm^P"^q;7imKVn1P.;HEAq޵wAD`hkvѣGz$:yX:s73.hIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fai_new_hook.png0000644000175000017500000000122610442562727022672 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  *#IDAT8˥MkQsgrgjmERM܋M?d5Kѽ+n[P\h)~k>\SSc6. /}{8l6-q\zΛk0Rgw0Facp6V+\ʸs0@K(eq"Bj2Rcf,_HLyc%<<Ͱ"'5ՌkIl _N((,`0q8FD2L0? "i: \EDZ1Z\%cR???i֚,˦|CDc( Xk鎎>jR(m\}y jeRyvXMZ6Nm'Ipj̅w!mZz^>F}>lS w` Ճ\w:|h4\.+6^.>!H)X,>+++J%c,6t y2p X[[]PVܤi@"\ dwfiIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/info.png0000644000175000017500000000225310442562727021176 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<=IDATxbdTbw9/߿U/fs_KM?@1 &U8~r3|e0b`D/?x5Ȓ@]|l@/p 1 1` sw=g8(ӛ>Ix#L % #8C:C! XA}ëo <p N>Pz+` rl8@1C ݯ4t'q m5&oXh0'>.)UB, F {/~d+ߟ~ &Y|]̤?P( ,̑ᯠAY5a>m]@}`d]|f`70TtmgVdTQPM lv?XyL^~Q; Z `>6u?10g',ٳ|b% B@8TA℄w  bt5Ý ?B1)30>z@ xD1 M|>08h n>loz)2W X@9kx$vm$?3~Ȁ3 t__3<@#3?~&çB 0?`}J3Lb1ߟ|.|@LB#`a€B1zPe_);@țm $ߟ ,ܿ3s"@17 J :\E0B#8ý pu ;}| vo_gpTn;0pvc`y`W3q3p*>]ϳgD Ŧ`[ϫ `NT*;? ] .6М*8E]K70|~si WXL-<" WDMHz #P qShA>DLE,8B 4ke `e{xIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/members.png0000644000175000017500000000154410442562727021677 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_workstation.png0000644000175000017500000000146110442562727024166 0ustar mikemikePNG  IHDRagAMA7IDATxmk\U{g\C&8I D("?FBё".C;۵K֭_j: IM"4L<|Vϻx~#VVV>F`>512Ό~Ƨkkk8^7)d(# SnϮ›o\\WN̝c?}cS(J1DaQH؋ז_qјFlLgYCKcJ!/ vwS]GKIE))pY_笡⹮q{:SHv?qgC (uApu8_tI([Xˤij~$QbJoŝd3Rd7YyLtFeYdҐ5Z;oȘ_(T6R.7JzB퓹f/MXhn=mG1yiPd#cĆ3g^|<@+#Pw ݏ5ߒ-M0 5ƱO cu?qy/(@PopX4_heE/`> YJIT7Wm h<>sT_]Ѹ{N&>dڋ Q*֮;M՗ݼİE"b %^@y:BA-cI>f2k߂Q%̫y5=_o@x b.T (IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/copypaste.png0000644000175000017500000000173610442562727022257 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<pIDATxbA 22|_=-!***#-1ÌY5>߻3j/bɳ\~a3 }.NG^maggg3>Z 3.}#&"-f!` r;Ý _f! ▒ __{MMk?302g ?10l# ~52e[kTmbandʣ@,>f?_kS1|ĠÅAAA0~a` k d AZ/G{YMJZ(yݢ3x%ɔ{oP668ZG=W|  ׂ h /JDt "4ϟ _?2 tg߁  `fafL l Ϟb@l̓)vqd~D*>bl)Tlכ2 b ܧ|Ob X i .߁^gbbf _VL̄_ i hD1>ba ⿿0g'. p{\? 0m`2""( CgԄH03% fgg_L@|P00 P. #C>0vУj^$B|0Ao4IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/addr_company.png0000644000175000017500000000343210442562727022703 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@b rq@nVVKNGqQ+qa zyos@BC  I>K._{Gg?/Xw{Lwl&\nVWXٯ$BBLҦ׎_|o>Տ}?~AĿ|y_P-aVi 3S!irkC1G>19 2 jG&WԹ3\q֝ }a׿ ?32(ʊ2zh@'Ff| #.p坋v}@ dMhH|ѓG 3|??@Z "| eW~ZqϧIT2W,3r2|OfoGU9A؁AHH( 27?@/2<{GݝKAPÞԉ ?0i103d/Л< \?wgcx3#3br,rvr6Wa`c+K`d`+ t0# 3#(X.d0߿nǾS p")*($, ̠)p_/Zp='7êm7T'0}o_'0|ٹ t{2H*@L?1 2d1 g}`~P(H ~Go0L F: wb`?@|?Aб Od矟x)f~ÇO.T|{k2 1(*1?u ^?tX  v\b(02~cf`,s 0 dga`Ҭ l /|e8|.=W~Π" ?óן>n ?'PV@C?zr[A&tcO?II 0 s1q38?7?'?y]'#wxÿW 2 >Bbf"Ҝ" @9y9r2p],'/0aÏN@o Q8NV-h}خch} ;a^,lZ 1xZsIlu3DPJx%~xr)Xr@Pn&L!@)@w('\Ew!w2xpLk'B$5NmLcjw&yBRDue!Gˤ&Yw5JA"~&Kh;<a \ *]IRdPfPP(;ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/hotplug.png0000644000175000017500000000153510442562727021727 0ustar mikemikePNG  IHDRasBIT|dtEXtTitleMade with Sodipodi/'tEXtAuthorUnknown! zTXtDescriptionxKT(L.)-J_~ ,IDATxOH߻}M&ԽOY%u ALHC#0"޽y<]L6/FVPjT&hdL'۫msbԩ9}x!&'g XL4&d$;tK/~Fp:,GeD0$#V[9./.׷ĵc i_Cc];?slVp(Ǎ# fWX殻|[{j<@0zW}%)ldrX@ˑZ)6t5L,.N+@KKvD '}·Usa#4ӜK6UTz_g%_mmeH$ ï&\*A :MҗbaXq*A7a2]BZ LA:JC?*P^dpݫ+(eBB8X߉=zD7UU%.xA@<B!b553H]{,444yyur&CXQUu$Ia0 2QHҋv{k_3|0#IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_blocklist.png0000644000175000017500000000123710442562727023265 0ustar mikemikePNG  IHDRagAMA7VIDATxMHTQw|Ր }a[H j!.t#b6$}TXЦe$ BDҌi5lfޛwx3 ù9(RhAP(-IXZrdŦnpN֪5N AN8Hzxy(P(ۣ CB,JAc݃kDO'!!dwmա05)*ga Iib[ugxǷQVhs{WH9>| LӤLJ.]>`SDmp,o `M67͞^̥(rI+GRX (,\Y4!@oGس39Yz/T $qM$e!Y} !) L?WL|re'W>߁sݰKl:ŃvfJL;ǨST׹kaZh%Rp Ct_`bsV3{YZҘ||ۮ3,}/@6 ]>t=56Z~~;__wo(U@0@a58HaI~?>:ãS>8Ɔi ׀ @, h@E,IBǑ 111Ë ^`ЖgДƐ?C9aC8㋻gfF1~E3Cf~uz56~ C? `Qv;7_2{L@@ 0"c@s$f<<Ă?0z'` 􍵽.]rb0/& 0J8!hן >}c8@b 9EDah+PYb2'#`Nva`x oGn.<37gc4@6 P 616`pB0?{? _.=/ttoqQf/om+1R~wfz:斒2,)-pzK_<`?@>˖xU|I( ,bVePcaWd?0 ۷><Ձ 0a2YIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/edit.png0000644000175000017500000000166210442562727021173 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<DIDATxbp_/Zba@0Y=0xFll ,l Հ>30X)#W0FvvG;qrqͽq훗 30˿ /d]ݾpo߼dسc Pb¦ _8c $#𗁅ʥ+@U 0\ f[@GA!O>^#1ܻs a`{6(h2 R ,KNn bnbEOPԼ ;;hP,ï/~'&F&`a ^@4/×O[3pcf P##? AA *P(rLD. 2\&[Ձ0 ?[o af`bVd2f&.nn&&@g`&bBvӏzj k  lhc񷠐,##8 I5T L6f-66fff..NX[n2ܿs XyaՊ5< '22cX~ t_ OÀ0a/ 15dIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/scanner.png0000644000175000017500000000145110442562727021673 0ustar mikemikePNG  IHDRagAMA7IDATxmk[e?{ɺ4i~,M2+l*MXnVfV BA^/hA](z͔B)bpbv'i=9=Eָ^=yyj3^Rjn}$ɯR_A8fuu tQ߷aZ FQd}O0 mGGGBkXk,8e^'ɔ4;;;?nnnNkf4l68Ok!_YYY~p>j8̖hƘ=ql/ ۟a!n5/n~ܺrҥ̃✃ccy%ǂ[+q% jYf 9bqq pbMgS +0a; ZsZmTR'@KҊ,= DYΝpO׮,^2-{tbKH!2Yr>E)RUJo,e(hQ*$YZc&quٙW2dcHEX `($^Nsf+LnNrVcĔG!<*E;|!)'XFq( $A cFNx`rjzX!1\y2ɔ;%ۇO Z IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_component.png0000644000175000017500000000071210442562727023602 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_F@IDATxb?:Ȭߍ)]d2Ψp ]=@0AݳGlk`<@4DЀn qA+ ʀ"h!@@8s2 %e`dQٳg3|b [Ȉ5|_32&b( gϞ?wJJJΞ=ˠ;;;Ǐ?Pfff&&Dxrqq1tuu1}ݻw ?d(..f @ # į5M!@!% ,IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_new_printer.png0000644000175000017500000000135210442562727024135 0ustar mikemikePNG  IHDRabKGD pHYs  tIME pfwIDAT8}RKSq|2у-: M%ջ2^dC@0Q|kDeB&^C-=`s?v}{ۼ/YD;i4 333%I-m$ /5a0 Bm1f5N]a4M!i&y;74MXe@ū,^0 p8+Iެy :;;ţ#"2*JKFGGoY?88ȜQ|1smizI~3_E)ab|M-[ɲs5\oJ:~ w¶l8tw 1˲@cZA0cɲ̪j6N1\&A衔R @!׀c7 ?e$OX,V`O.C\E%0 DwPvr(O<cXD> }R l؃ ]D7,7Y(Vp*<1Hm#ΫL&3, Iax?IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/rocket.png0000644000175000017500000000147410442562727021536 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/editpaste.png0000644000175000017500000000173610442562727022232 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<pIDATxbA 22|_=-!***#-1ÌY5>߻3j/bɳ\~a3 }.NG^maggg3>Z 3.}#&"-f!` r;Ý _f! ▒ __{MMk?302g ?10l# ~52e[kTmbandʣ@,>f?_kS1|ĠÅAAA0~a` k d AZ/G{YMJZ(yݢ3x%ɔ{oP668ZG=W|  ׂ h /JDt "4ϟ _?2 tg߁  `fafL l Ϟb@l̓)vqd~D*>bl)Tlכ2 b ܧ|Ob X i .߁^gbbf _VL̄_ i hD1>ba ⿿0g'. p{\? 0m`2""( CgԄH03% fgg_L@|P00 P. #C>0vУj^$B|0Ao4IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_seperator.png0000644000175000017500000000026110442562727023277 0ustar mikemikePNG  IHDR03bKGD{# pHYs  tIME'tEXtCommentCreated with The GIMPd%nIDATcp&A\a/8*IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_new_terminal.png0000644000175000017500000000141010442562727024260 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME ;4JHpIDATxmkTW?;̛Ay &Z(F `URD,H-]MW*tΌ;)EɪE0fT"* d0?ƉwOR 9+Z۩ka4M? әvdyyeP(x"qdnZl>ׅfgg c Fj7jEmVWW{td2loo+vw"qEMFFFT*wll6k-"sIAF {T={$n=Yc Z"R\.GcPUsՍuMN3=RFDaH6%EW~gSڍcr?' Xr1bC܊od<}o><_tx{RZMӔNҔ?`r8 5_e`` n8q4}+F~򟞁gO/_|} _kUPջ:[w: )p >Ts=@u>Pj z z H#OXztM+=좘!!zu#x,Y<'4NSIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_home.png0000644000175000017500000000154110442562727022225 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_netatalk.png0000644000175000017500000000147410442562727023411 0ustar mikemikePNG  IHDRabKGD pHYs  tIME%5)IDAT8ˍKh\eut2:FcCх|v#%P[pSE V\RPTčR*-U"ZֶBAkJ"6qNssg -]l(֦Sj-*/"=k/mHJXDQu&Rp^v~s`(OOd+שb4?|u->H}.'OЊϞc߰c.$^Q2,]fn! }~D!L< ,(XO|U04Te!-|^mnvҮZ.F)=Il8}zbN_oDmIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/log_critical.png0000644000175000017500000000135110442562727022674 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/envelope.png0000644000175000017500000000151310442562727022056 0ustar mikemikePNG  IHDRaIDATxڅSMh\U=7ɛ̏3d^Lh bK!⦴lD(fh7PA20)E:4M4y̤fef޼h,spa94exyIƿ/\1,SCC}/vJeKKt~ż&%Y5С2tJ8ՉLOԧ:HXvp&3HPy oGn. }`33??A^`Dܶcu 焵 0Pt)WT~{ʕJ&9pm@J uPHHvHiB}ưu5Juxу6R R08D^$FDR='%L&Tʂq,,1?_D@a 1_˴`:?W2U.׿u3xtLS _]-_v$R9XHngƍSF}?@17(.nv1v. `jbqViΝOkޭS_Ov,f|W)W_Q IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_new_ogroup.png0000644000175000017500000000136210442562727023462 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "z?LIDAT8˵[H}Z˙+KtLT)JdBAQ{衇 %r./=tѢ*nQ.e-7󛻞"ߟ9gpwq`FktPĘHkTn&ً~Ђ"^x!RFq׋k򧀀}py Ŝcݥ<6% YIkuҼھQt2mΥˋJ$mn:_I$@5§0xYG )]o-k[`B)pLiK.]EY } zSa.d#`P`J 7 ƪK(ԮZ]V(>^Ǡ2 0jpYVNkS)c`n7?;-fAy x MU*ha"08_>(;NyL]: o/`{렭]_L<o&%Wv/M7" "-"re[UΩ*HwLy6%aH'# yTV;$ngY LMN)E[č[#$yIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_new_conference.png0000644000175000017500000000161010442562727024252 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 7/UhIDAT8u}Hu_w{T7Nr&ˇmr)?h"n1VDWe$Mj0h1FQl0M4˦Kf=~7|>/YUzfi1r.^uP 4JCrãW?}) }FU64nM`7f.K뵆t"<0x1!d1vҾ*v~*-am NCA ׅP5n s8zQ~8J[sљ)FmH@z"H C ǩ,J2=f1xD{,sdO4%t"}" I͕ox[&!V8Eۓk8ry`*䟕.beUc{hc׼*5 eh&@ .r5# Mq X_dt"͙0uK**ш0cTkg(e"r.fS@J9w+sk.M4 c;¹ͳ9|tXξ@e_>\k!yN9e6Iw$5U&M~2Pj("rC?~Jm{݅?MAR\F-_/~P+/-́=WZ*LF\.ף]z(y #ڴ8P (IAO"IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/head.png0000644000175000017500000000136110442562727021143 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb?}ˇ6:L@oAOW VV6S'v/ 2| h?1 `a`ff /`XXYlFZ073)gX؀t+ԓ@,0Bc h;?&f X44F  b 60Y003"rȃ(-&3Pbb{j;3  fLrBJai?$@,09nVDnbp 0M0Y 9O_:'abbZ@'361#0Z|f@Iۀ6ƩIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/email.png0000644000175000017500000001005610442562727021332 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y`q g,h?~:~|˒%K~@ŋ ;)?=>>.qq!+W0ܽ{Ńs.3e t^% ?vvv~qqAeeI>>nO~0|i@π+f@kOc0 0Ȉ0ʊ2 BPi/ş>3Q<@4 2cD$89 }fbd`aafԲ76~tr׮]oq%#6n<Ȕd31 bb z7fff(f>~h&..b ]N/x_66V`H ia: /,I7Jڞ?|l%@Q={C 6(CJ B޿Ɓ"4]de =8|lҎE%Fv( #?1|APP1`f~-$$LJ_|=/I8z40m3CAiZTT\gHLd_&n&&FGaLQQ;֧֭[.^*ab=Pz8 KĞαO0A@xFF()I3g{` roB<3 n_6R??/M Qc?"cx8@5XLUUGVVV;.]6dbb9t80yQ8\W:L> @ǿ͉5al^!!m=# 0hPlĖ?>| "ഏ 32Bh==y`o--++ˋn˖-¦  W^|cGf.cd/v)< SO'EPg5ıPbFޥKY~MP+W p^^""v1 wbPcfx+1l 11H2x(c0 5fۏD1JR88XY/?Z(((j滰 @XcTz?3y N>V]%6s%-VE96^V5iw1{ ܿ^332&//70Ty0BfpAfoGW~2/j<, L \<Э|d`4 oP0| N7/1p|_ Ǐ" XF6-k_LO<qo215 @sPHxyh 3Hpu~?GM hw,b֭wbߎ:t[@wŷ?3Pآe`b>@ 1?P-;TTԁ2 ,ase׿Y70v8彰0?Q%* 64T>Y˂0@='71` HUCD1|a}o>[by ؀&I III9P o/, b`0uq`ջC0(ـ@X0 =D9%=/ D;S6mb9@=pӯ3 C p:/(l)`EQ (_V]bayur?10c0A>29#@I!@Oz怟~3|XVr RFF'GNwE `߿7'fϮXɊ@ʤ. 0RA  ,.  Hrã ?e3.#l N _ϟ?;cFvPTk'~'É?.bƄ05XCid)!2A\ >}AJs00*]{pM'O_NLZ( ;'U Do& U&#A`F);( zH,2_ "Њ/^|`8~6_[?>=:uj^B1OQV >:2I3 4aPW@? AĘ~2p2l_ \6# &O{phğ?/OwogE$@,-/ fp 0 70cyAM? +K,,\ ^̿~֗/N H+?eA%?1 A/s`(rvv H+_R70 }y/ ?߿eNP3<{;47W>|`OO hZM4@(OÁ؁%; m0#b)b/`1-$xd`IM omn`584Z G 6b#3`[>!7BɊBS7 lZ+J;72@=/;c@/`Sا~ %$y$^= 6:=' @L7O^gh&XfII3>02p LL l %2$u'PSacgbi !A[`˘ @ْlKg wlzVΠL v AyfdP.8`jgÆ_A_lGS¥JnbXI0 PDgMgiŇc ,ZA靕cFcC+P=H00 ?~+|>v|^C<@Sn]) NTb`^30#8sCAk s)4}rIJy *.e?ӌt$3f ^~cfgCK} 䑹KUzk&h?xC?iX]L?!TDJA{^-P Bl _{ƣC ?;iZ|aQ#9Plp1hG2,ĉ6(9?Abv/THGءm" zIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/addr_home.png0000644000175000017500000000254510442562727022171 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?Z3(d@11 ur0ݽFz"hQ9x8*o3@x%3𱺨-gPb ߁&ΐNAg{  . AZы߀,/0;%m* V3谲0g6c4 bcgwHA bb01030<Z 08񇁗@$ޫf yD8~tE>3|ϙ0;PWyX0KbaFeIr1^f`bd 01&=ԕ \" =cxƠ(43 Ha8 Qu{ 3ŬrJV R "@?3/Ag^`I19pU/080l5Yl`fjrQrg7F'_0ae8ALUA(c6Nvf{O,a1/n W fDs1H90|psacCV 'odΠ ߹y i3rs0|ݲAVA@qn0S1ù[ʷ/akg`x]B]g ̷2 ?0fuwcx**pa<SEަ=7d\{_}h\5b~Û fv | ?c&)5\e0Jf@p-Vn[2{ DvAyuVq b[Lx~?xFPxǖ-W€lBN!}dXŰ=ÜD ùw027Hׯ_ h)aBIc42gd`A0_f`vh п\~^ ?€Ā 1? ?`AA /0s΁  40q3K10gz1+<@A7+@(9',{"Ds3]A\hX @VVVvvv?a (߽;a%(Hc +P B-gde ~y;20y)IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/mailq_header.png0000644000175000017500000000165010442562727022656 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME %9tEXtCommentCreated with The GIMPd%n IDATxeMh\eΝ;3ɤI̤FMZSVP'J PӅ.EnE•l "]KR`6`(EZCM:!3M&sHZ=r8G|12~ܖ@-J+կݱ7}{^l7n}׏va.j$8e& _>nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/department.png0000644000175000017500000000722010442562727022405 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<"IDATxb?%@? G^͵ RH]~~ǗC^_y{h /f]>3 `Ovo|y;Ԏ"Jfab93+PdYSpg2ӟWI-OYPn~?5Q 10T10 200t0;s~ =hzpg߯> +x HQސi  <n~ n!BGBИ/?8g`", -0omgm l@O\|@DŀzW`<(Phw<30|:30?GG  }66`+`lí zAh#z KB/A Q8 O? ?#@,͐lcAcI6P'$%k"{>kͰ hũP&"ـS hY>>/'1 fnJ( . dr ##¡L`#y PЂJ(F`,} { _1 P_)g&V̙}. `w<|yXȞE.=x)iK%`) MZ z#'@.548&5޽Ƃ"4C!< Nh 9PPa` l 7g`cxa8'3 1I p&!`?@3=]i.`p+30 A Dw,r q>m)'ñg@9@O|&oڗY&de L6_@iboDDBAgFw&@|!!*@pCX4 +/`k4 C 6q@32"8?-ga" iXP`|A2+! p`Rbq!!#0YX1kۃWd" l뀳 "r{涙,Pe&;v@ѯd̈ҎP{ pPhA*#CZ ,˯D?#R -28\!zAb28y4A  ,vPUtlC   3$&Xi6HHAB rqfVYPz7` p^Xo!.$@=bG,yP}I%%;‘ZbʇP  l0:a _ @LBE$3Bh聒 d'%h\ɇF7 MeM76Ծ_C,\u Zx=qS dz"G;(iB3RSܗxR TJcxz&sp$ }X T Hx *FI=2AWXF6 CB(v}] E~aI!za`% BA1stǰB+6fh]X3An..'<0N<5ӳ߾|r3/ߠT'=u8 ;$`&Vfȗ|@cL,:R |_oWx/vks?8gh@x,10"`7ԣ!kOCxX_;@N |m!wuoG蟟??<ٳv ,@4ji @̈Bv64f#v>>,Nb?##{To8ڟ? z58A`:M󙡭L(4 umMҷO3, y { `F"8: z[+g`e+th]uf%}6pCC@y9{B:;L\ CVߋ>iEAFuxOGˢ>s濎O0DF35dvL!=T0Ac w:|bsNF, &fzۋYϾz*2%ynfA%/hm Ɂ%~: +g2i P#f Hz]IN^87`/X.#0Bz\ ϰ@xtڵOe`},7C{(o(ٳ@OR ZR\ Be0:A<`;C9߿2U n=&E@Q4O 7 NN)inJm@gA+^1, 2z*YtLz9R&0@CgTe1+2y1X eXۏG{-tR#5Pgs\\x{ ofG OAڿ THY'8>rhHC*YRs@1RsQ t46RfB= ȝ%s^NKIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_new_blocklist.png0000644000175000017500000000141510442562727024134 0ustar mikemikePNG  IHDRabKGD pHYs  tIME1[IDAT8ˍMHaVH&Q((PAPCHRQiF}P d") "e ҚY~W]Cfy EG| J@5 @Na ,O}S,x[Dx&"VN wTfMY0EDD1OGwȯ6C̷e6/bm@`39! @HiXbZ() eN`$!&j;9 %= L:Z,@ 4QptެB˃NwB]d>+HƪNo{!hMS_)u7R=d޳fCti'\{,}SKsS TGyLǏh4PO|盏{f?/~ٳgg!VWWyWx'g&Ή'|7_~_{9=y{|V?3'҈1B ƈsӧO>puС_TbT egݵ٭UkS={G"|/(bl2?? թcBҿ k01#T|g#2F$DUbLXGb\#!Dņ>Y/}SC)ι Y]Oedj2K9ܐg|NӍΌ!BH=~) OQ"O1>P/tXş$1Ơc&s9Q&ZM ΂ 8Q QET1MgшQ`Cug̟8ʀImy{S$d FE5C$$!z1*#,nli ::?V@aevn*@yh}D!$AN}G0Ͻ;j 5VI-38 q9;;9=6YC1!DDQD"hiZz^?p˜SR׮sJ{߽ sa>=>hweybJ(wbKC=0֠ 0ZSzH$"&q=Mak6y{ʚ'sjdg"g?KZfyꇫyy#(|F*m67dY6R1Fj$ܠ>IS-aߣU3ffxnGD-8~ޛQg_q[J!$; $&UHİ=9 E$7/"e =aeZ 2vȭGghքA^xꆧz zJI}z 5FwOB[=\nsl~?8OLK}Ԙly: DĭB>bS4.Fk³ruPƗT`nd;\zN}_AdWn!bc+` k]V !r}>ؤt>u;nO)>l_pmy^,HlsId_.״ 7z6t6zD)VN?Zz0ng>/!4 W6#fDc&cXCTey:35bP$ BG2w8lm{Z;|s!\aIP>D`1srGQ6>YL&ݝ1Df cn>Klu 'fU۷XZrn,aFlsB*$]frGYR9j^{us/\B5p-XkorutRυA 볗jXZ)˗x|I3Ho=c^s #s8gqΒ,.KꍜT`S " Kf0"lv5yUQRf]h4{5^@Vňt* Yf֤Re#2~_?-ƛ+2~dP(_my-p:/Be҆++wѡuqӢ&UXJ Y!-_e~Ff0WY[xup`} 6&n59b )Rf>Ǫm7 dV$1R.vA-7t:=81~C.~-vʽ_,sT\1): Q%o$PֺCu1koѾe㹰B=oW_o;kg/rh z}^> # Ei.ݣJ=*tLQ% ! @Ցxa9Zu"Տ,ڝt @h *AB!@@LJFc?v!f? ?~&@G8+faId5Yc*!! )Cϖ2 I׌ " ̘l)bg!9Y$5 LLHJvĠ҃a(:?۷?3<, P/ ؆$b^S<FI$wv`$! v|T w_?p3· j* ~c  D) h1>p'u9N7KQnn&pSU30|L, B "뗟=WX@`+ #!pgpk' . v,b?"@J,l $bpsfwogٻo106'pf ¬cdf2r0r2p32 1Z1 ,\c͠<13 .N2 b"b[vrusn\^>良<@Lfd38Ho ܬ nV\ \(DQ1:a3S`s10308 3z ((LJ=Ą&Vʵ;!`obFRD[`O86 :`R$+Pllb Waji TȈ kGiU?;w2X3!#Ąf5a G( 2lp`05WT6026@=)cR@[L؀U?#?v8"am~&h @@gE{BrvTb16sp '%BÒC? 4A@OHI1 yX9, H-y%'))FsSUfY9,)m%PjCv3@aAPfbp$J3"4J6AILc@BK! '(/l R G o`R&^1!&p u4̇y,9A3r Z^ 031C@iyBAPH@L H?ifp_~R W`_ ߾@~3NRǐR4/09iX23;L@14%x;;#o$`x  /`(QX@1AY <`HIJ@T&%0uep\=~ ܜL@~1(p= \I`op3`,???m/bVcg@Y HB?/12l@q2(HJ1=GPh2[`c:8NFz+<|VW9| p: abXredP(^  _>ccePcuý +/ VGJ)p- u8(IJiCRpJsFÚ Hp-) ̟RC? ,×O;L_h/T }u78V̀ſ!JTpBA_8=RaH bPgfv&ph3+@3o@&@0(c hbH8 gDj: z*, >*3< n |h#TZJ@n  zE' {>E #1I? /3>6!X%3$Fa!< J|~TBU2J c]_p6Hrcbx#u70b?i2 ݻ> 3/bAn[HEpr@⋉cxOhϊGKߌn#3Q@{9ؘ(O +jAaÍk:tdY8p #tA/yJ)NAfV..&H& F,6)Aw+w],Amo>~XEɇDT9 ԙC#*/HR\P4%;&h&VZ҈mTľyʵ_CTo?!WfpA⬰<p'Á;8{ 0_E? k(~?Ѵ|}"/@· UPl(s kɟdxc36^@y F{׏;G` m  " Aњ+#&W@_hlfM_2ٽ3kA֠ 29EA'7ox='?8Ğ: zZPc#(0>OnОz %h~D4+CWXOϤƐ?r4,=I <[Z1Z^+`8awnj 扁ա|IˢU5s %Tx;HFUt~eZXvGg0=ЉC PhcnhLZ9'yiJ{l ~2 7d?|HF}7o^](:S J?p(@Qe N.~1߈ iy-m u{nv6nn61!v>xF4}cx Wn߾9s+WA@g7@Qu#laa'si9=[^1UN.av66N& }yo|x7.u"H%d'@Q}46XVPԐ mKB5gXK? -$@= u<Z] ./А_`9;d=!IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/branch_small.png0000644000175000017500000000114110442562727022663 0ustar mikemikePNG  IHDRabKGD pHYs  tIME&1IDATxڥ?OTQv<e( 1R,V64XH֘bDteaagf,.*{&9slLۢjׂbNpwR)j]kUeԕR HF(SLQ5|P47Pbl-5 P5a8"FE(H@׋x/YA"D#`hw9,<\t?hJPUDRQQ`M?C| ]@5xAgooNC۝bIA dEDQV%ʲbA/lإ3 eY !w0K8P`vMfcc,@fs_ +t%l n fmgpOXX0+h4ln> '-!*ͮpD)G^ w*J-cL Oe`@"ч(p%=_2ChIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/cutpaste.png0000644000175000017500000000160210442562727022070 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 7J{mIDAT8EKh\eߝoięINJjm1JZ*`-teEE t҅vBR|[+Z Vmj2Ν^.&mq:Ei8Ѽ{Ƈ_oeg.CT$q*5I+LkC7+t->]G2f@4ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_password.png0000644000175000017500000000126510442562727023142 0ustar mikemikePNG  IHDRagAMA7lIDATxAHSqǿmo:ޞ{\c)<]ޡ( (v6A%!V/^6kn鞋|ӗ'Т`8~ZV]55M[^^~);\g<\X,?::B@4}y xF?0#OlfV{{^7a  wE9o&)-,, Zx<. :I(|p8X[[KD"~V:66v$ N'rBPnέ`4; 0 z{{A4@Ql6dY>RU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_user.png0000644000175000017500000000136110442562727022557 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe18~I0e6yCxƶbs^t^NB,Ll+WC'v/BEÉpkUq!scKu=Tx/mlo#0ҟھT0IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/monitoring.png0000644000175000017500000001130410442562727022425 0ustar mikemikePNG  IHDR00WIDATxŚieus}uY !EIT 2,%r "ɏGJ$~X@A ۑ%ŴbARPYHp}y޽ɏzR quUTY'jOO6=}`Æ]7ۘtzy?y,/Z-v'ç+/<5"'"y 8n wIo>?wyw?;b8 WRz}z'nolHN|?ވnIˠH.;R1m;;C8.9^H29Hk o&F&\2w}3OWGgϾ>222>M)."済p' 7( n[H<^$TL@[UuwɁuh |%؅;oO'fXZZ,\pWA{A%1`-13aqpob.T|-ܡr!SVMz.2NSN~+_8:=L*(+7+PKހ+aPs,s#hRw)q+|/b> JUJ!Jwd n*KN*۵㟮ezR-W1QE +,o kI;nk.f&o4嵟a>IR:1uKW;vkL5Nl IAJb KTErKeګBܸ[ƚ tr`<8lXQ$F'5y˂fecF^#9uw>ŠpwqWK]b?##P'mbiSzusG{)K\rUeTU[-ʹj,us<7=B3;3zMDOМ o{WyC80I,//\Yopw-WL*06(dQqw:{K9WWF蕁T9UAJ6}щw&0:¸K[jZX6ԇAD#BuBSӇnPgOr7&_IzEhA:E){7@P<}cvj&?v~ۿg_W۷MD w|'߱ёraނVJTd;cTUܵo͉؅k_}V^Qd4_ͷv!DS5Rόȋ/hϟ׭;6հ7'um~ÒFu/SO9rľoh@0_ 22l"YbTz=,J @駟98qZ,1 ?_%9@@4 ܝ, ܭN?zݙ@T< .WV]1+HRNAWݙN֙HY@LUe>۸K;!ݶյ 1S3q vNo~͟iUn!q͂x5b< <^.]!s?{Kk n[q"dQ~.-CO7nB*EeW6SdA>b^].vNRVzװ]*ȂxE'# ?Lސ+U k]h޶fEVȶ:] ݁V_༼L`dxD-^!IVHdYɂX#L͞-=o3\uTw 6eIu]A10 \}[zWv*n*0~_g{.*<MXPUa\kkw.ҍa`Ԏç>or15*Rq2%R 1s,p̷yll'&V.pȂP'S!]xD`}cEY]]1:Y&Ј+~+<>՟|jkߧB(g}ʝ BOIv^~5H=!dK j\j˔׳N ^A$W>sADEE =~J~ 204fuX记ݨQ,1eܾubuvvUe 6>_;`eSGeVsBJPtqi۷nY2ӵ5RnY׀T({("dYmY1u[_@d+eݶS2??oH bs$"7nsT"YB$,r\c &,f.--"̒$?X1;toW98ZK Cb>NE:̂%Asa`ybbǷi ȯs+^Ǟ'{j]Ǒ#G03$PωR!3{m j *hP3~Sl  J:ovቻ+]^Wh6Pw.8?TѣG)˂:Q)j;uAH j*y) ةȟوv,S I贴4[<ד"k3mV=>b/~_l MbfUĖSC~{3/a:C۟#ϐ`~ 㫉l.bFS<䴙6-F,5_|q:oVkVf/jz۶oiUw/v -t`k\$7(*i#sT@w١c!(=J{hg+AwgSdZms7C<_ӓIV{/"f͜2huh5pDDdl:es[=w=g1)sȥ+WlixV%̮.dסG kog NȁG|r!]\~qtW/ga!֕EQga}BwSSO=uKF̿?26t\<A.~ֶ ynϋϾA.M%*E;GK᷀-?G==596je[rصyrW$f疺W_q嗀sIiu2S jX%un孷;ԯ| d/y7o~{ a:aIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fai_packages.png0000644000175000017500000000167710442562727022651 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_back.png0000644000175000017500000000153610442562727022201 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HK&vӷ aa9hxEܫZG;qwoP?삔̹֮[/_(oz`yw?@-pcP.֙>|bJ@s=yڂ0+ 82a(!,B=嫣 #aĄR}&Wy~)@|€~ØVtQqN׆矟Sw^D(Z_Oxp03; CsXP`Io \к8tߓZ6`~ `BIT@w̝q 9跠Bi%_RƳZXW Q.` 4;`vrP ahAr,6~Db.ZV󒎿+Yl媲j#, 5S+f#2_F瓬[T ·YY+(BJ嘳kzP`0i,@[yYo){}wͅ5w0[)3OfhYz)$O!IQjIdh p!- E(5rV97ЮU+):Xƿ˩`Fnbw_1u(o3 N h!$:#$>⮄-Ty7J(Ak#,$m i X]V›ⰵM)s)} 6<~+6 9@O35̧~FԒщ[(J3fȻ&)&EiSm uGWYhv^ CQNE,$@JOV 4f7S|wW{ "WL4rF0`*eBX)V3G_K;doL>@$ VC FA)eܸy XQ^{r'ϲ诒4vHad3"| x['S1E˭3ߑyȐOaJV$ׁi2=yS຾jX]2{697Gх|kuӵU =ilF2M@z)!-.tt&*KYR'r5R$AN47|`BJ%н ;@#q';MOx|gס{BgEx`~N{m3mu3Y^P=T.EoVj+8vy׃Zh ~AI]H?\˧fA*v.kY#`|A9+(0h*8;i;Pp!NAE 04h0dS4 ? “Ӟ kuZ^s0x|FK)0pYv%M Ƕឩu6+ %0{ d,UCr*A FC!}@9LU%L8FGK;^''džh#ҪŨ Uq$4&,B$)*s@ɂ5Y]@z2qMGI-,D a5uf Lj81RvD MhhqO7tHBM q#,.[V?D19hx\]' MӜOE54%5'ɢry ^ 맟nB9 4e`n#hB 5{9ozޒ/n}kt >=]=]o>+T⽇ @2G0Xy"ৡH\WEBrfx~+ cvIً**us rߛ^D!W6vhp ˎf eV*e'Qa 1RG J|z91;#_w 3sCwKMYXT>`05M*ѭS`w7/ZX]g3@@EEH-S#e^CS:zޕwfAW2.ws+Ju,;%"Ȝ  R{J={u<dzGUMTi{> bZH5C BtU ta1AJKksjگ~R&V9u-~_$҅(V%2З)(xT&&F/jZZFTĨV1 "7Dخǽt`YzNnKm#b@&LLX:OK> Sp0Ϯ@7gX+wdSiKV3|za](Ĉ$mO[?nRx [swg`8ZY|2G\#Nڛ“/~ܶL,yYm^^Ƕ]J95 LY4FȳƇsP'1y EB[>Kxw$SZW<b@ǎGUϘ <8oo'I쾲+J1)JC:hb2+Lx眻OE TE>`:tV5/Q7*p+ |X^ })!-,ѿ 6Ҽ  H[?HMG IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/ldapserver.png0000644000175000017500000000631410442562727022414 0ustar mikemikePNG  IHDR00WbKGD IDATx{pT}?ݽ+$$@@ 6j .-űIe:t8P4k;qch`@& ST $xEd]c}OglzZfٳqvƾo8prՅz]~𩲶6=$QTT|=3rr\rs?:u^TVF.QywǏNgtxYUmA[K^^,/˯@uE]O3h=ᰆz7DNNyyl{55p] PyfS\bتU'.jl|i&CߙDbNĆ,FeE5k^bmtimmwSl<)0cѥ& "x:e95fL1/Sd[O.^?]O<1b1M=&xh39TK @ Dxo[젠p+}kIw:OtsT?(%ݜ2\4%I I2 -(W WƎSihltֶ}Us<&)>?i&F)"HR,K45!@BD!ƌTT4ow jvW̙q824X2JęfrdH,AsYe())m*(..YqK?#@]ݵuuuoBOСCq;U%'CJeG65nmٰ= 3s{}1ƎMAA.DH$MBEE" ;#rXt-99 6g ܾ>JZ%~F$b+#)sa"HܫiZN.vފ5q6XaDgLPIqQEG؋Mp+p\/0 {$T aTɓRS)@$ I:0[oBQ"Yn5MH[ژ=sIdԩBM%~?b!Q Eii9D6͛EP$0nܷx o5MC5B#`zTE0"E^n>41u=[b&Q2Y1XI~c& Ə/G0 0Pr^?/5w'd˸pVTO!%I2ha,GϘ`?bnRh-(E9#4y}l@HP_Bii'/fK$==;0>n %IbҤInbD= 7n-!'']ځ,!%u]'6vc!HE.]jDQ$ewW4933c֭;TQ2p`$e0~fdd8HD(0N l۷DSSVk)FpŒK ]GL8.W;7@v$KСSt:+|rի.$ضH9 h,\8Cfy9rgrpر٢efaZcckblZldf3rpNf͏q8uޯn~WHXCFTlgϡ/o9a/dXBYh63ػ8 ## U%JժQ͊ZZ8vJKv*+W҇'O^}-[ ^@U˻L/x`tidY4۬iMgE[tunWoiMjQJYH #esZy]a倭&P,X`VwusH{%`0HRTi2X,ɱH,2lX׿)Nd٫_hiqvmdB~3(/{׿htCÕ+xgٹso LHS< CB;# s0wv%kZZڧ.Wʺ ͠BfBUv;,Y2[.||`NZ(FJY4c}$279wh Z[۬޻캺^Yp;ke˞-()!֯+$=N0"ŅQU; "=ڋP\{ag4^M|ir]-_h $ _nDMJWP]}ܩZx.q8"gތE8˿&T-`#ފ_s9oiWG.~p(Z86b>M0ChP[cA[:Hǣpt>;7 4#S=XL{r.B@q :•0 PR+ Q;mEre ]FJ5PZzo= iiv>V6|ШC*Vq0;PXM 8%)ltMQh1Vn/x?>RrRV:]^5Ѯ}Gvᇜ;q(~|癁s7 #_j&kO@ϧg~=0 o7<)0IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/branch.png0000644000175000017500000000126610442562727021503 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<HIDATxb?-@XM{69 ~ 4 R? ~}Z@, Cݍ~b`O ߡ ~= 4?ĥ'а_ 47? FbC(@,|%@ FfFпȂ@/,^@, r gϞ͐J0r@ 1}GTP Xgr)VC!|bt s- _8 lA gd-q0  6y\BL90ATM#>CA F. E@ dM`_Ѵ%!f` ,@l YJgj;@1Ҫ &;QL! <IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/gfx_hardware.png0000644000175000017500000000146310442562727022706 0ustar mikemikePNG  IHDRabKGD pHYs  tIMEfGIDAT8œMh\U}o~;I&LgT *]R)XR7-ՅՕB"JԠ$̴8i2Lw߽.)gq,%&''o^;xF"JYQSSS+. K[e@c%܎!kIBdpP4D]>s5>>ʞGHy){ܪ5l$ketC"-5vxBqk&XmM:hVdZY[, R:XA#EF6YF HPeHW`y^{/vhFmZa(T tNkSMW2rnƷq lCj-.n8JIdhp]orS* (O+ )$뺸-ĒFJqxOy(1Ndt㣿2߁:PluOA*lx:xIHBq2Ej |<ϓ\vef}sPV(ks&= ^irw)sɓ\ .'Cg9@#A_\doO@;9[@?f@Āğ?O@{ x#يr =DPC3̬~08 ]W DO2@L M# .;?M% wԽtjP#B8 @ 0ÈP:\IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fai.png0000644000175000017500000001150310442562727021000 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?PD )'d133bUŸLUs);%{W!a(`a2,py×?>0U> *@yI 悆8(Yd,NbSL@q ѱ@V.ui]).r¿T=o>g cpjp:?4E~)~'s-b s8#OLR1ο ~`7? @h+,~'Xxݼ&OT7? ZRzIx <#DjadTֶВl N23gb:ـYH3000,_TDU?3>P??s_Ojw<۶z}&ïwǀJ%"5<*6EH`ß_!@_3hH3*H0%Uf xph@ I'/ӹ*R5&T0x衸r_?% L5W3(*| E6 4`)GZ^?>/_`6 6J|_: 0{M ׏c0F~3|PF@*(_&)u& ^| P'fq@de?޸_7KO12cxC.=H>`fad F~XyY3hkP{5ߠgn" +<}fgo0\x̑K J3\f 5n~zV ~'X :ݹ_y baQeƗgxRfPB$A.0ˇ/@|eg`eee<)o`gQ+υg,~|v $ ""'5׷O'x*xC*o_1|򃁓/%!5Ϡ#);Wʽy (of&/<.`Ҵb+/`A40p?( Wa  3# 7@bl,0Џݻn&@1QДt?0 ncop hT?ؕ?a|.û/`cxNV`P%g`Ц`O@nbx[ˠSL?!bpo+On\znZ2cs3tcxy͖r55~R%@1QE*A؀3 z)x NF;B31H31ܻ̱&/g-xss } ?Z'X luԱ011JE`r+ve;PFng*~g`x(ˠo!ëyIa (e/0>0 ?߾ 5_cIPPPT^^XZZTHJsW|s/ˣ~a 4`{:|/blZGPGr<0r0HJ3*2g7~gexgo?~;Ӈ}]? q[Xddd20s-޽+37fdxߖWDX"&=k ,blF02#@G +3(+3P\00ۏ+OBBNZZZGpp00d*[ @%'}k1y]%8 ]X^̛ 1|ğXX$/v,!b?0=0y7v= *{@`׮^-"",1 i#XaggZp~~1g`fHLKS)G>ne݋ \JADBA@TAg:X?Ë| n2sϮ+a Z} x\HHHjƌG===yxxࡎA >}A;'8Ԏ˰b}nD1fpƆXܼ$v O^S/`n10Pl>1L|̛r u8T Uee%K2Z @ bfU:L Tchfp}#O.1?#u=0d!$+ ıTbT׃Ę!Q @35[J6ϟ?g}6.0?1a  lNq~(g`;xA! i0C*Hd+ X$%%y4ɀdijj{رӡvERd0z0 .`5wTX!fa@;$ 3p@LK2' ۲+08ǏW޽裇 ?ı a%35렴A NVHgDaf"c XC\yC&_  vb63,A#pULZz%dPfftpgB$ JJYU bw#^Hk~`E`L hCeUb(E---pxX1 ¯2SxP 3|^hF S'HPtVtX'߾23AU|9`ջo ̼,#<(JZ27> @LW^=tϬЎ4#jo ~? &h) O: XE7>1\p bfB z<@L?|aú˟?}g(70y| L BE :/bS0ǿ{ӷ . |@20*C#+tVĔleܕ8q  UdN_ LfZ%?g;\<: 1@E fq2 ˬ(i CIAʉpA"͍2,_͕w0s|#.?yEo?|>7n>|/_k@uи43Uʧt[`?@!4h[0Jf8<06 aQ /.^< JKˈrC+?v(! }PR߾}cX`CWWk׮J_gڭۏGC]C_L^`֓ Kjm:wyoo: R;y /]tr"Br 8kJP X1̜9ԩSJ f]ZhgWO=|/ƣ w]vs^X 97@hI:) lfY^1(J Bʕ+ wС/^\ @O3@YYTܚ&N `sCcOݻocPol q̞QU9:2 5ɓ'e+`7Oc; 5 ANyleu}'_ z>A;/ߡa ıA-Ҽ OAC-%W4G20 sġ⿠@i\  ,d u8 ҌE/(eIa īa6_CĘd ơ cY/ 9IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/network.png0000644000175000017500000000157610442562727021743 0ustar mikemikePNG  IHDRagAMA75IDATxmKL\u1s;S`Z"2 QIdhPCMWMh\ǢIƸָ11q4i1M`AR3j@[#S@ {;s.os|'H<+w_=7jۅ0gn;at1̉b,*eS!D,Dt$>1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fai_new_partitionTable.png0000644000175000017500000000145110442562727024713 0ustar mikemikePNG  IHDRabKGD pHYs  tIME   (?UIDAT8˥ku?37;331nT(6]ABģx꥽1b)@ (^E+HMldnffg~&,"=}{?O>rMwcWkl ,dž,#st􇩾uڕ;F XYY}G8c[2[1VtP倽$~g@J/Ԯ+{mkhEŁHq9%<Jɪp8`LĘNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/time.png0000644000175000017500000000203110442562727021173 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@*o*?}ߟ?^M 9{;8ß=p#_ן|O⻋`zԒW6&~6FV0ccc\@ }}P@LE) 6Ro~2|zEk@'@1XߞnYj" ʲ@00pꙇ r@g30:|*r''5O ī} "BtTp;eN =SqS { VE g&FIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/launch.png0000644000175000017500000000235710442562727021522 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb`xPsq/d?fc@xAԪnX?@kYJ00100"PC #r 20c 3| 4t?dzo?o6b004I.uf^&ß[1s1|3` z0 p!H) d`7=@04ӷ ?~d`|}˗ b9  K˪r%2*2`pf)2#?8xNc`ysŧ ?k >0pd@axP=#!Y>qA3c+c`&?rcL@C@1#:hXC"C] w1 l¬ '^K1 В~IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/monitor.png0000644000175000017500000000133510442562727021732 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_groups.png0000644000175000017500000000154410442562727023123 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EoDpxl\ћ0`> \V ܝXI7+(\m`ɖ&c2) ˖&`7PZ&s8k[Xel%:r|'کuI't)M^+V &p>*{ICc)S4T;D?1ih uPl6}^ij3|[\ein/&n5O7DAC\0fc 3P"ڼ2D"#26&uhb2N7V\Nͻ򟁏zC)k/2M-2L[WN~,@Ƃ+ _a/!0'0n;@[25AQb :AHO;[`f3<IM=UvmWe t"BgY߶/ 9 lIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/phonereport.png0000644000175000017500000000606510442562727022615 0ustar mikemikePNG  IHDR00WbKGD pHYs  tIME S~P IDATxYytT}쓙,$HBB ";mŠC-GN r0rP"-d1$dO&ɬ{oH!+s=gwwOu\@Hn+i(_#}iZ^5X)ARw9QPHl\xQcb;󵸑.? BAևex:@j#$d0 |6gt#N`CTT7g; @.IۺyQ D<(G\V*Ϭk&+ C8`c$0g=P{%@0l$g1!@*}3R=kmI >ȈyiL2 IN_Gh1U.<6̠-"gIp!qJn WVxFLҘiLB|{HLNV93SGsbz Oڤ[ WN%׾F"#Rv>qikso Fw0=8' ܄C/FQYB %Ԯ.e@ޗ.x#\Sh ̹}6# E\`@ƈc}h\D"cX aФ H'$kz29jϙ-_ruN7G;e)v>Yso6ꌵveeQ ;0/eC)MI9K;d6h.ʳ˙90JVꨞǤV>iUM}'vlsee(yt:yO˟Qg`ʥ=j0,Ij1GUB'c^Ά P<@ 3⭩;]^.(>^J#5 3{'HC?L%@^ԭV6^:w tOޡ 5`D&)N<45w ]־8y;1 }./eD:Tϫ{~Ck& īNpa0IͱM\Ȁ]lmR=&W2Rot޴!Hɜ%X-Io%)ï[sl4!yvʚF]{ n[ @M~$B.ʱmE#A HO6]pC^a23kC\M1#Q7)> :𯪱ϭݿ]ˇ޾a& "({iW-͘?z5WѥעirEs=nؖ[_ƁXIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/password.png0000644000175000017500000000636410442562727022114 0ustar mikemikePNG  IHDR00WgAMA7 IDATxZ{l[U߉c'N&4!%I4:TΪBVHZXUbhW V,J)1,mC m]6:IS7vc;~_?an2+_|;w)?{z/+++dX8#tZYXXv?|n Y\P+mڴ驶_vttU__bYth<ED?xM`v8q055E~9X܏h4ѩ)o***~o^ Y ̧~J^/ٽ{m iZKggClN*|7Bp}вZ7Zl \'<99y%p+++7ηp[ Xj5Dǽ«](JdYFh_/l6 V jE#@eU۹033s- eDQp;: 3s3nK(\zlKKή6r;r6UY0;; ߏD"ՊbX,=}l0bI~X,֭[a4f QA4!p:jx<;v"f3 "N' hF9q]qƟKEQ $IlF8F<""XEKK F#Rnܸ T EidYPF; k"@SeeaC)B.C>(`Y:V|l,aiȲ Iqb!y,+WC(Å8X!K|_Qyr9($9˲KsX]}x2 h+W$ %dP(HEQ0\.R @e $Lh4l6JKQL&\.BZ j,_^YKg"lou dYp8d2 a0 (»;:99y 9PV~(ķ|>EQٌxMe2\*X MMMz8vcXmL,~_T*ݻ( x,cf80K@`hhs=Nk\SQW_ut)f2, e199GE~K)`0kϟ?pM)K岱,QUUU5Mr(*144PVd2sy|| Cף6l `=wvc{d`r|hfffb9pȑ#oZjVwttfvD"0)vu[odzik]],0͘&Y0 v ! ͂0??2Bهxƍqa"(P(@R!Jh4[7C1Fb)PTKlJ9O|b4j<'b),AlH/uzzz!L/]"! v8NH$.7?~ǝ<(s%t…wDW#sydYgff8rJ%2̬,LKK.QAQÇ]|;Aw^z)rN[uXyQI('BcIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_conference.png0000644000175000017500000000154410442562727023713 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  (IDAT8uKle_;L۩NjJ%R*HH0(!!.P؀!. wF7- $1@ /rZZt},W=IN>W4=zQ@fz~g_:ؚ{rOԉ$48z t+2AcRbj@@ŀ_mB'%!p uJ2U,,. (NOwٵcc7JbCI74G Rl'pl}2$CЮ 䎩P Hhݒ49'T4T.pk) n 3Ft 5c3/J-m 8;HOQ& -*.ws }Q[k ~Sl:fdd㑝h lunߘы]Cou[cmi%g׵e]9ױlr }L]z~ӕk;^M}agzJmon _i=jlz='IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/logview.png0000644000175000017500000000651610442562727021725 0ustar mikemikePNG  IHDR00WgAMAOX2tEXtSoftwareAdobe ImageReadyqe< IDATxb?PĂaddK䁔V₻kc&҇-:Px12r 2q3|w@ቤ@,TU   < rb B ¼ \ [10:eR Fh!6 H@r, @ 2H 2(H 2h 2*4?A ;k#xd$@,ʏ @;V[YADA@vQ=$ 2 1@,XG)ء$ ."Ƞt(/0i030Cs?؂V h9qn) ,x7 &0dyb#C`ŕ@1 /_=@iŅ[7ýD8~ɵX\ΈD 7 x =- 3L&f3&\`:9F#ǒl`4(Dx ) ]T.?t~tBb.q4f -ƃ\wɘl ?@CX|ۇ:PB 3#򫜢P? r6@(cE߅O> LF,  ǂ+V_گdENH Q !LFLǎc  &좌>~ 6, $oDG` eB?gŞ@jA-)r?7n`}6},y~3 3`cd'j3A2#|Pq4t402 s`a#P&0 CL<햁+2 hS9FP3/HTDg' PbVmҺh'0RxhC12͂ge8 "P2'#|rrrpFv J|Ov0fZ?z/$`4_A+R#KJ1xy plj?! 6)@_?~0q@Byt&Pb@O> = wdb7 &;Uh^|$!l L q .:ـ Rʌ\@ÌЌ(*͌X=@bz3$/|fb542#XZxcpI + (+4\'N 1=`P} /`y $'=M:LhIZ$o'|@Lxޙ/<} lO%(1lLO 9 s4# s 03]x[`P:86&#`$aiZqh)ꁿLW?0<}$Tb^= pX.70h,E ]h(<ʸj`%3W]@40'V &8|dY` o |,gf;)}ꃿRx^wg@7~KȠ'0$$ò~Rm".7^hzX0e~:l@?k_f$O_o~0K< P 0+(/V91͈wx N0](TA%+ؑ y_/}U *,1r \83 y_|c{Aɘk@0|ǯ ? l₆ߙVRAAMAZ¢rME~'_^# 0_a`?F܁Vq ϟ~0; | 2L@20( r, c)0I=yo I  iԼw/ı @ z(?kA`,Qo~3|>cx7?P=* rR:? @DN_W?pe`ax'F|a،d4@ )u,4@5SJF~1l72\?$tX tD(c P_n`@IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/action.png0000644000175000017500000000061510442562727021520 0ustar mikemikePNG  IHDRw=TIDATx1NP_"@D마"qV$ DGJ$.Q(S,mN"E/&vT湗.@vb9B|k-݆hkj b .1dyZM@:`wF֔ _)UgULC7ϓ|b;hiBP:Oo R.u>,U}X^`Q=/Mb· |!d(5 8gG\[_EuϞ| N3#v~pw rd@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/memory.png0000644000175000017500000000164310442562727021555 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<5IDATxb?% X/^ 3@{UΛ<՛@, ?hqpE)+ˇhh 2h+ DNon:{ܿ8  f&66Fzz" \l ’jҒ2~by=  87F!I 6vcçO|l Fv_?{tO7|_R>#Go ?exû78x$ 9x<z_=@13ʺž{pq~I%!^x `dÿ |B¼?~_`A +&' 8DZ!v] 7w10K2:3<~Txxtud%|A̡  22)""!&]AWN!0.(Ӱ@RO"3H  Af<+ֶ%4ơ=r6;*ɫ$tt?ן[}kׯZ@A@heGݿ F?Kgbb2Jq`S@H#ׁD!! !&bռ= 5IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/dfs.png0000644000175000017500000000707610442562727021027 0ustar mikemikePNG  IHDR00WgAMA7 IDATxIu;ͯgMR(J(KHaYaɒv N{Ehc A b0,%E5$fo{oH&x[uιCx⅓9GD|Y ,9q[ozkt걿>hs J1RB H!B Pm)0ۯvz"2ns?W/~=^x 7Ϡgz|S&j8g*I9oxQp7]WJ1 9&&?=?Z\|{ >Ð`RBQUHXa-Bx`-&w:'%^v;(IX17{PJV5΁s1.\GJHHHQ|dL0$ #q4eu>SQHz!R@57W?賾W||*QFiR 5z88Ͽ봻]Jlԙh PB>ĜuDqɽI<_&|"yZ* :8htDaX 1(,pDQ{RfZr+ $Z)T>|D)5+F cƘDnr8C,[vO{rynHQB!r|hMsMb8)iaNRJ✣$:4';{$u!%9nvhwH!Anu-5>1XYq I)p1EhV80" :]DDz)Rd`q T`(%h6ժaX-G:LhoPVj| s4˽+%,'bԺ'6ЕjV;ZcGSTU.VrcR /M3ltJJ0 ( +ZGI))QƂԊv.j48~R dyeqk}CCM!"%8p;0 I> A{8q}4j51X-p Qg :kQt0= (('&:)Wb\=cqiٙij*5c꠵fu}ha.jCfY9KޠnSUEjIj_ @ҨT5\Q>iJR'q]PR qG BJ0XZޠ2?dY!3c,y:]ɢj >aeF`P9\q@@d|eV_ch4_8Y+Q.EQ@Avo@nYQ7I!? iQWم ZCdA53Ӟ KP6;!ZIޖ=\G ޤ3X$S3ahM*wZ>X*Ck r` Xl!}/YxXufL% 5Ҙ-h4<3foRJU w@zЁi6(̑b-kF3%ZoAf)p[-Jq[γ"tn-hwYpf:0MV(Eӗ>}gnRj˪,ۂQpѼt^>v?sx,䟻hD @tvT{f8s%gw*~apZt%$_K$ Ǐ!3|˿җN XZ?^\G<]XXع' RV.'6s׮~ϔfRkkk!W^yN.g~^ o* }C@)77\|,9̅t:m@>5yɹ9鑄a ǁ+ p.,,,J/:VVn6Y[[v{TիW2ccc[m!Ib\0[J;\@Jq~[Kg}]r`@F,/ M;lltX^^ųa|C̾(o~{ggY&Fl$~_ce0YZZn˛jM&IH)EMTvlj]Rcۼԩǟ;|Чܔm۶- @=~׆t؏4*{ \-3M% Kd%"IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/help.png0000644000175000017500000000216010442562727021170 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?-@FFF S  A > @z#I <|t #@3hhPS=30>yy==&}}߇^_%o@C430L@7 Ѓh3@GZZYܺ ?3gbwڵ@=0C?G`G>) @2d&@ y4Pgwg6o`o ]4f0@1'a SqYY=~qϟ 20lp4ځ.- V+ -P- @C@%ioV{7ñc Hd ÷ @k2p@SH xX@D7`:')HX~kZ?w0A(vh@0 =;ľ{?3pwv^ٳp_b``0 H22 b+W2 ߅ Q3, `.f`S_i\ ~$;B`lk a`y60ILd`&Y 6@1A[~bO0 d '2)l e /4YX]$y2#G i  6@b`&ɉ-Pg`&G99`Bϟ pZxǏ~!aaM?ZZ >>ɓQ_Al,U &$߂$bżȦ],v%Pw2 0R%AWIAB܉>0kw? CK7Z/RK@VJA9`C#C䃑o3ITh|}$ߐ#%7ugXR8e|pEpLr܎wҭI I{@;e{`48fp5b԰eOeS.`'Iz$eEFUa=0 ކ*Қ4+dR}1Gn ?jH=uG@@ym +5@32k! Us DU,' `Oib@JIP5hM:3S9Pދ'СT}oju5&~ah{=vD+!@]B"5T/ez&elK_&6v#>x  ֑A&x'N3_hگi`p{ n_`'(x nC(Z͍WUow_qZ;A)趲{uk38yg<߃j)= Xr` lpLp/{~o1>dIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_new.png0000644000175000017500000000120210442562727022060 0ustar mikemikePNG  IHDRabKGD pHYs  tIME3t IDAT8˕KTQ?{Qrpe  nH\-jE E@Hj.MA YH %"5{ZQ4/|^{ν Z拽>Gc2btyj%{Y2VŸǢw#6\үcUաVUn#Uw*mfp?}4X*J5w(H?<Ɍɣ 1*m)?5zu}kZ9Iv^ Z%lrQ3I5*f?O竩M7g o؝[^K4'N-JP!J$tRG,w|JX￁r@t FIQIV2|*f'%*ȮkZ潨LݒT8V¡å{WUSffTc.3`jQ\צye6 ^L"5舺^K8Q͇4U 51۴TΆ'7fECu5_#$beO0te972F}8ԏsj5vC߱;*i@O؝[^K4'wץRM( kҩ}`~_i?bwymzU/Ҁ awKb. a̒9+k䉨fGyv|kݟx1kݟx1g^ag^aWzWzv|v|kݟx1kݟx1g^ag^aWzWzv|v|?gosa-core-2.7.4/doc/core/es/lyx-source/images/user.png0000644000175000017500000000620410442562727021221 0ustar mikemikePNG  IHDR00WgAMA7 ;IDATxŚylWv?;6^`6,Hdit44T:ڪU۩W]U&FQf2$Q'd!CB` ^?~F=W;s=&WֳFW٣ v*JJŲϤy#]9^\q޵V#&|=-I4وnc(3-_\G. ?f ?77U'zo{$?Vg~G^f1mq,'Ï<NS;Yˮ'=C1\?]!B(F9d/b+SLNV[|_O,j=ƕ ]_e?%\׌]c38V.} U.pz$NK(*3oakdf/@I>IѵfǗYwߓEB*٥eZ%r%K̹4rǁ/ϬnήMw1pqʋE\X"vyhG>RR:w|0\-j{سZaY|ϭY@* ,L#=q TXۇ2xf,5lbU8ṿ{uŽo ? DbaD F`?'TS/.srNqK;:Vtcփw$D( NxiƀZ̯ZWyϽy޺p8QPàE:'3_8p|'=&0⠆"je~z$(珽žp(>PSXfV7f7&pfP P@׈3Wx韟y?^/ٮX0"Z0葥`č8 %@sY8ѿzSc8@Ez h$h0z,؈E-p?䫯 `,57 N|n#hSljH pYz''9;u)ʼvqT}<ȖF79anca{ !B HAbI\HY遯k}U^,ke _:/v>8J[JW4'wnr#nj ?\H[n!%f@$!kktLN36tvޱs֖0(. A 0"Wpb/=l9* 4 8k̤Eڱ}`h?MJ{g=Pm-*DBIssr)a5 TjZ)wW?zm|:`A E^|l̺}H)>wu +Źta/@C͏XC u=>ؙ9^{7C="&y]_BłD]J1{~|͎ڸ.mڳ9ՈTög04`[gf\Y׹z0 C~07@[ƍwr9\E{kl $JX[cw7M `h pYP  eޝ_)Lm5+=дa`n&MasE|װWϞUJG֯ eh:CX6BEP*g0k۫ m{v]0 ҽ*~uɅT5p-Rq89i^;RBwO#ql!HWkOOx"CȄ\fSiT[, CP'7 5eѦ;;V B0vbi*Q.Z&2-A~Jf /!TPh|_ TҸΧ#TA:]drbyudH]ʕ{r1^B!J+ޚ6ܲ\R Qu!7tGAU|]= |{ߟu첝~~|J%pYZ-ai}mi\Agg1 UYZI>Y1>>ٳs:u>57w]STqĬ NEId!cx4놩iu)},p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/fax_small.png0000644000175000017500000000142310442562727022207 0ustar mikemikePNG  IHDRagAMA7IDATx}k\U~mqlF &TjD4PDPp#ؔ Eѭ !l])2։|ܙ0s>]Y^xy~⬭}Y:S@\ ^X^^2a"<<h|JucѸ~wccFYH)QJJ<Pַ?yZ?0AO }FÔa2L =zݔVK;$I{eee!I8&5os5 O'Gєxï *EQda~gKw-`c}3⽆4osKweYҚ0#5eY9BH9;Th+(Z#,'(Za! }JkvVc ZYӪƘ+5ƘAcDQhcRR@V}/.BW>RJ<ϋn{>;;f-Ӕ`~?PoV8pΡ4r||L$ςv4w=s,c'b| 4#=2c(˒_i8澨z8?~*ty~\qůTi9j2 C0R\ 9GV#"Ӹwd2) ^K/b{IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/search_user.png0000644000175000017500000000170210442562727022544 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  &yAIOIDAT8]ou7ϝ]>:ŶTmb1hc1c@@Ap@艃áDF#814Jj_Ȳm!g}t3; |M_._ʈ.,/޶lyOW"> }wĕ.\sS<o T%MU=WCg؏Οli/X.npӅ, !h(̎^K~Zx IoLsGMjrV ({Q2 /B vCM@{b+!l<ϰ0pAb>S H"*!tX; >i5ȜJXp`kjyT/55s 8І Dnm*v]  T`S MC~[ؤaA`#F&Shr2zynj;u[ktAx=ƎdD*[Pܭs@Tڒ ',N/ +,X0( 5X ]H[b C@nc̦?PkR*«TXOn1<= L*Lfiv3SJƷ,!?gUhi|b=>mod,z3 Mlh9!n_a;d[NEՓ 0G &EVv4pKw< x$.Y Pcѩ ?kxOPWgQrVM>Z[5tcQ7?|M#<'5i}yIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/display.png0000644000175000017500000000133510442562727021710 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/posix.png0000644000175000017500000000776310442562727021420 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@PÐׯ>}ӧN>|0ƪʯ_DRl@ׯ߽{wﴤk@HzQR\ÙXYY@d߿a  wayWvvzzz3O 7P?r@d{`߾}faa1 ߿ϟ?4g'O2\x񟩩&UUƙ3g^zdY8qbPLfff>aaapď?l<0& ##ãzΜ9ZD:;;K:А G޻wѣ o߾c0 Νc2w @+> "MMM@'prr28991bUrU^~ v((ـ< fÇ0)Ȩ2et@P`]&!!,I@w$tRph= W\˰rJ11˗/?~%&O0BCvv4C?010mG@ŀ` r(kjjތ ĸ Vd3f߾}d`J x4 ʤ ʔ 2… RAYY`%}AEEV嫁La`>h6(Ad9,8Pri޽{^ NJ`E,taP`ccc˃ްawAA;ˈ6@awwcDzA$ȱ A<ALȑ ٳg h:y `4ݻI@! ?q 0DxB `!*_| /ae; & %%V2afߺu n/777éSӭ@\|@8cXFG5BXJ"""4 19ׯ ff@ qd""cOO v6 ;@ l~xr/l Ѻϟ?7lL 'N0C |XX@m `y \ "߯ l@ϱF`;p,;M=9" `EgG;qy pz͛7@ XA*&QQQp,UBjbb ԌxXYc4!C>``xW. @ݻ `+yaaP}䉌wb_Un3<~ATR^z]vKX[c^˔3(j2(+);k 3=-AעeX;;;pp9P~%3^^> ~(s`RR_`.6׭[PQQd`\<PA,ca +8-7 ]:$2B%//'ѥdOfbܔc =`P%Lg$j>+cy{U%T mBk-|I)QJ]w)PAC X,lPaM '~]?|`;X@oܸ?** l` `@Һ y Jc}m@ƇE)V`!88\2/H ,"gBpP6\5P2WBBB`A@+@ Ądê}dzyy1U`MPb~30 #@T3+(  5= dT _k c`9#@V&u5I\szt ́y1 E44cx@J`S\s0. cÒe jV*Fccc<,iJsh2z Ġ N ^ @, %0AM0G;,ZAE?8A`GZ0 kK9pjW|:0A ?<JH @@|Z/0CE\\XZ,ttti20 Fa=3d#̇efP,P@|OA51uP jZ hj 3` t:A Y k"â9 BdO2v-4? ȟ ?@ ~q"@Evr@棋!;摓rRa,BoA`R< @:4N9q(ؠа\z {d >&'ǏC> 9`ƹ ʣ,+"l!MЇyyA ˟@0 3@5 >r:EM9V<2̱0Apl9p v`9 .";=:̱9yw)A NGΞ= oA#ܸ @x;5 4xmK0#װ"CN60'AlPln}0@,36`k3W`D y|i1j[6o|o@Lp5@-urbhP \I8zA/Mf 1 @=[-*Z9a2r%yc G2+`  |F3)  :+&&6յP /Na]APM j,c†A8/4/o߾5ƍ뛡͛gJcw#+ߧO>VFvVpwyA0=; #f|֭>| J:w@. ㇓zǏ8O<\l\03<{p, q00p=JJGg} $XD2J2 PGaW?n|w MViB3]!?%&f6` RUoˇ q0|9 þ '{W|ڛ @AT#/]#G.AM ?H2l&'%Ó>?߻w>1 _b?ûy_? un_V`Zv঵Ms/@6Ĕc+?.!c}̳?I1ȶdL8v\h0x| 8uE檹YkdZRV߿WiE')}v ߎqGLM4i7ڹ`iA%t6Hx<ཉ^yɑ}&Cl_kJTb[vx~GHGI#s$z٪ySl(/LٍzWeepOTBXY jR}z^.P*xhyݟ77݂ ivcQ2N_$@bꐩRDRV5,-k@pwȅJVR@IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/personal.png0000644000175000017500000001002710442562727022064 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?!ȈW^M? )#77;3пׯ߾|㇋~?#_x׋;h33&F (';3fÛ7_ypSwڟ?_ɥ?.}TԮafSPWkQ4ggc`abbï6Ar@c'vn;s|6 ",mT8}_@Aaifg 012pq2|a ݕwZ=6p Hf xy,?~?A1 nVg3,_ދgS?~9whdOr'@uR&fF֖1N PF`h<$> #ĩ; 7x_ozH%U@R%FCUۯ 1201Bx'v':q?g,?IYAE97?dyχ@s@ 9$D~o㙁3(3JmDr`h 3xopr`xpߑ[;ǣb,@%d&&vr9f} Œ@I ' lq80X MFNNB d`a`V \ēX6cT~6"pUS};Vp_&1_ J?8X1=+3ȡ`O0c7$)<,}wV)>Ne7>@Dy v_|g`VP)d1ʠ&åL 0K29|=6# w@1M@j5@  GRbbd`0nAVT37_3;74ـ<dI> Hl*@A~"^ eax_,W&?sn.6`@2= 5&.`O f}X `f v(( p ?10c_;(`&c`̐l20+0P]0Cˈ2{b̰#ã}!ad N6g&7nV`lJ03Hp3ȲtBD>4yZ2sZ3pK`R+2p,nALv5Ea o N?=?g}dd l*'s3212 0iQV1av~^ ,Tr@g//\X!ϩ7efc@ π*: X3ha0_0Ԓcgl @ j123IQ?2 <畏*1Un5r8@9 l | 4> k3} |kf/?ςA h!(0@A1A 010o^N@z"{ax=1l1ԡ@6L, D Aj@|K JMb g}t\BcLCBPr8 u0 YS׼u@ᆫ"s~c j{4 >0F*+C̊p8|Y?q=ȗ@W03Տe5~07v 1 IZtC b 9ϰ=ǟSf|/Ba Hȩ׺`[⛯?QC&$ w0LLHb?|*eZ݇.yr@;* -.W^BЗ =6i%#X??yNvM]_ ݃wbDɸ03mސ"%@*vf;psئ˷~0>zO_%A]Wz| F G@toun/03 `3Zϴ9;_a_@/Rƅ CL&/_v_`ϙl `擿 _\t`KgGOZT~&5<0ifq`{?3KGH=\H1+ᓒxW_dӣGw*y (̙!$ ..x"m`c`Pag`O |kNpB%.w `u? r0 1𑁑_&9n`_?:?(guz1&: &Ǐ߽q;4Vߟ~kXX~{c߿$$啋 AyG_"D_Qi`Ơ߇w ?d=8hANJ=9hcTPP-*auD&N\eZaa>H(TEղo_14 RؿƄ0yth@${`ڴ?~luqq!hBx0|>P1F>o ** qu/ )y HO:$**l3CW:/Ɋ f`avXrp  FPXil<<4+@E-A O Ϟ2 ؐ1 3XpqM"%t7x^l`r8Q l\Kfg8''0-ȣ`O0i^55 W--e\ĸ H? 1qPڇ<(iBXع88?eX  03 pOXe&&"+tşBHAq8 !  2ݼ&V`aXBYvHbAKKHD~o@K!9..vV`||6 b 0?ck0 .`˩ۻkB33z )kX/i`Il9XO3| q0#4>opaz w@nN@y %#b!2倅(A! 09P;#&`^2yj\?8XTUUу6|{"*k q.P 1Xҁ84_ ,oL`Laf=- 4`1 fٌSQ%0f(0PK+ݺtEWv7$rS.5_%-mo0"GTvwub(B!Ԗk$N#)M1mf+ bYbg*wNO, 3DࢤKGP" NIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/system.png0000644000175000017500000000604110442562727021566 0ustar mikemikePNG  IHDR00WgAMA7 IDATxŚklu샻\!֖h&EǪTvbF䴮`8 5 jh (RR!AQ)CIĒ[zR$9Ę&E!.]kfl%%r.s?R0o/ކUWW>z9q#G-г>ǎSSSZ))8qmYVsN&O:th%onn~߿Qߣ%IkK/MAkM8fXlO̪~0011A<GkaxKh^kL5Xh48I8&>Zq]xhhp%CGG\n@B~[\|_{X֜E|>nݢ&&''QJ8b|lݺSNH$PJ-SA Zk(=dr'eth4JGGGyZ;&ϔR.ZS__O0dffXIK477j*7 !(5Xa)%~T*uWid,i.R"Lb}L&qt:M"0 Y0Md2I.fgY3055Ecc}ف\BO** ,_r)vPGKe^v/!e[Ⱦ%k0BLD)Eww7 Zj)6)%xRz$,b@JYkzz\.Guu•{Rg1==d{P){*bppH$Byyyh1Rܖ@)UpהR$ t{kPDq0nn0MR3)Ӷm2 m#XEۨai e›%TA!U@1[0@Y(u:oBl.l)ẁ k,ŀ7^\mFJeYFk1-P_!>)J(.f-}9Ww=RElf!n@ok9irZk,Z/Pju^D3|\ٸq͕aX,H@A>n^/BfYHmc JN ZZZa```y,,|q!{%հ_ )6eeU1`@ n&0dǎ:eW.^)KɫRAl|%>J Cp[ >D\)۽X,F*͛tuuΟE;@{ pbQffl7&0MVOœ!t?h,7EeeeTTTP^^^Ⱦ[T *E,f&r tD#e`Mp1Q*[gTTTy|7z|SRmH$9p]eˎw @qh`%Gahh8Uo~v-l6U]]W^y{Ν[ZZZBuuuYfX6* ǏSu4-P4Wl{1n?إwy8t:f_5 ۷]vXECCܼyy6lT*E:.x&Yƽi Gj~&6}6l|ё80p<(mGT o}K4G45yq1z>"8yp'99y;B(!ݛ:mA|y *+@C9πiS ?_\?KÕUl 6>`%,gBi$uupf v?~p5u'4wjY硭ZQVNʇ !|Pa8ys{g7Ci)jFG>?`/!OZƼ|-pt r( zw=NonH[)P 3d+W1X Y*`4O >M(L3>cퟁ7a. T *Hfa<uXN:{{_}6i'.\J}U2ʊ*Cf*a|$>MeQ)ZSg-ڀ?( * u$Sl|;;WGy[!p\dQi5^G'wV&&ӛʂeU}g"2)`eQG?8f׏@+hm]_߸nH^B@aLL]ٹ3 S='iAUgtlo W v4lFΦgo hspRmɳ*1"&L;-ʉ7>BIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_new_group.png0000644000175000017500000000161710442562727023306 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 S/ < 1hK05ovV=]!6y4@,w~d4e6_\\X8`axˠTH_,@Fݷ q-̰K ptDh,q 7?!s.1~/}&g+>3gzGϿ>2|"K?e9SA[?]3_]](00bp{\1?ߪ&=G 9NofZ>L <`/Ԁ@|Cf/}gb`._"|l ,~9˰ , R f`fcf8xw_ȁ A^ڝ !;`  5QP)2~->&1AعA$D'5 G'=6^3M&:EA '" 8 *֠ݡeS ÿ$E|{W ߿gbg)'$?1~*PWX aV( ɠ[_|g`_0B k _1sW2###+%`fd 0(b;?r'/x\uLY8Ei;;+0%8~;S @X=tkGo6`"y>f b a+Rbucs3,lP ˀ\ S^s(jvIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/edittrash.png0000644000175000017500000000126310442562727022232 0ustar mikemikePNG  IHDRagAMA7jIDATxmkQ$m#iFԂPPpEą݉"p+ѽ FDA*Mͳd3̸psֵ=酩1B2>Ġ]oR̗OW?EcyxQPCB*?•RQ(|0]`@8:`EMvI 8,^W kK g%p<ֶfk7JR! b@WBF AoH MC7LC` iPkPV%KQ4 #}v:'9`+P \W"a`:UN RAɂf34Mz˜ab8U9/(骄d"nbقj*C J G[t@1XKoө3>yePؠ/ /r>c?%>X-׭@` Npjihtn؇3{hj~ĩp/?}o| ~ALѼBIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/editdelete.png0000644000175000017500000000157410442562727022360 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb勏 w>f``cCL@auv&7àk00?dx9++éGjb`y? _c`*b`ݻ-Vfff6B-;~`Wo2Nb`߻Som3&1i` #\ @$c`9Q;wXd->YDԓ@,0& .O3دnf`xᷖû 5|a&&p4@0YX8b`xo;P3#,! B/œ;+^dkd[ aWm@qrAmG rdo~E&3|^k,| ̯^120z ^0sb`tc/+~2|Xkz?^abknA>`)V ï^ +J OuN>dj6?4gs531|LP`^nJxIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/banana.png0000644000175000017500000000142010442562727021456 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/mainboard.png0000644000175000017500000000141610442562727022177 0ustar mikemikePNG  IHDRagAMAܲIDATx?lu?l/vۄP΀Tm,C2Db KbXUtCЩ"(C*$D(qN*d-߷WQz'_4RJLB,e{/>nh1uyuKп^N_'$Ďk~oOX/ z5*8<7&>T ',*Kݻ4u (sT&u%uIG1#,_ۤZl3l2_q0 4v_gInA,++mduȞָ#,UHKҹWd8ż5Ki^g:"F~ wSgE«,Doһ``_f1O/Sm`` /E@M:o'C0kB&^!%A*`$A||v˨ua=HDI^D{qEZkU. iS{;0ګIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/mailq_active.png0000644000175000017500000000107610442562727022703 0ustar mikemikePNG  IHDR+>}bKGD pHYs  tIME BIDAT(=KHqfu`5dd$=@2ҥC:D١CǂB@D EKbkMuݝpgf?˧ΫP7=%'CDh7+l7M@QLUE? A5ǩ PTBD;0 :mX=gڜ.xu b-}@?*W{"c b;!;]+`8 I+dFbe$VŇ] Zϟz!=`\U<\r ,cX)ߎus,mG^k)C'&-bq4J*ؠ-wkʲJށlRJtY^חvfU8q')u=۳-qIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_macro.png0000644000175000017500000000163710442562727022710 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?% &zA쀀_|ygE/1225, w|c_|`k?y鿟tׂ"``e`0ǰxb&̙3]@, ͩ g'Po ϟFwGv/ Ƿ/3Y5ASCh0m ?~|khlld,**/&&PQQ@0vgu-M_>p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/login.png0000644000175000017500000002247510442562727021363 0ustar mikemikePNG  IHDRvqbKGDn pHYs  tIME  b IDATxOoXqڢXHj1@2VzUpq\oƞ78za8Fofqڕ2.\@(HBG}P$-<$%?DJ _?sf׿* hQ Ի_]]I? >F5, N2IG10L!X3fff϶_X ߵgFvs>"f5U`}i)wB333dS!b0|5_X5*}s*e$WWWT؜:kquu%~0/`Xgggf kJ$D¼F򋈥-_UUѩb +~zf& 3_ɤq1+Lⳋ Q e"I?f7p"T,ūFDl"0 #LEa"t,h=PDĚԬW3bŧl`(bGR;H(-ۂc+Q}rE+.KA8bk@4\W2bS+j!5 &B\8 &Br&aEl)=8V#$N+wnhO dElmi6zx @PBݴ7❭; LFl&o>l[o?ψ1`@QZ:j\cb! )֑m㕳4:P bD,RHA  D,RHҾجۺ;)ZH, b b@ ")X b@klERR\.XHert˘ɴuTu͗FOƂuy8}ݚ&QJLq"[ew;-W`ֹ F5\{78ss<>F/bgY-Y͇O-:B껍YMu5w;cS&Η+EϦzORkn__&'6`q RHA  D,RH^#fXH LQhRRrDe:5woyc"1smu56!El9G"1Uio2FDl[ q XEQt[d݊b`P߽-!-ǟϝrY/(Wrz\a~еY-92>6z[0~e aWZփ"%6 W!/ʕ߷xS)WyJq>|vߟ~!bu.v0_EY|薯LN]|Ւ7l_`į ‹Nו!{fr'k:e#nc!Y-7A]@BLN]|H ͇׎y ;{Dʾ~q)|!0 Bw<~'+Zrߣ*],6\d#yR:_H j1SW@D]_XX,o~$: P,E)Z׺xcn_\< X OW筟2) iXۄf ]ML"+泚s'l׺/ߟh8Kҿ pcSw>6z5P9Rp3إE 1;,b(eM"eY98̮XJ/z~Oˊ}Vw;9̑\qE[F  Qer)[I`'UxUlexXHerT8 />6z   D,RHA  qKj~Su#&--ǟ϶/ُyﴌ:(y`-A[um=(Zr}[{LN-WG˙ׯ~gNSs)S6_Vw &BCŵoo/@Zuvr*Ԉ}W;BjpC&"CY 0"ykSwsU>@"6jMUI qX&e^viWDmp|pE'hDl:-Qe0 o??/{99n *ElVK:?\[vZI19f\?L2굮l`'"avi.V?q^, Pϋja1 U˝?ŒAD+Ԉ-W4ہeg{O {w nK0q/͇, ZOXJ8&29umcy{QI Ͼf} 梬KAy)Br0LN-W4E}?`V0X0?iD EuZ  )V</괌[GqؓՒR;b"׺;[G~+ww~u_׺+,Ssf*l}'^@TBN=կWk!so2r*Ԉ}ۑn-=e1^vZca:XVu[{p EluV6>%u,aWV?Z4{#7 Bm rE+W4ۛ7%|VK:6Y@|T:V!TeŃrE+k {a?x,RE֣8-_o$~3YfuNjmp*'1:imWO1I Od<<㶫uXHX~QwXK,|<;[?mwE|uՒ#A o#imrw6)#Ŏ1븱Gpu"vӵ>y!mW% @|EGfdrmtz]=x?߱n}l,|C`{sgGی++bZC )IM<&w#cbanz VƏضn}I{<>$TLbe"I1a1IXyӢqɴ(kBJ+oǝbq+bCninqVKJjvx|E3\\ɒfWz4"n6zE -WfrG!{i.Wx|r'lk}\^>= [h=֑G\{`~ lyī׺?=b{|];ޅ(FoQ7{?xVVKR)om>x\{ꏟh3ug֭ôzSS~)Uh֩"hvT6 )k[?((,tV`%ɐ݉^_|웱قQB8'eCqdfrC)K&B'NY0)?NB|L )fr|,W+`RHLrE{yu42c7B鳯K$rLN]|<~AK&WNSuڬ,4 \Mmfrj~Lhd͞ )&\S 09G0Ť(D,RHA EkwnXa `:D7㩱Bj0/H\flEWXJц0YDqh֭׺4SL#vg^fn}g ((J[: 抢ko #Wxm ؽث;/\0[uG{ǝO;[GC_ Oim/hggI ODluS[}Z,6Fgm,+ZKGj~/6Dmbgm=vKz<_7~'xjS,7f_):Y-]*drƷn6=fdq+b=<~ۃ)*W4O<,c+W~bW6Oߗt]&-0n6 _ʷs[M! #֣ҢfV?<+Gl[w]+ﰹ1vavyX{@". ֊˙Ҟ 0e"R*4ReaXy>y@<`R(vۥ?ZJ0__s|eZ8]vѻDW>r_Ev=:7"EQvڽSuX@m;[?wZ~7tZioĖ+RO~>kL ;=~rMuu4j9i/R7P=[ݻЬ׺ZXJ3Λ6{k&_Mm,]K0m|Çk/A|-n6zn]Yw6-~OT KGBN 줝0wd$C8 0pfCqyeײ+`" /eə/IDATWUk Z׻meu>]]]]]]^,@T"]V9X, @RO}-ĥՕ̌(OnSΣ%fr|rO W_Yq N;a1 +]Y׺ΐ{aT~7jUâOgggXtf}p޺b)m.AzAjB*Lf󳳳D"!>J$D,L3b 8======;; ,bpzrrTU'D"133CD{vvz`2bkߒ̌aoVU`Faggg'''׿y͍7oDFl` D,RHA  D,RHA  D,Z/>@ ")XF09D,כY.nX7ca{iiCpfffğj}HWaӳӓS0˫Ϭ 1iFDk}-K!HqX&5`? =bEXZ_*MXjW7 T٧ZU5\͚UD"!^+ 8:>~L&E֚q+Vv6lX[:;;{yyi-aUtNQ[|5A9D9VlyHSq_XTrD"LTYwb͛zyyL& a38m*d2y֭d2)Zc{+^i m3_R$uTȊ{Ś^]]Y7^;bX4ɬek)|Y!"YX0qW+̔+bͱbldUUnWJX,dmYm굢v_֗f^^^*1K&ΌS&38YmlI5ogT6np[j^i6\,^*#_^qb/SVoHh=aKYURjMaXZV$+঱KcXOq+ Uu 3 խ[ "f Tןkfৎ]g&K7N5StIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/service.png0000644000175000017500000001004710442562727021703 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y#1~ofpq!ɓ^?"ogxǁ +nF18@_.ߟĐ13=@xcEV{ @/Tp? '`'/PΠ  _?`(2gXibA|X ɰ `P8ĞPE6   xEf9 T'h \ +dg'^l/IJ@ H}d` ,qyP0u> xa" /0Bbe CO @Ē@,7"íG +0$ưC!75=@ppU@tq|I`'!#4s9`Ѓ w2ibH <@HG@[1+@|GdbV' #t @!X1L1 DEj #qx AC9Č@3~b`}bhC p)a0C,a|5fsn.I1`g:A)ģeѷ ?^|dE Xc0,op 2h= P ԥ [w0Xu&4'1So9,^|ߜ_}Z@1,UPBt,, ay]ޟ'OPRzTB31ЬL-9:1F ~%1}`z9Y 2bf)#oQ/T M(!@11D1F0h2/ch BM4S0#޻ό҅#̑b`V̐-,6v^`a3 7>3? F@ fhX~[ | 8dy;6Eh`.uG[2|Wb~#C>`!,DYiBV x9ؙ~A#}>6~}˫W(<#ZN oߟxs2U %C.UL,BC-TZ|@|ZWY `i ?{ǷI1v6f`e?~exlw+2<5bkVx`ڶ:J3A;'(N@;P31<0$jh\zjD$+?;fa+&ܝ@K ^c}vfhs!k[/"úWݥ(^<ݾ< yAIAʟ@10z"\>q`H}6?ll NhHb@lژY%v@?(vh{4b[o^ld& f65`EЃW pz^  ?iesex%A;VN`ee X< ȃ<4L_B=L w5 ȭϿ)B",@G-HG /tW1|dga8`%>O?0\va+yPA-Pi4ݼмˆAGK`,aUdxZ^akܞ?NIC5kWz~xgn W? b]]B~mNbd/m?![_ A ń&+[2`Xn?G9?I~"]q/?GPa%,Ĩ)/GV`=wa>ⓦjRK m0J3s׵ \m?߶6l\&Ŀm}z=h @^&(& w^0|zS=~rk~\Ytx{X ڂ?X&2V<>2gb~=|˥io.-`^|-w6e#gCaL~{12 ū5Ќ J_{B~ƌG8Fn7ЀxZ(A MhJx nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R:IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/house.png0000644000175000017500000000131110442562727021360 0ustar mikemikePNG  IHDRagAMA7IDATxOHTQ9oftxhcZ´MaI`.QF(*jD\D5AEAEd"mtt|#M?;-rj6s=/:O{{z|iGZ)SrE p&-v̞b,%3~%в֯eC\hqWQH$ vMp vU小'up$Aaz}~VzJíCICt-{b7 a՗d7dGecy=/&$P($sss,@@drW|Kl;Nx!08mcDq +@!谉$I,"e-1EM+FtXJA“Gڲt]GDQe9AWW$^\&/*#a&~?4AW~5/45IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/expand.png0000644000175000017500000000026710442562727021525 0ustar mikemikePNG  IHDR/ebKGD pHYs  ~tIME  DIDATxU 0Ü.Ӡ^%DiГˊ-чl3=)̷଻WGGYDZh)7IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/default_icon.png0000644000175000017500000000364510442562727022705 0ustar mikemikePNG  IHDR00WgAMA abKGDf>l pHYs  ~tIME 74"IDATx_hY?ID[V-*KiwEjT$ia-HuJV]\A} ¾*Ex6([[TdKڅ&&&3wfχs3w2wL"Ýw~93sɚZ1qgL)===l:e*x^ĪTx[HV؏y">~}<3;w Z#+򛿾hK|%\"Ye? BDRkk+^~ ײ=>-hO9,[6$ , $\r۶O,Fg֚ǡumcFyl߾ӧO"˱eR:u z{{`vvb Lw~vsss M(;.bah;,X ͂UӒl-YBPVmC:la033qF<ϫG>|X]4 ȯ8V Y"eY8^^nܹsCu0 BP6! 8H868h׹q/\/p{"\4F*$(f %9\244C2_ Ƈn|زx"?EJؽ{w(@IΗe&''ߨfgO*IoHk 'hdiDƵm:J@Ν;DJdU˙8sJa[uݺp}q98Dl>l6ߐӚƟ6/>_W4_ͷ>R ~ԙzÊy|>U}_مdB9|? <2.xGqIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_new_workstation.png0000644000175000017500000000147310442562727025042 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME 6ՖIDATxmMh\Usνw_N:bK-RP b#Bh(`;[ҵ+YPHш5L{>3G}{[\{QbP(fQjKnnn~,k|qm' ~>sk Ô0Hb{s^8K5jq뇈"&^Nc% 2%{],1m4I/EDFk4)Ø#g1h6i,ϻ!M-As~h? =iH=~'$Mh$N (HFe;8R)P(x9c4 Ir"r/"5ʔ+%ʕ}sw֪%=zƻC >y˽VW~)@Dj"[tIvݓl˓NhW:|efO.YZVޱOO D]A1~0|ݑ#3V%rnѾYmg/]" [o^E)9~Iu1Z5W.JY@jޏd)uIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_template.png0000644000175000017500000000100010442562727023402 0ustar mikemikePNG  IHDRabKGD pHYs  tIME+IDAT8˝jTQsF$I'2wP, | *A` ̝sI8Y7{\fNf2i|&K4wQosWw0-L'V ];@ 2B]rΘp60!=J)*ç/#ek C1wcx*#-BpV)59Y%eEEZX "U@ {߲"jʰD Mc@Dz|"P.AE`-Xk n}!FC z+]l0|CGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/zip.png0000644000175000017500000000142710442562727021047 0ustar mikemikePNG  IHDRagAMA7IDATxO-yKK_,Ж6@-m8`f=\EϞX; ~p`$j#;HҲm//ov/o=8ms^.2|Mz+sssߔu;wfL&f3R ,v$Iݗxwtdd$IrxxlFu A^zG͓Y nKR+"\CCC'''L&ubPNHָËvPx>MFѰ,h(e \y<=P'Dy* \gBMM{$t:)E,A-&0 i˪\r:جVފ^&44M$8SSSϯρG|~V+lLLLH$-x!E=˽UWWL&sxTM(Ȳz0 L2;;{7|/p8<>::Z["!"&[<IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/closedlock.png0000644000175000017500000000135610442562727022370 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME $84Fe{IDATx}MHTQ81IR*CPw)DZjpn (E\Xʍ"4;!Mgq8ӌSgu=\ιuo#mmᇭ͏Ȳf\zrTw^áDZq(*# ɟZ&hVBuEέJyi3 iLuNWs$uUxv `57 'ՑPc(p"D$ nXAT)y {ˆP_ <J܋mǀP- qŝ;_~ʀ@1Džڐ8ʅfps0 * Kpp!93@`5 *VEXp@5lLl4m-(``X12I#2l0ٴ̦:pg*V7mp)āݹ[IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/processor.png0000644000175000017500000000062010442562727022256 0ustar mikemikePNG  IHDROc#"bKGDiBըIDATx;08Âp Q(,8H‚{QHCg&~f}Y*']r 3숨9e`d!0$644/䂭***,*?fU B/3vttkR%%%"xCIyϻv-2ǩw mL5qZbCtEXtSoftware@(#)ImageMagick 4.1.0 98/09/08 cristy@mystic.es.dupont.comeB*tEXtSignature7d98d3510a3f5a072a46133f5d59ec2b? IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/phone.png0000644000175000017500000001024710442562727021356 0ustar mikemikePNG  IHDR00WgAMA7^IDATx{\Wyܹٝ}&Y?bb\!«( @*?ZQԨTH-*D}@BCKj^~,/n CC55ayVLg=ڂU</ mp=B|oع*<(\6ŢkklNOtLl~77ݟܽݲ׍" }}ρX! `sh65oN}M!q=\)DsPݮ %sP6;kA[ixAɇ?G__.m. C#yh Ib`7m۶MٲzUKyX-:9I+mhQ}DسWh`UA5ahƒIKK{׻x :5OcT/zՆZy)Y+EfY$Oؕ J~Ww,TW,_j}W''Jsh_kZmQD7%Zu*q` /zAjo.5[޸{ c00v퇽o{578x#v4*AibΓ&bm۷=/皟$| eW q}?`#@1[,K>VՒ.co3`Oo?qͥ'.:1-aq 8p80+׮4_{J3{μ b=-n[j[][dǼ\k=oGo~ͷdGWsҞր1a4ֈZ1!7spAk,NbݽP;;pmsS˶v|`kN>[ d(BZ|NpFZXt-Wݸql7Nl)}DHl5awm lR3f+Km?;k(/Ȋ>b9qVqReB`)stg)Ca?t$ Cr~"ð "qj-vk-Xcc&j[+"N%%\G99R ,$  ?On!RAWŗ`I`rRl(EqhovOm*E48ZPKYM, )g䖅S,?)mn8 ]撂2a/F:psm31;!I]yNers'*($yN! $Į]*1e(=8$!c=tsMb"3uj_kѩM 0;x-8k( i)ўTT*,5>++e2!XB!`}n+& +?8FtfgMl2c+t΄O]ȇ}h*ѕP t?$O..R(m u]hZ<쳔e0\Cϖa6q4^mG--QUVW}?|؃5]`":QZR-q沌z]Bp0$MS @*8ell0 9=7:AU, hvR9wݰR\*Y.BZ %RB_.ӬҔZLŲ,|ߧl)!,*iHfAJ^lR,l@.2`77}/>ꈅE[HAV =; ##yNٶatm8}S.W_}5JVeYرRdTcffqX^^)yΝ[&<8YƜ 'V%bI?Q|Owm;%ܡVBAJ<umdq4eaa~:A@ivv$I8q籼L-pm<Ǎc0$n4mir'<|pG5M9sׇ=<v}R A:B<'"x֚o۷tGaѠn|ji n3d!yHs$%& \ǁ8F!Ws |=Q/zStơV-MZaR u9{,{Ak} O=Jb4bj#gDV ZA .]$@/^טOZW--{.s1ND_~/~Z)q#IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/dhcp.png0000644000175000017500000001110210442562727021152 0ustar mikemikePNG  IHDR00WgAMA7IDATx͙yl}?N-AZ 4)zpQiIh iu%;V؎+KVlYEKJK.yW%)EÙ7} ~aAfsK/XZDLe/-FSx_W_uR]-ف-] w ܵEΎLk zq4jy G[wM۞H|i [nݵCܱw[zhΦ7ٹRU\X Ns'co|#yonǾ{=X:mkqaU\rRK9\kc|ץ|?<X-_i6<'o+]#sPZ<)1")!W)*~t2_+i /1P ry!x0oI~1dbrI 2Z(ePVm2mSTcIG{+k;BCDXH!^X*d1bZ0ơ9M8=.C͏?涍cZkK[9?6D9XF)v,(#PHcKsSUN7BXhnj"5Z&fTB:;:lh$c`X.!j}χv{hS]Y4#ZC-GJHdžuؼ~5Z*aD*1l&,S Ⱥ^GK NӇ0+)$[wn`Ӻn6> ۙ254e@T:83s/O`ZPD&䐤@XRdEnP*,Jx$HYN<ϓL 6 ײo5 Ʊ"ٺq[vn"7~Ls7$pK6qvt?KlNJ%6揾8B;Pcceb)NsezS<޻0dR)^Maq8ҚH^vl|}lS`kyM2Ό^9 r* -cN9Q4F;.Ns×Igعy-kV;}֥k "nj~?o!S]:K~B(Wbʕ895]369W+l\#eh|5DžW~S|oU~sϾ-ı!54NtkiT],UU6>=S(XXX(V"J1+Ut_?wIuR~Uo05= D6~z2ǑT0Hʵbb5luUCR~};~k TqTwNOPƵ2ҭH?8|.ܔKg6NtjT=/qP?֥8_:?։Qy2٥8vo~YhAZ7$ 0Jrih ?>׆I8lVWugN"F6*4*%#ӳת(~*FX!xin^0<#_1R(mP _(Q;?| ?ѡbz"*O?aT5mq/ikWg](G8G5bCI~#ӎln2zgyGJ{usf5]\rjX")+Ri逍ܺs=s"z̻̍ji?\6XڜϿx׏%ղi%R!0<ܲ}-$tbM[s>űRCJt*$*e8{y鱪+]xXvzb%Fk{LL8(V 8C= l4<)%k6[y$koFkpch!{ c,J;,B΍6mcll !%~ߓ|I>AKV#~ *0{iϮx)_ZIYKij0TTcUXeh1I; ђMXȤ]9z)7|.m=,*̗٦LZ}t* OAl4iҩjesGKSCE~J+q\3˦#_dgGgKog3ã'd<0Z!A 0HWvL*DX6:n-n&1Q*_Z%yDQ12P dBT(k-ٳ)3055ŋfΝc8y${Eӧ)l۶^RQ111sd͍*8}4SSS ϥ>\ `vvBo"`޽H)v.\` E~;===\pr [ošC[wu;k΄u/>>Z[[9uG%N76ljj_9r1z{{yaxxƻRJ|'.?Ժ7h|gAJya,RJ9x ޿qsOkk+ ;whjjj˥mWRhyDyJ%<Vy\xq`||A Z322pu[LM%b]ce_Ç}?I\uj\~fօYf[ _JZ t?QkfIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_new_macro.png0000644000175000017500000000146710442562727023256 0ustar mikemikePNG  IHDRabKGD pHYs  tIME#2IDAT8ˍKHTaxͦ%D6Ѣ=MS$f,A݉)E"**(qR%1%YmiSѓ1cjs3::{ZA-Vp}_'$o)9$e^k~_bXCT*h!@CD:qhJ!0$2@R 0GBDZ3q)4ˁeSA@2 C>h$(ö!cQֽ*wn H @s/O/^srTLO0d%~n&]JTqFhJ: /q M*f!۞cAt'0MSZDt"HLiLplI=pXW;FlqYsu445`04'm*.v5A3gKrc8Kr^)o'iqH F 5\)%FNS8u$neh9ш>V^+,F6Y@0ڇPRge2MS|;$t=XA9|\6Z8֧7]pl]RAX>M11a%4_~A6=ݗs5x>gϵe տ;m-N x޽N뭗xIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_new_app.png0000644000175000017500000000143210442562727022725 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8ɅIDAT8ˍMhTWsL&M8h*Th w u*Rt"] U+"1V?(4񚙛3s=ŝHP|/sx ,qf v\>T>EY"ע~ h6[ZFU9Uis]cgo:o"56jމb _s`0`'wS/; l6C._]}P今}N9Tg9vi2ա]Gd6/^GwϗONh9Zک^x]lqG `3'(7ѬghIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/netatalk.png0000644000175000017500000000707210442562727022052 0ustar mikemikePNG  IHDR00WsBIT|d IDATh՚k%Uuk9޹` 8 OAA5V Ƀ1&_Ry*$&_b"I$$Vh "{dqfe<{|}=fSOsvZ_k13!"ͬʕΧ+9DW3V:Ewv TV:>V\? L4^Enz#nU9ul^@ ʌŎ}[`>˛kxGԷ ƿCOƈvzܣ9pc,PG`z{w7 ]'09 ycz 7̳~ZnW9mSN(]{n}BȏS6w?[ya_#ndaqbgyΧ_k>Or;/]L핞h_s*u|cKmZ޵N7y,17Gee) "4Ÿ}3ٳsUpp u?yJPư %:fj>t9Ύs%'7nbn 7| ;Ohc_ 7}̘/85LMtwD "D2Y\8̹]W\R$u~}l -*h EzRdy@E13C: D7C|}WrbCiDABYK=1BxT1^.q@#O}qLMOq9ᜂf6UU7sտbAUy [y'8vz>p dyNR"`fQI`~b7Sʲ<¾/NwnW^ +}_1/_;n7û5buc "d d@(V;TBUY#Dž@T*o~F.fM%-fsPuT1QC Q q H@4ӫhw*OR "Te"e5~KnN84V[n6I"8J[e[L*#ш1ن0NI"8K]:pΈL={P?9nØ@YXژ0>dYx^G/!J4)YéИѨz)+|(M!.<{;'z&y^E4ڣC%Nn#L3UkUX=aҎ́ʠӫ"sFy͐h84VMΥJ9bӏ kO;hQ Jlve4=30J>!EX9y=|'DAW\ęK1\XD *|Ɓw3ވ %zSTFtP;EUhTqm$RVBdBxЀAaG}M'"hNb-v.qY 4 B%'Q$e?`^]N0?*4Rw10$*96 RJ1*4~LJCT *Z'b(OUvY{-l׫;[j|FUhS"qYk Z0UĘBV@!%=>8J#ͨ #:^:@wqU/B[b$@#1bDX@W &u8B2g>xBP 5,,Ź6ϧPAX$V} 6o=K6VI9֥YrURE501 ާ, ̣S|pZxgDkIzk_e73h B5E$=, Q)L 1P˕X$W\H!.SOENkYsxz&y+ ̳XR8 <4'h2%F$6 J(~3gۙ};TV̰j&K9Ij&9;W{8yiv&'瓴kyn.v|o%_M{¢.AE(# ={HЋ.=0~{Fj 3~l@c(ZwI~n! Pz}GǾ#{GwˮFaV\4$2}rgEw%{t^; yNj V{9B6o+ދ9,/b/?6n9KUXTA/8pC^dWͬ'̿?63j Bʹ %t:oCӚ*o"&< JpJIJCA !*xJGFk2cxNT6Zwe+~@3zdpUXE<%QB!8$3(y y Adu}eBKir7*X51 g8nfS5:C_΁n4<1ȲeL RnKw.yf-fr{/;dg)8%-C}WU+UL5< eF hfؘ̠Әjjªl期ǝ, 3F{ 28'lË+{t;|Cy &@J+ B3@# <{4 cW;~=ݙn9?F$vFI-]{|6`,!=~3[3g\uK,৿dM!:X<nߍ {jޣKu"YLz<)̛k~V|D6pJ?YvXY1RyY1r%sq#؝IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/mailqueue.png0000644000175000017500000001004410442562727022227 0ustar mikemikePNG  IHDR00W pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?2`ddd 0 K(ȮP@n31iz pq9Xi r=&-_ot%dN R`p:NϽ {G./)H?)IV0`V*n>W@xGҭ[M$ 4Ks/@ye_x?T~AoziTB!6h9^"1~?^~ogo}+p(F_/j9_Q攈^"%8? o`ql?!C]e%N>IGu&)& R<qbA~1d`X Exr.ɍ%ǁ߀7z nb!6ٹsL8a? s2|,LG(ty.`0 Ku6< ]?P51`T3+VU2eg|x < 0ft4L b7 ++Kz>KFDdf&٣x|da@ h~O ȖbfVfxoi^bJ#"LbB6B|д#80.0/C~r/-#`#Nr s~e`8u>{A?.Qyŕߦ%y[(00 `С0ǂ1$LZ 5"\(I7hR?tգ;_; b<)g<2ExF(bA.!z& +,fB==$p|3åg~s@PT{z!W}yW )q⚪ LA~kyVVeӮ N?e8t>lM,%L`ʷ<=ꁟ_A},:x  ܜl L @<QS70|ffH5aOw`x;k?1La I ߿`8pG7z; >'e; 剪xr 0|ɯ [nk2Ć1K hLq+LJg`ӻμb (ː * &4>aPc ~ >Sťy|"2,=22ǰCܜ] 11TVtLYHa@eWc|mZj yu#0w60lQ SRe+?_A?.' n2!#ܒAM`Ab$ vgĹ n00q2[`g0%N?[ t4ʨ0I @X+2hWNdQWJ&؀׳7gvdTd:- L1|a`.l_@}𗉉A\6wafXw)[2A%@amJ@3@w3 lVqUS#\6x~zi> }vV`)$zL!? 윿$xonb` 13z@ʣמ *AɠZ p5#d`R=K,؀,C_hE(& F6Ux 2؞c`rk1pCv_Xv۠? Ps96r ,B-5ՔmQsg{ᎆA+Waﯿ /cه]}e@nJ1X n%z \`lNAr4064Vo]_w/:#tXpX nb$a%6j=L]TTe@tǃ0 o6_z0{ϹP#;99 @$NĆ|nd:0'qОxi'w{w"9#ڈ @19O -7A]JGCWgUq9 )cc.N??~3<Ὧ.>y-gh!x0w y/tDj~;O/~Zyu< d֧o矼>w~zA@03"7t 7m]ݕ DyB[ko>l>riɽwpÒWpR @\^0Ï_ϻp{١/@CB7)G@Q_9 4Et@Qbay,bcJCʜTYs7@1cP17g1IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/save.png0000644000175000017500000000112310442562727021174 0ustar mikemikePNG  IHDRVΎWgAMA abKGD pHYs  ~tIME   A IDATx1A ll2)N X)>"7IU:QoUYD9ŝ${ 1 ط緳!0>1pGBBB *Of!xqy{{{lp849g4Ecv:HUU]~/3uzU'߿hEj>Pz׼ck<@~yHta*wr,9汔8|[@*«޼jPup4'O+9iYju;PDU]9l& ~DJUL .YaZKݦhQ.dYF c&ɢ<OӅֿ7Zkk-YQ0c/e%I|oT S*tW HBi)oDXNc'IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/sound.png0000644000175000017500000000160210442562727021370 0ustar mikemikePNG  IHDRagAMA79IDATxmK#w?$!u!DBmͶC!BڃЛ^RDEdX ?i%th&3qn;{^4555 z].r6HCX k&nvS,1M4T*n x!|!kDAY0 ]1MUUQݎhf&?*[@vMV$I!u^TUEeE!L室x<uUU#`/^ t:xjL&_D&a48;;tZ4 au]$ ""ȏM$i^e˅ndYCkKqʊpIOO^˅aݑ4_NNN `fP(h6r6%R*`||l6{K?>o, '&&fdd}RmIj%J%3  Pe;IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/hardware.png0000644000175000017500000000150410442562727022036 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% (DIJr啗o_h(ß @@/?D _֭s:*Uؘ9adw//1830p13po n@AJBb3  T=K2ALBK %٬/>Ǐ/ CaWό?ޱaɠiʠ݀A7 , 10o <\j $1<b5#~&1 a7N @,a231y&,wj ߘ00rs1|AWALOA߻@, ve R _0\8 ;/wx33X@ E 5ca5 g'pex[E >H0 #-) 1ߏPײo;#3;@L [of( 66o >

    l@ aπз1?Ёf. SA.QNj(@PX A   ;Wfk(`0@a r&` þ4f0@a5* ǰ_[KWB^290W:FȆ2|o3@1Ja 66EEpR<Ǝ=ď_30|33(?Ɗi8@1.Ca>ȥ C1/"`B"  \*h7נd1܆AleFP)EL⇆~e&#nhb8(S@?G_c /AYqo|Dv,ޟ]lef08%] d?-@fJS`K)  ԥ3 0&Py DWM@`.EyH 4IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/ldif.png0000644000175000017500000000536110442562727021164 0ustar mikemikePNG  IHDR00W pHYs  gAMA|Q cHRMz%u0`:o_F gIDATxb?P0@PRR"ڐݻw볱]7GUbį_~^^^ĉ۴9޿O -غuk1 ?~t~@1D&!۷7 ..SW^1<˻;33޽{"̛7O\DDa%#  RRR /^cfffmA@(<@D{zjnݺuǏ߾}c`<{_Ӈ݁F&/<."IIItttzɓ'`ywށ1($# =pʕ p1Ϝ9NyP3ÇXXX$%%X~_R<@dy`ҥ 7 {h>a`^\\ l&@䁂VWW_4K9 ˗/{d?< AѠĞTVV!{ HѣG7CȈ,#;Tbݿa:`q y]]]@eh3s6<+@#r#0wh[[[{߾}p.b!k׮*q<,Y\ 222>|.`m(] u` j=2? bh 30:pX @E&,= 呝;wC4.AwY@ k?S_`~@p>PX(y$ AL 7ưHXhPhjt` Pc T U0Ê}'{:5U\RqB[mPRy| @+|Zi+<3Ňq5 k+ܫ$SU(l4( aw5^(Vv0, _P Ho8PȡAI4 ?P:hFXnp_5 " ֶ( r (ŋAX t7 @ 0&?9D`l0IJJa5+ФI@ d{T?@AfGuP X APY?q0R{C!y˗/F(`$ Ǐg|CP+PYAL`6(}AB f6AiZ,&4C00aP?;V*ԁ<`Z{.(OB}P> @gE7y`ūrZL LH?l<{nE"@AJ"0qXVBǠvLÿ!> bEv,aCN`a'WdO>;ȡU%L Ah%t"/ ,5A<\{{X $L l.<߱>%1 )aiABv(5a1 yP>>@1[zS0 wa0aixX L;wnR @GVe#r FGzA?px[@:K00( "(݋Zɥip?@A T#ek\'`1>/a:`Q( pQwnh>Ăn uA y(ކGd<Լrؙd,T ]{?Gk|`0iaCGhDj @ਊa9yH&DN:N, BHOh!x I`P aa=#9Q A!Ќ_P ub<@`ܻAx/jgA꣢vQc80sIjh`H8fjA%(h A-`~CEj@@;*X~'TdboAv<'gj  DIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/list_new_department.png0000644000175000017500000000131510442562727024310 0ustar mikemikePNG  IHDRabKGD pHYs  tIME $5)RZIDAT8˕]HSaxvvvΦDWQZ4}.++ꦺQ (Ƌ!U`AHPAA7C(̘4cHgtN.έz}W/Q#)+tAсZ5W<ƹ'uOB9MY[uL&E{(#A"qq43gkjS{U\B{L@=\Vƀ> &8v'=5^-MAAyYolad7v >!y H4! )g L$`CV Co"!pj06 Æ}|DCGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/encrypted.png0000644000175000017500000000232710442562727022242 0ustar mikemikePNG  IHDRU_gbKGD pHYs  ~tIME  NfdIDATxoUU}ιmi{)!PS@#J8`d!ę`LL*`9 Ġ;h,k Ԇ>RBs9gK _w[klv333o*XYYPJ}gbbbrhhH1s""G}Q~KD(!k:uG?|0DD… P͛7,//Kgt|ffsN9 XKhoo,aș3g>vy366x[vH[ǵ$If099W;JsZ0Io;{XdYVSJ!"(dl9qyɋ(, pT3Gb_Casּ4cJ ^kz1^UӶqk]t(kC- AEoCJwrе~#$z BP@s#6Aaut6af[CL8\AV܏(wBjKheD!n|f6wSw]%2MR JaPjh Ie,-au ?Dz~͙W=-`grsȋرűEz$_ݘzu# ‹{ág#_ȵ'ӞBU*p Jpu9"x|b 3(ل1aj0}GZ) "0<8Xka=%!`880Ll6y^T&ҰTqc8b6z6{TQAʮJc>Z(3>y4rN~nFv]HYj2$"Vz(ۚYCZ&Ä3>%>^^~%̷=1WubIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/true.png0000644000175000017500000000122510442562727021220 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<'IDATxb?% (8Qc@7 @2@ĬHl(A!A X2lj okȧdP}گ? ?YB/oV qj $dIH6]'P"@10" H3]"rTW__WہÀꞀOS ; B׀&03$0Z11|88> F1  F " @aC/Gpr000r10 0`^1a8ph:P"A %^`` S @@14%$@ xjPM3 g 0f6Or n5]ex4ؿU |i X?=L ^5S(\ `N~` /, {b,HIflb47Ź QU!6IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/alternatemail.png0000644000175000017500000000157510442562727023073 0ustar mikemikePNG  IHDRaDIDATxڅMhu|dcfv&nHi"ڔڃR%q(FփTb{(TJ! R")YXj$a!eH7Ygc3u6UAz~W5JY8z}]'ߞ?:ߌ]S FWWeeWXXXyimm{.^̊ ağڷoLF9 Iޭ`%`tD"e%c C$ ccC($ۊ޾]: #n0_DBt@[["nY͐$93eh .]vDX]y-nY?@)! R"#pc|pp Q vODU zsJaH[hXRd ]|ژ^C+ Ttt q'iV~NnَڭVtuZpmLO`eR 0~{3)d o>a {KwЛ샦jhiA5FMM2<-]JK8O;O|$* -װ[C0Fǭ[ƍEu3֪}b:dP 9 k?fp{Hz}%67T睯 !)GԓzGIJ&'|7cfS. Jqoc:obޜrs[ WbAP߫G/8*s+?Ծd}wt:A<*%ıN3zoՋAG7/|b'"IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/openlock.png0000644000175000017500000000163310442562727022056 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<-IDATxb?Crr3fcccWVI?Û7_߽xߦ_έe ('9?*M]] 4O+-۷H0}7BƞD7a͛p?~SWU0gOH[:o @L ,>XZ((3[am]O5x֭S@Hӧ& = @`>|2@AEEV͛ _:eee:uֵkݼyANNLO = @`/UNd~^_¥12,'߿1U^  Z?R((L~K?@563 "L'&& 2`JL|b``ebU@afo&f |'I}{Y lW^Mt!E/+|a`x>0@ x t'P=@(hK`ûJl?@o? adhT ?@ R؀ I FmA5A "/$@ ف @?i }/$llwb?Ff(A d8wc Msn'!IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/sort_down.png0000644000175000017500000000025610442562727022262 0ustar mikemikePNG  IHDRB%}bKGD pHYs  ~tIME (8s;IDATxu |? !X$W-< dϐeh7fȥ=f"aIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/select_terminal.png0000644000175000017500000000141210442562727023411 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `!8` `wñC{ggrIP#p=ޣ> n$f@gjfA|p!Bǃ8Lve{vybAL<xpEB?2XvN6&o~t;Ao0Fnj )rf$pR֥Ei_ {԰m@}~uEI\ ټ]r6_;ɘmpdD2EV/#3(T@(㰙 p vO'p(ثA*|`%ԉ9M<+&/PPK`x{OV Œajfѫȱ  kfB9;7Q>&4%ƚ#~ ~JZʦ vNַm2HM# -&򤪪zVC86vÍ&3]F婧AnmQUU@QKdX"=QHYj.olȩZdiIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/mouse.png0000644000175000017500000000135710442562727021377 0ustar mikemikePNG  IHDRagAMA7IDATxuKQ)% M]СBd".HA.y!P;"iQQۺ*&owg7wf̼5t^=NWDP(044~0'TRGGBzvzz$볳eQd&WR1sNN2|p.0222ND! F&GݢyZXXeJ`YRU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]ۯo@du [[0&0p=Ky6Yh݉J'N.<\]^y R!l<=q8JAEeVf'`lO{&JKu6*'~{~]VP[[J \v=Wg!tr:2675k=uu Y$x A(h?+=4e&?{E1AihNĎBc-ttR)d(.@ސԏIYɩŐd)[]ikZX;>[챸pa8o(Ñcp3 ׁ3颇; fF57wsWyx\ ?&yf^?!`4֊ݝ&n|O]ilnX੩6 Z.A}\Rɯnm*'Lv < ,9{h!bZ[/CXrv,}yPi+=,oSIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/hdd_linux_unmount.png0000644000175000017500000001522510442562727024011 0ustar mikemikePNG  IHDR00W pHYs   9iCCPPhotoshop ICC profilexڝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEVRrҺpanh39X H_P^TA@5Ta-CSE3?~~у|yٵWMR P}i$WO12eg`ggg`eecn.v.2, ) lȠ& 6VV1?nnO9 9SNII@.FFhE9d0!?~`غ~+gggP]]]'Ο?lf(`ضi%+oؾh7b8}`=AFZ݃,'$$Ġ |gXf Caa!'N`5kÄt`!;3AP *oHm?@G0m`hf Fh2"U| U R2cr7'''0pYaa:}}}6CqAh V%@1Ak`3 x͈HLh}XI [͍_0;wa) Nb8x X/ hDzj @@=+cH{'=}&|1 d{hrd3͛wFؤ~o`s3` ۏ :ԋhY G%ðy CK5Lہ)no!_>^Pǀ ]i쁛7o2\t XQE`#n 0g)ww>/ (1vFQQD h`~*p. { }>8< N.A!nhhd8~$8_ xcO>M`I􍡬,a, 0V  O~*KfpIA./Aؒ#RaBJJ'O@/_nݺ+0d45h "pg~z+eŋ$ފ wN;ÞW5_!V1&;8>}!rF `?0A׮^0ZW\&ǟ f$O8j0,[@a>>>9dA-^b޳gmUU|/bWL :&O@[@ tB`L ^( % &0X[[@C1g;T2Ao`%'l2A&1q )ipc`ǂҴPax7feecz"ׯ_={ɓ'@1e.::̣ RCEa~?(d}ZL@ϝ;O*&$G";0ǏPj01@C0ĄV}_kϪU!vi珟!:QW`ĝ ? 46v`''@ ( /4yfffePSf PK3([˗f'$$88yE75TG@Gn2hi(0-`KBk.1\p6hcרğ}n5'>Is0qKVЮ%+,>~$#FFDݠu++k4͡=kO>P74}nO|U8x\-, UhШ&+W.cALgƙQC]ԩ /u@5y~8~Ǐ|gua]KX1*/GNFr ,`0yR]޽ KHt1CɓvihFPU`@y@XCf70<{= rp}`q?]K@ɰ{{E7/fwqD.l͑թeprfx>&̰/ (/}w*~awgп?0\%X|VIπ @r .TT 0@Lpcʕ}229|X1ke8),`+u+W2e;кvȧ@Sg\b(+`g;Ч_@j_`QAb9@[#@:C*)]K'l_<}fm)3 v }+ǻE Nc}* 3 d`@ˌUWO IlO u?N}xan&̰ "wyR\qrsGK!Vmۮ2\t{'} , d]bdjoj>$1@Q2cRNNo~='O.gШ f$2B  F*tpp+˟{'-sh[CG2#o@,u[hNy\ BIENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/reports.png0000644000175000017500000001031210442562727021734 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<\IDATxb?PBb999`cÿ(A//P ((P//߿d$2c9Z=|`222ib$%`z෕^u`O_'1_=<} P7 M01Ɗ.w/1z`cI $cKMQaL^=8 XH?`]|`G3113033i&&0DE%E$Z@5e`300`gay 0&DB Dt0a߿ʸy+88<81fffX{^BP4s C}ᝇ8(@,tP\!7CB{)㿠f67Y4+8d. gdjK+`L@=RFԦ+OFIp&g֓e4WgҖ`bfgNR{@G$'Px|8dF(F o'AIdZ9\&*@pH: \~n&?zIkZ<($!`_X: )> @1*VAH?R'ԬA)@-[X @1(  DQ{S+m:wBm֋O+sLCCjwj!9 !sc!gZ!{;C萷"@jzlp `66oy!09=A`f$F mP U i $V.!L V :ZX׾o Ó]"U$ ,(:o?}PG\cn %+@(RCMsg/ T9iQP.R wKm{@X*L?$UZs@\6'9VBd tpy ,,l$% :8R4#@ax߾< l; `7lX`fe` 0y>} ,*v0&fDx)p =}@XqT2{sWu]Nh9 4`z<ؙ!l@ꘁygʱ~| &l>;\ #7-`Ɉ{& i`,4zXS 3yȘ'aVY  XA6&fL40K*Fpi'n0K1<{AV^Ґʈ]:Z<ˆ%.mZϟ }bf&_.`pPe,`Pꐀ/PRBZ^;`p`ȳ3|fbp3AI hclR @K@`onn\w!pi< -Y XŠ3#fI72p3Wɠ3\ps cz pz`ٲ@O8l^эZfj0Ap {0h)K}`p \ @xG怞Vl+ñM[,`8q2?= ޾p5SW0<~AOGܹ[w ZMMоS fPAZش a#X(,? GnE`H9x1Jn{)xDNAA>t<&ɟ>}pcU5E'7+p+ ں kV`xC0D.bP dsq Ë ,@O𫃓*,XR@46zE5G.\pc`q0†SPJAEMQX`ecfKax|+% `v@B`FH҂R'U63h{IB@}20i]ā$'PcYCLj @x; 0Hbd57!LbZPO0= &䤁nb Ckf} ßWW W'<}$XHf`N8@Qh !9-e  O| 8 2n&cR}@-U+($'h&C) 1--f@XEKNB c4ڀA]^PVp Á1! [D@Q)UFԡE?,ys O.f89&` u!nmE&ELcD"$O\ ^Q>`@d'!?U^*Nǣ':& G&AU}PY8xÅkPUq!Ñ@=Oq `%;_ "}m4$G6/D .'?p/ag&@QP>'G %867G^^ ą`3WArfMHA FX tu<b~Yd[[=C.36B֛38q Аx=_/r2 =41F(fB@__#) q40& AՃT)12ˋ38p%<=@gؿkOkjJ3890 r \t+ٳ}ogM$5 Xho_L6i`ן۶]_X>9nbA`4@[ρ"? Ac<J30< @* LrTOg`Kt8a|lؑH-ܿ AF&@6029޽n818 R3ɉ< yFF\шɆRAĎógAyA &$vÇ//,^./CcCEпa|P ܽaɒ3 oT<^|&$3() !āy0iiIsp%* X-2&d6rD<$p+j]0eJR<@Hy>~~H@֟~8f&&vD3@ʀHh ___O Ǐ?rH B)F>}߾0P)AVv/jb`ceab~V66DG8NC=$v 31@!ǀW|g,߿|3|o 1q.|aFFZ.iz>hw,B 7n<a03S4 $a= |x@% pez{?*?.z;UT`yT&C!;w^zhyL7N8c`!.ΊXv50XBc5ۗ޼x?y{G:8_@RVu к P̐İaMebֺ<*B3|xS@S lw ?df9M'Oc8uX **V;I@<Pp038 l å^Ex ~gxɠ X9Aރ:H Y B |_ ^af6*9,(@ <@y `SzP 21A0 o}et 7򓁏 yK f8S4ol < c5X<֔O0()h- n| 1/  NV Ullj(O8 4ܬ<7~`C~د!WKM`^ϰn˭@\KQQF @ptv;/]z*f ;#'( 0\L& ,60?ݻY@ؼcU:l ̴??`ǟ.y>```v50,H@:sÑ#>Ą!@]IfAl>F&?9~f=t`1!3 :L0mS wa w&] 5c@i764% Op!y"1D??/// -<$]?>!g R G(?kkKK3V`[y\TIXY)CbX=¬F9J* PaXó_c=gxr.6` ,B*1` } + Þǟ~dxPAKK >@!BnzpcK!ye/ ޵ȋ'7 e>FpbF=^rޟcA\ᝏ l G9@$ RO|= }A%)X2%-Ǡj^>gmIy_%P01T6YPM?>O bbl /~D߰p30;Uje`Xq_c:peF`ؼ`d -PevS,@!KKEc0k3,Zt`>`[%"BX?b|f`X[* 56\$ n> e `y 2 * a@Po4)HP: >x|eAjf `mn1󌁙wt:(1+(.9j b`l}WT x 9 0Cuu Ri)Ó˗/d8LB1n x #PGׯ] 5d&@ j1TQ@A[U߿QMC r%22 @E 3030HJBh "c +4 3l00=<a9  u b r @=.]b0ZMIIn [`āki ዊ20DD Pw:uu a'X*@`APFcOCV3/%̿,`4@2TS/Q" @~ JQU ffF>`&?( @ L23ʊ""_{oA?@ > ?P#27>pj0@ > cb :oBj. @`20? +(2DqH H-T|;Ќ.Y 34(psAT00̝HNf`X`ǫW ~<2` x!X 20UP PwC !B)61* BC/R@aK.W363oS =B1f0@a  ^-!WMbx} iUM̽IENDB`gosa-core-2.7.4/doc/core/es/lyx-source/images/filesaveas.png0000644000175000017500000000234510442562727022367 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<wIDATxb?Cnl  >C`1A$D _4-O'H X@:X(3yyYi{g0s*y"w=kd!H?ͅM`5 _;+Q rd1 ȯePn|?_?N0/eaZ[ #/## R_20u0ػ1y_1} X@q+D3dȾ ߿chG\ba9;/J\x X@./X?Ah1P?'718پerG 7s/|rRY<@B?4C O *͟3?``sa 95 @ @噶3a(2a`-.J|ſ@1 Iv LA"q fEg.a'~ @,4r)eI&JV, t-38ܿ#KF،aa, Y 3 J:? &! dCAAb/ axAݱ >b`A 1D\ Q_'ph ] "C r >`=8 0 9?4c00H]7(#LK203>fPq%,[X> 21᳗`PÔ~?8 3~D@ Pj i@C>WV ܌ CeA  `C`"ۏ? ?˃ߠH4!,(`DH \278wF,@>;A`bܹ?j@287H=@3 〦?NPb1j08y#8200C1c/@@<5@+[4IENDB`gosa-core-2.7.4/doc/core/nl/0000755000175000017500000000000011752422552014152 5ustar mikemikegosa-core-2.7.4/doc/core/nl/html/0000755000175000017500000000000011752422552015116 5ustar mikemikegosa-core-2.7.4/doc/core/nl/html/users/0000755000175000017500000000000011752422552016257 5ustar mikemikegosa-core-2.7.4/doc/core/nl/html/users/list_root.png0000644000175000017500000000152410437070613021001 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/nl/html/users/search.png0000644000175000017500000000177710437070613020242 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/nl/html/users/node33.html0000644000175000017500000000203110766256174020245 0ustar mikemike WebDAV account

    WebDAV account

    Met deze optie kunt u de gebruiker toegang verlenen tot de WebDAV server(s).



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node20.html0000644000175000017500000000300410766256174020242 0ustar mikemike E-mail

    E-mail

    Het E-mail account is gekoppeld aan de E-mail server. Om het E-mail account te activeren dient u op de knop E-mail account aanmaken te drukken.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node12.html0000644000175000017500000000421010766256174020243 0ustar mikemike System vertrouwen

    System vertrouwen

    Systeem vertrouwen wordt gebruikt om toegang tot verschillende Unix systemen en apparaten door de gebruiker te beheren en/of in te perken.

    De vertrouwensmodus kan als volgt ingesteld worden:

    • gedeactiveerd: De gebruiker kan zich op alle UNIX systemen aanmelden.
    • volledige toegang: De gebruiker kan zich op alle UNIX systemen aanmelden.
    • sta toegang op deze computers toe: De gebruiker mag zich alleen op de opgegeven UNIX systemen aanmelden.

      • Toevoegen: Klik op de knop Toevoegen om UNIX computers toe te voegen, waarop de gebruiker in mag loggen. Let op dat alleen UNIX computers die bekend zijn binnen het systeem voor zullen komen in deze lijst. Druk op de knop Annuleren om de selectie af te breken.
      • Verwijderen: Selecteer een of meerdere UNIX computers uit de reeds bestaande computers waartoe de gebruiker toegang heeft en druk op de knop Verwijderen, om de gebruiker toegang tot deze computers te ontnemen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/select_phone.png0000644000175000017500000000142010437070613021426 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/nl/html/users/node43.html0000644000175000017500000000270110766256174020252 0ustar mikemike Telefoonnummers

    Telefoonnummers

    Hier geeft u de telefoonnummers op, die aan de gebruiker toegekend zijn.

    • Toevoegen: Voer een telefoonnummer links van de knop in en druk op de knop Toevoegen om het telefoonnummer aan de gebruiker toe te kennen.
    • Verwijderen: Selecteer het te verwijderen nummer in de lijst en druk op de knop Verwijderen om het nummer bij de gebruiker weg te halen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/smallenv.png0000644000175000017500000000133510437070613020604 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/nl/html/users/node10.html0000644000175000017500000000266510766256174020255 0ustar mikemike Groep lidmaatschap

    Groep lidmaatschap

    Gebruik de knoppen Toevoegen en Verwijderen om de gebruiker aan groepen toe te voegen of van groepen te verwijderen. De knop Toevoegen geeft de lijst met groepen die door de systeembeheerder aangemaakt zijn weer. De gebruiker kan lid zijn van een of meerdere groepen. De gebruiker is sowieso lid van de primaire groep. De primaire groep hoeft dan ook niet hier nogmaals gekozen te worden.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node34.html0000644000175000017500000000205610766256174020255 0ustar mikemike PHPGroupware account
    PHPGroupware account

    Met deze optie kunt u de gebruiker toegang verlenen tot de PHPGroupware server.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node25.html0000644000175000017500000000261110766256174020252 0ustar mikemike Samba

    Samba

    Om een Samba / Windows account aan te maken voor de gebruiker, klikt u op de knop Samba account toevoegen.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/mailto.png0000644000175000017500000000117310437070613020250 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8(IDAT8œAKTQ׹yXf-f˚SF#J ČV>F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/doc/core/nl/html/users/list_new_user.png0000644000175000017500000000142410437070613021644 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "Ω2IDAT8ˍKHT{XfYkT{HaPTPAI )*-Z1l A$A5BT"hX#fFf²(:&<noŏEfmƿ[I0bKt0-t6"G){0|砨8h[א[Z?j=IK4nK{̖="B|nקis3VP>بH$r:bqih !"~Z.I !J|eRBNA(i{ @](dw=/ݼ2LCAW=w*Մi 4*A{p)|nu"Tsht <®) aIo喭=B~@`ݾէw:uB33QĞsȩk2WHKPո(ɺm%+ z=h*x“mҎQ t~ХSIENDB`gosa-core-2.7.4/doc/core/nl/html/users/users.css0000644000175000017500000000245610766256174020152 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN. { } #hue104 { color: #0000ff; } #hue236 { color: #000000; } #hue238 { color: #000000; } #hue242 { color: #000000; } #hue244 { color: #000000; } #hue493 { color: #000000; } #hue494 { color: #000000; } #hue495 { color: #000000; } #hue507 { color: #ff0000; } #hue508 { color: #ff0000; } #hue55 { color: #000000; } #hue99 { color: #000000; } gosa-core-2.7.4/doc/core/nl/html/users/labels.pl0000644000175000017500000000025010437070613020047 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/nl/html/users/node29.html0000644000175000017500000000331510766256174020260 0ustar mikemike Verbindingen

    Verbindingen

    Onder dit tabblad bevinden zich diverse opties om de account eigenschappen en mogelijkheden van een gebruiker verder uit te breiden (afhankelijk van de beschikbare diensten binnen een organisatie):



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node1.html0000644000175000017500000002372610766256174020176 0ustar mikemike Gebruikerslijst

    Gebruikerslijst

    De beheerder kan account informatie aanmaken, veranderen of bekijken door op de Gebruikers knop in het Beheer menu aan de linkerkant te klikken. De Gebruikers Beheer pagina die getoond wordt, is het uitgangspunt voor alle account beheertaken en is verdeeld in drie kolommen.

    • De eerste kolom bevat de namen van de gebruikers en de afdelingen waarbinnen zij ingedeeld zijn (alfabetisch gesorteerd).
    • De tweede kolom bevat knoppen voor snelle toegang tot verschillende account eigenschappen van de gebruiker (alleen beschikbaar indien de betreffende eigenschap geactiveerd is). Daarnaast dient deze kolom voor een snel overzicht van geactiveerde eigenschappen van het account van de gebruiker.

      • De mogelijke iconen en hun betekenis:
        Icoon Betekenis
        Image penguin Gebruiker beschikt over algemene eigenschappen
        Image select_user Gebruiker beschikt over een UNIX account
        Image smallenv Gebruiker beschikt over Omgevings instellingen
        Image mailto Gebruiker beschikt over een E-mail account
        Image select_phone Gebruiker beschikt over een Telefoon account
        Image fax_small Gebruiker beschikt over een Fax account
        Image select_winstation Gebruiker beschikt over een Samba/Windows account
        Image select_netatalk Gebruiker beschikt over een Netatalk account
    • De derde kolom bevat knoppen voor de beschikbare acties (knippen, kopieren, bewerken, verwijderen, wachtwoord)
    De knoppen (Image list_root, Image list_back, Image list_home, Image list_reload) dienen voor navigatie binnen de afdelingshierarchie:

    • Image list_root Helemaal naar boven (hoofd afdeling)
    • Image list_back Een afdeling naar boven
    • Image list_home Naar de basis van de gebruiker
    • Image list_reload Huidige afdeling verversen
    Daarnaast is het mogelijk de weergave van gebruikers met behulp van filters te beinvloeden (met Filters Image rocket aan de rechter zijde):

    • Op namen zoeken:

      • Door op * (asterisk) te klikken worden alle namen getoond
      • Het klikken van een letter, laat alle gebruikers zien waarvan de naam met de betreffende letter begint
      • Het klikken van een cijfer, laat alle gebruikers zien waarvan de naam met het betreffende cijfer begint
    • Verder zoekopties:
      (De volgende filters werken zodanig dat alleen gebruikers getoond worden, die over tenminste een van de geselecteerde opties beschikken; Standaard worden alle echte gebruikers getoond; ofwel geen sjablonen)

      • Toon sjablonen: Toont sjablonen voor gebruikers (standaard uitgeschakeld)
      • Toon functionele gebruikers: Gebruikers die alleen over de algemene informatie beschikken
      • Toon Unix gebruikers: Gebruikers die over Unix mogelijkheden beschikken
      • Toon E-mail gebruikers: Gebruikers die over E-mail mogelijkheden beschikken
      • Toon Samba gebruikers: Gebruikers die over Samba/Windows mogelijkheden beschikken
      • Toon Proxy gebruikers: Gebruikers die over een proxy account beschikken
    • Daarnaast kan de lijst met behulp van delen van namen en complexere reguliere expressies verder beperkt worden met behulpt van het invoerveld achter het icoon Image search. In dit veld kunt u cijfer en letter combinaties invoeren om de lijst verder te beperken. Om uw selectie door te voeren dient u op de knop Filter toepassen te drukken.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node44.html0000644000175000017500000000323010766256174020251 0ustar mikemike Telefoon hardware

    Telefoon hardware

    Telefoon Selecteer de telefoon van de gebruiker uit de lijst
    Voicemail PIN-code* Geef de vier cijferige PIN-code op, die de gebruiker in moet geven om deVoice mailbox te kunnen beluisteren
    Telefoon PIN-code* Geef de vier cijferige PIN-code op, die de gebruiker in moet geven om zich bij de telefoon aan te melden.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/penguin.png0000644000175000017500000000170410437070613020430 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<VIDATxbd@:::ibbblllʿ~bxGmM3 fgg|)7os)L@ 55K,>?cƌ@@eX &HJJ9߿eXh=Û?xãXXXT@ R@,HDܹs FF ߾`w u Ve Ei]]]_W cױ| / Ni 7$@8''ׯ_ oV~)3 (#߾}@ ͹@2 ?5Bo߾ "" ((y0aUȀ&%r@04߾ b_ ğ^lٺ?cW çO>~+3Öm;?^ze5PM>VVFSfݼyYAJWa?TAH>ÏO^?^I`p| 33==v[,exnfg N* ٘AA %# Ƣ36&!-gE,@pA7@|+ ܫl_}0IENDB`gosa-core-2.7.4/doc/core/nl/html/users/node45.html0000644000175000017500000000237610766256174020264 0ustar mikemike Telefoon macro

    Telefoon macro

    Selecteer uit de lijst met macro's de macro die op de gebruiker van toepassing moet zijn. Indien door de beheerder opgegeven bij het aanmaken van de macro, kan het nodig zijn om nog macro-specifieke opties in te moeten stellen, zoals bijvoorbeeld een Mailbox, doorschakelnummer, doorschakeltijd etc.).




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node4.html0000644000175000017500000000267610766256174020202 0ustar mikemike Algemene informatie

    Algemene informatie

    • Om het bewerken van gebruikers (ook nieuwe gebruikers) af te sluiten en op te slaan, dient u op de knop Opslaan rechtsonder te drukken. Om de bewerkingen ongedaan te maken, drukt u op de knop annuleren, die u ook rechtsonder vindt.
    • Alle invoervelden met een rode asterisk (*) zijn verplichte velden. Deze velden moeten pers ingevuld worden.
    • In de rechter bovenhoek vindt u de volledige DN (unieke LDAP naam) van de gebruiker die momenteel bewerkt wordt.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node42.html0000644000175000017500000000262710766256174020260 0ustar mikemike Telefoon

    Telefoon

    Om een telefoon account te activeren voor een gebruiker, drukt u op de knop Telefoon account aanmaken.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/WARNINGS0000644000175000017500000000025510437070613017430 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/nl/html/users/users.html0000644000175000017500000000745210766256174020327 0ustar mikemike Gebruikers beheer

    Gebruikers beheer





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node18.html0000644000175000017500000000172110766256174020255 0ustar mikemike Hotplug apparaten

    Hotplug apparaten




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node22.html0000644000175000017500000000322010766256174020244 0ustar mikemike Alternatieve adressen

    Alternatieve adressen

    Alternatieve adressen zijn E-mail adressen waaronder de gebruiker ook E-mail kan ontvangen. De E-mail die naar deze adressen verstuurd worden, zullen opgeslagen worden onder het account dat opgegeven is bij het primaire adres. Gebruik de knop Toevoegen om aliasen toe te voegen en de knop Verwijderen om een alias te verwijderen. Let erop dat de gebruikte domein componenten in de aliasen wel door de opgegeven mailserver ontvangen kunnen worden. Het heeft bijvoorbeeld geen enkele zin om een hotmail account als alias op te geven, simpelweg omdat E-mail gericht aan hotmail adressen, nooit aan zullen komen op uw E-mail server




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/rocket.png0000644000175000017500000000147410437070613020256 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/nl/html/users/node16.html0000644000175000017500000000170510766256174020255 0ustar mikemike Inlog scripts

    Inlog scripts




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/list_home.png0000644000175000017500000000154110437070613020745 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/nl/html/users/select_netatalk.png0000644000175000017500000000147410437070613022131 0ustar mikemikePNG  IHDRabKGD pHYs  tIME%5)IDAT8ˍKh\eut2:FcCх|v#%P[pSE V\RPTčR*-U"ZֶBAkJ"6qNssg -]l(֦Sj-*/"=k/mHJXDQu&Rp^v~s`(OOd+שb4?|u->H}.'OЊϞc߰c.$^Q2,]fn! }~D!L< ,(XO|U04Te!-|^mnvҮZ.F)=Il8}zbN_oDmIENDB`gosa-core-2.7.4/doc/core/nl/html/users/node47.html0000644000175000017500000000324710766256174020264 0ustar mikemike About this document ...

    About this document ...

    Gebruikers beheer

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/users/ users.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node32.html0000644000175000017500000000323710766256174020255 0ustar mikemike Open-Xchange account
    Open-Xchange account

    Met deze optie geeft u de gebruiker toegang tot de Open-Xchange groupware server.

    • Onthouden: Hier geeft u opties voor de portaal pagina van Open-Xchange op.

      • Afspraken: Hoeveel dagen van te voren, wilt u dat afspraken getoond worden.
      • Taken: Hoeveel dagen van te voren wilt u dat taken getoond worden.
    • Gebruikersinformatie

      • Tijdzone: Hier geeft u de tijdzone aan. Let erop dat u alle gebruikers de juiste tijdzone geeft, aangezien anders problemen op kunnen treden bij het plannen van afspraken onderling (tijdsverschillen).



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node2.html0000644000175000017500000000314110766256174020164 0ustar mikemike Gebruikersaccount aanmaken

    Gebruikersaccount aanmaken

    Om een nieuw account aan te maken klikt u op de knop Image list_new_user. Volg de instructies op die gegeven worden bij het aanmaken van het account. Op het einde van het aanmaken, dient u een wachtwoord op te geven voor het nieuwe account.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/select_winstation.png0000644000175000017500000000124310437070613022517 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME &(2*0IDATx=Lq]+M TzmTbR`(!!02982888Hd1܌F ba)QN g%'%(GG-*s څ˳cn&8K+1%6(*+Pzd߾8_yߧ G}dX,L=\Ja2RZ!nu_?(z+b4[O ԿouJ]q:1e– |'hw=`v)#24LaT\A2e ?T:ُVJA*]C8M;C޸vhxUάlHf vwi湔!w!atNs7/Ab:V H@!ݼIsQOdw` Z,ּDQ[¾p3xZg= $cj!]L~UM4wynL 0?Fh&VP|6_t&)[9Y.:{7:?=e aOIENDB`gosa-core-2.7.4/doc/core/nl/html/users/select_user.png0000644000175000017500000000136110437070613021277 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe Alternatieve Fax nummers

    Alternatieve Fax nummers

    Het is mogelijk meerdere Fax nummers aan de gebruiker toe te kennen. Alle alternatieve nummers die aan de gebruiker toegekend zijn, dienen in de lijst opgenomen te worden.

    • Toevoegen: Om een nummer toe te voegen, geeft u een nummer op in het invoerveld links van de knop Toevoegen en daarna drukt u op de knop Toevoegen.
    • Lokaal toevoegen: Om een nummer toe te voegen dat al aan een andere gebruiker toegekend is, gebruikt u de knop Lokaal toevoegen. U kunt nu uit de lijst n of meerdere gebruikers selecteren, wiens Fax nummers toegekend moeten worden aan de huidige gebruiker.
    • Verwijderen: Selecteer n of meerdere regels (met de Ctrl-toets kunt u meerdere regels selecteren) en druk op de knop Verwijderen om Fax nummers te verwijderen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/list_back.png0000644000175000017500000000153610437070613020721 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Unix

    Unix

    U dient op de knop POSIX Account toevoegen te drukken om een UNIX account te activeren voor de gebruiker.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/list_reload.png0000644000175000017500000000161610437070613021266 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/nl/html/users/node27.html0000644000175000017500000001310610766256174020255 0ustar mikemike Terminal Server

    Terminal Server

    • Sta inloggen op de terminal server toe
    Persoonlijke map Mention the path of the user's home directory in notation UNC ex: \\SERVER\homes\user. Choose on the scroll list the letter associated to the user's home directory.Het pad naar de persoonlijke map van de gebruiker over het netwerk in UNC notatie (bijv. \\SERVER\homes\gebruikersnaam). Selecteer de stationsletter uit de lijst om op te geven met welk station de persoonlijke map verbonden moet worden bij het inloggen van de gebruiker.
    Profile pathProfielpad Mention the path to the user profileHet pad op een server in UNC notatie, waar het zwervende profiel van de gebruiker zich bevindt (bijv. \\SERVER\profiles\gebruikersnaam).

    • Client configuratie voor initieel programma overnemen
    Initiel programma Het programma dat bij het starten van de sessie uitgevoerd moet worden
    Werkdirectory De werkmap waarbinnen het initiele programma uitgevoerd wordt

    • Terminal Service timeouts (in minuten):
    Max. verbindingsduur De maximale duur dat een gebruiker verbonden mag zijn. Na het verstrijken van deze duur wordt de sessie verbroken.
    Max. verbrekingsduur Een niet verbonden sessie van de gebruiker wordt na verstrijken van deze duur automatisch beindigd.
    Max. inactiviteitsduur Een verbonden maar inactieve sessie van de gebruiker wordt na verstrijken van deze duur automatisch beindigd.

    • Terminal Service client apparaten:
    Verbindt client schijven bij inloggen Verbindt lokale schijven van de Client als netwerkschijven bij inloggen
    Verbindt client printers bij inloggen Verbindt de lokale printer van de Client als netwerkprinter bij het inloggen
    Standaard printer als client printer De lokale standaard printer van de Client als standaard printer gebruiken


    • Terminal Service diverse:
    Schaduwen van andere sessie Deze optie is van belang voor beheer en controle op afstand:

    • gedeactiveerd: Schaduwen is uitgeschakeld:
    • invoer met notificatie: Sessie kan overgenomen worden. Gebruiker wordt om toestemming gevraagd
    • invoer zonder notificatie: Sessie kan overgenomen worden. Gebruiker wordt niets gevraagd
    • geen invoer met notificatie: Sessie kan alleen bekeken worden. Gebruiker wordt om toestemming gevraagd
    • geen invoer zonder notificatie: Sessie kan alleen bekeken worden. Gebruiker wordt niets gevraagd
    Bij verbroken verbinding of timeout U kunt opgeven of een sessie die verbroken wordt (door de gebruiker, of door het overschreiden van de tijdslimiet) verbroken blijft of automatisch afgesloten wordt. Indien u verbreken kiest, dan blijft de sessie behouden.
    Herstel sessie indien verbroken Geef op of een verbroken sessie alleen vanaf de vorige client hervat kan worden, of vanaf elke client




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node13.html0000644000175000017500000000317010766256174020250 0ustar mikemike Omgeving

    Omgeving

    Click on the button add an environment extension to activate the configuration space.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node30.html0000644000175000017500000000470010766256174020247 0ustar mikemike Proxy account
    Proxy account

    Met deze optie kunt u de gebruiker toegang tot de Proxy server verlenen. Binnen veel organisaties wordt een proxy server gebruikt om toegang tot Internet te beperken en/of monitoren. Een gebruiker zonder Proxy account kan Internet niet op. Voor alle gebruikers met een Proxy account geldt dat de beheerder, indien gewenst, de toegang tot Internet en websites kan monitoren.

    • Filter ongewilde inhoud (bijvoorbeeld pornografische of geweld gerelateerde inhoud): Deze optie activeert het inhoudsfilter voor de gebruiker. Dit betekent dat het door de systeembeheerder ingestelde inhoudsfilter van toepassing wordt op door de gebruiker bezochte websites. Zodra een website inhoud bevat die door het filter herkent wordt als zijnde ongewenst, wordt de toegang voor de gebruiker onmiddelijk geblokkeerd.
    • Beperk proxy gebruik tot tijd: Met deze optie is het mogelijk om de toegang tot Internet te beperken tot een bepaalde tijdspanne (bijvoorbeeld tijdens kantoortijd). Let erop dat deze tijd voor alle dagen dezelfde is. De gebruiker krijgt een melding indien deze buiten de ingestelde tijd een website wil bezoeken.
    • Beperk proxy gebruik met quota: Met deze optie kunt een maximaal toegestane hoeveelheid dataverkeer gedurende een bepaalde periode opgeven. De gebruiker kan zodra de maximale hoeveelheid dataverkeer verbruikt is niet meer het Internet op, totdat de huidig opgegeven periode verstreken is.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node23.html0000644000175000017500000000653110766256174020255 0ustar mikemike E-mail opties

    E-mail opties

    Beheer van de E-mail opties voor de gebruiker:

    • Geen aflevering in eigen mailbox: Stuur alle E-mail voor dit adres door naar het adres of de adressen in het Stuur berichten door naar deel. Er vindt geen aflevering in de eigen mailbox plaats.
    • Activeer afwezigheidsbericht: Verstuur het bericht dat opgegeven is in het Afwezigheidsbericht onderdeel naar de afzender van een E-mail bericht, zodra dit bericht ontvangen wordt.
    • Verplaats E-mail met een spam nivo groter dan [Nivo] naar map [Map]: Verplaats E-mails met een spam nivo groter dan [Nivo] bij ontvangst op de mail server naar E-mail map [Map]. Zodra een E-mail binnenkomt bij de mailserver, wordt deze voorzien van een spam indicatie. Deze spamindicatie wordt o.a. aangegeven door een cijfer. Dit cijfer representeert de waarschijnlijkheid dat het bericht een SPAM bericht is. Hoe hoger dit cijfer, hoe groter de kans dat het een SPAM bericht betreft. Normaliter kunt u er vanuit gaan dat een bericht met een cijfer vanaf 5 een SPAM bericht betreft. Stel deze optie niet te laag in, aangezien u anders het risico loopt op normale E-mail berichten automatisch te laten verplaatsen naar uw SPAM map, waardoor de kans ontstaat dat het bericht aan uw aandacht ontsnapt!
    • Wijs E-mail af indien groter dan [Grootte] MB: Wij E-mail af die groter zijn dan [Grootte] MB. Dit betekent dat de gebruiker geen E-mail kan ontvangen die groter is dan [Grootte] MB.
    • Gebruik de Toevoegen of Lokaal toevoegen knoppen om binnengekomen E-mail bericht door te sturen naar andere E-mail adressen (bijv Telefoon, PDA etc.):

      - De Lokkaal toevoegenknop wordt gebruikt om te kiezen uit in het systeem bekende E-mail adressen.

      - De Toevoegen knop om externe adressen te kiezen.

      - De Verwijderen knop om E-mail doorstuur adressen te verwijderen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node24.html0000644000175000017500000000303610766256174020253 0ustar mikemike Geavanceerde E-mail opties

    Geavanceerde E-mail opties

    • De gebruiker mag alleen lokale E-mails versturen en ontvangen: Hiermee kan de beheerder opgeven dat de gebruiker alleen binnen het eigen domein/organisatie E-mail mag versturen en ontvangen. Dit betekent dat de gebruiker niet naar externe personen kan E-mailen of E-mail van externe personen kan ontvangen.
    • Gebruik een eigen sieve script : De gebruiker kan een eigen sieve scripts schrijven om mailbox filtering te beheren. Let op! Dit schakelt alle E-mail opties uit.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node26.html0000644000175000017500000000376510766256174020266 0ustar mikemike Algemeen

    Algemeen

    Persoonlijke map Het pad naar de persoonlijke map van de gebruiker over het netwerk in UNC notatie (bijv. \\SERVER\homes\gebruikersnaam). Selecteer de stationsletter uit de lijst om op te geven met welk station de persoonlijke map verbonden moet worden bij het inloggen van de gebruiker.
    Domein Het Windows domein waarbinnen de gebruiker valt.
    Inlogscript Het script dat op het werkstation van de gebruiker uitgevoerd wordt, bij het inloggen van de gebruiker.
    Profielpad Het pad op een server in UNC notatie, waar het zwervende profiel van de gebruiker zich bevindt (bijv. \\SERVER\profiles\gebruikersnaam).




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node5.html0000644000175000017500000000232710766256174020174 0ustar mikemike Algemeen

    Algemeen



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node17.html0000644000175000017500000000171310766256174020255 0ustar mikemike Share verbinden

    Share verbinden




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/fax_small.png0000644000175000017500000000142310437070613020727 0ustar mikemikePNG  IHDRagAMA7IDATx}k\U~mqlF &TjD4PDPp#ؔ Eѭ !l])2։|ܙ0s>]Y^xy~⬭}Y:S@\ ^X^^2a"<<h|JucѸ~wccFYH)QJJ<Pַ?yZ?0AO }FÔa2L =zݔVK;$I{eee!I8&5os5 O'Gєxï *EQda~gKw-`c}3⽆4osKweYҚ0#5eY9BH9;Th+(Z#,'(Za! }JkvVc ZYӪƘ+5ƘAcDQhcRR@V}/.BW>RJ<ϋn{>;;f-Ӕ`~?PoV8pΡ4r||L$ςv4w=s,c'b| 4#=2c(˒_i8澨z8?~*ty~\qůTi9j2 C0R\ 9GV#"Ӹwd2) ^K/b{IENDB`gosa-core-2.7.4/doc/core/nl/html/users/node15.html0000644000175000017500000000170510766256174020254 0ustar mikemike Kiosk profiel

    Kiosk profiel




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node40.html0000644000175000017500000000245610766256174020256 0ustar mikemike Blokkeerlijsten

    Blokkeerlijsten

    Blokkeerlijsten dienen ervoor om zowel het ontvangen van en versturen naar bepaalde nummers aan banden te kunnen leggen. Dit is bijvoorbeeld een effectieve manier om advertentie fax-en te blokkeren. De dialogen voor zowel inkomende als uitgaande faxen zijn volledig identiek. We volstaan hier dus bij het uitleggen van de knop Bewerken.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node36.html0000644000175000017500000000304210766256174020253 0ustar mikemike Fax

    Fax

    Om Fax mogelijkheden voor een gebruiker in te schakelen, klikt u op de knop Fax account aanmaken.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node6.html0000644000175000017500000001145710766256174020201 0ustar mikemike Persoonlijke informatie

    Persoonlijke informatie

    Achternaam* De achternaam van de gebruiker
    Voornaam* De voornaam van de gebruiker
    Inlognaam* De naam waarmee de gebruiker inlogt
    Aanhef De aanhef van de gebruiker (Bijv. Meneer, Dhr, Mevrouw)
    Academische titel De academische titel van de gebruiker (Bijv. Dr., Ing, Mr)
    Geboortedatum Klik op de knop Stel in om een keuzelijst te laten verschijnen
    Geslacht Maak uw keuze uit de lijst voor het geslacht van de gebruiker
    Voorkeurstaal Maak uw keuze uit de lijst voor de voorkeurstaal van de gebruiker (nl_NL=Nederlands, en_EN=Engels, etc)
    Basis De afdeling van de gebruiker (het aanmaken van de afdeling kan door middel van de afdelingen knop in het linkermenu van het beheer onderdeel).
    Plaatje Om een foto of plaatje van de gebruiker op te slaan, drukt op de knop Verander plaatje... Selecteer de gewenste afbeelding. De afbeelding wordt nu getoond. Om de keuze vast te leggen, drukt u op de knop Opslaan. Indien u de afbeelding niet wenst op te slaan, drukt u op de knop Annuleren.
    Adres Het priv adres van de gebruiker
    Telefoon priv Het priv telefoonnummer van de gebruiker. U dient dit volgens het internationale formaat in te voeren. Bijvoorbeeld +31 40 2390740
    Homepage De URL van de homepage van de gebruiker (bijv. http://www.careworks.nl)
    Wachtwoord encryptie De manier waarop het wachtwoord intern versleuteld opgeslagen wordt. Maak uw keuze door uit de lijst te selecteren
    Certificaten Klik op de knop Bewerk certificaten... om de certificaten van de gebruiker te beheren. Met GOsa kunt u drie types certificaten importeren. Klik op Opslaan om te beeindigen.
    Kerberos Klik op de knop Bewerk eigenschappen om Kerberos eigenschappen te bewerken.





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node28.html0000644000175000017500000000632110766256174020257 0ustar mikemike Toegangsopties

    Toegangsopties

    De onder toegangsopties genoemde instellingen dienen voor het aanpassen van wachtwoord instellingen onder Windows en voor het beperken van de toegang tot werkstations. U dient op te letten welke instellingen u van toepassing laat zijn.

    • De volgende wachtwoord opties zijn beschikbaar:

      • Gebruiker mag zijn wachtwoord vanaf een werkstation wijzigen: Zodra deze optie geselecteerd is, mag de gebruiker het wachtwoord vanaf een Windows werkstation wijzigen (door bijvoorbeeld Ctrl-Alt-Del in te drukken).
      • Inloggen op Windows werkstation zonder wachtwoord toestaan: Zodra deze optie geselecteerd is voor een gebruiker, mag de gebruiker inloggen zonder een wachtwoord te moeten gebruiken.
      • Blokkeer het Samba/Windows account: De gebruiker kan niet meer op een Windows werkstation inloggen.
      • Wachtwoord verloopt op [Datum]: Het wachtwoord verloopt op [Datum]. Het account wordt daarna automatisch geblokkeerd.
      • Stel laatste inlogtijd in op: Optie is niet nuttig! Hiermee kan de laatst bekende inlogtijd aangepast worden.
      • Stel laatste uitlogtijd in op: Optie is niet nuttig! Hiermee kan de laatst bekende uitlogtijd aangepast worden.
      • Het account verloopt op [Datum]: Geef de datum [Datum] op waarop het account automatisch geblokkeerd wordt.
    • Sta alleen verbindingen vanaf deze werkstations toe: Indien u de toegang tot werkstations wil beperken voegt u hier werkstations toe. De gebruiker mag op elk werkstation inloggen, zolang de lijst leeg is.

      • Toevoegen: Om een werkstation toe te voegen, drukt u op de knop Toevoegen en selecteert u een of meer werkstations uit de lijst. Let op dat deze selectie alleen Windows werkstations betreft.
      • Verwijderen: Om werkstations waartoe de gebruiker toegang heeft te verwijderen, drukt u op de knop Verwijderen. Vervolgens selecteert u de werkstations die u wilt verwijderen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node21.html0000644000175000017500000000330110766256174020243 0ustar mikemike Algemeen

    Algemeen

    Primair adres* Het E-mail adres van de gebruiker
    Server Selecteer de server waar het E-mail account van de gebruiker opgeslagen dient te worden
    Quota gebruik Geeft de huidig gebruikte en beschikbare opslagruimte van de gebruiker aan
    Quota grootte De maximale grootte van de Mailbox




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node9.html0000644000175000017500000000433010766256174020174 0ustar mikemike Algemeen

    Algemeen

    Persoonlijke map* Het pad naar de persoonlijke map van de gebruiker
    Shell De Unix shell die gebruikt dient te worden bij het aanmelden van de gebruiker. (/bin/false of /bin/true zorgt ervoor dat de gebruiker niet in kan loggen op een UNIX systeem).
    Primaire groep De primaire groep van de gebruiker. (Voor de aanmaak van groepen, gaat u naar het Beheer onderdeel en klikt u op de Groepen knop)
    Status Geeft aan of het account actief is of niet
    Forceer UID/GID Hiermee kunt u de UID/GID van een gebruiker naar een bepaalde waarde forceren. Gebruik deze optie alleen indien u weet wat u doet en verzeker uzelf ervan dat de opgegeven waardes niet vergeven zijn!




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node35.html0000644000175000017500000000314410766256174020255 0ustar mikemike Intranet account
    Intranet account

    Met deze optie kunt u de gebruiker toegang verlenen tot Intranet server(s). Normaliter wordt deze optie gebruikt om toegang tot interne websites en/of webapplicaties binnen de organisatie te verschaffen.

    PPTP account

    Met deze optie kunt u de gebruiker toegang tot de VPN server (PPTP) verschaffen.

    PHPScheduleit account

    Met deze optie kunt u de gebruiker toegang tot de PHPScheduleit software verlenen.

    GLPI account

    Met deze optie kunt u de gebruiker toegang tot de GLPI software voor inventaris beheer geven.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node31.html0000644000175000017500000000527210766256174020255 0ustar mikemike FTP account
    FTP account

    Met deze optie geeft u de gebruiker toegang tot de FTP server(s):

    • Bandbreedte: Maakt beperking van bandbreedte gebruik (door de gebruiker) mogelijk

      • Verstuur bandbreedte: De maximale bandbreedte voor de gebruiker bij het versturen van bestanden naar de server (Upload) in kb per seconde. De beperking is niet actief indien u hier 0 opgeeft.
      • Ontvangst bandbreedte: De maximale bandbreedte voor de gebruiker bij het ontvangen van bestanden van de server (Download) in kb per seconde. De beperking is niet actief inhdien u hier 0 opgeeft.
    • Verhouding: Het is mogelijk de gebruiker af te dwingen om een bepaalde verhouding van te versturen en te ontvangen bestanden te moeten behouden.

      • Verstuurde / Ontvangen bestanden: Hier geeft u de verhouding op (Bijvoorbeeld: 3/1, betekent dat de gebruiker 3 bestanden moet versturen, alvorens er 1 bestande ontvangen kan worden).
    • Quota: Beperking van het gebruik in hoeveelheid dataverkeer of hoeveelheid bestanden

      • Bestanden: De maximale hoeveelheid bestanden die de gebruiker mag versturen en ontvangen. De beperking is niet actief indien u hier 0 opgeeft.
      • Grootte: De maximale hoeveelheid dataverkeer die de gebruiker mag verbruiken voor versturen en ontvangen. De beperking is niet actief indien u hier 0 opgeeft.
    • Diverse:

      • Schakel FTP toegang tijdelijk uit: Hiermee kunt u de toegang tot de FTP server(s) tijdelijk uitschakelen, zonder dat meteen alle FTP intstellingen van de gebruiker verloren gaan.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node14.html0000644000175000017500000000167110766256174020255 0ustar mikemike Profielen

    Profielen




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node11.html0000644000175000017500000000552010766256174020247 0ustar mikemike Account

    Account

    Dit onderdeel gaat over het beheer van het wachtwoord van de gebruiker (dit betreft vanzelfsprekend alleen het UNIX account van de gebruiker). Let erop dat u geen conflicterende opties selecteert, aangezien dit het account van de gebruiker effectief onbruikbaar kan maken:

    • Het wachtwoord moet bij de eerste aanmelding gewijzigd worden: Met deze optie wordt afgedwongen dat de gebruiker bij de eerst volgende aanmelding direct het wachtwoord moet veranderen.
    • Het wachtwoord kan pas [Aantal] dag(en) na de laatste wijziging gewijzigd worden: Hiermee wordt afgedwongen dat een gebruiker niet onbeperkt het wachtwoord kan veranderen. [Aantal] geeft het aantal dagen aan, waarbinnen de gebruiker het wachtwoord niet kan wijzigen sinds de vorige wachtwoord wijziging.
    • Het wachtwoord moet na [Aantal] dag(en) gewijzigd worden: Met deze optie verplicht u de gebruiker om na [Aantal] dagen het wachtwoord te veranderen, omdat anders het account geblokeerd wordt. Gebruikers worden van te voren op de hoogte gesteld van het verlopen van het wachtwoord.
    • Wachtwoord verloopt op [Datum]: Indien u deze optie instelt, dan kan de gebruiker niet meer inloggen met het huidige wachtwoord vanaf [Datum].
    • Blokkeer het account na [Aantal] dag(en) inactiviteit nadat het wachtwoord verlopen is: Zodra er gedurende [Aantal] dagen inactiviteit is van het account (geen inloggen van de gebruiker dus), na het verlopen van het wachtwoord, wordt het account geblokkeerd en kan de gebruiker niet meer inloggen.
    • Waarschuw de gebruiker [Aantal] dagen voordat het wachtwoord verloopt: De gebruiker krijgt vanaf [Aantal] dagen, voordat het wachtwoord verloopt een waarschuwing dat het wachtwoord op de ingestelde datum verloopt.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node38.html0000644000175000017500000000264410766256174020264 0ustar mikemike Aflever methodes

    Aflever methodes

    • Schakel Fax gebruik tijdelijk uit: Schakel het Fax account van de gebruiker tijdelijk uit, zonder dat instellingen van het account verloren zullen gaan.
    • Lever Fax als E-mail af: Levert de fax in het geselecteerde formaat af in de mailbox van de gebruiker.
    • Lever Fax af op printer: Levert een fax af op de uit de lijst geselecteerde printer.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/index.html0000644000175000017500000000745210766256174020275 0ustar mikemike Gebruikers beheer

    Gebruikers beheer





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node41.html0000644000175000017500000000324410766256174020253 0ustar mikemike Bewerken:

    Bewerken:

    Zodra u de knop Bewerken indrukt krijgt een dialoogvenster dat uit twee delen bestaat. Aan de linkerzijde vindt u momenteel geldige nummers/lijsten, waartegen in- danwel uitgaande nummers gecontroleerd worden. Om een nummer toe te voegen, geeft u het nummer op in het tekstvelden drukt u op de knop Toevoegen. Om een reeds bestaande lijst uit een sub-afdeling te selecteren, selecteert u aan de rechterzijde de afdeling die de lijst bevat en drukt u op de knop Lijst aan blokkeerlijst toevoegen. Om n of meerdere lijsten uit de lijst de verwijderen, selecteert u de nummer(s)/lijst(en) en drukt u op de knop Verwijderen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node37.html0000644000175000017500000000300610766256174020254 0ustar mikemike Algemeen

    Algemeen

    Fax* Het Faxnummer van de gebruiker
    Taal Kies de gewenste taal uit de lijst (nl_NL=Nederlands, en_EN=Engels etc.)
    Aflever formaat Het formaat waarmee faxen bij de gebruiker afgeleverd worden. Maak een keuze uit de lijst




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node7.html0000644000175000017500000000602710766256174020177 0ustar mikemike Organisatie informatie

    Organisatie informatie

    Organisatie De naam van de organisatie (bijv. CareWorks)
    Afdeling De naam van de afdeling (bijv. Administratie)
    Afdeling nr. Het nummer van de afdeling (bijv. 21)
    Personeel nr. Het personeelsnummer van de medewerker
    Functie De functie van de medewerker
    Kamer nr. Het kamernummer van de medewerker
    Telefoon Het telefoonnumer van de medewerker
    GSM Het GSM nummer van de medewerker
    Pieper Het pieper nummer van de medewerker
    Fax Het fax nummer van de medewerker
    Plaats De plaats van het kantoor of afdeling van de medewerker
    Provincie De provincie waar het kantoor of de afdeling van de medewerker zich bevindt
    Adres Het postadres van het kantoor of de afdeling van de medewerker




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node46.html0000644000175000017500000000206110766256174020254 0ustar mikemike Referenties

    Referenties

    Onder referenties vindt u de relaties van de gebruiker met andere objecten binnen de LDAP server (bijv. Groepen, systemen etc.).


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node3.html0000644000175000017500000000232110766256174020164 0ustar mikemike Een bestaand account bewerken

    Een bestaand account bewerken

    Klik binnen de gebruikerslijst op de gebruikersnaam van de te bewerken gebruiker. De pagina die nu geladen wordt, bevat tabbladen die voor account mogelijkheden staan (momenteel zijn dat bijvoorbeeld Algemeen, Unix, Omgeving etc.)



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/users/node19.html0000644000175000017500000000166610766256174020266 0ustar mikemike Printer

    Printer




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/0000755000175000017500000000000011752422551016434 5ustar mikemikegosa-core-2.7.4/doc/core/nl/html/groups/list_root.png0000644000175000017500000000152410437070613021157 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/nl/html/groups/search.png0000644000175000017500000000177710437070613020420 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/nl/html/groups/node20.html0000644000175000017500000000203410766256174020422 0ustar mikemike Referenties

    Referenties

    Onder referenties vindt u alle koppelingen die deze groep met andere objecten uit de LDAP datanbase heeft.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node12.html0000644000175000017500000000167310766256174020433 0ustar mikemike Printers

    Printers




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/smallenv.png0000644000175000017500000000133510437070613020762 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/nl/html/groups/node10.html0000644000175000017500000000166210766256174020427 0ustar mikemike Shares

    Shares




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/mailto.png0000644000175000017500000000117310437070613020426 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8(IDAT8œAKTQ׹yXf-f˚SF#J ČV>F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/doc/core/nl/html/groups/labels.pl0000644000175000017500000000025010437070613020225 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/nl/html/groups/select_application.png0000644000175000017500000000167710437070613023014 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/nl/html/groups/node1.html0000644000175000017500000001671010766256174020347 0ustar mikemike Groepenlijst

    Groepenlijst

    De beheerder kan groep informatie aanmaken, veranderen of bekijken door op de Groepen knop in het Beheer menu aan de linkerkant te klikken. De Groepen Beheer pagina die getoond wordt, is het uitgangspunt voor alle groep beheertaken en is verdeeld in drie kolommen.

    • De eerste kolom bevat de namen van de groepen en de afdelingen waarbinnen zij ingedeeld zijn (alfabetisch gesorteerd).
    • De tweede kolom bevat knoppen voor snelle toegang tot verschillende groep eigenschappen van de groep (alleen beschikbaar indien de betreffende eigenschap geactiveerd is). Daarnaast dient deze kolom voor een snel overzicht van geactiveerde eigenschappen van de groep.

      • De mogelijke iconen en hun betekenis:
        Icoon Betekenis
        Image select_groups Groep beschikt over UNIX eigenschappen
        Image smallenv Groep beschikt over Omgevings instellingen
        Image mailto Groep beschikt over een E-mail account
        Image select_winstation Groep beschikt over een Samba/Windows account
        Image select_application Groep beschikt over programma eigenschapppen
    • De derde kolom bevat knoppen voor de beschikbare acties (knippen, kopieren, bewerken, verwijderen)
    De knoppen (Image list_root, Image list_back, Image list_home, Image list_reload) dienen voor navigatie binnen de afdelingshierarchie:

    • Image list_root Helemaal naar boven (hoofd afdeling)
    • Image list_back Een afdeling naar boven
    • Image list_home Naar de basis van de groep
    • Image list_reload Huidige afdeling verversen
    Daarnaast is het mogelijk de weergave van groepen met behulp van filters te beinvloeden (met Filters Image rocket aan de rechter zijde):

    • Op namen zoeken:

      • Door op * (asterisk) te klikken worden alle groepen getoond
      • Het klikken van een letter, laat alle groepen zien waarvan de naam met de betreffende letter begint
      • Het klikken van een cijfer, laat alle groepen zien waarvan de naam met het betreffende cijfer begint
    • Verder zoekopties:
      (De volgende filters werken zodanig dat alleen groepen getoond worden, die over tenminste een van de geselecteerde opties beschikken; Standaard worden alle groepen getoond).

      • Toon primaire groepen: Groepen waarvoor geldt dat tenminste n gebruiker de groep als primaire groep ingesteld heeft
      • Toon Samba groepen: Groepen die over Samba/Windows mogelijkheden beschikken
      • Toon programma groepen: Groepen die over programma mogelijkheden beschikken
      • Toon E-mail gropen: Groepen die over E-mail mogelijkheden beschikken
      • Toon functionele groepen: Groepen die alleen over functionele eigenschappen beschikken
    • Daarnaast kan de lijst met behulp van delen van namen en complexere reguliere expressies verder beperkt worden met behulpt van het invoerveld achter het icoon Image search. In dit veld kunt u cijfer en letter combinaties invoeren om de lijst verder te beperken. Om uw selectie door te voeren dient u op de knop Filter toepassen te drukken.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/groups.html0000644000175000017500000000474710766256174020667 0ustar mikemike Groepen beheer

    Groepen beheer





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node4.html0000644000175000017500000000266610766256174020357 0ustar mikemike Algemene informatie

    Algemene informatie

    • Om het bewerken van groepen (ook nieuwe groepen) af te sluiten en op te slaan, dient u op de knop Opslaan rechtsonder te drukken. Om de bewerkingen ongedaan te maken, drukt u op de knop annuleren, die u ook rechtsonder vindt.
    • Alle invoervelden met een rode asterisk (*) zijn verplichte velden. Deze velden moeten pers ingevuld worden.
    • In de rechter bovenhoek vindt u de volledige DN (unieke LDAP naam) van de groep die momenteel bewerkt wordt.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/WARNINGS0000644000175000017500000000025510437070613017606 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/nl/html/groups/node18.html0000644000175000017500000000260010766256174020430 0ustar mikemike Stuur berichten door naar niet groepsleden

    Stuur berichten door naar niet groepsleden

    Hiermee kunt u berichten die in voor deze groep bestemd zijn, automatisch doorsturen naar een ander adres. Druk op de knop Toevoegen om een extern E-mail adres toe te voegen, dat u in het tekstveld ingevuld hebt. Gebruik de knop Lokaal toevoegen om een lokaal E-mail adres toe te voegen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/rocket.png0000644000175000017500000000147410437070613020434 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/nl/html/groups/node16.html0000644000175000017500000000227010766256174020431 0ustar mikemike Alternatieve adressen

    Alternatieve adressen

    Alternatieve adressen zijn E-mail adressen, waaronder ook E-mail ontvangen kan worden door de E-mail groep. U kunt de knop Toevoegen gebruiken om E-mail alias adressen toe te voegen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/list_home.png0000644000175000017500000000154110437070613021123 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/nl/html/groups/node2.html0000644000175000017500000000275210766256174020351 0ustar mikemike Groep aanmaken

    Groep aanmaken

    Om een nieuwe groep aan te maken klikt u op de knop Image list_new_group. Volg de instructies op die hierna gegevn worden om een bstaand account te bewerken.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/select_winstation.png0000644000175000017500000000124310437070613022675 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME &(2*0IDATx=Lq]+M TzmTbR`(!!02982888Hd1܌F ba)QN g%'%(GG-*s څ˳cn&8K+1%6(*+Pzd߾8_yߧ G}dX,L=\Ja2RZ!nu_?(z+b4[O ԿouJ]q:1e– |'hw=`v)#24LaT\A2e ?T:ُVJA*]C8M;C޸vhxUάlHf vwi湔!w!atNs7/Ab:V H@!ݼIsQOdw` Z,ּDQ[¾p3xZg= $cj!]L~UM4wynL 0?Fh&VP|6_t&)[9Y.:{7:?=e aOIENDB`gosa-core-2.7.4/doc/core/nl/html/groups/list_back.png0000644000175000017500000000153610437070613021077 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Kiosk profiel

    Kiosk profiel




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/list_reload.png0000644000175000017500000000161610437070613021444 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/nl/html/groups/node13.html0000644000175000017500000000215110766256174020424 0ustar mikemike Programma's

    Programma's

    Om de Programma eigenschappen voor deze groep te activeren. drukt u op de knop Programma's toevoegen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/select_groups.png0000644000175000017500000000154410437070613022021 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^E Algemeen

    Algemeen

    • Groepnaam* De naam van de groep
      Omschrijving De omschrijving van of een commentaar over de groep
      Basis* De afdeling waartoe de groep hoort (het aanmaken van de afdelingen kan met behul van de knop Afdelingen in het linkermenu).
    • Forceer GID: Hiermee kunt u het UNIX GID op een bepaalde waarde instellen. Let op bij het gebruik van deze optie! Zorg ervoor dat GID niet dubbel uitgegeven worden en let er daarnaast op dat rechten op bestanden aangepast worden indien de GID aangepast wordt.
    • [Samba groep] in domein [Domein]: Met deze optie maakt u de groep beschikbaar voor Windows/Samba gebruikers. Daarbij zijn de volgende instellingen mogelijk:

      • Samba groep: De groep is een normale Samba/Windows groep
      • Windows beheerders: De groep is een speciale Windows groep voor Domein Beheerders
      • Windows gebruikers: De groep is een speciale Windows groep voor Domein Gebruikers
      • Windows gasten: De groep is een speciale Windows groep voor Domein Gasten
    • Leden zitten in een telefoon beantwoordgroep: Met deze optie kunt u gebruikers in een telefoon beantwoord groep indelen. Verdere documentatie zal volgen.
    • Leden zitten in een systeeminformatie groep (Nagios): Groepsleden maken deel uit van een groep binnen Nagios systeemmonitorings software, die informatie mogen bekijken en/of aanpassen.
    • Groepsleden: De groep bestaat uit leden die in deze lijst getoond worden. Groepsleden kunnen toegevoegd en verwijderd worden:

      • Toevoegen: Om een groepslid toe te voegen, drukt u op de knop Toevoegen. Daarna kunt u bestaande gebruikers uit de lijst selecteren, waarna u op de knop Toevoegen kunt drukken om de gebruikers lid te maken van de groep. Indien u het toevoegen wil afbreken, dan kunt u op de knop Anuuleren drukken.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node17.html0000644000175000017500000000551610766256174020440 0ustar mikemike IMAP gedeelde mappen

    IMAP gedeelde mappen

    Algemene rechten Hier geeft u de rechten op die voor alle gebruikers gelden, die niet expliciet genoemd worden en/of lid van deze groep zijn. Indien u E-mail wil accepteren van externe adressen, dan dient u de Algemen rechten op alleen afleveren in te stellen.
    Groepslid rechten Hier geeft u de rechten op die voor alle leden van deze groep gelden.
    [Extra E-mail adressen] Hier geeft u de rechten voor extra E-mail adressen op. Druk op de knop Toevoegen om het E-mail adres met de opgegeven rechten toe te voegen

    Voor de rechten kunt u een selectie maken uit de volgende IMAP rechten:

    • alleen afleveren: De gebruiker/groep mag alleen E-mail berichten via SMTP afleveren in de map. Dit betekent dat de gebruiker niet kan lezen in de map.
    • alleen lezen: De gebruiker/groep mag alleen bestaande E-mail berichten die in de map staan lezen.
    • afleveren & lezen: De gebruiker/groep mag nieuwe E-mail berichten via SMTP plaatsen in de map en daarnaast alleen bestaande berichten lezen.
    • afleveren, lezen & kopieren: De gebruiker/groep mag nieuwe E-mail berichten via SMTP plaatsen in de map. Daarnaast kunnen berichten gelezen en binnen de map gekopieerd worden
    • afleveren, lezen en schrijven: De gebruiker/groep heeft alle rechten op de E-mail map, inclusief het zetten van status informatie.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node15.html0000644000175000017500000000346710766256174020441 0ustar mikemike Algemeen

    Algemeen

    Primair adres* Het primaire E-mail adres voor de gedeelde mappen
    Server Selecteer de mailserver waarop het account opgeslagen dient te worden
    Quota gebruik Geeft het dataverbruik van de groep aan (indien een qouta gedefinieerd is)
    Quota grootte De grootte van de hoeveelheid opslagruimte voor E-mails van de groep (in KB).




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/list_new_group.png0000644000175000017500000000161710437070613022204 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 S Omgeving

    Omgeving

    To activate the environment extension click on Add environment extension.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node21.html0000644000175000017500000000325010766256174020424 0ustar mikemike About this document ...

    About this document ...

    Groepen beheer

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/groups/ groups.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node9.html0000644000175000017500000000170710766256174020357 0ustar mikemike Login scripts

    Login scripts




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node14.html0000644000175000017500000000353110766256174020430 0ustar mikemike E-mail

    E-mail

    Een E-mail account voor een groep betekent een of meerdere gedeelde mappen op een IMAP server. Dit maakt het mogelijk om meer dan een gebruiker toegang te geven tot E-mails die in deze map opgeslagen worden. Deze gedeelde mappen zijn bijvoorbeeld handig om E-mail distributie mogelijk te maken, maar ook om date zoals bijvoorbeeld een agenda of adresboek te delen. Om een E-mail account toe te voegen aan een groep, drukt u op de knop E-mail account aanmaken.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node11.html0000644000175000017500000000172310766256174020426 0ustar mikemike Hotplug apparaten

    Hotplug apparaten




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/index.html0000644000175000017500000000474710766256174020457 0ustar mikemike Groepen beheer

    Groepen beheer





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/groups.css0000644000175000017500000000217210766256174020501 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN. { } #hue143 { color: #000000; } #hue185 { color: #000000; } #hue187 { color: #ff0000; } #hue188 { color: #ff0000; } #hue69 { color: #000000; } #hue93 { color: #0000ff; } gosa-core-2.7.4/doc/core/nl/html/groups/node7.html0000644000175000017500000000167310766256174020357 0ustar mikemike Profielen

    Profielen




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node3.html0000644000175000017500000000230510766256174020344 0ustar mikemike Een bestaande groep bewerken

    Een bestaande groep bewerken

    Klik binnen de groepenlijst op de groepsnaam van de te bewerken groep. De pagina die nu geladen wordt, bevat tabbladen die voor groep mogelijkheden staan (momenteel zijn dat bijvoorbeeld Algemeen, Omgeving, E-mail etc.)



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/groups/node19.html0000644000175000017500000000204710766256174020436 0ustar mikemike Rechten

    Rechten

    In dit onderdeel kunt u rechten voor de diverse onderdelen binnen GOsa voor leden van de groep instellen.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/0000755000175000017500000000000011752422552017444 5ustar mikemikegosa-core-2.7.4/doc/core/nl/html/departments/list_root.png0000644000175000017500000000152410437070613022166 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/nl/html/departments/search.png0000644000175000017500000000177710437070613021427 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/nl/html/departments/node10.html0000644000175000017500000000327710766256174021442 0ustar mikemike About this document ...

    About this document ...

    Afdelingen beheer

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/departments/ departments.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/departments.css0000644000175000017500000000171010766256174022514 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN. { } gosa-core-2.7.4/doc/core/nl/html/departments/labels.pl0000644000175000017500000000025010437070613021234 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/nl/html/departments/node1.html0000644000175000017500000001071310766256174021353 0ustar mikemike Afdelingen lijst

    Afdelingen lijst

    De beheerder kan afdelingen aanmaken, veranderen of bekijken door op de Afdelingen knop in het Beheer menu aan de linkerkant te klikken. De Afdelingen Beheer pagina die getoond wordt, is het uitgangspunt voor alle afdeling beheertaken en is verdeeld in twee kolommen.

    • De eerste kolom bevat de namen van de afdelingen (alfabetisch gesorteerd).
    • De tweede kolom bevat knoppen voor de beschikbare acties (knippen, kopieren, bewerken, verwijderen)
    De knoppen (Image list_root, Image list_back, Image list_home, Image list_reload) dienen voor navigatie binnen de afdelingshierarchie:

    • Image list_root Helemaal naar boven (hoofd afdeling)
    • Image list_back Een afdeling naar boven
    • Image list_home Naar de basis van de afdeling
    • Image list_reload Huidige afdeling verversen
    Daarnaast is het mogelijk de weergave van afdelingen met behulp van filters te beinvloeden (met Filters Image rocket aan de rechter zijde):

    • Op namen zoeken:

      • Door op * (asterisk) te klikken worden alle afdelingen getoond
      • Het klikken van een letter, laat alle afdelingen zien waarvan de naam met de betreffende letter begint
      • Het klikken van een cijfer, laat alle afdelingen zien waarvan de naam met het betreffende cijfer begint
    • Daarnaast kan de lijst met behulp van delen van namen en complexere reguliere expressies verder beperkt worden met behulp van het invoerveld achter het icoon Image search. In dit veld kunt u cijfer en letter combinaties invoeren om de lijst verder te beperken. Om uw selectie door te voeren dient u op de knop Filter toepassen te drukken.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/node4.html0000644000175000017500000000271110766256174021355 0ustar mikemike Algemene informatie

    Algemene informatie

    • Om het bewerken van afdelingen (ook nieuwe afdelingen) af te sluiten en op te slaan, dient u op de knop Opslaan rechtsonder te drukken. Om de bewerkingen ongedaan te maken, drukt u op de knop annuleren, die u ook rechtsonder vindt.
    • Alle invoervelden met een rode asterisk (*) zijn verplichte velden. Deze velden moeten pers ingevuld worden.
    • In de rechter bovenhoek vindt u de volledige DN (unieke LDAP naam) van de afdeling die momenteel bewerkt wordt.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/WARNINGS0000644000175000017500000000025510437070613020615 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/nl/html/departments/rocket.png0000644000175000017500000000147410437070613021443 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/nl/html/departments/list_home.png0000644000175000017500000000154110437070613022132 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/nl/html/departments/node2.html0000644000175000017500000000301710766256174021353 0ustar mikemike Afdeling aanmaken

    Afdeling aanmaken

    Om een nieuw afdeling aan te maken klikt u op de knop Image list_new_department. Volg de instructies hieronder op die gegeven worden bij het bewerken van een afdeling.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/list_back.png0000644000175000017500000000153610437070613022106 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Beheerders instellingen

    Beheerders instellingen

    • Markeer de afdeling als een onafhankelijke beheerbare eenheid: Hiermee kunt u opgeven dat toegangsrechten binnen GOsa binnen deze afdeling afzonderlijk geregeld worden. Zo kunt u beheerders per afdeling instellen indien gewenst.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/list_reload.png0000644000175000017500000000161610437070613022453 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/nl/html/departments/node5.html0000644000175000017500000000242010766256174021353 0ustar mikemike Algemeen

    Algemeen



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/departments.html0000644000175000017500000000346510766256174022701 0ustar mikemike Afdelingen beheer

    Afdelingen beheer





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/node6.html0000644000175000017500000000325610766256174021364 0ustar mikemike Eigenschappen

    Eigenschappen

    Naam van de afdeling* De naam van de afdeling
    Omschrijving* De omschrijving van of een commentaar op de afdeling
    Categorie De categorie van de afdeling
    Basis* De basis (bovenliggende hoofdafdeling) van de afdeling




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/node9.html0000644000175000017500000000205310766256174021361 0ustar mikemike Referenties

    Referenties

    Onder referenties vindt u alle koppelingen die deze afdeling heeft met andere objecten binnen de LDAP database.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/index.html0000644000175000017500000000346510766256174021462 0ustar mikemike Afdelingen beheer

    Afdelingen beheer





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/list_new_department.png0000644000175000017500000000131510437070613024215 0ustar mikemikePNG  IHDRabKGD pHYs  tIME $5)RZIDAT8˕]HSaxvvvΦDWQZ4}.++ꦺQ (Ƌ!U`AHPAA7C(̘4cHgtN.έz}W/Q#)+tAсZ5W<ƹ'uOB9MY[uL&E{(#A"qq43gkjS{U\B{L@=\Vƀ> &8v'=5^-MAAyYolad7v >!y H4! )g L$`CV Co"!pj06 Æ}|D Plaats

    Plaats

    Provincie De provincie of het land waar de afdeling zich bevindt
    Plaats De plaats waar de afdeling zich bevindt
    Adres Het adres van de afdeling
    Telefoon Het centrale telefoonnummer van de afdeling
    Fax Het centrale faxnummer van de afdeling



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/html/departments/node3.html0000644000175000017500000000221010766256174021346 0ustar mikemike Een bestaande afdeling bewerken

    Een bestaande afdeling bewerken

    Klik binnen de afdelingen lijst op de naam van de te bewerken afdeling. De pagina die nu geladen wordt, bevat eigenschappen van de afdeling



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/nl/lyx-source/0000755000175000017500000000000011752422552016264 5ustar mikemikegosa-core-2.7.4/doc/core/nl/lyx-source/images/0000755000175000017500000000000011752422552017531 5ustar mikemikegosa-core-2.7.4/doc/core/nl/lyx-source/images/select_new_component.png0000644000175000017500000000070410436410657024453 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 'QIDAT8˥1HBQdCA57Ec%M8DKFj)[l5&VA5$aCK.oZo٫|:^s^%"8kn'Qjȿ/^5<W Zg{>zQ.7S`gO\Q}dvt08"z Q^Xwn䡢\sX0n]F*#?6yT)p1A 0y(+ϯ 1L@O|`e}-) ilj,˒j" vv*_4 n8 +=uxR@+oN IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_root.png0000644000175000017500000000152410436410657022260 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/search.png0000644000175000017500000000177710436410657021521 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/forward.png0000644000175000017500000000132610436410657021706 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<hIDATxb?% (R7oX>>zxgQ)W'i P] '+; ,--mv/.@! e< lL3ncPf@ 022(/nf&@'J}ΘyS#x\l@1T pS]ڝ7 ?~c7 p#s >냅@1*C??2J~j 4 KzDka. o)_m5!.'×@X_@`Wp22oo}f߿32ܹ ;$bf_W]H_ /rOb/W՞0 eb b V x~ђ=vcҜsb~@ Xwt"we` YzJ o߾1xzzfg D=T3 @` 455@,q Vf@F!ϟ?G5 p`/ *IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/blocklists.png0000644000175000017500000001030710436410657022412 0ustar mikemikePNG  IHDR00WgAMAܲ~IDATxyxT?Y2$dK, J"(X˥O`j.PE nEvňlaHBI2If2l3b{>}sΜ3[?>jbkf@}W|'~Oz/R7mU} Wz-JOH֐)p]JYܻt߳ e{>\*.գhfՀo:98nXRWT|prK* eXܹwʲokkN=n΁@E|D4$HJw=dQSϗ[jI7Ǟo:~孞m W^(nZeH[,RBCH c"? %$NX\1{k_=?ּ/y|o89)1ĸt9 "6͑#=#&*'P=Z97ݤE[ZOw+ c@޵l7&.w2Az/LqwuU $ww|g*MB*O7AEӊ]V{hnݩ}fȏڟӷ,3@@c4h5  J,G˝X HEQՈ]ˍ 'kO%f_=2f1w4r;;Vo=[Pgj9Hy2AV lMLI)d ?UBbsKyW]˙~[! ֵ\ e{[R2-Odr 1Ut/@(c(a*Rr3\S2⻅%^8ps+/3֪;)T]ڑIch魳7s{ʚ`5 he1c 0jw&df TfOޛslDqu֑Z/lo- iCfcwlO?#;ęU@VA: * BC 8>1繇 L.ę`bAΙ]t+6F-礢جz﮲>ь+ڷa?->!`I~X'-Pp]_[b\qC>?c>/7i GRvtIaNѢ)Lл 68ز`GLJ$enc3:5]7D8m:+ũ%g,&kJ?Y&Apƃ##_dA):Ņ 9DД('w>L.O<=ʪF~=H^Y=TUG. @[sMN e Ϟ7}^pl3^G*A[S v F?6,AƏ&RNY~olfǡp]-љsgr ܮM;o41`8ݤ>ƞA r07N7FQp /J=m?W.5S6}tb5(\$)XcD7$$.yhwlYbUS8N&O NYy#owsG `9׏uߛo ]F$p%;| ?!qh-^l̝3Ma2IHh?Vsؿ/o6~*bu d{_^).G Q6~!S-Ji 2rwbV*C+y[0}%o i0F I7v46{O|bb?`J܅-yo-1&"GQ|AY,x %"TJ' шa#[}߃lm/{ fJw= y? ZS@7R9# cY`3G;{ .ָITF4o!5 h lcUNxg\`d --_Z!3&i@\>?}*OkS,6UѮ9B8Uj 1>PX37ZHK1'%XATŀm*UDyH J= P}?rHrHƋk SJ`er=:GeQ~1FFH0kSu@YsJMaXt!m`¤8/Ʊ&Li/\ {@3:WٸwA䜫JF c7K$^vݨ;֮Z=MLoaѳ>~"',e:.Ԁs*{ҊxX:( @B<Cځ~5AB^zz"wM7>p'IZ}dG"1q,dM~OTD5#]v wO{n 7F C@ \qCKJF5 Ec*vΟ]*.sE=Ź&Ӊd{ {@BN9?֮|^$Ǝ"T&Na\JK).N2i? я#SD:ȹ>ٖ+]yվݭ͓HHkW#6JƻIdxp6tu\vFtRR"mpG/12N ywPjBg7~P][Wbg RҒظKSS#3il.SՏ6RS~i5fHHS^Z[pϽ2¿`{ׄ)rΣzQī5IJ: ϛu]/u}`t]:o.:pM7/~ң~`Q|ՒbM&[۝Bh8GL=1@ =Z@ul-PfR{/>tev֋y`~~pv.o.W=buǺt.)o&(iIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_invalid_application.png0000644000175000017500000000153210436410657025611 0ustar mikemikePNG  IHDRabKGD pHYs  tIME +SP{IDAT8m[lLy?g朙1s:ZE6lZ/,RK!B/ i<vmi_$UB..1HF)#έ3S9}Z]Kt))aN@$ mR]BŤi֒Ӊǁ$KQ5Mozj P0Ԃuf5 W)kK"e2Yr͋w++4`,XJVcCmvžI S2>7\ r[ ` ߏy7Cƒ;v"Y$dQpU>zG%Xf LND3 SJ][uw'LcC ݝ@Peߥ<]`X.}Cމe+H BGw7/u L 4};K*ĭѼnyD4.B Qj8/Zmlwvm!BRBwں]@)`WjaG%?is??^@'"=O..`G#5y08K2PKzIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/dtree.png0000644000175000017500000000126610436410657021350 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<HIDATxb?-@XM{69 ~ 4 R? ~}Z@, Cݍ~b`O ߡ ~= 4?ĥ'а_ 47? FbC(@,|%@ FfFпȂ@/,^@, r gϞ͐J0r@ 1}GTP Xgr)VC!|bt s- _8 lA gd-q0  6y\BL90ATM#>CA F. E@ dM`_Ѵ%!f` ,@l YJgj;@1Ҫ &;QL! <IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/crossref.png0000644000175000017500000000116410436410657022070 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME 8veIDATx͒;hQ{wfgggfwnVP4•DETXXXM"FERX(!ME K3{bIWuNq>klDe*PXH0ۺFďiPƢjZ(y3Cҹ\Ϸԛ!M L6/16mHPl ,]<]mܙ-^f<]~ 2q0vrB9ZhCW) E̬~z.}cLQׂ`gu,!ӛ1b]lP4lh;3N= )znldz=t@)!{ `ߎZº,*t#*AHā-eEWpߚ?/-p!;(ׅ=NߦddɈŤyו(:@YyǨ_ȀHta\msmQLU4*ft?͈Ȇ,ޮU}wIMZa) ! 7jZH®]4!!MseWP6 !m:@!&rNy=tnL@Wlv gԎr`olwg=fR"TA;~ "؅DŽC[9F6o|YNӗ~#q=*Crc z#@q\ضy=x/ gO;(mh2/QG.䄵ܪYuCapb1Ñ%@ZMm-vHcn >@1;zh#thA &}N]--ul©zRH\O2bƃYr5^Gk2B {\up@nMHz .e)i5AcI@ G!h\/ sž7H"aT'P8RFZtlt.Isf/\'M"BH5hK@I\GLޅx \W)gA9R H2#htQVصHY'2ƪa2Di@dZl4H7J SRS]/it9AJAR@RBHHD!HVj%E.(nP=6$_Epyn> nq=%c&# FL(Ю@p #px@*ANG&NI(w厠8sg3i7 eFd%@HEsh`w&=%"GapD?tl*9-_C&B|% e%4T]?OY(ZW] -x(>@EWs*-bMP#B2BbA(iOJJP0`98Љ\zo_/疇yi^.LN*syKc'U2ߒ*suU $0 (iȧ?tmZOIc "eAqMt>};'7z(b2+Qz[̻dHPJ dwF q~a4HFmDZ]8Dp l9l.dV0On3A/OۦutnGd(?x H~ $R@ rRЯ}RRy5IWF@֭Z-^LY/5P..Y;[?ӿ @nXͨ5*$f'q4xēHZ;PTJ-d5t9Jp5BP~ 2EZf}u )OHpܜjsUk_*W'Hy4^%2iiN%15nN6~gy^ݛao otێ-(*Dy xJpvyq/_.߉l%Ab22oj4dmD<)$:y98AUe6j( )m`Na60@|ɞgʐQdPe a.rU B$=X3VuA]b (?-f .0/ٸ3}iݑ,,pla3Qhc\cLz# D>}L'm6g_H:bk?ҋY=W7,Zrii2$ݐ('`7U@[y0R/0>yi Օؐϱ [\@RbB)tg+_1ge;%#WB啐pS90}zdE>NHtvMT,>Dž#СY tG6ⱕ!~jRpu3Ǟ|5GD=7eމ*\qR8Uʑ8I0I̱ Rń{< 8kG 1 ҧ K5R}\6Oq.~# ^a1O؋Jt͡/ #f8 Rܶ|3o.ܷX/]^۳{Ov}hG5F>zw;7Xm}&ٌ9g&Ln&E k' ƏekswЙގ<h9IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fai_new_packages.png0000644000175000017500000000134710436410657023513 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  ;`].tIDAT8ˍIhQD'KѸ.*1D%rP ՓE"'ԓ=$Tp"IzLf_yP⇪W3A%l.\2"T^>t!x;+-P WM0uE^vuبw6,TH0C˧"J$aN܉P7v3.2@R[RҶF'|7|}&G;$TL#Pʗ'o/tPճ$kHD B)T/^}}In ZZ;w8-/FB Sv!3O4$nYҴq}4G-P ȧ~^aI 9CEXj]7&@,X_(Œ+ p\0J)nPR.}fܸ~$uJYIk)σД:onX^0izwnRPLfݲ,c6 DQE0 |vhqz$ /-3s/d"b!B]ױ,Ot )ggt.UMJ)l6m8>Y$WPcpRz3ucOF210~2Do !ߪ< A y>30g`Hߠ4 4&). 5 z _e8+fM￿ g`ge`fb VX2 ,o00|{ 4Ῐ?.?@X50g  h 33 26`f/k tv2 XB33ܻwaҥ ?d00a0f03K jz/0&Ac  ...@ \ np10p 4?ff@|?!N}|@, :k  Q @glf1 a`ߜ0p^pWH蒯`/0V@0ϟ0zׯ B o2z@  `aXŠo`Lt ` v?8P7c&'P#01eD`+3#@>ϓ`noP_o߁n njR@0*k2IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fullfolder.png0000644000175000017500000000111310436410657022372 0ustar mikemikePNG  IHDRagAMA7IDATx?hAs3g!(F8 ڤT L!_aB.XXXV\"1] [E"^uKw heݹ}gr o̼}3o"ƕ'D)@x~G?̮K`E#;6#_sc2JT+(P(br߶3Rpc/hkPoQA~cXgZG6ynz;[Bpő(\{z;YҬǮguZ<8.ؙvwQO-5 4m&&&bLMo h-H *rRDwH k~A\}0Rf)TUrw<  Ww2V*\ץ x=,~C2VaTC]-1hIRd26fP?,//7 "KKVVVwrqD"UCw!R2t=+33/ikv H61]RIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_phone.png0000644000175000017500000000142010436410657022705 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/mailq_requeue.png0000644000175000017500000000161610436410657023102 0ustar mikemikePNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fai_hook.png0000644000175000017500000000126410436410657022022 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_F*IDATxb@ QPPp/?2`fq#Bm$_ynA0333 dۏ?6@Е0@pxxxXXX @ F8rH 0 6߿pC~ v +++ ߿0E M @o߾ ;`%X=@ 9aat...p؀  FA{ dH x܀W^Ah+ȩ޽d8H'O02@ i0ȿRRRxJD_~VJƅ7@@@l(X܃Ȁ#k @p1]jK LX :?x3dIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/smallenv.png0000644000175000017500000000133510436410657022063 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/group.png0000644000175000017500000001020010436410657021365 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbdH1a! z1 @?Ͽ 7>`X 2?bSkZ$44%Ye`xts>~f`xѧ_3to{0h|y h3Cm\尪#s[Nar (p';_"聋 @Üg0ƺ>pr` a8P_АORDx&2H_?1[p~&d}C`a@$GF?Pzd`````G`2 L}ga^ &+31!n~~I5c6gw1#ÝK= S!a"P"[A*YU᫃ O0; /Í=/E2jOjdxv:S 1!d+rry P

    003@\'08 @!y]9dЏ/Njb C/ ˁR`bi8Ġİ_)Y~X=[HX/ \fti/!1w<9! X@>e`^63xqޮW s2HZ292<=phm// b`O&vX=pwV6N33yotOV3p31(*Y=@,|fˣ b ?ax|- B R%6 >?&wWo~0<}݁> n <\~{/xmag\@ h/1à cA5A#Zq ۅ3Ny LL|uL7P⶗'@@_ _N`~pg"iƠ p߁Ic l ~n ~AH wH{`T DlHrǿlf`x~_A'(fjׯDA<%K|cycPAޠ ?z~e:f`KXX*[)1(3pCkӟ ;"(ԾK!1y :AWO3°Z|~6 XW14KNr(Yaq7HȉHO݃ҏtaؿ|Õwac[uXDyDvnk@ _JA E bz ֥ F4nNbX,*/A_2@4S@X'r1xK1(ZCP{t Ӟ~bM Cs X,#f2&7ɠ4q- { uABɍ!T[DٔALՔAbG_!~S /d,ݮF=(AK%~"!I@/.>֯Xf~6ÿ_oݥ@ \ O=,'`/`T dc8`ygt[-qO Т?Xy׀!BA)/_zs;%N2>ʏ7ڦA+<@ƅ@+H"C#+oG?ypLG1h-%Iq'qIm:k)^~V}y0o|Y%`  )*\Ќ@Y`Wa+TwU9^L!ט`0h#MߞL<`Z@(yx$%}[.s O|ax j520P|{19rI/^e` 륓_}8b$ g?0K X-:^`Z%Kvx/}f`'ϐI#~hnz A3OduĈ-䁾:r<wi)+ {z}vօ1(1_ֽ=b`[UP| ,zedxY"YJAﻻ QgxxhJ00䮇?`ĂtIG_; PݏD; ODIǙ .3e5j {1=&aWQd}MA\<  P (yם;c1 O.0<4;;P e$a뿖 P;AU  @ ߿ G ,726x2\ I Z h 36i~7 ,6001e8P ")8Ubp3bЇ'@Vzҋ(p1c@ D[*0sR~VppCv,@{ F,a/FX運)`lfI5SVIv8#_XP?P?zSZns@)$ Q!!~q]v; ?3hĆu:cݾkx$BWPV W|u/@+2p }k?2yn2&K?H ) gmtu]xc,~FO+'ޙH btbf ~ADOrJ: RQWT6*y=?0<`f ]x϶#TIn^eglhG{§'an>:Yd2xaʹPB$kClIdFH]րb҂oi2O\! b!Z1Ȏ0a%``Ef )@~~##c_\86wBkcQ4w 01zeLڟAG΄8ntV^;U_s]{Du/Fā}o,X~d퍀p+[ /z]#u옧JGeA,ELu1WMuÇžGIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/back.png0000644000175000017500000000133510436410657021142 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<oIDATxb?% (cdb``bd``@Gn\|dFl(P ȩT~93|;W @X]UTR@2HXLNjd;+\-@1a "){ 5`~Z'1Xne`bac7\=@ k9a8f 20;[g/i[1p2 @,H6s_")'?×~`'.[7/ ?|dcg8O3"7a_k?@ԝo ߾a/ç/LYYZ ao,/3~/k~%&&sA \^jb;w34?Ç7޽oϟ~1|?@y6F@sie̱ed0y?|N ll=zZ $@]#_.ͼS@1; bu( Ġ@ f1j4 ڸ2@4-QJf@8Ļ RAΕ  mxlUVV1#@ѓƱIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fai_new_profile.png0000644000175000017500000000160710436410657023374 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  2IDAT8u]Lu(KeG5dٕ"Q a#8/1gbL\H1hp:[&. vl *Юv}۾/ sYw\䜜 79E[ :;?xvW^&x~?Ǟ:A Y2liv(FVnjXd: 6j- Gf;Ydx̓'~yr%rǍ:3kQG*BĕrFd}#O]\.U1o[+(t!_"" :@4Yc>Ew強#0uc2D2Or=\ ,0cG-TV_PfÇ&WZ]1>ŗ ʐ! ŨÕ̭ۅZ@Uվwlpe+ʭ<]Fx)b8kkcY/,şgVh27-:>մ~3dYo^VO{  ӢZ2 hxFH07u{ #30I # # ?PZ0C`ZA @_uA : sB¡@i;j!@0@uG1c5-WG?@M8̀0ɫkYra4,`!H(`PA7J,' IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/mailto.png0000644000175000017500000000117310436410657021527 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8(IDAT8œAKTQ׹yXf-f˚SF#J ČV>F[rS)$a%fYҀ8ՀوN>ޛyk&ԁ˅s/΁֍k4qq%hD J ]@ګ]'H)A)yQ,_E^e`@%h_8ܟƲ~ " ?azb =Dx.Lܛ$p/I(d 0s aya%2 sSڰh9Bǩ:T*"8ylzՕ]L>1;2O|/C@4Rf@CyY[`a)&vxfvDW?>Z;>[kXI^Fח57?t϶AkB"u9ŋk40JX%^178$6Z{44$@}3\(޴8GJ : aW-|?[( K.{( HnϷMOaIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/false.png0000644000175000017500000000135110436410657021332 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/editcut.png0000644000175000017500000000144410436410657021704 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME  *}IDATxڍKL}vXHPhA&hƃ!zx0Qc@<`7IOhHԾݶE0F̟2f=466{ebb>0::]/ ܝ,,'w{}}O z/MI F,SC~ؗ # ЂpnE[["B1BQx}jjqZW?EQp<7<<پ_[& !V^B& puv2 3:֒L.C\c[{. UiN=q:j;st](:Rhf0FJW( 5cכOZр`5u@@k=%'gt]>/y5׈y-$Ukp؃%:OĴ@k}JpO,)/NngUoMYQ9u.B:RZC\FNǥrw[*R쉒ȣ#|Q/~U+3e]d)ӥrRk}4Xq,S*A5Y J>I!J)( Fܫւ|IJ @Lf7- %^hsO<0LZ\'ʋU o  28Փũf%mSOS 8G:}+}_rB,OIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/proxy.png0000644000175000017500000001215310436410657021423 0ustar mikemikePNG  IHDR00WgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATxb?P$FPOڏw)-n+ïO:gXDplBf}:* `d岝M_ɑl) B \ , _cxáM'NJ6~>yO@/b C!CL#-6Q x 0ٸ1023H 2D1|? ̌~Ձ/^207 2180ܺ~eY;5=@`dg#PX=0?@?3`+"g/1|Lf~1_ &*@@v $|w-0@Qr`GJ3ܯ \$#+عX5~qP^~`F?` 4,XxN-+12@"+'?/'~}a&!)j #Po fl>o?LLez !`l XeQX)a(>&vn ĵ[n΂1!RHKi-| `˨5b%=wJ>Z?*#$ .7G"};b(b{t}f9>KjU`q :klHAA\6iDKfΐ3Nڏ=Ϣ=>ǽ-#>󆖔9tP^#: 55ԨD6ѣH@Ɏ81,*^ $.t TQTKPӔ?twן0s 0p3Ȉ 1h*(0(J2Hr2hBۧϟ>+?uI`¯߿@٘M60p1  Yc/ ,Nc*Q,JXr53E~1HeP /ZaxÓgO^| L hPcp"Oza@ ߁Z\|@ 1@pkb6`!'A "F Ofen bBt$2H ЧO2x >fgE >\A% =@'I +1rp 30p[ 8?^3( 1?dË޿K˥) PR@,l|c{.*J9,vcXr}+sn{;,Bul ,:h 1} 칁 I`gcetP@&=V]$@' yf <;#8Av"#,HXY ,!3XeaSba%?`-u;Z ҿ@L| <<ܭ,,lf~[@g00K !DVv49~}Z@V M+f`oSO F\\)ї(mA|P LԼ,׸8~df`+3 G`-@g6;>)y+]fe 0@1qrM.anN&.N㿾;&/4ԧz4 RZ >b`y سg`gX13;:c`X_;6?x9yoM3y d{;0?"1.!L OAZ>?PWX"vӻO*磬cāe:_Nds~ a{1'ƕRK>bT l'80C[3LO$%,Ʌ2zhy :.?|z}XٽM+ Mz_rmr3@kAgۅدΘ! LB҂ 2 B2P&7`X2/?Ϗ?2<;z@aۗw (8= y)##5)TUT5o~ʚ sVhVJλ%W\Cng|bf`!i`^8-o_:^ ''jkPlH2& qy)))n`ҥKgϞ@¾[Pz?wx%dߧo8ٙX ?|ëw_><@ G~edg@0Ԯ4 e 0[`Gׯ_߯Y… s;r'@1†ׁH01"u8AZGFe&~/Pn៬:Lzb@;I*(*333J#D4񬬨߸iݻvF &@!HRa6h>aU@5 #8@ LB*晲̲*L\bo^z-x4;?Ho P=ȁR RR`_?]xݻw( +++{Vs?^+|u2(2=3ïj[Ґn# [pNq/ʪ8W۷o;{  a \ 9_l# *kg4Ī ɊYդٕ 9N*g Xax!Ð|DGAZ`鳧 gΞyy;.\ > O]Bl;P,Kǯ 0//) 셩ʳ 2Ϛ-ePnee8p<.[~0\7aД Gy|]`ih0h0^fOO2awc`yA%, lt !f?ny;g4XC}#@|H# )U,ͪdM,i;/g2:py `_s `} 6gRa> u3hJ9f9 B HR=`JF Y\fP6jb4 ß߯> `[jn_ e`f~ _ hI %"%@aݴ } &~, b" ֿ`8(ABy'-e`wT>'G''>2\=  r/@EOh E#@&~{pNG=vIk3fjdebbcvÅ~ .ic"͎T<|;hJz#Dy ǏSnXm/ р L |.ݼp?Ϙf|dxb?AEy;AR 4D@C773H1(s1hˉ2l?%4Aeǟ*&!_2n|1_ePy gh !%A H*_н O2< Ѥ$yF[߼~fy 3.A Z\bXRM>$b$uDhh!v‹ 7=!>B0 %t;wOH %T?}>0}) Bܷt/Iz4ͱ_oPGO8ds1_ᰒ(tӿ⅚/H;?Vx FrۀZʇڇ8̀?P;7Q*-r J6G7YIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/cant_editpaste.png0000644000175000017500000000072110436410657023227 0ustar mikemikePNG  IHDR7bKGD̿ pHYs  tIME5kbIDAT(=;kTQ{7be0 ],-bka-X#XX(QXa eu,vL;'6˯VW|^1R+svuӝt[;بӞ8޼޳ }an_AKmNk9%i[(-]?<[} ⱁiHRߢb+m}[ q10ԓƾJB:-RJa`H@&͛v 6z$Lj#}\K]Iq&6טAK9VO |k 4J햄ڬQ '4ģG Ep\#h)5Z=IT7GDꌞIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_printer.png0000644000175000017500000000124610436410657023265 0ustar mikemikePNG  IHDRagAMA7]IDATxRMOQ=o aB3M)mb V t¿nK Y!a 4b hCie>ޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fax.png0000644000175000017500000000643010436410657021021 0ustar mikemikePNG  IHDR00WgAMA7 IDATx_\}?ݙݙװ ^c~VB!R )THyCH'$Cy j"Q)) Dxh0nD212Fwwwvf?>̜;]i~ў{s~y㮻[)e+I$ap'ajYʾ?߮gm6MzmY@F']tu7{$I!D^fsI)=$I"RTY0HdC7:׳ xꩧ]׿mV^JR2557.\f:7`Ox֭#[l!ΩE)wO;R \J ryiG5о7d4QLL;Z̠ SJr%,p]7v]!RJ(J钥F}\.3::JIJ,LƠz}zk`Y 霞&/]<ȿ?ӻ-kz/<N3g|;>0 & 2Z1dA/s[׆ih4J Kk=y^>u]vűcXXXO#iZ5x$ C@aD^c"!eq^ŋ+-[n*/4M(Bc`!ML#mHሀ-%ܽn `޽W_};V%H9P("IΞ=rrj-r֠&?P\oe[cH$3'g⡇j:{l`0#8t( (0 ŕPk']G2C wwݏzDR.n!-_y8###Hb066ĭ:Unϩ, R 8y 2\.buu)Mw)q\:;ڶ.F|IB${DHTrIJ"aĎiE1?ƒC˘b/}J 2 a:NjbޡJGRȢұIL=RIJ`[s6R ۶cAheRP~n0*UIB:̧ۣPR(c8FJu7,<ö4aR(PJAP,z mCS(k"]t::P>3@fnnrLRj/dttnŬz뭌kf}N-ABIyul& C `dd50q0\]]… m:fzcGAg,|>z`ztl6T*DQĶmhZ,,,P. )%Be HiUF @}= tٻQ}odcBP(h6($IBXdyy9ufI\>NDJIZMy\|bطn/X)Ȃr R,--177E>KKKX$Iˬ]^!`)}8K>j Z!buu(t:,,,pwP.i6?Q&''Y\\sة)vMOT*"nb.RA %HiJ얆RvW>mSh4inrK4MlN3fee v˲67) t-I:l⯭Q9x\NbD~{cydHt:044DXL"PV !QtjTU֮R:=}zВ$ g7߹y_-yC|r~~8\(Rmn àhPTIw0 \exxp]7^{qv_J8t:Ző•V}Oо} =0jÉvjE˲c~~ͫjbYR)ͼApi>ZYYn333s ,8ޙvargΜaϞ=yoQ*4~D>l4e'~SUexUQ8NJ m;I`uEfggO?00` EVv2B={044Dbnn{6(ϓ*JyW7%WYykfW_}zzzzm XsssE 022=܃yaۙ87ߌmݣ]r5ޮ%׮]īuZApSx_ ,+ٵkOǘfEQZ⎏S*X^^^!Ju[afꄚ>Vi6)t:u?̹s7G`V+ _?|orvQnYXX`qqRDTB)KW*f8{twwyn/40:Yz}o#0q _W" CСC+خ.ҭo@F9@^ۘS2IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_new_user.png0000644000175000017500000000142410436410657023123 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "Ω2IDAT8ˍKHT{XfYkT{HaPTPAI )*-Z1l A$A5BT"hX#fFf²(:&<noŏEfmƿ[I0bKt0-t6"G){0|砨8h[א[Z?j=IK4nK{̖="B|nקis3VP>بH$r:bqih !"~Z.I !J|eRBNA(i{ @](dw=/ݼ2LCAW=w*Մi 4*A{p)|nu"Tsht <®) aIo喭=B~@`ݾէw:uB33QĞsȩk2WHKPո(ɺm%+ z=h*x“mҎQ t~ХSIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/log_info.png0000644000175000017500000000165010436410657022036 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME %9tEXtCommentCreated with The GIMPd%n IDATxeMh\eΝ;3ɤI̤FMZSVP'J PӅ.EnE•l "]KR`6`(EZCM:!3M&sHZ=r8G|12~ܖ@-J+կݱ7}{^l7n}׏va.j$8e& _>nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R%o.aY_?O3~׋ ?b.m3sۅH8 (r=9 1{c}m# gO0| '##'?, ~g/txs+[t7+3 bgb&dO  @}KKOg dPa:?=o3{ /^hcsܰCopRa _~a *0AgZߗa刺 e!ÿ'*0Ruޗ\B L 10䙁1t<01ӿJ^];,[@7а ~C_'~01231< >20vɆ+;+3/1K >2 y9~h ,/,gTV`?Wf\ "o .8lF8 ;&^ b | 33 ??s|>3|`d\1p210{PgJ@32|cK;~M@p Un8@Gx3 _y'@0mc8]ANVAZ30l0|pؔA[N_'>vf6`^83f'×_^IoyX to'(J_ /`2<@X0×L b\Pe~=?'_W>3\|χ?0>0gw }>>QWBVNzvQXPO`b`@IaArׯ>3_!++a % *l `,y=r ?ߜ /SMN.=uF_ B@'= zx?@_?~C@3ë rb @c̀z~=~XIKp p ?2k001|'4ShYcy.(~U.@x=z=qʸCX> ??l$ & ?H /_~0SV֯ "|_} #OY2H iF߭g7ÛORGްH\%@g Q+X&1[x/!L\i4B nܸh?o}ms {7G 8&ŧj0SٮPS~>6$pl 2 8+TYiN/&ܤsraG"M T3T|dy*E`ivvv KUr&"R|y6P!VƆTYWԀm%Ns )9tvp7(P vv)#02H{cR?X@&P?(to> /r9@恓3"e5*0u&, ?;?accgxSظg|v䕗/ i s>_X !;1$aƿ?W^yĀp](04ZZӸxUWϠ b{-/y@Bƛˏ!JŒOtlZLeR_MqN.GX)wԭŠP0Ge(NɐҴY[yB&`fc`o_+%`+Bp,2/45`\qr2}LLس_! )X?3w5N` 0ՌL`{@{p}$HTAH+P^db7C/88ٹ~?/]/*@1sW>9-% ",~0/Wυ.ܶdcH @, l\ ğߠ?8ɀ  ! G]o`̟AI?ЮR 9Kd1f,4 X3}kw s~fxF䅗֫`%LR@65>`-'0Jq3z˧_4 0LLbeXL&8cT< ޿60D1l]{AO@}eP [ RbG?  s0y\cd?d?'@E,u@_pP0ZA4`z 0:; +ã;ٿ 00 !56IgϞ3dz0 ,mlX<€[쉠d{cCA;oPd֠l@ Ѵ~0<:>›a``6Xv2T#t=@zddrry`fР^< 'd26pwo2U06@e>}Y四9h F76 DӤ\Ǯ1|:<$R:B "z@ZR!ԝԁg4zٓ'ai`:Z h0r1S{sR BAv3| \_ذ#: C' ~ k׮Jb,o]}t_p i|nhޡ-ӿLTJ1܎gD4 q<,LP@D߼yWP?`޹l43@8&ނ;wH(xP ݏ+HAW Ġ)XP* Sؙ>sPfމ0G: :RA1hX4  @GG90[ 3b0oB|o&έ[  9Da~B@ <gw CCpGTH3< vo?lr|au$ s4L=( (}  `V=#G>GACV9>?+!9rx>0Ք g0|~R??0ǃA@3 3HI?0 N@̜ ;|'7`t" r,3`& BZ569@KB)_&DMl,yCTq420<ۻOIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fai_script.png0000644000175000017500000000113110436410657022357 0ustar mikemikePNG  IHDRabKGD pHYs  tIME n&IDATxڝjSAL޴B)Z .,tkZ|7og5M2XDZh7ir"i4ā33?k6+VkXju)x3(rqe܏tGO!,3[xZ f0CUUDQCTQt}> OSuq K`fC8Fycef>RS cf8_f;@a[8L`!GGGRbxݠS9}2zq\ &h k5 2s+RR,eD,1Tisb &eW)0E4^~Zpg_M)_w:rptd7+O8~sV?s3bi ˳$I ^Gz^iJJq*JL50IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_server.png0000644000175000017500000000155710436410657023115 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% X.?0Dgïen|%20}Çocg8wn@d`óg?'h: ncSAQUAXVJ^a߿uA@5HPZCK_NAw?b󛁁Ve Xxygij%++ 01332* $?Al VRL[N=߿U"//&U@P/a X@/߲ _0\u( ff!,@< >@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/ftp.png0000644000175000017500000001041510436410657021032 0ustar mikemikePNG  IHDR00WgAMAܲIDATxit\y޹"͌4]%Y-/n@L8RC\H!$MЖ&pچ)!-@@lcl!+-o,kf$>w+&kS <<3gg}?ɟa,ZvwMpy2u-0M@Y7dfKV8z,l?v9%g:xT0Z+ 7 `)#$:BϱYX7$uEc$Fw=\2Cs,,Z}K"mN6;{pK.w|oѫme ђryH]`XX`Xe,eE*~ ۶Hg 6t`ʲy5\r~=ya;oH+|%uw. Cihߣ\d 7IPH;j`](co㇯$H"O28'O0H1:$Q\Tmvl!TRV ln)DK~@uO~iխ~ť.E]'lj##0tu I-oKӴR,fJ09p(a$RYdؖYTH]{І*VUW|}}9eW--N, T1IГ*0Ac@I$ν8,lFl!W]@Waa& lZ"@zvC h:_ai" x';MU{ F6FUI!#6yIFFdzDzd~ RDqBab HH"FtDQD$I RYx9P >kv0MWxʸT!C~…H .j\{>t:>8霅a:hIp'bE\3w {i?KIITFxw<[p뀯v+j dY7^2-7ڎsF6ظP$r΂zA5Xb}}<:: EmoF`bө"0ŶA?p/H<멫(*Ji( 7+tTG%*=<9Ka{{E&Z B G֔05BsK+%bZ6{a[m>(gUre"+{<2fͬ#3ٺ㈓X{jղo^GEfv?fݎ$Bi |'1Y*a;"pJ̝ݎhXtF'7ZZ;pApvzؼ(?"]'clzSlvDMkyzVZm.[䥱Z摗KC8Nd=-έ"I"=}#׏2VD48mC7(* 9dͺv1oRA:g,)yշ;{ͻ#3&2~?p^y'di\e4#s`ٮƓL '* "yDTCEyk`0a!A8u"sӕ{,9經;I}q DEy)m{ˍxBo;{Sss)Eh0R/duߝa|,:"#O`ۘ6Wd2ּ_nõyLҡxKp]1xn;w! y|׮$ZD|\מ|Y~[~cͱ/&xvLmJSYdi7ũ/?=#nc,O}Un:]E$m?d.zzWܥ1L3gнgqһJǴ~ٳvħrdʪHH)-V` !򋭣";m' >u#*S=KƧ~I Y-wֿH+KG$L rHb<;G;_#@Lg|Gwll;X|I?сxϖm#,-kjj<55eCGBS,@U tzOv{:Z׀$RgnA\wo㲒_x#}SC)Ѣ蔆]0gS|>P7t-Nw?su#w۶xǀu>T~ ki{2^@ JZ6 ),54&Y% 1Θ|T$oTyIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/dns.png0000644000175000017500000001120310436410657021021 0ustar mikemikePNG  IHDR00WgAMA7:IDATx͚y]W}?yzƞͳd{c'N␅JV (BZHPhURJ+$(P D)I.2ǞqƳo{gb=]{;o!T]]K0t(wcL7D:SRx̞ 7Km:͟R;{v ;;nou%ւ.rcj׮T7K(chBogQC?j}]8G ф#Zk-^ԙ ..pf3} }Vȿcl._ZkZrh Rf%/mT劲Fx(e?M vx޲ S~}OAKsbR9D[ R\G8G:! }P^0×~g>y+?{H=y|>CPP Bc@m,6#k0bŘ9 h@O+212_e-@ݞ:ɏgrxd M1Q0t[1PhSINzi47а|u3tf&/Gk݁] ? V.[R(z6qhVۛ0ւon!`P,\ǥ k-劊ظب4yvlfip뭰QsgMu.,g Ez>X\<}[45&QJGnek-վm 2h%4-kcQ!+mk}s W(ؖr5 BAұ#,jGPFJQSz$$Dk,hM*azƮde-["(+kߦ0 aKl;ZGX&[(^^drr%KPPl2BHˢZ)RH'Ifu]R JڰV@JAwނl|?]DVm2 uP02B!(S*fXbz~wpDRԈs^)@B Fna5[u"% o?t^sK{})ǡ]=\!q! a C҆j W80EFx:R[y:RH$:J^bna.$(\XL3T&7 w<|p;҉pkk3qxo/.k Ja:CƲ026@o+=M I?vnL--̈́R,^z`YKSC=F'e)W6lno#Uc@+r[ ߢTVl W\_ _ymI,dFzB`,(q`bz?:ljdq{6sK&(E+M1({>³i[knLqmʀdbvez;(WtFiE+KFpvd>s>&fH5s~8;2wb!ܷ1 }1qL|BrEE~]/H2Āk}֖0ԔC#%/Yb@}wA9dy5Oorc,GoJeōS9ۆlđ /Y..Q,Vέ \iRQ H)YXoc1la.$9}mJEHF `k  G"$qZ37tgjۅRXc5!GՖ7PR5P*D.*ˏN*Rm)viԀa6-nJz6]*vt/ [8 )Tt d8!LH ]WLUhQIݮ$DMӷM QW[un!Z֔e ސFڨ]w8Apq\Xr9T*qE `׮]311hL]]a̹sbj1&ڵ(Zc]!*^%r9֌0 }͛7S,IR444eڨ^vڅ1QLGG}}}aHss3$I|g2??ر={P*(˄ac pClm@ p`~a?~d2֚L&Cgg'dX/2T#GŖ-[6|pΝĚUJL&I$a L!t:vZpwq|ߧq顩)^AT'>R u57p >?;;ˍ7ضm{/aN%NT*rwrCyH))dY&&&طo.]"+ޢaee8VWW) BEx饗A:;;yG8uL&V`3֏8x8H)֒H$F8<݄a"bL I$l߾׍r؅R8q\.g|>ٺu+O= T B.Qbn䡇5" CmF.nG9s ¥iN8?{n/HD/yh PK\y˜>}:LuILMM.|/ƵZ<:uuu,//3:: 311~3Rsssr9~i8k׮/8N\&G{n߾k-/)e}q$H$bk[HJ%_)%J) }YAT*8^kR*>bرcRٳg|r7k}`W U;e7Ѕ_zvOg2kTY~ϙ j)GskhAIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/editcopy.png0000644000175000017500000000141110436410657022055 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb}/>>nKK=;QQYp*߿^c ~e`x 00)me +ŕ? @5?a4 P ۷X!!Nׯ?0|6?~ xo&$  `VIIQ9..B0@ .. --4 X@l 0@1"_Nl`W߁~ ??`0?`z0b@y|XﺺNJʰ7,`q!#@9Y3f at2H߿62 A^ @(061+0m$sF7@ ٢,ˠNkdeeſ@X&8@ 'a` c8z<4]y v˗ blIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/empty.png0000644000175000017500000000025610436410657021401 0ustar mikemikePNG  IHDRabKGD pHYs  tIME ( "ytEXtCommentCreated with The GIMPd%nIDATxc``E,IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_application.png0000644000175000017500000000167710436410657024115 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/snd_hardware.png0000644000175000017500000000144310436410657022703 0ustar mikemikePNG  IHDRabKGD pHYs  tIME lMIDAT8œkTg;qI&IIЊ2n̪T]>ҵ ĸJ]Ԁ>h3l<I&w̝ޯ D,Y8[i>wc7@"_#~jZ'^?|z3M$%HCBi|B,CL*ɉQ,g>Z^^hozs35hCt>5#' wY9DT6,K$5fW(:$ՊtRMtwo(NR%0/aṮt6"}Ikя|Iq34hX):C;w C[Rɽ5x7~![Ǎ#Z9g G{QȌ3? p]%|ߧZ1n"Dٶmzc0b2_"~,RJzRm۴mY敃gS  X\tDARq.]hd2r85Ѹݻ_T*s~(XEguuuPY}m~Baԩw^r(<\ST֊ŢrqWVVNnmmAxn}$;@/٢Zw5IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_up.png0000644000175000017500000000153610436410657021724 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HcaXv0 0Vـ{9`b5'Z 2&fAGv !YQEP/ @s03h̎dwW?0<[!fx @PCjVJyD2rD3ۿ#S.@1t ެTIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/addressbook.png0000644000175000017500000001247210436410657022546 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?`EMбħ I3{._x+?9BC@ZbbwM j>6f`dvf`;Yk]ysY)@1 N3T00210K]f``Pѵy}+%ݐ qfbFfNp~!Z0= >{%T'Kx6H@@I/|?M߿,L< ?XST߿$zx&F}#çW -f*C l,1@x*~FF z?ٰPsw1 w. /Ù=ՖENo@ v 10|jg& X8gp«7cL zt:<(tߩ!V 1 ke8֬g`xό@2qJ:=@>~~+FQq!^v#MĂ'e6ו}ڔ+'r?=/ې!_Y h.`.ϔmz14()31JNȟȐD8; 㽋 =s_xuP _QQMl\, Z?՟-KxCn80!z$x2XVc`x?8?;/0&O zQJ69d 3/Db ΝoUl|k' &/kG#Mޯ?mvtm- O0( ;R|d$8|eS8@K&d;.00Cбيum@@LCX?2}Ͽٞl)0Ɛ y>_ ¹|Ĥ%Ccx8OHHiB׋~? p)E_׿~_/+F gpO?Wp)+Е!\ J Br Y Ƈ80V*dl.aeb\W dZt@(?2z?3*G`&_E64-`IŐ~SHu0s/0&DɟKaJvؠ Y!kHÒgDaAI6{+4٠Rtab\a,O퇟fgbb`gF T 1u^d`fRm Ơ% I`fS7t eXPOd# M6BWm%l PB/C8 ӗD~ 4 VF¿3|.K]!R?O@={q27@3@ͭÒ=)x`istë {Wi @L2+ _I~ d!( !0TO,T EmP;vxab0k_&ؒ 2 &h/c-Ng~ 2Ch(_P!} #Аp nga X&`}l u`/ `;ps9qy L `!'Bc(4;tbaH`u%G=idX?Xo7VX-@g]QLL9", 21"/~i6'C_!+B E1|D, 2X(3L9M+a.x f&`7v6Z5yqFQ!Fv6v`,.3|,2{ ?@yvcm T0M| :*| ;Ne :ػ/3$0ϱ3, ?)'E*pdW< Fǿ2x9M7 /p38$ "( ܜL \ ? ! S| *yWy0Ĺ0,#ː6ar[aA{ٮ03y-0=..Vl V, p=U1qD<; w31(HdHe8wW!E[`aV  i.>&`)޾ 7fi3*ܻǰ;7܂֟e7~>_=ϓ%tzRU!(_/S^1;ϟ^3 +-0 qAB>~7CL RҊ?~2\( $̐ΰxCh70 >23We0V`Pd(Pffdy{3`.ݾg[qCQKa>>`AE'fx ߌl 30302p(>q߉>#7| TE99~f?v538S l ]~HX/a9U/n n0fm9e`6L /}T EEG^IS@<,Ϯ4Cj?'Mb8u`a~Iz ؁e9;$9;&b7`>q13( ?Y~+*v& u.el0 iہH2@N3î^}%>6@sRb,rf_qs)/$,y0TeQe0dbglAɉ  rVLOǠ(̐ . ,7Cf4=?3;0cfgfL$@XG%|E6-;Z,(r ýGO' 0Z9970^[Ҡ:xPq X~:XBb ~av1;zXchf``X. D+{pcW3Rñ)@7 w)~.]Xk18p3(ɫ-6}063'AZ ~C4ofǗ/899X+g cxS1+3,29LҒn {g__. _02J08eˠxfGA JNPxhC,7?4U=pAyAM@U'}0 z݇?=夦칟8!v%>p5@KK[ ߾~VdL4 A1{E)$V8X`'c ] i _3AŁ ?v{O?>٭sX79ſ:+eCzÕ "ܯɄջ ?ƮçǃB/4//r< 4F I X}򝁛ANAa ->e},zI@FuI@mշl}krJ?=~ɠ& XLJ3B% rϿ:t%/$/vS*MqF`ŰeKg_2~߯{d9h7n Ϟ}P헰il6H̔W@Еtr (/pC^{Prbdy5/$ìu?};~t2Px '8Lʬx)ߘPn _тO I3sr 6)1(0fgdM?@bTTOױ\pU\VFa A7Fv`\23(/0B6 /^& d o̓i}8J69)OFQz¯O/|?a)# ڊB662/BA OaaxXt<(ɰK6 Ȟfڿ\87?'n=8 zӅ v+9k Ңa8|Q ؜b`g>_2\AAJ`iӿ߻ˉI6 Ȟ#{7KCh,y ÇOVl|s篘]} w~0aQavC{ eA3\ѻw~z0eǖl@Q4w'Է?n1uzccߞ}`ږϬ& @T_jɛpxk/9E1|zlU]P==J+< &VYfɨz&V?_:4h{ (]{=*Z Rl<^PC:RGIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/penguin.png0000644000175000017500000000170410436410657021707 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<VIDATxbd@:::ibbblllʿ~bxGmM3 fgg|)7os)L@ 55K,>?cƌ@@eX &HJJ9߿eXh=Û?xãXXXT@ R@,HDܹs FF ߾`w u Ve Ei]]]_W cױ| / Ni 7$@8''ׯ_ oV~)3 (#߾}@ ͹@2 ?5Bo߾ "" ((y0aUȀ&%r@04߾ b_ ğ^lٺ?cW çO>~+3Öm;?^ze5PM>VVFSfݼyYAJWa?TAH>ÏO^?^I`p| 33==v[,exnfg N* ٘AA %# Ƣ36&!-gE,@pA7@|+ ܫl_}0IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/null.gif0000644000175000017500000000006110436410657021170 0ustar mikemikeGIF89a!,T;gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_ogroup.png0000644000175000017500000000143210436410657023112 0ustar mikemikePNG  IHDRagAMA7IDATx}OhS?O$vMԦSF;"<(Q"xcTe`yA=̓ )JT1$%/y<I~/,Ɗ'5ظyAn)2;v]=,"n}]惵3Zujqg}|h n^*e<`}HHxHiH$:,ʟfֹ~@L-8X H`ija,pXSs`kXdU@ͽƺ0b_6nh]sBPP+o>Iں1@ی=vO[OxC3ӯQtoZNs`MCX=<{;{.7'^LO2|Ζ[:hM-`pC0YHO[hݫBo~{Ǎ|UWI匕&BfDaJa'J|b5 ,?f4Y/e0T\MSVsU+kG<%(M|V_m*Y'[X1ugW? S fӵPQ-2qGm^P"^q;7imKVn1P.;HEAq޵wAD`hkvѣGz$:yX:s73.hIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fai_new_hook.png0000644000175000017500000000122610436410657022671 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  *#IDAT8˥MkQsgrgjmERM܋M?d5Kѽ+n[P\h)~k>\SSc6. /}{8l6-q\zΛk0Rgw0Facp6V+\ʸs0@K(eq"Bj2Rcf,_HLyc%<<Ͱ"'5ՌkIl _N((,`0q8FD2L0? "i: \EDZ1Z\%cR???i֚,˦|CDc( Xk鎎>jR(m\}y jeRyvXMZ6Nm'Ipj̅w!mZz^>F}>lS w` Ճ\w:|h4\.+6^.>!H)X,>+++J%c,6t y2p X[[]PVܤi@"\ dwfiIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/info.png0000644000175000017500000000225310436410657021175 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<=IDATxbdTbw9/߿U/fs_KM?@1 &U8~r3|e0b`D/?x5Ȓ@]|l@/p 1 1` sw=g8(ӛ>Ix#L % #8C:C! XA}ëo <p N>Pz+` rl8@1C ݯ4t'q m5&oXh0'>.)UB, F {/~d+ߟ~ &Y|]̤?P( ,̑ᯠAY5a>m]@}`d]|f`70TtmgVdTQPM lv?XyL^~Q; Z `>6u?10g',ٳ|b% B@8TA℄w  bt5Ý ?B1)30>z@ xD1 M|>08h n>loz)2W X@9kx$vm$?3~Ȁ3 t__3<@#3?~&çB 0?`}J3Lb1ߟ|.|@LB#`a€B1zPe_);@țm $ߟ ,ܿ3s"@17 J :\E0B#8ý pu ;}| vo_gpTn;0pvc`y`W3q3p*>]ϳgD Ŧ`[ϫ `NT*;? ] .6М*8E]K70|~si WXL-<" WDMHz #P qShA>DLE,8B 4ke `e{xIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/members.png0000644000175000017500000000154410436410657021676 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_workstation.png0000644000175000017500000000146110436410657024165 0ustar mikemikePNG  IHDRagAMA7IDATxmk\U{g\C&8I D("?FBё".C;۵K֭_j: IM"4L<|Vϻx~#VVV>F`>512Ό~Ƨkkk8^7)d(# SnϮ›o\\WN̝c?}cS(J1DaQH؋ז_qјFlLgYCKcJ!/ vwS]GKIE))pY_笡⹮q{:SHv?qgC (uApu8_tI([Xˤij~$QbJoŝd3Rd7YyLtFeYdҐ5Z;oȘ_(T6R.7JzB퓹f/MXhn=mG1yiPd#cĆ3g^|<@+#Pw ݏ5ߒ-M0 5ƱO cu?qy/(@PopX4_heE/`> YJIT7Wm h<>sT_]Ѹ{N&>dڋ Q*֮;M՗ݼİE"b %^@y:BA-cI>f2k߂Q%̫y5=_o@x b.T (IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/copypaste.png0000644000175000017500000000173610436410657022256 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<pIDATxbA 22|_=-!***#-1ÌY5>߻3j/bɳ\~a3 }.NG^maggg3>Z 3.}#&"-f!` r;Ý _f! ▒ __{MMk?302g ?10l# ~52e[kTmbandʣ@,>f?_kS1|ĠÅAAA0~a` k d AZ/G{YMJZ(yݢ3x%ɔ{oP668ZG=W|  ׂ h /JDt "4ϟ _?2 tg߁  `fafL l Ϟb@l̓)vqd~D*>bl)Tlכ2 b ܧ|Ob X i .߁^gbbf _VL̄_ i hD1>ba ⿿0g'. p{\? 0m`2""( CgԄH03% fgg_L@|P00 P. #C>0vУj^$B|0Ao4IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/addr_company.png0000644000175000017500000000343210436410657022702 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@b rq@nVVKNGqQ+qa zyos@BC  I>K._{Gg?/Xw{Lwl&\nVWXٯ$BBLҦ׎_|o>Տ}?~AĿ|y_P-aVi 3S!irkC1G>19 2 jG&WԹ3\q֝ }a׿ ?32(ʊ2zh@'Ff| #.p坋v}@ dMhH|ѓG 3|??@Z "| eW~ZqϧIT2W,3r2|OfoGU9A؁AHH( 27?@/2<{GݝKAPÞԉ ?0i103d/Л< \?wgcx3#3br,rvr6Wa`c+K`d`+ t0# 3#(X.d0߿nǾS p")*($, ̠)p_/Zp='7êm7T'0}o_'0|ٹ t{2H*@L?1 2d1 g}`~P(H ~Go0L F: wb`?@|?Aб Od矟x)f~ÇO.T|{k2 1(*1?u ^?tX  v\b(02~cf`,s 0 dga`Ҭ l /|e8|.=W~Π" ?óן>n ?'PV@C?zr[A&tcO?II 0 s1q38?7?'?y]'#wxÿW 2 >Bbf"Ҝ" @9y9r2p],'/0aÏN@o Q8NV-h}خch} ;a^,lZ 1xZsIlu3DPJx%~xr)Xr@Pn&L!@)@w('\Ew!w2xpLk'B$5NmLcjw&yBRDue!Gˤ&Yw5JA"~&Kh;<a \ *]IRdPfPP(;ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/hotplug.png0000644000175000017500000000153510436410657021726 0ustar mikemikePNG  IHDRasBIT|dtEXtTitleMade with Sodipodi/'tEXtAuthorUnknown! zTXtDescriptionxKT(L.)-J_~ ,IDATxOH߻}M&ԽOY%u ALHC#0"޽y<]L6/FVPjT&hdL'۫msbԩ9}x!&'g XL4&d$;tK/~Fp:,GeD0$#V[9./.׷ĵc i_Cc];?slVp(Ǎ# fWX殻|[{j<@0zW}%)ldrX@ˑZ)6t5L,.N+@KKvD '}·Usa#4ӜK6UTz_g%_mmeH$ ï&\*A :MҗbaXq*A7a2]BZ LA:JC?*P^dpݫ+(eBB8X߉=zD7UU%.xA@<B!b553H]{,444yyur&CXQUu$Ia0 2QHҋv{k_3|0#IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_blocklist.png0000644000175000017500000000123710436410657023264 0ustar mikemikePNG  IHDRagAMA7VIDATxMHTQw|Ր }a[H j!.t#b6$}TXЦe$ BDҌi5lfޛwx3 ù9(RhAP(-IXZrdŦnpN֪5N AN8Hzxy(P(ۣ CB,JAc݃kDO'!!dwmա05)*ga Iib[ugxǷQVhs{WH9>| LӤLJ.]>`SDmp,o `M67͞^̥(rI+GRX (,\Y4!@oGس39Yz/T $qM$e!Y} !) L?WL|re'W>߁sݰKl:ŃvfJL;ǨST׹kaZh%Rp Ct_`bsV3{YZҘ||ۮ3,}/@6 ]>t=56Z~~;__wo(U@0@a58HaI~?>:ãS>8Ɔi ׀ @, h@E,IBǑ 111Ë ^`ЖgДƐ?C9aC8㋻gfF1~E3Cf~uz56~ C? `Qv;7_2{L@@ 0"c@s$f<<Ă?0z'` 􍵽.]rb0/& 0J8!hן >}c8@b 9EDah+PYb2'#`Nva`x oGn.<37gc4@6 P 616`pB0?{? _.=/ttoqQf/om+1R~wfz:斒2,)-pzK_<`?@>˖xU|I( ,bVePcaWd?0 ۷><Ձ 0a2YIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/edit.png0000644000175000017500000000166210436410657021172 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<DIDATxbp_/Zba@0Y=0xFll ,l Հ>30X)#W0FvvG;qrqͽq훗 30˿ /d]ݾpo߼dسc Pb¦ _8c $#𗁅ʥ+@U 0\ f[@GA!O>^#1ܻs a`{6(h2 R ,KNn bnbEOPԼ ;;hP,ï/~'&F&`a ^@4/×O[3pcf P##? AA *P(rLD. 2\&[Ձ0 ?[o af`bVd2f&.nn&&@g`&bBvӏzj k  lhc񷠐,##8 I5T L6f-66fff..NX[n2ܿs XyaՊ5< '22cX~ t_ OÀ0a/ 15dIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/scanner.png0000644000175000017500000000145110436410657021672 0ustar mikemikePNG  IHDRagAMA7IDATxmk[e?{ɺ4i~,M2+l*MXnVfV BA^/hA](z͔B)bpbv'i=9=Eָ^=yyj3^Rjn}$ɯR_A8fuu tQ߷aZ FQd}O0 mGGGBkXk,8e^'ɔ4;;;?nnnNkf4l68Ok!_YYY~p>j8̖hƘ=ql/ ۟a!n5/n~ܺrҥ̃✃ccy%ǂ[+q% jYf 9bqq pbMgS +0a; ZsZmTR'@KҊ,= DYΝpO׮,^2-{tbKH!2Yr>E)RUJo,e(hQ*$YZc&quٙW2dcHEX `($^Nsf+LnNrVcĔG!<*E;|!)'XFq( $A cFNx`rjzX!1\y2ɔ;%ۇO Z IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_component.png0000644000175000017500000000071210436410657023601 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_F@IDATxb?:Ȭߍ)]d2Ψp ]=@0AݳGlk`<@4DЀn qA+ ʀ"h!@@8s2 %e`dQٳg3|b [Ȉ5|_32&b( gϞ?wJJJΞ=ˠ;;;Ǐ?Pfff&&Dxrqq1tuu1}ݻw ?d(..f @ # į5M!@!% ,IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_new_printer.png0000644000175000017500000000135210436410657024134 0ustar mikemikePNG  IHDRabKGD pHYs  tIME pfwIDAT8}RKSq|2у-: M%ջ2^dC@0Q|kDeB&^C-=`s?v}{ۼ/YD;i4 333%I-m$ /5a0 Bm1f5N]a4M!i&y;74MXe@ū,^0 p8+Iެy :;;ţ#"2*JKFGGoY?88ȜQ|1smizI~3_E)ab|M-[ɲs5\oJ:~ w¶l8tw 1˲@cZA0cɲ̪j6N1\&A衔R @!׀c7 ?e$OX,V`O.C\E%0 DwPvr(O<cXD> }R l؃ ]D7,7Y(Vp*<1Hm#ΫL&3, Iax?IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/rocket.png0000644000175000017500000000147410436410657021535 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/editpaste.png0000644000175000017500000000173610436410657022231 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<pIDATxbA 22|_=-!***#-1ÌY5>߻3j/bɳ\~a3 }.NG^maggg3>Z 3.}#&"-f!` r;Ý _f! ▒ __{MMk?302g ?10l# ~52e[kTmbandʣ@,>f?_kS1|ĠÅAAA0~a` k d AZ/G{YMJZ(yݢ3x%ɔ{oP668ZG=W|  ׂ h /JDt "4ϟ _?2 tg߁  `fafL l Ϟb@l̓)vqd~D*>bl)Tlכ2 b ܧ|Ob X i .߁^gbbf _VL̄_ i hD1>ba ⿿0g'. p{\? 0m`2""( CgԄH03% fgg_L@|P00 P. #C>0vУj^$B|0Ao4IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_seperator.png0000644000175000017500000000026110436410657023276 0ustar mikemikePNG  IHDR03bKGD{# pHYs  tIME'tEXtCommentCreated with The GIMPd%nIDATcp&A\a/8*IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_new_terminal.png0000644000175000017500000000141010436410657024257 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME ;4JHpIDATxmkTW?;̛Ay &Z(F `URD,H-]MW*tΌ;)EɪE0fT"* d0?ƉwOR 9+Z۩ka4M? әvdyyeP(x"qdnZl>ׅfgg c Fj7jEmVWW{td2loo+vw"qEMFFFT*wll6k-"sIAF {T={$n=Yc Z"R\.GcPUsՍuMN3=RFDaH6%EW~gSڍcr?' Xr1bC܊od<}o><_tx{RZMӔNҔ?`r8 5_e`` n8q4}+F~򟞁gO/_|} _kUPջ:[w: )p >Ts=@u>Pj z z H#OXztM+=좘!!zu#x,Y<'4NSIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_home.png0000644000175000017500000000154110436410657022224 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_netatalk.png0000644000175000017500000000147410436410657023410 0ustar mikemikePNG  IHDRabKGD pHYs  tIME%5)IDAT8ˍKh\eut2:FcCх|v#%P[pSE V\RPTčR*-U"ZֶBAkJ"6qNssg -]l(֦Sj-*/"=k/mHJXDQu&Rp^v~s`(OOd+שb4?|u->H}.'OЊϞc߰c.$^Q2,]fn! }~D!L< ,(XO|U04Te!-|^mnvҮZ.F)=Il8}zbN_oDmIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/log_critical.png0000644000175000017500000000135110436410657022673 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/envelope.png0000644000175000017500000000151310436410657022055 0ustar mikemikePNG  IHDRaIDATxڅSMh\U=7ɛ̏3d^Lh bK!⦴lD(fh7PA20)E:4M4y̤fef޼h,spa94exyIƿ/\1,SCC}/vJeKKt~ż&%Y5С2tJ8ՉLOԧ:HXvp&3HPy oGn. }`33??A^`Dܶcu 焵 0Pt)WT~{ʕJ&9pm@J uPHHvHiB}ưu5Juxу6R R08D^$FDR='%L&Tʂq,,1?_D@a 1_˴`:?W2U.׿u3xtLS _]-_v$R9XHngƍSF}?@17(.nv1v. `jbqViΝOkޭS_Ov,f|W)W_Q IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_new_ogroup.png0000644000175000017500000000136210436410657023461 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "z?LIDAT8˵[H}Z˙+KtLT)JdBAQ{衇 %r./=tѢ*nQ.e-7󛻞"ߟ9gpwq`FktPĘHkTn&ً~Ђ"^x!RFq׋k򧀀}py Ŝcݥ<6% YIkuҼھQt2mΥˋJ$mn:_I$@5§0xYG )]o-k[`B)pLiK.]EY } zSa.d#`P`J 7 ƪK(ԮZ]V(>^Ǡ2 0jpYVNkS)c`n7?;-fAy x MU*ha"08_>(;NyL]: o/`{렭]_L<o&%Wv/M7" "-"re[UΩ*HwLy6%aH'# yTV;$ngY LMN)E[č[#$yIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_new_conference.png0000644000175000017500000000161010436410657024251 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 7/UhIDAT8u}Hu_w{T7Nr&ˇmr)?h"n1VDWe$Mj0h1FQl0M4˦Kf=~7|>/YUzfi1r.^uP 4JCrãW?}) }FU64nM`7f.K뵆t"<0x1!d1vҾ*v~*-am NCA ׅP5n s8zQ~8J[sљ)FmH@z"H C ǩ,J2=f1xD{,sdO4%t"}" I͕ox[&!V8Eۓk8ry`*䟕.beUc{hc׼*5 eh&@ .r5# Mq X_dt"͙0uK**ш0cTkg(e"r.fS@J9w+sk.M4 c;¹ͳ9|tXξ@e_>\k!yN9e6Iw$5U&M~2Pj("rC?~Jm{݅?MAR\F-_/~P+/-́=WZ*LF\.ף]z(y #ڴ8P (IAO"IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/head.png0000644000175000017500000000136110436410657021142 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb?}ˇ6:L@oAOW VV6S'v/ 2| h?1 `a`ff /`XXYlFZ073)gX؀t+ԓ@,0Bc h;?&f X44F  b 60Y003"rȃ(-&3Pbb{j;3  fLrBJai?$@,09nVDnbp 0M0Y 9O_:'abbZ@'361#0Z|f@Iۀ6ƩIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/email.png0000644000175000017500000001005610436410657021331 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y`q g,h?~:~|˒%K~@ŋ ;)?=>>.qq!+W0ܽ{Ńs.3e t^% ?vvv~qqAeeI>>nO~0|i@π+f@kOc0 0Ȉ0ʊ2 BPi/ş>3Q<@4 2cD$89 }fbd`aafԲ76~tr׮]oq%#6n<Ȕd31 bb z7fff(f>~h&..b ]N/x_66V`H ia: /,I7Jڞ?|l%@Q={C 6(CJ B޿Ɓ"4]de =8|lҎE%Fv( #?1|APP1`f~-$$LJ_|=/I8z40m3CAiZTT\gHLd_&n&&FGaLQQ;֧֭[.^*ab=Pz8 KĞαO0A@xFF()I3g{` roB<3 n_6R??/M Qc?"cx8@5XLUUGVVV;.]6dbb9t80yQ8\W:L> @ǿ͉5al^!!m=# 0hPlĖ?>| "ഏ 32Bh==y`o--++ˋn˖-¦  W^|cGf.cd/v)< SO'EPg5ıPbFޥKY~MP+W p^^""v1 wbPcfx+1l 11H2x(c0 5fۏD1JR88XY/?Z(((j滰 @XcTz?3y N>V]%6s%-VE96^V5iw1{ ܿ^332&//70Ty0BfpAfoGW~2/j<, L \<Э|d`4 oP0| N7/1p|_ Ǐ" XF6-k_LO<qo215 @sPHxyh 3Hpu~?GM hw,b֭wbߎ:t[@wŷ?3Pآe`b>@ 1?P-;TTԁ2 ,ase׿Y70v8彰0?Q%* 64T>Y˂0@='71` HUCD1|a}o>[by ؀&I III9P o/, b`0uq`ջC0(ـ@X0 =D9%=/ D;S6mb9@=pӯ3 C p:/(l)`EQ (_V]bayur?10c0A>29#@I!@Oz怟~3|XVr RFF'GNwE `߿7'fϮXɊ@ʤ. 0RA  ,.  Hrã ?e3.#l N _ϟ?;cFvPTk'~'É?.bƄ05XCid)!2A\ >}AJs00*]{pM'O_NLZ( ;'U Do& U&#A`F);( zH,2_ "Њ/^|`8~6_[?>=:uj^B1OQV >:2I3 4aPW@? AĘ~2p2l_ \6# &O{phğ?/OwogE$@,-/ fp 0 70cyAM? +K,,\ ^̿~֗/N H+?eA%?1 A/s`(rvv H+_R70 }y/ ?߿eNP3<{;47W>|`OO hZM4@(OÁ؁%; m0#b)b/`1-$xd`IM omn`584Z G 6b#3`[>!7BɊBS7 lZ+J;72@=/;c@/`Sا~ %$y$^= 6:=' @L7O^gh&XfII3>02p LL l %2$u'PSacgbi !A[`˘ @ْlKg wlzVΠL v AyfdP.8`jgÆ_A_lGS¥JnbXI0 PDgMgiŇc ,ZA靕cFcC+P=H00 ?~+|>v|^C<@Sn]) NTb`^30#8sCAk s)4}rIJy *.e?ӌt$3f ^~cfgCK} 䑹KUzk&h?xC?iX]L?!TDJA{^-P Bl _{ƣC ?;iZ|aQ#9Plp1hG2,ĉ6(9?Abv/THGءm" zIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/addr_home.png0000644000175000017500000000254510436410657022170 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?Z3(d@11 ur0ݽFz"hQ9x8*o3@x%3𱺨-gPb ߁&ΐNAg{  . AZы߀,/0;%m* V3谲0g6c4 bcgwHA bb01030<Z 08񇁗@$ޫf yD8~tE>3|ϙ0;PWyX0KbaFeIr1^f`bd 01&=ԕ \" =cxƠ(43 Ha8 Qu{ 3ŬrJV R "@?3/Ag^`I19pU/080l5Yl`fjrQrg7F'_0ae8ALUA(c6Nvf{O,a1/n W fDs1H90|psacCV 'odΠ ߹y i3rs0|ݲAVA@qn0S1ù[ʷ/akg`x]B]g ̷2 ?0fuwcx**pa<SEަ=7d\{_}h\5b~Û fv | ?c&)5\e0Jf@p-Vn[2{ DvAyuVq b[Lx~?xFPxǖ-W€lBN!}dXŰ=ÜD ùw027Hׯ_ h)aBIc42gd`A0_f`vh п\~^ ?€Ā 1? ?`AA /0s΁  40q3K10gz1+<@A7+@(9',{"Ds3]A\hX @VVVvvv?a (߽;a%(Hc +P B-gde ~y;20y)IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/mailq_header.png0000644000175000017500000000165010436410657022655 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME %9tEXtCommentCreated with The GIMPd%n IDATxeMh\eΝ;3ɤI̤FMZSVP'J PӅ.EnE•l "]KR`6`(EZCM:!3M&sHZ=r8G|12~ܖ@-J+կݱ7}{^l7n}׏va.j$8e& _>nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/department.png0000644000175000017500000000722010436410657022404 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<"IDATxb?%@? G^͵ RH]~~ǗC^_y{h /f]>3 `Ovo|y;Ԏ"Jfab93+PdYSpg2ӟWI-OYPn~?5Q 10T10 200t0;s~ =hzpg߯> +x HQސi  <n~ n!BGBИ/?8g`", -0omgm l@O\|@DŀzW`<(Phw<30|:30?GG  }66`+`lí zAh#z KB/A Q8 O? ?#@,͐lcAcI6P'$%k"{>kͰ hũP&"ـS hY>>/'1 fnJ( . dr ##¡L`#y PЂJ(F`,} { _1 P_)g&V̙}. `w<|yXȞE.=x)iK%`) MZ z#'@.548&5޽Ƃ"4C!< Nh 9PPa` l 7g`cxa8'3 1I p&!`?@3=]i.`p+30 A Dw,r q>m)'ñg@9@O|&oڗY&de L6_@iboDDBAgFw&@|!!*@pCX4 +/`k4 C 6q@32"8?-ga" iXP`|A2+! p`Rbq!!#0YX1kۃWd" l뀳 "r{涙,Pe&;v@ѯd̈ҎP{ pPhA*#CZ ,˯D?#R -28\!zAb28y4A  ,vPUtlC   3$&Xi6HHAB rqfVYPz7` p^Xo!.$@=bG,yP}I%%;‘ZbʇP  l0:a _ @LBE$3Bh聒 d'%h\ɇF7 MeM76Ծ_C,\u Zx=qS dz"G;(iB3RSܗxR TJcxz&sp$ }X T Hx *FI=2AWXF6 CB(v}] E~aI!za`% BA1stǰB+6fh]X3An..'<0N<5ӳ߾|r3/ߠT'=u8 ;$`&Vfȗ|@cL,:R |_oWx/vks?8gh@x,10"`7ԣ!kOCxX_;@N |m!wuoG蟟??<ٳv ,@4ji @̈Bv64f#v>>,Nb?##{To8ڟ? z58A`:M󙡭L(4 umMҷO3, y { `F"8: z[+g`e+th]uf%}6pCC@y9{B:;L\ CVߋ>iEAFuxOGˢ>s濎O0DF35dvL!=T0Ac w:|bsNF, &fzۋYϾz*2%ynfA%/hm Ɂ%~: +g2i P#f Hz]IN^87`/X.#0Bz\ ϰ@xtڵOe`},7C{(o(ٳ@OR ZR\ Be0:A<`;C9߿2U n=&E@Q4O 7 NN)inJm@gA+^1, 2z*YtLz9R&0@CgTe1+2y1X eXۏG{-tR#5Pgs\\x{ ofG OAڿ THY'8>rhHC*YRs@1RsQ t46RfB= ȝ%s^NKIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_new_blocklist.png0000644000175000017500000000141510436410657024133 0ustar mikemikePNG  IHDRabKGD pHYs  tIME1[IDAT8ˍMHaVH&Q((PAPCHRQiF}P d") "e ҚY~W]Cfy EG| J@5 @Na ,O}S,x[Dx&"VN wTfMY0EDD1OGwȯ6C̷e6/bm@`39! @HiXbZ() eN`$!&j;9 %= L:Z,@ 4QptެB˃NwB]d>+HƪNo{!hMS_)u7R=d޳fCti'\{,}SKsS TGyLǏh4PO|盏{f?/~ٳgg!VWWyWx'g&Ή'|7_~_{9=y{|V?3'҈1B ƈsӧO>puС_TbT egݵ٭UkS={G"|/(bl2?? թcBҿ k01#T|g#2F$DUbLXGb\#!Dņ>Y/}SC)ι Y]Oedj2K9ܐg|NӍΌ!BH=~) OQ"O1>P/tXş$1Ơc&s9Q&ZM ΂ 8Q QET1MgшQ`Cug̟8ʀImy{S$d FE5C$$!z1*#,nli ::?V@aevn*@yh}D!$AN}G0Ͻ;j 5VI-38 q9;;9=6YC1!DDQD"hiZz^?p˜SR׮sJ{߽ sa>=>hweybJ(wbKC=0֠ 0ZSzH$"&q=Mak6y{ʚ'sjdg"g?KZfyꇫyy#(|F*m67dY6R1Fj$ܠ>IS-aߣU3ffxnGD-8~ޛQg_q[J!$; $&UHİ=9 E$7/"e =aeZ 2vȭGghքA^xꆧz zJI}z 5FwOB[=\nsl~?8OLK}Ԙly: DĭB>bS4.Fk³ruPƗT`nd;\zN}_AdWn!bc+` k]V !r}>ؤt>u;nO)>l_pmy^,HlsId_.״ 7z6t6zD)VN?Zz0ng>/!4 W6#fDc&cXCTey:35bP$ BG2w8lm{Z;|s!\aIP>D`1srGQ6>YL&ݝ1Df cn>Klu 'fU۷XZrn,aFlsB*$]frGYR9j^{us/\B5p-XkorutRυA 볗jXZ)˗x|I3Ho=c^s #s8gqΒ,.KꍜT`S " Kf0"lv5yUQRf]h4{5^@Vňt* Yf֤Re#2~_?-ƛ+2~dP(_my-p:/Be҆++wѡuqӢ&UXJ Y!-_e~Ff0WY[xup`} 6&n59b )Rf>Ǫm7 dV$1R.vA-7t:=81~C.~-vʽ_,sT\1): Q%o$PֺCu1koѾe㹰B=oW_o;kg/rh z}^> # Ei.ݣJ=*tLQ% ! @Ցxa9Zu"Տ,ڝt @h *AB!@@LJFc?v!f? ?~&@G8+faId5Yc*!! )Cϖ2 I׌ " ̘l)bg!9Y$5 LLHJvĠ҃a(:?۷?3<, P/ ؆$b^S<FI$wv`$! v|T w_?p3· j* ~c  D) h1>p'u9N7KQnn&pSU30|L, B "뗟=WX@`+ #!pgpk' . v,b?"@J,l $bpsfwogٻo106'pf ¬cdf2r0r2p32 1Z1 ,\c͠<13 .N2 b"b[vrusn\^>良<@Lfd38Ho ܬ nV\ \(DQ1:a3S`s10308 3z ((LJ=Ą&Vʵ;!`obFRD[`O86 :`R$+Pllb Waji TȈ kGiU?;w2X3!#Ąf5a G( 2lp`05WT6026@=)cR@[L؀U?#?v8"am~&h @@gE{BrvTb16sp '%BÒC? 4A@OHI1 yX9, H-y%'))FsSUfY9,)m%PjCv3@aAPfbp$J3"4J6AILc@BK! '(/l R G o`R&^1!&p u4̇y,9A3r Z^ 031C@iyBAPH@L H?ifp_~R W`_ ߾@~3NRǐR4/09iX23;L@14%x;;#o$`x  /`(QX@1AY <`HIJ@T&%0uep\=~ ܜL@~1(p= \I`op3`,???m/bVcg@Y HB?/12l@q2(HJ1=GPh2[`c:8NFz+<|VW9| p: abXredP(^  _>ccePcuý +/ VGJ)p- u8(IJiCRpJsFÚ Hp-) ̟RC? ,×O;L_h/T }u78V̀ſ!JTpBA_8=RaH bPgfv&ph3+@3o@&@0(c hbH8 gDj: z*, >*3< n |h#TZJ@n  zE' {>E #1I? /3>6!X%3$Fa!< J|~TBU2J c]_p6Hrcbx#u70b?i2 ݻ> 3/bAn[HEpr@⋉cxOhϊGKߌn#3Q@{9ؘ(O +jAaÍk:tdY8p #tA/yJ)NAfV..&H& F,6)Aw+w],Amo>~XEɇDT9 ԙC#*/HR\P4%;&h&VZ҈mTľyʵ_CTo?!WfpA⬰<p'Á;8{ 0_E? k(~?Ѵ|}"/@· UPl(s kɟdxc36^@y F{׏;G` m  " Aњ+#&W@_hlfM_2ٽ3kA֠ 29EA'7ox='?8Ğ: zZPc#(0>OnОz %h~D4+CWXOϤƐ?r4,=I <[Z1Z^+`8awnj 扁ա|IˢU5s %Tx;HFUt~eZXvGg0=ЉC PhcnhLZ9'yiJ{l ~2 7d?|HF}7o^](:S J?p(@Qe N.~1߈ iy-m u{nv6nn61!v>xF4}cx Wn߾9s+WA@g7@Qu#laa'si9=[^1UN.av66N& }yo|x7.u"H%d'@Q}46XVPԐ mKB5gXK? -$@= u<Z] ./А_`9;d=!IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/branch_small.png0000644000175000017500000000114110436410657022662 0ustar mikemikePNG  IHDRabKGD pHYs  tIME&1IDATxڥ?OTQv<e( 1R,V64XH֘bDteaagf,.*{&9slLۢjׂbNpwR)j]kUeԕR HF(SLQ5|P47Pbl-5 P5a8"FE(H@׋x/YA"D#`hw9,<\t?hJPUDRQQ`M?C| ]@5xAgooNC۝bIA dEDQV%ʲbA/lإ3 eY !w0K8P`vMfcc,@fs_ +t%l n fmgpOXX0+h4ln> '-!*ͮpD)G^ w*J-cL Oe`@"ч(p%=_2ChIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/cutpaste.png0000644000175000017500000000160210436410657022067 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 7J{mIDAT8EKh\eߝoięINJjm1JZ*`-teEE t҅vBR|[+Z Vmj2Ν^.&mq:Ei8Ѽ{Ƈ_oeg.CT$q*5I+LkC7+t->]G2f@4ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_password.png0000644000175000017500000000126510436410657023141 0ustar mikemikePNG  IHDRagAMA7lIDATxAHSqǿmo:ޞ{\c)<]ޡ( (v6A%!V/^6kn鞋|ӗ'Т`8~ZV]55M[^^~);\g<\X,?::B@4}y xF?0#OlfV{{^7a  wE9o&)-,, Zx<. :I(|p8X[[KD"~V:66v$ N'rBPnέ`4; 0 z{{A4@Ql6dY>RU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_user.png0000644000175000017500000000136110436410657022556 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe18~I0e6yCxƶbs^t^NB,Ll+WC'v/BEÉpkUq!scKu=Tx/mlo#0ҟھT0IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/monitoring.png0000644000175000017500000001130410436410657022424 0ustar mikemikePNG  IHDR00WIDATxŚieus}uY !EIT 2,%r "ɏGJ$~X@A ۑ%ŴbARPYHp}y޽ɏzR quUTY'jOO6=}`Æ]7ۘtzy?y,/Z-v'ç+/<5"'"y 8n wIo>?wyw?;b8 WRz}z'nolHN|?ވnIˠH.;R1m;;C8.9^H29Hk o&F&\2w}3OWGgϾ>222>M)."済p' 7( n[H<^$TL@[UuwɁuh |%؅;oO'fXZZ,\pWA{A%1`-13aqpob.T|-ܡr!SVMz.2NSN~+_8:=L*(+7+PKހ+aPs,s#hRw)q+|/b> JUJ!Jwd n*KN*۵㟮ezR-W1QE +,o kI;nk.f&o4嵟a>IR:1uKW;vkL5Nl IAJb KTErKeګBܸ[ƚ tr`<8lXQ$F'5y˂fecF^#9uw>ŠpwqWK]b?##P'mbiSzusG{)K\rUeTU[-ʹj,us<7=B3;3zMDOМ o{WyC80I,//\Yopw-WL*06(dQqw:{K9WWF蕁T9UAJ6}щw&0:¸K[jZX6ԇAD#BuBSӇnPgOr7&_IzEhA:E){7@P<}cvj&?v~ۿg_W۷MD w|'߱ёraނVJTd;cTUܵo͉؅k_}V^Qd4_ͷv!DS5Rόȋ/hϟ׭;6հ7'um~ÒFu/SO9rľoh@0_ 22l"YbTz=,J @駟98qZ,1 ?_%9@@4 ܝ, ܭN?zݙ@T< .WV]1+HRNAWݙN֙HY@LUe>۸K;!ݶյ 1S3q vNo~͟iUn!q͂x5b< <^.]!s?{Kk n[q"dQ~.-CO7nB*EeW6SdA>b^].vNRVzװ]*ȂxE'# ?Lސ+U k]h޶fEVȶ:] ݁V_༼L`dxD-^!IVHdYɂX#L͞-=o3\uTw 6eIu]A10 \}[zWv*n*0~_g{.*<MXPUa\kkw.ҍa`Ԏç>or15*Rq2%R 1s,p̷yll'&V.pȂP'S!]xD`}cEY]]1:Y&Ј+~+<>՟|jkߧB(g}ʝ BOIv^~5H=!dK j\j˔׳N ^A$W>sADEE =~J~ 204fuX记ݨQ,1eܾubuvvUe 6>_;`eSGeVsBJPtqi۷nY2ӵ5RnY׀T({("dYmY1u[_@d+eݶS2??oH bs$"7nsT"YB$,r\c &,f.--"̒$?X1;toW98ZK Cb>NE:̂%Asa`ybbǷi ȯs+^Ǟ'{j]Ǒ#G03$PωR!3{m j *hP3~Sl  J:ovቻ+]^Wh6Pw.8?TѣG)˂:Q)j;uAH j*y) ةȟوv,S I贴4[<ד"k3mV=>b/~_l MbfUĖSC~{3/a:C۟#ϐ`~ 㫉l.bFS<䴙6-F,5_|q:oVkVf/jz۶oiUw/v -t`k\$7(*i#sT@w١c!(=J{hg+AwgSdZms7C<_ӓIV{/"f͜2huh5pDDdl:es[=w=g1)sȥ+WlixV%̮.dסG kog NȁG|r!]\~qtW/ga!֕EQga}BwSSO=uKF̿?26t\<A.~ֶ ynϋϾA.M%*E;GK᷀-?G==596je[rصyrW$f疺W_q嗀sIiu2S jX%un孷;ԯ| d/y7o~{ a:aIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fai_packages.png0000644000175000017500000000167710436410657022650 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_back.png0000644000175000017500000000153610436410657022200 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HK&vӷ aa9hxEܫZG;qwoP?삔̹֮[/_(oz`yw?@-pcP.֙>|bJ@s=yڂ0+ 82a(!,B=嫣 #aĄR}&Wy~)@|€~ØVtQqN׆矟Sw^D(Z_Oxp03; CsXP`Io \к8tߓZ6`~ `BIT@w̝q 9跠Bi%_RƳZXW Q.` 4;`vrP ahAr,6~Db.ZV󒎿+Yl媲j#, 5S+f#2_F瓬[T ·YY+(BJ嘳kzP`0i,@[yYo){}wͅ5w0[)3OfhYz)$O!IQjIdh p!- E(5rV97ЮU+):Xƿ˩`Fnbw_1u(o3 N h!$:#$>⮄-Ty7J(Ak#,$m i X]V›ⰵM)s)} 6<~+6 9@O35̧~FԒщ[(J3fȻ&)&EiSm uGWYhv^ CQNE,$@JOV 4f7S|wW{ "WL4rF0`*eBX)V3G_K;doL>@$ VC FA)eܸy XQ^{r'ϲ诒4vHad3"| x['S1E˭3ߑyȐOaJV$ׁi2=yS຾jX]2{697Gх|kuӵU =ilF2M@z)!-.tt&*KYR'r5R$AN47|`BJ%н ;@#q';MOx|gס{BgEx`~N{m3mu3Y^P=T.EoVj+8vy׃Zh ~AI]H?\˧fA*v.kY#`|A9+(0h*8;i;Pp!NAE 04h0dS4 ? “Ӟ kuZ^s0x|FK)0pYv%M Ƕឩu6+ %0{ d,UCr*A FC!}@9LU%L8FGK;^''džh#ҪŨ Uq$4&,B$)*s@ɂ5Y]@z2qMGI-,D a5uf Lj81RvD MhhqO7tHBM q#,.[V?D19hx\]' MӜOE54%5'ɢry ^ 맟nB9 4e`n#hB 5{9ozޒ/n}kt >=]=]o>+T⽇ @2G0Xy"ৡH\WEBrfx~+ cvIً**us rߛ^D!W6vhp ˎf eV*e'Qa 1RG J|z91;#_w 3sCwKMYXT>`05M*ѭS`w7/ZX]g3@@EEH-S#e^CS:zޕwfAW2.ws+Ju,;%"Ȝ  R{J={u<dzGUMTi{> bZH5C BtU ta1AJKksjگ~R&V9u-~_$҅(V%2З)(xT&&F/jZZFTĨV1 "7Dخǽt`YzNnKm#b@&LLX:OK> Sp0Ϯ@7gX+wdSiKV3|za](Ĉ$mO[?nRx [swg`8ZY|2G\#Nڛ“/~ܶL,yYm^^Ƕ]J95 LY4FȳƇsP'1y EB[>Kxw$SZW<b@ǎGUϘ <8oo'I쾲+J1)JC:hb2+Lx眻OE TE>`:tV5/Q7*p+ |X^ })!-,ѿ 6Ҽ  H[?HMG IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/ldapserver.png0000644000175000017500000000631410436410657022413 0ustar mikemikePNG  IHDR00WbKGD IDATx{pT}?ݽ+$$@@ 6j .-űIe:t8P4k;qch`@& ST $xEd]c}OglzZfٳqvƾo8prՅz]~𩲶6=$QTT|=3rr\rs?:u^TVF.QywǏNgtxYUmA[K^^,/˯@uE]O3h=ᰆz7DNNyyl{55p] PyfS\bتU'.jl|i&CߙDbNĆ,FeE5k^bmtimmwSl<)0cѥ& "x:e95fL1/Sd[O.^?]O<1b1M=&xh39TK @ Dxo[젠p+}kIw:OtsT?(%ݜ2\4%I I2 -(W WƎSihltֶ}Us<&)>?i&F)"HR,K45!@BD!ƌTT4ow jvW̙q824X2JęfrdH,AsYe())m*(..YqK?#@]ݵuuuoBOСCq;U%'CJeG65nmٰ= 3s{}1ƎMAA.DH$MBEE" ;#rXt-99 6g ܾ>JZ%~F$b+#)sa"HܫiZN.vފ5q6XaDgLPIqQEG؋Mp+p\/0 {$T aTɓRS)@$ I:0[oBQ"Yn5MH[ژ=sIdԩBM%~?b!Q Eii9D6͛EP$0nܷx o5MC5B#`zTE0"E^n>41u=[b&Q2Y1XI~c& Ə/G0 0Pr^?/5w'd˸pVTO!%I2ha,GϘ`?bnRh-(E9#4y}l@HP_Bii'/fK$==;0>n %IbҤInbD= 7n-!'']ځ,!%u]'6vc!HE.]jDQ$ewW4933c֭;TQ2p`$e0~fdd8HD(0N l۷DSSVk)FpŒK ]GL8.W;7@v$KСSt:+|rի.$ضH9 h,\8Cfy9rgrpر٢efaZcckblZldf3rpNf͏q8uޯn~WHXCFTlgϡ/o9a/dXBYh63ػ8 ## U%JժQ͊ZZ8vJKv*+W҇'O^}-[ ^@U˻L/x`tidY4۬iMgE[tunWoiMjQJYH #esZy]a倭&P,X`VwusH{%`0HRTi2X,ɱH,2lX׿)Nd٫_hiqvmdB~3(/{׿htCÕ+xgٹso LHS< CB;# s0wv%kZZڧ.Wʺ ͠BfBUv;,Y2[.||`NZ(FJY4c}$279wh Z[۬޻캺^Yp;ke˞-()!֯+$=N0"ŅQU; "=ڋP\{ag4^M|ir]-_h $ _nDMJWP]}ܩZx.q8"gތE8˿&T-`#ފ_s9oiWG.~p(Z86b>M0ChP[cA[:Hǣpt>;7 4#S=XL{r.B@q :•0 PR+ Q;mEre ]FJ5PZzo= iiv>V6|ШC*Vq0;PXM 8%)ltMQh1Vn/x?>RrRV:]^5Ѯ}Gvᇜ;q(~|癁s7 #_j&kO@ϧg~=0 o7<)0IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/branch.png0000644000175000017500000000126610436410657021502 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<HIDATxb?-@XM{69 ~ 4 R? ~}Z@, Cݍ~b`O ߡ ~= 4?ĥ'а_ 47? FbC(@,|%@ FfFпȂ@/,^@, r gϞ͐J0r@ 1}GTP Xgr)VC!|bt s- _8 lA gd-q0  6y\BL90ATM#>CA F. E@ dM`_Ѵ%!f` ,@l YJgj;@1Ҫ &;QL! <IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/gfx_hardware.png0000644000175000017500000000146310436410657022705 0ustar mikemikePNG  IHDRabKGD pHYs  tIMEfGIDAT8œMh\U}o~;I&LgT *]R)XR7-ՅՕB"JԠ$̴8i2Lw߽.)gq,%&''o^;xF"JYQSSS+. K[e@c%܎!kIBdpP4D]>s5>>ʞGHy){ܪ5l$ketC"-5vxBqk&XmM:hVdZY[, R:XA#EF6YF HPeHW`y^{/vhFmZa(T tNkSMW2rnƷq lCj-.n8JIdhp]orS* (O+ )$뺸-ĒFJqxOy(1Ndt㣿2߁:PluOA*lx:xIHBq2Ej |<ϓ\vef}sPV(ks&= ^irw)sɓ\ .'Cg9@#A_\doO@;9[@?f@Āğ?O@{ x#يr =DPC3̬~08 ]W DO2@L M# .;?M% wԽtjP#B8 @ 0ÈP:\IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fai.png0000644000175000017500000001150310436410657020777 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?PD )'d133bUŸLUs);%{W!a(`a2,py×?>0U> *@yI 悆8(Yd,NbSL@q ѱ@V.ui]).r¿T=o>g cpjp:?4E~)~'s-b s8#OLR1ο ~`7? @h+,~'Xxݼ&OT7? ZRzIx <#DjadTֶВl N23gb:ـYH3000,_TDU?3>P??s_Ojw<۶z}&ïwǀJ%"5<*6EH`ß_!@_3hH3*H0%Uf xph@ I'/ӹ*R5&T0x衸r_?% L5W3(*| E6 4`)GZ^?>/_`6 6J|_: 0{M ׏c0F~3|PF@*(_&)u& ^| P'fq@de?޸_7KO12cxC.=H>`fad F~XyY3hkP{5ߠgn" +<}fgo0\x̑K J3\f 5n~zV ~'X :ݹ_y baQeƗgxRfPB$A.0ˇ/@|eg`eee<)o`gQ+υg,~|v $ ""'5׷O'x*xC*o_1|򃁓/%!5Ϡ#);Wʽy (of&/<.`Ҵb+/`A40p?( Wa  3# 7@bl,0Џݻn&@1QДt?0 ncop hT?ؕ?a|.û/`cxNV`P%g`Ц`O@nbx[ˠSL?!bpo+On\znZ2cs3tcxy͖r55~R%@1QE*A؀3 z)x NF;B31H31ܻ̱&/g-xss } ?Z'X luԱ011JE`r+ve;PFng*~g`x(ˠo!ëyIa (e/0>0 ?߾ 5_cIPPPT^^XZZTHJsW|s/ˣ~a 4`{:|/blZGPGr<0r0HJ3*2g7~gexgo?~;Ӈ}]? q[Xddd20s-޽+37fdxߖWDX"&=k ,blF02#@G +3(+3P\00ۏ+OBBNZZZGpp00d*[ @%'}k1y]%8 ]X^̛ 1|ğXX$/v,!b?0=0y7v= *{@`׮^-"",1 i#XaggZp~~1g`fHLKS)G>ne݋ \JADBA@TAg:X?Ë| n2sϮ+a Z} x\HHHjƌG===yxxࡎA >}A;'8Ԏ˰b}nD1fpƆXܼ$v O^S/`n10Pl>1L|̛r u8T Uee%K2Z @ bfU:L Tchfp}#O.1?#u=0d!$+ ıTbT׃Ę!Q @35[J6ϟ?g}6.0?1a  lNq~(g`;xA! i0C*Hd+ X$%%y4ɀdijj{رӡvERd0z0 .`5wTX!fa@;$ 3p@LK2' ۲+08ǏW޽裇 ?ı a%35렴A NVHgDaf"c XC\yC&_  vb63,A#pULZz%dPfftpgB$ JJYU bw#^Hk~`E`L hCeUb(E---pxX1 ¯2SxP 3|^hF S'HPtVtX'߾23AU|9`ջo ̼,#<(JZ27> @LW^=tϬЎ4#jo ~? &h) O: XE7>1\p bfB z<@L?|aú˟?}g(70y| L BE :/bS0ǿ{ӷ . |@20*C#+tVĔleܕ8q  UdN_ LfZ%?g;\<: 1@E fq2 ˬ(i CIAʉpA"͍2,_͕w0s|#.?yEo?|>7n>|/_k@uи43Uʧt[`?@!4h[0Jf8<06 aQ /.^< JKˈrC+?v(! }PR߾}cX`CWWk׮J_gڭۏGC]C_L^`֓ Kjm:wyoo: R;y /]tr"Br 8kJP X1̜9ԩSJ f]ZhgWO=|/ƣ w]vs^X 97@hI:) lfY^1(J Bʕ+ wС/^\ @O3@YYTܚ&N `sCcOݻocPol q̞QU9:2 5ɓ'e+`7Oc; 5 ANyleu}'_ z>A;/ߡa ıA-Ҽ OAC-%W4G20 sġ⿠@i\  ,d u8 ҌE/(eIa īa6_CĘd ơ cY/ 9IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/network.png0000644000175000017500000000157610436410657021742 0ustar mikemikePNG  IHDRagAMA75IDATxmKL\u1s;S`Z"2 QIdhPCMWMh\ǢIƸָ11q4i1M`AR3j@[#S@ {;s.os|'H<+w_=7jۅ0gn;at1̉b,*eS!D,Dt$>1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fai_new_partitionTable.png0000644000175000017500000000145110436410657024712 0ustar mikemikePNG  IHDRabKGD pHYs  tIME   (?UIDAT8˥ku?37;331nT(6]ABģx꥽1b)@ (^E+HMldnffg~&,"=}{?O>rMwcWkl ,dž,#st􇩾uڕ;F XYY}G8c[2[1VtP倽$~g@J/Ԯ+{mkhEŁHq9%<Jɪp8`LĘNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/time.png0000644000175000017500000000203110436410657021172 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@*o*?}ߟ?^M 9{;8ß=p#_ן|O⻋`zԒW6&~6FV0ccc\@ }}P@LE) 6Ro~2|zEk@'@1XߞnYj" ʲ@00pꙇ r@g30:|*r''5O ī} "BtTp;eN =SqS { VE g&FIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/launch.png0000644000175000017500000000235710436410657021521 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb`xPsq/d?fc@xAԪnX?@kYJ00100"PC #r 20c 3| 4t?dzo?o6b004I.uf^&ß[1s1|3` z0 p!H) d`7=@04ӷ ?~d`|}˗ b9  K˪r%2*2`pf)2#?8xNc`ysŧ ?k >0pd@axP=#!Y>qA3c+c`&?rcL@C@1#:hXC"C] w1 l¬ '^K1 В~IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/monitor.png0000644000175000017500000000133510436410657021731 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_groups.png0000644000175000017500000000154410436410657023122 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EoDpxl\ћ0`> \V ܝXI7+(\m`ɖ&c2) ˖&`7PZ&s8k[Xel%:r|'کuI't)M^+V &p>*{ICc)S4T;D?1ih uPl6}^ij3|[\ein/&n5O7DAC\0fc 3P"ڼ2D"#26&uhb2N7V\Nͻ򟁏zC)k/2M-2L[WN~,@Ƃ+ _a/!0'0n;@[25AQb :AHO;[`f3<IM=UvmWe t"BgY߶/ 9 lIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/phonereport.png0000644000175000017500000000606510436410657022614 0ustar mikemikePNG  IHDR00WbKGD pHYs  tIME S~P IDATxYytT}쓙,$HBB ";mŠC-GN r0rP"-d1$dO&ɬ{oH!+s=gwwOu\@Hn+i(_#}iZ^5X)ARw9QPHl\xQcb;󵸑.? BAևex:@j#$d0 |6gt#N`CTT7g; @.IۺyQ D<(G\V*Ϭk&+ C8`c$0g=P{%@0l$g1!@*}3R=kmI >ȈyiL2 IN_Gh1U.<6̠-"gIp!qJn WVxFLҘiLB|{HLNV93SGsbz Oڤ[ WN%׾F"#Rv>qikso Fw0=8' ܄C/FQYB %Ԯ.e@ޗ.x#\Sh ̹}6# E\`@ƈc}h\D"cX aФ H'$kz29jϙ-_ruN7G;e)v>Yso6ꌵveeQ ;0/eC)MI9K;d6h.ʳ˙90JVꨞǤV>iUM}'vlsee(yt:yO˟Qg`ʥ=j0,Ij1GUB'c^Ά P<@ 3⭩;]^.(>^J#5 3{'HC?L%@^ԭV6^:w tOޡ 5`D&)N<45w ]־8y;1 }./eD:Tϫ{~Ck& īNpa0IͱM\Ȁ]lmR=&W2Rot޴!Hɜ%X-Io%)ï[sl4!yvʚF]{ n[ @M~$B.ʱmE#A HO6]pC^a23kC\M1#Q7)> :𯪱ϭݿ]ˇ޾a& "({iW-͘?z5WѥעirEs=nؖ[_ƁXIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/password.png0000644000175000017500000000636410436410657022113 0ustar mikemikePNG  IHDR00WgAMA7 IDATxZ{l[U߉c'N&4!%I4:TΪBVHZXUbhW V,J)1,mC m]6:IS7vc;~_?an2+_|;w)?{z/+++dX8#tZYXXv?|n Y\P+mڴ驶_vttU__bYth<ED?xM`v8q055E~9X܏h4ѩ)o***~o^ Y ̧~J^/ٽ{m iZKggClN*|7Bp}вZ7Zl \'<99y%p+++7ηp[ Xj5Dǽ«](JdYFh_/l6 V jE#@eU۹033s- eDQp;: 3s3nK(\zlKKή6r;r6UY0;; ߏD"ՊbX,=}l0bI~X,֭[a4f QA4!p:jx<;v"f3 "N' hF9q]qƟKEQ $IlF8F<""XEKK F#Rnܸ T EidYPF; k"@SeeaC)B.C>(`Y:V|l,aiȲ Iqb!y,+WC(Å8X!K|_Qyr9($9˲KsX]}x2 h+W$ %dP(HEQ0\.R @e $Lh4l6JKQL&\.BZ j,_^YKg"lou dYp8d2 a0 (»;:99y 9PV~(ķ|>EQٌxMe2\*X MMMz8vcXmL,~_T*ݻ( x,cf80K@`hhs=Nk\SQW_ut)f2, e199GE~K)`0kϟ?pM)K岱,QUUU5Mr(*144PVd2sy|| Cף6l `=wvc{d`r|hfffb9pȑ#oZjVwttfvD"0)vu[odzik]],0͘&Y0 v ! ͂0??2Bهxƍqa"(P(@R!Jh4[7C1Fb)PTKlJ9O|b4j<'b),AlH/uzzz!L/]"! v8NH$.7?~ǝ<(s%t…wDW#sydYgff8rJ%2̬,LKK.QAQÇ]|;Aw^z)rN[uXyQI('BcIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_conference.png0000644000175000017500000000154410436410657023712 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  (IDAT8uKle_;L۩NjJ%R*HH0(!!.P؀!. wF7- $1@ /rZZt},W=IN>W4=zQ@fz~g_:ؚ{rOԉ$48z t+2AcRbj@@ŀ_mB'%!p uJ2U,,. (NOwٵcc7JbCI74G Rl'pl}2$CЮ 䎩P Hhݒ49'T4T.pk) n 3Ft 5c3/J-m 8;HOQ& -*.ws }Q[k ~Sl:fdd㑝h lunߘы]Cou[cmi%g׵e]9ױlr }L]z~ӕk;^M}agzJmon _i=jlz='IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/logview.png0000644000175000017500000000651610436410657021724 0ustar mikemikePNG  IHDR00WgAMAOX2tEXtSoftwareAdobe ImageReadyqe< IDATxb?PĂaddK䁔V₻kc&҇-:Px12r 2q3|w@ቤ@,TU   < rb B ¼ \ [10:eR Fh!6 H@r, @ 2H 2(H 2h 2*4?A ;k#xd$@,ʏ @;V[YADA@vQ=$ 2 1@,XG)ء$ ."Ƞt(/0i030Cs?؂V h9qn) ,x7 &0dyb#C`ŕ@1 /_=@iŅ[7ýD8~ɵX\ΈD 7 x =- 3L&f3&\`:9F#ǒl`4(Dx ) ]T.?t~tBb.q4f -ƃ\wɘl ?@CX|ۇ:PB 3#򫜢P? r6@(cE߅O> LF,  ǂ+V_گdENH Q !LFLǎc  &좌>~ 6, $oDG` eB?gŞ@jA-)r?7n`}6},y~3 3`cd'j3A2#|Pq4t402 s`a#P&0 CL<햁+2 hS9FP3/HTDg' PbVmҺh'0RxhC12͂ge8 "P2'#|rrrpFv J|Ov0fZ?z/$`4_A+R#KJ1xy plj?! 6)@_?~0q@Byt&Pb@O> = wdb7 &;Uh^|$!l L q .:ـ Rʌ\@ÌЌ(*͌X=@bz3$/|fb542#XZxcpI + (+4\'N 1=`P} /`y $'=M:LhIZ$o'|@Lxޙ/<} lO%(1lLO 9 s4# s 03]x[`P:86&#`$aiZqh)ꁿLW?0<}$Tb^= pX.70h,E ]h(<ʸj`%3W]@40'V &8|dY` o |,gf;)}ꃿRx^wg@7~KȠ'0$$ò~Rm".7^hzX0e~:l@?k_f$O_o~0K< P 0+(/V91͈wx N0](TA%+ؑ y_/}U *,1r \83 y_|c{Aɘk@0|ǯ ? l₆ߙVRAAMAZ¢rME~'_^# 0_a`?F܁Vq ϟ~0; | 2L@20( r, c)0I=yo I  iԼw/ı @ z(?kA`,Qo~3|>cx7?P=* rR:? @DN_W?pe`ax'F|a،d4@ )u,4@5SJF~1l72\?$tX tD(c P_n`@IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/action.png0000644000175000017500000000061510436410657021517 0ustar mikemikePNG  IHDRw=TIDATx1NP_"@D마"qV$ DGJ$.Q(S,mN"E/&vT湗.@vb9B|k-݆hkj b .1dyZM@:`wF֔ _)UgULC7ϓ|b;hiBP:Oo R.u>,U}X^`Q=/Mb· |!d(5 8gG\[_EuϞ| N3#v~pw rd@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/memory.png0000644000175000017500000000164310436410657021554 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<5IDATxb?% X/^ 3@{UΛ<՛@, ?hqpE)+ˇhh 2h+ DNon:{ܿ8  f&66Fzz" \l ’jҒ2~by=  87F!I 6vcçO|l Fv_?{tO7|_R>#Go ?exû78x$ 9x<z_=@13ʺž{pq~I%!^x `dÿ |B¼?~_`A +&' 8DZ!v] 7w10K2:3<~Txxtud%|A̡  22)""!&]AWN!0.(Ӱ@RO"3H  Af<+ֶ%4ơ=r6;*ɫ$tt?ן[}kׯZ@A@heGݿ F?Kgbb2Jq`S@H#ׁD!! !&bռ= 5IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/dfs.png0000644000175000017500000000707610436410657021026 0ustar mikemikePNG  IHDR00WgAMA7 IDATxIu;ͯgMR(J(KHaYaɒv N{Ehc A b0,%E5$fo{oH&x[uιCx⅓9GD|Y ,9q[ozkt걿>hs J1RB H!B Pm)0ۯvz"2ns?W/~=^x 7Ϡgz|S&j8g*I9oxQp7]WJ1 9&&?=?Z\|{ >Ð`RBQUHXa-Bx`-&w:'%^v;(IX17{PJV5΁s1.\GJHHHQ|dL0$ #q4eu>SQHz!R@57W?賾W||*QFiR 5z88Ͽ봻]Jlԙh PB>ĜuDqɽI<_&|"yZ* :8htDaX 1(,pDQ{RfZr+ $Z)T>|D)5+F cƘDnr8C,[vO{rynHQB!r|hMsMb8)iaNRJ✣$:4';{$u!%9nvhwH!Anu-5>1XYq I)p1EhV80" :]DDz)Rd`q T`(%h6ժaX-G:LhoPVj| s4˽+%,'bԺ'6ЕjV;ZcGSTU.VrcR /M3ltJJ0 ( +ZGI))QƂԊv.j48~R dyeqk}CCM!"%8p;0 I> A{8q}4j51X-p Qg :kQt0= (('&:)Wb\=cqiٙij*5c꠵fu}ha.jCfY9KޠnSUEjIj_ @ҨT5\Q>iJR'q]PR qG BJ0XZޠ2?dY!3c,y:]ɢj >aeF`P9\q@@d|eV_ch4_8Y+Q.EQ@Avo@nYQ7I!? iQWم ZCdA53Ӟ KP6;!ZIޖ=\G ޤ3X$S3ahM*wZ>X*Ck r` Xl!}/YxXufL% 5Ҙ-h4<3foRJU w@zЁi6(̑b-kF3%ZoAf)p[-Jq[γ"tn-hwYpf:0MV(Eӗ>}gnRj˪,ۂQpѼt^>v?sx,䟻hD @tvT{f8s%gw*~apZt%$_K$ Ǐ!3|˿җN XZ?^\G<]XXع' RV.'6s׮~ϔfRkkk!W^yN.g~^ o* }C@)77\|,9̅t:m@>5yɹ9鑄a ǁ+ p.,,,J/:VVn6Y[[v{TիW2ccc[m!Ib\0[J;\@Jq~[Kg}]r`@F,/ M;lltX^^ųa|C̾(o~{ggY&Fl$~_ce0YZZn˛jM&IH)EMTvlj]Rcۼԩǟ;|Чܔm۶- @=~׆t؏4*{ \-3M% Kd%"IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/help.png0000644000175000017500000000216010436410657021167 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?-@FFF S  A > @z#I <|t #@3hhPS=30>yy==&}}߇^_%o@C430L@7 Ѓh3@GZZYܺ ?3gbwڵ@=0C?G`G>) @2d&@ y4Pgwg6o`o ]4f0@1'a SqYY=~qϟ 20lp4ځ.- V+ -P- @C@%ioV{7ñc Hd ÷ @k2p@SH xX@D7`:')HX~kZ?w0A(vh@0 =;ľ{?3pwv^ٳp_b``0 H22 b+W2 ߅ Q3, `.f`S_i\ ~$;B`lk a`y60ILd`&Y 6@1A[~bO0 d '2)l e /4YX]$y2#G i  6@b`&ɉ-Pg`&G99`Bϟ pZxǏ~!aaM?ZZ >>ɓQ_Al,U &$߂$bżȦ],v%Pw2 0R%AWIAB܉>0kw? CK7Z/RK@VJA9`C#C䃑o3ITh|}$ߐ#%7ugXR8e|pEpLr܎wҭI I{@;e{`48fp5b԰eOeS.`'Iz$eEFUa=0 ކ*Қ4+dR}1Gn ?jH=uG@@ym +5@32k! Us DU,' `Oib@JIP5hM:3S9Pދ'СT}oju5&~ah{=vD+!@]B"5T/ez&elK_&6v#>x  ֑A&x'N3_hگi`p{ n_`'(x nC(Z͍WUow_qZ;A)趲{uk38yg<߃j)= Xr` lpLp/{~o1>dIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_new.png0000644000175000017500000000120210436410657022057 0ustar mikemikePNG  IHDRabKGD pHYs  tIME3t IDAT8˕KTQ?{Qrpe  nH\-jE E@Hj.MA YH %"5{ZQ4/|^{ν Z拽>Gc2btyj%{Y2VŸǢw#6\үcUաVUn#Uw*mfp?}4X*J5w(H?<Ɍɣ 1*m)?5zu}kZ9Iv^ Z%lrQ3I5*f?O竩M7g o؝[^K4'N-JP!J$tRG,w|JX￁r@t FIQIV2|*f'%*ȮkZ潨LݒT8V¡å{WUSffTc.3`jQ\צye6 ^L"5舺^K8Q͇4U 51۴TΆ'7fECu5_#$beO0te972F}8ԏsj5vC߱;*i@O؝[^K4'wץRM( kҩ}`~_i?bwymzU/Ҁ awKb. a̒9+k䉨fGyv|kݟx1kݟx1g^ag^aWzWzv|v|kݟx1kݟx1g^ag^aWzWzv|v|?gosa-core-2.7.4/doc/core/nl/lyx-source/images/user.png0000644000175000017500000000620410436410657021220 0ustar mikemikePNG  IHDR00WgAMA7 ;IDATxŚylWv?;6^`6,Hdit44T:ڪU۩W]U&FQf2$Q'd!CB` ^?~F=W;s=&WֳFW٣ v*JJŲϤy#]9^\q޵V#&|=-I4وnc(3-_\G. ?f ?77U'zo{$?Vg~G^f1mq,'Ï<NS;Yˮ'=C1\?]!B(F9d/b+SLNV[|_O,j=ƕ ]_e?%\׌]c38V.} U.pz$NK(*3oakdf/@I>IѵfǗYwߓEB*٥eZ%r%K̹4rǁ/ϬnήMw1pqʋE\X"vyhG>RR:w|0\-j{سZaY|ϭY@* ,L#=q TXۇ2xf,5lbU8ṿ{uŽo ? DbaD F`?'TS/.srNqK;:Vtcփw$D( NxiƀZ̯ZWyϽy޺p8QPàE:'3_8p|'=&0⠆"je~z$(珽žp(>PSXfV7f7&pfP P@׈3Wx韟y?^/ٮX0"Z0葥`č8 %@sY8ѿzSc8@Ez h$h0z,؈E-p?䫯 `,57 N|n#hSljH pYz''9;u)ʼvqT}<ȖF79anca{ !B HAbI\HY遯k}U^,ke _:/v>8J[JW4'wnr#nj ?\H[n!%f@$!kktLN36tvޱs֖0(. A 0"Wpb/=l9* 4 8k̤Eڱ}`h?MJ{g=Pm-*DBIssr)a5 TjZ)wW?zm|:`A E^|l̺}H)>wu +Źta/@C͏XC u=>ؙ9^{7C="&y]_BłD]J1{~|͎ڸ.mڳ9ՈTög04`[gf\Y׹z0 C~07@[ƍwr9\E{kl $JX[cw7M `h pYP  eޝ_)Lm5+=дa`n&MasE|װWϞUJG֯ eh:CX6BEP*g0k۫ m{v]0 ҽ*~uɅT5p-Rq89i^;RBwO#ql!HWkOOx"CȄ\fSiT[, CP'7 5eѦ;;V B0vbi*Q.Z&2-A~Jf /!TPh|_ TҸΧ#TA:]drbyudH]ʕ{r1^B!J+ޚ6ܲ\R Qu!7tGAU|]= |{ߟu첝~~|J%pYZ-ai}mi\Agg1 UYZI>Y1>>ٳs:u>57w]STqĬ NEId!cx4놩iu)},p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/fax_small.png0000644000175000017500000000142310436410657022206 0ustar mikemikePNG  IHDRagAMA7IDATx}k\U~mqlF &TjD4PDPp#ؔ Eѭ !l])2։|ܙ0s>]Y^xy~⬭}Y:S@\ ^X^^2a"<<h|JucѸ~wccFYH)QJJ<Pַ?yZ?0AO }FÔa2L =zݔVK;$I{eee!I8&5os5 O'Gєxï *EQda~gKw-`c}3⽆4osKweYҚ0#5eY9BH9;Th+(Z#,'(Za! }JkvVc ZYӪƘ+5ƘAcDQhcRR@V}/.BW>RJ<ϋn{>;;f-Ӕ`~?PoV8pΡ4r||L$ςv4w=s,c'b| 4#=2c(˒_i8澨z8?~*ty~\qůTi9j2 C0R\ 9GV#"Ӹwd2) ^K/b{IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/search_user.png0000644000175000017500000000170210436410657022543 0ustar mikemikePNG  IHDRabKGD pHYs  tIME  &yAIOIDAT8]ou7ϝ]>:ŶTmb1hc1c@@Ap@艃áDF#814Jj_Ȳm!g}t3; |M_._ʈ.,/޶lyOW"> }wĕ.\sS<o T%MU=WCg؏Οli/X.npӅ, !h(̎^K~Zx IoLsGMjrV ({Q2 /B vCM@{b+!l<ϰ0pAb>S H"*!tX; >i5ȜJXp`kjyT/55s 8І Dnm*v]  T`S MC~[ؤaA`#F&Shr2zynj;u[ktAx=ƎdD*[Pܭs@Tڒ ',N/ +,X0( 5X ]H[b C@nc̦?PkR*«TXOn1<= L*Lfiv3SJƷ,!?gUhi|b=>mod,z3 Mlh9!n_a;d[NEՓ 0G &EVv4pKw< x$.Y Pcѩ ?kxOPWgQrVM>Z[5tcQ7?|M#<'5i}yIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/display.png0000644000175000017500000000133510436410657021707 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/posix.png0000644000175000017500000000776310436410657021417 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@PÐׯ>}ӧN>|0ƪʯ_DRl@ׯ߽{wﴤk@HzQR\ÙXYY@d߿a  wayWvvzzz3O 7P?r@d{`߾}faa1 ߿ϟ?4g'O2\x񟩩&UUƙ3g^zdY8qbPLfff>aaapď?l<0& ##ãzΜ9ZD:;;K:А G޻wѣ o߾c0 Νc2w @+> "MMM@'prr28991bUrU^~ v((ـ< fÇ0)Ȩ2et@P`]&!!,I@w$tRph= W\˰rJ11˗/?~%&O0BCvv4C?010mG@ŀ` r(kjjތ ĸ Vd3f߾}d`J x4 ʤ ʔ 2… RAYY`%}AEEV嫁La`>h6(Ad9,8Pri޽{^ NJ`E,taP`ccc˃ްawAA;ˈ6@awwcDzA$ȱ A<ALȑ ٳg h:y `4ݻI@! ?q 0DxB `!*_| /ae; & %%V2afߺu n/777éSӭ@\|@8cXFG5BXJ"""4 19ׯ ff@ qd""cOO v6 ;@ l~xr/l Ѻϟ?7lL 'N0C |XX@m `y \ "߯ l@ϱF`;p,;M=9" `EgG;qy pz͛7@ XA*&QQQp,UBjbb ԌxXYc4!C>``xW. @ݻ `+yaaP}䉌wb_Un3<~ATR^z]vKX[c^˔3(j2(+);k 3=-AעeX;;;pp9P~%3^^> ~(s`RR_`.6׭[PQQd`\<PA,ca +8-7 ]:$2B%//'ѥdOfbܔc =`P%Lg$j>+cy{U%T mBk-|I)QJ]w)PAC X,lPaM '~]?|`;X@oܸ?** l` `@Һ y Jc}m@ƇE)V`!88\2/H ,"gBpP6\5P2WBBB`A@+@ Ądê}dzyy1U`MPb~30 #@T3+(  5= dT _k c`9#@V&u5I\szt ́y1 E44cx@J`S\s0. cÒe jV*Fccc<,iJsh2z Ġ N ^ @, %0AM0G;,ZAE?8A`GZ0 kK9pjW|:0A ?<JH @@|Z/0CE\\XZ,ttti20 Fa=3d#̇efP,P@|OA51uP jZ hj 3` t:A Y k"â9 BdO2v-4? ȟ ?@ ~q"@Evr@棋!;摓rRa,BoA`R< @:4N9q(ؠа\z {d >&'ǏC> 9`ƹ ʣ,+"l!MЇyyA ˟@0 3@5 >r:EM9V<2̱0Apl9p v`9 .";=:̱9yw)A NGΞ= oA#ܸ @x;5 4xmK0#װ"CN60'AlPln}0@,36`k3W`D y|i1j[6o|o@Lp5@-urbhP \I8zA/Mf 1 @=[-*Z9a2r%yc G2+`  |F3)  :+&&6յP /Na]APM j,c†A8/4/o߾5ƍ뛡͛gJcw#+ߧO>VFvVpwyA0=; #f|֭>| J:w@. ㇓zǏ8O<\l\03<{p, q00p=JJGg} $XD2J2 PGaW?n|w MViB3]!?%&f6` RUoˇ q0|9 þ '{W|ڛ @AT#/]#G.AM ?H2l&'%Ó>?߻w>1 _b?ûy_? un_V`Zv঵Ms/@6Ĕc+?.!c}̳?I1ȶdL8v\h0x| 8uE檹YkdZRV߿WiE')}v ߎqGLM4i7ڹ`iA%t6Hx<ཉ^yɑ}&Cl_kJTb[vx~GHGI#s$z٪ySl(/LٍzWeepOTBXY jR}z^.P*xhyݟ77݂ ivcQ2N_$@bꐩRDRV5,-k@pwȅJVR@IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/personal.png0000644000175000017500000001002710436410657022063 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?!ȈW^M? )#77;3пׯ߾|㇋~?#_x׋;h33&F (';3fÛ7_ypSwڟ?_ɥ?.}TԮafSPWkQ4ggc`abbï6Ar@c'vn;s|6 ",mT8}_@Aaifg 012pq2|a ݕwZ=6p Hf xy,?~?A1 nVg3,_ދgS?~9whdOr'@uR&fF֖1N PF`h<$> #ĩ; 7x_ozH%U@R%FCUۯ 1201Bx'v':q?g,?IYAE97?dyχ@s@ 9$D~o㙁3(3JmDr`h 3xopr`xpߑ[;ǣb,@%d&&vr9f} Œ@I ' lq80X MFNNB d`a`V \ēX6cT~6"pUS};Vp_&1_ J?8X1=+3ȡ`O0c7$)<,}wV)>Ne7>@Dy v_|g`VP)d1ʠ&åL 0K29|=6# w@1M@j5@  GRbbd`0nAVT37_3;74ـ<dI> Hl*@A~"^ eax_,W&?sn.6`@2= 5&.`O f}X `f v(( p ?10c_;(`&c`̐l20+0P]0Cˈ2{b̰#ã}!ad N6g&7nV`lJ03Hp3ȲtBD>4yZ2sZ3pK`R+2p,nALv5Ea o N?=?g}dd l*'s3212 0iQV1av~^ ,Tr@g//\X!ϩ7efc@ π*: X3ha0_0Ԓcgl @ j123IQ?2 <畏*1Un5r8@9 l | 4> k3} |kf/?ςA h!(0@A1A 010o^N@z"{ax=1l1ԡ@6L, D Aj@|K JMb g}t\BcLCBPr8 u0 YS׼u@ᆫ"s~c j{4 >0F*+C̊p8|Y?q=ȗ@W03Տe5~07v 1 IZtC b 9ϰ=ǟSf|/Ba Hȩ׺`[⛯?QC&$ w0LLHb?|*eZ݇.yr@;* -.W^BЗ =6i%#X??yNvM]_ ݃wbDɸ03mސ"%@*vf;psئ˷~0>zO_%A]Wz| F G@toun/03 `3Zϴ9;_a_@/Rƅ CL&/_v_`ϙl `擿 _\t`KgGOZT~&5<0ifq`{?3KGH=\H1+ᓒxW_dӣGw*y (̙!$ ..x"m`c`Pag`O |kNpB%.w `u? r0 1𑁑_&9n`_?:?(guz1&: &Ǐ߽q;4Vߟ~kXX~{c߿$$啋 AyG_"D_Qi`Ơ߇w ?d=8hANJ=9hcTPP-*auD&N\eZaa>H(TEղo_14 RؿƄ0yth@${`ڴ?~luqq!hBx0|>P1F>o ** qu/ )y HO:$**l3CW:/Ɋ f`avXrp  FPXil<<4+@E-A O Ϟ2 ؐ1 3XpqM"%t7x^l`r8Q l\Kfg8''0-ȣ`O0i^55 W--e\ĸ H? 1qPڇ<(iBXع88?eX  03 pOXe&&"+tşBHAq8 !  2ݼ&V`aXBYvHbAKKHD~o@K!9..vV`||6 b 0?ck0 .`˩ۻkB33z )kX/i`Il9XO3| q0#4>opaz w@nN@y %#b!2倅(A! 09P;#&`^2yj\?8XTUUу6|{"*k q.P 1Xҁ84_ ,oL`Laf=- 4`1 fٌSQ%0f(0PK+ݺtEWv7$rS.5_%-mo0"GTvwub(B!Ԗk$N#)M1mf+ bYbg*wNO, 3DࢤKGP" NIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/system.png0000644000175000017500000000604110436410657021565 0ustar mikemikePNG  IHDR00WgAMA7 IDATxŚklu샻\!֖h&EǪTvbF䴮`8 5 jh (RR!AQ)CIĒ[zR$9Ę&E!.]kfl%%r.s?R0o/ކUWW>z9q#G-г>ǎSSSZ))8qmYVsN&O:th%onn~߿Qߣ%IkK/MAkM8fXlO̪~0011A<GkaxKh^kL5Xh48I8&>Zq]xhhp%CGG\n@B~[\|_{X֜E|>nݢ&&''QJ8b|lݺSNH$PJ-SA Zk(=dr'eth4JGGGyZ;&ϔR.ZS__O0dffXIK477j*7 !(5Xa)%~T*uWid,i.R"Lb}L&qt:M"0 Y0Md2I.fgY3055Ecc}ف\BO** ,_r)vPGKe^v/!e[Ⱦ%k0BLD)Eww7 Zj)6)%xRz$,b@JYkzz\.Guu•{Rg1==d{P){*bppH$Byyyh1Rܖ@)UpהR$ t{kPDq0nn0MR3)Ӷm2 m#XEۨai e›%TA!U@1[0@Y(u:oBl.l)ẁ k,ŀ7^\mFJeYFk1-P_!>)J(.f-}9Ww=RElf!n@ok9irZk,Z/Pju^D3|\ٸq͕aX,H@A>n^/BfYHmc JN ZZZa```y,,|q!{%հ_ )6eeU1`@ n&0dǎ:eW.^)KɫRAl|%>J Cp[ >D\)۽X,F*͛tuuΟE;@{ pbQffl7&0MVOœ!t?h,7EeeeTTTP^^^Ⱦ[T *E,f&r tD#e`Mp1Q*[gTTTy|7z|SRmH$9p]eˎw @qh`%Gahh8Uo~v-l6U]]W^y{Ν[ZZZBuuuYfX6* ǏSu4-P4Wl{1n?إwy8t:f_5 ۷]vXECCܼyy6lT*E:.x&Yƽi Gj~&6}6l|ё80p<(mGT o}K4G45yq1z>"8yp'99y;B(!ݛ:mA|y *+@C9πiS ?_\?KÕUl 6>`%,gBi$uupf v?~p5u'4wjY硭ZQVNʇ !|Pa8ys{g7Ci)jFG>?`/!OZƼ|-pt r( zw=NonH[)P 3d+W1X Y*`4O >M(L3>cퟁ7a. T *Hfa<uXN:{{_}6i'.\J}U2ʊ*Cf*a|$>MeQ)ZSg-ڀ?( * u$Sl|;;WGy[!p\dQi5^G'wV&&ӛʂeU}g"2)`eQG?8f׏@+hm]_߸nH^B@aLL]ٹ3 S='iAUgtlo W v4lFΦgo hspRmɳ*1"&L;-ʉ7>BIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_new_group.png0000644000175000017500000000161710436410657023305 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 S/ < 1hK05ovV=]!6y4@,w~d4e6_\\X8`axˠTH_,@Fݷ q-̰K ptDh,q 7?!s.1~/}&g+>3gzGϿ>2|"K?e9SA[?]3_]](00bp{\1?ߪ&=G 9NofZ>L <`/Ԁ@|Cf/}gb`._"|l ,~9˰ , R f`fcf8xw_ȁ A^ڝ !;`  5QP)2~->&1AعA$D'5 G'=6^3M&:EA '" 8 *֠ݡeS ÿ$E|{W ߿gbg)'$?1~*PWX aV( ɠ[_|g`_0B k _1sW2###+%`fd 0(b;?r'/x\uLY8Ei;;+0%8~;S @X=tkGo6`"y>f b a+Rbucs3,lP ˀ\ S^s(jvIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/edittrash.png0000644000175000017500000000126310436410657022231 0ustar mikemikePNG  IHDRagAMA7jIDATxmkQ$m#iFԂPPpEą݉"p+ѽ FDA*Mͳd3̸psֵ=酩1B2>Ġ]oR̗OW?EcyxQPCB*?•RQ(|0]`@8:`EMvI 8,^W kK g%p<ֶfk7JR! b@WBF AoH MC7LC` iPkPV%KQ4 #}v:'9`+P \W"a`:UN RAɂf34Mz˜ab8U9/(骄d"nbقj*C J G[t@1XKoө3>yePؠ/ /r>c?%>X-׭@` Npjihtn؇3{hj~ĩp/?}o| ~ALѼBIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/editdelete.png0000644000175000017500000000157410436410657022357 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb勏 w>f``cCL@auv&7àk00?dx9++éGjb`y? _c`*b`ݻ-Vfff6B-;~`Wo2Nb`߻Som3&1i` #\ @$c`9Q;wXd->YDԓ@,0& .O3دnf`xᷖû 5|a&&p4@0YX8b`xo;P3#,! B/œ;+^dkd[ aWm@qrAmG rdo~E&3|^k,| ̯^120z ^0sb`tc/+~2|Xkz?^abknA>`)V ï^ +J OuN>dj6?4gs531|LP`^nJxIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/banana.png0000644000175000017500000000142010436410657021455 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/mainboard.png0000644000175000017500000000141610436410657022176 0ustar mikemikePNG  IHDRagAMAܲIDATx?lu?l/vۄP΀Tm,C2Db KbXUtCЩ"(C*$D(qN*d-߷WQz'_4RJLB,e{/>nh1uyuKп^N_'$Ďk~oOX/ z5*8<7&>T ',*Kݻ4u (sT&u%uIG1#,_ۤZl3l2_q0 4v_gInA,++mduȞָ#,UHKҹWd8ż5Ki^g:"F~ wSgE«,Doһ``_f1O/Sm`` /E@M:o'C0kB&^!%A*`$A||v˨ua=HDI^D{qEZkU. iS{;0ګIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/mailq_active.png0000644000175000017500000000107610436410657022702 0ustar mikemikePNG  IHDR+>}bKGD pHYs  tIME BIDAT(=KHqfu`5dd$=@2ҥC:D١CǂB@D EKbkMuݝpgf?˧ΫP7=%'CDh7+l7M@QLUE? A5ǩ PTBD;0 :mX=gڜ.xu b-}@?*W{"c b;!;]+`8 I+dFbe$VŇ] Zϟz!=`\U<\r ,cX)ߎus,mG^k)C'&-bq4J*ؠ-wkʲJށlRJtY^חvfU8q')u=۳-qIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_macro.png0000644000175000017500000000163710436410657022707 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?% &zA쀀_|ygE/1225, w|c_|`k?y鿟tׂ"``e`0ǰxb&̙3]@, ͩ g'Po ϟFwGv/ Ƿ/3Y5ASCh0m ?~|khlld,**/&&PQQ@0vgu-M_>p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/login.png0000644000175000017500000002247510436410657021362 0ustar mikemikePNG  IHDRvqbKGDn pHYs  tIME  b IDATxOoXqڢXHj1@2VzUpq\oƞ78za8Fofqڕ2.\@(HBG}P$-<$%?DJ _?sf׿* hQ Ի_]]I? >F5, N2IG10L!X3fff϶_X ߵgFvs>"f5U`}i)wB333dS!b0|5_X5*}s*e$WWWT؜:kquu%~0/`Xgggf kJ$D¼F򋈥-_UUѩb +~zf& 3_ɤq1+Lⳋ Q e"I?f7p"T,ūFDl"0 #LEa"t,h=PDĚԬW3bŧl`(bGR;H(-ۂc+Q}rE+.KA8bk@4\W2bS+j!5 &B\8 &Br&aEl)=8V#$N+wnhO dElmi6zx @PBݴ7❭; LFl&o>l[o?ψ1`@QZ:j\cb! )֑m㕳4:P bD,RHA  D,RHҾجۺ;)ZH, b b@ ")X b@klERR\.XHert˘ɴuTu͗FOƂuy8}ݚ&QJLq"[ew;-W`ֹ F5\{78ss<>F/bgY-Y͇O-:B껍YMu5w;cS&Η+EϦzORkn__&'6`q RHA  D,RH^#fXH LQhRRrDe:5woyc"1smu56!El9G"1Uio2FDl[ q XEQt[d݊b`P߽-!-ǟϝrY/(Wrz\a~еY-92>6z[0~e aWZփ"%6 W!/ʕ߷xS)WyJq>|vߟ~!bu.v0_EY|薯LN]|Ւ7l_`į ‹Nו!{fr'k:e#nc!Y-7A]@BLN]|H ͇׎y ;{Dʾ~q)|!0 Bw<~'+Zrߣ*],6\d#yR:_H j1SW@D]_XX,o~$: P,E)Z׺xcn_\< X OW筟2) iXۄf ]ML"+泚s'l׺/ߟh8Kҿ pcSw>6z5P9Rp3إE 1;,b(eM"eY98̮XJ/z~Oˊ}Vw;9̑\qE[F  Qer)[I`'UxUlexXHerT8 />6z   D,RHA  qKj~Su#&--ǟ϶/ُyﴌ:(y`-A[um=(Zr}[{LN-WG˙ׯ~gNSs)S6_Vw &BCŵoo/@Zuvr*Ԉ}W;BjpC&"CY 0"ykSwsU>@"6jMUI qX&e^viWDmp|pE'hDl:-Qe0 o??/{99n *ElVK:?\[vZI19f\?L2굮l`'"avi.V?q^, Pϋja1 U˝?ŒAD+Ԉ-W4ہeg{O {w nK0q/͇, ZOXJ8&29umcy{QI Ͼf} 梬KAy)Br0LN-W4E}?`V0X0?iD EuZ  )V</괌[GqؓՒR;b"׺;[G~+ww~u_׺+,Ssf*l}'^@TBN=կWk!so2r*Ԉ}ۑn-=e1^vZca:XVu[{p EluV6>%u,aWV?Z4{#7 Bm rE+W4ۛ7%|VK:6Y@|T:V!TeŃrE+k {a?x,RE֣8-_o$~3YfuNjmp*'1:imWO1I Od<<㶫uXHX~QwXK,|<;[?mwE|uՒ#A o#imrw6)#Ŏ1븱Gpu"vӵ>y!mW% @|EGfdrmtz]=x?߱n}l,|C`{sgGی++bZC )IM<&w#cbanz VƏضn}I{<>$TLbe"I1a1IXyӢqɴ(kBJ+oǝbq+bCninqVKJjvx|E3\\ɒfWz4"n6zE -WfrG!{i.Wx|r'lk}\^>= [h=֑G\{`~ lyī׺?=b{|];ޅ(FoQ7{?xVVKR)om>x\{ꏟh3ug֭ôzSS~)Uh֩"hvT6 )k[?((,tV`%ɐ݉^_|웱قQB8'eCqdfrC)K&B'NY0)?NB|L )fr|,W+`RHLrE{yu42c7B鳯K$rLN]|<~AK&WNSuڬ,4 \Mmfrj~Lhd͞ )&\S 09G0Ť(D,RHA EkwnXa `:D7㩱Bj0/H\flEWXJц0YDqh֭׺4SL#vg^fn}g ((J[: 抢ko #Wxm ؽث;/\0[uG{ǝO;[GC_ Oim/hggI ODluS[}Z,6Fgm,+ZKGj~/6Dmbgm=vKz<_7~'xjS,7f_):Y-]*drƷn6=fdq+b=<~ۃ)*W4O<,c+W~bW6Oߗt]&-0n6 _ʷs[M! #֣ҢfV?<+Gl[w]+ﰹ1vavyX{@". ֊˙Ҟ 0e"R*4ReaXy>y@<`R(vۥ?ZJ0__s|eZ8]vѻDW>r_Ev=:7"EQvڽSuX@m;[?wZ~7tZioĖ+RO~>kL ;=~rMuu4j9i/R7P=[ݻЬ׺ZXJ3Λ6{k&_Mm,]K0m|Çk/A|-n6zn]Yw6-~OT KGBN 줝0wd$C8 0pfCqyeײ+`" /eə/IDATWUk Z׻meu>]]]]]]^,@T"]V9X, @RO}-ĥՕ̌(OnSΣ%fr|rO W_Yq N;a1 +]Y׺ΐ{aT~7jUâOgggXtf}p޺b)m.AzAjB*Lf󳳳D"!>J$D,L3b 8======;; ,bpzrrTU'D"133CD{vvz`2bkߒ̌aoVU`Faggg'''׿y͍7oDFl` D,RHA  D,RHA  D,Z/>@ ")XF09D,כY.nX7ca{iiCpfffğj}HWaӳӓS0˫Ϭ 1iFDk}-K!HqX&5`? =bEXZ_*MXjW7 T٧ZU5\͚UD"!^+ 8:>~L&E֚q+Vv6lX[:;;{yyi-aUtNQ[|5A9D9VlyHSq_XTrD"LTYwb͛zyyL& a38m*d2y֭d2)Zc{+^i m3_R$uTȊ{Ś^]]Y7^;bX4ɬek)|Y!"YX0qW+̔+bͱbldUUnWJX,dmYm굢v_֗f^^^*1K&ΌS&38YmlI5ogT6np[j^i6\,^*#_^qb/SVoHh=aKYURjMaXZV$+঱KcXOq+ Uu 3 խ[ "f Tןkfৎ]g&K7N5StIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/service.png0000644000175000017500000001004710436410657021702 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y#1~ofpq!ɓ^?"ogxǁ +nF18@_.ߟĐ13=@xcEV{ @/Tp? '`'/PΠ  _?`(2gXibA|X ɰ `P8ĞPE6   xEf9 T'h \ +dg'^l/IJ@ H}d` ,qyP0u> xa" /0Bbe CO @Ē@,7"íG +0$ưC!75=@ppU@tq|I`'!#4s9`Ѓ w2ibH <@HG@[1+@|GdbV' #t @!X1L1 DEj #qx AC9Č@3~b`}bhC p)a0C,a|5fsn.I1`g:A)ģeѷ ?^|dE Xc0,op 2h= P ԥ [w0Xu&4'1So9,^|ߜ_}Z@1,UPBt,, ay]ޟ'OPRzTB31ЬL-9:1F ~%1}`z9Y 2bf)#oQ/T M(!@11D1F0h2/ch BM4S0#޻ό҅#̑b`V̐-,6v^`a3 7>3? F@ fhX~[ | 8dy;6Eh`.uG[2|Wb~#C>`!,DYiBV x9ؙ~A#}>6~}˫W(<#ZN oߟxs2U %C.UL,BC-TZ|@|ZWY `i ?{ǷI1v6f`e?~exlw+2<5bkVx`ڶ:J3A;'(N@;P31<0$jh\zjD$+?;fa+&ܝ@K ^c}vfhs!k[/"úWݥ(^<ݾ< yAIAʟ@10z"\>q`H}6?ll NhHb@lژY%v@?(vh{4b[o^ld& f65`EЃW pz^  ?iesex%A;VN`ee X< ȃ<4L_B=L w5 ȭϿ)B",@G-HG /tW1|dga8`%>O?0\va+yPA-Pi4ݼмˆAGK`,aUdxZ^akܞ?NIC5kWz~xgn W? b]]B~mNbd/m?![_ A ń&+[2`Xn?G9?I~"]q/?GPa%,Ĩ)/GV`=wa>ⓦjRK m0J3s׵ \m?߶6l\&Ŀm}z=h @^&(& w^0|zS=~rk~\Ytx{X ڂ?X&2V<>2gb~=|˥io.-`^|-w6e#gCaL~{12 ū5Ќ J_{B~ƌG8Fn7ЀxZ(A MhJx nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R:IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/house.png0000644000175000017500000000131110436410657021357 0ustar mikemikePNG  IHDRagAMA7IDATxOHTQ9oftxhcZ´MaI`.QF(*jD\D5AEAEd"mtt|#M?;-rj6s=/:O{{z|iGZ)SrE p&-v̞b,%3~%в֯eC\hqWQH$ vMp vU小'up$Aaz}~VzJíCICt-{b7 a՗d7dGecy=/&$P($sss,@@drW|Kl;Nx!08mcDq +@!谉$I,"e-1EM+FtXJA“Gڲt]GDQe9AWW$^\&/*#a&~?4AW~5/45IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/expand.png0000644000175000017500000000026710436410657021524 0ustar mikemikePNG  IHDR/ebKGD pHYs  ~tIME  DIDATxU 0Ü.Ӡ^%DiГˊ-чl3=)̷଻WGGYDZh)7IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/default_icon.png0000644000175000017500000000364510436410657022704 0ustar mikemikePNG  IHDR00WgAMA abKGDf>l pHYs  ~tIME 74"IDATx_hY?ID[V-*KiwEjT$ia-HuJV]\A} ¾*Ex6([[TdKڅ&&&3wfχs3w2wL"Ýw~93sɚZ1qgL)===l:e*x^ĪTx[HV؏y">~}<3;w Z#+򛿾hK|%\"Ye? BDRkk+^~ ײ=>-hO9,[6$ , $\r۶O,Fg֚ǡumcFyl߾ӧO"˱eR:u z{{`vvb Lw~vsss M(;.bah;,X ͂UӒl-YBPVmC:la033qF<ϫG>|X]4 ȯ8V Y"eY8^^nܹsCu0 BP6! 8H868h׹q/\/p{"\4F*$(f %9\244C2_ Ƈn|زx"?EJؽ{w(@IΗe&''ߨfgO*IoHk 'hdiDƵm:J@Ν;DJdU˙8sJa[uݺp}q98Dl>l6ߐӚƟ6/>_W4_ͷ>R ~ԙzÊy|>U}_مdB9|? <2.xGqIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_new_workstation.png0000644000175000017500000000147310436410657025041 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME 6ՖIDATxmMh\Usνw_N:bK-RP b#Bh(`;[ҵ+YPHш5L{>3G}{[\{QbP(fQjKnnn~,k|qm' ~>sk Ô0Hb{s^8K5jq뇈"&^Nc% 2%{],1m4I/EDFk4)Ø#g1h6i,ϻ!M-As~h? =iH=~'$Mh$N (HFe;8R)P(x9c4 Ir"r/"5ʔ+%ʕ}sw֪%=zƻC >y˽VW~)@Dj"[tIvݓl˓NhW:|efO.YZVޱOO D]A1~0|ݑ#3V%rnѾYmg/]" [o^E)9~Iu1Z5W.JY@jޏd)uIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_template.png0000644000175000017500000000100010436410657023401 0ustar mikemikePNG  IHDRabKGD pHYs  tIME+IDAT8˝jTQsF$I'2wP, | *A` ̝sI8Y7{\fNf2i|&K4wQosWw0-L'V ];@ 2B]rΘp60!=J)*ç/#ek C1wcx*#-BpV)59Y%eEEZX "U@ {߲"jʰD Mc@Dz|"P.AE`-Xk n}!FC z+]l0|CGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/zip.png0000644000175000017500000000142710436410657021046 0ustar mikemikePNG  IHDRagAMA7IDATxO-yKK_,Ж6@-m8`f=\EϞX; ~p`$j#;HҲm//ov/o=8ms^.2|Mz+sssߔu;wfL&f3R ,v$Iݗxwtdd$IrxxlFu A^zG͓Y nKR+"\CCC'''L&ubPNHָËvPx>MFѰ,h(e \y<=P'Dy* \gBMM{$t:)E,A-&0 i˪\r:جVފ^&44M$8SSSϯρG|~V+lLLLH$-x!E=˽UWWL&sxTM(Ȳz0 L2;;{7|/p8<>::Z["!"&[<IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/closedlock.png0000644000175000017500000000135610436410657022367 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME $84Fe{IDATx}MHTQ81IR*CPw)DZjpn (E\Xʍ"4;!Mgq8ӌSgu=\ιuo#mmᇭ͏Ȳf\zrTw^áDZq(*# ɟZ&hVBuEέJyi3 iLuNWs$uUxv `57 'ՑPc(p"D$ nXAT)y {ˆP_ <J܋mǀP- qŝ;_~ʀ@1Džڐ8ʅfps0 * Kpp!93@`5 *VEXp@5lLl4m-(``X12I#2l0ٴ̦:pg*V7mp)āݹ[IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/processor.png0000644000175000017500000000062010436410657022255 0ustar mikemikePNG  IHDROc#"bKGDiBըIDATx;08Âp Q(,8H‚{QHCg&~f}Y*']r 3숨9e`d!0$644/䂭***,*?fU B/3vttkR%%%"xCIyϻv-2ǩw mL5qZbCtEXtSoftware@(#)ImageMagick 4.1.0 98/09/08 cristy@mystic.es.dupont.comeB*tEXtSignature7d98d3510a3f5a072a46133f5d59ec2b? IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/phone.png0000644000175000017500000001024710436410657021355 0ustar mikemikePNG  IHDR00WgAMA7^IDATx{\Wyܹٝ}&Y?bb\!«( @*?ZQԨTH-*D}@BCKj^~,/n CC55ayVLg=ڂU</ mp=B|oع*<(\6ŢkklNOtLl~77ݟܽݲ׍" }}ρX! `sh65oN}M!q=\)DsPݮ %sP6;kA[ixAɇ?G__.m. C#yh Ib`7m۶MٲzUKyX-:9I+mhQ}DسWh`UA5ahƒIKK{׻x :5OcT/zՆZy)Y+EfY$Oؕ J~Ww,TW,_j}W''Jsh_kZmQD7%Zu*q` /zAjo.5[޸{ c00v퇽o{578x#v4*AibΓ&bm۷=/皟$| eW q}?`#@1[,K>VՒ.co3`Oo?qͥ'.:1-aq 8p80+׮4_{J3{μ b=-n[j[][dǼ\k=oGo~ͷdGWsҞր1a4ֈZ1!7spAk,NbݽP;;pmsS˶v|`kN>[ d(BZ|NpFZXt-Wݸql7Nl)}DHl5awm lR3f+Km?;k(/Ȋ>b9qVqReB`)stg)Ca?t$ Cr~"ð "qj-vk-Xcc&j[+"N%%\G99R ,$  ?On!RAWŗ`I`rRl(EqhovOm*E48ZPKYM, )g䖅S,?)mn8 ]撂2a/F:psm31;!I]yNers'*($yN! $Į]*1e(=8$!c=tsMb"3uj_kѩM 0;x-8k( i)ўTT*,5>++e2!XB!`}n+& +?8FtfgMl2c+t΄O]ȇ}h*ѕP t?$O..R(m u]hZ<쳔e0\Cϖa6q4^mG--QUVW}?|؃5]`":QZR-q沌z]Bp0$MS @*8ell0 9=7:AU, hvR9wݰR\*Y.BZ %RB_.ӬҔZLŲ,|ߧl)!,*iHfAJ^lR,l@.2`77}/>ꈅE[HAV =; ##yNٶatm8}S.W_}5JVeYرRdTcffqX^^)yΝ[&<8YƜ 'V%bI?Q|Owm;%ܡVBAJ<umdq4eaa~:A@ivv$I8q籼L-pm<Ǎc0$n4mir'<|pG5M9sׇ=<v}R A:B<'"x֚o۷tGaѠn|ji n3d!yHs$%& \ǁ8F!Ws |=Q/zStơV-MZaR u9{,{Ak} O=Jb4bj#gDV ZA .]$@/^טOZW--{.s1ND_~/~Z)q#IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/dhcp.png0000644000175000017500000001110210436410657021151 0ustar mikemikePNG  IHDR00WgAMA7IDATx͙yl}?N-AZ 4)zpQiIh iu%;V؎+KVlYEKJK.yW%)EÙ7} ~aAfsK/XZDLe/-FSx_W_uR]-ف-] w ܵEΎLk zq4jy G[wM۞H|i [nݵCܱw[zhΦ7ٹRU\X Ns'co|#yonǾ{=X:mkqaU\rRK9\kc|ץ|?<X-_i6<'o+]#sPZ<)1")!W)*~t2_+i /1P ry!x0oI~1dbrI 2Z(ePVm2mSTcIG{+k;BCDXH!^X*d1bZ0ơ9M8=.C͏?涍cZkK[9?6D9XF)v,(#PHcKsSUN7BXhnj"5Z&fTB:;:lh$c`X.!j}χv{hS]Y4#ZC-GJHdžuؼ~5Z*aD*1l&,S Ⱥ^GK NӇ0+)$[wn`Ӻn6> ۙ254e@T:83s/O`ZPD&䐤@XRdEnP*,Jx$HYN<ϓL 6 ײo5 Ʊ"ٺq[vn"7~Ls7$pK6qvt?KlNJ%6揾8B;Pcceb)NsezS<޻0dR)^Maq8ҚH^vl|}lS`kyM2Ό^9 r* -cN9Q4F;.Ns×Igعy-kV;}֥k "nj~?o!S]:K~B(Wbʕ895]369W+l\#eh|5DžW~S|oU~sϾ-ı!54NtkiT],UU6>=S(XXX(V"J1+Ut_?wIuR~Uo05= D6~z2ǑT0Hʵbb5luUCR~};~k TqTwNOPƵ2ҭH?8|.ܔKg6NtjT=/qP?֥8_:?։Qy2٥8vo~YhAZ7$ 0Jrih ?>׆I8lVWugN"F6*4*%#ӳת(~*FX!xin^0<#_1R(mP _(Q;?| ?ѡbz"*O?aT5mq/ikWg](G8G5bCI~#ӎln2zgyGJ{usf5]\rjX")+Ri逍ܺs=s"z̻̍ji?\6XڜϿx׏%ղi%R!0<ܲ}-$tbM[s>űRCJt*$*e8{y鱪+]xXvzb%Fk{LL8(V 8C= l4<)%k6[y$koFkpch!{ c,J;,B΍6mcll !%~ߓ|I>AKV#~ *0{iϮx)_ZIYKij0TTcUXeh1I; ђMXȤ]9z)7|.m=,*̗٦LZ}t* OAl4iҩjesGKSCE~J+q\3˦#_dgGgKog3ã'd<0Z!A 0HWvL*DX6:n-n&1Q*_Z%yDQ12P dBT(k-ٳ)3055ŋfΝc8y${Eӧ)l۶^RQ111sd͍*8}4SSS ϥ>\ `vvBo"`޽H)v.\` E~;===\pr [ošC[wu;k΄u/>>Z[[9uG%N76ljj_9r1z{{yaxxƻRJ|'.?Ժ7h|gAJya,RJ9x ޿qsOkk+ ;whjjj˥mWRhyDyJ%<Vy\xq`||A Z322pu[LM%b]ce_Ç}?I\uj\~fօYf[ _JZ t?QkfIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_new_macro.png0000644000175000017500000000146710436410657023255 0ustar mikemikePNG  IHDRabKGD pHYs  tIME#2IDAT8ˍKHTaxͦ%D6Ѣ=MS$f,A݉)E"**(qR%1%YmiSѓ1cjs3::{ZA-Vp}_'$o)9$e^k~_bXCT*h!@CD:qhJ!0$2@R 0GBDZ3q)4ˁeSA@2 C>h$(ö!cQֽ*wn H @s/O/^srTLO0d%~n&]JTqFhJ: /q M*f!۞cAt'0MSZDt"HLiLplI=pXW;FlqYsu445`04'm*.v5A3gKrc8Kr^)o'iqH F 5\)%FNS8u$neh9ш>V^+,F6Y@0ڇPRge2MS|;$t=XA9|\6Z8֧7]pl]RAX>M11a%4_~A6=ݗs5x>gϵe տ;m-N x޽N뭗xIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_new_app.png0000644000175000017500000000143210436410657022724 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8ɅIDAT8ˍMhTWsL&M8h*Th w u*Rt"] U+"1V?(4񚙛3s=ŝHP|/sx ,qf v\>T>EY"ע~ h6[ZFU9Uis]cgo:o"56jމb _s`0`'wS/; l6C._]}P今}N9Tg9vi2ա]Gd6/^GwϗONh9Zک^x]lqG `3'(7ѬghIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/netatalk.png0000644000175000017500000000707210436410657022051 0ustar mikemikePNG  IHDR00WsBIT|d IDATh՚k%Uuk9޹` 8 OAA5V Ƀ1&_Ry*$&_b"I$$Vh "{dqfe<{|}=fSOsvZ_k13!"ͬʕΧ+9DW3V:Ewv TV:>V\? L4^Enz#nU9ul^@ ʌŎ}[`>˛kxGԷ ƿCOƈvzܣ9pc,PG`z{w7 ]'09 ycz 7̳~ZnW9mSN(]{n}BȏS6w?[ya_#ndaqbgyΧ_k>Or;/]L핞h_s*u|cKmZ޵N7y,17Gee) "4Ÿ}3ٳsUpp u?yJPư %:fj>t9Ύs%'7nbn 7| ;Ohc_ 7}̘/85LMtwD "D2Y\8̹]W\R$u~}l -*h EzRdy@E13C: D7C|}WrbCiDABYK=1BxT1^.q@#O}qLMOq9ᜂf6UU7sտbAUy [y'8vz>p dyNR"`fQI`~b7Sʲ<¾/NwnW^ +}_1/_;n7û5buc "d d@(V;TBUY#Dž@T*o~F.fM%-fsPuT1QC Q q H@4ӫhw*OR "Te"e5~KnN84V[n6I"8J[e[L*#ш1ن0NI"8K]:pΈL={P?9nØ@YXژ0>dYx^G/!J4)YéИѨz)+|(M!.<{;'z&y^E4ڣC%Nn#L3UkUX=aҎ́ʠӫ"sFy͐h84VMΥJ9bӏ kO;hQ Jlve4=30J>!EX9y=|'DAW\ęK1\XD *|Ɓw3ވ %zSTFtP;EUhTqm$RVBdBxЀAaG}M'"hNb-v.qY 4 B%'Q$e?`^]N0?*4Rw10$*96 RJ1*4~LJCT *Z'b(OUvY{-l׫;[j|FUhS"qYk Z0UĘBV@!%=>8J#ͨ #:^:@wqU/B[b$@#1bDX@W &u8B2g>xBP 5,,Ź6ϧPAX$V} 6o=K6VI9֥YrURE501 ާ, ̣S|pZxgDkIzk_e73h B5E$=, Q)L 1P˕X$W\H!.SOENkYsxz&y+ ̳XR8 <4'h2%F$6 J(~3gۙ};TV̰j&K9Ij&9;W{8yiv&'瓴kyn.v|o%_M{¢.AE(# ={HЋ.=0~{Fj 3~l@c(ZwI~n! Pz}GǾ#{GwˮFaV\4$2}rgEw%{t^; yNj V{9B6o+ދ9,/b/?6n9KUXTA/8pC^dWͬ'̿?63j Bʹ %t:oCӚ*o"&< JpJIJCA !*xJGFk2cxNT6Zwe+~@3zdpUXE<%QB!8$3(y y Adu}eBKir7*X51 g8nfS5:C_΁n4<1ȲeL RnKw.yf-fr{/;dg)8%-C}WU+UL5< eF hfؘ̠Әjjªl期ǝ, 3F{ 28'lË+{t;|Cy &@J+ B3@# <{4 cW;~=ݙn9?F$vFI-]{|6`,!=~3[3g\uK,৿dM!:X<nߍ {jޣKu"YLz<)̛k~V|D6pJ?YvXY1RyY1r%sq#؝IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/mailqueue.png0000644000175000017500000001004410436410657022226 0ustar mikemikePNG  IHDR00W pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?2`ddd 0 K(ȮP@n31iz pq9Xi r=&-_ot%dN R`p:NϽ {G./)H?)IV0`V*n>W@xGҭ[M$ 4Ks/@ye_x?T~AoziTB!6h9^"1~?^~ogo}+p(F_/j9_Q攈^"%8? o`ql?!C]e%N>IGu&)& R<qbA~1d`X Exr.ɍ%ǁ߀7z nb!6ٹsL8a? s2|,LG(ty.`0 Ku6< ]?P51`T3+VU2eg|x < 0ft4L b7 ++Kz>KFDdf&٣x|da@ h~O ȖbfVfxoi^bJ#"LbB6B|д#80.0/C~r/-#`#Nr s~e`8u>{A?.Qyŕߦ%y[(00 `С0ǂ1$LZ 5"\(I7hR?tգ;_; b<)g<2ExF(bA.!z& +,fB==$p|3åg~s@PT{z!W}yW )q⚪ LA~kyVVeӮ N?e8t>lM,%L`ʷ<=ꁟ_A},:x  ܜl L @<QS70|ffH5aOw`x;k?1La I ߿`8pG7z; >'e; 剪xr 0|ɯ [nk2Ć1K hLq+LJg`ӻμb (ː * &4>aPc ~ >Sťy|"2,=22ǰCܜ] 11TVtLYHa@eWc|mZj yu#0w60lQ SRe+?_A?.' n2!#ܒAM`Ab$ vgĹ n00q2[`g0%N?[ t4ʨ0I @X+2hWNdQWJ&؀׳7gvdTd:- L1|a`.l_@}𗉉A\6wafXw)[2A%@amJ@3@w3 lVqUS#\6x~zi> }vV`)$zL!? 윿$xonb` 13z@ʣמ *AɠZ p5#d`R=K,؀,C_hE(& F6Ux 2؞c`rk1pCv_Xv۠? Ps96r ,B-5ՔmQsg{ᎆA+Waﯿ /cه]}e@nJ1X n%z \`lNAr4064Vo]_w/:#tXpX nb$a%6j=L]TTe@tǃ0 o6_z0{ϹP#;99 @$NĆ|nd:0'qОxi'w{w"9#ڈ @19O -7A]JGCWgUq9 )cc.N??~3<Ὧ.>y-gh!x0w y/tDj~;O/~Zyu< d֧o矼>w~zA@03"7t 7m]ݕ DyB[ko>l>riɽwpÒWpR @\^0Ï_ϻp{١/@CB7)G@Q_9 4Et@Qbay,bcJCʜTYs7@1cP17g1IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/save.png0000644000175000017500000000112310436410657021173 0ustar mikemikePNG  IHDRVΎWgAMA abKGD pHYs  ~tIME   A IDATx1A ll2)N X)>"7IU:QoUYD9ŝ${ 1 ط緳!0>1pGBBB *Of!xqy{{{lp849g4Ecv:HUU]~/3uzU'߿hEj>Pz׼ck<@~yHta*wr,9汔8|[@*«޼jPup4'O+9iYju;PDU]9l& ~DJUL .YaZKݦhQ.dYF c&ɢ<OӅֿ7Zkk-YQ0c/e%I|oT S*tW HBi)oDXNc'IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/sound.png0000644000175000017500000000160210436410657021367 0ustar mikemikePNG  IHDRagAMA79IDATxmK#w?$!u!DBmͶC!BڃЛ^RDEdX ?i%th&3qn;{^4555 z].r6HCX k&nvS,1M4T*n x!|!kDAY0 ]1MUUQݎhf&?*[@vMV$I!u^TUEeE!L室x<uUU#`/^ t:xjL&_D&a48;;tZ4 au]$ ""ȏM$i^e˅ndYCkKqʊpIOO^˅aݑ4_NNN `fP(h6r6%R*`||l6{K?>o, '&&fdd}RmIj%J%3  Pe;IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/hardware.png0000644000175000017500000000150410436410657022035 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% (DIJr啗o_h(ß @@/?D _֭s:*Uؘ9adw//1830p13po n@AJBb3  T=K2ALBK %٬/>Ǐ/ CaWό?ޱaɠiʠ݀A7 , 10o <\j $1<b5#~&1 a7N @,a231y&,wj ߘ00rs1|AWALOA߻@, ve R _0\8 ;/wx33X@ E 5ca5 g'pex[E >H0 #-) 1ߏPײo;#3;@L [of( 66o >

    l@ aπз1?Ёf. SA.QNj(@PX A   ;Wfk(`0@a r&` þ4f0@a5* ǰ_[KWB^290W:FȆ2|o3@1Ja 66EEpR<Ǝ=ď_30|33(?Ɗi8@1.Ca>ȥ C1/"`B"  \*h7נd1܆AleFP)EL⇆~e&#nhb8(S@?G_c /AYqo|Dv,ޟ]lef08%] d?-@fJS`K)  ԥ3 0&Py DWM@`.EyH 4IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/ldif.png0000644000175000017500000000536110436410657021163 0ustar mikemikePNG  IHDR00W pHYs  gAMA|Q cHRMz%u0`:o_F gIDATxb?P0@PRR"ڐݻw볱]7GUbį_~^^^ĉ۴9޿O -غuk1 ?~t~@1D&!۷7 ..SW^1<˻;33޽{"̛7O\DDa%#  RRR /^cfffmA@(<@D{zjnݺuǏ߾}c`<{_Ӈ݁F&/<."IIItttzɓ'`ywށ1($# =pʕ p1Ϝ9NyP3ÇXXX$%%X~_R<@dy`ҥ 7 {h>a`^\\ l&@䁂VWW_4K9 ˗/{d?< AѠĞTVV!{ HѣG7CȈ,#;Tbݿa:`q y]]]@eh3s6<+@#r#0wh[[[{߾}p.b!k׮*q<,Y\ 222>|.`m(] u` j=2? bh 30:pX @E&,= 呝;wC4.AwY@ k?S_`~@p>PX(y$ AL 7ưHXhPhjt` Pc T U0Ê}'{:5U\RqB[mPRy| @+|Zi+<3Ňq5 k+ܫ$SU(l4( aw5^(Vv0, _P Ho8PȡAI4 ?P:hFXnp_5 " ֶ( r (ŋAX t7 @ 0&?9D`l0IJJa5+ФI@ d{T?@AfGuP X APY?q0R{C!y˗/F(`$ Ǐg|CP+PYAL`6(}AB f6AiZ,&4C00aP?;V*ԁ<`Z{.(OB}P> @gE7y`ūrZL LH?l<{nE"@AJ"0qXVBǠvLÿ!> bEv,aCN`a'WdO>;ȡU%L Ah%t"/ ,5A<\{{X $L l.<߱>%1 )aiABv(5a1 yP>>@1[zS0 wa0aixX L;wnR @GVe#r FGzA?px[@:K00( "(݋Zɥip?@A T#ek\'`1>/a:`Q( pQwnh>Ăn uA y(ކGd<Լrؙd,T ]{?Gk|`0iaCGhDj @ਊa9yH&DN:N, BHOh!x I`P aa=#9Q A!Ќ_P ub<@`ܻAx/jgA꣢vQc80sIjh`H8fjA%(h A-`~CEj@@;*X~'TdboAv<'gj  DIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/list_new_department.png0000644000175000017500000000131510436410657024307 0ustar mikemikePNG  IHDRabKGD pHYs  tIME $5)RZIDAT8˕]HSaxvvvΦDWQZ4}.++ꦺQ (Ƌ!U`AHPAA7C(̘4cHgtN.έz}W/Q#)+tAсZ5W<ƹ'uOB9MY[uL&E{(#A"qq43gkjS{U\B{L@=\Vƀ> &8v'=5^-MAAyYolad7v >!y H4! )g L$`CV Co"!pj06 Æ}|DCGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/encrypted.png0000644000175000017500000000232710436410657022241 0ustar mikemikePNG  IHDRU_gbKGD pHYs  ~tIME  NfdIDATxoUU}ιmi{)!PS@#J8`d!ę`LL*`9 Ġ;h,k Ԇ>RBs9gK _w[klv333o*XYYPJ}gbbbrhhH1s""G}Q~KD(!k:uG?|0DD… P͛7,//Kgt|ffsN9 XKhoo,aș3g>vy366x[vH[ǵ$If099W;JsZ0Io;{XdYVSJ!"(dl9qyɋ(, pT3Gb_Casּ4cJ ^kz1^UӶqk]t(kC- AEoCJwrе~#$z BP@s#6Aaut6af[CL8\AV܏(wBjKheD!n|f6wSw]%2MR JaPjh Ie,-au ?Dz~͙W=-`grsȋرűEz$_ݘzu# ‹{ág#_ȵ'ӞBU*p Jpu9"x|b 3(ل1aj0}GZ) "0<8Xka=%!`880Ll6y^T&ҰTqc8b6z6{TQAʮJc>Z(3>y4rN~nFv]HYj2$"Vz(ۚYCZ&Ä3>%>^^~%̷=1WubIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/true.png0000644000175000017500000000122510436410657021217 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<'IDATxb?% (8Qc@7 @2@ĬHl(A!A X2lj okȧdP}گ? ?YB/oV qj $dIH6]'P"@10" H3]"rTW__WہÀꞀOS ; B׀&03$0Z11|88> F1  F " @aC/Gpr000r10 0`^1a8ph:P"A %^`` S @@14%$@ xjPM3 g 0f6Or n5]ex4ؿU |i X?=L ^5S(\ `N~` /, {b,HIflb47Ź QU!6IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/alternatemail.png0000644000175000017500000000157510436410657023072 0ustar mikemikePNG  IHDRaDIDATxڅMhu|dcfv&nHi"ڔڃR%q(FփTb{(TJ! R")YXj$a!eH7Ygc3u6UAz~W5JY8z}]'ߞ?:ߌ]S FWWeeWXXXyimm{.^̊ ağڷoLF9 Iޭ`%`tD"e%c C$ ccC($ۊ޾]: #n0_DBt@[["nY͐$93eh .]vDX]y-nY?@)! R"#pc|pp Q vODU zsJaH[hXRd ]|ژ^C+ Ttt q'iV~NnَڭVtuZpmLO`eR 0~{3)d o>a {KwЛ샦jhiA5FMM2<-]JK8O;O|$* -װ[C0Fǭ[ƍEu3֪}b:dP 9 k?fp{Hz}%67T睯 !)GԓzGIJ&'|7cfS. Jqoc:obޜrs[ WbAP߫G/8*s+?Ծd}wt:A<*%ıN3zoՋAG7/|b'"IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/openlock.png0000644000175000017500000000163310436410657022055 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<-IDATxb?Crr3fcccWVI?Û7_߽xߦ_έe ('9?*M]] 4O+-۷H0}7BƞD7a͛p?~SWU0gOH[:o @L ,>XZ((3[am]O5x֭S@Hӧ& = @`>|2@AEEV͛ _:eee:uֵkݼyANNLO = @`/UNd~^_¥12,'߿1U^  Z?R((L~K?@563 "L'&& 2`JL|b``ebU@afo&f |'I}{Y lW^Mt!E/+|a`x>0@ x t'P=@(hK`ûJl?@o? adhT ?@ R؀ I FmA5A "/$@ ف @?i }/$llwb?Ff(A d8wc Msn'!IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/sort_down.png0000644000175000017500000000025610436410657022261 0ustar mikemikePNG  IHDRB%}bKGD pHYs  ~tIME (8s;IDATxu |? !X$W-< dϐeh7fȥ=f"aIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/select_terminal.png0000644000175000017500000000141210436410657023410 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `!8` `wñC{ggrIP#p=ޣ> n$f@gjfA|p!Bǃ8Lve{vybAL<xpEB?2XvN6&o~t;Ao0Fnj )rf$pR֥Ei_ {԰m@}~uEI\ ټ]r6_;ɘmpdD2EV/#3(T@(㰙 p vO'p(ثA*|`%ԉ9M<+&/PPK`x{OV Œajfѫȱ  kfB9;7Q>&4%ƚ#~ ~JZʦ vNַm2HM# -&򤪪zVC86vÍ&3]F婧AnmQUU@QKdX"=QHYj.olȩZdiIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/mouse.png0000644000175000017500000000135710436410657021376 0ustar mikemikePNG  IHDRagAMA7IDATxuKQ)% M]СBd".HA.y!P;"iQQۺ*&owg7wf̼5t^=NWDP(044~0'TRGGBzvzz$볳eQd&WR1sNN2|p.0222ND! F&GݢyZXXeJ`YRU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]ۯo@du [[0&0p=Ky6Yh݉J'N.<\]^y R!l<=q8JAEeVf'`lO{&JKu6*'~{~]VP[[J \v=Wg!tr:2675k=uu Y$x A(h?+=4e&?{E1AihNĎBc-ttR)d(.@ސԏIYɩŐd)[]ikZX;>[챸pa8o(Ñcp3 ׁ3颇; fF57wsWyx\ ?&yf^?!`4֊ݝ&n|O]ilnX੩6 Z.A}\Rɯnm*'Lv < ,9{h!bZ[/CXrv,}yPi+=,oSIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/hdd_linux_unmount.png0000644000175000017500000001522510436410657024010 0ustar mikemikePNG  IHDR00W pHYs   9iCCPPhotoshop ICC profilexڝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEVRrҺpanh39X H_P^TA@5Ta-CSE3?~~у|yٵWMR P}i$WO12eg`ggg`eecn.v.2, ) lȠ& 6VV1?nnO9 9SNII@.FFhE9d0!?~`غ~+gggP]]]'Ο?lf(`ضi%+oؾh7b8}`=AFZ݃,'$$Ġ |gXf Caa!'N`5kÄt`!;3AP *oHm?@G0m`hf Fh2"U| U R2cr7'''0pYaa:}}}6CqAh V%@1Ak`3 x͈HLh}XI [͍_0;wa) Nb8x X/ hDzj @@=+cH{'=}&|1 d{hrd3͛wFؤ~o`s3` ۏ :ԋhY G%ðy CK5Lہ)no!_>^Pǀ ]i쁛7o2\t XQE`#n 0g)ww>/ (1vFQQD h`~*p. { }>8< N.A!nhhd8~$8_ xcO>M`I􍡬,a, 0V  O~*KfpIA./Aؒ#RaBJJ'O@/_nݺ+0d45h "pg~z+eŋ$ފ wN;ÞW5_!V1&;8>}!rF `?0A׮^0ZW\&ǟ f$O8j0,[@a>>>9dA-^b޳gmUU|/bWL :&O@[@ tB`L ^( % &0X[[@C1g;T2Ao`%'l2A&1q )ipc`ǂҴPax7feecz"ׯ_={ɓ'@1e.::̣ RCEa~?(d}ZL@ϝ;O*&$G";0ǏPj01@C0ĄV}_kϪU!vi珟!:QW`ĝ ? 46v`''@ ( /4yfffePSf PK3([˗f'$$88yE75TG@Gn2hi(0-`KBk.1\p6hcרğ}n5'>Is0qKVЮ%+,>~$#FFDݠu++k4͡=kO>P74}nO|U8x\-, UhШ&+W.cALgƙQC]ԩ /u@5y~8~Ǐ|gua]KX1*/GNFr ,`0yR]޽ KHt1CɓvihFPU`@y@XCf70<{= rp}`q?]K@ɰ{{E7/fwqD.l͑թeprfx>&̰/ (/}w*~awgп?0\%X|VIπ @r .TT 0@Lpcʕ}229|X1ke8),`+u+W2e;кvȧ@Sg\b(+`g;Ч_@j_`QAb9@[#@:C*)]K'l_<}fm)3 v }+ǻE Nc}* 3 d`@ˌUWO IlO u?N}xan&̰ "wyR\qrsGK!Vmۮ2\t{'} , d]bdjoj>$1@Q2cRNNo~='O.gШ f$2B  F*tpp+˟{'-sh[CG2#o@,u[hNy\ BIENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/reports.png0000644000175000017500000001031210436410657021733 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<\IDATxb?PBb999`cÿ(A//P ((P//߿d$2c9Z=|`222ib$%`z෕^u`O_'1_=<} P7 M01Ɗ.w/1z`cI $cKMQaL^=8 XH?`]|`G3113033i&&0DE%E$Z@5e`300`gay 0&DB Dt0a߿ʸy+88<81fffX{^BP4s C}ᝇ8(@,tP\!7CB{)㿠f67Y4+8d. gdjK+`L@=RFԦ+OFIp&g֓e4WgҖ`bfgNR{@G$'Px|8dF(F o'AIdZ9\&*@pH: \~n&?zIkZ<($!`_X: )> @1*VAH?R'ԬA)@-[X @1(  DQ{S+m:wBm֋O+sLCCjwj!9 !sc!gZ!{;C萷"@jzlp `66oy!09=A`f$F mP U i $V.!L V :ZX׾o Ó]"U$ ,(:o?}PG\cn %+@(RCMsg/ T9iQP.R wKm{@X*L?$UZs@\6'9VBd tpy ,,l$% :8R4#@ax߾< l; `7lX`fe` 0y>} ,*v0&fDx)p =}@XqT2{sWu]Nh9 4`z<ؙ!l@ꘁygʱ~| &l>;\ #7-`Ɉ{& i`,4zXS 3yȘ'aVY  XA6&fL40K*Fpi'n0K1<{AV^Ґʈ]:Z<ˆ%.mZϟ }bf&_.`pPe,`Pꐀ/PRBZ^;`p`ȳ3|fbp3AI hclR @K@`onn\w!pi< -Y XŠ3#fI72p3Wɠ3\ps cz pz`ٲ@O8l^эZfj0Ap {0h)K}`p \ @xG怞Vl+ñM[,`8q2?= ޾p5SW0<~AOGܹ[w ZMMоS fPAZش a#X(,? GnE`H9x1Jn{)xDNAA>t<&ɟ>}pcU5E'7+p+ ں kV`xC0D.bP dsq Ë ,@O𫃓*,XR@46zE5G.\pc`q0†SPJAEMQX`ecfKax|+% `v@B`FH҂R'U63h{IB@}20i]ā$'PcYCLj @x; 0Hbd57!LbZPO0= &䤁nb Ckf} ßWW W'<}$XHf`N8@Qh !9-e  O| 8 2n&cR}@-U+($'h&C) 1--f@XEKNB c4ڀA]^PVp Á1! [D@Q)UFԡE?,ys O.f89&` u!nmE&ELcD"$O\ ^Q>`@d'!?U^*Nǣ':& G&AU}PY8xÅkPUq!Ñ@=Oq `%;_ "}m4$G6/D .'?p/ag&@QP>'G %867G^^ ą`3WArfMHA FX tu<b~Yd[[=C.36B֛38q Аx=_/r2 =41F(fB@__#) q40& AՃT)12ˋ38p%<=@gؿkOkjJ3890 r \t+ٳ}ogM$5 Xho_L6i`ן۶]_X>9nbA`4@[ρ"? Ac<J30< @* LrTOg`Kt8a|lؑH-ܿ AF&@6029޽n818 R3ɉ< yFF\шɆRAĎógAyA &$vÇ//,^./CcCEпa|P ܽaɒ3 oT<^|&$3() !āy0iiIsp%* X-2&d6rD<$p+j]0eJR<@Hy>~~H@֟~8f&&vD3@ʀHh ___O Ǐ?rH B)F>}߾0P)AVv/jb`ceab~V66DG8NC=$v 31@!ǀW|g,߿|3|o 1q.|aFFZ.iz>hw,B 7n<a03S4 $a= |x@% pez{?*?.z;UT`yT&C!;w^zhyL7N8c`!.ΊXv50XBc5ۗ޼x?y{G:8_@RVu к P̐İaMebֺ<*B3|xS@S lw ?df9M'Oc8uX **V;I@<Pp038 l å^Ex ~gxɠ X9Aރ:H Y B |_ ^af6*9,(@ <@y `SzP 21A0 o}et 7򓁏 yK f8S4ol < c5X<֔O0()h- n| 1/  NV Ullj(O8 4ܬ<7~`C~د!WKM`^ϰn˭@\KQQF @ptv;/]z*f ;#'( 0\L& ,60?ݻY@ؼcU:l ̴??`ǟ.y>```v50,H@:sÑ#>Ą!@]IfAl>F&?9~f=t`1!3 :L0mS wa w&] 5c@i764% Op!y"1D??/// -<$]?>!g R G(?kkKK3V`[y\TIXY)CbX=¬F9J* PaXó_c=gxr.6` ,B*1` } + Þǟ~dxPAKK >@!BnzpcK!ye/ ޵ȋ'7 e>FpbF=^rޟcA\ᝏ l G9@$ RO|= }A%)X2%-Ǡj^>gmIy_%P01T6YPM?>O bbl /~D߰p30;Uje`Xq_c:peF`ؼ`d -PevS,@!KKEc0k3,Zt`>`[%"BX?b|f`X[* 56\$ n> e `y 2 * a@Po4)HP: >x|eAjf `mn1󌁙wt:(1+(.9j b`l}WT x 9 0Cuu Ri)Ó˗/d8LB1n x #PGׯ] 5d&@ j1TQ@A[U߿QMC r%22 @E 3030HJBh "c +4 3l00=<a9  u b r @=.]b0ZMIIn [`āki ዊ20DD Pw:uu a'X*@`APFcOCV3/%̿,`4@2TS/Q" @~ JQU ffF>`&?( @ L23ʊ""_{oA?@ > ?P#27>pj0@ > cb :oBj. @`20? +(2DqH H-T|;Ќ.Y 34(psAT00̝HNf`X`ǫW ~<2` x!X 20UP PwC !B)61* BC/R@aK.W363oS =B1f0@a  ^-!WMbx} iUM̽IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/images/filesaveas.png0000644000175000017500000000234510436410657022366 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<wIDATxb?Cnl  >C`1A$D _4-O'H X@:X(3yyYi{g0s*y"w=kd!H?ͅM`5 _;+Q rd1 ȯePn|?_?N0/eaZ[ #/## R_20u0ػ1y_1} X@q+D3dȾ ߿chG\ba9;/J\x X@./X?Ah1P?'718پerG 7s/|rRY<@B?4C O *͟3?``sa 95 @ @噶3a(2a`-.J|ſ@1 Iv LA"q fEg.a'~ @,4r)eI&JV, t-38ܿ#KF،aa, Y 3 J:? &! dCAAb/ axAݱ >b`A 1D\ Q_'ph ] "C r >`=8 0 9?4c00H]7(#LK203>fPq%,[X> 21᳗`PÔ~?8 3~D@ Pj i@C>WV ܌ CeA  `C`"ۏ? ?˃ߠH4!,(`DH \278wF,@>;A`bܹ?j@287H=@3 〦?NPb1j08y#8200C1c/@@<5@+[4IENDB`gosa-core-2.7.4/doc/core/nl/lyx-source/departments.lyx0000644000175000017500000002206410436410657021355 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold Afdelingen beheer \layout Section Afdelingen lijst \layout Standard De beheerder kan afdelingen aanmaken, veranderen of bekijken door op de \series bold \color blue Afdelingen \series default \color default knop in het \series bold Beheer \series default menu aan de linkerkant te klikken. De \family sans \color black Afdelingen Beheer \family default \color default pagina die getoond wordt, is het uitgangspunt voor alle afdeling beheertaken en is verdeeld in twee kolommen. \layout Itemize De eerste kolom bevat de namen van de afdelingen (alfabetisch gesorteerd). \layout Itemize De tweede kolom bevat knoppen voor de beschikbare acties (knippen, kopieren, bewerken, verwijderen) \layout Standard De knoppen ( \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset , \begin_inset Graphics filename images/list_reload.png \end_inset ) dienen voor navigatie binnen de afdelingshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset Helemaal naar boven (hoofd afdeling) \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset Een afdeling naar boven \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset Naar de basis van de afdeling \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset Huidige afdeling verversen \layout Standard Daarnaast is het mogelijk de weergave van afdelingen met behulp van filters te beinvloeden ( \color black met \series bold Filters \series default \begin_inset Graphics filename images/rocket.png \end_inset aan de rechter zijde): \layout Itemize Op namen zoeken: \begin_deeper \layout Itemize Door op * (asterisk) te klikken worden alle afdelingen getoond \layout Itemize Het klikken van een letter, laat alle afdelingen zien waarvan de naam met de betreffende letter begint \layout Itemize Het klikken van een cijfer, laat alle afdelingen zien waarvan de naam met het betreffende cijfer begint \end_deeper \layout Itemize \color black Daarnaast kan de lijst met behulp van delen van namen en complexere reguliere expressies verder beperkt worden met behulp van \color default het invoerveld achter het icoon \begin_inset Graphics filename images/search.png \end_inset . In dit veld kunt u cijfer en letter combinaties invoeren om de lijst verder te beperken. Om uw selectie door te voeren dient u op de knop \emph on Filter toepassen \emph default te drukken. \layout Subsection* Afdeling aanmaken \layout Standard Om een nieuw afdeling aan te maken klikt u op de knop \begin_inset Graphics filename images/list_new_department.png \end_inset . Volg de instructies hieronder op die gegeven worden bij het bewerken van een afdeling. \layout Subsubsection* Een bestaande afdeling bewerken \layout Standard Klik binnen de afdelingen lijst op de naam van de te bewerken afdeling. De pagina die nu geladen wordt, bevat eigenschappen van de afdeling \layout Subsubsection* Algemene informatie \layout Itemize Om het bewerken van afdelingen (ook nieuwe afdelingen) af te sluiten en op te slaan, dient u op de knop Opslaan rechtsonder te drukken. Om de bewerkingen ongedaan te maken, drukt u op de knop annuleren, die u ook rechtsonder vindt. \layout Itemize Alle invoervelden met een rode asterisk (*) zijn verplichte velden. Deze velden moeten pers ingevuld worden. \layout Itemize In de rechter bovenhoek vindt u de volledige DN (unieke LDAP naam) van de afdeling die momenteel bewerkt wordt. \layout Subsection \pagebreak_top Algemeen \layout Subsubsection Eigenschappen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Naam van de afdeling \color red * \end_inset \begin_inset Text \layout Standard De naam van de afdeling \end_inset \begin_inset Text \layout Standard Omschrijving \color red * \end_inset \begin_inset Text \layout Standard De omschrijving van of een commentaar op de afdeling \end_inset \begin_inset Text \layout Standard Categorie \end_inset \begin_inset Text \layout Standard De categorie van de afdeling \end_inset \begin_inset Text \layout Standard Basis \color red * \end_inset \begin_inset Text \layout Standard De basis (bovenliggende hoofdafdeling) van de afdeling \end_inset \end_inset \layout Subsubsection \added_space_top medskip Plaats \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Provincie \end_inset \begin_inset Text \layout Standard De provincie of het land waar de afdeling zich bevindt \end_inset \begin_inset Text \layout Standard Plaats \end_inset \begin_inset Text \layout Standard De plaats waar de afdeling zich bevindt \end_inset \begin_inset Text \layout Standard Adres \end_inset \begin_inset Text \layout Standard Het adres van de afdeling \end_inset \begin_inset Text \layout Standard Telefoon \end_inset \begin_inset Text \layout Standard Het centrale telefoonnummer van de afdeling \end_inset \begin_inset Text \layout Standard Fax \end_inset \begin_inset Text \layout Standard Het centrale faxnummer van de afdeling \end_inset \end_inset \layout Subsubsection Beheerders instellingen \layout Itemize \emph on Markeer de afdeling als een onafhankelijke beheerbare eenheid: \emph default Hiermee kunt u opgeven dat toegangsrechten binnen GOsa binnen deze afdeling afzonderlijk geregeld worden. Zo kunt u beheerders per afdeling instellen indien gewenst. \layout Subsection \added_space_top bigskip Referenties \layout Standard Onder referenties vindt u alle koppelingen die deze afdeling heeft met andere objecten binnen de LDAP database. \the_end gosa-core-2.7.4/doc/core/nl/lyx-source/users.lyx0000644000175000017500000017666710436410657020213 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold Gebruikers beheer \layout Section Gebruikerslijst \layout Standard De beheerder kan account informatie aanmaken, veranderen of bekijken door op de \series bold \color blue Gebruikers \series default \color default knop in het \series bold Beheer \series default menu aan de linkerkant te klikken. De \family sans \color black Gebruikers Beheer \family default \color default pagina die getoond wordt, is het uitgangspunt voor alle account beheertaken en is verdeeld in drie kolommen. \layout Itemize De eerste kolom bevat de namen van de gebruikers en de afdelingen waarbinnen zij ingedeeld zijn (alfabetisch gesorteerd). \layout Itemize De tweede kolom bevat knoppen voor snelle toegang tot verschillende account eigenschappen van de gebruiker (alleen beschikbaar indien de betreffende eigenschap geactiveerd is). Daarnaast dient deze kolom voor een snel overzicht van geactiveerde eigenschapp en van het account van de gebruiker. \begin_deeper \layout Itemize De mogelijke iconen en hun betekenis: \newline \begin_inset Tabular \begin_inset Text \layout Standard Icoon \end_inset \begin_inset Text \layout Standard Betekenis \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/penguin.png \end_inset \end_inset \begin_inset Text \layout Standard Gebruiker beschikt over algemene eigenschappen \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_user.png \end_inset \end_inset \begin_inset Text \layout Standard Gebruiker beschikt over een UNIX account \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/smallenv.png \end_inset \end_inset \begin_inset Text \layout Standard Gebruiker beschikt over Omgevings instellingen \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/mailto.png \end_inset \end_inset \begin_inset Text \layout Standard Gebruiker beschikt over een E-mail account \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_phone.png \end_inset \end_inset \begin_inset Text \layout Standard Gebruiker beschikt over een Telefoon account \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/fax_small.png \end_inset \end_inset \begin_inset Text \layout Standard Gebruiker beschikt over een Fax account \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_winstation.png \end_inset \end_inset \begin_inset Text \layout Standard Gebruiker beschikt over een Samba/Windows account \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_netatalk.png \end_inset \end_inset \begin_inset Text \layout Standard Gebruiker beschikt over een Netatalk account \end_inset \end_inset \end_deeper \layout Itemize De derde kolom bevat knoppen voor de beschikbare acties (knippen, kopieren, bewerken, verwijderen, wachtwoord) \layout Standard De knoppen ( \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset , \begin_inset Graphics filename images/list_reload.png \end_inset ) dienen voor navigatie binnen de afdelingshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset Helemaal naar boven (hoofd afdeling) \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset Een afdeling naar boven \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset Naar de basis van de gebruiker \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset Huidige afdeling verversen \layout Standard Daarnaast is het mogelijk de weergave van gebruikers met behulp van filters te beinvloeden ( \color black met \series bold Filters \series default \begin_inset Graphics filename images/rocket.png \end_inset aan de rechter zijde): \layout Itemize Op namen zoeken: \begin_deeper \layout Itemize Door op * (asterisk) te klikken worden alle namen getoond \layout Itemize Het klikken van een letter, laat alle gebruikers zien waarvan de naam met de betreffende letter begint \layout Itemize Het klikken van een cijfer, laat alle gebruikers zien waarvan de naam met het betreffende cijfer begint \end_deeper \layout Itemize Verder zoekopties: \newline (De volgende filters werken zodanig dat alleen gebruikers getoond worden, die over tenminste een van de geselecteerde opties beschikken; Standaard worden alle echte gebruikers getoond; ofwel geen sjablonen) \begin_deeper \layout Itemize \emph on Toon sjablonen: \emph default Toont sjablonen voor gebruikers (standaard uitgeschakeld) \layout Itemize \emph on Toon functionele gebruikers: \emph default Gebruikers die alleen over de algemene informatie beschikken \layout Itemize \emph on Toon Unix gebruikers: \emph default Gebruikers die over Unix mogelijkheden beschikken \layout Itemize \emph on Toon E-mail gebruikers: \emph default Gebruikers die over E-mail mogelijkheden beschikken \layout Itemize \emph on Toon Samba gebruikers: \emph default Gebruikers die over Samba/Windows mogelijkheden beschikken \layout Itemize \emph on Toon Proxy gebruikers: \emph default Gebruikers die over een proxy account beschikken \end_deeper \layout Itemize \color black Daarnaast kan de lijst met behulp van delen van namen en complexere reguliere expressies verder beperkt worden met behulpt van \color default het invoerveld achter het icoon \begin_inset Graphics filename images/search.png \end_inset . In dit veld kunt u cijfer en letter combinaties invoeren om de lijst verder te beperken. Om uw selectie door te voeren dient u op de knop \emph on Filter toepassen \emph default te drukken. \layout Subsection* Gebruikersaccount aanmaken \layout Standard Om een nieuw account aan te maken klikt u op de knop \begin_inset Graphics filename images/list_new_user.png \end_inset . Volg de instructies op die gegeven worden bij het aanmaken van het account. Op het einde van het aanmaken, dient u een wachtwoord op te geven voor het nieuwe account. \layout Subsubsection* Een bestaand account bewerken \layout Standard Klik binnen de gebruikerslijst op de gebruikersnaam van de te bewerken gebruiker. De pagina die nu geladen wordt, bevat tabbladen die voor account mogelijkheden staan (momenteel zijn dat bijvoorbeeld Algemeen, Unix, Omgeving etc.) \layout Subsubsection* Algemene informatie \layout Itemize Om het bewerken van gebruikers (ook nieuwe gebruikers) af te sluiten en op te slaan, dient u op de knop Opslaan rechtsonder te drukken. Om de bewerkingen ongedaan te maken, drukt u op de knop annuleren, die u ook rechtsonder vindt. \layout Itemize Alle invoervelden met een rode asterisk (*) zijn verplichte velden. Deze velden moeten pers ingevuld worden. \layout Itemize In de rechter bovenhoek vindt u de volledige DN (unieke LDAP naam) van de gebruiker die momenteel bewerkt wordt. \layout Subsection \pagebreak_top Algemeen \layout Subsubsection Persoonlijke informatie \layout Standard \added_space_bottom medskip \begin_inset Tabular \begin_inset Text \layout Standard \color black Achternaam \color red * \end_inset \begin_inset Text \layout Standard De achternaam van de gebruiker \end_inset \begin_inset Text \layout Standard \color black Voornaam \color red * \end_inset \begin_inset Text \layout Standard De voornaam van de gebruiker \end_inset \begin_inset Text \layout Standard \color black Inlognaam \color red * \end_inset \begin_inset Text \layout Standard De naam waarmee de gebruiker inlogt \end_inset \begin_inset Text \layout Standard Aanhef \end_inset \begin_inset Text \layout Standard De aanhef van de gebruiker (Bijv. Meneer, Dhr, Mevrouw) \end_inset \begin_inset Text \layout Standard Academische titel \end_inset \begin_inset Text \layout Standard De academische titel van de gebruiker (Bijv. Dr., Ing, Mr) \end_inset \begin_inset Text \layout Standard Geboortedatum \end_inset \begin_inset Text \layout Standard Klik op de knop \emph on Stel in \emph default om een keuzelijst te laten verschijnen \end_inset \begin_inset Text \layout Standard Geslacht \end_inset \begin_inset Text \layout Standard Maak uw keuze uit de lijst voor het geslacht van de gebruiker \end_inset \begin_inset Text \layout Standard Voorkeurstaal \end_inset \begin_inset Text \layout Standard Maak uw keuze uit de lijst voor de voorkeurstaal van de gebruiker (nl_NL=Nederla nds, en_EN=Engels, etc) \end_inset \begin_inset Text \layout Standard Basis \end_inset \begin_inset Text \layout Standard De afdeling van de gebruiker (het aanmaken van de afdeling kan door middel van de \series bold \color blue afdelingen \series default \color default knop in het linkermenu van het beheer onderdeel). \end_inset \begin_inset Text \layout Standard Plaatje \end_inset \begin_inset Text \layout Standard Om een foto of plaatje van de gebruiker op te slaan, drukt op de knop \emph on Verander plaatje... \emph default Selecteer de gewenste afbeelding. De afbeelding wordt nu getoond. Om de keuze vast te leggen, drukt u op de knop \emph on Opslaan \emph default . Indien u de afbeelding niet wenst op te slaan, drukt u op de knop \emph on Annuleren \emph default . \end_inset \begin_inset Text \layout Standard Adres \end_inset \begin_inset Text \layout Standard Het priv adres van de gebruiker \end_inset \begin_inset Text \layout Standard Telefoon priv \end_inset \begin_inset Text \layout Standard Het priv telefoonnummer van de gebruiker. U dient dit volgens het internationale formaat in te voeren. Bijvoorbeeld +31 40 2390740 \end_inset \begin_inset Text \layout Standard Homepage \end_inset \begin_inset Text \layout Standard De URL van de homepage van de gebruiker (bijv. http://www.careworks.nl) \end_inset \begin_inset Text \layout Standard Wachtwoord encryptie \end_inset \begin_inset Text \layout Standard De manier waarop het wachtwoord intern versleuteld opgeslagen wordt. Maak uw keuze door uit de lijst te selecteren \end_inset \begin_inset Text \layout Standard Certificaten \end_inset \begin_inset Text \layout Standard \color black Klik op de knop \emph on Bewerk certificaten... \emph default om de certificaten van de gebruiker te beheren. Met GOsa kunt u drie types certificaten importeren. Klik op \emph on Opslaan \emph default om te beeindigen. \end_inset \begin_inset Text \layout Standard Kerberos \end_inset \begin_inset Text \layout Standard \color black Klik op de knop \emph on Bewerk eigenschappen \emph default om Kerberos eigenschappen te bewerken. \end_inset \end_inset \layout Subsubsection \added_space_top medskip Organisatie informatie \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Organisatie \end_inset \begin_inset Text \layout Standard De naam van de organisatie (bijv. CareWorks) \end_inset \begin_inset Text \layout Standard Afdeling \end_inset \begin_inset Text \layout Standard De naam van de afdeling (bijv. Administratie) \end_inset \begin_inset Text \layout Standard Afdeling nr. \end_inset \begin_inset Text \layout Standard Het nummer van de afdeling (bijv. 21) \end_inset \begin_inset Text \layout Standard Personeel nr. \end_inset \begin_inset Text \layout Standard Het personeelsnummer van de medewerker \end_inset \begin_inset Text \layout Standard Functie \end_inset \begin_inset Text \layout Standard De functie van de medewerker \end_inset \begin_inset Text \layout Standard Kamer nr. \end_inset \begin_inset Text \layout Standard Het kamernummer van de medewerker \end_inset \begin_inset Text \layout Standard Telefoon \end_inset \begin_inset Text \layout Standard Het telefoonnumer van de medewerker \end_inset \begin_inset Text \layout Standard GSM \end_inset \begin_inset Text \layout Standard Het GSM nummer van de medewerker \end_inset \begin_inset Text \layout Standard Pieper \end_inset \begin_inset Text \layout Standard Het pieper nummer van de medewerker \end_inset \begin_inset Text \layout Standard Fax \end_inset \begin_inset Text \layout Standard Het fax nummer van de medewerker \end_inset \begin_inset Text \layout Standard Plaats \end_inset \begin_inset Text \layout Standard De plaats van het kantoor of afdeling van de medewerker \end_inset \begin_inset Text \layout Standard Provincie \end_inset \begin_inset Text \layout Standard De provincie waar het kantoor of de afdeling van de medewerker zich bevindt \end_inset \begin_inset Text \layout Standard Adres \end_inset \begin_inset Text \layout Standard Het postadres van het kantoor of de afdeling van de medewerker \end_inset \end_inset \layout Subsection \added_space_top bigskip Unix \layout Standard U dient op de knop \shape italic POSIX Account toevoegen \shape default te drukken om een UNIX account te activeren voor de gebruiker \shape italic . \layout Subsubsection Algemeen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Persoonlijke map \color red * \end_inset \begin_inset Text \layout Standard Het pad naar de persoonlijke map van de gebruiker \end_inset \begin_inset Text \layout Standard Shell \end_inset \begin_inset Text \layout Standard De Unix shell die gebruikt dient te worden bij het aanmelden van de gebruiker. (/bin/false of /bin/true zorgt ervoor dat de gebruiker niet in kan loggen op een UNIX systeem). \end_inset \begin_inset Text \layout Standard Primaire groep \end_inset \begin_inset Text \layout Standard De primaire groep van de gebruiker. (Voor de aanmaak van groepen, gaat u naar het \series bold Beheer \series default onderdeel en klikt u op de \series bold \color blue Groepen \series default \color default knop) \end_inset \begin_inset Text \layout Standard Status \end_inset \begin_inset Text \layout Standard Geeft aan of het account actief is of niet \end_inset \begin_inset Text \layout Standard Forceer UID/GID \end_inset \begin_inset Text \layout Standard Hiermee kunt u de UID/GID van een gebruiker naar een bepaalde waarde forceren. Gebruik deze optie alleen indien u weet wat u doet en verzeker uzelf ervan dat de opgegeven waardes niet vergeven zijn! \end_inset \end_inset \layout Subsubsection \added_space_top medskip Groep lidmaatschap \layout Standard Gebruik de knoppen \emph on Toevoegen \emph default en \emph on Verwijderen \emph default om de gebruiker aan groepen toe te voegen of van groepen te verwijderen. De knop \emph on Toevoegen \emph default geeft de lijst met groepen die door de systeembeheerder aangemaakt zijn weer. De gebruiker kan lid zijn van een of meerdere groepen. De gebruiker is sowieso lid van de primaire groep. De primaire groep hoeft dan ook niet hier nogmaals gekozen te worden. \layout Subsubsection \added_space_top medskip Account \layout Standard Dit onderdeel gaat over het beheer van het wachtwoord van de gebruiker (dit betreft vanzelfsprekend alleen het UNIX account van de gebruiker). Let erop dat u geen conflicterende opties selecteert, aangezien dit het account van de gebruiker effectief onbruikbaar kan maken: \layout Itemize \emph on Het wachtwoord moet bij de eerste aanmelding gewijzigd worden: \emph default Met deze optie wordt afgedwongen dat de gebruiker bij de eerst volgende aanmelding direct het wachtwoord moet veranderen. \layout Itemize \emph on Het wachtwoord kan pas [Aantal] dag(en) na de laatste wijziging gewijzigd worden: \emph default Hiermee wordt afgedwongen dat een gebruiker niet onbeperkt het wachtwoord kan veranderen. [Aantal] geeft het aantal dagen aan, waarbinnen de gebruiker het wachtwoord niet kan wijzigen sinds de vorige wachtwoord wijziging. \layout Itemize \emph on Het wachtwoord moet na [Aantal] dag(en) gewijzigd worden: \emph default Met deze optie verplicht u de gebruiker om na [Aantal] dagen het wachtwoord te veranderen, omdat anders het account geblokeerd wordt. Gebruikers worden van te voren op de hoogte gesteld van het verlopen van het wachtwoord. \layout Itemize \emph on Wachtwoord verloopt op [Datum]: \emph default Indien u deze optie instelt, dan kan de gebruiker niet meer inloggen met het huidige wachtwoord vanaf [Datum]. \layout Itemize \emph on Blokkeer het account na [Aantal] dag(en) inactiviteit nadat het wachtwoord verlopen is: \emph default Zodra er gedurende [Aantal] dagen inactiviteit is van het account (geen inloggen van de gebruiker dus), na het verlopen van het wachtwoord, wordt het account geblokkeerd en kan de gebruiker niet meer inloggen. \layout Itemize \emph on Waarschuw de gebruiker [Aantal] dagen voordat het wachtwoord verloopt: \emph default De gebruiker krijgt vanaf [Aantal] dagen, voordat het wachtwoord verloopt een waarschuwing dat het wachtwoord op de ingestelde datum verloopt. \layout Subsubsection \added_space_top medskip System vertrouwen \layout Standard Systeem vertrouwen wordt gebruikt om toegang tot verschillende Unix systemen en apparaten door de gebruiker te beheren en/of in te perken. \layout Standard De vertrouwensmodus kan als volgt ingesteld worden: \layout Itemize \emph on gedeactiveerd: \emph default De gebruiker kan zich op alle UNIX systemen aanmelden. \layout Itemize \emph on volledige toegang: \emph default De gebruiker kan zich op alle UNIX systemen aanmelden. \layout Itemize sta toegang op deze computers toe: De gebruiker mag zich alleen op de opgegeven UNIX systemen aanmelden. \begin_deeper \layout Itemize \emph on Toevoegen: \emph default Klik op de knop \emph on Toevoegen \emph default om UNIX computers toe te voegen, waarop de gebruiker in mag loggen. Let op dat alleen UNIX computers die bekend zijn binnen het systeem voor zullen komen in deze lijst. Druk op de knop \emph on Annuleren \emph default om de selectie af te breken. \layout Itemize \emph on Verwijderen \emph default : Selecteer een of meerdere UNIX computers uit de reeds bestaande computers waartoe de gebruiker toegang heeft en druk op de knop \emph on Verwijderen \emph default , om de gebruiker toegang tot deze computers te ontnemen. \end_deeper \layout Subsection \added_space_top bigskip Omgeving \layout Standard Click on the button \shape italic add an environment extension \emph on to \shape default \emph default activate the configuration space. \layout Subsubsection Profielen \layout Subsubsection \added_space_top medskip Kiosk profiel \layout Subsubsection \added_space_top medskip Inlog scripts \layout Subsubsection \added_space_top medskip Share verbinden \layout Subsubsection \added_space_top medskip Hotplug apparaten \layout Subsubsection \added_space_top medskip Printer \layout Subsection \added_space_top bigskip E-mail \layout Standard Het E-mail account is gekoppeld aan de E-mail server. Om het E-mail account te activeren dient u op de knop \shape italic E-mail account aanmaken \shape default te drukken. \layout Subsubsection Algemeen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \color black Primair adres \color red * \end_inset \begin_inset Text \layout Standard Het E-mail adres van de gebruiker \end_inset \begin_inset Text \layout Standard Server \end_inset \begin_inset Text \layout Standard Selecteer de server waar het E-mail account van de gebruiker opgeslagen dient te worden \end_inset \begin_inset Text \layout Standard Quota gebruik \end_inset \begin_inset Text \layout Standard Geeft de huidig gebruikte en beschikbare opslagruimte van de gebruiker aan \end_inset \begin_inset Text \layout Standard Quota grootte \end_inset \begin_inset Text \layout Standard De maximale grootte van de Mailbox \end_inset \end_inset \layout Subsubsection \added_space_top medskip Alternatieve adressen \layout Standard Alternatieve adressen zijn E-mail adressen waaronder de gebruiker ook E-mail kan ontvangen. De E-mail die naar deze adressen verstuurd worden, zullen opgeslagen worden onder het account dat opgegeven is bij het primaire adres. Gebruik de knop \emph on Toevoegen \emph default om aliasen toe te voegen en de knop \emph on Verwijderen \emph default om een alias te verwijderen. Let erop dat de gebruikte domein componenten in de aliasen wel door de opgegeven mailserver ontvangen kunnen worden. Het heeft bijvoorbeeld geen enkele zin om een hotmail account als alias op te geven, simpelweg omdat E-mail gericht aan hotmail adressen, nooit aan zullen komen op uw E-mail server \layout Subsubsection \added_space_top medskip E-mail opties \layout Standard Beheer van de E-mail opties voor de gebruiker: \layout Itemize \emph on Geen aflevering in eigen mailbox: \emph default Stuur alle E-mail voor dit adres door naar het adres of de adressen in het \emph on Stuur berichten door naar \emph default deel. Er vindt geen aflevering in de eigen mailbox plaats. \layout Itemize \emph on Activeer afwezigheidsbericht: \emph default Verstuur het bericht dat opgegeven is in het \shape italic \color black Afwezigheidsbericht \shape default \color default onderdeel naar de afzender van een E-mail bericht, zodra dit bericht ontvangen wordt. \layout Itemize \emph on Verplaats E-mail met een spam nivo groter dan [Nivo] naar map [Map]: \emph default Verplaats E-mails met een spam nivo groter dan [Nivo] bij ontvangst op de mail server naar E-mail map [Map]. Zodra een E-mail binnenkomt bij de mailserver, wordt deze voorzien van een spam indicatie. Deze spamindicatie wordt o.a. aangegeven door een cijfer. Dit cijfer representeert de waarschijnlijkheid dat het bericht een SPAM bericht is. Hoe hoger dit cijfer, hoe groter de kans dat het een SPAM bericht betreft. Normaliter kunt u er vanuit gaan dat een bericht met een cijfer vanaf 5 een SPAM bericht betreft. Stel deze optie niet te laag in, aangezien u anders het risico loopt op normale E-mail berichten automatisch te laten verplaatsen naar uw SPAM map, waardoor de kans ontstaat dat het bericht aan uw aandacht ontsnapt! \layout Itemize \emph on Wijs E-mail af indien groter dan [Grootte] MB: \emph default Wij E-mail af die groter zijn dan [Grootte] MB. Dit betekent dat de gebruiker geen E-mail kan ontvangen die groter is dan [Grootte] MB. \layout Itemize Gebruik de \emph on Toevoegen \emph default of \emph on Lokaal toevoegen \emph default \color black knoppen om binnengekomen E-mail bericht door te sturen naar andere E-mail adressen (bijv Telefoon, PDA etc.): \begin_deeper \layout Standard \color black - De \emph on Lokkaal toevoegen \emph default knop wordt gebruikt om te kiezen uit in het systeem bekende E-mail adressen. \layout Standard \color black - De \emph on Toevoegen \emph default knop om externe adressen te kiezen. \layout Standard \color black - De \emph on Verwijderen \emph default knop om E-mail doorstuur adressen te verwijderen. \end_deeper \layout Subsubsection \added_space_top medskip Geavanceerde E-mail opties \layout Itemize De gebruiker mag alleen lokale E-mails versturen en ontvangen: Hiermee kan de beheerder opgeven dat de gebruiker alleen binnen het eigen domein/organisati e E-mail mag versturen en ontvangen. Dit betekent dat de gebruiker niet naar externe personen kan E-mailen of E-mail van externe personen kan ontvangen. \layout Itemize Gebruik een eigen sieve script : De gebruiker kan een eigen sieve scripts schrijven om mailbox filtering te beheren. \emph on Let op! \shape italic \emph default Dit schakelt alle E-mail opties uit \shape default . \layout Subsection \added_space_top bigskip Samba \layout Standard Om een Samba / Windows account aan te maken voor de gebruiker, klikt u op de knop \emph on Samba account toevoegen \emph default . \layout Subsubsection Algemeen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Persoonlijke map \end_inset \begin_inset Text \layout Standard Het pad naar de persoonlijke map van de gebruiker over het netwerk in UNC notatie (bijv. \backslash \backslash SERVER \backslash homes \backslash gebruikersnaam). Selecteer de stationsletter uit de lijst om op te geven met welk station de persoonlijke map verbonden moet worden bij het inloggen van de gebruiker. \end_inset \begin_inset Text \layout Standard Domein \end_inset \begin_inset Text \layout Standard Het Windows domein waarbinnen de gebruiker valt. \end_inset \begin_inset Text \layout Standard Inlogscript \end_inset \begin_inset Text \layout Standard Het script dat op het werkstation van de gebruiker uitgevoerd wordt, bij het inloggen van de gebruiker. \end_inset \begin_inset Text \layout Standard Profielpad \end_inset \begin_inset Text \layout Standard Het pad op een server in UNC notatie, waar het zwervende profiel van de gebruiker zich bevindt (bijv. \backslash \backslash SERVER \backslash profiles \backslash gebruikersnaam). \end_inset \end_inset \layout Subsubsection \added_space_top medskip Terminal Server \layout Itemize \emph on Sta inloggen op de terminal server toe \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Persoonlijke map \end_inset \begin_inset Text \layout Standard Mention the path of the user's home directory in notation UNC ex: \backslash \backslash SERVER \backslash homes \backslash user. Choose on the scroll list the letter associated to the user's home directory.Het pad naar de persoonlijke map van de gebruiker over het netwerk in UNC notatie (bijv. \backslash \backslash SERVER \backslash homes \backslash gebruikersnaam). Selecteer de stationsletter uit de lijst om op te geven met welk station de persoonlijke map verbonden moet worden bij het inloggen van de gebruiker. \end_inset \begin_inset Text \layout Standard Profile pathProfielpad \end_inset \begin_inset Text \layout Standard Mention the path to the user profileHet pad op een server in UNC notatie, waar het zwervende profiel van de gebruiker zich bevindt (bijv. \backslash \backslash SERVER \backslash profiles \backslash gebruikersnaam). \end_inset \end_inset \layout Itemize \emph on Client configuratie voor initieel programma overnemen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Initiel programma \end_inset \begin_inset Text \layout Standard Het programma dat bij het starten van de sessie uitgevoerd moet worden \end_inset \begin_inset Text \layout Standard Werkdirectory \end_inset \begin_inset Text \layout Standard De werkmap waarbinnen het initiele programma uitgevoerd wordt \end_inset \end_inset \layout Itemize \emph on Terminal Service timeouts (in minuten): \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Max. verbindingsduur \end_inset \begin_inset Text \layout Standard De maximale duur dat een gebruiker verbonden mag zijn. Na het verstrijken van deze duur wordt de sessie verbroken. \end_inset \begin_inset Text \layout Standard Max. verbrekingsduur \end_inset \begin_inset Text \layout Standard Een niet verbonden sessie van de gebruiker wordt na verstrijken van deze duur automatisch beindigd. \end_inset \begin_inset Text \layout Standard Max. inactiviteitsduur \end_inset \begin_inset Text \layout Standard Een verbonden maar inactieve sessie van de gebruiker wordt na verstrijken van deze duur automatisch beindigd. \end_inset \end_inset \layout Itemize \emph on Terminal Service client apparaten: \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Verbindt client schijven bij inloggen \end_inset \begin_inset Text \layout Standard Verbindt lokale schijven van de Client als netwerkschijven bij inloggen \end_inset \begin_inset Text \layout Standard Verbindt client printers bij inloggen \end_inset \begin_inset Text \layout Standard Verbindt de lokale printer van de Client als netwerkprinter bij het inloggen \end_inset \begin_inset Text \layout Standard Standaard printer als client printer \end_inset \begin_inset Text \layout Standard De lokale standaard printer van de Client als standaard printer gebruiken \end_inset \end_inset \layout Itemize \added_space_top medskip \emph on Terminal Service diverse: \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Schaduwen van andere sessie \emph on \end_inset \begin_inset Text \layout Standard Deze optie is van belang voor beheer en controle op afstand: \layout Itemize \emph on gedeactiveerd: \emph default Schaduwen is uitgeschakeld: \layout Itemize \emph on invoer met notificatie: \emph default Sessie kan overgenomen worden. Gebruiker wordt om toestemming gevraagd \layout Itemize \emph on invoer zonder notificatie: \emph default Sessie kan overgenomen worden. Gebruiker wordt niets gevraagd \layout Itemize \emph on geen invoer met notificatie: \emph default Sessie kan alleen bekeken worden. Gebruiker wordt om toestemming gevraagd \layout Itemize \emph on geen invoer zonder notificatie: \emph default Sessie kan alleen bekeken worden. Gebruiker wordt niets gevraagd \end_inset \begin_inset Text \layout Standard Bij verbroken verbinding of timeout \end_inset \begin_inset Text \layout Standard U kunt opgeven of een sessie die verbroken wordt (door de gebruiker, of door het overschreiden van de tijdslimiet) verbroken blijft of automatisch afgesloten wordt. Indien u verbreken kiest, dan blijft de sessie behouden. \end_inset \begin_inset Text \layout Standard Herstel sessie indien verbroken \end_inset \begin_inset Text \layout Standard Geef op of een verbroken sessie alleen vanaf de vorige client hervat kan worden, of vanaf elke client \end_inset \end_inset \layout Subsubsection \added_space_top medskip Toegangsopties \layout Standard De onder toegangsopties genoemde instellingen dienen voor het aanpassen van wachtwoord instellingen onder Windows en voor het beperken van de toegang tot werkstations. U dient op te letten welke instellingen u van toepassing laat zijn. \layout Itemize De volgende wachtwoord opties zijn beschikbaar: \begin_deeper \layout Itemize \emph on Gebruiker mag zijn wachtwoord vanaf een werkstation wijzigen: \emph default Zodra deze optie geselecteerd is, mag de gebruiker het wachtwoord vanaf een Windows werkstation wijzigen (door bijvoorbeeld Ctrl-Alt-Del in te drukken). \layout Itemize \emph on Inloggen op Windows werkstation zonder wachtwoord toestaan: \emph default Zodra deze optie geselecteerd is voor een gebruiker, mag de gebruiker inloggen zonder een wachtwoord te moeten gebruiken. \layout Itemize \emph on Blokkeer het Samba/Windows account: \emph default De gebruiker kan niet meer op een Windows werkstation inloggen. \layout Itemize \emph on Wachtwoord verloopt op [Datum]: \emph default Het wachtwoord verloopt op [Datum]. Het account wordt daarna automatisch geblokkeerd. \layout Itemize \emph on Stel laatste inlogtijd in op: \emph default Optie is niet nuttig! Hiermee kan de laatst bekende inlogtijd aangepast worden. \layout Itemize \emph on Stel laatste uitlogtijd in op: \emph default Optie is niet nuttig! Hiermee kan de laatst bekende uitlogtijd aangepast worden. \layout Itemize \emph on Het account verloopt op [Datum]: \emph default Geef de datum [Datum] op waarop het account automatisch geblokkeerd wordt. \end_deeper \layout Itemize \emph on Sta alleen verbindingen vanaf deze werkstations toe: \emph default Indien u de toegang tot werkstations wil beperken voegt u hier werkstations toe. De gebruiker mag op elk werkstation inloggen, zolang de lijst leeg is. \begin_deeper \layout Itemize \emph on Toevoegen: \emph default Om een werkstation toe te voegen, drukt u op de knop \emph on Toevoegen \emph default en selecteert u een of meer werkstations uit de lijst. Let op dat deze selectie alleen Windows werkstations betreft. \layout Itemize \emph on Verwijderen: \emph default Om werkstations waartoe de gebruiker toegang heeft te verwijderen, drukt u op de knop \emph on Verwijderen \emph default . Vervolgens selecteert u de werkstations die u wilt verwijderen. \end_deeper \layout Subsection \added_space_top bigskip Verbindingen \layout Standard Onder dit tabblad bevinden zich diverse opties om de account eigenschappen en mogelijkheden van een gebruiker verder uit te breiden (afhankelijk van de beschikbare diensten binnen een organisatie): \layout Subparagraph* Proxy account \layout Standard Met deze optie kunt u de gebruiker toegang tot de Proxy server verlenen. Binnen veel organisaties wordt een proxy server gebruikt om toegang tot Internet te beperken en/of monitoren. Een gebruiker zonder Proxy account kan Internet niet op. Voor alle gebruikers met een Proxy account geldt dat de beheerder, indien gewenst, de toegang tot Internet en websites kan monitoren. \layout Itemize \emph on Filter ongewilde inhoud (bijvoorbeeld pornografische of geweld gerelateerde inhoud): \emph default Deze optie activeert het inhoudsfilter voor de gebruiker. Dit betekent dat het door de systeembeheerder ingestelde inhoudsfilter van toepassing wordt op door de gebruiker bezochte websites. Zodra een website inhoud bevat die door het filter herkent wordt als zijnde ongewenst, wordt de toegang voor de gebruiker onmiddelijk geblokkeerd. \layout Itemize \emph on Beperk proxy gebruik tot tijd: \emph default Met deze optie is het mogelijk om de toegang tot Internet te beperken tot een bepaalde tijdspanne (bijvoorbeeld tijdens kantoortijd). Let erop dat deze tijd voor alle dagen dezelfde is. De gebruiker krijgt een melding indien deze buiten de ingestelde tijd een website wil bezoeken. \layout Itemize \emph on Beperk proxy gebruik met quota: \emph default Met deze optie kunt een maximaal toegestane hoeveelheid dataverkeer gedurende een bepaalde periode opgeven. De gebruiker kan zodra de maximale hoeveelheid dataverkeer verbruikt is niet meer het Internet op, totdat de huidig opgegeven periode verstreken is. \layout Subparagraph \added_space_top smallskip FTP account \layout Standard Met deze optie geeft u de gebruiker toegang tot de FTP server(s): \layout Itemize Bandbreedte: Maakt beperking van bandbreedte gebruik (door de gebruiker) mogelijk \begin_deeper \layout Itemize \emph on Verstuur bandbreedte: \emph default De maximale bandbreedte voor de gebruiker bij het versturen van bestanden naar de server (Upload) in kb per seconde. De beperking is niet actief indien u hier 0 opgeeft. \layout Itemize \emph on Ontvangst bandbreedte: \emph default De maximale bandbreedte voor de gebruiker bij het ontvangen van bestanden van de server (Download) in kb per seconde. De beperking is niet actief inhdien u hier 0 opgeeft. \end_deeper \layout Itemize Verhouding: Het is mogelijk de gebruiker af te dwingen om een bepaalde verhoudin g van te versturen en te ontvangen bestanden te moeten behouden. \begin_deeper \layout Itemize \emph on Verstuurde / Ontvangen bestanden: \emph default Hier geeft u de verhouding op (Bijvoorbeeld: 3/1, betekent dat de gebruiker 3 bestanden moet versturen, alvorens er 1 bestande ontvangen kan worden). \end_deeper \layout Itemize Quota: Beperking van het gebruik in hoeveelheid dataverkeer of hoeveelheid bestanden \begin_deeper \layout Itemize \emph on Bestanden: \emph default De maximale hoeveelheid bestanden die de gebruiker mag versturen en ontvangen. De beperking is niet actief indien u hier 0 opgeeft. \layout Itemize \emph on Grootte: \emph default De maximale hoeveelheid dataverkeer die de gebruiker mag verbruiken voor versturen en ontvangen. De beperking is niet actief indien u hier 0 opgeeft. \end_deeper \layout Itemize Diverse: \begin_deeper \layout Itemize \emph on Schakel FTP toegang tijdelijk uit: \emph default Hiermee kunt u de toegang tot de FTP server(s) tijdelijk uitschakelen, zonder dat meteen alle FTP intstellingen van de gebruiker verloren gaan. \end_deeper \layout Subparagraph Open-Xchange account \layout Standard Met deze optie geeft u de gebruiker toegang tot de Open-Xchange groupware server. \layout Itemize Onthouden: Hier geeft u opties voor de portaal pagina van Open-Xchange op. \begin_deeper \layout Itemize \emph on Afspraken: \emph default Hoeveel dagen van te voren, wilt u dat afspraken getoond worden. \layout Itemize \emph on Taken: \emph default Hoeveel dagen van te voren wilt u dat taken getoond worden. \end_deeper \layout Itemize Gebruikersinformatie \begin_deeper \layout Itemize \emph on Tijdzone: \emph default Hier geeft u de tijdzone aan. Let erop dat u alle gebruikers de juiste tijdzone geeft, aangezien anders problemen op kunnen treden bij het plannen van afspraken onderling (tijdsversch illen). \end_deeper \layout Subparagraph \added_space_top smallskip WebDAV account \layout Standard Met deze optie kunt u de gebruiker toegang verlenen tot de WebDAV server(s). \layout Subparagraph \added_space_top smallskip PHPGroupware account \layout Standard Met deze optie kunt u de gebruiker toegang verlenen tot de PHPGroupware server. \layout Subparagraph \added_space_top smallskip Intranet account \layout Standard \added_space_bottom smallskip Met deze optie kunt u de gebruiker toegang verlenen tot Intranet server(s). Normaliter wordt deze optie gebruikt om toegang tot interne websites en/of webapplicaties binnen de organisatie te verschaffen. \layout Standard \series bold PPTP account \layout Standard \added_space_bottom smallskip Met deze optie kunt u de gebruiker toegang tot de VPN server (PPTP) verschaffen. \layout Standard \series bold PHPScheduleit account \layout Standard \added_space_bottom smallskip Met deze optie kunt u de gebruiker toegang tot de PHPScheduleit software verlenen. \layout Standard \series bold GLPI account \layout Standard Met deze optie kunt u de gebruiker toegang tot de GLPI software voor inventaris beheer geven. \layout Subsection \added_space_top bigskip Fax \layout Standard Om Fax mogelijkheden voor een gebruiker in te schakelen, klikt u op de knop \emph on Fax account \emph default aanmaken \emph on . \layout Subsubsection Algemeen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Fax \color red * \end_inset \begin_inset Text \layout Standard Het Faxnummer van de gebruiker \end_inset \begin_inset Text \layout Standard Taal \end_inset \begin_inset Text \layout Standard Kies de gewenste taal uit de lijst (nl_NL=Nederlands, en_EN=Engels etc.) \end_inset \begin_inset Text \layout Standard Aflever formaat \end_inset \begin_inset Text \layout Standard Het formaat waarmee faxen bij de gebruiker afgeleverd worden. Maak een keuze uit de lijst \end_inset \end_inset \layout Subsubsection \added_space_top medskip Aflever methodes \layout Itemize \emph on Schakel Fax gebruik tijdelijk uit: \emph default Schakel het Fax account van de gebruiker tijdelijk uit, zonder dat instellingen van het account verloren zullen gaan. \layout Itemize \emph on Lever Fax als E-mail af: \emph default Levert de fax in het geselecteerde formaat af in de mailbox van de gebruiker. \layout Itemize \emph on Lever Fax af op printer: \emph default Levert een fax af op de uit de lijst geselecteerde printer. \layout Subsubsection \added_space_top medskip Alternatieve Fax nummers \layout Standard Het is mogelijk meerdere Fax nummers aan de gebruiker toe te kennen. Alle alternatieve nummers die aan de gebruiker toegekend zijn, dienen in de lijst opgenomen te worden. \layout Itemize \emph on Toevoegen: \emph default Om een nummer toe te voegen, geeft u een nummer op in het invoerveld links van de knop \emph on Toevoegen \emph default en daarna drukt u op de knop \emph on Toevoegen. \layout Itemize \emph on Lokaal toevoegen: \emph default Om een nummer toe te voegen dat al aan een andere gebruiker toegekend is, gebruikt u de knop \emph on Lokaal toevoegen. \emph default U kunt nu uit de lijst n of meerdere gebruikers selecteren, wiens Fax nummers toegekend moeten worden aan de huidige gebruiker. \layout Itemize \emph on Verwijderen: \emph default Selecteer n of meerdere regels (met de Ctrl-toets kunt u meerdere regels selecteren) en druk op de knop \emph on Verwijderen \emph default om Fax nummers te verwijderen. \layout Subsubsection \added_space_top medskip Blokkeerlijsten \layout Standard Blokkeerlijsten dienen ervoor om zowel het ontvangen van en versturen naar bepaalde nummers aan banden te kunnen leggen. Dit is bijvoorbeeld een effectieve manier om advertentie fax-en te blokkeren. De dialogen voor zowel inkomende als uitgaande faxen zijn volledig identiek. We volstaan hier dus bij het uitleggen van de knop \emph on Bewerken \emph default . \layout Subsubsection* Bewerken: \layout Standard Zodra u de knop \emph on Bewerken \emph default indrukt krijgt een dialoogvenster dat uit twee delen bestaat. Aan de linkerzijde vindt u momenteel geldige nummers/lijsten, waartegen in- danwel uitgaande nummers gecontroleerd worden. Om een nummer toe te voegen, geeft u het nummer op in het tekstvelden drukt u op de knop \emph on Toevoegen \emph default . Om een reeds bestaande lijst uit een sub-afdeling te selecteren, selecteert u aan de rechterzijde de afdeling die de lijst bevat en drukt u op de knop \emph on Lijst aan blokkeerlijst toevoegen \emph default . Om n of meerdere lijsten uit de lijst de verwijderen, selecteert u de nummer(s)/lijst(en) en drukt u op de knop \emph on Verwijderen \emph default . \layout Subsection \added_space_top bigskip Telefoon \layout Standard Om een telefoon account te activeren voor een gebruiker, drukt u op de knop \emph on Telefoon account aanmaken. \layout Subsubsection Telefoonnummers \layout Standard Hier geeft u de telefoonnummers op, die aan de gebruiker toegekend zijn. \layout Itemize \emph on Toevoegen: \emph default Voer een telefoonnummer links van de knop in en druk op de knop \emph on Toevoegen \emph default om het telefoonnummer aan de gebruiker toe te kennen. \layout Itemize \emph on Verwijderen: \emph default Selecteer het te verwijderen nummer in de lijst en druk op de knop \emph on Verwijderen \emph default om het nummer bij de gebruiker weg te halen. \layout Subsubsection \added_space_top medskip Telefoon hardware \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Telefoon \end_inset \begin_inset Text \layout Standard Selecteer de telefoon van de gebruiker uit de lijst \end_inset \begin_inset Text \layout Standard Voicemail PIN-code \color red * \end_inset \begin_inset Text \layout Standard Geef de vier cijferige PIN-code op, die de gebruiker in moet geven om deVoice mailbox te kunnen beluisteren \end_inset \begin_inset Text \layout Standard Telefoon PIN-code \color red * \end_inset \begin_inset Text \layout Standard Geef de vier cijferige PIN-code op, die de gebruiker in moet geven om zich bij de telefoon aan te melden. \end_inset \end_inset \layout Subsubsection \added_space_top medskip Telefoon macro \layout Standard Selecteer uit de lijst met macro's de macro die op de gebruiker van toepassing moet zijn. Indien door de beheerder opgegeven bij het aanmaken van de macro, kan het nodig zijn om nog macro-specifieke opties in te moeten stellen, zoals bijvoorbe eld een Mailbox, doorschakelnummer, doorschakeltijd etc.). \layout Subsection \added_space_top bigskip Referenties \layout Standard Onder referenties vindt u de relaties van de gebruiker met andere objecten binnen de LDAP server (bijv. Groepen, systemen etc.). \the_end gosa-core-2.7.4/doc/core/nl/lyx-source/groups.lyx0000644000175000017500000004703010436410657020346 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold Groepen beheer \layout Section Groepenlijst \layout Standard De beheerder kan groep informatie aanmaken, veranderen of bekijken door op de \series bold \color blue Groepen \series default \color default knop in het \series bold Beheer \series default menu aan de linkerkant te klikken. De \family sans \color black Groepen Beheer \family default \color default pagina die getoond wordt, is het uitgangspunt voor alle groep beheertaken en is verdeeld in drie kolommen. \layout Itemize De eerste kolom bevat de namen van de groepen en de afdelingen waarbinnen zij ingedeeld zijn (alfabetisch gesorteerd). \layout Itemize De tweede kolom bevat knoppen voor snelle toegang tot verschillende groep eigenschappen van de groep (alleen beschikbaar indien de betreffende eigenschap geactiveerd is). Daarnaast dient deze kolom voor een snel overzicht van geactiveerde eigenschapp en van de groep. \begin_deeper \layout Itemize De mogelijke iconen en hun betekenis: \newline \begin_inset Tabular \begin_inset Text \layout Standard Icoon \end_inset \begin_inset Text \layout Standard Betekenis \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_groups.png \end_inset \end_inset \begin_inset Text \layout Standard Groep beschikt over UNIX eigenschappen \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/smallenv.png \end_inset \end_inset \begin_inset Text \layout Standard Groep beschikt over Omgevings instellingen \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/mailto.png \end_inset \end_inset \begin_inset Text \layout Standard Groep beschikt over een E-mail account \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_winstation.png \end_inset \end_inset \begin_inset Text \layout Standard Groep beschikt over een Samba/Windows account \end_inset \begin_inset Text \layout Standard \begin_inset Graphics filename images/select_application.png \end_inset \end_inset \begin_inset Text \layout Standard Groep beschikt over programma eigenschapppen \end_inset \end_inset \end_deeper \layout Itemize De derde kolom bevat knoppen voor de beschikbare acties (knippen, kopieren, bewerken, verwijderen) \layout Standard De knoppen ( \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset , \begin_inset Graphics filename images/list_reload.png \end_inset ) dienen voor navigatie binnen de afdelingshierarchie: \layout Itemize \begin_inset Graphics filename images/list_root.png \end_inset Helemaal naar boven (hoofd afdeling) \layout Itemize \begin_inset Graphics filename images/list_back.png \end_inset Een afdeling naar boven \layout Itemize \begin_inset Graphics filename images/list_home.png \end_inset Naar de basis van de groep \layout Itemize \begin_inset Graphics filename images/list_reload.png \end_inset Huidige afdeling verversen \layout Standard Daarnaast is het mogelijk de weergave van groepen met behulp van filters te beinvloeden ( \color black met \series bold Filters \series default \begin_inset Graphics filename images/rocket.png \end_inset aan de rechter zijde): \layout Itemize Op namen zoeken: \begin_deeper \layout Itemize Door op * (asterisk) te klikken worden alle groepen getoond \layout Itemize Het klikken van een letter, laat alle groepen zien waarvan de naam met de betreffende letter begint \layout Itemize Het klikken van een cijfer, laat alle groepen zien waarvan de naam met het betreffende cijfer begint \end_deeper \layout Itemize Verder zoekopties: \newline (De volgende filters werken zodanig dat alleen groepen getoond worden, die over tenminste een van de geselecteerde opties beschikken; Standaard worden alle groepen getoond). \begin_deeper \layout Itemize \emph on Toon primaire groepen: \emph default Groepen waarvoor geldt dat tenminste n gebruiker de groep als primaire groep ingesteld heeft \layout Itemize \emph on Toon Samba groepen: \emph default Groepen die over Samba/Windows mogelijkheden beschikken \layout Itemize \emph on Toon programma groepen: \emph default Groepen die over programma mogelijkheden beschikken \layout Itemize \emph on Toon E-mail gropen: \emph default Groepen die over E-mail mogelijkheden beschikken \layout Itemize \emph on Toon functionele groepen: \emph default Groepen die alleen over functionele eigenschappen beschikken \end_deeper \layout Itemize \color black Daarnaast kan de lijst met behulp van delen van namen en complexere reguliere expressies verder beperkt worden met behulpt van \color default het invoerveld achter het icoon \begin_inset Graphics filename images/search.png \end_inset . In dit veld kunt u cijfer en letter combinaties invoeren om de lijst verder te beperken. Om uw selectie door te voeren dient u op de knop \emph on Filter toepassen \emph default te drukken. \layout Subsection* Groep aanmaken \layout Standard Om een nieuwe groep aan te maken klikt u op de knop \begin_inset Graphics filename images/list_new_group.png \end_inset . Volg de instructies op die hierna gegevn worden om een bstaand account te bewerken. \layout Subsubsection* Een bestaande groep bewerken \layout Standard Klik binnen de groepenlijst op de groepsnaam van de te bewerken groep. De pagina die nu geladen wordt, bevat tabbladen die voor groep mogelijkheden staan (momenteel zijn dat bijvoorbeeld Algemeen, Omgeving, E-mail etc.) \layout Subsubsection* Algemene informatie \layout Itemize Om het bewerken van groepen (ook nieuwe groepen) af te sluiten en op te slaan, dient u op de knop Opslaan rechtsonder te drukken. Om de bewerkingen ongedaan te maken, drukt u op de knop annuleren, die u ook rechtsonder vindt. \layout Itemize Alle invoervelden met een rode asterisk (*) zijn verplichte velden. Deze velden moeten pers ingevuld worden. \layout Itemize In de rechter bovenhoek vindt u de volledige DN (unieke LDAP naam) van de groep die momenteel bewerkt wordt. \layout Subsection \pagebreak_top Algemeen \layout Itemize \begin_inset Tabular \begin_inset Text \layout Standard G \color black roepnaam \color red * \end_inset \begin_inset Text \layout Standard De naam van de groep \end_inset \begin_inset Text \layout Standard Omschrijving \end_inset \begin_inset Text \layout Standard De omschrijving van of een commentaar over de groep \end_inset \begin_inset Text \layout Standard Basis \color red * \end_inset \begin_inset Text \layout Standard De afdeling waartoe de groep hoort (het aanmaken van de afdelingen kan met behul van de knop \series bold \color blue Afdelingen \series default \color default in het linkermenu). \end_inset \end_inset \layout Itemize \emph on Forceer GID: \emph default Hiermee kunt u het UNIX GID op een bepaalde waarde instellen. Let op bij het gebruik van deze optie! Zorg ervoor dat GID niet dubbel uitgegeven worden en let er daarnaast op dat rechten op bestanden aangepast worden indien de GID aangepast wordt. \layout Itemize \emph on [Samba groep] in domein [Domein]: \emph default Met deze optie maakt u de groep beschikbaar voor Windows/Samba gebruikers. Daarbij zijn de volgende instellingen mogelijk: \begin_deeper \layout Itemize \emph on Samba groep: \emph default De groep is een normale Samba/Windows groep \layout Itemize \emph on Windows beheerders: \emph default De groep is een speciale Windows groep voor Domein Beheerders \layout Itemize \emph on Windows gebruikers: \emph default De groep is een speciale Windows groep voor Domein Gebruikers \layout Itemize \emph on Windows gasten: \emph default De groep is een speciale Windows groep voor Domein Gasten \end_deeper \layout Itemize \emph on Leden zitten in een telefoon beantwoordgroep: \emph default Met deze optie kunt u gebruikers in een telefoon beantwoord groep indelen. Verdere documentatie zal volgen. \layout Itemize \emph on Leden zitten in een systeeminformatie groep (Nagios): \emph default Groepsleden maken deel uit van een groep binnen Nagios systeemmonitorings software, die informatie mogen bekijken en/of aanpassen. \layout Itemize \emph on Groepsleden: \emph default De groep bestaat uit leden die in deze lijst getoond worden. Groepsleden kunnen toegevoegd en verwijderd worden: \begin_deeper \layout Itemize \emph on Toevoegen: \emph default Om een groepslid toe te voegen, drukt u op de knop \emph on Toevoegen \emph default . Daarna kunt u bestaande gebruikers uit de lijst selecteren, waarna u op de knop \emph on Toevoegen \emph default kunt drukken om de gebruikers lid te maken van de groep. Indien u het toevoegen wil afbreken, dan kunt u op de knop \emph on Anuuleren \emph default drukken. \end_deeper \layout Subsection \added_space_top bigskip Omgeving \layout Standard To activate the environment extension click on \shape italic Add environment \shape default \emph on extension \emph default . \layout Subsubsection Profielen \layout Subsubsection \added_space_top medskip Kiosk profiel \layout Subsubsection \added_space_top medskip Login scripts \layout Subsubsection \added_space_top medskip Shares \layout Subsubsection \added_space_top medskip Hotplug apparaten \layout Subsubsection \added_space_top medskip Printers \layout Subsection \added_space_top bigskip Programma's \layout Standard Om de Programma eigenschappen voor deze groep te activeren. drukt u op de knop \emph on Programma's \emph default \emph on toevoegen \emph default . \layout Subsection \added_space_top bigskip E-mail \layout Standard Een E-mail account voor een groep betekent een of meerdere gedeelde mappen op een IMAP server. Dit maakt het mogelijk om meer dan een gebruiker toegang te geven tot E-mails die in deze map opgeslagen worden. Deze gedeelde mappen zijn bijvoorbeeld handig om E-mail distributie mogelijk te maken, maar ook om date zoals bijvoorbeeld een agenda of adresboek te delen. Om een E-mail account toe te voegen aan een groep, drukt u op de knop \emph on E-mail account aanmaken \emph default . \layout Subsubsection Algemeen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Primair adres \color red * \end_inset \begin_inset Text \layout Standard \color black Het primaire E-mail adres voor de gedeelde mappen \end_inset \begin_inset Text \layout Standard Server \end_inset \begin_inset Text \layout Standard \color black Selecteer de mailserver waarop het account opgeslagen dient te worden \end_inset \begin_inset Text \layout Standard Quota gebruik \end_inset \begin_inset Text \layout Standard \color black Geeft het dataverbruik van de groep aan (indien een qouta gedefinieerd is) \end_inset \begin_inset Text \layout Standard Quota grootte \end_inset \begin_inset Text \layout Standard \color black De grootte van de hoeveelheid opslagruimte voor E-mails van de groep (in KB). \end_inset \end_inset \layout Subsubsection \added_space_top medskip Alternatieve adressen \layout Standard Alternatieve adressen zijn E-mail adressen, waaronder ook E-mail ontvangen kan worden door de E-mail groep. U kunt de knop \emph on Toevoegen \emph default gebruiken om E-mail alias adressen toe te voegen. \layout Subsubsection \added_space_top medskip IMAP gedeelde mappen \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Algemene rechten \end_inset \begin_inset Text \layout Standard Hier geeft u de rechten op die voor alle gebruikers gelden, die niet expliciet genoemd worden en/of lid van deze groep zijn. Indien u E-mail wil accepteren van externe adressen, dan dient u de Algemen rechten op \emph on alleen afleveren \emph default in te stellen. \end_inset \begin_inset Text \layout Standard Groepslid rechten \end_inset \begin_inset Text \layout Standard Hier geeft u de rechten op die voor alle leden van deze groep gelden. \end_inset \begin_inset Text \layout Standard [Extra E-mail adressen] \end_inset \begin_inset Text \layout Standard Hier geeft u de rechten voor extra E-mail adressen op. Druk op de knop \emph on Toevoegen \emph default om het E-mail adres met de opgegeven rechten toe te voegen \end_inset \end_inset \layout Standard Voor de rechten kunt u een selectie maken uit de volgende IMAP rechten: \layout Itemize \emph on alleen afleveren: \emph default De gebruiker/groep mag alleen E-mail berichten via SMTP afleveren in de map. Dit betekent dat de gebruiker \emph on niet \emph default kan lezen in de map. \layout Itemize \emph on alleen lezen: \emph default De gebruiker/groep mag alleen bestaande E-mail berichten die in de map staan lezen. \layout Itemize afleveren & lezen: De gebruiker/groep mag nieuwe E-mail berichten via SMTP plaatsen in de map en daarnaast alleen bestaande berichten lezen. \layout Itemize \emph on afleveren, lezen & kopieren: \emph default De gebruiker/groep mag nieuwe E-mail berichten via SMTP plaatsen in de map. Daarnaast kunnen berichten gelezen en binnen de map gekopieerd worden \layout Itemize \emph on afleveren, lezen en schrijven: \emph default De gebruiker/groep heeft alle rechten op de E-mail map, inclusief het zetten van status informatie. \layout Subsubsection \added_space_top medskip Stuur berichten door naar niet groepsleden \layout Standard Hiermee kunt u berichten die in voor deze groep bestemd zijn, automatisch doorsturen naar een ander adres. Druk op de knop \emph on Toevoegen \emph default om een extern E-mail adres toe te voegen, dat u in het tekstveld ingevuld hebt. Gebruik de knop \emph on Lokaal toevoegen \emph default om een lokaal E-mail adres toe te voegen. \layout Subsection \added_space_top bigskip Rechten \layout Standard In dit onderdeel kunt u rechten voor de diverse onderdelen binnen GOsa voor leden van de groep instellen. \layout Subsection \added_space_top bigskip Referenties \layout Standard Onder referenties vindt u alle koppelingen die deze groep met andere objecten uit de LDAP datanbase heeft. \the_end gosa-core-2.7.4/doc/core/guide.xml0000644000175000017500000001665111000625252015355 0ustar mikemike gosa-core-2.7.4/doc/core/en/0000755000175000017500000000000011752422547014147 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/0000755000175000017500000000000011752422547015113 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/users/0000755000175000017500000000000011752422547016254 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/users/list_root.png0000644000175000017500000000152410437070613020772 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/en/html/users/search.png0000644000175000017500000000177710437070613020233 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/en/html/users/node33.html0000644000175000017500000000265710766256174020254 0ustar mikemike Generic

    Generic

    Fax* Insert the fax number of the user
    Language Make your choice on the scroll list
    Delivery format Make your choice on the scroll list




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node20.html0000644000175000017500000000424510766256174020243 0ustar mikemike Mail options

    Mail options

    Management of the mail options of the user :

    • No delivery to own mailbox : send all mail for this address to a mail address mentionned in the area Forward messages to.
    • Activate vacation message : send the message wroten in the area Vacation message to the sender.
    • Move mails tagged with spam level greater than (a) to folder (b) : send mails that spam level is higher than (a) in the folder (b).
    • Reject mails bigger than (c) MB : reject mails higher than (c) MB.
    • Use the Add ou Add local buttons to manage addresses :

      - The Add local button is used to choose among the local list addresses.

      - The Add button allow external addresses.

      - Use the Delete button to remove the mails addresses.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node12.html0000644000175000017500000000170510766256174020242 0ustar mikemike Kiosk profile

    Kiosk profile




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node10.html0000644000175000017500000000317310766256174020241 0ustar mikemike Environment

    Environment

    Click on the button add an environment extension to activate the configuration space.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node34.html0000644000175000017500000000230210766256174020240 0ustar mikemike Delivery methods

    Delivery methods

    • Temporary disable fax usage : forbid the use of the fax for an user.
    • Deliver fax as mail to : send fax on mail distribution format to the user's mailbox.
    • Deliver fax to printer : send fax to a printer.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node25.html0000644000175000017500000000270510766256174020247 0ustar mikemike Access options

    Access options

    • It's about the management of the user's password. Once or many proposal can be checked in but the administrator must take care to avoid conflicts.
    • The area on the right must be filled by the names of clients on which the user can logon. The administrator must use the button Add to insert the clients names. The button Add give the clients list. Use the button Delete to remove clients.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/list_new_user.png0000644000175000017500000000142410437070613021635 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "Ω2IDAT8ˍKHT{XfYkT{HaPTPAI )*-Z1l A$A5BT"hX#fFf²(:&<noŏEfmƿ[I0bKt0-t6"G){0|砨8h[א[Z?j=IK4nK{̖="B|nקis3VP>بH$r:bqih !"~Z.I !J|eRBNA(i{ @](dw=/ݼ2LCAW=w*Մi 4*A{p)|nu"Tsht <®) aIo喭=B~@`ݾէw:uB33QĞsȩk2WHKPո(ɺm%+ z=h*x“mҎQ t~ХSIENDB`gosa-core-2.7.4/doc/core/en/html/users/users.css0000644000175000017500000000441710766256174020142 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } #hue103 { color: #000000; } #hue105 { color: #0000ff; } #hue143 { color: #000000; } #hue157 { color: #000000; } #hue161 { color: #000000; } #hue163 { color: #000000; } #hue167 { color: #000000; } #hue169 { color: #000000; } #hue173 { color: #000000; } #hue175 { color: #000000; } #hue179 { color: #000000; } #hue232 { color: #ff0000; } #hue25 { color: #0000ff; } #hue28 { color: #000000; } #hue287 { color: #ff0000; } #hue302 { color: #000000; } #hue306 { color: #000000; } #hue318 { color: #000000; } #hue320 { color: #ff0000; } #hue321 { color: #ff0000; } #hue322 { color: #ff0000; } #hue324 { color: #000000; } #hue325 { color: #000000; } #hue326 { color: #000000; } #hue329 { color: #ff0000; } #hue333 { color: #ff0000; } #hue335 { color: #000000; } #hue336 { color: #000000; } #hue337 { color: #000000; } #hue344 { color: #ff0000; } #hue346 { color: #ff0000; } #hue347 { color: #ff0000; } #hue36 { color: #000000; } #hue38 { color: #000000; } #hue40 { color: #000000; } #hue53 { color: #000000; } #hue57 { color: #000000; } #hue61 { color: #000000; } #hue66 { color: #0000ff; } #hue68 { color: #000000; } #hue72 { color: #000000; } #hue76 { color: #000000; } #hue80 { color: #000000; } gosa-core-2.7.4/doc/core/en/html/users/labels.pl0000644000175000017500000000025010437070613020040 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/users/node29.html0000644000175000017500000000204710766256174020252 0ustar mikemike WebDAV account
    WebDAV account

    If you activated the WebDAV option, the user will be granted access to the WebDAV server.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node1.html0000644000175000017500000001451610766256174020164 0ustar mikemike List of users

    List of users

    The administrator can create, modify or access the account informations when clicking on the users button in the Administration menu on the left. The Users Administration page is displayed, she is divided on three columns. Each time an user is created it will appear in the first column sorted by department.

    The two first columns contains icons which are shortcuts to the settings of each user and the actions you can execute on them.

    Those icons ( Image list_back, Image list_root, Image list_home ) are used to modify the display according to the department, the icons predominate other selections of display.

    It's from the Users Administration page that the system administrator will get a global view of all the users in his system.

    In the right part of the page you will find a table called Filters Image rocket.

    • This table purpose is to change the display of the users :

      - Click on a letter to show all the users starting with this letter;

      - Click on the asterisk and the list of users will be ordoned alphabetically

    • You can also :

      - Check one or more options to get a restricted selection;

      - Insert a letter or a number followed by an asterisk or a user name in the filed preceded by a this icon Image search. Click on the submit button to get the result of your selection.

    To create an account click on Image list_new_user. If the account is already created click on the account himself.

    You will see tabs, each of them is a part of the user account configuration. Each of those tabs is an extension that GOsa can manage.

    To finish the creation of the user, click on the finish button on the right bottom of the page. To cancel your change click on the cancel button.


    All the fields followed by an red asterisk must be filled.

    In the upper right corner you have the full dn of the user currently edited.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node4.html0000644000175000017500000000603110766256174020160 0ustar mikemike Organizational information

    Organizational information

    Organization Insert the organization's name
    Departement Insert the departement's name that the user is attached
    Departement's number Insert the departement's number
    Employee's number Insert the employee's number
    Employee's type Insert his range in the organization
    Room's number Insert the room's number of the employee
      Insert the phone number of the user
    Mobile Insert the mobile's number of the employee
    Pager Insert the page number of the employee
    Fax Insert the fax number of the employee
    Location Insert the localisation of employee's office
    State Insert the name of the state where the organization is located
    Address Insert the address of the organization




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node42.html0000644000175000017500000000325210766256174020244 0ustar mikemike About this document ...

    About this document ...

    USERS ADMINISTRATION

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/users/ users.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/WARNINGS0000644000175000017500000000025510766256174017436 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/users/users.html0000644000175000017500000000674110766256174020320 0ustar mikemike USERS ADMINISTRATION

    USERS ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node18.html0000644000175000017500000000322010766256174020242 0ustar mikemike Generic

    Generic

    Primary address* Insert the mail address of the user
    Server Choose the server where the mail account of the user is stored
    Quota usage Mention if you apply a quota to the mail account of the user
    Quota size Mention in KB the quota size




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node22.html0000644000175000017500000000261410766256174020243 0ustar mikemike Samba

    Samba

    To create a samba account for an user click on the button Create a samba account.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/rocket.png0000644000175000017500000000147410437070613020247 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/users/node16.html0000644000175000017500000000166610766256174020254 0ustar mikemike Printer

    Printer




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/list_home.png0000644000175000017500000000154110437070613020736 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/en/html/users/node32.html0000644000175000017500000000265310766256174020247 0ustar mikemike Fax

    Fax

    To create a fax account for an user click on the button Create a Fax account.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node2.html0000644000175000017500000000232510766256174020160 0ustar mikemike Generic

    Generic



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node39.html0000644000175000017500000000310510766256174020247 0ustar mikemike Telephone hardware

    Telephone hardware

    Telephone Make your choice on the scroll list
    VoicemailPIN* Insert the PIN code of the user to reach his voicemail
    Phone PIN* Insert the PIN code of the user to unlock his phone




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/list_back.png0000644000175000017500000000153610437070613020712 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Account

    Account

    It's about the management of the user's password. Many proposals could be checked but the administrator should avoid conflicting options.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node27.html0000644000175000017500000000210310766256174020241 0ustar mikemike Proxy account
    Proxy account

    If you activated the Proxy option for a user you can filter the content, limit access hours and restrict download/upload.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node13.html0000644000175000017500000000170510766256174020243 0ustar mikemike Logon scripts

    Logon scripts




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node30.html0000644000175000017500000000210610766256174020236 0ustar mikemike PHPGroupware account
    PHPGroupware account

    If you activated the PHPGroupware option, the user will be granted access to the PHPGroupware software.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node23.html0000644000175000017500000000331510766256174020243 0ustar mikemike Generic

    Generic

    Home directory Mention the path of the user's home directory in UNC notation ex: \\SERVER\homes\user. Choose on the scroll list the letter associated to the user's home directory.
    Domain Select the domain where the user's desktop exists
    Script path Mention the user's logon script
    Profile path Mention the path to the user profile




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node24.html0000644000175000017500000000654110766256174020250 0ustar mikemike Terminal Server

    Terminal Server

    • Allow login on the terminal server
    Home directory Mention the path of the user's home directory in notation UNC ex: \\SERVER\homes\user. Choose on the scroll list the letter associated to the user's home directory.
    Profile path Mention the path to the user profile

    • Inherit client config
    Initial program Mention the path to the default application
    Working directory Mention the working directory of the initial program

    • Timeout settings (in minutes) :
    Connection Put the maximum time waiting for a login
    Disconnection Put the maximum time waiting to disconnect
    IDLE Put the maximum time waiting for a query

    • Client devices :
    Connect client drives at logon Check to connect client drives at logon
    Connect client printers at logon Check to connect client printers at logon
    Default to main client printer Check to define the client default printer at logon

    • Miscellaneous :

      - Shadowing : ?

      - On broken or timed out : choose if you want disconect or reset the client.

      - Reconnect if disconnected : choose if the reconnection must be done from the same client, or if it can be done from an other client.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node26.html0000644000175000017500000000301510766256174020243 0ustar mikemike Connectivity

    Connectivity

    The administrator can choose more services where the user could be connected.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node5.html0000644000175000017500000000265710766256174020173 0ustar mikemike Unix

    Unix

    To activate an Unix account for one user, you have to click on the button add a posix account.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node17.html0000644000175000017500000000273410766256174020252 0ustar mikemike Mail

    Mail

    The mail account is linked to the mail server. To activate the mail account click on the button Create mail account.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node15.html0000644000175000017500000000171310766256174020244 0ustar mikemike Hotplug devices

    Hotplug devices




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node40.html0000644000175000017500000000177210766256174020247 0ustar mikemike Phone macro

    Phone macro

    Selection of phone macro for the user's telephone.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node36.html0000644000175000017500000000312510766256174020246 0ustar mikemike Blocklists

    Blocklists

    The fax is today frequently use to deliver advertising messages. Many of them are spams. To avoid those messages, the administrator can create a blocklist for incoming and outgoing fax.

    When clicking on the button Edit at the left side appear the blocked numbers/lists linked to the user and at the right side the predefined blocklist.

    Select one or many lists at the right side and click on Add the list to the blocklists use at vous dsirez utiliser dans la liste de droite et cliquer sur Ajouter la liste rouge pour l'activer. ???




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node6.html0000644000175000017500000000400510766256174020161 0ustar mikemike Generic

    Generic

    Home directory* Insert the path to the home directory of the user
    Shell Make the choice on the scroll list of the kind of shell used
    Primary group Mention the primary group wich one the user is attached. (For the creation of a group, go to the Administration part and click on the button Groups)
    Status Mention if the account is activated or not
    Force UID/GID Check if you want to force UID/GID of the user to a certain value




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node28.html0000644000175000017500000000214210766256174020245 0ustar mikemike FTP account
    FTP account

    If you activated the FTP option, you can fix the upload and downlaod bandwidth, the data ratio and the quota allowed. You can also deactivate the FTP account.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node21.html0000644000175000017500000000252210766256174020240 0ustar mikemike Advanced mail options

    Advanced mail options

    • User is only allowed to send and receive local mails : the administrator can force sending and receiving local mails only.
    • Use custom sieve script : The administrator can write sieve script to establish rules for managing mail box. Attention ! This will disable all mail options.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node9.html0000644000175000017500000000251210766256174020165 0ustar mikemike System trust

    System trust

    The trust system is used to control access by the user at differents systems, devices, ...

    The trust system can :

    • be deactivated,
    • allow full access,
    • allow the access to hosts :

      - Use the button Add to select the hosts,

      - Use the button Delete to remove hosts.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node35.html0000644000175000017500000000266310766256174020253 0ustar mikemike Alternate fax numbers

    Alternate fax numbers

    The administrator can complete the fax configuration with more than one fax number. Use the buttons Add, Add local to fill the area.

    • The Add local button is used to choose among the local fax.
    • The Add button allow external fax numbers.
    Use the button Delete to remove fax numbers.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node31.html0000644000175000017500000000270410766256174020243 0ustar mikemike Intranet account
    Intranet account

    If you activated the Intranet option, the user will access Intranet server.

    PPTP account

    If you activated the PPTP option, the user will access server PPTP.

    PHPScheduleit account

    If you activated the PHPScheduleit option, the user will access PHPScheduleIt software.

    GLPI account

    If you activated the GLPI option, the user will access GLPI software.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node14.html0000644000175000017500000000170210766256174020241 0ustar mikemike Attach share

    Attach share




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node11.html0000644000175000017500000000166610766256174020247 0ustar mikemike Profiles

    Profiles




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node38.html0000644000175000017500000000212210766256174020244 0ustar mikemike Phone numbers

    Phone numbers

    Insert one or many phone numbers for the user by clicking on the button Add.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/index.html0000644000175000017500000000674110766256174020266 0ustar mikemike USERS ADMINISTRATION

    USERS ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node41.html0000644000175000017500000000203710766256174020243 0ustar mikemike References

    References

    The references present the user's properties. It gives the administrator a short summary of the user's properties.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node37.html0000644000175000017500000000257110766256174020253 0ustar mikemike Phone

    Phone

    To activate the phone account for an user click on the button Create a phone account.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node7.html0000644000175000017500000000235510766256174020170 0ustar mikemike Group membership

    Group membership

    Use the buttons Add and Delete to insert or to remove groups in the empty area. The button Add give the group list created by the administrator. The user could be attached at one or many groups.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node3.html0000644000175000017500000001001010766256174020147 0ustar mikemike Personal information

    Personal information

    Last name* Insert the last name
    First name* Insert the first name
    Login* Insert the login name
    Personnal title Insert the personnal (Mister, Miss, Madam)
    Academic title Insert the academic title
    Date of birth Click on the set button to make a scroll list appear
    Sex Make your choice on the scroll list
    Preferred Language Make your choice on the scroll list
    Base Choice of the deparment. (the creation of the department is made with the department button on the left menu in the administration part.).
    Address Insert the personnal address of the user
    Private phone Insert the private number in the national or international way. (keep in mind to make the same for all users)
    Homepage Insert the url of the user homepage
    Password storage Make your choice on the scroll list
    Certificates Click on the button Edits certificates. GOsa will let you import three type of certificates. To save click on finish
    Kerberos Click on the button Edit properties.


    You can if you wisch add a picture of the user by clicking on the button changer la photo.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/users/node19.html0000644000175000017500000000250410766256174020247 0ustar mikemike Alternative addresses

    Alternative addresses

    The user can own one or many aliases. Those aliases must be inserted in the alternatives addresses area.

    Use the button Add to insert the aliases. The alias must be inserted in the empty area followed by the button Add. Use the button Delete to remove aliases.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/0000755000175000017500000000000011752422547016432 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/groups/list_root.png0000644000175000017500000000152410437070613021150 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/en/html/groups/node12.html0000644000175000017500000000336610766256174020425 0ustar mikemike Generic

    Generic

    Primary address* Insert group primary address
    Server Insert server name where the group mailbox reside
    Quota usage Mention if you want establish a quantity quota on the incoming and outgoing mail
    Quota size Mention the Quota size in KB




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node10.html0000644000175000017500000000223310766256174020413 0ustar mikemike Applications

    Applications

    To activate the extension Applications click on the button Create applications.

    The applications are applications existing in the organization. ???




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/labels.pl0000644000175000017500000000025010437070613020216 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/groups/node1.html0000644000175000017500000001177310766256174020344 0ustar mikemike List of groups

    List of groups

    The administrator can create, modify or access the group informations when clicking on the Group button in the Administration menu on the left. The Group ADMINISTRATION page is displayed.

    She is divided in three columns :

    - The first column is used to display the list of groups or department,

    - The two last columns contains icons which are shortcuts to the settings of each goup and the actions you can execute on them.

    - Those icons ( Image list_back, Image list_root, Image list_home ) are used to modify the display according to the department, the icons predominate other selections of display.


    It's from the Groups Administration page that the system administrator manage the list of groupes of the organization.

    Like for the users, it is possible to modify the display of groups by using the table called Filters Image rocket.

    The administrator can do a nominal research and/or on the properties of group :

    • To search on names :

      - Click on the asterisk to show all groups;

      - Click on a lettre to show all the groups starting with this letter;

      - Click on a number to show all groups starting with this number.

    • To search on groups properties you must :

      - Check one or many propositions;

    • To search a name with a letter :

      - fill the first field with a letter followed by an asterisk, click on the button Apply filter, all the names starting with this letter will be displayed,

      - fill the second field with a letter and an asterisk, click on the button Apply filter, all the names containing this letter will be displayed.

    To create a group click on Image list_new_group.

    You will see tabs. The administrator uses tabs to configure the group.

    To save changes use the Save button, to come back without saving use the Cancel button.


    All the fields followed by a red asterisk must be filled.

    In the upper right corner you have the full dn of the group currently edited.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/groups.html0000644000175000017500000000442410766256174020650 0ustar mikemike GROUP ADMINISTRATION

    GROUP ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node4.html0000644000175000017500000000167010766256174020342 0ustar mikemike Profiles

    Profiles




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/WARNINGS0000644000175000017500000000025510766256174017614 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/groups/node18.html0000644000175000017500000000325610766256174020431 0ustar mikemike About this document ...

    About this document ...

    GROUP ADMINISTRATION

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/groups/ groups.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/rocket.png0000644000175000017500000000147410437070613020425 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/groups/node16.html0000644000175000017500000000202110766256174020414 0ustar mikemike ACL

    ACL

    This part allow the administrator to configure the user rights to the differents parts of GOsa.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/list_home.png0000644000175000017500000000154110437070613021114 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/en/html/groups/node2.html0000644000175000017500000000406310766256174020337 0ustar mikemike Generic

    Generic

    • Groupe name* Insert the group name
      Description Insert a description, a commentary on the group
      Base* Make your choice on the scroll list
    • Force GID : Force the group to use the number mentionned in the field
    • Group / Domain Samba : Put members on a Samba group and a Samba domain
    • Members are in a phone pickup group : Check to put members in a phone pickup group
    • Members are in a nagios group : Check to put members in nagios group
    The administrator insert in the area different members of a group. He must use the Add button to choose in the list of users. To modify a group he must use the Delete button.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/list_back.png0000644000175000017500000000153610437070613021070 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Hotplug devices

    Hotplug devices




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node13.html0000644000175000017500000000220110766256174020411 0ustar mikemike Alternative addresses

    Alternative addresses

    A mail could be redirected to one or many addresses. Use buttons Add and Delete to manage aliases.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node5.html0000644000175000017500000000170710766256174020344 0ustar mikemike Kiosk profile

    Kiosk profile




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node17.html0000644000175000017500000000175210766256174020427 0ustar mikemike References

    References

    The references show the existing relations between objects.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node15.html0000644000175000017500000000261210766256174020421 0ustar mikemike Forward messages to non group members

    Forward messages to non group members

    Users can recieve messages from a group without being a member of this group. You have to insert the email addresses of users in the field that precede buttons Add, Add local and Delete. The Add local button will show you addresses already saved in GOsa.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/list_new_group.png0000644000175000017500000000161710437070613022175 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 S Logon scripts

    Logon scripts




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node9.html0000644000175000017500000000170110766256174020342 0ustar mikemike Imprimante

    Imprimante




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node14.html0000644000175000017500000000321410766256174020417 0ustar mikemike IMAP shared folders

    IMAP shared folders

    Default permission Make your choice in the scroll list to select the type of default permission for the group IMAP folder
    Member permision Make your choice in the scroll list of the type of permission allowed to the members to access the IMAP folder
      The administrator can add other email adresses that can have access to the IMAP folder




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node11.html0000644000175000017500000000273210766256174020420 0ustar mikemike Mail

    Mail

    To activate a mail account click on the Create mail account.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/index.html0000644000175000017500000000442410766256174020440 0ustar mikemike GROUP ADMINISTRATION

    GROUP ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/groups.css0000644000175000017500000000301110766256174020463 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } #hue102 { color: #000000; } #hue104 { color: #000000; } #hue106 { color: #000000; } #hue108 { color: #000000; } #hue110 { color: #000000; } #hue139 { color: #000000; } #hue140 { color: #000000; } #hue142 { color: #ff0000; } #hue143 { color: #ff0000; } #hue145 { color: #ff0000; } #hue27 { color: #0000ff; } #hue30 { color: #000000; } #hue43 { color: #000000; } #hue45 { color: #000000; } #hue47 { color: #000000; } #hue62 { color: #000000; } #hue90 { color: #ff0000; } gosa-core-2.7.4/doc/core/en/html/groups/node7.html0000644000175000017500000000170410766256174020343 0ustar mikemike Attach share

    Attach share




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/groups/node3.html0000644000175000017500000000311310766256174020333 0ustar mikemike Environment

    Environment

    To activate the environment extension click on Add environment extension.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/fonreports/0000755000175000017500000000000011752422547017314 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/fonreports/labels.pl0000644000175000017500000000025010437070613021100 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/fonreports/node1.html0000644000175000017500000000241610766256174021220 0ustar mikemike Phone Reports

    Phone Reports



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/fonreports/WARNINGS0000644000175000017500000000025510766256174020476 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/fonreports/rocket.png0000644000175000017500000000147410437070613021307 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/fonreports/node2.html0000644000175000017500000000204010766256174021212 0ustar mikemike Filter

    Filter Image rocket



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/fonreports/fonreports.html0000644000175000017500000000263510766256174022416 0ustar mikemike ADDONS

    ADDONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/fonreports/index.html0000644000175000017500000000263510766256174021324 0ustar mikemike ADDONS

    ADDONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/fonreports/fonreports.css0000644000175000017500000000170010766256174022232 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN. { } #hue25 { color: #000000; } gosa-core-2.7.4/doc/core/en/html/fonreports/node3.html0000644000175000017500000000326010766256174021220 0ustar mikemike About this document ...

    About this document ...

    ADDONS

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/fonreports/ fonreports.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ldapmanager/0000755000175000017500000000000011752422547017366 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/ldapmanager/labels.pl0000644000175000017500000000025010437070613021152 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/ldapmanager/node1.html0000644000175000017500000000250610766256174021272 0ustar mikemike LDAP manager

    LDAP manager



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ldapmanager/node4.html0000644000175000017500000000252410766256174021275 0ustar mikemike Import

    Import

    Import LDIF File Import a ldif file in your ldap tree

    • Modify existing attributes : rewrite already existing attributes in the ldap tree
    • Overwrite existing entry : rewrite already existing entries in the ldap tree




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ldapmanager/WARNINGS0000644000175000017500000000020010766256174020536 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/ldapmanager/ldapmanager.html0000644000175000017500000000272410766256174022541 0ustar mikemike ADDONS

    ADDONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ldapmanager/node2.html0000644000175000017500000000251710766256174021275 0ustar mikemike Export

    Export

    Export single entry Export a single entry of the ldap tree
    Export complete LDIF for Export the complete ldap tree in one ldif file or a selected department




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ldapmanager/ldapmanager.css0000644000175000017500000000164310766256174022364 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN. { } gosa-core-2.7.4/doc/core/en/html/ldapmanager/node5.html0000644000175000017500000000254610766256174021302 0ustar mikemike CSV Import

    CSV Import

    Select CSV file to import Select a correctly formated cvs file to import in your ldap tree
    Select template Select a GOsa template to make the match between your cvs file an your ldap tree


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ldapmanager/node6.html0000644000175000017500000000326410766256174021301 0ustar mikemike About this document ...

    About this document ...

    ADDONS

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/ldapmanager/ ldapmanager.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ldapmanager/index.html0000644000175000017500000000272410766256174021375 0ustar mikemike ADDONS

    ADDONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ldapmanager/node3.html0000644000175000017500000000253710766256174021300 0ustar mikemike Excel Export

    Excel Export

    Export single entry Export a single entry of the ldap tree
    Export complete XLS for Export the complete ldap tree in one xls file or a selected department




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/conference/0000755000175000017500000000000011752422547017222 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/conference/select_new_component.png0000644000175000017500000000070410437070613024133 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 'QIDAT8˥1HBQdCA57Ec%M8DKFj)[l5&VA5$aCK.oZo٫|:^s^%"8kn'Qjȿ/^5<W Zg{>zQ.7S`gO\Q}dvt08"z Q^Xwn䡢\sX0n]F*#?6yT)p1A 0y(+ϯ 1L@O|`e}-) ilj,˒j" vv*_4 n8 +=uxR@+oN IENDB`gosa-core-2.7.4/doc/core/en/html/conference/list_root.png0000644000175000017500000000152410437070613021740 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/en/html/conference/search.png0000644000175000017500000000177710437070613021201 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/en/html/conference/conference.html0000644000175000017500000000306610766256174022231 0ustar mikemike PHONE CONFERENCES ADMINISTRATION

    PHONE CONFERENCES ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/conference/labels.pl0000644000175000017500000000025010437070613021006 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/conference/node1.html0000644000175000017500000000740210766256174021126 0ustar mikemike List of conference room

    List of conference room

    The administrator can configure a phone conferences when clicking on the Phone conferences button in the Administration menu on the left. The Conference MANAGEMENT page is displayed.

    She is divided on four columns :

    - The first column is used to display _,

    - The second _

    - The third

    - The last column contains icons which are the actions you can execute on _.

    - Those icons ( Image list_back, Image list_root, Image list_home ) are used to modify the display according to the department, the icons predominate other selections of display.


    It's from the Conference management page that the system administrator manage the list of _ of the organization.

    It's possible to modify the display of _ by using the table called Filters Image rocket :

    • To search on names :

      - Click on the asterisk to show all _;

      - Click on a letter to show all the _ starting with this letter;

      - Click on a number to show all _ starting with this number.

    • For a fast search Image search : fill the field by the name of the _ searched and click on the Apply filter button.


    To create and configure _, the administrator click on (Image select_new_component).

    You will see tabs. The administrator uses tabs to configure the phone conference.

    To save changes use the Save button, to come back without saving use the Cancel button.

    All the fields followed by an asterisk must be filled.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/conference/node4.html0000644000175000017500000000301410766256174021124 0ustar mikemike Options

    Options

    • Preset PIN

      Check if you want a preset code to be used in this conference.

    • Record conference

      Check if you want to record the phone conference.

    • Play music on hold

      Check if you want an on hold music.

    • Activate session menu

      Check here if you want a session menu

    • Announce users joining or leaving the conference

      Check if you want to notice to others a participant is coming or leaving the phone conference.

    • Count users

      Check if you want to count participants.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/conference/WARNINGS0000644000175000017500000000025510766256174020404 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/conference/rocket.png0000644000175000017500000000147410437070613021215 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/conference/list_home.png0000644000175000017500000000154110437070613021704 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/en/html/conference/node2.html0000644000175000017500000000230010766256174021117 0ustar mikemike Generic

    Generic



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/conference/list_back.png0000644000175000017500000000153610437070613021660 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H References

    References

    The references show the existing relations between phone conferences.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/conference/node6.html0000644000175000017500000000331210766256174021127 0ustar mikemike About this document ...

    About this document ...

    PHONE CONFERENCES ADMINISTRATION

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/conference/ conference.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/conference/index.html0000644000175000017500000000306610766256174021231 0ustar mikemike PHONE CONFERENCES ADMINISTRATION

    PHONE CONFERENCES ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/conference/node3.html0000644000175000017500000000406110766256174021126 0ustar mikemike Properties

    Properties

    Conference name* Insert the conference name
    Type* Make a choice on the scroll list to select type
    Base* Make a choice on the scroll list to select the department where the phone conference existes
    Description Description about the use of the phone conference
    Lifetime (in days) Mention how many time the phone conference runs
    Phone number* Insert the phone number of the phone conference




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/logview/0000755000175000017500000000000011752422547016567 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/logview/logview.css0000644000175000017500000000171010437070613020744 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.arabic { } SPAN.textbf { font-weight: bold } gosa-core-2.7.4/doc/core/en/html/logview/labels.pl0000644000175000017500000000025010437070613020353 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/logview/node1.html0000644000175000017500000000222610766256174020472 0ustar mikemike System log view

    System log view



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/logview/WARNINGS0000644000175000017500000000020010766256174017737 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/logview/node2.html0000644000175000017500000000340410766256174020472 0ustar mikemike Filter

    Filter

    Show hosts Select the host to search on in the scroll list
    Log level Select the log level where to search in the scroll list
    Time interval Select the time time interval where to search in the scroll list
    Search for Select the string to search for
    Ruleset Create a ruleset for to help frequent searches of the same type


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/logview/logview.html0000644000175000017500000000244110766256174021137 0ustar mikemike ADDONS

    ADDONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/logview/index.html0000644000175000017500000000244110766256174020572 0ustar mikemike ADDONS

    ADDONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/logview/node3.html0000644000175000017500000000324410766256174020475 0ustar mikemike About this document ...

    About this document ...

    ADDONS

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/logview/ logview.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/macro/0000755000175000017500000000000011752422547016214 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/macro/list_root.png0000644000175000017500000000152410437070613020732 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/en/html/macro/search.png0000644000175000017500000000177710437070613020173 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/en/html/macro/macro.css0000644000175000017500000000202210766256174020030 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } gosa-core-2.7.4/doc/core/en/html/macro/labels.pl0000644000175000017500000000025010437070613020000 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/macro/node1.html0000644000175000017500000000717110766256174020123 0ustar mikemike List of macros

    List of macros

    The administrator can configure a phone macros when clicking on the Phone macros button in the Administration menu on the left. The Phone macro MANAGEMENT page is displayed.

    She is divided on two columns :

    - The first column is used to display _,

    - The second _

    - The third column contains icons which are the actions you can execute on _.

    - Those icons ( Image list_back, Image list_root, Image list_home ) are used to modify the display according to the department, the icons predominate other selections of display.


    It's from the Phone macro management page that the system administrator manage the list of Phone macros of the organization.

    It's possible to modify the display of blocklist by using the table called Filters Image rocket :

    • To search on names :

      - Click on the asterisk to show all _;

      - Click on a letter to show all the _ starting with this letter;

      - Click on a number to show all _ starting with this number.

    • For a fast search Image search : fill the field by the name of the _ searched and click on the Apply filter button.


    To create and configure _, the administrator click on Image list_new_macro.

    You will see tabs. The administrator uses tabs to configure the phone macro.

    To save changes use the Save button, to come back without saving use the Cancel button.

    All the fields followed by an asterisk must be filled.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/macro/node4.html0000644000175000017500000000175510766256174020130 0ustar mikemike References

    References

    The references show the existing relations between phone macros.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/macro/WARNINGS0000644000175000017500000000025510766256174017376 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/macro/rocket.png0000644000175000017500000000147410437070613020207 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/macro/list_home.png0000644000175000017500000000154110437070613020676 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/en/html/macro/node2.html0000644000175000017500000000360010766256174020115 0ustar mikemike Generic

    Generic

    Macro name* Insert the macro name
    Display name* Macro display name
    Base* Make a choice on the scroll list to select the department where the phone macros existes
    Description Description about the use of the phone macros
    Visible for user Is this macro visible or not for an user


    • Macro text




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/macro/list_back.png0000644000175000017500000000153610437070613020652 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H PHONE MACROS ADMINISTRATION

    PHONE MACROS ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/macro/node5.html0000644000175000017500000000326110766256174020123 0ustar mikemike About this document ...

    About this document ...

    PHONE MACROS ADMINISTRATION

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/macro/ macro.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/macro/list_new_macro.png0000644000175000017500000000146710437070613021727 0ustar mikemikePNG  IHDRabKGD pHYs  tIME#2IDAT8ˍKHTaxͦ%D6Ѣ=MS$f,A݉)E"**(qR%1%YmiSѓ1cjs3::{ZA-Vp}_'$o)9$e^k~_bXCT*h!@CD:qhJ!0$2@R 0GBDZ3q)4ˁeSA@2 C>h$(ö!cQֽ*wn H @s/O/^srTLO0d%~n&]JTqFhJ: /q M*f!۞cAt'0MSZDt"HLiLplI=pXW;FlqYsu445`04'm*.v5A3gKrc8Kr^)o'iqH F 5\)%FNS8u$neh9ш>V^+,F6Y@0ڇPRge2MS|;$t=XA9|\6Z8֧7]pl]RAX>M11a%4_~A6=ݗs5x>gϵe տ;m-N x޽N뭗xIENDB`gosa-core-2.7.4/doc/core/en/html/macro/index.html0000644000175000017500000000272010766256174020217 0ustar mikemike PHONE MACROS ADMINISTRATION

    PHONE MACROS ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/macro/node3.html0000644000175000017500000000267010766256174020124 0ustar mikemike Parameter

    Parameter

    Argument  
    Name  
    type  
    Default value  




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/blocklists/0000755000175000017500000000000011752422547017264 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/blocklists/list_root.png0000644000175000017500000000152410437070613022002 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/en/html/blocklists/search.png0000644000175000017500000000177710437070613021243 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/en/html/blocklists/labels.pl0000644000175000017500000000025010437070613021050 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/blocklists/node1.html0000644000175000017500000000726710766256174021201 0ustar mikemike List of blocklists

    List of blocklists

    The administrator can configure a blocklist when clicking on the FAX Blocklists button in the Administration menu on the left. The Blocklist MANAGEMENT page is displayed.

    She is divided on two columns :

    - The first column is used to display the list of blocklist,

    - The second column contains icons which are the actions you can execute on blocklist.

    - Those icons ( Image list_back, Image list_root, Image list_home ) are used to modify the display according to the department, the icons predominate other selections of display.


    It's from the Blocklist Management page that the system administrator manage the list of blocklist of the organization.

    It's possible to modify the display of blocklist by using the table called Filters Image rocket :

    • To search on names :

      - Click on the asterisk to show all blocklists;

      - Click on a letter to show all the blocklists starting with this letter;

      - Click on a number to show all blocklists starting with this number.

    • For a fast search Image search : fill the field by the name of the application searched and click on the Apply filter button.


    To create and configure blocklists, the administrator click on Image list_new_blocklist.

    The administrator uses tabs to configure the blocklist.

    To save changes use the Save button, to come back without saving use the Cancel button.

    All the fields followed by an asterisk must be filled.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/blocklists/node4.html0000644000175000017500000000167110766256174021175 0ustar mikemike Information

    Information



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/blocklists/WARNINGS0000644000175000017500000000025510766256174020446 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/blocklists/rocket.png0000644000175000017500000000147410437070613021257 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/blocklists/blocklists.css0000644000175000017500000000230310766256174022152 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN. { } #hue27 { color: #0000ff; } #hue30 { color: #000000; } #hue42 { color: #000000; } #hue44 { color: #000000; } #hue46 { color: #000000; } #hue60 { color: #000000; } #hue77 { color: #000000; } #hue79 { color: #ff0000; } gosa-core-2.7.4/doc/core/en/html/blocklists/blocklists.html0000644000175000017500000000273410766256174022336 0ustar mikemike BLOCKLIST ADMINISTRATION

    BLOCKLIST ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/blocklists/list_home.png0000644000175000017500000000154110437070613021746 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/en/html/blocklists/list_new_blocklist.png0000644000175000017500000000141510437070613023655 0ustar mikemikePNG  IHDRabKGD pHYs  tIME1[IDAT8ˍMHaVH&Q((PAPCHRQiF}P d") "e ҚY~W]Cfy EG| J@5 @Na ,O}S,x[Dx&"VN wTfMY0EDD1OGwȯ6C̷e6/bm@`39! @HiXbZ() eN`$!&j;9 %= L:Z,@ 4QptެB˃NwB]d>+HƪNo{!hMS_)u7R=d޳fCti'\{,}SKsS Generic

    Generic

    List name* Insert the blocklist name
    Base Make a choice on the scroll list to select the department where the blocklist existes
    Type Make a choice on the scroll list if blocklists work when sending or receiving.
    Description Describe the use of the blocklist




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/blocklists/list_back.png0000644000175000017500000000153610437070613021722 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H About this document ...

    About this document ...

    BLOCKLIST ADMINISTRATION

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/blocklists/ blocklists.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/blocklists/index.html0000644000175000017500000000273410766256174021274 0ustar mikemike BLOCKLIST ADMINISTRATION

    BLOCKLIST ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/blocklists/node3.html0000644000175000017500000000227510766256174021175 0ustar mikemike Blocked numbers

    Blocked numbers

    The administrator must insert fax number in the bottom field. The fax number will be owned by the new blocklist. Use the Add and Delete buttons to create blocklists.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/faxreports/0000755000175000017500000000000011752422547017310 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/faxreports/labels.pl0000644000175000017500000000025010437070613021074 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/faxreports/node1.html0000644000175000017500000000241010766256174021206 0ustar mikemike Fax Reports

    Fax Reports



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/faxreports/WARNINGS0000644000175000017500000000025510766256174020472 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/faxreports/rocket.png0000644000175000017500000000147410437070613021303 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/faxreports/node2.html0000644000175000017500000000204010766256174021206 0ustar mikemike Filter

    Filter Image rocket



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/faxreports/faxreports.html0000644000175000017500000000263310766256174022404 0ustar mikemike ADDONS

    ADDONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/faxreports/index.html0000644000175000017500000000263310766256174021316 0ustar mikemike ADDONS

    ADDONS





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/faxreports/faxreports.css0000644000175000017500000000170010766256174022222 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN. { } #hue25 { color: #000000; } gosa-core-2.7.4/doc/core/en/html/faxreports/node3.html0000644000175000017500000000326010766256174021214 0ustar mikemike About this document ...

    About this document ...

    ADDONS

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/faxreports/ faxreports.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/departments/0000755000175000017500000000000011752422547017441 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/departments/list_root.png0000644000175000017500000000152410437070613022157 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/en/html/departments/search.png0000644000175000017500000000177710437070613021420 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/en/html/departments/departments.css0000644000175000017500000000242710766256174022513 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } #hue27 { color: #0000ff; } #hue30 { color: #000000; } #hue42 { color: #000000; } #hue44 { color: #000000; } #hue46 { color: #000000; } #hue82 { color: #000000; } #hue84 { color: #ff0000; } #hue85 { color: #ff0000; } #hue86 { color: #ff0000; } gosa-core-2.7.4/doc/core/en/html/departments/labels.pl0000644000175000017500000000025010437070613021225 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/departments/node1.html0000644000175000017500000000745010766256174021350 0ustar mikemike List of departments

    List of departments

    The administrator can create or modify a department or to access informations when clicking on the Departements button in the Administration menu on the left. The Department MANAGEMENT page is displayed.

    She is divided on two columns :

    - The first column is used to display the names of department,

    - The second column contains icons which are the actions you can execute on departments.

    - Those icons ( Image list_back, Image list_root, Image list_home ) are used to modify the display according to the department, the icons predominate other selections of display.


    It's from the Department Management page that the system administrator manage the list of deparments of the organization.

    It's possible to modify the diplay of departments by using the table called Filters Image rocket :

    • To search on names :

      - Click on the asterisk to show all departments;

      - Click on a letter to show all the departments starting with this letter;

      - Click on a number to show all departments starting with this number.

    • For a fast search Image search : fill the field by the name of the department searched and click on the Apply filter button.


    To create a department click on Image list_new_department.

    You will see tabs. The administrator uses tabs to configure the department.

    To save changes use the Save button, to come back without saving use the Cancel button.

    All the fields followed by an asterisk must be filled.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/departments/node4.html0000644000175000017500000000331410766256174021346 0ustar mikemike Location

    Location

    State Insert State wher is the department
    Location Insert the place where is the department
    Address Insert the address of department
    Phone Insert the central phone of the department
    Fax Intsert the central fax of the department




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/departments/WARNINGS0000644000175000017500000000025510766256174020623 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/departments/rocket.png0000644000175000017500000000147410437070613021434 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/departments/list_home.png0000644000175000017500000000154110437070613022123 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/en/html/departments/node2.html0000644000175000017500000000230310766256174021341 0ustar mikemike Generic

    Generic



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/departments/list_back.png0000644000175000017500000000153610437070613022077 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H References

    References

    The references show the existing relations between department.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/departments/departments.html0000644000175000017500000000304010766256174022657 0ustar mikemike DEPARTMENT ADMINISTRATION

    DEPARTMENT ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/departments/node6.html0000644000175000017500000000330710766256174021352 0ustar mikemike About this document ...

    About this document ...

    DEPARTMENT ADMINISTRATION

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/departments/ departments.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/departments/index.html0000644000175000017500000000304010766256174021440 0ustar mikemike DEPARTMENT ADMINISTRATION

    DEPARTMENT ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/departments/list_new_department.png0000644000175000017500000000131510437070613024206 0ustar mikemikePNG  IHDRabKGD pHYs  tIME $5)RZIDAT8˕]HSaxvvvΦDWQZ4}.++ꦺQ (Ƌ!U`AHPAA7C(̘4cHgtN.έz}W/Q#)+tAсZ5W<ƹ'uOB9MY[uL&E{(#A"qq43gkjS{U\B{L@=\Vƀ> &8v'=5^-MAAyYolad7v >!y H4! )g L$`CV Co"!pj06 Æ}|D Properties

    Properties

    Name of department* Insert the name of the department to be created
    Description* Insert a description, a commentary on the department
    Category  
    Base* Make your choice on the scroll list




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ogroups/0000755000175000017500000000000011752422547016611 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/ogroups/list_root.png0000644000175000017500000000152410437070613021327 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/en/html/ogroups/search.png0000644000175000017500000000177710437070613020570 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/en/html/ogroups/labels.pl0000644000175000017500000000025010437070613020375 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/ogroups/node1.html0000644000175000017500000000771510766256174020524 0ustar mikemike List of groups

    List of groups

    An object group is a heterogeneous group. It is the possibility for the administrator to create groups where objects are differents. It's allow a supple and more adapted management than classic groups.

    The administrator can add and configure Objects groups when clicking on the Objects groups in the Administration menu on the left. The Object group page is displayed.

    The page is devided on three columns :

    - the first column is used to display the list of objects groups,

    - the second column contains icons wich are shortcuts to the settings of objects groups,

    - the third column contains les icons which are actions you can execute on objects groups.

    Those icons ( Image list_back, Image list_root, Image list_home ) are used to modify the display according to the department, the icons predominate other selections of display.


    It's from the Objects groups that the administrator manage objects groups created for the organization.

    It's possible to modify the display of objects groups by using the table called Filters Image rocket.


    • To search on names :

      - Click on the asterisk to show all objects groups;

      - Click on a letter to show all the objects groups starting with this letter;

      - Click on a number to show all objects groups starting with this number.

    • To search on objects groups properties you must :

      - Check one or many propositions;

    • For a fast search Image search : fill the field by the name of the objects groups searched and click on the Apply filter button.


    To create, configure and modify a object group click on Image list_new_ogroup.

    You will see tabs. The administrator uses tabs to configure the objects group.

    To save changes use the Save button, to come back without saving use the Cancel button.


    All the fields followed by an asterisk must be filled.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ogroups/node4.html0000644000175000017500000000327210766256174020521 0ustar mikemike About this document ...

    About this document ...

    OBJECT GROUPS ADMINISTRATION

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/ogroups/ ogroups.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ogroups/WARNINGS0000644000175000017500000000025510766256174017773 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/ogroups/rocket.png0000644000175000017500000000147410437070613020604 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/ogroups/list_home.png0000644000175000017500000000154110437070613021273 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/en/html/ogroups/list_new_ogroup.png0000644000175000017500000000136210437070613022530 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "z?LIDAT8˵[H}Z˙+KtLT)JdBAQ{衇 %r./=tѢ*nQ.e-7󛻞"ߟ9gpwq`FktPĘHkTn&ً~Ђ"^x!RFq׋k򧀀}py Ŝcݥ<6% YIkuҼھQt2mΥˋJ$mn:_I$@5§0xYG )]o-k[`B)pLiK.]EY } zSa.d#`P`J 7 ƪK(ԮZ]V(>^Ǡ2 0jpYVNkS)c`n7?;-fAy x MU*ha"08_>(;NyL]: o/`{렭]_L<o&%Wv/M7" "-"re[UΩ*HwLy6%aH'# yTV;$ngY LMN)E[č[#$yIENDB`gosa-core-2.7.4/doc/core/en/html/ogroups/node2.html0000644000175000017500000000353710766256174020523 0ustar mikemike Generic

    Generic

    Group name* Insert the name of the group to be created
    Description Insert a description, a commentary on the group
    Base* Make your choice on the scroll list
    Member objects The list of members objects belonging to one object group. The Add button will show you the existing list of objects, use the Delete button to remove elements.




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ogroups/ogroups.html0000644000175000017500000000263510766256174021210 0ustar mikemike OBJECT GROUPS ADMINISTRATION

    OBJECT GROUPS ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ogroups/list_back.png0000644000175000017500000000153610437070613021247 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H OBJECT GROUPS ADMINISTRATION

    OBJECT GROUPS ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/ogroups/node3.html0000644000175000017500000000175410766256174020523 0ustar mikemike References

    References

    The references show the existing relations between objects.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/applications/0000755000175000017500000000000011752422547017601 5ustar mikemikegosa-core-2.7.4/doc/core/en/html/applications/list_root.png0000644000175000017500000000152410437070613022317 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/en/html/applications/search.png0000644000175000017500000000177710437070613021560 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/en/html/applications/applications.css0000644000175000017500000000202210766256174023002 0ustar mikemike/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */ .MATH { font-family: "Century Schoolbook", serif; } .MATH I { font-family: "Century Schoolbook", serif; font-style: italic } .BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold } /* implement both fixed-size and relative sizes */ SMALL.XTINY { font-size : xx-small } SMALL.TINY { font-size : x-small } SMALL.SCRIPTSIZE { font-size : smaller } SMALL.FOOTNOTESIZE { font-size : small } SMALL.SMALL { } BIG.LARGE { } BIG.XLARGE { font-size : large } BIG.XXLARGE { font-size : x-large } BIG.HUGE { font-size : larger } BIG.XHUGE { font-size : xx-large } /* heading styles */ H1 { } H2 { } H3 { } H4 { } H5 { } /* mathematics styles */ DIV.displaymath { } /* math displays */ TD.eqno { } /* equation-number cells */ /* document-specific styles come next */ DIV.navigation { } SPAN.textit { font-style: italic } SPAN.arabic { } SPAN.textbf { font-weight: bold } SPAN.textsf { font-style: italic } gosa-core-2.7.4/doc/core/en/html/applications/labels.pl0000644000175000017500000000025010437070613021365 0ustar mikemike# LaTeX2HTML 2002-2-1 (1.71) # Associate labels original text with physical files. 1; # LaTeX2HTML 2002-2-1 (1.71) # labels from external_latex_labels array. 1; gosa-core-2.7.4/doc/core/en/html/applications/node1.html0000644000175000017500000000752210766256174021510 0ustar mikemike List of applications

    List of applications

    The administrator can configure an application when clicking on the Applications button in the Administration menu on the left. The Application MANAGEMENT page is displayed.

    She is divided on two columns :

    - The first column is used to display the list of applications,

    - The second column contains icons which are the actions you can execute on applications.

    - Those icons ( Image list_back, Image list_root, Image list_home ) are used to modify the display according to the department, the icons predominate other selections of display.


    It's from the Application Management page that the system administrator manage the list of applications of the organization.

    It's possible to modify the display of applications by using the table called Filters Image rocket :

    • To search on names :

      - Click on the asterisk to show all applications;

      - Click on a letter to show all the applications starting with this letter;

      - Click on a number to show all applications starting with this number.

    • For a fast search Image search : fill the field by the name of the application searched and click on the Apply filter button.


    To configure an application, the administrator click on Image list_new_app.

    You will see tabs. The administrator uses tabs to configure the application.

    To save changes use the Save button, to come back without saving use the Cancel button.

    All the fields followed by an asterisk must be filled.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/applications/applications.html0000644000175000017500000000313410766256174023163 0ustar mikemike APPLICATIONS ADMINISTRATION

    APPLICATIONS ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/applications/node4.html0000644000175000017500000000171010766256174021504 0ustar mikemike Script

    Script

    ?




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/applications/WARNINGS0000644000175000017500000000025510766256174020763 0ustar mikemikeNo implementation found for style `fontenc' No implementation found for style `geometry' No implementation found for style `graphicx' There is no author for this document. gosa-core-2.7.4/doc/core/en/html/applications/rocket.png0000644000175000017500000000147410437070613021574 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/html/applications/list_home.png0000644000175000017500000000154110437070613022263 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/en/html/applications/node2.html0000644000175000017500000000463410766256174021512 0ustar mikemike Generic

    Generic

    Application name* Insert the name of the application
    Display name Display the name of the application
    Execute* Insert the name of the aplication to execute with his parameter
    Description Insert a description, a commentary on the application
    Base* Make your choice on the scroll list to select the department where the application exist
    Icon Select your picture in the arborescence of your system and then click on the Update button. The icon is linked at the application.



    Subsections

    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/applications/list_back.png0000644000175000017500000000153610437070613022237 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~H Options

    Options

    Variable Variable name
    Default value Default value associated to the variable


    Use the Add option button to add a new variable and the Remove button to delete a variable.



    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/applications/node6.html0000644000175000017500000000177310766256174021517 0ustar mikemike References

    References

    The references show the existing relations between applications.


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/applications/list_new_app.png0000644000175000017500000000143210437070613022763 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8ɅIDAT8ˍMhTWsL&M8h*Th w u*Rt"] U+"1V?(4񚙛3s=ŝHP|/sx ,qf v\>T>EY"ע~ h6[ZFU9Uis]cgo:o"56jމb _s`0`'wS/; l6C._]}P今}N9Tg9vi2ա]Gd6/^GwϗONh9Zک^x]lqG `3'(7ѬghIENDB`gosa-core-2.7.4/doc/core/en/html/applications/index.html0000644000175000017500000000313410766256174021604 0ustar mikemike APPLICATIONS ADMINISTRATION

    APPLICATIONS ADMINISTRATION





    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/applications/node7.html0000644000175000017500000000331510766256174021512 0ustar mikemike About this document ...

    About this document ...

    APPLICATIONS ADMINISTRATION

    This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

    Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
    Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

    The command line arguments were:
    latex2html -no_navigation -dir ../html/applications/ applications.tex

    The translation was initiated by Jan Wenzel on 2008-03-13


    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/html/applications/node3.html0000644000175000017500000000300310766256174021500 0ustar mikemike Options

    Options

    • Only executable for members

      Check if you want the application to be executed only by members of a same group

    • Replace user configuration on startup

      Reinstall the default configuration at each startup

    • Place an icon on members desktop

      Check if you want to make the icon appear on members desk

    • Place entry in members startmenu

      Create an entry for the application in the startmenu

    • Place entry in members launch bar

      Create an entry for the application in the launch bar




    Jan Wenzel 2008-03-13
    gosa-core-2.7.4/doc/core/en/lyx-source/0000755000175000017500000000000011752422550016253 5ustar mikemikegosa-core-2.7.4/doc/core/en/lyx-source/blocklists.lyx0000644000175000017500000001313010421074566021162 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold BLOCKLIST ADMINISTRATION \layout Section List of blocklists \layout Standard The administrator can configure a blocklist when clicking on the \series bold \color blue FAX Blocklists \series default \color default button in the \series bold Administration \series default menu on the left. The \family sans \color black Blocklist \shape smallcaps \emph on Management \family default \shape default \emph default \color default page is displayed. \layout Standard She is divided on two columns : \layout Standard - The first column is used to display the list of blocklist, \layout Standard - The second column contains icons which are the actions you can execute on blocklist. \layout Standard \added_space_bottom medskip - Those icons ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) are used to modify the display according to the department, the icons predominate other selections of display. \layout Standard It's from the \family sans Blocklist Management \family default \emph on \noun on \emph default \noun default page that the system administrator manage the list of blocklist of the organizat ion. \layout Standard It's possible to modify the display of blocklist by using the table called Filters \begin_inset Graphics filename images/rocket.png \end_inset : \layout Itemize \color black To search on names : \begin_deeper \layout Standard - Click on the asterisk to show all blocklists; \layout Standard \color black - Click on a letter to show all the blocklists starting with this letter; \layout Standard \color black - Click on a number to show all blocklists starting with this number. \end_deeper \layout Itemize For a fast search \begin_inset Graphics filename images/search.png \end_inset : fill the field by the name of the application searched and click on the \emph on Apply filter \emph default button. \layout Standard \added_space_top medskip To create and configure blocklists, the administrator click on \begin_inset Graphics filename images/list_new_blocklist.png \end_inset . \layout Standard The administrator uses tabs to configure the blocklist. \layout Standard To save changes use the \emph on Save \emph default button, to come back without saving use the \emph on Cancel \emph default button. \layout Standard All the fields followed by an asterisk must be filled. \layout Subsection \pagebreak_top Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard List \color red \color black name \color red * \end_inset \begin_inset Text \layout Standard Insert the blocklist name \end_inset \begin_inset Text \layout Standard Base \end_inset \begin_inset Text \layout Standard Make a choice on the scroll list to select the department where the blocklist existes \end_inset \begin_inset Text \layout Standard Type \end_inset \begin_inset Text \layout Standard Make a choice on the scroll list if blocklists work when sending or receiving. \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Describe the use of the blocklist \end_inset \end_inset \layout Subsection \added_space_top bigskip Blocked numbers \layout Standard The administrator must insert fax number in the bottom field. The fax number will be owned by the new blocklist. Use the \emph on Add \emph default and \emph on Delete \emph default buttons to create blocklists. \layout Subsection \added_space_top bigskip Information \layout Standard \the_end gosa-core-2.7.4/doc/core/en/lyx-source/ldapmanager.lyx0000644000175000017500000001234510423327742021272 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 1 0 8 -1 \end_bullet \bullet 2 0 8 -1 \end_bullet \bullet 3 0 8 4 \end_bullet \layout Title \series bold ADDONS \layout Section LDAP manager \layout Subsection Export \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Export single entry \end_inset \begin_inset Text \layout Standard Export a single entry of the ldap tree \end_inset \begin_inset Text \layout Standard Export complete LDIF for \end_inset \begin_inset Text \layout Standard Export the complete ldap tree in one ldif file or a selected department \end_inset \end_inset \layout Subsection \added_space_top medskip Excel Export \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Export single entry \end_inset \begin_inset Text \layout Standard Export a single entry of the ldap tree \end_inset \begin_inset Text \layout Standard Export complete XLS for \end_inset \begin_inset Text \layout Standard Export the complete ldap tree in one xls file or a selected department \end_inset \end_inset \layout Subsection \added_space_top medskip Import \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Import LDIF File \end_inset \begin_inset Text \layout Standard Import a ldif file in your ldap tree \end_inset \end_inset \layout Itemize \added_space_top smallskip Modify existing attributes : rewrite already existing attributes in the ldap tree \layout Itemize Overwrite existing entry : rewrite already existing entries in the ldap tree \layout Subsection \added_space_top medskip CSV Import \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Select CSV file to import \end_inset \begin_inset Text \layout Standard Select a correctly formated cvs file to import in your ldap tree \end_inset \begin_inset Text \layout Standard Select template \end_inset \begin_inset Text \layout Standard Select a GOsa template to make the match between your cvs file an your ldap tree \end_inset \end_inset \the_end gosa-core-2.7.4/doc/core/en/lyx-source/ogroups.lyx0000644000175000017500000001372710421074566020523 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold OBJECT GROUPS ADMINISTRATION \layout Section List of groups \layout Standard An object group is a heterogeneous group. It is the possibility for the administrator to create groups where objects are differents. It's allow a supple and more adapted management than classic groups. \layout Standard The administrator can add and configure Objects groups when clicking on the \series bold \color blue Objects groups \series default \color default in the \series bold Administration \series default menu on the left. The \family sans Object group \family default page is displayed. \layout Standard The page is devided on three columns : \layout Standard - the first column is used to display the list of objects groups, \layout Standard - the second column contains icons wich are shortcuts to the settings of objects groups, \layout Standard - the third column contains les icons which are actions you can execute on objects groups. \layout Standard Those icons ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) are used to modify the display according to the department, the icons predominate other selections of display. \layout Standard \added_space_top medskip It's from the \family sans Objects \family default \family sans groups \family default that the administrator manage objects groups created for the organization. \layout Standard \added_space_bottom medskip It's possible to modify the display of objects groups by using the table called Filters \begin_inset Graphics filename images/rocket.png \end_inset . \layout Itemize \color black To search on names : \begin_deeper \layout Standard - Click on the asterisk to show all objects groups; \layout Standard \color black - Click on a letter to show all the objects groups starting with this letter; \layout Standard \color black - Click on a number to show all objects groups starting with this number. \end_deeper \layout Itemize To search on objects groups properties you must : \begin_deeper \layout Standard - Check one or many propositions; \end_deeper \layout Itemize \added_space_bottom medskip For a fast search \begin_inset Graphics filename images/search.png \end_inset : fill the field by the name of the objects groups searched and click on the \emph on Apply filter \emph default button. \layout Standard To create, configure and modify a object group click on \begin_inset Graphics filename images/list_new_ogroup.png \end_inset . \layout Standard You will see tabs. The administrator uses tabs to configure the objects group. \layout Standard \added_space_bottom medskip To save changes use the \emph on Save \emph default button, to come back without saving use the \emph on Cancel \emph default button. \layout Standard All the fields followed by an asterisk must be filled. \layout Subsection \pagebreak_top Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Group \color red \color black name \color red * \end_inset \begin_inset Text \layout Standard Insert the name of the group to be created \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Insert a description, a commentary on the group \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list \end_inset \begin_inset Text \layout Standard Member objects \end_inset \begin_inset Text \layout Standard \color black The list of members objects belonging to one object group. \color default The \emph on Add \emph default button will show you the existing list of objects, use the \emph on Delete \emph default button to remove elements. \end_inset \end_inset \layout Subsection \added_space_top bigskip References \layout Standard The references show the existing relations between objects. \the_end gosa-core-2.7.4/doc/core/en/lyx-source/fonreports.lyx0000644000175000017500000000162310423327742021215 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 1 0 8 -1 \end_bullet \bullet 2 0 8 -1 \end_bullet \bullet 3 0 8 4 \end_bullet \layout Title \series bold ADDONS \layout Section Phone Reports \layout Subsection Filter \color black \begin_inset Graphics filename images/rocket.png \end_inset \the_end gosa-core-2.7.4/doc/core/en/lyx-source/faxreports.lyx0000644000175000017500000000162110423327742021207 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 1 0 8 -1 \end_bullet \bullet 2 0 8 -1 \end_bullet \bullet 3 0 8 4 \end_bullet \layout Title \series bold ADDONS \layout Section Fax Reports \layout Subsection Filter \color black \begin_inset Graphics filename images/rocket.png \end_inset \the_end gosa-core-2.7.4/doc/core/en/lyx-source/images/0000755000175000017500000000000011752422550017520 5ustar mikemikegosa-core-2.7.4/doc/core/en/lyx-source/images/select_new_component.png0000644000175000017500000000070410342116365024437 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 'QIDAT8˥1HBQdCA57Ec%M8DKFj)[l5&VA5$aCK.oZo٫|:^s^%"8kn'Qjȿ/^5<W Zg{>zQ.7S`gO\Q}dvt08"z Q^Xwn䡢\sX0n]F*#?6yT)p1A 0y(+ϯ 1L@O|`e}-) ilj,˒j" vv*_4 n8 +=uxR@+oN IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_root.png0000644000175000017500000000152410342116365022244 0ustar mikemikePNG  IHDRabKGD pHYs ?@"tIME )/ّVAIDATxڍMh\e~w~2m23tfhZJljqaAAB Yn.ܨUfB#BKZ*im2Vhb2i3sgr;E.zvLa`0C( XTqzZ+2j >EF(}_K"10N`·~P緌W (Lz*?tU/Jz `1s;~v@abFC(w /d.}|pR.^rߘ| 00rT*Vf\S*pZcI^⺍caC&*u,ȫpNz<h?[\.8;qe~ c.?!i~#ѸvܶRu8wAPbf:T ߧ)<2=fcHF;veG(j^KV6%QU>]51yAZg:i3t{ IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/search.png0000644000175000017500000000177710342116365021505 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,-ca !ZCD7/o0|z?f`bbd@Z" 3-ew$311bd4 X~e~#(è,%e^8v10@LxU331 01030KATAJG7~7?!g`eedbdOC+g0 Xsc/ùPf&_?~|􅁕bFVfο2&Fa@?/>~+? @W@1uw~303U?dbY>߁|G_?2 y12Fj:r3YO s,g$'[O0 ,./(.Ljq L :2e mV}_AѬs#7 ߮c#R"!C4^@=` ^n^2|zAK?ʡA: l:~ɋ @oDGP ~10(by}֭ŕd-4,x>Rƫ{a0fXX8xy_AN/>y-~iy }wswԯ@L Dv6)n\w^[&ayba 2~oeW*![ CaP2IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/forward.png0000644000175000017500000000132610342116365021672 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<hIDATxb?% (R7oX>>zxgQ)W'i P] '+; ,--mv/.@! e< lL3ncPf@ 022(/nf&@'J}ΘyS#x\l@1T pS]ڝ7 ?~c7 p#s >냅@1*C??2J~j 4 KzDka. o)_m5!.'×@X_@`Wp22oo}f߿32ܹ ;$bf_W]H_ /rOb/W՞0 eb b V x~ђ=vcҜsb~@ Xwt"we` YzJ o߾1xzzfg D=T3 @` 455@,q Vf@F!ϟ?G5 p`/ *IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/blocklists.png0000644000175000017500000001030710342116365022376 0ustar mikemikePNG  IHDR00WgAMAܲ~IDATxyxT?Y2$dK, J"(X˥O`j.PE nEvňlaHBI2If2l3b{>}sΜ3[?>jbkf@}W|'~Oz/R7mU} Wz-JOH֐)p]JYܻt߳ e{>\*.գhfՀo:98nXRWT|prK* eXܹwʲokkN=n΁@E|D4$HJw=dQSϗ[jI7Ǟo:~孞m W^(nZeH[,RBCH c"? %$NX\1{k_=?ּ/y|o89)1ĸt9 "6͑#=#&*'P=Z97ݤE[ZOw+ c@޵l7&.w2Az/LqwuU $ww|g*MB*O7AEӊ]V{hnݩ}fȏڟӷ,3@@c4h5  J,G˝X HEQՈ]ˍ 'kO%f_=2f1w4r;;Vo=[Pgj9Hy2AV lMLI)d ?UBbsKyW]˙~[! ֵ\ e{[R2-Odr 1Ut/@(c(a*Rr3\S2⻅%^8ps+/3֪;)T]ڑIch魳7s{ʚ`5 he1c 0jw&df TfOޛslDqu֑Z/lo- iCfcwlO?#;ęU@VA: * BC 8>1繇 L.ę`bAΙ]t+6F-礢جz﮲>ь+ڷa?->!`I~X'-Pp]_[b\qC>?c>/7i GRvtIaNѢ)Lл 68ز`GLJ$enc3:5]7D8m:+ũ%g,&kJ?Y&Apƃ##_dA):Ņ 9DД('w>L.O<=ʪF~=H^Y=TUG. @[sMN e Ϟ7}^pl3^G*A[S v F?6,AƏ&RNY~olfǡp]-љsgr ܮM;o41`8ݤ>ƞA r07N7FQp /J=m?W.5S6}tb5(\$)XcD7$$.yhwlYbUS8N&O NYy#owsG `9׏uߛo ]F$p%;| ?!qh-^l̝3Ma2IHh?Vsؿ/o6~*bu d{_^).G Q6~!S-Ji 2rwbV*C+y[0}%o i0F I7v46{O|bb?`J܅-yo-1&"GQ|AY,x %"TJ' шa#[}߃lm/{ fJw= y? ZS@7R9# cY`3G;{ .ָITF4o!5 h lcUNxg\`d --_Z!3&i@\>?}*OkS,6UѮ9B8Uj 1>PX37ZHK1'%XATŀm*UDyH J= P}?rHrHƋk SJ`er=:GeQ~1FFH0kSu@YsJMaXt!m`¤8/Ʊ&Li/\ {@3:WٸwA䜫JF c7K$^vݨ;֮Z=MLoaѳ>~"',e:.Ԁs*{ҊxX:( @B<Cځ~5AB^zz"wM7>p'IZ}dG"1q,dM~OTD5#]v wO{n 7F C@ \qCKJF5 Ec*vΟ]*.sE=Ź&Ӊd{ {@BN9?֮|^$Ǝ"T&Na\JK).N2i? я#SD:ȹ>ٖ+]yվݭ͓HHkW#6JƻIdxp6tu\vFtRR"mpG/12N ywPjBg7~P][Wbg RҒظKSS#3il.SՏ6RS~i5fHHS^Z[pϽ2¿`{ׄ)rΣzQī5IJ: ϛu]/u}`t]:o.:pM7/~ң~`Q|ՒbM&[۝Bh8GL=1@ =Z@ul-PfR{/>tev֋y`~~pv.o.W=buǺt.)o&(iIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/dtree.png0000644000175000017500000000126610342116365021334 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<HIDATxb?-@XM{69 ~ 4 R? ~}Z@, Cݍ~b`O ߡ ~= 4?ĥ'а_ 47? FbC(@,|%@ FfFпȂ@/,^@, r gϞ͐J0r@ 1}GTP Xgr)VC!|bt s- _8 lA gd-q0  6y\BL90ATM#>CA F. E@ dM`_Ѵ%!f` ,@l YJgj;@1Ҫ &;QL! <IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/crossref.png0000644000175000017500000000116410342116365022054 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME 8veIDATx͒;hQ{wfgggfwnVP4•DETXXXM"FERX(!ME K3{bIWuNq>klDe*PXH0ۺFďiPƢjZ(y3Cҹ\Ϸԛ!M L6/16mHPl ,]<]mܙ-^f<]~ 2q0vrB9ZhCW) E̬~z.}cLQׂ`gu,!ӛ1b]lP4lh;3N= )znldz=t@)!{ `ߎZº,*t#*AHā-eEWpߚ?/-p!;(ׅ=NߦddɈŤyו(:@YyǨ_ȀHta\msmQLU4*ft?͈Ȇ,ޮU}wIMZa) ! 7jZH®]4!!MseWP6 !m:@!&rNy=tnL@Wlv gԎr`olwg=fR"TA;~ "؅DŽC[9F6o|YNӗ~#q=*Crc z#@q\ضy=x/ gO;(mh2/QG.䄵ܪYuCapb1Ñ%@ZMm-vHcn >@1;zh#thA &}N]--ul©zRH\O2bƃYr5^Gk2B {\up@nMHz .e)i5AcI@ G!h\/ sž7H"aT'P8RFZtlt.Isf/\'M"BH5hK@I\GLޅx \W)gA9R H2#htQVصHY'2ƪa2Di@dZl4H7J SRS]/it9AJAR@RBHHD!HVj%E.(nP=6$_Epyn> nq=%c&# FL(Ю@p #px@*ANG&NI(w厠8sg3i7 eFd%@HEsh`w&=%"GapD?tl*9-_C&B|% e%4T]?OY(ZW] -x(>@EWs*-bMP#B2BbA(iOJJP0`98Љ\zo_/疇yi^.LN*syKc'U2ߒ*suU $0 (iȧ?tmZOIc "eAqMt>};'7z(b2+Qz[̻dHPJ dwF q~a4HFmDZ]8Dp l9l.dV0On3A/OۦutnGd(?x H~ $R@ rRЯ}RRy5IWF@֭Z-^LY/5P..Y;[?ӿ @nXͨ5*$f'q4xēHZ;PTJ-d5t9Jp5BP~ 2EZf}u )OHpܜjsUk_*W'Hy4^%2iiN%15nN6~gy^ݛao otێ-(*Dy xJpvyq/_.߉l%Ab22oj4dmD<)$:y98AUe6j( )m`Na60@|ɞgʐQdPe a.rU B$=X3VuA]b (?-f .0/ٸ3}iݑ,,pla3Qhc\cLz# D>}L'm6g_H:bk?ҋY=W7,Zrii2$ݐ('`7U@[y0R/0>yi Օؐϱ [\@RbB)tg+_1ge;%#WB啐pS90}zdE>NHtvMT,>Dž#СY tG6ⱕ!~jRpu3Ǟ|5GD=7eމ*\qR8Uʑ8I0I̱ Rń{< 8kG 1 ҧ K5R}\6Oq.~# ^a1O؋Jt͡/ #f8 Rܶ|3o.ܷX/]^۳{Ov}hG5F>zw;7Xm}&ٌ9g&Ln&E k' ƏekswЙގ<h9IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/sort_up.png0000644000175000017500000000026010342116365021715 0ustar mikemikePNG  IHDRB%}bKGD pHYs  ~tIME (DK=IDATxm1 !'yLj /Y9n Q}l2iD1:/RW&IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/tree.png0000644000175000017500000000157610342116365021174 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbmKXϯ a/o@_3? `~b3Pb'_>OF210~2Do !ߪ< A y>30g`Hߠ4 4&). 5 z _e8+fM￿ g`ge`fb VX2 ,o00|{ 4Ῐ?.?@X50g  h 33 26`f/k tv2 XB33ܻwaҥ ?d00a0f03K jz/0&Ac  ...@ \ np10p 4?ff@|?!N}|@, :k  Q @glf1 a`ߜ0p^pWH蒯`/0V@0ϟ0zׯ B o2z@  `aXŠo`Lt ` v?8P7c&'P#01eD`+3#@>ϓ`noP_o߁n njR@0*k2IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/fullfolder.png0000644000175000017500000000111310342116365022356 0ustar mikemikePNG  IHDRagAMA7IDATx?hAs3g!(F8 ڤT L!_aB.XXXV\"1] [E"^uKw heݹ}gr o̼}3o"ƕ'D)@x~G?̮K`E#;6#_sc2JT+(P(br߶3Rpc/hkPoQA~cXgZG6ynz;[Bpő(\{z;YҬǮguZ<8.ؙvwQO-5 4m&&&bLMo h-H *rRDwH k~A\}0Rf)TUrw<  Ww2V*\ץ x=,~C2VaTC]-1hIRd26fP?,//7 "KKVVVwrqD"UCw!R2t=+33/ikv H61]RIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_phone.png0000644000175000017500000000142010342116365022671 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/group.png0000644000175000017500000001020010342116365021351 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbdH1a! z1 @?Ͽ 7>`X 2?bSkZ$44%Ye`xts>~f`xѧ_3to{0h|y h3Cm\尪#s[Nar (p';_"聋 @Üg0ƺ>pr` a8P_АORDx&2H_?1[p~&d}C`a@$GF?Pzd`````G`2 L}ga^ &+31!n~~I5c6gw1#ÝK= S!a"P"[A*YU᫃ O0; /Í=/E2jOjdxv:S 1!d+rry P

    003@\'08 @!y]9dЏ/Njb C/ ˁR`bi8Ġİ_)Y~X=[HX/ \fti/!1w<9! X@>e`^63xqޮW s2HZ292<=phm// b`O&vX=pwV6N33yotOV3p31(*Y=@,|fˣ b ?ax|- B R%6 >?&wWo~0<}݁> n <\~{/xmag\@ h/1à cA5A#Zq ۅ3Ny LL|uL7P⶗'@@_ _N`~pg"iƠ p߁Ic l ~n ~AH wH{`T DlHrǿlf`x~_A'(fjׯDA<%K|cycPAޠ ?z~e:f`KXX*[)1(3pCkӟ ;"(ԾK!1y :AWO3°Z|~6 XW14KNr(Yaq7HȉHO݃ҏtaؿ|Õwac[uXDyDvnk@ _JA E bz ֥ F4nNbX,*/A_2@4S@X'r1xK1(ZCP{t Ӟ~bM Cs X,#f2&7ɠ4q- { uABɍ!T[DٔALՔAbG_!~S /d,ݮF=(AK%~"!I@/.>֯Xf~6ÿ_oݥ@ \ O=,'`/`T dc8`ygt[-qO Т?Xy׀!BA)/_zs;%N2>ʏ7ڦA+<@ƅ@+H"C#+oG?ypLG1h-%Iq'qIm:k)^~V}y0o|Y%`  )*\Ќ@Y`Wa+TwU9^L!ט`0h#MߞL<`Z@(yx$%}[.s O|ax j520P|{19rI/^e` 륓_}8b$ g?0K X-:^`Z%Kvx/}f`'ϐI#~hnz A3OduĈ-䁾:r<wi)+ {z}vօ1(1_ֽ=b`[UP| ,zedxY"YJAﻻ QgxxhJ00䮇?`ĂtIG_; PݏD; ODIǙ .3e5j {1=&aWQd}MA\<  P (yם;c1 O.0<4;;P e$a뿖 P;AU  @ ߿ G ,726x2\ I Z h 36i~7 ,6001e8P ")8Ubp3bЇ'@Vzҋ(p1c@ D[*0sR~VppCv,@{ F,a/FX運)`lfI5SVIv8#_XP?P?zSZns@)$ Q!!~q]v; ?3hĆu:cݾkx$BWPV W|u/@+2p }k?2yn2&K?H ) #30I # # ?PZ0C`ZA @_uA : sB¡@i;j!@0@uG1c5-WG?@M8̀0ɫkYra4,`!H(`PA7J,' IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/mailto.png0000644000175000017500000000126410342116365021514 0ustar mikemikePNG  IHDRZgAMA abKGD pHYs  tIME,2=p1IDATxݒKTQ=׹Xf-\-+IJ5@h:h.\MBB eXY4`5 )u{gs[\0AAw8>s࿕~/w90mPHPenXnhXn˵m? $HQ&_E^QPB)r \P60o(۴ȁ cãV>솨Cl9wFiiO+:ya~f6hG}cdr!5Uԟ8 Q*A| j`1B'#>tfx_W^i!0pU!D1H96Y˲I^5f&^]'\#jk{Cʟ&6=RXI$AWV}ײ@J4]~Snw Ḻ1I~Cp% P.ҥ2BG_6MN6Q(,πJ &FLNmavbuAC08ğʹ;{3[Ud?7 #o*IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/false.png0000644000175000017500000000135110342116365021316 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/proxy.png0000644000175000017500000001215310342116365021407 0ustar mikemikePNG  IHDR00WgAMAOX2tEXtSoftwareAdobe ImageReadyqe<IDATxb?P$FPOڏw)-n+ïO:gXDplBf}:* `d岝M_ɑl) B \ , _cxáM'NJ6~>yO@/b C!CL#-6Q x 0ٸ1023H 2D1|? ̌~Ձ/^207 2180ܺ~eY;5=@`dg#PX=0?@?3`+"g/1|Lf~1_ &*@@v $|w-0@Qr`GJ3ܯ \$#+عX5~qP^~`F?` 4,XxN-+12@"+'?/'~}a&!)j #Po fl>o?LLez !`l XeQX)a(>&vn ĵ[n΂1!RHKi-| `˨5b%=wJ>Z?*#$ .7G"};b(b{t}f9>KjU`q :klHAA\6iDKfΐ3Nڏ=Ϣ=>ǽ-#>󆖔9tP^#: 55ԨD6ѣH@Ɏ81,*^ $.t TQTKPӔ?twן0s 0p3Ȉ 1h*(0(J2Hr2hBۧϟ>+?uI`¯߿@٘M60p1  Yc/ ,Nc*Q,JXr53E~1HeP /ZaxÓgO^| L hPcp"Oza@ ߁Z\|@ 1@pkb6`!'A "F Ofen bBt$2H ЧO2x >fgE >\A% =@'I +1rp 30p[ 8?^3( 1?dË޿K˥) PR@,l|c{.*J9,vcXr}+sn{;,Bul ,:h 1} 칁 I`gcetP@&=V]$@' yf <;#8Av"#,HXY ,!3XeaSba%?`-u;Z ҿ@L| <<ܭ,,lf~[@g00K !DVv49~}Z@V M+f`oSO F\\)ї(mA|P LԼ,׸8~df`+3 G`-@g6;>)y+]fe 0@1qrM.anN&.N㿾;&/4ԧz4 RZ >b`y سg`gX13;:c`X_;6?x9yoM3y d{;0?"1.!L OAZ>?PWX"vӻO*磬cāe:_Nds~ a{1'ƕRK>bT l'80C[3LO$%,Ʌ2zhy :.?|z}XٽM+ Mz_rmr3@kAgۅدΘ! LB҂ 2 B2P&7`X2/?Ϗ?2<;z@aۗw (8= y)##5)TUT5o~ʚ sVhVJλ%W\Cng|bf`!i`^8-o_:^ ''jkPlH2& qy)))n`ҥKgϞ@¾[Pz?wx%dߧo8ٙX ?|ëw_><@ G~edg@0Ԯ4 e 0[`Gׯ_߯Y… s;r'@1†ׁH01"u8AZGFe&~/Pn៬:Lzb@;I*(*333J#D4񬬨߸iݻvF &@!HRa6h>aU@5 #8@ LB*晲̲*L\bo^z-x4;?Ho P=ȁR RR`_?]xݻw( +++{Vs?^+|u2(2=3ïj[Ґn# [pNq/ʪ8W۷o;{  a \ 9_l# *kg4Ī ɊYդٕ 9N*g Xax!Ð|DGAZ`鳧 gΞyy;.\ > O]Bl;P,Kǯ 0//) 셩ʳ 2Ϛ-ePnee8p<.[~0\7aД Gy|]`ih0h0^fOO2awc`yA%, lt !f?ny;g4XC}#@|H# )U,ͪdM,i;/g2:py `_s `} 6gRa> u3hJ9f9 B HR=`JF Y\fP6jb4 ß߯> `[jn_ e`f~ _ hI %"%@aݴ } &~, b" ֿ`8(ABy'-e`wT>'G''>2\=  r/@EOh E#@&~{pNG=vIk3fjdebbcvÅ~ .ic"͎T<|;hJz#Dy ǏSnXm/ р L |.ݼp?Ϙf|dxb?AEy;AR 4D@C773H1(s1hˉ2l?%4Aeǟ*&!_2n|1_ePy gh !%A H*_н O2< Ѥ$yF[߼~fy 3.A Z\bXRM>$b$uDhh!v‹ 7=!>B0 %t;wOH %T?}>0}) Bܷt/Iz4ͱ_oPGO8ds1_ᰒ(tӿ⅚/H;?Vx FrۀZʇڇ8̀?P;7Q*-r J6G7YIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_printer.png0000644000175000017500000000124610342116365023251 0ustar mikemikePNG  IHDRagAMA7]IDATxRMOQ=o aB3M)mb V t¿nK Y!a 4b hCie>ޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/fax.png0000644000175000017500000000643010342116365021005 0ustar mikemikePNG  IHDR00WgAMA7 IDATx_\}?ݙݙװ ^c~VB!R )THyCH'$Cy j"Q)) Dxh0nD212Fwwwvf?>̜;]i~ў{s~y㮻[)e+I$ap'ajYʾ?߮gm6MzmY@F']tu7{$I!D^fsI)=$I"RTY0HdC7:׳ xꩧ]׿mV^JR2557.\f:7`Ox֭#[l!ΩE)wO;R \J ryiG5о7d4QLL;Z̠ SJr%,p]7v]!RJ(J钥F}\.3::JIJ,LƠz}zk`Y 霞&/]<ȿ?ӻ-kz/<N3g|;>0 & 2Z1dA/s[׆ih4J Kk=y^>u]vűcXXXO#iZ5x$ C@aD^c"!eq^ŋ+-[n*/4M(Bc`!ML#mHሀ-%ܽn `޽W_};V%H9P("IΞ=rrj-r֠&?P\oe[cH$3'g⡇j:{l`0#8t( (0 ŕPk']G2C wwݏzDR.n!-_y8###Hb066ĭ:Unϩ, R 8y 2\.buu)Mw)q\:;ڶ.F|IB${DHTrIJ"aĎiE1?ƒC˘b/}J 2 a:NjbޡJGRȢұIL=RIJ`[s6R ۶cAheRP~n0*UIB:̧ۣPR(c8FJu7,<ö4aR(PJAP,z mCS(k"]t::P>3@fnnrLRj/dttnŬz뭌kf}N-ABIyul& C `dd50q0\]]… m:fzcGAg,|>z`ztl6T*DQĶmhZ,,,P. )%Be HiUF @}= tٻQ}odcBP(h6($IBXdyy9ufI\>NDJIZMy\|bطn/X)Ȃr R,--177E>KKKX$Iˬ]^!`)}8K>j Z!buu(t:,,,pwP.i6?Q&''Y\\sة)vMOT*"nb.RA %HiJ얆RvW>mSh4inrK4MlN3fee v˲67) t-I:l⯭Q9x\NbD~{cydHt:044DXL"PV !QtjTU֮R:=}zВ$ g7߹y_-yC|r~~8\(Rmn àhPTIw0 \exxp]7^{qv_J8t:Ző•V}Oо} =0jÉvjE˲c~~ͫjbYR)ͼApi>ZYYn333s ,8ޙvargΜaϞ=yoQ*4~D>l4e'~SUexUQ8NJ m;I`uEfggO?00` EVv2B={044Dbnn{6(ϓ*JyW7%WYykfW_}zzzzm XsssE 022=܃yaۙ87ߌmݣ]r5ޮ%׮]īuZApSx_ ,+ٵkOǘfEQZ⎏S*X^^^!Ju[afꄚ>Vi6)t:u?̹s7G`V+ _?|orvQnYXX`qqRDTB)KW*f8{twwyn/40:Yz}o#0q _W" CСC+خ.ҭo@F9@^ۘS2IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_new_user.png0000644000175000017500000000142410342116365023107 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "Ω2IDAT8ˍKHT{XfYkT{HaPTPAI )*-Z1l A$A5BT"hX#fFf²(:&<noŏEfmƿ[I0bKt0-t6"G){0|砨8h[א[Z?j=IK4nK{̖="B|nקis3VP>بH$r:bqih !"~Z.I !J|eRBNA(i{ @](dw=/ݼ2LCAW=w*Մi 4*A{p)|nu"Tsht <®) aIo喭=B~@`ݾէw:uB33QĞsȩk2WHKPո(ɺm%+ z=h*x“mҎQ t~ХSIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/log_info.png0000644000175000017500000000165010342116365022022 0ustar mikemikePNG  IHDRabKGD pHYs  d_tIME %9tEXtCommentCreated with The GIMPd%n IDATxeMh\eΝ;3ɤI̤FMZSVP'J PӅ.EnE•l "]KR`6`(EZCM:!3M&sHZ=r8G|12~ܖ@-J+կݱ7}{^l7n}׏va.j$8e& _>nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R%o.aY_?O3~׋ ?b.m3sۅH8 (r=9 1{c}m# gO0| '##'?, ~g/txs+[t7+3 bgb&dO  @}KKOg dPa:?=o3{ /^hcsܰCopRa _~a *0AgZߗa刺 e!ÿ'*0Ruޗ\B L 10䙁1t<01ӿJ^];,[@7а ~C_'~01231< >20vɆ+;+3/1K >2 y9~h ,/,gTV`?Wf\ "o .8lF8 ;&^ b | 33 ??s|>3|`d\1p210{PgJ@32|cK;~M@p Un8@Gx3 _y'@0mc8]ANVAZ30l0|pؔA[N_'>vf6`^83f'×_^IoyX to'(J_ /`2<@X0×L b\Pe~=?'_W>3\|χ?0>0gw }>>QWBVNzvQXPO`b`@IaArׯ>3_!++a % *l `,y=r ?ߜ /SMN.=uF_ B@'= zx?@_?~C@3ë rb @c̀z~=~XIKp p ?2k001|'4ShYcy.(~U.@x=z=qʸCX> ??l$ & ?H /_~0SV֯ "|_} #OY2H iF߭g7ÛORGްH\%@g Q+X&1[x/!L\i4B nܸh?o}ms {7G 8&ŧj0SٮPS~>6$pl 2 8+TYiN/&ܤsraG"M T3T|dy*E`ivvv KUr&"R|y6P!VƆTYWԀm%Ns )9tvp7(P vv)#02H{cR?X@&P?(to> /r9@恓3"e5*0u&, ?;?accgxSظg|v䕗/ i s>_X !;1$aƿ?W^yĀp](04ZZӸxUWϠ b{-/y@Bƛˏ!JŒOtlZLeR_MqN.GX)wԭŠP0Ge(NɐҴY[yB&`fc`o_+%`+Bp,2/45`\qr2}LLس_! )X?3w5N` 0ՌL`{@{p}$HTAH+P^db7C/88ٹ~?/]/*@1sW>9-% ",~0/Wυ.ܶdcH @, l\ ğߠ?8ɀ  ! G]o`̟AI?ЮR 9Kd1f,4 X3}kw s~fxF䅗֫`%LR@65>`-'0Jq3z˧_4 0LLbeXL&8cT< ޿60D1l]{AO@}eP [ RbG?  s0y\cd?d?'@E,u@_pP0ZA4`z 0:; +ã;ٿ 00 !56IgϞ3dz0 ,mlX<€[쉠d{cCA;oPd֠l@ Ѵ~0<:>›a``6Xv2T#t=@zddrry`fР^< 'd26pwo2U06@e>}Y四9h F76 DӤ\Ǯ1|:<$R:B "z@ZR!ԝԁg4zٓ'ai`:Z h0r1S{sR BAv3| \_ذ#: C' ~ k׮Jb,o]}t_p i|nhޡ-ӿLTJ1܎gD4 q<,LP@D߼yWP?`޹l43@8&ނ;wH(xP ݏ+HAW Ġ)XP* Sؙ>sPfމ0G: :RA1hX4  @GG90[ 3b0oB|o&έ[  9Da~B@ <gw CCpGTH3< vo?lr|au$ s4L=( (}  `V=#G>GACV9>?+!9rx>0Ք g0|~R??0ǃA@3 3HI?0 N@̜ ;|'7`t" r,3`& BZ569@KB)_&DMl,yCTq420<ۻOIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_server.png0000644000175000017500000000155710342116365023101 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% X.?0Dgïen|%20}Çocg8wn@d`óg?'h: ncSAQUAXVJ^a߿uA@5HPZCK_NAw?b󛁁Ve Xxygij%++ 01332* $?Al VRL[N=߿U"//&U@P/a X@/߲ _0\u( ff!,@< >@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/ftp.png0000644000175000017500000001041510342116365021016 0ustar mikemikePNG  IHDR00WgAMAܲIDATxit\y޹"͌4]%Y-/n@L8RC\H!$MЖ&pچ)!-@@lcl!+-o,kf$>w+&kS <<3gg}?ɟa,ZvwMpy2u-0M@Y7dfKV8z,l?v9%g:xT0Z+ 7 `)#$:BϱYX7$uEc$Fw=\2Cs,,Z}K"mN6;{pK.w|oѫme ђryH]`XX`Xe,eE*~ ۶Hg 6t`ʲy5\r~=ya;oH+|%uw. Cihߣ\d 7IPH;j`](co㇯$H"O28'O0H1:$Q\Tmvl!TRV ln)DK~@uO~iխ~ť.E]'lj##0tu I-oKӴR,fJ09p(a$RYdؖYTH]{І*VUW|}}9eW--N, T1IГ*0Ac@I$ν8,lFl!W]@Waa& lZ"@zvC h:_ai" x';MU{ F6FUI!#6yIFFdzDzd~ RDqBab HH"FtDQD$I RYx9P >kv0MWxʸT!C~…H .j\{>t:>8霅a:hIp'bE\3w {i?KIITFxw<[p뀯v+j dY7^2-7ڎsF6ظP$r΂zA5Xb}}<:: EmoF`bө"0ŶA?p/H<멫(*Ji( 7+tTG%*=<9Ka{{E&Z B G֔05BsK+%bZ6{a[m>(gUre"+{<2fͬ#3ٺ㈓X{jղo^GEfv?fݎ$Bi |'1Y*a;"pJ̝ݎhXtF'7ZZ;pApvzؼ(?"]'clzSlvDMkyzVZm.[䥱Z摗KC8Nd=-έ"I"=}#׏2VD48mC7(* 9dͺv1oRA:g,)yշ;{ͻ#3&2~?p^y'di\e4#s`ٮƓL '* "yDTCEyk`0a!A8u"sӕ{,9經;I}q DEy)m{ˍxBo;{Sss)Eh0R/duߝa|,:"#O`ۘ6Wd2ּ_nõyLҡxKp]1xn;w! y|׮$ZD|\מ|Y~[~cͱ/&xvLmJSYdi7ũ/?=#nc,O}Un:]E$m?d.zzWܥ1L3gнgqһJǴ~ٳvħrdʪHH)-V` !򋭣";m' >u#*S=KƧ~I Y-wֿH+KG$L rHb<;G;_#@Lg|Gwll;X|I?сxϖm#,-kjj<55eCGBS,@U tzOv{:Z׀$RgnA\wo㲒_x#}SC)Ѣ蔆]0gS|>P7t-Nw?su#w۶xǀu>T~ ki{2^@ JZ6 ),54&Y% 1Θ|T$oTyIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/dns.png0000644000175000017500000001120310342116365021005 0ustar mikemikePNG  IHDR00WgAMA7:IDATx͚y]W}?yzƞͳd{c'N␅JV (BZHPhURJ+$(P D)I.2ǞqƳo{gb=]{;o!T]]K0t(wcL7D:SRx̞ 7Km:͟R;{v ;;nou%ւ.rcj׮T7K(chBogQC?j}]8G ф#Zk-^ԙ ..pf3} }Vȿcl._ZkZrh Rf%/mT劲Fx(e?M vx޲ S~}OAKsbR9D[ R\G8G:! }P^0×~g>y+?{H=y|>CPP Bc@m,6#k0bŘ9 h@O+212_e-@ݞ:ɏgrxd M1Q0t[1PhSINzi47а|u3tf&/Gk݁] ? V.[R(z6qhVۛ0ւon!`P,\ǥ k-劊ظب4yvlfip뭰QsgMu.,g Ez>X\<}[45&QJGnek-վm 2h%4-kcQ!+mk}s W(ؖr5 BAұ#,jGPFJQSz$$Dk,hM*azƮde-["(+kߦ0 aKl;ZGX&[(^^drr%KPPl2BHˢZ)RH'Ifu]R JڰV@JAwނl|?]DVm2 uP02B!(S*fXbz~wpDRԈs^)@B Fna5[u"% o?t^sK{})ǡ]=\!q! a C҆j W80EFx:R[y:RH$:J^bna.$(\XL3T&7 w<|p;҉pkk3qxo/.k Ja:CƲ026@o+=M I?vnL--̈́R,^z`YKSC=F'e)W6lno#Uc@+r[ ߢTVl W\_ _ymI,dFzB`,(q`bz?:ljdq{6sK&(E+M1({>³i[knLqmʀdbvez;(WtFiE+KFpvd>s>&fH5s~8;2wb!ܷ1 }1qL|BrEE~]/H2Āk}֖0ԔC#%/Yb@}wA9dy5Oorc,GoJeōS9ۆlđ /Y..Q,Vέ \iRQ H)YXoc1la.$9}mJEHF `k  G"$qZ37tgjۅRXc5!GՖ7PR5P*D.*ˏN*Rm)viԀa6-nJz6]*vt/ [8 )Tt d8!LH ]WLUhQIݮ$DMӷM QW[un!Z֔e ސFڨ]w8Apq\Xr9T*qE `׮]311hL]]a̹sbj1&ڵ(Zc]!*^%r9֌0 }͛7S,IR444eڨ^vڅ1QLGG}}}aHss3$I|g2??ر={P*(˄ac pClm@ p`~a?~d2֚L&Cgg'dX/2T#GŖ-[6|pΝĚUJL&I$a L!t:vZpwq|ߧq顩)^AT'>R u57p >?;;ˍ7ضm{/aN%NT*rwrCyH))dY&&&طo.]"+ޢaee8VWW) BEx饗A:;;yG8uL&V`3֏8x8H)֒H$F8<݄a"bL I$l߾׍r؅R8q\.g|>ٺu+O= T B.Qbn䡇5" CmF.nG9s ¥iN8?{n/HD/yh PK\y˜>}:LuILMM.|/ƵZ<:uuu,//3:: 311~3Rsssr9~i8k׮/8N\&G{n߾k-/)e}q$H$bk[HJ%_)%J) }YAT*8^kR*>bرcRٳg|r7k}`W U;e7Ѕ_zvOg2kTY~ϙ j)GskhAIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/editcopy.png0000644000175000017500000000141110342116365022041 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb}/>>nKK=;QQYp*߿^c ~e`x 00)me +ŕ? @5?a4 P ۷X!!Nׯ?0|6?~ xo&$  `VIIQ9..B0@ .. --4 X@l 0@1"_Nl`W߁~ ??`0?`z0b@y|XﺺNJʰ7,`q!#@9Y3f at2H߿62 A^ @(061+0m$sF7@ ٢,ˠNkdeeſ@X&8@ 'a` c8z<4]y v˗ blIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/empty.png0000644000175000017500000000025610342116365021365 0ustar mikemikePNG  IHDRabKGD pHYs  tIME ( "ytEXtCommentCreated with The GIMPd%nIDATxc``E,IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_application.png0000644000175000017500000000167710342116365024101 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<QIDATxb," 3ī }g`?f` C13+9?in6@_~20F&`dbb4f@8?f2@%cx beh<c` 7; 7H#? <\, ?32|ׇo <̜|   #>?='u }Z P xw~5H'zo`ΛyB@ ʠ?;;'`` , ܜ b l@oq880|AoF>cʛ?^z'0j}}a`3j &PD3B4mTG/gغË?5430,ef`H 10@ K10$q1~~4?+@bdk ?ΑCD%.Ϡ &Fhx-zk @La^1226ظXq=k<@ 4Q`.\{K@"}r@Ē)eρe'oo>oy6 `rH޴ɗSïO_|'PM5# $ob-!!$?Nŭ@@PJ,Po2@[ M ioIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_up.png0000644000175000017500000000153610342116365021710 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HcaXv0 0Vـ{9`b5'Z 2&fAGv !YQEP/ @s03h̎dwW?0<[!fx @PCjVJyD2rD3ۿ#S.@1t ެTIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/addressbook.png0000644000175000017500000001247210342116365022532 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?`EMбħ I3{._x+?9BC@ZbbwM j>6f`dvf`;Yk]ysY)@1 N3T00210K]f``Pѵy}+%ݐ qfbFfNp~!Z0= >{%T'Kx6H@@I/|?M߿,L< ?XST߿$zx&F}#çW -f*C l,1@x*~FF z?ٰPsw1 w. /Ù=ՖENo@ v 10|jg& X8gp«7cL zt:<(tߩ!V 1 ke8֬g`xό@2qJ:=@>~~+FQq!^v#MĂ'e6ו}ڔ+'r?=/ې!_Y h.`.ϔmz14()31JNȟȐD8; 㽋 =s_xuP _QQMl\, Z?՟-KxCn80!z$x2XVc`x?8?;/0&O zQJ69d 3/Db ΝoUl|k' &/kG#Mޯ?mvtm- O0( ;R|d$8|eS8@K&d;.00Cбيum@@LCX?2}Ͽٞl)0Ɛ y>_ ¹|Ĥ%Ccx8OHHiB׋~? p)E_׿~_/+F gpO?Wp)+Е!\ J Br Y Ƈ80V*dl.aeb\W dZt@(?2z?3*G`&_E64-`IŐ~SHu0s/0&DɟKaJvؠ Y!kHÒgDaAI6{+4٠Rtab\a,O퇟fgbb`gF T 1u^d`fRm Ơ% I`fS7t eXPOd# M6BWm%l PB/C8 ӗD~ 4 VF¿3|.K]!R?O@={q27@3@ͭÒ=)x`istë {Wi @L2+ _I~ d!( !0TO,T EmP;vxab0k_&ؒ 2 &h/c-Ng~ 2Ch(_P!} #Аp nga X&`}l u`/ `;ps9qy L `!'Bc(4;tbaH`u%G=idX?Xo7VX-@g]QLL9", 21"/~i6'C_!+B E1|D, 2X(3L9M+a.x f&`7v6Z5yqFQ!Fv6v`,.3|,2{ ?@yvcm T0M| :*| ;Ne :ػ/3$0ϱ3, ?)'E*pdW< Fǿ2x9M7 /p38$ "( ܜL \ ? ! S| *yWy0Ĺ0,#ː6ar[aA{ٮ03y-0=..Vl V, p=U1qD<; w31(HdHe8wW!E[`aV  i.>&`)޾ 7fi3*ܻǰ;7܂֟e7~>_=ϓ%tzRU!(_/S^1;ϟ^3 +-0 qAB>~7CL RҊ?~2\( $̐ΰxCh70 >23We0V`Pd(Pffdy{3`.ݾg[qCQKa>>`AE'fx ߌl 30302p(>q߉>#7| TE99~f?v538S l ]~HX/a9U/n n0fm9e`6L /}T EEG^IS@<,Ϯ4Cj?'Mb8u`a~Iz ؁e9;$9;&b7`>q13( ?Y~+*v& u.el0 iہH2@N3î^}%>6@sRb,rf_qs)/$,y0TeQe0dbglAɉ  rVLOǠ(̐ . ,7Cf4=?3;0cfgfL$@XG%|E6-;Z,(r ýGO' 0Z9970^[Ҡ:xPq X~:XBb ~av1;zXchf``X. D+{pcW3Rñ)@7 w)~.]Xk18p3(ɫ-6}063'AZ ~C4ofǗ/899X+g cxS1+3,29LҒn {g__. _02J08eˠxfGA JNPxhC,7?4U=pAyAM@U'}0 z݇?=夦칟8!v%>p5@KK[ ߾~VdL4 A1{E)$V8X`'c ] i _3AŁ ?v{O?>٭sX79ſ:+eCzÕ "ܯɄջ ?ƮçǃB/4//r< 4F I X}򝁛ANAa ->e},zI@FuI@mշl}krJ?=~ɠ& XLJ3B% rϿ:t%/$/vS*MqF`ŰeKg_2~߯{d9h7n Ϟ}P헰il6H̔W@Еtr (/pC^{Prbdy5/$ìu?};~t2Px '8Lʬx)ߘPn _тO I3sr 6)1(0fgdM?@bTTOױ\pU\VFa A7Fv`\23(/0B6 /^& d o̓i}8J69)OFQz¯O/|?a)# ڊB662/BA OaaxXt<(ɰK6 Ȟfڿ\87?'n=8 zӅ v+9k Ңa8|Q ؜b`g>_2\AAJ`iӿ߻ˉI6 Ȟ#{7KCh,y ÇOVl|s篘]} w~0aQavC{ eA3\ѻw~z0eǖl@Q4w'Է?n1uzccߞ}`ږϬ& @T_jɛpxk/9E1|zlU]P==J+< &VYfɨz&V?_:4h{ (]{=*Z Rl<^PC:RGIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/penguin.png0000644000175000017500000000170410342116365021673 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<VIDATxbd@:::ibbblllʿ~bxGmM3 fgg|)7os)L@ 55K,>?cƌ@@eX &HJJ9߿eXh=Û?xãXXXT@ R@,HDܹs FF ߾`w u Ve Ei]]]_W cױ| / Ni 7$@8''ׯ_ oV~)3 (#߾}@ ͹@2 ?5Bo߾ "" ((y0aUȀ&%r@04߾ b_ ğ^lٺ?cW çO>~+3Öm;?^ze5PM>VVFSfݼyYAJWa?TAH>ÏO^?^I`p| 33==v[,exnfg N* ٘AA %# Ƣ36&!-gE,@pA7@|+ ܫl_}0IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/null.gif0000644000175000017500000000006110342116365021154 0ustar mikemikeGIF89a!,T;gosa-core-2.7.4/doc/core/en/lyx-source/images/select_ogroup.png0000644000175000017500000000143210342116365023076 0ustar mikemikePNG  IHDRagAMA7IDATx}OhS?O$vMԦSF;"<(Q"xcTe`yA=̓ )JT1$%/y<I~/,Ɗ'5ظyAn)2;v]=,"n}]惵3Zujqg}|h n^*e<`}HHxHiH$:,ʟfֹ~@L-8X H`ija,pXSs`kXdU@ͽƺ0b_6nh]sBPP+o>Iں1@ی=vO[OxC3ӯQtoZNs`MCX=<{;{.7'^LO2|Ζ[:hM-`pC0YHO[hݫBo~{Ǎ|UWI匕&BfDaJa'J|b5 ,?f4Y/e0T\MSVsU+kG<%(M|V_m*Y'[X1ugW? S fӵPQ-2qGm^P"^q;7imKVn1P.;HEAq޵wAD`hkvѣGz$:yX:s73.hIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/info.png0000644000175000017500000000225310342116365021161 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<=IDATxbdTbw9/߿U/fs_KM?@1 &U8~r3|e0b`D/?x5Ȓ@]|l@/p 1 1` sw=g8(ӛ>Ix#L % #8C:C! XA}ëo <p N>Pz+` rl8@1C ݯ4t'q m5&oXh0'>.)UB, F {/~d+ߟ~ &Y|]̤?P( ,̑ᯠAY5a>m]@}`d]|f`70TtmgVdTQPM lv?XyL^~Q; Z `>6u?10g',ٳ|b% B@8TA℄w  bt5Ý ?B1)30>z@ xD1 M|>08h n>loz)2W X@9kx$vm$?3~Ȁ3 t__3<@#3?~&çB 0?`}J3Lb1ߟ|.|@LB#`a€B1zPe_);@țm $ߟ ,ܿ3s"@17 J :\E0B#8ý pu ;}| vo_gpTn;0pvc`y`W3q3p*>]ϳgD Ŧ`[ϫ `NT*;? ] .6М*8E]K70|~si WXL-<" WDMHz #P qShA>DLE,8B 4ke `e{xIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/members.png0000644000175000017500000000154410342116365021662 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EޛyύSJ&}s;܌;{|!<۶KE@,2 98 Ho@)Y>|"뵮q !\.u]h4l6> "Nglf$XYY`F4 vj5=Bo(X|8:)NOO?M}BN#i2|iꪆɉɗ;wX__/Gg3sLZ?q( -k(Tn||?˰QRR"LP(<=Y RPJiMJ)At]ji8\4Mfd2pE> 5X,1֖,lw6`&bY[أ<|~~ ~*JsJuWj)q8jyy$ӽw1=RERB*7uƝy̧kAIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_workstation.png0000644000175000017500000000146110342116365024151 0ustar mikemikePNG  IHDRagAMA7IDATxmk\U{g\C&8I D("?FBё".C;۵K֭_j: IM"4L<|Vϻx~#VVV>F`>512Ό~Ƨkkk8^7)d(# SnϮ›o\\WN̝c?}cS(J1DaQH؋ז_qјFlLgYCKcJ!/ vwS]GKIE))pY_笡⹮q{:SHv?qgC (uApu8_tI([Xˤij~$QbJoŝd3Rd7YyLtFeYdҐ5Z;oȘ_(T6R.7JzB퓹f/MXhn=mG1yiPd#cĆ3g^|<@+#Pw ݏ5ߒ-M0 5ƱO cu?qy/(@PopX4_heE/`> YJIT7Wm h<>sT_]Ѹ{N&>dڋ Q*֮;M՗ݼİE"b %^@y:BA-cI>f2k߂Q%̫y5=_o@x b.T (IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/addr_company.png0000644000175000017500000000343210342116365022666 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@b rq@nVVKNGqQ+qa zyos@BC  I>K._{Gg?/Xw{Lwl&\nVWXٯ$BBLҦ׎_|o>Տ}?~AĿ|y_P-aVi 3S!irkC1G>19 2 jG&WԹ3\q֝ }a׿ ?32(ʊ2zh@'Ff| #.p坋v}@ dMhH|ѓG 3|??@Z "| eW~ZqϧIT2W,3r2|OfoGU9A؁AHH( 27?@/2<{GݝKAPÞԉ ?0i103d/Л< \?wgcx3#3br,rvr6Wa`c+K`d`+ t0# 3#(X.d0߿nǾS p")*($, ̠)p_/Zp='7êm7T'0}o_'0|ٹ t{2H*@L?1 2d1 g}`~P(H ~Go0L F: wb`?@|?Aб Od矟x)f~ÇO.T|{k2 1(*1?u ^?tX  v\b(02~cf`,s 0 dga`Ҭ l /|e8|.=W~Π" ?óן>n ?'PV@C?zr[A&tcO?II 0 s1q38?7?'?y]'#wxÿW 2 >Bbf"Ҝ" @9y9r2p],'/0ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_blocklist.png0000644000175000017500000000123710342116365023250 0ustar mikemikePNG  IHDRagAMA7VIDATxMHTQw|Ր }a[H j!.t#b6$}TXЦe$ BDҌi5lfޛwx3 ù9(RhAP(-IXZrdŦnpN֪5N AN8Hzxy(P(ۣ CB,JAc݃kDO'!!dwmա05)*ga Iib[ugxǷQVhs{WH9>| LӤLJ.]>`SDmp,o `M67͞^̥(rI+GRX (,\Y4!@oGس39Yz/T $qM$e!Y} !) L?WL|re'W>߁sݰKl:ŃvfJL;ǨST׹kaZh%Rp Ct_`bsV3{YZҘ||ۮ3,}/@6 ]>t=56Z~~;__wo(U@0@a58HaI~?>:ãS>8Ɔi ׀ @, h@E,IBǑ 111Ë ^`ЖgДƐ?C9aC8㋻gfF1~E3Cf~uz56~ C? `Qv;7_2{L@@ 0"c@s$f<<Ă?0z'` 􍵽.]rb0/& 0J8!hן >}c8@b 9EDah+PYb2'#`Nva`x oGn.<37gc4@6 P 616`pB0?{? _.=/ttoqQf/om+1R~wfz:斒2,)-pzK_<`?@>˖xU|I( ,bVePcaWd?0 ۷><Ձ 0a2YIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/edit.png0000644000175000017500000000166210342116365021156 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<DIDATxbp_/Zba@0Y=0xFll ,l Հ>30X)#W0FvvG;qrqͽq훗 30˿ /d]ݾpo߼dسc Pb¦ _8c $#𗁅ʥ+@U 0\ f[@GA!O>^#1ܻs a`{6(h2 R ,KNn bnbEOPԼ ;;hP,ï/~'&F&`a ^@4/×O[3pcf P##? AA *P(rLD. 2\&[Ձ0 ?[o af`bVd2f&.nn&&@g`&bBvӏzj k  lhc񷠐,##8 I5T L6f-66fff..NX[n2ܿs XyaՊ5< '22cX~ t_ OÀ0a/ 15dIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/scanner.png0000644000175000017500000000145110342116365021656 0ustar mikemikePNG  IHDRagAMA7IDATxmk[e?{ɺ4i~,M2+l*MXnVfV BA^/hA](z͔B)bpbv'i=9=Eָ^=yyj3^Rjn}$ɯR_A8fuu tQ߷aZ FQd}O0 mGGGBkXk,8e^'ɔ4;;;?nnnNkf4l68Ok!_YYY~p>j8̖hƘ=ql/ ۟a!n5/n~ܺrҥ̃✃ccy%ǂ[+q% jYf 9bqq pbMgS +0a; ZsZmTR'@KҊ,= DYΝpO׮,^2-{tbKH!2Yr>E)RUJo,e(hQ*$YZc&quٙW2dcHEX `($^Nsf+LnNrVcĔG!<*E;|!)'XFq( $A cFNx`rjzX!1\y2ɔ;%ۇO Z IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_component.png0000644000175000017500000000071210342116365023565 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_F@IDATxb?:Ȭߍ)]d2Ψp ]=@0AݳGlk`<@4DЀn qA+ ʀ"h!@@8s2 %e`dQٳg3|b [Ȉ5|_32&b( gϞ?wJJJΞ=ˠ;;;Ǐ?Pfff&&Dxrqq1tuu1}ݻw ?d(..f @ # į5M!@!% ,IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_new_printer.png0000644000175000017500000000135210342116365024120 0ustar mikemikePNG  IHDRabKGD pHYs  tIME pfwIDAT8}RKSq|2у-: M%ջ2^dC@0Q|kDeB&^C-=`s?v}{ۼ/YD;i4 333%I-m$ /5a0 Bm1f5N]a4M!i&y;74MXe@ū,^0 p8+Iެy :;;ţ#"2*JKFGGoY?88ȜQ|1smizI~3_E)ab|M-[ɲs5\oJ:~ w¶l8tw 1˲@cZA0cɲ̪j6N1\&A衔R @!׀c7 ?e$OX,V`O.C\E%0 DwPvr(O<cXD> }R l؃ ]D7,7Y(Vp*<1Hm#ΫL&3, Iax?IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/rocket.png0000644000175000017500000000147410342116365021521 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb` c`hxg<$ֿ͗Nwn h@8|ᲄ  s"JG?ݽ'[eC} Ⴕ @Jgf`W9;+8ݗ fq%3049Z101p r1p8 3|?vA ?>3L4BR\Su9$ t_d`+ οfx^s1@ }"e 3~g````ϣ W6df`WaX/A .g`(ñL/(?=k>031(1Qd8Hgdo8 j Ò4Xt=>1d`I \:3LZAC7ǯ `bb LA@טOFn1< Ë @`tK=9tE@/K.@?=^b:` ß jL /w1Z omx!C27ç ?ޱ0pͭNkԀA X~aȿꅏ>p0&gxi~/" G>IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/editpaste.png0000644000175000017500000000173610342116365022215 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<pIDATxbA 22|_=-!***#-1ÌY5>߻3j/bɳ\~a3 }.NG^maggg3>Z 3.}#&"-f!` r;Ý _f! ▒ __{MMk?302g ?10l# ~52e[kTmbandʣ@,>f?_kS1|ĠÅAAA0~a` k d AZ/G{YMJZ(yݢ3x%ɔ{oP668ZG=W|  ׂ h /JDt "4ϟ _?2 tg߁  `fafL l Ϟb@l̓)vqd~D*>bl)Tlכ2 b ܧ|Ob X i .߁^gbbf _VL̄_ i hD1>ba ⿿0g'. p{\? 0m`2""( CgԄH03% fgg_L@|P00 P. #C>0vУj^$B|0Ao4IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_seperator.png0000644000175000017500000000026110342116365023262 0ustar mikemikePNG  IHDR03bKGD{# pHYs  tIME'tEXtCommentCreated with The GIMPd%nIDATcp&A\a/8*IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_new_terminal.png0000644000175000017500000000141010342116365024243 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME ;4JHpIDATxmkTW?;̛Ay &Z(F `URD,H-]MW*tΌ;)EɪE0fT"* d0?ƉwOR 9+Z۩ka4M? әvdyyeP(x"qdnZl>ׅfgg c Fj7jEmVWW{td2loo+vw"qEMFFFT*wll6k-"sIAF {T={$n=Yc Z"R\.GcPUsՍuMN3=RFDaH6%EW~gSڍcr?' Xr1bC܊od<}o><_tx{RZMӔNҔ?`r8 5_e`` n8q4}+F~򟞁gO/_|} _kUPջ:[w: )p >Ts=@u>Pj z z H#OXztM+=좘!!zu#x,Y<'4NSIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_home.png0000644000175000017500000000154110342116365022210 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME 9`4IDATxuk[u?$=9=IL횴tuQaCA aވ.?@vzx٫ [un ] liҐ$=I=Nj6}{}y^ 7ׄ`0B( (q{9=mP2HN"*~._r~ 77C/N~z&ɩW KC~pfi/=!Ws#k,s{$hT[3K G./_JdRMVи&?`? 4(wF:7/>_hE&ǧlx0 Ynrgi/_ȈˎO8E^²?>/Ļ>־Uӝ{}#@>96⪉BYA(E !c!Pq/O,X#fIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/log_critical.png0000644000175000017500000000135110342116365022657 0ustar mikemikePNG  IHDR5T pHYs  #ugAMA|Q cHRMz%u0`:o_F_IDATxb?###:8Xkgg(v9Ԁ@!ܵϜEE108 ĀBLJ[!#ӏ pr o`` !5! Ӂj`D\__ hkbpƍ  !R_0pz0󍏁EI+z… 20\/,͇@`C}8{k S\ >!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/envelope.png0000644000175000017500000000151310342116365022041 0ustar mikemikePNG  IHDRaIDATxڅSMh\U=7ɛ̏3d^Lh bK!⦴lD(fh7PA20)E:4M4y̤fef޼h,spa94exyIƿ/\1,SCC}/vJeKKt~ż&%Y5С2tJ8ՉLOԧ:HXvp&3HPy oGn. }`33??A^`Dܶcu 焵 0Pt)WT~{ʕJ&9pm@J uPHHvHiB}ưu5Juxу6R R08D^$FDR='%L&Tʂq,,1?_D@a 1_˴`:?W2U.׿u3xtLS _]-_v$R9XHngƍSF}?@17(.nv1v. `jbqViΝOkޭS_Ov,f|W)W_Q IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_new_ogroup.png0000644000175000017500000000136210342116365023445 0ustar mikemikePNG  IHDRabKGD pHYs  tIME "z?LIDAT8˵[H}Z˙+KtLT)JdBAQ{衇 %r./=tѢ*nQ.e-7󛻞"ߟ9gpwq`FktPĘHkTn&ً~Ђ"^x!RFq׋k򧀀}py Ŝcݥ<6% YIkuҼھQt2mΥˋJ$mn:_I$@5§0xYG )]o-k[`B)pLiK.]EY } zSa.d#`P`J 7 ƪK(ԮZ]V(>^Ǡ2 0jpYVNkS)c`n7?;-fAy x MU*ha"08_>(;NyL]: o/`{렭]_L<o&%Wv/M7" "-"re[UΩ*HwLy6%aH'# yTV;$ngY LMN)E[č[#$yIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/head.png0000644000175000017500000000136110342116365021126 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb?}ˇ6:L@oAOW VV6S'v/ 2| h?1 `a`ff /`XXYlFZ073)gX؀t+ԓ@,0Bc h;?&f X44F  b 60Y003"rȃ(-&3Pbb{j;3  fLrBJai?$@,09nVDnbp 0M0Y 9O_:'abbZ@'361#0Z|f@Iۀ6ƩIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/email.png0000644000175000017500000001005610342116365021315 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y`q g,h?~:~|˒%K~@ŋ ;)?=>>.qq!+W0ܽ{Ńs.3e t^% ?vvv~qqAeeI>>nO~0|i@π+f@kOc0 0Ȉ0ʊ2 BPi/ş>3Q<@4 2cD$89 }fbd`aafԲ76~tr׮]oq%#6n<Ȕd31 bb z7fff(f>~h&..b ]N/x_66V`H ia: /,I7Jڞ?|l%@Q={C 6(CJ B޿Ɓ"4]de =8|lҎE%Fv( #?1|APP1`f~-$$LJ_|=/I8z40m3CAiZTT\gHLd_&n&&FGaLQQ;֧֭[.^*ab=Pz8 KĞαO0A@xFF()I3g{` roB<3 n_6R??/M Qc?"cx8@5XLUUGVVV;.]6dbb9t80yQ8\W:L> @ǿ͉5al^!!m=# 0hPlĖ?>| "ഏ 32Bh==y`o--++ˋn˖-¦  W^|cGf.cd/v)< SO'EPg5ıPbFޥKY~MP+W p^^""v1 wbPcfx+1l 11H2x(c0 5fۏD1JR88XY/?Z(((j滰 @XcTz?3y N>V]%6s%-VE96^V5iw1{ ܿ^332&//70Ty0BfpAfoGW~2/j<, L \<Э|d`4 oP0| N7/1p|_ Ǐ" XF6-k_LO<qo215 @sPHxyh 3Hpu~?GM hw,b֭wbߎ:t[@wŷ?3Pآe`b>@ 1?P-;TTԁ2 ,ase׿Y70v8彰0?Q%* 64T>Y˂0@='71` HUCD1|a}o>[by ؀&I III9P o/, b`0uq`ջC0(ـ@X0 =D9%=/ D;S6mb9@=pӯ3 C p:/(l)`EQ (_V]bayur?10c0A>29#@I!@Oz怟~3|XVr RFF'GNwE `߿7'fϮXɊ@ʤ. 0RA  ,.  Hrã ?e3.#l N _ϟ?;cFvPTk'~'É?.bƄ05XCid)!2A\ >}AJs00*]{pM'O_NLZ( ;'U Do& U&#A`F);( zH,2_ "Њ/^|`8~6_[?>=:uj^B1OQV >:2I3 4aPW@? AĘ~2p2l_ \6# &O{phğ?/OwogE$@,-/ fp 0 70cyAM? +K,,\ ^̿~֗/N H+?eA%?1 A/s`(rvv H+_R70 }y/ ?߿eNP3<{;47W>|`OO hZM4@(OÁ؁%; m0#b)b/`1-$xd`IM omn`584Z G 6b#3`[>!7BɊBS7 lZ+J;72@=/;c@/`Sا~ %$y$^= 6:=' @L7O^gh&XfII3>02p LL l %2$u'PSacgbi !A[`˘ @ْlKg wlzVΠL v AyfdP.8`jgÆ_A_lGS¥JnbXI0 PDgMgiŇc ,ZA靕cFcC+P=H00 ?~+|>v|^C<@Sn]) NTb`^30#8sCAk s)4}rIJy *.e?ӌt$3f ^~cfgCK} 䑹KUzk&h?xC?iX]L?!TDJA{^-P Bl _{ƣC ?;iZ|aQ#9Plp1hG2,ĉ6(9?Abv/THGءm" zIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/addr_home.png0000644000175000017500000000254510342116365022154 0ustar mikemikePNG  IHDRĴl; pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?Z3(d@11 ur0ݽFz"hQ9x8*o3@x%3𱺨-gPb ߁&ΐNAg{  . AZы߀,/0;%m* V3谲0g6c4 bcgwHA bb01030<Z 08񇁗@$ޫf yD8~tE>3|ϙ0;PWyX0KbaFeIr1^f`bd 01&=ԕ \" =cxƠ(43 Ha8 Qu{ 3ŬrJV R "@?3/Ag^`I19pU/080l5Yl`fjrQrg7F'_0ae8ALUA(c6Nvf{O,a1/n W fDs1H90|psacCV 'odΠ ߹y i3rs0|ݲAVA@qn0S1ù[ʷ/akg`x]B]g ̷2 ?0fuwcx**pa<SEަ=7d\{_}h\5b~Û fv | ?c&)5\e0Jf@p-Vn[2{ DvAyuVq b[Lx~?xFPxǖ-W€lBN!}dXŰ=ÜD ùw027Hׯ_ h)aBIc42gd`A0_f`vh п\~^ ?€Ā 1? ?`AA /0s΁  40q3K10gz1+<@A7+@(9',{"Ds3]A\hX @VVVvvv?a (߽;a%(Hc +P B-gde ~y;20y)IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/terminal_small.png0000644000175000017500000000141210342116365023225 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/department.png0000644000175000017500000000722010342116365022370 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<"IDATxb?%@? G^͵ RH]~~ǗC^_y{h /f]>3 `Ovo|y;Ԏ"Jfab93+PdYSpg2ӟWI-OYPn~?5Q 10T10 200t0;s~ =hzpg߯> +x HQސi  <n~ n!BGBИ/?8g`", -0omgm l@O\|@DŀzW`<(Phw<30|:30?GG  }66`+`lí zAh#z KB/A Q8 O? ?#@,͐lcAcI6P'$%k"{>kͰ hũP&"ـS hY>>/'1 fnJ( . dr ##¡L`#y PЂJ(F`,} { _1 P_)g&V̙}. `w<|yXȞE.=x)iK%`) MZ z#'@.548&5޽Ƃ"4C!< Nh 9PPa` l 7g`cxa8'3 1I p&!`?@3=]i.`p+30 A Dw,r q>m)'ñg@9@O|&oڗY&de L6_@iboDDBAgFw&@|!!*@pCX4 +/`k4 C 6q@32"8?-ga" iXP`|A2+! p`Rbq!!#0YX1kۃWd" l뀳 "r{涙,Pe&;v@ѯd̈ҎP{ pPhA*#CZ ,˯D?#R -28\!zAb28y4A  ,vPUtlC   3$&Xi6HHAB rqfVYPz7` p^Xo!.$@=bG,yP}I%%;‘ZbʇP  l0:a _ @LBE$3Bh聒 d'%h\ɇF7 MeM76Ծ_C,\u Zx=qS dz"G;(iB3RSܗxR TJcxz&sp$ }X T Hx *FI=2AWXF6 CB(v}] E~aI!za`% BA1stǰB+6fh]X3An..'<0N<5ӳ߾|r3/ߠT'=u8 ;$`&Vfȗ|@cL,:R |_oWx/vks?8gh@x,10"`7ԣ!kOCxX_;@N |m!wuoG蟟??<ٳv ,@4ji @̈Bv64f#v>>,Nb?##{To8ڟ? z58A`:M󙡭L(4 umMҷO3, y { `F"8: z[+g`e+th]uf%}6pCC@y9{B:;L\ CVߋ>iEAFuxOGˢ>s濎O0DF35dvL!=T0Ac w:|bsNF, &fzۋYϾz*2%ynfA%/hm Ɂ%~: +g2i P#f Hz]IN^87`/X.#0Bz\ ϰ@xtڵOe`},7C{(o(ٳ@OR ZR\ Be0:A<`;C9߿2U n=&E@Q4O 7 NN)inJm@gA+^1, 2z*YtLz9R&0@CgTe1+2y1X eXۏG{-tR#5Pgs\\x{ ofG OAڿ THY'8>rhHC*YRs@1RsQ t46RfB= ȝ%s^NKIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_new_blocklist.png0000644000175000017500000000141510342116365024117 0ustar mikemikePNG  IHDRabKGD pHYs  tIME1[IDAT8ˍMHaVH&Q((PAPCHRQiF}P d") "e ҚY~W]Cfy EG| J@5 @Na ,O}S,x[Dx&"VN wTfMY0EDD1OGwȯ6C̷e6/bm@`39! @HiXbZ() eN`$!&j;9 %= L:Z,@ 4QptެB˃NwB]d>+HƪNo{!hMS_)u7R=d޳fCti'\{,}SKsS  @h *AB!@@LJFc?v!f? ?~&@G8+faId5Yc*!! )Cϖ2 I׌ " ̘l)bg!9Y$5 LLHJvĠ҃a(:?۷?3<, P/ ؆$b^S<FI$wv`$! v|T w_?p3· j* ~c  D) h1>p'u9N7KQnn&pSU30|L, B "뗟=WX@`+ #!pgpk' . v,b?"@J,l $bpsfwogٻo106'pf ¬cdf2r0r2p32 1Z1 ,\c͠<13 .N2 b"b[vrusn\^>良<@Lfd38Ho ܬ nV\ \(DQ1:a3S`s10308 3z ((LJ=Ą&Vʵ;!`obFRD[`O86 :`R$+Pllb Waji TȈ kGiU?;w2X3!#Ąf5a G( 2lp`05WT6026@=)cR@[L؀U?#?v8"am~&h @@gE{BrvTb16sp '%BÒC? 4A@OHI1 yX9, H-y%'))FsSUfY9,)m%PjCv3@aAPfbp$J3"4J6AILc@BK! '(/l R G o`R&^1!&p u4̇y,9A3r Z^ 031C@iyBAPH@L H?ifp_~R W`_ ߾@~3NRǐR4/09iX23;L@14%x;;#o$`x  /`(QX@1AY <`HIJ@T&%0uep\=~ ܜL@~1(p= \I`op3`,???m/bVcg@Y HB?/12l@q2(HJ1=GPh2[`c:8NFz+<|VW9| p: abXredP(^  _>ccePcuý +/ VGJ)p- u8(IJiCRpJsFÚ Hp-) ̟RC? ,×O;L_h/T }u78V̀ſ!JTpBA_8=RaH bPgfv&ph3+@3o@&@0(c hbH8 gDj: z*, >*3< n |h#TZJ@n  zE' {>E #1I? /3>6!X%3$Fa!< J|~TBU2J c]_p6Hrcbx#u70b?i2 ݻ> 3/bAn[HEpr@⋉cxOhϊGKߌn#3Q@{9ؘ(O +jAaÍk:tdY8p #tA/yJ)NAfV..&H& F,6)Aw+w],Amo>~XEɇDT9 ԙC#*/HR\P4%;&h&VZ҈mTľyʵ_CTo?!WfpA⬰<p'Á;8{ 0_E? k(~?Ѵ|}"/@· UPl(s kɟdxc36^@y F{׏;G` m  " Aњ+#&W@_hlfM_2ٽ3kA֠ 29EA'7ox='?8Ğ: zZPc#(0>OnОz %h~D4+CWXOϤƐ?r4,=I <[Z1Z^+`8awnj 扁ա|IˢU5s %Tx;HFUt~eZXvGg0=ЉC PhcnhLZ9'yiJ{l ~2 7d?|HF}7o^](:S J?p(@Qe N.~1߈ iy-m u{nv6nn61!v>xF4}cx Wn߾9s+WA@g7@Qu#laa'si9=[^1UN.av66N& }yo|x7.u"H%d'@Q}46XVPԐ mKB5gXK? -$@= u<Z] ./А_`9;d=!IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/log_warning.png0000644000175000017500000000147510342116365022541 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?\IcQ32D 1sq|۫/~bX°>ba@& * Nj83s10r20022۝C xyBf< M7_b $Zi1r2p2(++13mNzzCpH 32030|< 60230J09h0wf@!,t3 O3`yX?202nеh. >=b<3C+_$.103001"4'}dI?=pk X^1W/0<8pvL@ ;lxA @6Ggqo`n@W1qa@>! N1afgX<0?}fA(?<&?#o x e03\xᳰ./(V|}E@DH?#hݾ2O ?}f'-A3 ,緿 7oas! 9}.T5@ =Tf,7o_fx×o~]𗉕Տ aY^^nIVUU 9pǏFa? `(Q.HIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_password.png0000644000175000017500000000126510342116365023125 0ustar mikemikePNG  IHDRagAMA7lIDATxAHSqǿmo:ޞ{\c)<]ޡ( (v6A%!V/^6kn鞋|ӗ'Т`8~ZV]55M[^^~);\g<\X,?::B@4}y xF?0#OlfV{{^7a  wE9o&)-,, Zx<. :I(|p8X[[KD"~V:66v$ N'rBPnέ`4; 0 z{{A4@Ql6dY>RU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]!#=.lz018  a/ӄW|g9HW _& ln~᝙0!1 /Ä}q1gxa`nE^*dtY`?ng@a$sZ@6" t @l.Lx1I!!5kо| @X7 ?:ΠfeW@ .Uj_j?9FK /O8UC Q{,$PLzIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_user.png0000644000175000017500000000136110342116365022542 0ustar mikemikePNG  IHDRagAMA7IDATx}KSqƟםM7]n6'bhP # @z 01 "*owы`Ė\Uwί+E{<|>_`琊7&h1[}G.ޝ>y֋,^6X8p\cS+.3KB?ݦjkwHS,:":,X⫛?m奚VeeIe DyG0nu+=@AHuBqta  A\᷊܏% 31D=7׷}^RUe18~I0e6yCxƶbs^t^NB,Ll+WC'v/BEÉpkUq!scKu=Tx/mlo#0ҟھT0IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_back.png0000644000175000017500000000153610342116365022164 0ustar mikemikePNG  IHDRabKGD pHYs ,tIME  f_IDATxڅMh\ewfwf:63 `bdaBԕuTftB wŀҖ .lUM$EiGҐv2f$fЁ_x7/98 ~[cX(-l *Vr޵@ʯ^oF( 6b[MÐsJ5q2/LXlC xˍ~HK&vӷ aa9hxEܫZG;qwoP?삔̹֮[/_(oz`yw?@-pcP.֙>|bJ@s=yڂ0+ 82a(!,B=嫣 #aĄR}&Wy~)@|€~ØVtQqN׆矟Sw^D(Z_Oxp03; CsXP`Io \к8tߓZ6`~ `BIT@w̝q 9跠Bi%_RƳZXW Q.` 4;`vrP ahAr,6~Db.ZV󒎿+Yl媲j#, 5S+f#2_F瓬[T ·YY+(BJ嘳kzP`0i,@[yYo){}wͅ5w0[)3OfhYz)$O!IQjIdh p!- E(5rV97ЮU+):Xƿ˩`Fnbw_1u(o3 N h!$:#$>⮄-Ty7J(Ak#,$m i X]V›ⰵM)s)} 6<~+6 9@O35̧~FԒщ[(J3fȻ&)&EiSm uGWYhv^ CQNE,$@JOV 4f7S|wW{ "WL4rF0`*eBX)V3G_K;doL>@$ VC FA)eܸy XQ^{r'ϲ诒4vHad3"| x['S1E˭3ߑyȐOaJV$ׁi2=yS຾jX]2{697Gх|kuӵU =ilF2M@z)!-.tt&*KYR'r5R$AN47|`BJ%н ;@#q';MOx|gס{BgEx`~N{m3mu3Y^P=T.EoVj+8vy׃Zh ~AI]H?\˧fA*v.kY#`|A9+(0h*8;i;Pp!NAE 04h0dS4 ? “Ӟ kuZ^s0x|FK)0pYv%M Ƕឩu6+ %0{ d,UCr*A FC!}@9LU%L8FGK;^''džh#ҪŨ Uq$4&,B$)*s@ɂ5Y]@z2qMGI-,D a5uf Lj81RvD MhhqO7tHBM q#,.[V?D19hx\]' MӜOE54%5'ɢry ^ 맟nB9 4e`n#hB 5{9ozޒ/n}kt >=]=]o>+T⽇ @2G0Xy"ৡH\WEBrfx~+ cvIً**us rߛ^D!W6vhp ˎf eV*e'Qa 1RG J|z91;#_w 3sCwKMYXT>`05M*ѭS`w7/ZX]g3@@EEH-S#e^CS:zޕwfAW2.ws+Ju,;%"Ȝ  R{J={u<dzGUMTi{> bZH5C BtU ta1AJKksjگ~R&V9u-~_$҅(V%2З)(xT&&F/jZZFTĨV1 "7Dخǽt`YzNnKm#b@&LLX:OK> Sp0Ϯ@7gX+wdSiKV3|za](Ĉ$mO[?nRx [swg`8ZY|2G\#Nڛ“/~ܶL,yYm^^Ƕ]J95 LY4FȳƇsP'1y EB[>Kxw$SZW<b@ǎGUϘ <8oo'I쾲+J1)JC:hb2+Lx眻OE TE>`:tV5/Q7*p+ |X^ })!-,ѿ 6Ҽ  H[?HMG IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/ldapserver.png0000644000175000017500000000631410342116365022377 0ustar mikemikePNG  IHDR00WbKGD IDATx{pT}?ݽ+$$@@ 6j .-űIe:t8P4k;qch`@& ST $xEd]c}OglzZfٳqvƾo8prՅz]~𩲶6=$QTT|=3rr\rs?:u^TVF.QywǏNgtxYUmA[K^^,/˯@uE]O3h=ᰆz7DNNyyl{55p] PyfS\bتU'.jl|i&CߙDbNĆ,FeE5k^bmtimmwSl<)0cѥ& "x:e95fL1/Sd[O.^?]O<1b1M=&xh39TK @ Dxo[젠p+}kIw:OtsT?(%ݜ2\4%I I2 -(W WƎSihltֶ}Us<&)>?i&F)"HR,K45!@BD!ƌTT4ow jvW̙q824X2JęfrdH,AsYe())m*(..YqK?#@]ݵuuuoBOСCq;U%'CJeG65nmٰ= 3s{}1ƎMAA.DH$MBEE" ;#rXt-99 6g ܾ>JZ%~F$b+#)sa"HܫiZN.vފ5q6XaDgLPIqQEG؋Mp+p\/0 {$T aTɓRS)@$ I:0[oBQ"Yn5MH[ژ=sIdԩBM%~?b!Q Eii9D6͛EP$0nܷx o5MC5B#`zTE0"E^n>41u=[b&Q2Y1XI~c& Ə/G0 0Pr^?/5w'd˸pVTO!%I2ha,GϘ`?bnRh-(E9#4y}l@HP_Bii'/fK$==;0>n %IbҤInbD= 7n-!'']ځ,!%u]'6vc!HE.]jDQ$ewW4933c֭;TQ2p`$e0~fdd8HD(0N l۷DSSVk)FpŒK ]GL8.W;7@v$KСSt:+|rի.$ضH9 h,\8Cfy9rgrpر٢efaZcckblZldf3rpNf͏q8uޯn~WHXCFTlgϡ/o9a/dXBYh63ػ8 ## U%JժQ͊ZZ8vJKv*+W҇'O^}-[ ^@U˻L/x`tidY4۬iMgE[tunWoiMjQJYH #esZy]a倭&P,X`VwusH{%`0HRTi2X,ɱH,2lX׿)Nd٫_hiqvmdB~3(/{׿htCÕ+xgٹso LHS< CB;# s0wv%kZZڧ.Wʺ ͠BfBUv;,Y2[.||`NZ(FJY4c}$279wh Z[۬޻캺^Yp;ke˞-()!֯+$=N0"ŅQU; "=ڋP\{ag4^ .'Cg9@#A_\doO@;9[@?f@Āğ?O@{ x#يr =DPC3̬~08 ]W DO2@L M# .;?M% wԽtjP#B8 @ 0ÈP:\IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/network.png0000644000175000017500000000157610342116365021726 0ustar mikemikePNG  IHDRagAMA75IDATxmKL\u1s;S`Z"2 QIdhPCMWMh\ǢIƸָ11q4i1M`AR3j@[#S@ {;s.os|'H<+w_=7jۅ0gn;at1̉b,*eS!D,Dt$>1pwh,-͆o"0&%r"ˊ)>r2]tKovfFl o)sr!1+x;zZJ pP`8Niw"4$I&ez6L6o Թ6Nr3o;g"Łt*gIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/time.png0000644000175000017500000000203110342116365021156 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxbd@*o*?}ߟ?^M 9{;8ß=p#_ן|O⻋`zԒW6&~6FV0ccc\@ }}P@LE) 6Ro~2|zEk@'@1XߞnYj" ʲ@00pꙇ r@g30:|*r''5O ī} "BtTp;eN =SqS { VE g&FIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/launch.png0000644000175000017500000000235710342116365021505 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb`xPsq/d?fc@xAԪnX?@kYJ00100"PC #r 20c 3| 4t?dzo?o6b004I.uf^&ß[1s1|3` z0 p!H) d`7=@04ӷ ?~d`|}˗ b9  K˪r%2*2`pf)2#?8xNc`ysŧ ?k >0pd@axP=#!Y>qA3c+c`&?rcL@C@1#:hXC"C] w1 l¬ '^K1 В~IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_groups.png0000644000175000017500000000154410342116365023106 0ustar mikemikePNG  IHDRagAMA7IDATx_h[u?_4MSӴ5fivqne:-sVн A_huhZuk.%Mz&7ɽC "<||9H<c#G6Fự3N}}`A\<}L+Iq%sUEhY@Z<\v iT@.sSmcQɱ@{نK8_~_K JPM&LbWވF' k'iFE"_Y+_|)nnݚ5-,AYsZ!d @ !mX~ (H}C{u5>Mk*z@}!L3LзZg?9w 7?5ر󹧞tDT"ynFYYgY͐,Pts?/PJe QΩ$SK@qeBN9bP»?ur)Z6nAX4L8~( ޠ;,o^EoDpxl\ћ0`> \V ܝXI7+(\m`ɖ&c2) ˖&`7PZ&s8k[Xel%:r|'کuI't)M^+V &p>*{ICc)S4T;D?1ih uPl6}^ij3|[\ein/&n5O7DAC\0fc 3P"ڼ2D"#26&uhb2N7V\Nͻ򟁏zC)k/2M-2L[WN~,@Ƃ+ _a/!0'0n;@[25AQb :AHO;[`f3<IM=UvmWe t"BgY߶/ 9 lIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/phonereport.png0000644000175000017500000000606510342116365022600 0ustar mikemikePNG  IHDR00WbKGD pHYs  tIME S~P IDATxYytT}쓙,$HBB ";mŠC-GN r0rP"-d1$dO&ɬ{oH!+s=gwwOu\@Hn+i(_#}iZ^5X)ARw9QPHl\xQcb;󵸑.? BAևex:@j#$d0 |6gt#N`CTT7g; @.IۺyQ D<(G\V*Ϭk&+ C8`c$0g=P{%@0l$g1!@*}3R=kmI >ȈyiL2 IN_Gh1U.<6̠-"gIp!qJn WVxFLҘiLB|{HLNV93SGsbz Oڤ[ WN%׾F"#Rv>qikso Fw0=8' ܄C/FQYB %Ԯ.e@ޗ.x#\Sh ̹}6# E\`@ƈc}h\D"cX aФ H'$kz29jϙ-_ruN7G;e)v>Yso6ꌵveeQ ;0/eC)MI9K;d6h.ʳ˙90JVꨞǤV>iUM}'vlsee(yt:yO˟Qg`ʥ=j0,Ij1GUB'c^Ά P<@ 3⭩;]^.(>^J#5 3{'HC?L%@^ԭV6^:w tOޡ 5`D&)N<45w ]־8y;1 }./eD:Tϫ{~Ck& īNpa0IͱM\Ȁ]lmR=&W2Rot޴!Hɜ%X-Io%)ï[sl4!yvʚF]{ n[ @M~$B.ʱmE#A HO6]pC^a23kC\M1#Q7)> :𯪱ϭݿ]M`v8q055E~9X܏h4ѩ)o***~o^ Y ̧~J^/ٽ{m iZKggClN*|7Bp}вZ7Zl \'<99y%p+++7ηp[ Xj5Dǽ«](JdYFh_/l6 V jE#@eU۹033s- eDQp;: 3s3nK(\zlKKή6r;r6UY0;; ߏD"ՊbX,=}l0bI~X,֭[a4f QA4!p:jx<;v"f3 "N' hF9q]qƟKEQ $IlF8F<""XEKK F#Rnܸ T EidYPF; k"@SeeaC)B.C>(`Y:V|l,aiȲ Iqb!y,+WC(Å8X!K|_Qyr9($9˲KsX]}x2 h+W$ %dP(HEQ0\.R @e $Lh4l6JKQL&\.BZ j,_^YKg"lou dYp8d2 a0 (»;:99y 9PV~(ķ|>EQٌxMe2\*X MMMz8vcXmL,~_T*ݻ( x,cf80K@`hhs=Nk\SQW_ut)f2, e199GE~K)`0kϟ?pM)K岱,QUUU5Mr(*144PVd2sy|| Cף6l `=wvc{d`r|hfffb9pȑ#oZjVwttfvD"0)vu[odzik]],0͘&Y0 v ! ͂0??2Bهxƍqa"(P(@R!Jh4[7C1Fb)PTKlJ9O|b4j<'b),AlH/uzzz!L/]"! v8NH$.7?~ǝ<(s%t…wDW#sydYgff8rJ%2̬,LKK.QAQÇ]|;Aw^z)rN[uXyQI('BcIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/logview.png0000644000175000017500000000707610342116365021712 0ustar mikemikePNG  IHDR00WgAMA7 IDATxIu;ͯgMR(J(KHaYaɒv N{Ehc A b0,%E5$fo{oH&x[uιCx⅓9GD|Y ,9q[ozkt걿>hs J1RB H!B Pm)0ۯvz"2ns?W/~=^x 7Ϡgz|S&j8g*I9oxQp7]WJ1 9&&?=?Z\|{ >Ð`RBQUHXa-Bx`-&w:'%^v;(IX17{PJV5΁s1.\GJHHHQ|dL0$ #q4eu>SQHz!R@57W?賾W||*QFiR 5z88Ͽ봻]Jlԙh PB>ĜuDqɽI<_&|"yZ* :8htDaX 1(,pDQ{RfZr+ $Z)T>|D)5+F cƘDnr8C,[vO{rynHQB!r|hMsMb8)iaNRJ✣$:4';{$u!%9nvhwH!Anu-5>1XYq I)p1EhV80" :]DDz)Rd`q T`(%h6ժaX-G:LhoPVj| s4˽+%,'bԺ'6ЕjV;ZcGSTU.VrcR /M3ltJJ0 ( +ZGI))QƂԊv.j48~R dyeqk}CCM!"%8p;0 I> A{8q}4j51X-p Qg :kQt0= (('&:)Wb\=cqiٙij*5c꠵fu}ha.jCfY9KޠnSUEjIj_ @ҨT5\Q>iJR'q]PR qG BJ0XZޠ2?dY!3c,y:]ɢj >aeF`P9\q@@d|eV_ch4_8Y+Q.EQ@Avo@nYQ7I!? iQWم ZCdA53Ӟ KP6;!ZIޖ=\G ޤ3X$S3ahM*wZ>X*Ck r` Xl!}/YxXufL% 5Ҙ-h4<3foRJU w@zЁi6(̑b-kF3%ZoAf)p[-Jq[γ"tn-hwYpf:0MV(Eӗ>}gnRj˪,ۂQpѼt^>v?sx,䟻hD @tvT{f8s%gw*~apZt%$_K$ Ǐ!3|˿җN XZ?^\G<]XXع' RV.'6s׮~ϔfRkkk!W^yN.g~^ o* }C@)77\|,9̅t:m@>5yɹ9鑄a ǁ+ p.,,,J/:VVn6Y[[v{TիW2ccc[m!Ib\0[J;\@Jq~[Kg}]r`@F,/ M;lltX^^ųa|C̾(o~{ggY&Fl$~_ce0YZZn˛jM&IH)EMTvlj]Rcۼԩǟ;|Чܔm۶- @=~׆t؏4*{ \-3M% Kd%"IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/action.png0000644000175000017500000000061510342116365021503 0ustar mikemikePNG  IHDRw=TIDATx1NP_"@D마"qV$ DGJ$.Q(S,mN"E/&vT湗.@vb9B|k-݆hkj b .1dyZM@:`wF֔ _)UgULC7ϓ|b;hiBP:Oo R.u>,U}X^`Q=/Mb· |!d(5 8gG\[_EuϞ| N3#v~pw rd@ @LxQɰ*ELP42A430 30(H ՍS_72|'W 6B A~ X޼9y20| Жw1t6׮|gXbד5yZbۯKW]LYCO{_! }G~1lް=xP+3Zwlkڦl9 ;6zaݴYߏH@ym~e&Bv~q%7nlx zf LedܹeBߙS{?}zyϟObHiv0'3/rIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/help.png0000644000175000017500000000216010342116365021153 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?-@FFF S  A > @z#I <|t #@3hhPS=30>yy==&}}߇^_%o@C430L@7 Ѓh3@GZZYܺ ?3gbwڵ@=0C?G`G>) @2d&@ y4Pgwg6o`o ]4f0@1'a SqYY=~qϟ 20lp4ځ.- V+ -P- @C@%ioV{7ñc Hd ÷ @k2p@SH xX@D7`:')HX~kZ?w0A(vh@0 =;ľ{?3pwv^ٳp_b``0 H22 b+W2 ߅ Q3, `.f`S_i\ ~$;B`lk a`y60ILd`&Y 6@1A[~bO0 d '2)l e /4YX]$y2#G i  6@b`&ɉ-Pg`&G99`Bϟ pZxǏ~!aaM?ZZ >>ɓQ_Al,U &$߂$bżȦ],v%Pw2 0R%AWIAB܉>0kw? CK7Z/RK@VJA9`C#C䃑o3ITh|}$ߐ#%7ugXR8e|pEpLr܎wҭI I{@;e{`48fp5b԰eOeS.`'Iz$eEFUa=0 ކ*Қ4+dR}1Gn ?jH=uG@@ym +5@32k! Us DU,' `Oib@JIP5hM:3S9Pދ'СT}oju5&~ah{=vD+!@]B"5T/ez&elK_&6v#>x  ֑A&x'N3_hگi`p{ n_`'(x nC(Z͍WUow_qZ;A)趲{uk38yg<߃j)= Xr` lpLp/{~o1>dIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_new.png0000644000175000017500000000120210342116365022043 0ustar mikemikePNG  IHDRabKGD pHYs  tIME3t IDAT8˕KTQ?{Qrpe  nH\-jE E@Hj.MA YH %"5{ZQ4/|^{ν Z拽>Gc2btyj%{Y2VŸǢw#6\үcUաVUn#Uw*mfp?}4X*J5w(H?<Ɍɣ 1*m)?5zu}kZ9Iv^ Z%lrQ3I5*f?O竩M7g o؝[^K4'N-JP!J$tRG,w|JX￁r@t FIQIV2|*f'%*ȮkZ潨LݒT8V¡å{WUSffTc.3`jQ\צye6 ^L"5舺^K8Q͇4U 51۴TΆ'7fECu5_#$beO0te972F}8ԏsj5vC߱;*i@O؝[^K4'wץRM( kҩ}`~_i?bwymzU/Ҁ awKb. a̒9+k䉨fGyv|kݟx1kݟx1g^ag^aWzWzv|v|kݟx1kݟx1g^ag^aWzWzv|v|?gosa-core-2.7.4/doc/core/en/lyx-source/images/user.png0000644000175000017500000000620410342116365021204 0ustar mikemikePNG  IHDR00WgAMA7 ;IDATxŚylWv?;6^`6,Hdit44T:ڪU۩W]U&FQf2$Q'd!CB` ^?~F=W;s=&WֳFW٣ v*JJŲϤy#]9^\q޵V#&|=-I4وnc(3-_\G. ?f ?77U'zo{$?Vg~G^f1mq,'Ï<NS;Yˮ'=C1\?]!B(F9d/b+SLNV[|_O,j=ƕ ]_e?%\׌]c38V.} U.pz$NK(*3oakdf/@I>IѵfǗYwߓEB*٥eZ%r%K̹4rǁ/ϬnήMw1pqʋE\X"vyhG>RR:w|0\-j{سZaY|ϭY@* ,L#=q TXۇ2xf,5lbU8ṿ{uŽo ? DbaD F`?'TS/.srNqK;:Vtcփw$D( NxiƀZ̯ZWyϽy޺p8QPàE:'3_8p|'=&0⠆"je~z$(珽žp(>PSXfV7f7&pfP P@׈3Wx韟y?^/ٮX0"Z0葥`č8 %@sY8ѿzSc8@Ez h$h0z,؈E-p?䫯 `,57 N|n#hSljH pYz''9;u)ʼvqT}<ȖF79anca{ !B HAbI\HY遯k}U^,ke _:/v>8J[JW4'wnr#nj ?\H[n!%f@$!kktLN36tvޱs֖0(. A 0"Wpb/=l9* 4 8k̤Eڱ}`h?MJ{g=Pm-*DBIssr)a5 TjZ)wW?zm|:`A E^|l̺}H)>wu +Źta/@C͏XC u=>ؙ9^{7C="&y]_BłD]J1{~|͎ڸ.mڳ9ՈTög04`[gf\Y׹z0 C~07@[ƍwr9\E{kl $JX[cw7M `h pYP  eޝ_)Lm5+=дa`n&MasE|װWϞUJG֯ eh:CX6BEP*g0k۫ m{v]0 ҽ*~uɅT5p-Rq89i^;RBwO#ql!HWkOOx"CȄ\fSiT[, CP'7 5eѦ;;V B0vbi*Q.Z&2-A~Jf /!TPh|_ TҸΧ#TA:]drbyudH]ʕ{r1^B!J+ޚ6ܲ\R Qu!7tGAU|]= |{ߟu첝~~|J%pYZ-ai}mi\Agg1 UYZI>Y1>>ٳs:u>57w]STqĬ NEId!cx4놩iu)},p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/fax_small.png0000644000175000017500000000142310342116365022172 0ustar mikemikePNG  IHDRagAMA7IDATx}k\U~mqlF &TjD4PDPp#ؔ Eѭ !l])2։|ܙ0s>]Y^xy~⬭}Y:S@\ ^X^^2a"<<h|JucѸ~wccFYH)QJJ<Pַ?yZ?0AO }FÔa2L =zݔVK;$I{eee!I8&5os5 O'Gєxï *EQda~gKw-`c}3⽆4osKweYҚ0#5eY9BH9;Th+(Z#,'(Za! }JkvVc ZYӪƘ+5ƘAcDQhcRR@V}/.BW>RJ<ϋn{>;;f-Ӕ`~?PoV8pΡ4r||L$ςv4w=s,c'b| 4#=2c(˒_i8澨z8?~*ty~\qůTi9j2 C0R\ 9GV#"Ӹwd2) ^K/b{IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/display.png0000644000175000017500000000133510342116365021673 0ustar mikemikePNG  IHDRagAMA7IDATxMk$uUwOOwgz.e=Ag x̓* ^ Baut+D&t_<؂xzx͐O"H\TUDUDgO|kk%j "!c$ƈNrkcGvmu%9%;wYTU`"F5ьf׋|ŇeQ)1Di^ 0* &ㆷ7:{;j" V{EEږtNMI_״Mw<V arc(s|o_Ʉ<7GTUQUF)'_0h| qJ^nj.b6m!M,>f6aDx pz:6{Ū(n!SKZV˔ܢk!nпSnJT<**@QdUF9>"Oyǘ?_Pu)Yf`UEE:bHxMdho(n$U&CZ`TDg>o I7{1OO?~gy\s2 ާ4nB~y彏1ƅa~!`ï_ 'GkIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/posix.png0000644000175000017500000000776310342116365021403 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@PÐׯ>}ӧN>|0ƪʯ_DRl@ׯ߽{wﴤk@HzQR\ÙXYY@d߿a  wayWvvzzz3O 7P?r@d{`߾}faa1 ߿ϟ?4g'O2\x񟩩&UUƙ3g^zdY8qbPLfff>aaapď?l<0& ##ãzΜ9ZD:;;K:А G޻wѣ o߾c0 Νc2w @+> "MMM@'prr28991bUrU^~ v((ـ< fÇ0)Ȩ2et@P`]&!!,I@w$tRph= W\˰rJ11˗/?~%&O0BCvv4C?010mG@ŀ` r(kjjތ ĸ Vd3f߾}d`J x4 ʤ ʔ 2… RAYY`%}AEEV嫁La`>h6(Ad9,8Pri޽{^ NJ`E,taP`ccc˃ްawAA;ˈ6@awwcDzA$ȱ A<ALȑ ٳg h:y `4ݻI@! ?q 0DxB `!*_| /ae; & %%V2afߺu n/777éSӭ@\|@8cXFG5BXJ"""4 19ׯ ff@ qd""cOO v6 ;@ l~xr/l Ѻϟ?7lL 'N0C |XX@m `y \ "߯ l@ϱF`;p,;M=9" `EgG;qy pz͛7@ XA*&QQQp,UBjbb ԌxXYc4!C>``xW. @ݻ `+yaaP}䉌wb_Un3<~ATR^z]vKX[c^˔3(j2(+);k 3=-AעeX;;;pp9P~%3^^> ~(s`RR_`.6׭[PQQd`\<PA,ca +8-7 ]:$2B%//'ѥdOfbܔc =`P%Lg$j>+cy{U%T mBk-|I)QJ]w)PAC X,lPaM '~]?|`;X@oܸ?** l` `@Һ y Jc}m@ƇE)V`!88\2/H ,"gBpP6\5P2WBBB`A@+@ Ądê}dzyy1U`MPb~30 #@T3+(  5= dT _k c`9#@V&u5I\szt ́y1 E44cx@J`S\s0. cÒe jV*Fccc<,iJsh2z Ġ N ^ @, %0AM0G;,ZAE?8A`GZ0 kK9pjW|:0A ?<JH @@|Z/0CE\\XZ,ttti20 Fa=3d#̇efP,P@|OA51uP jZ hj 3` t:A Y k"â9 BdO2v-4? ȟ ?@ ~q"@Evr@棋!;摓rRa,BoA`R< @:4N9q(ؠа\z {d >&'ǏC> 9`ƹ ʣ,+"l!MЇyyA ˟@0 3@5 >r:EM9V<2̱0Apl9p v`9 .";=:̱9yw)A NGΞ= oA#ܸ @x;5 4xmK0#װ"CN60'AlPln}0@,36`k3W`D y|i1j[6o|o@Lp5@-urbhP \I8zA/Mf 1 @=[-*Z9a2r%yc G2+`  |F3)  :+&&6յP /Na]APM j,c†A8/4/o߾5ƍ뛡͛gJcw#+ߧO>VFvVpwyA0=; #f|֭>| J:w@. ㇓zǏ8O<\l\03<{p, q00p=JJGg} $XD2J2 PGaW?n|w MViB3]!?%&f6` RUoˇ q0|9 þ '{W|ڛ @AT#/]#G.AM ?H2l&'%Ó>?߻w>1 _b?ûy_? un_V`Zv঵Ms/@6Ĕc+?.!c}̳?I1ȶdL8v\h0x| 8uE檹YkdZRV߿WiE')}v ߎqGLM4i7ڹ`iA%t6Hx<ཉ^yɑ}&Cl_kJTb[vx~GHGI#s$z٪ySl(/LٍzWeepOTBXY jR}z^.P*xhyݟ77݂ ivcQ2N_$@bꐩRDRV5,-k@pwȅJVR@IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/personal.png0000644000175000017500000001002710342116365022047 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?!ȈW^M? )#77;3пׯ߾|㇋~?#_x׋;h33&F (';3fÛ7_ypSwڟ?_ɥ?.}TԮafSPWkQ4ggc`abbï6Ar@c'vn;s|6 ",mT8}_@Aaifg 012pq2|a ݕwZ=6p Hf xy,?~?A1 nVg3,_ދgS?~9whdOr'@uR&fF֖1N PF`h<$> #ĩ; 7x_ozH%U@R%FCUۯ 1201Bx'v':q?g,?IYAE97?dyχ@s@ 9$D~o㙁3(3JmDr`h 3xopr`xpߑ[;ǣb,@%d&&vr9f} Œ@I ' lq80X MFNNB d`a`V \ēX6cT~6"pUS};Vp_&1_ J?8X1=+3ȡ`O0c7$)<,}wV)>Ne7>@Dy v_|g`VP)d1ʠ&åL 0K29|=6# w@1M@j5@  GRbbd`0nAVT37_3;74ـ<dI> Hl*@A~"^ eax_,W&?sn.6`@2= 5&.`O f}X `f v(( p ?10c_;(`&c`̐l20+0P]0Cˈ2{b̰#ã}!ad N6g&7nV`lJ03Hp3ȲtBD>4yZ2sZ3pK`R+2p,nALv5Ea o N?=?g}dd l*'s3212 0iQV1av~^ ,Tr@g//\X!ϩ7efc@ π*: X3ha0_0Ԓcgl @ j123IQ?2 <畏*1Un5r8@9 l | 4> k3} |kf/?ςA h!(0@A1A 010o^N@z"{ax=1l1ԡ@6L, D Aj@|K JMb g}t\BcLCBPr8 u0 YS׼u@ᆫ"s~c j{4 >0F*+C̊p8|Y?q=ȗ@W03Տe5~07v 1 IZtC b 9ϰ=ǟSf|/Ba Hȩ׺`[⛯?QC&$ w0LLHb?|*eZ݇.yr@;* -.W^BЗ =6i%#X??yNvM]_ ݃wbDɸ03mސ"%@*vf;psئ˷~0>zO_%A]Wz| F G@toun/03 `3Zϴ9;_a_@/Rƅ CL&/_v_`ϙl `擿 _\t`KgGOZT~&5<0ifq`{?3KGH=\H1+ᓒxW_dӣGw*y (̙!$ ..x"m`c`Pag`O |kNpB%.w `u? r0 1𑁑_&9n`_?:?(guz1&: &Ǐ߽q;4Vߟ~kXX~{c߿$$啋 AyG_"D_Qi`Ơ߇w ?d=8hANJ=9hcTPP-*auD&N\eZaa>H(TEղo_14 RؿƄ0yth@${`ڴ?~luqq!hBx0|>P1F>o ** qu/ )y HO:$**l3CW:/Ɋ f`avXrp  FPXil<<4+@E-A O Ϟ2 ؐ1 3XpqM"%t7x^l`r8Q l\Kfg8''0-ȣ`O0i^55 W--e\ĸ H? 1qPڇ<(iBXع88?eX  03 pOXe&&"+tşBHAq8 !  2ݼ&V`aXBYvHbAKKHD~o@K!9..vV`||6 b 0?ck0 .`˩ۻkB33z )kX/i`Il9XO3| q0#4>opaz w@nN@y %#b!2倅(A! 09P;#&`^2yj\?8XTUUу6|{"*k q.P 1Xҁ84_ ,oL`Laf=- 4`1 fٌSQ%0f(0PK+ݺtEWv7$rS.5_%-mo0"GTvwub(B!Ԗk$N#)M1mf+ bYbg*wNO, 3DࢤKGP" NIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/system.png0000644000175000017500000000604110342116365021551 0ustar mikemikePNG  IHDR00WgAMA7 IDATxŚklu샻\!֖h&EǪTvbF䴮`8 5 jh (RR!AQ)CIĒ[zR$9Ę&E!.]kfl%%r.s?R0o/ކUWW>z9q#G-г>ǎSSSZ))8qmYVsN&O:th%onn~߿Qߣ%IkK/MAkM8fXlO̪~0011A<GkaxKh^kL5Xh48I8&>Zq]xhhp%CGG\n@B~[\|_{X֜E|>nݢ&&''QJ8b|lݺSNH$PJ-SA Zk(=dr'eth4JGGGyZ;&ϔR.ZS__O0dffXIK477j*7 !(5Xa)%~T*uWid,i.R"Lb}L&qt:M"0 Y0Md2I.fgY3055Ecc}ف\BO** ,_r)vPGKe^v/!e[Ⱦ%k0BLD)Eww7 Zj)6)%xRz$,b@JYkzz\.Guu•{Rg1==d{P){*bppH$Byyyh1Rܖ@)UpהR$ t{kPDq0nn0MR3)Ӷm2 m#XEۨai e›%TA!U@1[0@Y(u:oBl.l)ẁ k,ŀ7^\mFJeYFk1-P_!>)J(.f-}9Ww=RElf!n@ok9irZk,Z/Pju^D3|\ٸq͕aX,H@A>n^/BfYHmc JN ZZZa```y,,|q!{%հ_ )6eeU1`@ n&0dǎ:eW.^)KɫRAl|%>J Cp[ >D\)۽X,F*͛tuuΟE;@{ pbQffl7&0MVOœ!t?h,7EeeeTTTP^^^Ⱦ[T *E,f&r tD#e`Mp1Q*[gTTTy|7z|SRmH$9p]eˎw @qh`%Gahh8Uo~v-l6U]]W^y{Ν[ZZZBuuuYfX6* ǏSu4-P4Wl{1n?إwy8t:f_5 ۷]vXECCܼyy6lT*E:.x&Yƽi Gj~&6}6l|ё80p<(mGT o}K4G45yq1z>"8yp'99y;B(!ݛ:mA|y *+@C9πiS ?_\?KÕUl 6>`%,gBi$uupf v?~p5u'4wjY硭ZQVNʇ !|Pa8ys{g7Ci)jFG>?`/!OZƼ|-pt r( zw=NonH[)P 3d+W1X Y*`4O >M(L3>cퟁ7a. T *Hfa<uXN:{{_}6i'.\J}U2ʊ*Cf*a|$>MeQ)ZSg-ڀ?( * u$Sl|;;WGy[!p\dQi5^G'wV&&ӛʂeU}g"2)`eQG?8f׏@+hm]_߸nH^B@aLL]ٹ3 S='iAUgtlo W v4lFΦgo hspRmɳ*1"&L;-ʉ7>BIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_new_group.png0000644000175000017500000000161710342116365023271 0ustar mikemikePNG  IHDRabKGD pHYs  tIME .6psIDAT8˅[Lߥ( ,f008Lf49nd&4$.1d\%.v]2:4)#*td,]t-}LJ"mrdA}Vk33'{zqlTzW J$~AzcƳLyQta-9(&"`8Z;a?bUq+ۻZe[Z8:R J`Y0 SĠ]oR̗OW?EcyxQPCB*?•RQ(|0]`@8:`EMvI 8,^W kK g%p<ֶfk7JR! b@WBF AoH MC7LC` iPkPV%KQ4 #}v:'9`+P \W"a`:UN RAɂf34Mz˜ab8U9/(骄d"nbقj*C J G[t@1XKoө3>yePؠ/ /r>c?%>X-׭@` Npjihtn؇3{hj~ĩp/?}o| ~ALѼBIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/editdelete.png0000644000175000017500000000157410342116365022343 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb勏 w>f``cCL@auv&7àk00?dx9++éGjb`y? _c`*b`ݻ-Vfff6B-;~`Wo2Nb`߻Som3&1i` #\ @$c`9Q;wXd->YDԓ@,0& .O3دnf`xᷖû 5|a&&p4@0YX8b`xo;P3#,! B/œ;+^dkd[ aWm@qrAmG rdo~E&3|^k,| ̯^120z ^0sb`tc/+~2|Xkz?^abknA>`)V ï^ +J OuN>dj6?4gs531|LP`^nJxIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/banana.png0000644000175000017500000000142010342116365021441 0ustar mikemikePNG  IHDRa pHYs  ~gAMA|Q cHRMz%u0`:o_FIDATxb?###!2@ S? #Co _30'}3 2 mK t503\o ~~g =#޽.f>~ $?i G1_ _?c`@e >}d` l b&U`b!̠c +p9n>fVD )f dxr:↍Z ?g dpb1E| 5Ă#D5o ٹN[+" *H-@⿂8 ?Ux+ϟ?EZƠoL@1 /o\ñ=;`@E,g`bP4KԬR y8f2Vd}o63۱AXV!f rW2Ao0}| <ĕe2@@ǝ'q$0G[6Ns)b (=O R_8IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_macro.png0000644000175000017500000000163710342116365022673 0ustar mikemikePNG  IHDRa pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb?% &zA쀀_|ygE/1225, w|c_|`k?y鿟tׂ"``e`0ǰxb&̙3]@, ͩ g'Po ϟFwGv/ Ƿ/3Y5ASCh0m ?~|khlld,**/&&PQQ@0vgu-M_>p 8כ Tq)I ?1}l˷wBToa 0@|r1t˗/ 030g#?~_`02be +V`4 wTq 1XYH18ç ^1|xpL[`w 9 -WQvANfI~V+o2ڿbh.g`t k ߫0|@c“f2arm.(C{㑅D#ÿ@C1DtfX|)#@1:;;WVV DGFF_>QaNׯ pr 1 ( `Z[;/^LU@3ş10PSc`6>~ 䤉DAQ+ 73̟"CB%A^ FlY\Ah7 FDD}a&?7 z",aIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/login.png0000644000175000017500000002247510342116365021346 0ustar mikemikePNG  IHDRvqbKGDn pHYs  tIME  b IDATxOoXqڢXHj1@2VzUpq\oƞ78za8Fofqڕ2.\@(HBG}P$-<$%?DJ _?sf׿* hQ Ի_]]I? >F5, N2IG10L!X3fff϶_X ߵgFvs>"f5U`}i)wB333dS!b0|5_X5*}s*e$WWWT؜:kquu%~0/`Xgggf kJ$D¼F򋈥-_UUѩb +~zf& 3_ɤq1+Lⳋ Q e"I?f7p"T,ūFDl"0 #LEa"t,h=PDĚԬW3bŧl`(bGR;H(-ۂc+Q}rE+.KA8bk@4\W2bS+j!5 &B\8 &Br&aEl)=8V#$N+wnhO dElmi6zx @PBݴ7❭; LFl&o>l[o?ψ1`@QZ:j\cb! )֑m㕳4:P bD,RHA  D,RHҾجۺ;)ZH, b b@ ")X b@klERR\.XHert˘ɴuTu͗FOƂuy8}ݚ&QJLq"[ew;-W`ֹ F5\{78ss<>F/bgY-Y͇O-:B껍YMu5w;cS&Η+EϦzORkn__&'6`q RHA  D,RH^#fXH LQhRRrDe:5woyc"1smu56!El9G"1Uio2FDl[ q XEQt[d݊b`P߽-!-ǟϝrY/(Wrz\a~еY-92>6z[0~e aWZփ"%6 W!/ʕ߷xS)WyJq>|vߟ~!bu.v0_EY|薯LN]|Ւ7l_`į ‹Nו!{fr'k:e#nc!Y-7A]@BLN]|H ͇׎y ;{Dʾ~q)|!0 Bw<~'+Zrߣ*],6\d#yR:_H j1SW@D]_XX,o~$: P,E)Z׺xcn_\< X OW筟2) iXۄf ]ML"+泚s'l׺/ߟh8Kҿ pcSw>6z5P9Rp3إE 1;,b(eM"eY98̮XJ/z~Oˊ}Vw;9̑\qE[F  Qer)[I`'UxUlexXHerT8 />6z   D,RHA  qKj~Su#&--ǟ϶/ُyﴌ:(y`-A[um=(Zr}[{LN-WG˙ׯ~gNSs)S6_Vw &BCŵoo/@Zuvr*Ԉ}W;BjpC&"CY 0"ykSwsU>@"6jMUI qX&e^viWDmp|pE'hDl:-Qe0 o??/{99n *ElVK:?\[vZI19f\?L2굮l`'"avi.V?q^, Pϋja1 U˝?ŒAD+Ԉ-W4ہeg{O {w nK0q/͇, ZOXJ8&29umcy{QI Ͼf} 梬KAy)Br0LN-W4E}?`V0X0?iD EuZ  )V</괌[GqؓՒR;b"׺;[G~+ww~u_׺+,Ssf*l}'^@TBN=կWk!so2r*Ԉ}ۑn-=e1^vZca:XVu[{p EluV6>%u,aWV?Z4{#7 Bm rE+W4ۛ7%|VK:6Y@|T:V!TeŃrE+k {a?x,RE֣8-_o$~3YfuNjmp*'1:imWO1I Od<<㶫uXHX~QwXK,|<;[?mwE|uՒ#A o#imrw6)#Ŏ1븱Gpu"vӵ>y!mW% @|EGfdrmtz]=x?߱n}l,|C`{sgGی++bZC )IM<&w#cbanz VƏضn}I{<>$TLbe"I1a1IXyӢqɴ(kBJ+oǝbq+bCninqVKJjvx|E3\\ɒfWz4"n6zE -WfrG!{i.Wx|r'lk}\^>= [h=֑G\{`~ lyī׺?=b{|];ޅ(FoQ7{?xVVKR)om>x\{ꏟh3ug֭ôzSS~)Uh֩"hvT6 )k[?((,tV`%ɐ݉^_|웱قQB8'eCqdfrC)K&B'NY0)?NB|L )fr|,W+`RHLrE{yu42c7B鳯K$rLN]|<~AK&WNSuڬ,4 \Mmfrj~Lhd͞ )&\S 09G0Ť(D,RHA EkwnXa `:D7㩱Bj0/H\flEWXJц0YDqh֭׺4SL#vg^fn}g ((J[: 抢ko #Wxm ؽث;/\0[uG{ǝO;[GC_ Oim/hggI ODluS[}Z,6Fgm,+ZKGj~/6Dmbgm=vKz<_7~'xjS,7f_):Y-]*drƷn6=fdq+b=<~ۃ)*W4O<,c+W~bW6Oߗt]&-0n6 _ʷs[M! #֣ҢfV?<+Gl[w]+ﰹ1vavyX{@". ֊˙Ҟ 0e"R*4ReaXy>y@<`R(vۥ?ZJ0__s|eZ8]vѻDW>r_Ev=:7"EQvڽSuX@m;[?wZ~7tZioĖ+RO~>kL ;=~rMuu4j9i/R7P=[ݻЬ׺ZXJ3Λ6{k&_Mm,]K0m|Çk/A|-n6zn]Yw6-~OT KGBN 줝0wd$C8 0pfCqyeײ+`" /eə/IDATWUk Z׻meu>]]]]]]^,@T"]V9X, @RO}-ĥՕ̌(OnSΣ%fr|rO W_Yq N;a1 +]Y׺ΐ{aT~7jUâOgggXtf}p޺b)m.AzAjB*Lf󳳳D"!>J$D,L3b 8======;; ,bpzrrTU'D"133CD{vvz`2bkߒ̌aoVU`Faggg'''׿y͍7oDFl` D,RHA  D,RHA  D,Z/>@ ")XF09D,כY.nX7ca{iiCpfffğj}HWaӳӓS0˫Ϭ 1iFDk}-K!HqX&5`? =bEXZ_*MXjW7 T٧ZU5\͚UD"!^+ 8:>~L&E֚q+Vv6lX[:;;{yyi-aUtNQ[|5A9D9VlyHSq_XTrD"LTYwb͛zyyL& a38m*d2y֭d2)Zc{+^i m3_R$uTȊ{Ś^]]Y7^;bX4ɬek)|Y!"YX0qW+̔+bͱbldUUnWJX,dmYm굢v_֗f^^^*1K&ΌS&38YmlI5ogT6np[j^i6\,^*#_^qb/SVoHh=aKYURjMaXZV$+঱KcXOq+ Uu 3 խ[ "f Tןkfৎ]g&K7N5StIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/service.png0000644000175000017500000001004710342116365021666 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?P0@ y#1~ofpq!ɓ^?"ogxǁ +nF18@_.ߟĐ13=@xcEV{ @/Tp? '`'/PΠ  _?`(2gXibA|X ɰ `P8ĞPE6   xEf9 T'h \ +dg'^l/IJ@ H}d` ,qyP0u> xa" /0Bbe CO @Ē@,7"íG +0$ưC!75=@ppU@tq|I`'!#4s9`Ѓ w2ibH <@HG@[1+@|GdbV' #t @!X1L1 DEj #qx AC9Č@3~b`}bhC p)a0C,a|5fsn.I1`g:A)ģeѷ ?^|dE Xc0,op 2h= P ԥ [w0Xu&4'1So9,^|ߜ_}Z@1,UPBt,, ay]ޟ'OPRzTB31ЬL-9:1F ~%1}`z9Y 2bf)#oQ/T M(!@11D1F0h2/ch BM4S0#޻ό҅#̑b`V̐-,6v^`a3 7>3? F@ fhX~[ | 8dy;6Eh`.uG[2|Wb~#C>`!,DYiBV x9ؙ~A#}>6~}˫W(<#ZN oߟxs2U %C.UL,BC-TZ|@|ZWY `i ?{ǷI1v6f`e?~exlw+2<5bkVx`ڶ:J3A;'(N@;P31<0$jh\zjD$+?;fa+&ܝ@K ^c}vfhs!k[/"úWݥ(^<ݾ< yAIAʟ@10z"\>q`H}6?ll NhHb@lژY%v@?(vh{4b[o^ld& f65`EЃW pz^  ?iesex%A;VN`ee X< ȃ<4L_B=L w5 ȭϿ)B",@G-HG /tW1|dga8`%>O?0\va+yPA-Pi4ݼмˆAGK`,aUdxZ^akܞ?NIC5kWz~xgn W? b]]B~mNbd/m?![_ A ń&+[2`Xn?G9?I~"]q/?GPa%,Ĩ)/GV`=wa>ⓦjRK m0J3s׵ \m?߶6l\&Ŀm}z=h @^&(& w^0|zS=~rk~\Ytx{X ڂ?X&2V<>2gb~=|˥io.-`^|-w6e#gCaL~{12 ū5Ќ J_{B~ƌG8Fn7ЀxZ(A MhJx nZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{RICt-{b7 a՗d7dGecy=/&$P($sss,@@drW|Kl;Nx!08mcDq +@!谉$I,"e-1EM+FtXJA“Gڲt]GDQe9AWW$^\&/*#a&~?4AW~5/45IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/expand.png0000644000175000017500000000026710342116365021510 0ustar mikemikePNG  IHDR/ebKGD pHYs  ~tIME  DIDATxU 0Ü.Ӡ^%DiГˊ-чl3=)̷଻WGGYDZh)7IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/default_icon.png0000644000175000017500000000364510342116365022670 0ustar mikemikePNG  IHDR00WgAMA abKGDf>l pHYs  ~tIME 74"IDATx_hY?ID[V-*KiwEjT$ia-HuJV]\A} ¾*Ex6([[TdKڅ&&&3wfχs3w2wL"Ýw~93sɚZ1qgL)===l:e*x^ĪTx[HV؏y">~}<3;w Z#+򛿾hK|%\"Ye? BDRkk+^~ ײ=>-hO9,[6$ , $\r۶O,Fg֚ǡumcFyl߾ӧO"˱eR:u z{{`vvb Lw~vsss M(;.bah;,X ͂UӒl-YBPVmC:la033qF<ϫG>|X]4 ȯ8V Y"eY8^^nܹsCu0 BP6! 8H868h׹q/\/p{"\4F*$(f %9\244C2_ Ƈn|زx"?EJؽ{w(@IΗe&''ߨfgO*IoHk 'hdiDƵm:J@Ν;DJdU˙8sJa[uݺp}q98Dl>l6ߐӚƟ6/>_W4_ͷ>R ~ԙzÊy|>U}_مdB9|? <2.xGqIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_new_workstation.png0000644000175000017500000000147310342116365025025 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME 6ՖIDATxmMh\Usνw_N:bK-RP b#Bh(`;[ҵ+YPHш5L{>3G}{[\{QbP(fQjKnnn~,k|qm' ~>sk Ô0Hb{s^8K5jq뇈"&^Nc% 2%{],1m4I/EDFk4)Ø#g1h6i,ϻ!M-As~h? =iH=~'$Mh$N (HFe;8R)P(x9c4 Ir"r/"5ʔ+%ʕ}sw֪%=zƻC >y˽VW~)@Dj"[tIvݓl˓NhW:|efO.YZVޱOO D]A1~0|ݑ#3V%rnѾYmg/]" [o^E)9~Iu1Z5W.JY@jޏd)uIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_template.png0000644000175000017500000000100010342116365023365 0ustar mikemikePNG  IHDRabKGD pHYs  tIME+IDAT8˝jTQsF$I'2wP, | *A` ̝sI8Y7{\fNf2i|&K4wQosWw0-L'V ];@ 2B]rΘp60!=J)*ç/#ek C1wcx*#-BpV)59Y%eEEZX "U@ {߲"jʰD Mc@Dz|"P.AE`-Xk n}!FC z+]l0|CGN:JtKӵhE6lb>xzͣ~}'Oug9,IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/zip.png0000644000175000017500000000142710342116365021032 0ustar mikemikePNG  IHDRagAMA7IDATxO-yKK_,Ж6@-m8`f=\EϞX; ~p`$j#;HҲm//ov/o=8ms^.2|Mz+sssߔu;wfL&f3R ,v$Iݗxwtdd$IrxxlFu A^zG͓Y nKR+"\CCC'''L&ubPNHָËvPx>MFѰ,h(e \y<=P'Dy* \gBMM{$t:)E,A-&0 i˪\r:جVފ^&44M$8SSSϯρG|~V+lLLLH$-x!E=˽UWWL&sxTM(Ȳz0 L2;;{7|/p8<>::Z["!"&[<IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/closedlock.png0000644000175000017500000000135610342116365022353 0ustar mikemikePNG  IHDRabKGD pHYs  ~tIME $84Fe{IDATx}MHTQ81IR*CPw)DZjpn (E\Xʍ"4;!Mgq8ӌSgu=\ιuo#mmᇭ͏Ȳf\zrTw^áDZq(*# ɟZ&hVBuEέJyi3 iLuNWs$uUxv `57 'ՑPc(p"D$ nXAT)y {ˆP_ <J܋mǀP- qŝ;_~ʀ@1Džڐ8ʅfps0 * Kpp!93@`5 *VEXp@5lLl4m-(``X12I#2l0ٴ̦:pg*V7mp)āݹ[IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/phone.png0000644000175000017500000001024710342116365021341 0ustar mikemikePNG  IHDR00WgAMA7^IDATx{\Wyܹٝ}&Y?bb\!«( @*?ZQԨTH-*D}@BCKj^~,/n CC55ayVLg=ڂU</ mp=B|oع*<(\6ŢkklNOtLl~77ݟܽݲ׍" }}ρX! `sh65oN}M!q=\)DsPݮ %sP6;kA[ixAɇ?G__.m. C#yh Ib`7m۶MٲzUKyX-:9I+mhQ}DسWh`UA5ahƒIKK{׻x :5OcT/zՆZy)Y+EfY$Oؕ J~Ww,TW,_j}W''Jsh_kZmQD7%Zu*q` /zAjo.5[޸{ c00v퇽o{578x#v4*AibΓ&bm۷=/皟$| eW q}?`#@1[,K>VՒ.co3`Oo?qͥ'.:1-aq 8p80+׮4_{J3{μ b=-n[j[][dǼ\k=oGo~ͷdGWsҞր1a4ֈZ1!7spAk,NbݽP;;pmsS˶v|`kN>[ d(BZ|NpFZXt-Wݸql7Nl)}DHl5awm lR3f+Km?;k(/Ȋ>b9qVqReB`)stg)Ca?t$ Cr~"ð "qj-vk-Xcc&j[+"N%%\G99R ,$  ?On!RAWŗ`I`rRl(EqhovOm*E48ZPKYM, )g䖅S,?)mn8 ]撂2a/F:psm31;!I]yNers'*($yN! $Į]*1e(=8$!c=tsMb"3uj_kѩM 0;x-8k( i)ўTT*,5>++e2!XB!`}n+& +?8FtfgMl2c+t΄O]ȇ}h*ѕP t?$O..R(m u]hZ<쳔e0\Cϖa6q4^mG--QUVW}?|؃5]`":QZR-q沌z]Bp0$MS @*8ell0 9=7:AU, hvR9wݰR\*Y.BZ %RB_.ӬҔZLŲ,|ߧl)!,*iHfAJ^lR,l@.2`77}/>ꈅE[HAV =; ##yNٶatm8}S.W_}5JVeYرRdTcffqX^^)yΝ[&<8YƜ 'V%bI?Q|Owm;%ܡVBAJ<umdq4eaa~:A@ivv$I8q籼L-pm<Ǎc0$n4mir'<|pG5M9sׇ=<v}R A:B<'"x֚o۷tGaѠn|ji n3d!yHs$%& \ǁ8F!Ws |=Q/zStơV-MZaR u9{,{Ak} O=Jb4bj#gDV ZA .]$@/^טOZW--{.s1ND_~/~Z)q#IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/dhcp.png0000644000175000017500000001110210342116365021135 0ustar mikemikePNG  IHDR00WgAMA7IDATx͙yl}?N-AZ 4)zpQiIh iu%;V؎+KVlYEKJK.yW%)EÙ7} ~aAfsK/XZDLe/-FSx_W_uR]-ف-] w ܵEΎLk zq4jy G[wM۞H|i [nݵCܱw[zhΦ7ٹRU\X Ns'co|#yonǾ{=X:mkqaU\rRK9\kc|ץ|?<X-_i6<'o+]#sPZ<)1")!W)*~t2_+i /1P ry!x0oI~1dbrI 2Z(ePVm2mSTcIG{+k;BCDXH!^X*d1bZ0ơ9M8=.C͏?涍cZkK[9?6D9XF)v,(#PHcKsSUN7BXhnj"5Z&fTB:;:lh$c`X.!j}χv{hS]Y4#ZC-GJHdžuؼ~5Z*aD*1l&,S Ⱥ^GK NӇ0+)$[wn`Ӻn6> ۙ254e@T:83s/O`ZPD&䐤@XRdEnP*,Jx$HYN<ϓL 6 ײo5 Ʊ"ٺq[vn"7~Ls7$pK6qvt?KlNJ%6揾8B;Pcceb)NsezS<޻0dR)^Maq8ҚH^vl|}lS`kyM2Ό^9 r* -cN9Q4F;.Ns×Igعy-kV;}֥k "nj~?o!S]:K~B(Wbʕ895]369W+l\#eh|5DžW~S|oU~sϾ-ı!54NtkiT],UU6>=S(XXX(V"J1+Ut_?wIuR~Uo05= D6~z2ǑT0Hʵbb5luUCR~};~k TqTwNOPƵ2ҭH?8|.ܔKg6NtjT=/qP?֥8_:?։Qy2٥8vo~YhAZ7$ 0Jrih ?>׆I8lVWugN"F6*4*%#ӳת(~*FX!xin^0<#_1R(mP _(Q;?| ?ѡbz"*O?aT5mq/ikWg](G8G5bCI~#ӎln2zgyGJ{usf5]\rjX")+Ri逍ܺs=s"z̻̍ji?\6XڜϿx׏%ղi%R!0<ܲ}-$tbM[s>űRCJt*$*e8{y鱪+]xXvzb%Fk{LL8(V 8C= l4<)%k6[y$koFkpch!{ c,J;,B΍6mcll !%~ߓ|I>AKV#~ *0{iϮx)_ZIYKij0TTcUXeh1I; ђMXȤ]9z)7|.m=,*̗٦LZ}t* OAl4iҩjesGKSCE~J+q\3˦#_dgGgKog3ã'd<0Z!A 0HWvL*DX6:n-n&1Q*_Z%yDQ12P dBT(k-ٳ)3055ŋfΝc8y${Eӧ)l۶^RQ111sd͍*8}4SSS ϥ>\ `vvBo"`޽H)v.\` E~;===\pr [ošC[wu;k΄u/>>Z[[9uG%N76ljj_9r1z{{yaxxƻRJ|'.?Ժ7h|gAJya,RJ9x ޿qsOkk+ ;whjjj˥mWRhyDyJ%<Vy\xq`||A Z322pu[LM%b]ce_Ç}?I\uj\~fօYf[ _JZ t?QkfIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_new_macro.png0000644000175000017500000000146710342116365023241 0ustar mikemikePNG  IHDRabKGD pHYs  tIME#2IDAT8ˍKHTaxͦ%D6Ѣ=MS$f,A݉)E"**(qR%1%YmiSѓ1cjs3::{ZA-Vp}_'$o)9$e^k~_bXCT*h!@CD:qhJ!0$2@R 0GBDZ3q)4ˁeSA@2 C>h$(ö!cQֽ*wn H @s/O/^srTLO0d%~n&]JTqFhJ: /q M*f!۞cAt'0MSZDt"HLiLplI=pXW;FlqYsu445`04'm*.v5A3gKrc8Kr^)o'iqH F 5\)%FNS8u$neh9ш>V^+,F6Y@0ڇPRge2MS|;$t=XA9|\6Z8֧7]pl]RAX>M11a%4_~A6=ݗs5x>gϵe տ;m-N x޽N뭗xIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_new_app.png0000644000175000017500000000143210342116365022710 0ustar mikemikePNG  IHDRabKGD pHYs  tIME 8ɅIDAT8ˍMhTWsL&M8h*Th w u*Rt"] U+"1V?(4񚙛3s=ŝHP|/sx ,qf v\>T>EY"ע~ h6[ZFU9Uis]cgo:o"56jމb _s`0`'wS/; l6C._]}P今}N9Tg9vi2ա]Gd6/^GwϗONh9Zک^x]lqG `3'(7ѬghIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/save.png0000644000175000017500000000112310342116365021157 0ustar mikemikePNG  IHDRVΎWgAMA abKGD pHYs  ~tIME   A IDATx1A ll2)N X)>"7IU:QoUYD9ŝ${ 1 ط緳!0>1pGBBB *Of!xqy{{{lp849g4Ecv:HUU]~/3uzU'߿hEj>Pz׼ck<@~yHta*wr,9汔8|[@*«޼jPup4'O+9iYju;PDU]9l& ~DJUL .YaZKݦhQ.dYF c&ɢ<OӅֿ7Zkk-YQ0c/e%I|oT S*tW HBi)oDXNc'IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/sound.png0000644000175000017500000000160210342116365021353 0ustar mikemikePNG  IHDRagAMA79IDATxmK#w?$!u!DBmͶC!BڃЛ^RDEdX ?i%th&3qn;{^4555 z].r6HCX k&nvS,1M4T*n x!|!kDAY0 ]1MUUQݎhf&?*[@vMV$I!u^TUEeE!L室x<uUU#`/^ t:xjL&_D&a48;;tZ4 au]$ ""ȏM$i^e˅ndYCkKqʊpIOO^˅aݑ4_NNN `fP(h6r6%R*`||l6{K?>o, '&&fdd}RmIj%J%3  Pe;IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/hardware.png0000644000175000017500000000150410342116365022021 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% (DIJr啗o_h(ß @@/?D _֭s:*Uؘ9adw//1830p13po n@AJBb3  T=K2ALBK %٬/>Ǐ/ CaWό?ޱaɠiʠ݀A7 , 10o <\j $1<b5#~&1 a7N @,a231y&,wj ߘ00rs1|AWALOA߻@, ve R _0\8 ;/wx33X@ E 5ca5 g'pex[E >H0 #-) 1ߏPײo;#3;@L [of( 66o >

    l@ aπз1?Ёf. SA.QNj(@PX A   ;Wfk(`0@a r&` þ4f0@a5* ǰ_[KWB^290W:FȆ2|o3@1Ja 66EEpR<Ǝ=ď_30|33(?Ɗi8@1.Ca>ȥ C1/"`B"  \*h7נd1܆AleFP)EL⇆~e&#nhb8(S@?G_c /AYqo|Dv,ޟ]lef08%] d?-@fJS`K)  ԥ3 0&Py DWM@`.EyH 4IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/ldif.png0000644000175000017500000000536110342116365021147 0ustar mikemikePNG  IHDR00W pHYs  gAMA|Q cHRMz%u0`:o_F gIDATxb?P0@PRR"ڐݻw볱]7GUbį_~^^^ĉ۴9޿O -غuk1 ?~t~@1D&!۷7 ..SW^1<˻;33޽{"̛7O\DDa%#  RRR /^cfffmA@(<@D{zjnݺuǏ߾}c`<{_Ӈ݁F&/<."IIItttzɓ'`ywށ1($# =pʕ p1Ϝ9NyP3ÇXXX$%%X~_R<@dy`ҥ 7 {h>a`^\\ l&@䁂VWW_4K9 ˗/{d?< AѠĞTVV!{ HѣG7CȈ,#;Tbݿa:`q y]]]@eh3s6<+@#r#0wh[[[{߾}p.b!k׮*q<,Y\ 222>|.`m(] u` j=2? bh 30:pX @E&,= 呝;wC4.AwY@ k?S_`~@p>PX(y$ AL 7ưHXhPhjt` Pc T U0Ê}'{:5U\RqB[mPRy| @+|Zi+<3Ňq5 k+ܫ$SU(l4( aw5^(Vv0, _P Ho8PȡAI4 ?P:hFXnp_5 " ֶ( r (ŋAX t7 @ 0&?9D`l0IJJa5+ФI@ d{T?@AfGuP X APY?q0R{C!y˗/F(`$ Ǐg|CP+PYAL`6(}AB f6AiZ,&4C00aP?;V*ԁ<`Z{.(OB}P> @gE7y`ūrZL LH?l<{nE"@AJ"0qXVBǠvLÿ!> bEv,aCN`a'WdO>;ȡU%L Ah%t"/ ,5A<\{{X $L l.<߱>%1 )aiABv(5a1 yP>>@1[zS0 wa0aixX L;wnR @GVe#r FGzA?px[@:K00( "(݋Zɥip?@A T#ek\'`1>/a:`Q( pQwnh>Ăn uA y(ކGd<Լrؙd,T ]{?Gk|`0iaCGhDj @ਊa9yH&DN:N, BHOh!x I`P aa=#9Q A!Ќ_P ub<@`ܻAx/jgA꣢vQc80sIjh`H8fjA%(h A-`~CEj@@;*X~'TdboAv<'gj  DIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/list_new_department.png0000644000175000017500000000131510342116365024273 0ustar mikemikePNG  IHDRabKGD pHYs  tIME $5)RZIDAT8˕]HSaxvvvΦDWQZ4}.++ꦺQ (Ƌ!U`AHPAA7C(̘4cHgtN.έz}W/Q#)+tAсZ5W<ƹ'uOB9MY[uL&E{(#A"qq43gkjS{U\B{L@=\Vƀ> &8v'=5^-MAAyYolad7v >!y H4! )g L$`CV Co"!pj06 Æ}|DRBs9gK _w[klv333o*XYYPJ}gbbbrhhH1s""G}Q~KD(!k:uG?|0DD… P͛7,//Kgt|ffsN9 XKhoo,aș3g>vy366x[vH[ǵ$If099W;JsZ0Io;{XdYVSJ!"(dl9qyɋ(, pT3Gb_Casּ4cJ ^kz1^UӶqk]t(kC- AEoCJwrе~#$z BP@s#6Aaut6af[CL8\AV܏(wBjKheD!n|f6wSw]%2MR JaPjh Ie,-au ?Dz~͙W=-`grsȋرűEz$_ݘzu# ‹{ág#_ȵ'ӞBU*p Jpu9"x|b 3(ل1aj0}GZ) "0<8Xka=%!`880Ll6y^T&ҰTqc8b6z6{TQAʮJc>Z(3>y4rN~nFv]HYj2$"Vz(ۚYCZ&Ä3>%>^^~%̷=1WubIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/true.png0000644000175000017500000000122510342116365021203 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<'IDATxb?% (8Qc@7 @2@ĬHl(A!A X2lj okȧdP}گ? ?YB/oV qj $dIH6]'P"@10" H3]"rTW__WہÀꞀOS ; B׀&03$0Z11|88> F1  F " @aC/Gpr000r10 0`^1a8ph:P"A %^`` S @@14%$@ xjPM3 g 0f6Or n5]ex4ؿU |i X?=L ^5S(\ `N~` /, {b,HIflb47Ź QU!6IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/alternatemail.png0000644000175000017500000000157510342116365023056 0ustar mikemikePNG  IHDRaDIDATxڅMhu|dcfv&nHi"ڔڃR%q(FփTb{(TJ! R")YXj$a!eH7Ygc3u6UAz~W5JY8z}]'ߞ?:ߌ]S FWWeeWXXXyimm{.^̊ ağڷoLF9 Iޭ`%`tD"e%c C$ ccC($ۊ޾]: #n0_DBt@[["nY͐$93eh .]vDX]y-nY?@)! R"#pc|pp Q vODU zsJaH[hXRd ]|ژ^C+ Ttt q'iV~NnَڭVtuZpmLO`eR 0~{3)d o>a {KwЛ샦jhiA5FMM2<-]JK8O;O|$* -װ[C0Fǭ[ƍEu3֪}b:dP 9 k?fp{Hz}%67T睯 !)GԓzGIJ&'|7cfS. Jqoc:obޜrs[ WbAP߫G/8*s+?Ծd}wt:A<*%ıN3zoՋAG7/|b'"IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/openlock.png0000644000175000017500000000163310342116365022041 0ustar mikemikePNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<-IDATxb?Crr3fcccWVI?Û7_߽xߦ_έe ('9?*M]] 4O+-۷H0}7BƞD7a͛p?~SWU0gOH[:o @L ,>XZ((3[am]O5x֭S@Hӧ& = @`>|2@AEEV͛ _:eee:uֵkݼyANNLO = @`/UNd~^_¥12,'߿1U^  Z?R((L~K?@563 "L'&& 2`JL|b``ebU@afo&f |'I}{Y lW^Mt!E/+|a`x>0@ x t'P=@(hK`ûJl?@o? adhT ?@ R؀ I FmA5A "/$@ ف @?i }/$llwb?Ff(A d8wc Msn'!IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/sort_down.png0000644000175000017500000000025610342116365022245 0ustar mikemikePNG  IHDRB%}bKGD pHYs  ~tIME (8s;IDATxu |? !X$W-< dϐeh7fȥ=f"aIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/select_terminal.png0000644000175000017500000000141210342116365023374 0ustar mikemikePNG  IHDRagAMA7IDATxmk\u?{N[u!E&DLDE!.\.T܈;AZ0DF IMfI53_i)svr{~JӔQ(""hlll+ R c ZDh4DQyVW 8looSV4dy:}GhAu(Z{LZDe||Jr<\^l6(hI8>$*uMDp]q0Ơc $`Z{bOqRaHX$>`Ek^K {=4=q)%"J)|' @)1f}( Ra:dPn/g{4_:^8OʭjZ9)q#Qc{cμIjx鲾?wD$0/Z~K?]{{J5jhe2{oͽ& xeH}xܳ?  :m:׮3jYP qW `RU#fO+++JFEvV8UU0F:Nɮ.Růfxh)2$g~d2IMMMeo,--EQ8 Ba_R\n Eggggټj%^]ZY3jH$>ooo7^%A"g tLnłJ\oiIcggr庹zJ qFFF,{]ۯo@du [[0&0p=Ky6Yh݉J'N.<\]^y R!l<=q8JAEeVf'`lO{&JKu6*'~{~]VP[[J \v=Wg!tr:2675k=uu Y$x A(h?+=4e&?{E1AihNĎBc-ttR)d(.@ސԏIYɩŐd)[]ikZX;>[챸pa8o(Ñcp3 ׁ3颇; fF57wsWyx\ ?&yf^?!`4֊ݝ&n|O]ilnX੩6 Z.A}\Rɯnm*'Lv < ,9{h!bZ[/CXrv,}yPi+=,oSIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/hdd_linux_unmount.png0000644000175000017500000001522510342116365023774 0ustar mikemikePNG  IHDR00W pHYs   9iCCPPhotoshop ICC profilexڝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEVRrҺpanh39X H_P^TA@5Ta-CSE3?~~у|yٵWMR P}i$WO12eg`ggg`eecn.v.2, ) lȠ& 6VV1?nnO9 9SNII@.FFhE9d0!?~`غ~+gggP]]]'Ο?lf(`ضi%+oؾh7b8}`=AFZ݃,'$$Ġ |gXf Caa!'N`5kÄt`!;3AP *oHm?@G0m`hf Fh2"U| U R2cr7'''0pYaa:}}}6CqAh V%@1Ak`3 x͈HLh}XI [͍_0;wa) Nb8x X/ hDzj @@=+cH{'=}&|1 d{hrd3͛wFؤ~o`s3` ۏ :ԋhY G%ðy CK5Lہ)no!_>^Pǀ ]i쁛7o2\t XQE`#n 0g)ww>/ (1vFQQD h`~*p. { }>8< N.A!nhhd8~$8_ xcO>M`I􍡬,a, 0V  O~*KfpIA./Aؒ#RaBJJ'O@/_nݺ+0d45h "pg~z+eŋ$ފ wN;ÞW5_!V1&;8>}!rF `?0A׮^0ZW\&ǟ f$O8j0,[@a>>>9dA-^b޳gmUU|/bWL :&O@[@ tB`L ^( % &0X[[@C1g;T2Ao`%'l2A&1q )ipc`ǂҴPax7feecz"ׯ_={ɓ'@1e.::̣ RCEa~?(d}ZL@ϝ;O*&$G";0ǏPj01@C0ĄV}_kϪU!vi珟!:QW`ĝ ? 46v`''@ ( /4yfffePSf PK3([˗f'$$88yE75TG@Gn2hi(0-`KBk.1\p6hcרğ}n5'>Is0qKVЮ%+,>~$#FFDݠu++k4͡=kO>P74}nO|U8x\-, UhШ&+W.cALgƙQC]ԩ /u@5y~8~Ǐ|gua]KX1*/GNFr ,`0yR]޽ KHt1CɓvihFPU`@y@XCf70<{= rp}`q?]K@ɰ{{E7/fwqD.l͑թeprfx>&̰/ (/}w*~awgп?0\%X|VIπ @r .TT 0@Lpcʕ}229|X1ke8),`+u+W2e;кvȧ@Sg\b(+`g;Ч_@j_`QAb9@[#@:C*)]K'l_<}fm)3 v }+ǻE Nc}* 3 d`@ˌUWO IlO u?N}xan&̰ "wyR\qrsGK!Vmۮ2\t{'} , d]bdjoj>$1@Q2cRNNo~='O.gШ f$2B  F*tpp+˟{'-sh[CG2#o@,u[hNy\ BIENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/reports.png0000644000175000017500000001031210342116365021717 0ustar mikemikePNG  IHDR00WgAMA7tEXtSoftwareAdobe ImageReadyqe<\IDATxb?PBb999`cÿ(A//P ((P//߿d$2c9Z=|`222ib$%`z෕^u`O_'1_=<} P7 M01Ɗ.w/1z`cI $cKMQaL^=8 XH?`]|`G3113033i&&0DE%E$Z@5e`300`gay 0&DB Dt0a߿ʸy+88<81fffX{^BP4s C}ᝇ8(@,tP\!7CB{)㿠f67Y4+8d. gdjK+`L@=RFԦ+OFIp&g֓e4WgҖ`bfgNR{@G$'Px|8dF(F o'AIdZ9\&*@pH: \~n&?zIkZ<($!`_X: )> @1*VAH?R'ԬA)@-[X @1(  DQ{S+m:wBm֋O+sLCCjwj!9 !sc!gZ!{;C萷"@jzlp `66oy!09=A`f$F mP U i $V.!L V :ZX׾o Ó]"U$ ,(:o?}PG\cn %+@(RCMsg/ T9iQP.R wKm{@X*L?$UZs@\6'9VBd tpy ,,l$% :8R4#@ax߾< l; `7lX`fe` 0y>} ,*v0&fDx)p =}@XqT2{sWu]Nh9 4`z<ؙ!l@ꘁygʱ~| &l>;\ #7-`Ɉ{& i`,4zXS 3yȘ'aVY  XA6&fL40K*Fpi'n0K1<{AV^Ґʈ]:Z<ˆ%.mZϟ }bf&_.`pPe,`Pꐀ/PRBZ^;`p`ȳ3|fbp3AI hclR @K@`onn\w!pi< -Y XŠ3#fI72p3Wɠ3\ps cz pz`ٲ@O8l^эZfj0Ap {0h)K}`p \ @xG怞Vl+ñM[,`8q2?= ޾p5SW0<~AOGܹ[w ZMMоS fPAZش a#X(,? GnE`H9x1Jn{)xDNAA>t<&ɟ>}pcU5E'7+p+ ں kV`xC0D.bP dsq Ë ,@O𫃓*,XR@46zE5G.\pc`q0†SPJAEMQX`ecfKax|+% `v@B`FH҂R'U63h{IB@}20i]ā$'PcYCLj @x; 0Hbd57!LbZPO0= &䤁nb Ckf} ßWW W'<}$XHf`N8@Qh !9-e  O| 8 2n&cR}@-U+($'h&C) 1--f@XEKNB c4ڀA]^PVp Á1! [D@Q)UFԡE?,ys O.f89&` u!nmE&ELcD"$O\ ^Q>`@d'!?U^*Nǣ':& G&AU}PY8xÅkPUq!Ñ@=Oq `%;_ "}m4$G6/D .'?p/ag&@QP>'G %867G^^ ą`3WArfMHA FX tu<b~Yd[[=C.36B֛38q Аx=_/r2 =41F(fB@__#) q40& AՃT)12ˋ38p%<=@gؿkOkjJ3890 r \t+ٳ}ogM$5 Xho_L6i`ן۶]_X>9nbA`4@[ρ"? Ac<J30< @* LrTOg`Kt8a|lؑH-ܿ AF&@6029޽n818 R3ɉ< yFF\шɆRAĎógAyA &$vÇ//,^./CcCEпa|P ܽaɒ3 oT<^|&$3() !āy0iiIsp%* X-2&d6rD<$p+j]0eJR<@Hy>~~H@֟~8f&&vD3@ʀHh ___O Ǐ?rH B)F>}߾0P)AVv/jb`ceab~V66DG8NC=$v 31@!ǀW|g,߿|3|o 1q.|aFFZ.iz>hw,B 7n<a03S4 $a= |x@% pez{?*?.z;UT`yT&C!;w^zhyL7N8c`!.ΊXv50XBc5ۗ޼x?y{G:8_@RVu к P̐İaMebֺ<*B3|xS@S lw ?df9M'Oc8uX **V;I@<Pp038 l å^Ex ~gxɠ X9Aރ:H Y B |_ ^af6*9,(@ <@y `SzP 21A0 o}et 7򓁏 yK f8S4ol < c5X<֔O0()h- n| 1/  NV Ullj(O8 4ܬ<7~`C~د!WKM`^ϰn˭@\KQQF @ptv;/]z*f ;#'( 0\L& ,60?ݻY@ؼcU:l ̴??`ǟ.y>```v50,H@:sÑ#>Ą!@]IfAl>F&?9~f=t`1!3 :L0mS wa w&] 5c@i764% Op!y"1D??/// -<$]?>!g R G(?kkKK3V`[y\TIXY)CbX=¬F9J* PaXó_c=gxr.6` ,B*1` } + Þǟ~dxPAKK >@!BnzpcK!ye/ ޵ȋ'7 e>FpbF=^rޟcA\ᝏ l G9@$ RO|= }A%)X2%-Ǡj^>gmIy_%P01T6YPM?>O bbl /~D߰p30;Uje`Xq_c:peF`ؼ`d -PevS,@!KKEc0k3,Zt`>`[%"BX?b|f`X[* 56\$ n> e `y 2 * a@Po4)HP: >x|eAjf `mn1󌁙wt:(1+(.9j b`l}WT x 9 0Cuu Ri)Ó˗/d8LB1n x #PGׯ] 5d&@ j1TQ@A[U߿QMC r%22 @E 3030HJBh "c +4 3l00=<a9  u b r @=.]b0ZMIIn [`āki ዊ20DD Pw:uu a'X*@`APFcOCV3/%̿,`4@2TS/Q" @~ JQU ffF>`&?( @ L23ʊ""_{oA?@ > ?P#27>pj0@ > cb :oBj. @`20? +(2DqH H-T|;Ќ.Y 34(psAT00̝HNf`X`ǫW ~<2` x!X 20UP PwC !B)61* BC/R@aK.W363oS =B1f0@a  ^-!WMbx} iUM̽IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/images/filesaveas.png0000644000175000017500000000234510342116365022352 0ustar mikemikePNG  IHDRĴl;gAMA7tEXtSoftwareAdobe ImageReadyqe<wIDATxb?Cnl  >C`1A$D _4-O'H X@:X(3yyYi{g0s*y"w=kd!H?ͅM`5 _;+Q rd1 ȯePn|?_?N0/eaZ[ #/## R_20u0ػ1y_1} X@q+D3dȾ ߿chG\ba9;/J\x X@./X?Ah1P?'718پerG 7s/|rRY<@B?4C O *͟3?``sa 95 @ @噶3a(2a`-.J|ſ@1 Iv LA"q fEg.a'~ @,4r)eI&JV, t-38ܿ#KF،aa, Y 3 J:? &! dCAAb/ axAݱ >b`A 1D\ Q_'ph ] "C r >`=8 0 9?4c00H]7(#LK203>fPq%,[X> 21᳗`PÔ~?8 3~D@ Pj i@C>WV ܌ CeA  `C`"ۏ? ?˃ߠH4!,(`DH \278wF,@>;A`bܹ?j@287H=@3 〦?NPb1j08y#8200C1c/@@<5@+[4IENDB`gosa-core-2.7.4/doc/core/en/lyx-source/departments.lyx0000644000175000017500000001710310421074566021343 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold DEPARTMENT ADMINISTRATION \layout Section List of departments \layout Standard The administrator can create or modify a department or to access informations when clicking on the \series bold \color blue Departements \series default \color default button in the \series bold Administration \series default menu on the left. The \family sans \color black Department \shape smallcaps \emph on Management \family default \shape default \emph default \color default page is displayed. \layout Standard She is divided on two columns : \layout Standard - The first column is used to display the names of department, \layout Standard - The second column contains icons which are the actions you can execute on departments. \layout Standard \added_space_bottom medskip - Those icons ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) are used to modify the display according to the department, the icons predominate other selections of display. \layout Standard It's from the \family sans Department Management \family default \emph on \noun on \emph default \noun default page that the system administrator manage the list of deparments of the organization. \layout Standard It's possible to modify the diplay of departments by using the table called Filters \begin_inset Graphics filename images/rocket.png \end_inset : \layout Itemize \color black To search on names : \begin_deeper \layout Standard - Click on the asterisk to show all departments; \layout Standard \color black - Click on a letter to show all the departments starting with this letter; \layout Standard \color black - Click on a number to show all departments starting with this number. \end_deeper \layout Itemize \added_space_bottom medskip For a fast search \begin_inset Graphics filename images/search.png \end_inset : fill the field by the name of the department searched and click on the \emph on Apply filter \emph default button. \layout Standard To create a department click on \begin_inset Graphics filename images/list_new_department.png \end_inset . \layout Standard You will see tabs. The administrator uses tabs to configure the department. \layout Standard To save changes use the \emph on Save \emph default button, to come back without saving use the \emph on Cancel \emph default button. \layout Standard All the fields followed by an asterisk must be filled. \layout Subsection \pagebreak_top Generic \layout Subsubsection Properties \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Name of department \color red * \end_inset \begin_inset Text \layout Standard Insert the name of the department to be created \end_inset \begin_inset Text \layout Standard Description \color red * \end_inset \begin_inset Text \layout Standard Insert a description, a commentary on the department \end_inset \begin_inset Text \layout Standard Category \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list \end_inset \end_inset \layout Subsubsection \added_space_top medskip Location \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard State \end_inset \begin_inset Text \layout Standard Insert State wher is the department \end_inset \begin_inset Text \layout Standard Location \end_inset \begin_inset Text \layout Standard Insert the place where is the department \end_inset \begin_inset Text \layout Standard Address \end_inset \begin_inset Text \layout Standard Insert the address of department \end_inset \begin_inset Text \layout Standard Phone \end_inset \begin_inset Text \layout Standard Insert the central phone of the department \end_inset \begin_inset Text \layout Standard Fax \end_inset \begin_inset Text \layout Standard Intsert the central fax of the department \end_inset \end_inset \layout Subsection \added_space_top bigskip References \layout Standard The references show the existing relations between department. \the_end gosa-core-2.7.4/doc/core/en/lyx-source/macro.lyx0000644000175000017500000001670610421074566020126 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold PHONE MACROS ADMINISTRATION \layout Section List of macros \layout Standard The administrator can configure a phone macros when clicking on the \series bold \color blue Phone macros \series default \color default button in the \series bold Administration \series default menu on the left. The \family sans \color black Phone macro \shape smallcaps \emph on management \family default \shape default \emph default \color default page is displayed. \layout Standard She is divided on two columns : \layout Standard - The first column is used to display _, \layout Standard - The second _ \layout Standard - The third column contains icons which are the actions you can execute on _. \layout Standard \added_space_bottom medskip - Those icons ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) are used to modify the display according to the department, the icons predominate other selections of display. \layout Standard It's from the \family sans Phone macro management \family default \emph on \noun on \emph default \noun default page that the system administrator manage the list of Phone macros of the organization. \layout Standard It's possible to modify the display of blocklist by using the table called Filters \begin_inset Graphics filename images/rocket.png \end_inset : \layout Itemize \color black To search on names : \begin_deeper \layout Standard - Click on the asterisk to show all _; \layout Standard \color black - Click on a letter to show all the _ starting with this letter; \layout Standard \color black - Click on a number to show all _ starting with this number. \end_deeper \layout Itemize For a fast search \begin_inset Graphics filename images/search.png \end_inset : fill the field by the name of the _ searched and click on the \emph on Apply filter \emph default button. \layout Standard \added_space_top medskip To create and configure _, the administrator click on \begin_inset Graphics filename images/list_new_macro.png \end_inset . \layout Standard You will see tabs. The administrator uses tabs to configure the phone macro. \layout Standard To save changes use the \emph on Save \emph default button, to come back without saving use the \emph on Cancel \emph default button. \layout Standard All the fields followed by an asterisk must be filled. \layout Subsection \pagebreak_top Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Macro name \color red * \end_inset \begin_inset Text \layout Standard Insert the macro name \end_inset \begin_inset Text \layout Standard Display nam \color black e \color red * \end_inset \begin_inset Text \layout Standard Macro display name \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Make a choice on the scroll list to select the department where the phone macros existes \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Description about the use of the phone macros \end_inset \begin_inset Text \layout Standard Visible for user \end_inset \begin_inset Text \layout Standard Is this macro visible or not for an user \end_inset \end_inset \layout Itemize \added_space_top medskip Macro text \layout Subsection \added_space_top bigskip Parameter \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Argument \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard Name \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard type \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard Default value \end_inset \begin_inset Text \layout Standard \end_inset \end_inset \layout Subsection \added_space_top bigskip References \layout Standard The references show the existing relations between phone macros. \the_end gosa-core-2.7.4/doc/core/en/lyx-source/users.lyx0000644000175000017500000011713010415673520020155 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold USERS ADMINISTRATION \layout Section List of users \layout Standard The administrator can create, modify or access the account informations when clicking on the \series bold \color blue users \series default \color default button in the \series bold Administration \series default menu on the left. The \family sans \color black Users Administration \family default \color default page is displayed, she is divided on three columns. Each time an user is created it will appear in the first column sorted by department. \layout Standard The two first columns contains icons which are shortcuts to the settings of each user and the actions you can execute on them. \layout Standard Those icons ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) are used to modify the display according to the department, the icons predominate other selections of display. \layout Standard It's from the Users Administration page that the system administrator will get a global view of all the users in his system. \layout Standard \color black In the right part of the page you will find a table called Filters \begin_inset Graphics filename images/rocket.png \end_inset . \layout Itemize \color black This table purpose is to change the display of the users : \begin_deeper \layout Standard \color black - Click on a letter to show all the users starting with this letter; \layout Standard \color black - Click on the asterisk and the list of users will be ordoned alphabetically \end_deeper \layout Itemize You can also : \begin_deeper \layout Standard - Check one or more options to get a restricted selection; \layout Standard - Insert a letter or a number followed by an asterisk or a user name in the filed preceded by a this icon \begin_inset Graphics filename images/search.png \end_inset . Click on the \emph on submit \emph default button to get the result of your selection. \end_deeper \layout Standard To create an account click on \begin_inset Graphics filename images/list_new_user.png \end_inset . If the account is already created click on the account himself. \layout Standard You will see tabs, each of them is a part of the user account configuration. Each of those tabs is an extension that GOsa can manage. \layout Standard \added_space_bottom medskip To finish the creation of the user, click on the finish button on the right bottom of the page. To cancel your change click on the cancel button. \newline \layout Standard All the fields followed by an red asterisk must be filled. \layout Standard In the upper right corner you have the full dn of the user currently edited. \layout Subsection \pagebreak_top Generic \layout Subsubsection Personal information \layout Standard \added_space_bottom medskip \begin_inset Tabular \begin_inset Text \layout Standard Last \color black name \color red * \end_inset \begin_inset Text \layout Standard Insert the last name \end_inset \begin_inset Text \layout Standard \color black First name \color red * \end_inset \begin_inset Text \layout Standard Insert the first name \end_inset \begin_inset Text \layout Standard \color black Login \color red * \end_inset \begin_inset Text \layout Standard Insert the login name \end_inset \begin_inset Text \layout Standard Personnal title \end_inset \begin_inset Text \layout Standard Insert the personnal (Mister, Miss, Madam) \end_inset \begin_inset Text \layout Standard Academic title \end_inset \begin_inset Text \layout Standard Insert the academic title \end_inset \begin_inset Text \layout Standard Date of birth \end_inset \begin_inset Text \layout Standard Click on the \emph on set \emph default button to make a scroll list appear \end_inset \begin_inset Text \layout Standard Sex \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list \end_inset \begin_inset Text \layout Standard Preferred Language \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list \end_inset \begin_inset Text \layout Standard Base \end_inset \begin_inset Text \layout Standard Choice of the deparment. (the creation of the department is made with the \series bold \color blue department \series default \color default button on the left menu in the administration part.). \end_inset \begin_inset Text \layout Standard Address \end_inset \begin_inset Text \layout Standard Insert the personnal address of the user \end_inset \begin_inset Text \layout Standard Private phone \end_inset \begin_inset Text \layout Standard Insert the private number in the national or international way. (keep in mind to make the same for all users) \end_inset \begin_inset Text \layout Standard Homepage \end_inset \begin_inset Text \layout Standard Insert the url of the user homepage \end_inset \begin_inset Text \layout Standard Password storage \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list \end_inset \begin_inset Text \layout Standard Certificates \end_inset \begin_inset Text \layout Standard \color black Click on the button \emph on Edits certificates \emph default . GOsa will let you import three type of certificates. To save click on \emph on finish \end_inset \begin_inset Text \layout Standard Kerberos \end_inset \begin_inset Text \layout Standard \color black Click on the button \emph on Edit properties \emph default . \end_inset \end_inset \layout Standard You can if you wisch add a picture of the user by clicking on the button \shape italic changer la photo \shape default . \layout Subsubsection \added_space_top medskip Organizational information \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Organization \end_inset \begin_inset Text \layout Standard Insert the organization's name \end_inset \begin_inset Text \layout Standard Departement \end_inset \begin_inset Text \layout Standard Insert the departement's name that the user is attached \end_inset \begin_inset Text \layout Standard Departement's number \end_inset \begin_inset Text \layout Standard Insert the departement's number \end_inset \begin_inset Text \layout Standard Employee's number \end_inset \begin_inset Text \layout Standard Insert the employee's number \end_inset \begin_inset Text \layout Standard Employee's type \end_inset \begin_inset Text \layout Standard Insert his range in the organization \end_inset \begin_inset Text \layout Standard Room's number \end_inset \begin_inset Text \layout Standard Insert the room's number of the employee \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard Insert the phone number of the user \end_inset \begin_inset Text \layout Standard Mobile \end_inset \begin_inset Text \layout Standard Insert the mobile's number of the employee \end_inset \begin_inset Text \layout Standard Pager \end_inset \begin_inset Text \layout Standard Insert the page number of the employee \end_inset \begin_inset Text \layout Standard Fax \end_inset \begin_inset Text \layout Standard Insert the fax number of the employee \end_inset \begin_inset Text \layout Standard Location \end_inset \begin_inset Text \layout Standard Insert the localisation of employee's office \end_inset \begin_inset Text \layout Standard State \end_inset \begin_inset Text \layout Standard Insert the name of the state where the organization is located \end_inset \begin_inset Text \layout Standard Address \end_inset \begin_inset Text \layout Standard Insert the address of the organization \end_inset \end_inset \layout Subsection \added_space_top bigskip Unix \layout Standard To activate an Unix account for one user, you have to click on the button \shape italic add a posix account. \layout Subsubsection Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Home directory \color red * \end_inset \begin_inset Text \layout Standard Insert the path to the home directory of the user \end_inset \begin_inset Text \layout Standard Shell \end_inset \begin_inset Text \layout Standard Make the choice on the scroll list of the kind of shell used \end_inset \begin_inset Text \layout Standard Primary group \end_inset \begin_inset Text \layout Standard Mention the primary group wich one the user is attached. (For the creation of a group, go to the \series bold Administration \series default part \color black and click on the button \series bold \color blue Groups \series default \color default ) \end_inset \begin_inset Text \layout Standard Status \end_inset \begin_inset Text \layout Standard Mention if the account is activated or not \end_inset \begin_inset Text \layout Standard Force UID/GID \end_inset \begin_inset Text \layout Standard Check if you want to force UID/GID of the user to a certain value \end_inset \end_inset \layout Subsubsection \added_space_top medskip Group membership \layout Standard Use the buttons \emph on Add \emph default and \emph on Delete \emph default to insert or to remove groups in the empty area. The button \emph on Add \emph default give the group list created by the administrator. The user could be attached at one or many groups. \layout Subsubsection \added_space_top medskip Account \layout Standard It's about the management of the user's password. Many proposals could be checked but the administrator should avoid conflicting options. \layout Subsubsection \added_space_top medskip System trust \layout Standard The trust system is used to control access by the user at differents systems, devices, ... \layout Standard The trust system can : \layout Itemize be deactivated, \layout Itemize allow full access, \layout Itemize allow the access to hosts : \begin_deeper \layout Standard - Use the button \emph on Add \emph default to select the hosts, \layout Standard - Use the button \emph on Delete \emph default to remove hosts. \end_deeper \layout Subsection \added_space_top bigskip Environment \layout Standard Click on the button \shape italic add an environment extension \emph on to \shape default \emph default activate the configuration space. \layout Subsubsection Profiles \layout Subsubsection \added_space_top medskip Kiosk profile \layout Subsubsection \added_space_top medskip Logon scripts \layout Subsubsection \added_space_top medskip Attach share \layout Subsubsection \added_space_top medskip Hotplug devices \layout Subsubsection \added_space_top medskip Printer \layout Subsection \added_space_top bigskip Mail \layout Standard The mail account is linked to the mail server. To activate the mail account click on the button \shape italic Create mail account \shape default . \layout Subsubsection Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard \color black Primary address \color red * \end_inset \begin_inset Text \layout Standard Insert the mail address of the user \end_inset \begin_inset Text \layout Standard Server \end_inset \begin_inset Text \layout Standard Choose the server where the mail account of the user is stored \end_inset \begin_inset Text \layout Standard Quota usage \end_inset \begin_inset Text \layout Standard Mention if you apply a quota to the mail account of the user \end_inset \begin_inset Text \layout Standard Quota size \end_inset \begin_inset Text \layout Standard Mention in KB the quota size \end_inset \end_inset \layout Subsubsection \added_space_top medskip Alternative addresses \layout Standard The user can own one or many aliases. Those aliases must be inserted in the alternatives addresses area. \layout Standard Use the button \emph on Add \emph default to insert the aliases. The alias must be inserted in the empty area followed by the button \emph on Add \emph default . Use the button \emph on Delete \emph default to remove aliases. \layout Subsubsection \added_space_top medskip Mail options \layout Standard Management of the mail options of the user : \layout Itemize No delivery to own mailbox : send all mail for this address to a mail address mentionned in the area \emph on Forward messages to. \layout Itemize Activate vacation message : send the message wroten in the area \shape italic \color black Vacation message \shape default \color default to the sender. \layout Itemize Move mails tagged with spam level greater than (a) to folder (b) : send mails that spam level is higher than (a) in the folder (b). \layout Itemize Reject mails bigger than (c) MB : reject mails higher than (c) MB. \layout Itemize Use the \emph on Add \emph default ou \emph on Add local \emph default \color black buttons to manage addresses : \begin_deeper \layout Standard \color black - The \emph on Add local \emph default button is used to choose among the local list addresses. \layout Standard \color black - The \emph on Add \emph default button allow external addresses. \layout Standard \color black - Use the \emph on Delete \emph default button to remove the mails addresses. \end_deeper \layout Subsubsection \added_space_top medskip Advanced mail options \layout Itemize User is only allowed to send and receive local mails : the administrator can force sending and receiving local mails only. \layout Itemize Use custom sieve script : The administrator can write sieve script to establish rules for managing mail box. \emph on Attention ! \shape italic \emph default This will disable all mail options \shape default . \layout Subsection \added_space_top bigskip Samba \layout Standard To create a samba account for an user click on the button \shape italic Create a samba \shape default \shape italic account \shape default . \layout Subsubsection Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Home directory \end_inset \begin_inset Text \layout Standard Mention the path of the user's home directory in UNC notation ex: \backslash \backslash SERVER \backslash homes \backslash user. Choose on the scroll list the letter associated to the user's home directory. \end_inset \begin_inset Text \layout Standard Domain \end_inset \begin_inset Text \layout Standard Select the domain where the user's desktop exists \end_inset \begin_inset Text \layout Standard Script path \end_inset \begin_inset Text \layout Standard Mention the user's logon script \end_inset \begin_inset Text \layout Standard Profile path \end_inset \begin_inset Text \layout Standard Mention the path to the user profile \end_inset \end_inset \layout Subsubsection \added_space_top medskip Terminal Server \layout Itemize Allow login on the terminal server \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Home directory \end_inset \begin_inset Text \layout Standard Mention the path of the user's home directory in notation UNC ex: \backslash \backslash SERVER \backslash homes \backslash user. Choose on the scroll list the letter associated to the user's home directory. \end_inset \begin_inset Text \layout Standard Profile path \end_inset \begin_inset Text \layout Standard Mention the path to the user profile \end_inset \end_inset \layout Itemize Inherit client config \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Initial program \end_inset \begin_inset Text \layout Standard Mention the path to the default application \end_inset \begin_inset Text \layout Standard Working directory \end_inset \begin_inset Text \layout Standard Mention the working directory of the initial program \end_inset \end_inset \layout Itemize Timeout settings (in minutes) : \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Connection \end_inset \begin_inset Text \layout Standard Put the maximum time waiting for a login \end_inset \begin_inset Text \layout Standard Disconnection \end_inset \begin_inset Text \layout Standard Put the maximum time waiting to disconnect \end_inset \begin_inset Text \layout Standard IDLE \end_inset \begin_inset Text \layout Standard Put the maximum time waiting for a query \end_inset \end_inset \layout Itemize Client devices : \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Connect client drives at logon \end_inset \begin_inset Text \layout Standard Check to connect client drives at logon \end_inset \begin_inset Text \layout Standard Connect client printers at logon \end_inset \begin_inset Text \layout Standard Check to connect client printers at logon \end_inset \begin_inset Text \layout Standard Default to main client printer \end_inset \begin_inset Text \layout Standard Check to define the client default printer at logon \end_inset \end_inset \layout Itemize Miscellaneous : \begin_deeper \layout Standard - Shadowing : \color red ? \layout Standard - On broken or timed out : choose if you want disconect or reset the client. \layout Standard - Reconnect if disconnected : choose if the reconnection must be done from the same client, or if it can be done from an other client. \end_deeper \layout Subsubsection \added_space_top medskip Access options \layout Itemize It's about the management of the user's password. Once or many proposal can be checked in but the administrator must take care to avoid conflicts. \layout Itemize The area on the right must be filled by the names of clients on which the user can logon. The administrator must use the button \emph on Add \emph default to insert the clients names. The button \emph on Add \emph default give the clients list. Use the button \emph on Delete \emph default to remove clients. \layout Subsection \added_space_top bigskip Connectivity \layout Standard The administrator can choose more services where the user could be connected. \layout Subparagraph* Proxy account \layout Standard If you activated the Proxy option for a user you can filter the content, limit access hours and restrict download/upload. \layout Subparagraph \added_space_top smallskip FTP account \layout Standard If you activated the FTP option, you can fix the upload and downlaod bandwidth, the data ratio and the quota allowed. You can also deactivate the FTP account. \layout Subparagraph \added_space_top smallskip WebDAV account \layout Standard If you activated the WebDAV option, the user will be granted access to the WebDAV server. \layout Subparagraph \added_space_top smallskip PHPGroupware account \layout Standard If you activated the PHPGroupware option, the user will be granted access to the PHPGroupware software. \layout Subparagraph \added_space_top smallskip Intranet account \layout Standard \added_space_bottom smallskip If you activated the Intranet option, the user will access Intranet server. \layout Standard \series bold PPTP account \layout Standard \added_space_bottom smallskip If you activated the PPTP option, the user will access server PPTP. \layout Standard \series bold PHPScheduleit account \layout Standard \added_space_bottom smallskip If you activated the PHPScheduleit option, the user will access PHPScheduleIt software. \layout Standard \series bold GLPI account \layout Standard If you activated the GLPI option, the user will access GLPI software. \layout Subsection \added_space_top bigskip Fax \layout Standard To create a fax account for an user click on the button \shape italic Create a Fax account. \layout Subsubsection Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Fax \color red * \end_inset \begin_inset Text \layout Standard Insert the fax number of the user \end_inset \begin_inset Text \layout Standard Language \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list \end_inset \begin_inset Text \layout Standard Delivery format \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list \end_inset \end_inset \layout Subsubsection \added_space_top medskip Delivery methods \layout Itemize Temporary disable fax usage : forbid the use of the fax for an user. \layout Itemize Deliver fax as mail to : send fax on mail distribution format to the user's mailbox. \layout Itemize Deliver fax to printer : send fax to a printer. \layout Subsubsection \added_space_top medskip Alternate fax numbers \layout Standard The administrator can complete the fax configuration with more than one fax number. Use the buttons \shape italic Add \shape default , \shape italic Add local \shape default to fill the area. \layout Itemize The \emph on Add local \emph default button is used to choose among the local fax. \layout Itemize The \emph on Add \emph default button allow external fax numbers. \layout Standard Use the button \emph on Delete \emph default to remove fax numbers. \layout Subsubsection \added_space_top medskip Blocklists \layout Standard The fax is today frequently use to deliver advertising messages. Many of them are spams. To avoid those messages, the administrator can create a blocklist for incoming and outgoing fax. \layout Standard When clicking on the button \emph on Edit \emph default at the left side appear the blocked numbers/lists linked to the user and at the right side the predefined blocklist. \layout Standard Select one or many lists at the right side and click on \shape italic Add the list to the blocklists \shape default use at vous dsirez utiliser dans la liste de droite et cliquer sur \emph on Ajouter la liste rouge \emph default pour l'activer. \color red ??? \layout Subsection \added_space_top bigskip Phone \layout Standard To activate the phone account for an user click on the button \shape italic Create a phone account \shape default . \layout Subsubsection Phone numbers \layout Standard Insert one or many phone numbers for the user by clicking on the button \emph on A \shape italic \emph default dd \shape default . \layout Subsubsection \added_space_top medskip Telephone hardware \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Telephone \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list \end_inset \begin_inset Text \layout Standard VoicemailPIN \color red * \end_inset \begin_inset Text \layout Standard \color black Insert the PIN code of the user to reach his voicemail \end_inset \begin_inset Text \layout Standard Phone PIN \color red * \end_inset \begin_inset Text \layout Standard \color black Insert the PIN code of the user to unlock his phone \end_inset \end_inset \layout Subsubsection \added_space_top medskip Phone macro \layout Standard Selection of phone macro for the user's telephone. \layout Subsection \added_space_top bigskip References \layout Standard The references present the user's properties. It gives the administrator a short summary of the user's properties. \the_end gosa-core-2.7.4/doc/core/en/lyx-source/conference.lyx0000644000175000017500000001613010421074566021123 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold PHONE CONFERENCES ADMINISTRATION \layout Section List of conference room \layout Standard The administrator can configure a phone conferences when clicking on the \series bold \color blue Phone conferences \series default \color default button in the \series bold Administration \series default menu on the left. The \family sans \color black Conference \shape smallcaps \emph on management \family default \shape default \emph default \color default page is displayed. \layout Standard She is divided on four columns : \layout Standard - The first column is used to display _, \layout Standard - The second _ \layout Standard - The third \layout Standard - The last column contains icons which are the actions you can execute on _. \layout Standard \added_space_bottom medskip - Those icons ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) are used to modify the display according to the department, the icons predominate other selections of display. \layout Standard It's from the \family sans Conference management \family default \emph on \noun on \emph default \noun default page that the system administrator manage the list of _ of the organization. \layout Standard It's possible to modify the display of _ by using the table called Filters \begin_inset Graphics filename images/rocket.png \end_inset : \layout Itemize \color black To search on names : \begin_deeper \layout Standard - Click on the asterisk to show all _; \layout Standard \color black - Click on a letter to show all the _ starting with this letter; \layout Standard \color black - Click on a number to show all _ starting with this number. \end_deeper \layout Itemize For a fast search \begin_inset Graphics filename images/search.png \end_inset : fill the field by the name of the _ searched and click on the \emph on Apply filter \emph default button. \layout Standard \added_space_top medskip To create and configure _, the administrator click on ( \begin_inset Graphics filename images/select_new_component.png \end_inset ). \layout Standard You will see tabs. The administrator uses tabs to configure the phone conference. \layout Standard To save changes use the \emph on Save \emph default button, to come back without saving use the \emph on Cancel \emph default button. \layout Standard All the fields followed by an asterisk must be filled. \layout Subsection \pagebreak_top Generic \layout Subsubsection Properties \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Conference name \color red * \end_inset \begin_inset Text \layout Standard Insert the conference name \end_inset \begin_inset Text \layout Standard Type \color red * \end_inset \begin_inset Text \layout Standard Make a choice on the scroll list to select type \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Make a choice on the scroll list to select the department where the phone conference existes \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Description about the use of the phone conference \end_inset \begin_inset Text \layout Standard Lifetime (in days) \end_inset \begin_inset Text \layout Standard Mention how many time the phone conference runs \end_inset \begin_inset Text \layout Standard Phone number \color red * \end_inset \begin_inset Text \layout Standard Insert the phone number of the phone conference \end_inset \end_inset \layout Subsubsection \added_space_top medskip Options \layout Itemize Preset PIN \begin_deeper \layout Standard Check if you want a preset code to be used in this conference. \end_deeper \layout Itemize Record conference \begin_deeper \layout Standard Check if you want to record the phone conference. \end_deeper \layout Itemize Play music on hold \begin_deeper \layout Standard Check if you want an on hold music. \end_deeper \layout Itemize Activate session menu \begin_deeper \layout Standard Check here if you want a session menu \end_deeper \layout Itemize Announce users joining or leaving the conference \begin_deeper \layout Standard Check if you want to notice to others a participant is coming or leaving the phone conference. \end_deeper \layout Itemize Count users \begin_deeper \layout Standard Check if you want to count participants. \end_deeper \layout Subsection \added_space_top bigskip References \layout Standard The references show the existing relations between phone conferences. \the_end gosa-core-2.7.4/doc/core/en/lyx-source/logview.lyx0000644000175000017500000000610310423327742020466 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 1 0 8 -1 \end_bullet \bullet 2 0 8 -1 \end_bullet \bullet 3 0 8 4 \end_bullet \layout Title \series bold ADDONS \layout Section System log view \layout Subsection Filter \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Show hosts \end_inset \begin_inset Text \layout Standard Select the host to search on in the scroll list \end_inset \begin_inset Text \layout Standard Log level \end_inset \begin_inset Text \layout Standard Select the log level where to search in the scroll list \end_inset \begin_inset Text \layout Standard Time interval \end_inset \begin_inset Text \layout Standard Select the time time interval where to search in the scroll list \end_inset \begin_inset Text \layout Standard Search for \end_inset \begin_inset Text \layout Standard Select the string to search for \end_inset \begin_inset Text \layout Standard Ruleset \end_inset \begin_inset Text \layout Standard Create a ruleset for to help frequent searches of the same type \end_inset \end_inset \the_end gosa-core-2.7.4/doc/core/en/lyx-source/applications.lyx0000644000175000017500000002066610421074566021513 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold APPLICATIONS ADMINISTRATION \layout Section List of applications \layout Standard The administrator can configure an application when clicking on the \series bold \color blue Applications \series default \color default button in the \series bold Administration \series default menu on the left. The \family sans \color black Application \shape smallcaps \emph on Management \family default \shape default \emph default \color default page is displayed. \layout Standard She is divided on two columns : \layout Standard - The first column is used to display the list of applications, \layout Standard - The second column contains icons which are the actions you can execute on applications. \layout Standard \added_space_bottom medskip - Those icons ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) are used to modify the display according to the department, the icons predominate other selections of display. \layout Standard It's from the \family sans Application Management \family default \emph on \noun on \emph default \noun default page that the system administrator manage the list of applications of the organization. \layout Standard It's possible to modify the display of applications by using the table called Filters \begin_inset Graphics filename images/rocket.png \end_inset : \layout Itemize \color black To search on names : \begin_deeper \layout Standard - Click on the asterisk to show all applications; \layout Standard \color black - Click on a letter to show all the applications starting with this letter; \layout Standard \color black - Click on a number to show all applications starting with this number. \end_deeper \layout Itemize For a fast search \begin_inset Graphics filename images/search.png \end_inset : fill the field by the name of the application searched and click on the \emph on Apply filter \emph default button. \layout Standard \added_space_top medskip To configure an application, the administrator click on \begin_inset Graphics filename images/list_new_app.png \end_inset . \layout Standard You will see tabs. The administrator uses tabs to configure the application. \layout Standard To save changes use the \emph on Save \emph default button, to come back without saving use the \emph on Cancel \emph default button. \layout Standard All the fields followed by an asterisk must be filled. \layout Subsection \pagebreak_top Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Application \color red \color black name \color red * \end_inset \begin_inset Text \layout Standard Insert the name of the application \end_inset \begin_inset Text \layout Standard Display name \end_inset \begin_inset Text \layout Standard Display the name of the application \end_inset \begin_inset Text \layout Standard Execute \color red * \end_inset \begin_inset Text \layout Standard Insert the name of the aplication to execute with his parameter \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Insert a description, a commentary on the application \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list to select the department where the applicati on exist \end_inset \begin_inset Text \layout Standard Icon \end_inset \begin_inset Text \layout Standard Select your picture in the arborescence of your system and then click on the \emph on Update \emph default button. The icon is linked at the application. \end_inset \end_inset \layout Subsubsection Options \layout Itemize Only executable for members \begin_deeper \layout Standard Check if you want the application to be executed only by members of a same group \end_deeper \layout Itemize Replace user configuration on startup \begin_deeper \layout Standard Reinstall the default configuration at each startup \end_deeper \layout Itemize Place an icon on members desktop \begin_deeper \layout Standard Check if you want to make the icon appear on members desk \end_deeper \layout Itemize Place entry in members startmenu \begin_deeper \layout Standard Create an entry for the application in the startmenu \end_deeper \layout Itemize Place entry in members launch bar \begin_deeper \layout Standard Create an entry for the application in the launch bar \end_deeper \layout Subsubsection \added_space_top medskip Script \layout Standard ? \layout Subsection \added_space_top bigskip Options \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Variable \end_inset \begin_inset Text \layout Standard Variable name \end_inset \begin_inset Text \layout Standard Default value \end_inset \begin_inset Text \layout Standard Default value associated to the variable \end_inset \end_inset \layout Standard \added_space_top medskip Use the \shape italic Add option \shape default button to add a new variable and the \shape italic Remove \shape default button to delete a variable. \layout Subsection References \layout Standard The references show the existing relations between applications. \the_end gosa-core-2.7.4/doc/core/en/lyx-source/groups.lyx0000644000175000017500000002730210421074566020336 0ustar mikemike#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language frenchb \inputencoding auto \fontscheme default \graphics default \paperfontsize default \spacing single \papersize a4paper \paperpackage a4 \use_geometry 1 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \leftmargin 10mm \topmargin 10mm \rightmargin 10mm \bottommargin 20mm \headheight 10mm \headsep 10mm \footskip 10mm \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \bullet 0 1 20 -1 \end_bullet \bullet 1 1 20 -1 \end_bullet \bullet 2 1 20 -1 \end_bullet \bullet 3 1 20 4 \end_bullet \layout Title \series bold GROUP ADMINISTRATION \layout Section List of groups \layout Standard The administrator can create, modify or access the group informations when clicking on the \series bold \color blue Group \series default \color default button in the \series bold Administration \series default menu on the left. The \family sans \color black Group \shape smallcaps \emph on Administration \family default \shape default \emph default \color default page is displayed. \layout Standard She is divided in three columns : \layout Standard - The first column is used to display the list of groups or department, \layout Standard - The two last columns contains icons which are shortcuts to the settings of each goup and the actions you can execute on them. \layout Standard \added_space_bottom medskip - Those icons ( \begin_inset Graphics filename images/list_back.png \end_inset , \begin_inset Graphics filename images/list_root.png \end_inset , \begin_inset Graphics filename images/list_home.png \end_inset ) are used to modify the display according to the department, the icons predominate other selections of display. \layout Standard It's from the \family sans Groups Administration \family default \emph on \noun on \emph default \noun default page that the system administrator manage the list of groupes of the organizatio n. \layout Standard \color black Like for the users, it is possible to modify the display of groups by using the table called Filters \begin_inset Graphics filename images/rocket.png \end_inset . \layout Standard The administrator can do a nominal research and/or on the properties of group : \layout Itemize \color black To search on names : \begin_deeper \layout Standard - Click on the asterisk to show all groups; \layout Standard \color black - Click on a lettre to show all the groups starting with this letter; \layout Standard \color black - Click on a number to show all groups starting with this number. \end_deeper \layout Itemize To search on groups properties you must : \begin_deeper \layout Standard - Check one or many propositions; \end_deeper \layout Itemize To search a name with a letter : \begin_deeper \layout Standard - fill the first field with a letter followed by an asterisk, click on the button \emph on Apply filter \emph default , all the names starting with this letter will be displayed, \layout Standard - fill the second field with a letter and an asterisk, click on the button \emph on Apply filter \emph default , all the names containing this letter will be displayed. \end_deeper \layout Standard To create a group click on \begin_inset Graphics filename images/list_new_group.png \end_inset . \layout Standard You will see tabs. The administrator uses tabs to configure the group. \layout Standard \added_space_bottom medskip To save changes use the \emph on Save \emph default button, to come back without saving use the \emph on Cancel \emph default button. \layout Standard All the fields followed by a red asterisk must be filled. \layout Standard In the upper right corner you have the full dn of the group currently edited. \layout Subsection \pagebreak_top Generic \layout Itemize \begin_inset Tabular \begin_inset Text \layout Standard Groupe \color red \color black name \color red * \end_inset \begin_inset Text \layout Standard Insert the group name \end_inset \begin_inset Text \layout Standard Description \end_inset \begin_inset Text \layout Standard Insert a description, a commentary on the group \end_inset \begin_inset Text \layout Standard Base \color red * \end_inset \begin_inset Text \layout Standard Make your choice on the scroll list \end_inset \end_inset \layout Itemize Force GID : Force the group to use the number mentionned in the field \layout Itemize Group / Domain Samba : Put members on a Samba group and a Samba domain \layout Itemize Members are in a phone pickup group : Check to put members in a phone pickup group \layout Itemize Members are in a nagios group : Check to put members in nagios group \layout Standard The administrator insert in the area different members of a group. He must use the \emph on Add \emph default button to choose in the list of users. To modify a group he must use the \emph on Delete \emph default button. \layout Subsection \added_space_top bigskip Environment \layout Standard To activate the environment extension click on \shape italic Add environment \shape default \emph on extension \emph default . \layout Subsubsection Profiles \layout Subsubsection \added_space_top medskip Kiosk profile \layout Subsubsection \added_space_top medskip Logon scripts \layout Subsubsection \added_space_top medskip Attach share \layout Subsubsection \added_space_top medskip Hotplug devices \layout Subsubsection \added_space_top medskip Imprimante \layout Subsection \added_space_top bigskip Applications \layout Standard To activate the extension Applications click on the button \shape italic Create applications \shape default . \layout Standard The applications are applications existing in the organization. \color red ??? \color default \layout Subsection \added_space_top bigskip Mail \layout Standard To activate a mail account click on the \shape italic Create mail \shape default \emph on account \emph default . \layout Subsubsection Generic \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Primary address \color red * \end_inset \begin_inset Text \layout Standard \color black Insert group primary address \color red \end_inset \begin_inset Text \layout Standard Server \end_inset \begin_inset Text \layout Standard \color black Insert server name where the group mailbox reside \end_inset \begin_inset Text \layout Standard Quota usage \end_inset \begin_inset Text \layout Standard \color black Mention if you want establish a quantity quota on the incoming and outgoing mail \color red \end_inset \begin_inset Text \layout Standard Quota size \end_inset \begin_inset Text \layout Standard \color black Mention the Quota size \color red \color black in KB \end_inset \end_inset \layout Subsubsection \added_space_top medskip Alternative addresses \layout Standard A mail could be redirected to one or many addresses. Use buttons \emph on Add \emph default and \emph on Delete \emph default to manage aliases. \layout Subsubsection \added_space_top medskip IMAP shared folders \layout Standard \begin_inset Tabular \begin_inset Text \layout Standard Default permission \end_inset \begin_inset Text \layout Standard Make your choice in the scroll list to select the type of default permission for the group IMAP folder \end_inset \begin_inset Text \layout Standard Member permision \end_inset \begin_inset Text \layout Standard Make your choice in the scroll list of the type of permission allowed to the members to access the IMAP folder \end_inset \begin_inset Text \layout Standard \end_inset \begin_inset Text \layout Standard The administrator can add other email adresses that can have access to the IMAP folder \end_inset \end_inset \layout Subsubsection \added_space_top medskip Forward messages to non group members \layout Standard Users can recieve messages from a group without being a member of this group. You have to insert the email addresses of users in the field that precede buttons \emph on Add \emph default , \emph on Add local \emph default and \emph on Delete. \emph default The \emph on Add local \emph default button will show you addresses already saved in GOsa. \layout Subsection \added_space_top bigskip ACL \layout Standard This part allow the administrator to configure the user rights to the differents parts of GOsa. \layout Subsection \added_space_top bigskip References \layout Standard The references show the existing relations between objects. \the_end gosa-core-2.7.4/doc/admin/0000755000175000017500000000000011752422547013705 5ustar mikemikegosa-core-2.7.4/doc/admin/es/0000755000175000017500000000000011752422547014314 5ustar mikemikegosa-core-2.7.4/doc/admin/es/manual_gosa_es_fileserver.tex0000644000175000017500000000042010271360203022216 0ustar mikemike\chapter{Servidores de archivos - Samba} \section{Introduccin} \section{Protocolos} \subsection{NETBIOS} \subsection{CIFS} \section{Instalacin} \subsection{Varios Servidores en una unica maquina} \section{Configuracin} \section{Perfiles Movibles} \section{} \section{} gosa-core-2.7.4/doc/admin/es/manual_gosa_es_gw.tex0000644000175000017500000000004710265525054020504 0ustar mikemike\chapter{Servicios de trabajo en grupo}gosa-core-2.7.4/doc/admin/es/manual_gosa_es_certificates.tex0000644000175000017500000000744610271360203022534 0ustar mikemike\chapter{Seguridad y Certificados} \section{Introduction SSL} \section{Creacin de certificados} La seguridad es uno de los puntos mas importantes al configurar un servidor, necesitaremos un entorno seguro donde no permitir que los usuarios manipulen y accedan a codigo o programas. Una formas de conseguir esto es usando encriptacin, con lo que buscamos que los usuarios y el servidor se comuniquen de forma que nadie mas pueda acceder a los datos. Esto se consigue con encriptacin. La otra manera de asegurar el sistema es que si existe algn fallo en el sistema o en el cdigo, y un intruso intenta ejecutar codigo, este se vea incapacitado, ya que existen poderosas limitaciones, como no permitir que ejecute comandos, lea el codigo de otros script, no pueda modificar nada y tenga un usuario con muy limitados recursos. \subsection{ Certificados SSL} \label{down_ssl} \noindent Necesitaremos \textbf{openSSL}, existe en todas las distribuciones y tiene documentacin en su pagina web\cite{ssldoc}. \noindent Las fuentes se pueden descargar de \hlink{http://www.openssl.org/source/} \noindent Existe amplia documentacin sobre encriptacin y concretamente sobre SSL, un sistema de encriptacin con clave publica y privada. \noindent Como el paquete openSSL ya lo tenemos instalado a partir de los pasos anteriores, debemos crear los certificados que usaremos en nuestro servidor web. \noindent Supongamos que guardamos el certificado en /etc/apache2/ssl/gosa.pem \jump \begin{rbox}[label=Pem Certificate] # FILE=/ect/apache2/ssl/gosa.pem # export RANDFILE=/dev/random # openssl req -new -x509 -nodes -out $FILE -keyout /etc/apache2/ssl/apache.pem # chmod 600 $FILE # ln -sf $FILE /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < $FILE`.0 \end{rbox} \jump \noindent Con esto hemos creado un certificado que nos permite el acceso SSL a nuestras pginas. \noindent Si lo que queremos es una configuracin que nos permita no solo que el trfico est encriptado, sino que adems el cliente garantice que es un usuario vlido, debemos provocar que el servidor pida una certificacin de cliente. \newpage \noindent En este caso seguiremos un procedimiento mas largo, primero la creacin de una certificacin de CA: \jump \begin{rbox} # CAFILE=gosa.ca # KEY=gosa.key # REQFILE=gosa.req # CERTFILE=gosa.cert # DAYS=2048 # OUTDIR=. # export RANDFILE=/dev/random # openssl req -new -x509 -keyout $KEY -out $CAFILE -days $DAYS \end{rbox} \jump Despus de varias cuestiones tendremos una CA, ahora hacemos un requerimiento para un nuevo certificado: \jump \begin{rbox} # >DAYS=365 # >openssl req -new -keyout $REQFILE -out $REQFILE -days$DAYS \end{rbox} \jump Creamos una configuracin para usar la CA con openssl y la guardamos en openssl.cnf: \jump \begin{rbox} HOME = . RANDFILE = $ENV::HOME/.rnd [ ca ] default_ca = CA_default [ CA_default ] dir = . database = index.txt serial = serial default_days = 365 default_crl_days= 30 default_md = md5 preserve = no policy = policy_anything [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional \end{rbox} \jump Firmamos el nuevo certificado: \jump \begin{rbox} # touch index.txt # touch index.txt.attr # echo "01" >serial # openssl ca -config openssl.cnf -policy policy_anything \ -keyfile $KEY -cert $CAFILE -outdir . -out $CERFILE -infiles $REQFILE \end{rbox} \jump Y creamos un pkcs12 para configurar la certificacin en los clientes: \jump \begin{rbox} # openssl pkcs12 -export -inkey $KEY -in $CERTFILE -out certificado_cliente.pkcs12 \end{rbox} \jump Este certificado se puede instalar en el cliente, y en el servidor mediante la configuracin explicada en cada uno, esto nos dar la seguridad de que su comunicacin ser estrictamente confidencial.\\ gosa-core-2.7.4/doc/admin/es/manual_gosa_es_kerberos.tex0000644000175000017500000006743710271360203021711 0ustar mikemike\chapter{Servidor Horario de Red} \section{El protocolo NTP} NTP(Network Time Protocol) es el protocolo estandar de sincronizacin de la hora en equipos de una misma red. El servidor devuelve la Hora UTC (Horario de Greenwich u horario universal), con lo cual hay que modificar este horario para los paises en que estemos y su uso horario. Amplia documentacin puede ser encontrada en \hlink{http://www.ntp.org/} y servidores ntp pblicos en \hlink{http://pool.ntp.bitic.net/} y \hlink{http://www.eecis.udel.edu/~mills/ntp/servers.html}. Sigue los siguientes RFC: RFC 778, RFC 891, RFC 956, RFC 958, y RFC 1305. El servidor NTP y el cliente correspondiente sern necesarios para su utilizacin con Kerberos, ya que este protocolo de autentificacin necesita gran precisin horaria. \section{NTP-server} \subsection{Instalacin} Es el servidor oficial, que puede ser descargado de \hlink{http://ntp.isc.org/bin/view/Main/SoftwareDownloads}, una vez descargado y descomprimido en /usr/src/ntp-4.X.X haremos: \jump \begin{rbox} # cd build-refclock && ../configure --prefix=/usr \ --enable-all-clocks --enable-parse-clocks --enable-SHM \ --disable-debugging --sysconfdir=/var/lib/ntp \ --cache-file=../config.cache --disable-errorcache \ --enable-linuxcaps # make # make install \end{rbox} \jump \subsection{Configuracin} La configuracin se guarda en /etc/ntp.conf y esta es una configuracin bsica: \jump \begin{rbox} # Donde guardamos los registros. logfile /var/log/ntpd # Indica la direccin del archivo de frecuencia. driftfile /var/lib/ntp/ntp.drift # Directorio donde se volcarn estadsticas statsdir /var/log/ntpstats/ # Mas de estadsticas statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable # Usaremos pool.ntp.org ya que redirecciona a gran cantidad # de servidores ntp publicos server pool.ntp.org # Restricciones de acceso restrict your.lan kod notrap nomodify nopeer noquery restrict 127.0.0.1 nomodify restric default ignore # Para proveer de hora a la subred broadcast your.subnet.255 \end{rbox} \jump ntp-server soporta muchos mas parmetros de configuracin como autentificacin, certificados, monitorizacin, etc. Que se salen de las necesidades de este manual. \section{Chrony} \subsection{Instalacin} Chrony es otro servidor horario mas ligero que el anterior y tambien ampliamente utilizado, lo descargaremos de \hlink{http://chrony.sunsite.dk/download.php} y como hacemos con todos los paquetes lo ponemos en /usr/src: \jump \begin{rbox} # cd /usr/src/chrony- # ./configure --prefix='/usr' # make # make install \end{rbox} \jump Mas documentacin la encontraremos en \hlink{http://chrony.sunsite.dk/guide/chrony.html} . \subsection{Configuracin} El archivo de configuracin bsico es /etc/chrony/chrony.conf y sera como: \jump \begin{rbox} # See www.pool.ntp.org for an explanation of these servers. Please # consider joining the project if possible. If you can't or don't want to # use these servers I suggest that you try your ISP's nameservers. We mark # the servers 'offline' so that chronyd won't try to connect when the link # is down. Scripts in /etc/ppp/ip-up.d and /etc/ppp/ip-down.d use chronyc # commands to switch it on when the link comes up and off when it goes # down. If you have an always-on connection such as cable omit the # 'offline' directive and chronyd will default to online. # Configuracin para pool.net.org, al igual que en ntp-server, en este caso # usaremos tres intentos por si nuestra primera peticin da con un servidor offline. server pool.ntp.org minpoll 8 server pool.ntp.org minpoll 8 server pool.ntp.org minpoll 8 # Clave del administrador, keyfile /etc/chrony/chrony.keys # Clave para el ejecutable (la primera del anterior) commandkey 1 # Fichero de frecuencias driftfile /var/lib/chrony/chrony.drift # Registro del servidor log tracking measurements statistics logdir /var/log/chrony # Stop bad estimates upsetting machine clock. maxupdateskew 100.0 # Volcar las mediciones al cerrar el servidor dumponexit # Y donde: dumpdir /var/lib/chrony # Let computer be a server when it is unsynchronised. local stratum 10 # Clientes permitidos allow your.subnet # Envia un registro si tiene que actualizar hora de mas de x segs: logchange 0.5 # Idem pero enviando un correo # if chronyd applies a correction exceeding a particular threshold to the # system clock. mailonchange root@your.domain 0.5 \end{rbox} \jump \section{ntpdate} \subsection{Instalacin y Funcionamiento} ntpdate es un cliente que viene con ntp-server, se instalara al mismo tiempo que ntp-server, su funcionamiento bsico es muy sencillo, aunque soporte autentificacin, en este caso supondremos que el cliente se ejecuta en la maquina a traves de un sistema peridico (cron): \jump \begin{rbox} # /usr/sbin/ntpdate your.ntp.server \end{rbox} \jump \section{Cmo uso pool.ntp.org?} El fichero de frecuencias deberia quedar as: \jump \begin{rbox} server pool.ntp.org server pool.ntp.org server pool.ntp.org \end{rbox} \jump Sencillo, no? \chapter{Servicios de seguridad - Kerberos} \section{Seguridad e identificacin} Quin se conecta al servidor?\\ Puedo estar seguro de que se puede confiar en el cliente, y el cliente en el servidor? Esto es solo un pequeo resumen, para mas documentacin vease Criptografa y Seguridad en Computadores\cite{cripto1} en espaol. Los rfc mas interesantes son: \jump \begin{itemize} \item The Kerberos Network Authentication Service (V5),\cite{1510} \item Encryption and Checksum Specifications for Kerberos 5,\cite{3961} \item Advanced Encryption Standard (AES) Encryption for Kerberos 5,\cite{3961} \end{itemize} \subsection{Caso 1: Las contraseas van en texto plano} Estn ah, todo aquel que vea el trfico de la red las ver. Solo es factible si se estn usando canales que se consideren seguros (SSL,ipsec,etc). \subsection{El problema del hombre de enmedio} Si alguien ve tu usuario y tu contrasea puede hacer algo peor que simplemente ver que haces, puede suplantarte. El hombre de enmedio (man in the middle) es un sistema que esta entre el cliente y el servidor que coge las peticiones del cliente, las manipula y las envia al servidor, por supuesto tambien puede manipular lo que viene del servidor. \subsection{Caso 2: Las contraseas tienen codificacin simetrica} \begin{enumerate} \item Mejora mucho la seguridad, cuanto mejor sea la encriptacin sera mas seguro. \item An as es problemtico y deberia usarse bajo canales seguros. \item Como enviamos la clave con la que encriptamos la contrasea? \item Si esta clave cae, se producira una situacin como la del envio en texto plano, y volvemos a estar en situacin de que un sistema intermedio tome nuestra personalidad. \item Se considera segura a partir de 128bits de longitud. \item No autentifica quien envio el mensaje. \end{enumerate} \subsection{Caso 3: Cifrado por bloques (Hashes)} \begin{enumerate} \item Las contraseas se codifican de tal manera que no se puede volver a conseguir la contrasea por otro metodo que no sea la fuerza bruta. \item Es menos problemtico, pero deberia usarse solo bajo canales seguros. \item Se envan de esta manera por la red, cualquiera puede identificar que es una contrasea e intentar romper por fuerza bruta la contrasea. \item Sigue siendo sensible al problema del robo de identidad, ya que no autentifica quien envio el mensaje. \item Se puede mejorar usando tecnicas de desafio, enviando antes de pedir la clave un codigo al usuario con el que mejorar la seguridad del cdigo resultante. \end{enumerate} \subsection{Caso 4: Cifrado Asimetrico, Certificados SSL} \begin{enumerate} \item Se dividen en dos partes: la privada, aquella con la que codificamos, y la publica, que es aquella con la que decodifican los mensajes los clientes. \item Necesita logitudes de clave muy largas para ser seguros (>1024bits) y mucho mas tiempo de computacin que los cifrados simetricos. \item En la prctica se utilizan para el envio de la clave y despues los mensaje se envian con codificacin simetrica. \item Es mas resistente a sistemas intermedios, ya que este no puede acceder a la clave privada y por lo tanto no puede codificar mensajes. \end{enumerate} \subsection{Caso 5: Kerberos para identificacin} \begin{enumerate} \item El protocolo supone que la red es insegura y que hay sistemas intermedios que pueden escuchar. \item Los usuarios y servicios (principales) deben autentificarse ante un tercero, el servidor kerberos, el cual es aceptado como autentico. \item Usa cifrado simetrico convirtiendo el conjunto en una red segura. \end{enumerate} \section{El protocolo Kerberos} \subsection{El servidor Kerberos} El servidor kerberos no sirve un unico servicio, sino tres: \jump \begin{itemize} \item AS = Servidor de autentificacin. \item TGS = Servidor de Tickets. \item SS = Servidor de servicios. \end{itemize} \subsection{Clientes y Servidores} El cliente autentifica contra el AS, despues demuestra al TGS que esta autorizado para recibir el ticket para el servicio que quiere usar, y por ltimo demuestra ante el SS que esta autorizado para usar el servicio. \subsection{Que es un ticket y como funciona Kerberos} \begin{enumerate} \item[1.-] Un usuario introduce una clave y contrasea en el cliente. \item[2.-] El Cliente usa un hash sobre la contrasea y la convierte en la clave secreta del cliente. \item[3.-] El cliente enva un mensaje al AS pidiendo servicio para el cliente. \item[4.-] El AS comprueba si el usuario existe en la base de datos. Si existe le envia dos mensajes al cliente.\\ El mensaje A: Tiene una clave de sesin del TGS codificada usando la clave secreta del usuario.\\ El mensaje B: (TGT)Ticket-Granting Ticket. Este incluye el identificador del cliente, la direccin de red es este, un periodo de valided, y la clave de sesin del TGS, todo codificado usando la clave secreta del TGS. \item[5.-] El cliente recibe los mensajes A y B, con su clave secreta decodifica el mensaje A y coge la clave de sesin del TGS, con esta podra comunicarse con el TGS. Se observa que el cliente no puede decodificar el mensaje B al no tener la clave secreta del TGS. \item[6.-] Cuando el cliente quiere usar algn servicio, envia los siguientes mensajes al TGS:\\ Mensaje C: Compuesto por el TGT del mensaje B y el identificador de peticin de servicio.\\ Mensaje D: Autentificador (El cual est compuesto por el identificador del cliente y una marca horaria - timestamp -) codificado con la clave de sesin del TGS. \item[7.-] Al recibir los dos mensajes, el TGS decodifica el autentificador usando la clave de sesin del usuario y envia los siguientes mensajes al cliente:\\ Mensaje E: Ticket Cliente Servidor, que contiene el identificador del cliente, su direccin de red, un periodo de valided, y la clave de sesin del TGS, codificado usando la clave secreta del servidor.\\ Mensaje F: Clave de sesin Cliente / Servidor codificada con la clave de sesin del TGS del cliente. \item[8.-] Una vez recibidos desde el TGS los mensajes, el cliente tiene informacin suficiente para autentificarse ante el SS. El cliente se conectara al SS y le enviara los siguientes mensajes:\\ Mensaje G: El ticket de cliente / servidor codificado con la clave secreta del servidor. (Mensaje E).\\ Mensaje H: Un nuevo autentificador que contiene el identificador del cliente, una marca horaria y que esta codificado usando la clave de sesin cliente / servidor. \item[9.-] El SS decodifica el Mensaje G usando su propia clave secreta y usando la clave Cliente/TGS en el mensaje F consigue la clave de sesion cliente/servidor, entonces le enviara el siguiente mensaje al cliente para confirmar su identidad:\\ Mensaje I: La marca horaria del Autentificador mas 1, codificado usando la clave de sesin cliente/servidor. \item[10.-] El cliente decodifica el mensaje de confirmacin y comprueba si la marca horaria ha sido actualizada correctamente. Si todo es correcto, el cliente confiara en el servidor y puede comenzar a hacer peticiones al servidor. \item[11.-] El servidor responde a las peticiones de ese cliente que ha sido autentificado. \end{enumerate} \section{MIT Kerberos} El Intituto de Tecnologias de Massachusetts (MIT, Massachusetts Institute of Technology) junto con DEC e IBM comenzaron el proyecto Athena para computacin distribuida. Parte de este proyecto es el protocolo de autentificacin Kerberos. El proyecto comenzo su funcionamiento en 1983. La versin 4 del protocolo salio en 1980 para el proyecto Athena, y en 1993 salio la versin 5\cite{1510} que superaba las limitaciones y problemas de su predecesor. MIT Kerberos es distribuido libremente bajo licencia tipo BSD. \subsection{Instalacin} \label{down_kerberos_mit} Antes de nada, nos bajaremos una librera de las que depende MIT kerberos: \jump \begin{itemize} \item[e2fsprogs] Se puede descargar de \htmladdnormallink{http://e2fsprogs.sourceforge.net}{http://e2fsprogs.sourceforge.net} para acceso al sistema de archivos y para las libreras libss y libcomerr2. \end{itemize} \jump Las fuentes de MIT Kerberos se pueden descargar de \htmladdnormallink{MIT Kerberos V}{http://web.mit.edu/kerberos/www}, como haremos con todas las fuentes las descomprimiremos en /usr/src y entraremos en /usr/src/krb5-1.X.X y jecutamos \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure_krb5.sh} con las siguientes opciones: \jump \begin{tabular}{|ll|}\hline --prefix=/usr & $\rightarrow$ Donde vamos a instalarlo\\ --mandir=/usr/share/man & $\rightarrow$ Donde van los manuales\\ --localstatedir=/etc & \\ --enable-shared & $\rightarrow$ Librerias dinamicas, necesarias\\ & $\rightarrow$ para compilar otros programas\\ --with-system-et & $\rightarrow$ Usara la libreria estandar de errores\\ & $\rightarrow$ , libcomerr2, para com\_err.so y compile\_et\\ --with-system-ss & Necesario para que use libss2, una libreria\\ & $\rightarrow$ para la entrada de linea de comandos.\\ --without-tcl & $\rightarrow$ No compilamos el soporte tcl.\\ --enable-dns-for-kdc & $\rightarrow$ Busquedas dns para el kdc\\ \hline \end{tabular} \jump Una vez configurado, hacemos: \jump \begin{tabular}{|l|}\hline \#make \&\& make install\\ \hline \end{tabular} \jump \subsection{Configuracin y funcionamiento} \subsubsection{Iniciar un dominio} Antes de iniciar un dominio debemos estar seguros de que la configuracin DNS es correcta \ref{dns_kerberos}. El dominio que vamos a crear es CHAOSDIMENSION.ORG, para ello una vez instalado el programa haremos: \subsubsection{Aadir usuarios y servicios} \subsection{Replicacin - kprop} \subsection{Ventajas y desventajas} \section{El servidor Heimdal Kerberos} Por culpa de las regulaciones de exportacin de los Estados Unidos que prohibian la salida del cdigo del MIT Kerberos porque usaba el algoritmo de encriptacin DES con logitud de clave de 56 bit. Se comenzo una implementacin nueva en KTH, suecia: Heimdal. En el 2000 se elimino las restricciones a la exportacin y se pudo mejorar la compatibilidad entre ambos servidores. Aunque GOsa puede usar cualquiera de las dos versiones de Heimdal, desde este manual se recomienda Heimdal, ya que es thread safe (no tiene problemas con los hilos), tiene mejor rendimiento y es el servidor kerberos elegido por el grupo de desarrollo de Samba para su proxima versin 4. \subsection{Instalacin} \label{down_kerberos_heimdal} Antes de nada, nos bajaremos una librera de las que depende Heimdal kerberos: \begin{itemize} \item[readline] Se puede descargar de \htmladdnormallink{http://cnswww.cns.cwru.edu/~chet/readline/rltop.html}{http://cnswww.cns.cwru.edu/~chet/readline/rltop.html}. Es una librera que controla el acceso a la linea de comandos. \end{itemize} \noindent Heimdal Kerberos se puede descargar de \htmladdnormallink{Heimdal Kerberos}{http://www.pdc.kth.se/heimdal}, las descomprimiremos en /usr/src y entraremos en /usr/src/heimdal-0.6.X. Ejecutamos \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure_heimdal.sh} con las siguientes opciones: \jump \begin{tabular}{|ll|}\hline --prefix=/usr & $\rightarrow$ Donde vamos a instalarlo\\ --mandir=/usr/share/man & $\rightarrow$ Donde van los manuales\\ --infodir=/usr/share/info & $\rightarrow$ Donde van los info\\ --libexecdir=/usr/sbin & $\rightarrow$ Donde van los ejecutables de aministrador\\ --with-roken=/usr & $\rightarrow$ Donde van las librerias roken\\ --enable-shared & $\rightarrow$ Librerias dinamicas, necesarias\\ & $\rightarrow$ para compilar otros programas\\ --with-krb4 & $\rightarrow$ Compilar con la versin antigua del protocolo\\ --with-openldap & $\rightarrow$ Soporte openldap \ref{down_ldap}\\ \hline \end{tabular} \jump Una vez configurado, hacemos: \jump \bbox \#make \&\& make install\\ \ebox \jump \subsection{Configuracin y funcionamiento} La configuracin de Heimdal Kerberos se guarda principalmente en estos archivos:\\ \begin{tabular}{|l|l|}\hline /etc/krb5.conf & Configuracin de los dominios Kerberos y de otros parametros.\\ & \\ /var/lib/heimdal-kdc/kdc.conf & Configuracin de los parametros del servidor kdc.\\ & \\ /var/lib/heimdal-kdc/kadmind.acl & Configuracin de acceso de usuarios y servicios\\ & a la base de datos de Kerberos desde acceso remoto al administrador.\\ & \\ /var/lib/heimdal-kdc/m-key & Clave secreta del servidor Kerberos.\\ & \\ /etc/krb5.keytab & Aqui se guardaran las claves de maquinas y servicios.\\ & \\ \hline \end{tabular} \jump Los ejecutables que normalmente vamos a usar son:\\ \begin{tabular}{|l|l|}\hline kadmin & Aplicacin para la administracin de los dominios y de los keytab.\\ & Para usarlo en modo local se usara -l.\\ & \\ ktutil & Utilidad mas especfica para los keytab.\\ & \\ kinit & Aplicacin para iniciar tickets, sirve para probar el servidor.\\ & \\ kpasswd & Utilidad para cambiar las contraseas de usuarios.\\ & \\ \hline \end{tabular} \jump \subsubsection{Iniciar un dominio} Antes de iniciar un dominio debemos estar seguros de que la configuracin DNS es correcta \ref{dns_kerberos}. \label{heimdal_conf} El dominio que vamos a crear es CHAOSDIMENSION.ORG, para ello una vez instalado y antes de iniciar heimdal editaremos /etc/krb5.conf: \jump \begin{center} \begin{tabular}{|l|l|}\hline \verb|[libdefaults]| & $\rightarrow$ Valores por defecto de los dominios\\ \verb| default_realm = CHAOSDIMENSION.ORG| & $\rightarrow$ Dominio por defecto \\ & del servidor si no se pide el dominio\\ \verb| kdc_timesync = true| & $\rightarrow$ Intenta compensar la diferencias de \\ & tiempos entre clientes y servidores\\ \verb| clockskew = 60| & $\rightarrow$ Mxima diferencia de segundos cuando se \\ & comparan tiempos\\ \verb| dns_lookup_kdc = true| & $\rightarrow$ Usar DNS SRV para busquedas \\ & servidores KDC.\\ \verb| dns_lookup_realm = true| & $\rightarrow$ Usar DNS TXT para relacionar \\ & dominios DNS \\ & con dominios Kerberos.\\ \verb| max_retries = 1| & $\rightarrow$ Numero de intentos en la autentificacin.\\ \verb| krb4_get_tickets = false| & $\rightarrow$ No Aceptamos tickets de Kerberos v4.\\ & \\ \verb|[realms]| & $\rightarrow$ Definimos los dominios\\ \verb| CHAOSDIMENSION.ORG = {| & $\rightarrow$ \\ \verb| kdc = kdc.chaosdimension.org| & $\rightarrow$ Donde est el KDC.\\ \verb| admin_server = kadmin.chaosdimension.org| & $\rightarrow$ Dond estar el Kadmind.\\ \verb| kpasswd_server = kpasswd.chaosdimension.org| & $\rightarrow$ Donde est el kpasswd.\\ \verb| }| & \\ & \\ \verb|[domain_realm]| & $\rightarrow$ Mapeo de Dominios.\\ \verb| .chaosdimension.org = CHAOSDIMENSION.ORG| & \\ \verb| chaosdimension.org = CHAOSDIMENSION.ORG| & \\ & \\ \verb|[logging]| & $\rightarrow$ Configuracin de registro\\ \verb| kdc = FILE:/var/lib/heimdal-kdc/kdc.log| & \\ \verb| hpropd = FILE:/var/lib/heimdal-kdc/hpropd.log| & \\ \verb| ipropd = FILE:/var/lib/heimdal-kdc/ipropd.log| & \\ \verb| kpasswdd = FILE:/var/lib/heimdal-kdc/kpasswdd.log| & \\ \verb| kadmind = FILE:/var/lib/heimdal-kdc/kadmind.log| & \\ \verb| default = FILE:/var/log/heimdal-kdc.log| & \\ \hline \end{tabular} \end{center} \jump Esta es la configuracin mnima para hacer funcionar Heimdal Kerberos, la configuracin para GOsa es la indicada en heimdal sobre ldap \ref{heimdal_ldap}, ya que es la que permite mayor control y una replicacin mas comoda. El siguiente paso es crear la clave privada del servidor, para ello ejecutaremos el comando kstah: \bbox \verb|\#kstash|\\ \verb|Master key: |\\ \verb|Verifying password - Master key: |\\ \ebox Iniciamos el dominio CHAOSDIMENSION.ORG: \bbox \verb|# kadmin -l|\\ \verb| kadmin> init CHAOSDIMENSION.ORG|\\ \verb| Realm max ticket life [unlimited]:|\\ \verb| Realm max renewable ticket life [unlimited]:|\\ \ebox \subsubsection{Aadir usuarios y servicios} Aadir un usuario es sencillo, hacer en la consola de administracin (kadmin -l): \bbox \verb| kadmin> add usuario|\\ \verb| Max ticket life [unlimited]:|\\ \verb| Max renewable life [unlimited]:|\\ \verb| Attributes []:|\\ \verb| Password:|\\ \verb| Verifying password - Password:|\\ \ebox Para comprobar si funciona: \bbox \verb|# kinit usuario@CHAOSDIMENSION.ORG|\\ \verb|# klist|\\ \ebox Para aadir un servicio necesitamos aadirlo como si fuera un usuario, en este caso la clave sera un valor al azar, ya que no necesita identificarse ante el servidor y por otro lado hay que guardar los datos en el keytab. Por ejemplo para configurar el servicio ldap tenemos: \bbox \verb|# kadmin -l|\\ \verb| kadmin> add --random-key ldap/my.host.name|\\ \verb| Max ticket life [unlimited]:|\\ \verb| Max renewable life [unlimited]:|\\ \verb| Attributes []:|\\ \verb| Password:|\\ \verb| Verifying password - Password:|\\ \ebox Si queremos aceptar todos los servicios de ese servidor tenemos: \bbox \verb|# kadmin -l|\\ \verb| kadmin> add --random-key host/my.host.name|\\ \verb| Max ticket life [unlimited]:|\\ \verb| Max renewable life [unlimited]:|\\ \verb| Attributes []:|\\ \verb| Password:|\\ \verb| Verifying password - Password:|\\ \ebox Guardamos entonces el servicio en el keytab. \bbox \verb|# kadmin -l|\\ \verb| kadmin> ext host/my.host.name|\\ \verb| kadmin> exit|\\ \verb|# ktutil list|\\ \verb| Version Type Principal|\\ \verb| 1 des-cbc-md5 host/my.host.name@CHAOSDIMENSION.ORG|\\ \verb| 1 des-cbc-md4 host/my.host.name@CHAOSDIMENSION.ORG|\\ \verb| 1 des-cbc-crc host/my.host.name@CHAOSDIMENSION.ORG|\\ \verb| 1 des3-cbc-sha1 host/my.host.name@CHAOSDIMENSION.ORG|\\ \ebox \subsubsection{Administracin Remota} Para poder administrar de forma remota (lease que no este ejecutandose en la maquina donde estamos o que no seamos root de la maquina donde se est administrando). usaremos kadmin sin la opcin -l, en el servidor kerberos debemos tener configurado el usuario de administracin remota con los permisos que nosotros querramos. Esto se debe dejar claro en kadmind.acl, por ejemplo si queremos que el usuario admin desde la maquina admin.remote.host pueda tener todos los permisos en el dominio CHAOSDIMENSION.ORG: \bbox \verb|admin@CHAOSDIMENSION.ORG all *@CHAOSDIMENSION.ORG|\\ \verb|admin@CHAOSDIMENSION.ORG all */*@CHAOSDIMENSION.ORG|\\ \ebox \subsection{Replicacin - hprop} Hprop es el servicio de replicacin que trae Heimdal Kerberos de serie. No es incremental, se basa en un dump de la base de datos y en la copia de este a los otros servidores. El servidor hpropd se ejecuta en los esclavos, y el cliente hprop se ejecuta a intervalos regulares en el servidor, cuando hprop es ejecutado intenta una conexin con el puerto 754/TCP del servidor, coge la base de datos del dominio y la envia en un formato que permite al servidor convertirla en la nueva base de datos del cliente. El servidor maestro debe tener configurado el usuario kadmin/hprop, ya que se crea al inicializar el dominio, si no es asi, haremos: \bbox \verb|# kadmin -l|\\ \verb| kadmin> add --random-key kadmin/hprop@CHAOSDIMENSION.ORG|\\ \verb| Max ticket life [unlimited]:|\\ \verb| Max renewable life [unlimited]:|\\ \verb| Attributes []:|\\ \ebox Necesitaremos un usuario administrador, en nuestro caso lo llamaremos admin y le daremos permisos para que tenga administracin remota: \bbox \verb| kadmin> add admin@CHAOSDIMENSION.ORG|\\ \verb| Max ticket life [unlimited]:|\\ \verb| Max renewable life [unlimited]:|\\ \verb| Attributes []:|\\ \verb| Password:|\\ \verb| Verifying password - Password:|\\ \ebox Editamos el archivo kadmind.acl y aadimos el usuario administrador: \bbox \verb| admin@CHAOSDIMENSION.ORG all */*@CHAOSDIMENSION.ORG|\\ \ebox Tanto en el maestro como en los servidores esclavos, con la configuracin dns apuntando como servidor de dominio al servidor maestro, haremos: \bbox \verb|# ktutil get -p admin@CHAOSDIMENSION.ORG hprop/esclavo.hostname@CHAOSDIMENSION|\\ \verb|admin@CHAOSDIMENSION's Password:|\\ \ebox Para hacer una replica del maestro, simplemente ejecutaremos hpropd en el esclavo y en el servidor ejecutaremos: \bbox \verb|# hprop --source=heimdal --v5-realm=CHAOSDIMENSION.ORG --encrypt \|\\ \verb| --master-key=/var/lib/heimdal-kdc/m-key esclavo.hostname|\\ \ebox Para comprobar que la replicacin esta bien hecha haremos en el esclavo: \bbox \verb|# kadmin -l list *|\\ \ebox La replicacin debe ser controlada desde el maestro, normalmente se ejecutara cada cierto tiempo dependiendo del tamao de la base de datos. En el esclavo lo normal es que hpropd se ejecute a traves de inetd, aunque puede ejecutarse como demonio. \subsection{Replicacin incremental - iprop} Iprop es un servicio de replica incremental de la base de datos de Heimdal Kerberos, su idea es sencilla, es un log se van grabando las transacciones de la base de datos, cuando un cliente iprop se conecta se le envian las transacciones que este no haya ejecutado anteriormente. Necesitaremos un usuario administrador, en nuestro caso lo llamaremos admin y le daremos permisos para que tenga administracin remota: \bbox \verb| kadmin> add admin@CHAOSDIMENSION.ORG|\\ \verb| Max ticket life [unlimited]:|\\ \verb| Max renewable life [unlimited]:|\\ \verb| Attributes []:|\\ \verb| Password:|\\ \verb| Verifying password - Password:|\\ \ebox Editamos el archivo kadmind.acl y aadimos el usuario administrador: \bbox \verb| admin@CHAOSDIMENSION.ORG all */*@CHAOSDIMENSION.ORG|\\ \ebox Tanto en el maestro como en los servidores esclavos, con la configuracin dns apuntando como servidor de dominio al servidor maestro, haremos: \bbox \verb|# ktutil get -p admin@CHAOSDIMENSION.ORG iprop/esclavo.hostname@CHAOSDIMENSION|\\ \verb|admin@CHAOSDIMENSION's Password:|\\ \ebox Para hacer una replica del maestro, simplemente ejecutaremos \verb| #iprop-master &| en el servidor y en los servidor escalvos ejecutaremos: \bbox \verb|# iprop-slave maestro.hostname &|\\ \ebox Para comprobar que la replicacin esta bien hecha haremos en el esclavo: \bbox \verb|# kadmin -l list *|\\ \ebox Esta replicacin es incremental lo que significa que cada cambio en el servidor maestro es enviado automaticamente a los esclavos. \subsection{Heimdal sobre ldap} Vease en \ref{heimdal_ldap} \subsection{Ventajas y desventajas} Heimdal es un desarrollo con mucho futuro, mas aun cuando ha sido elegido como la implementacin que llevara el futuro samba4, es thread safe lo que significa menor probabilidad de fallos y mejor rendimiento para aplicaciones que tiren directamente de el, como openLdap o samba4. La replicacion iprop da numerosos problemas de estabilidad, asi que no es muy recomendada para replicacin. No tiene soporte de politicas de contraseas, aunque se puede usar cracklib para la seguridad de las contraseas, esto tiene que aadirse mediante un parche o a traves de aplicaciones externas. \section{La configuracin de clientes MS Windows} \section{SASL} \label{down_sasl} \subsection{La configuracin de SASL} \subsection{Modulos para kerberos} gosa-core-2.7.4/doc/admin/es/manual_gosa_es_ftp.tex0000644000175000017500000000004610265525054020657 0ustar mikemike\chapter{Servidores de FTP - PureFtpd}gosa-core-2.7.4/doc/admin/es/manual_gosa_es_vpn.tex0000644000175000017500000000005610265525054020672 0ustar mikemike\chapter{Conexiones remotas seguras - OpenVPN}gosa-core-2.7.4/doc/admin/es/manual_gosa_es_proxy.tex0000644000175000017500000000006010265525054021243 0ustar mikemike\chapter{Seguridad en la navegacin web - Squid}gosa-core-2.7.4/doc/admin/es/manual_gosa_es_otros.tex0000644000175000017500000000133610271360203021225 0ustar mikemike\chapter{Otros Servidores Ldap} \section{Fedora Directory Server} \section{Ultrapossum} Multifunctional LDAP Solution \chapter{Otras Aplicaciones Ldap} \section{UIF} Advanced iptables-firewall script \section{BackupNinja} lightweight, extensible meta-backup system \section{OpenSC / libpam-opensc} Pluggable Authentication Module for using PKCS\#15 Smart Cards \section{libapache2-mod-ldap-userdir} Apache2 module that provides UserDir lookups via LDAP \section{autofs-ldap} LDAP map support for autofs \chapter{Otras Aplicaciones de gestin Ldap} \section{LAM} Ldap Account Manager \section{GQ} GTK-based LDAP client \section{VLAD} LDAP visualisation tool \section{phpldapadmin} web based interface for administering LDAP servers gosa-core-2.7.4/doc/admin/es/manual_gosa_es_printing.tex0000644000175000017500000000005210265525054021715 0ustar mikemike\chapter{Servidores de impresin - Cupsys}gosa-core-2.7.4/doc/admin/es/referencias_gosa.bib0000644000175000017500000001127510271360203020260 0ustar mikemike@Manual{x500, title = {Understanding X.500 - The Directory}, key = {x500}, author = { D W Chadwick}, } @TechReport{2251, author = {Network Working Group}, title = {Request for Comments: 2251. Lightweight Directory Access Protocol (v3)}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2251.txt}, } @TechReport{2252, author = {Network Working Group}, title = {Request for Comments: 2252. Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2252.txt}, } @TechReport{2253, author = {Network Working Group}, title = {Request for Comments: 2253. Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2253.txt}, } @TechReport{2254, author = {Network Working Group}, title = {Request for Comments: 2254. The String Representation of LDAP Search Filters}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2254.txt}, } @TechReport{2255, author = {Network Working Group}, title = {Request for Comments: 2255. The LDAP URL Format}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2255.txt}, } @TechReport{2256, author = {Network Working Group}, title = {Request for Comments: 2256. A Summary of the X.500(96) User Schema for use with LDAPv3}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2256.txt}, } @TechReport{3377, author = {Network Working Group}, title = {Request for Comments: 3377. Lightweight Directory Access Protocol (v3): Technical Specification}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc3377.txt}, } @TechReport{llh, author = {Luiz Ernesto Pinheiro Malre}, title = {LDAP Linux HOWTO}, institution = {}, year = {}, address = {http://www.tldp.org/HOWTO/LDAP-HOWTO/index.html}, } @TechReport{ul, author = {metaconsultancy}, title = {Using OpenLDAP}, institution = {}, year = {}, address = {http://www.metaconsultancy.com/whitepapers/ldap.htm}, } @TechReport{oag, author = {The OpenLDAP Project}, title = {OpenLDAP 2.2 Administrator's Guide}, institution = {}, year = {}, address = {http://www.openldap.org/doc/admin22/index.html}, } @TechReport{lscp, author = {Sergio Gonzlez Gonzlez}, title = {Integracin de redes con OpenLDAP, Samba, CUPS y PyKota}, institution = {}, year = {}, address = {http://es.tldp.org/Tutoriales/doc-openldap-samba-cups-python/html/ldap+samba+cups+pykota.html}, } @TechReport{ssldoc, author = {OpenSSL Project}, title = {OpenSSL Documents}, institution = {}, year = {}, address = {http://www.openssl.org/docs/}, } @TechReport{2616, author = {Network Working Group}, title = {Request for Comments: 2616. Hypertext Transfer Protocol -- HTTP/1.1}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2616.txt}, } @TechReport{1510, author = {Network Working Group}, title = {Request for Comments: 1510. The Kerberos Network Authentication Service (V5)}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc1510.txt}, } @TechReport{3961, author = {Network Working Group}, title = {Request for Comments: 3961. Encryption and Checksum Specifications for Kerberos 5}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc3961.txt}, } @TechReport{3962, author = {Network Working Group}, title = {Request for Comments: 3962. Advanced Encryption Standard (AES) Encryption for Kerberos 5}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc3962.txt}, } @TechReport{cripto1, author = {Manuel Jos Lucena Lpez}, title = {Criptografa y Seguridad en Computadores}, institution = {}, year = {}, address = {http://www.telefonica.net/web2/lcripto/lcripto.html}, } @TechReport{2821, author = {Network Working Group}, title = {Request for Comments: 2821. Simple Mail Transfer Protocol}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2821.txt}, } @TechReport{2822, author = {Network Working Group}, title = {Request for Comments: 2822. Internet Message Format}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2822.txt}, } @TechReport{1869, author = {Network Working Group}, title = {Request for Comments: 1869. SMTP Service Extensions}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc1869.txt}, } @TechReport{1891, author = {Network Working Group}, title = {Request for Comments: 1891. SMTP Service Extension for Delivery Status Notifications}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc1891.txt}, } @TechReport{2554, author = {Network Working Group}, title = {Request for Comments: 2554. SMTP Service Extension for Authentication}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2554.txt}, } gosa-core-2.7.4/doc/admin/es/manual_gosa_es_ssh.tex0000644000175000017500000000005510265525054020663 0ustar mikemike\chapter{Servicios de terminal seguros - ssh}gosa-core-2.7.4/doc/admin/es/manual_gosa_es_im.tex0000644000175000017500000000006710265525054020476 0ustar mikemike\chapter{Servidores de mensajeria instantanea - Jabber}gosa-core-2.7.4/doc/admin/es/manual_gosa_es_mail.tex0000644000175000017500000003555410271360203021012 0ustar mikemike\chapter{Servidores de Correo Electrnico} Un E-mail (Correo Electrnico es un sistema de composicin, envio y recepcin de mensajes sobre sistemas de comunicacin electrnica. El Correo Electrnico comenzo en 1965 como una forma de enviar mensajes entre maquinas de un mismo sistema, pero no fue hasta la apricin de ARPANET cuando se hizo realmente popular. En 1980 el IETF desarrollo el procolo SMTP (Simple Mail Transfer Protocol) que se ha convertido en el protocolo dominante para el envio de correo. \section{Funcionamiento del Correo Electrnico} Tenemos dos usuarios A y B, con sus dos maquinas HA y HB, dos servidores de correo a.org y b.org con cuentas de correo a@a.org y b@b.org. \begin{enumerate} \item A compone un nuevo mensaje en su MUA (Mail User Agent / Agente de Correo Electrnico) e indica en el mensaje en un campo denominado TO: la direccin de correo electrnico de B que sera b@b.org.\\ Al enviar el mensaje, el MUA lo formateara y lo enviara al servidor MTA (Mail Transfer Agent / Agente de Envio de Correo Electrnico) de A a traves de SMTP (smtp.a.org), este servidor estar configurado en el MUA de A. \item La direccin de B es b@b.org, que est formada por dos partes, una antes de la "@" que es el nombre de usuario y otra despues que es el servidor de correo del usuario, por lo tanto el servidor SMTP de A(smtp.a.org) buscara a traves de los DNS el campo MX (Mail Exchange / Intercambiador de Correo Electrnico). \item El servidor DNS le devolvera la direccin MX de b.org (en nuestro ejemplo sera mx.b.org). \item El servidor smtp.a.org enviara el mensaje mx.b.org usando SMTP y mx.b.org lo guardara en la carpeta del usuario. \item El usuario B quiere ver su correo y tendra dos formas de verlo: \begin{enumerate} \item Descargarlo, el usuario B utiliza un MUA que se descarga el correo en su maquina y utilizara el protocolo POP3 para ello. \item Acceder sin descargarlo, el usuario B accede a su correo y lo lee, pero no los descarga en su maquina, usara entonces el protocolo IMAP4 para ello. \end{enumerate} \end{enumerate} \section{SMTP Servers} SMTP (Simple Mail Transfer Protocol / Protocolo simple de transferencia de correo electrnico) es el protocolo estandar de envo de correo electrnico a travs de Internet.\\ SMTP usa el para las comunicaciones el puerto TCP 25.\\ Para encontar el servidor SMTP de un dominio se hace una buscada dns del campo MX de ese dominio.\\ RFC relacionados con SMTP: RFC 2821 \cite{2821}, RFC 2822 \cite{2822}, RFC 1869 \cite{1869}, RFC 1891 \cite{1891}, RFC 2554 \cite{2554} \subsection{El problema del SPAM} El SPAM (Recepcin de mensajes no solicitados) es el gran problema del correo electrnico, mas del 50 por ciento del correo es correo basura. Para ello se estn desarrollando tcnicas como smtp-auth y el uso de paquetes especializados en la deteccin de estes \ref{spam}. \subsection{SMTP-AUTH} Es una extensin al protocolo SMTP para que estos soporten autentificacin, de esta manera el usuario que quiere enviar correo debe tener un usuario y contrasea en el servidor, asi queda registrado y se comprueba su identidad. La idea original es que los servidores SMTP no estn en open-relay (Abiertos al publico) de tal manera que solo se puedan enviar correo desde redes controladas y que cada usuario sea identificado, as los servidores con smtp-auth no pueden ser utilizados por sistemas externos para el envio de SPAM. \subsection{Comandos SMTP Bsicos} \begin{itemize} \item[HELO] Identifica el servidor SMTP que envia al que recibe. \item[MAIL] Comienza una transferencia de Correo Electrnico a uno o mas recipientes.\\ Indica quien enva el mensaje. \item[RCPT] Identifica al usuario que va ha recibir el Correo Electrnico. \item[DATA] La siguientes lineas sern el contenido del correo electrnico. \item[SEND] Envia el correo electrnico a una o mas estacones. \item[RSET] Termina una transferencia. \item[VRFY] Pregunta al SMTP receptor si el usuario ha sido identificado. \item[EXPN] Pregunta al receptor si la lista de correo ha sido identificada. \item[QUIT] Cierra la conexin. \end{itemize} \subsection{Codigos de Error SMTP mas usuales} Codigos de Error: \begin{itemize} \item[421] Service not available. Esto ocurre normalmente cuando el servidor remoto est caido. \item[450] Mailbox unavailable. Suele ocurrir cuando no se tiene acceso a la carpeta de correo del recipiente o esta esta bloqueada por otra aplicacin. \item[451] Requested action aborted. Ocurre cuando existe un problema en la ejecucin del SMTP. \item[452] Requested action not taken. Tambien ocurre cuando hay problemas con la carpeta de correo del recipiento o est llena. \item[500] Syntax error, command unrecognized. El servidor SMTP no soporta este comando. \item[501] Syntax error in parameters. Soporta el comando, pero los argumentos no son correctos. \item[502] Command not implemented. Un caso parecido a 500. \item[503] Bad sequence of commands. La secuencias de comando no es correcta. \item[550] mailbox unavailable. Como 450. \item[554] Transaction failed. La transferencia no ha sido valida. \end{itemize} Codigo de Estado: \begin{itemize} \item[211] System status. Estado del sistema. \item[214] Help message. Ayuda del sistema. \item[220] Service ready. El servidor esta preparado para aceptar correo. \item[221] Service closing transmission channel. El servidor cierra la conexin. \item[250] Requested mail action okay. El comando pedido al servidor, se ha ejecutado correctamente. \item[354] Start mail input; end with . . Indica que se puede enviar el contenido del mensaje, este debe terminar en un linea que contenga solo un ".". \end{itemize} \section{Postfix} Postfix en un servidor SMTP opensource desarrollado originalmente por Wietse Venema en los laboratorios de IBM.\\ Es el recomendado para su uso con GOsa, entre otras cosas por sus caracteristicas tecnicas en el acceso ldap. \subsection{Instalacin} Postfix se puede descargar de \hlink{http://www.postfix.org/download.html}, existe abundante documentacin tanto en su pgina web en \hlink{http://www.postfix.org/documentation.html}, como en el wiki: \hlink{http://postfixwiki.org/index.php?title=Main\_Page}. Postfix soporta una gran cantidad de extensiones, con las cuales gestionar los usuarios y los dominios. Existe incluso un howto que le permite usar qmail.schema para convertir sistemas basados en qmail-ldap a postfix y viceversa en \hlink{http://gentoo-wiki.com/HOWTO\_Postfix-LDAP\_virtual\_users\_with\_qmail\_schema}. En este manual nos concentraremos en su extensin ldap, para ello necesitaremos tener instalado el servidor ldap \ref{down_ldap}, openSSL \ref{down_ssl} y SaSL \ref{down_sasl}. Descargamos y descomprimimos postfix-2.2.X.tgz en /usr/src, y ejecutamos: \bbox \verb|# make makefiles CCARGS="-DMAX_DYNAMIC_MAPS -DHAS_PCRE -DHAS_LDAP -DHAS_SSL \ |\\ \verb| -I/usr/include/openssl -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_TLS" |\\ \verb|# make install|\\ \ebox En la instalacin de ejemplo no se ha ejecutado make install y se han seguido las directrices del paquete debian, estas son: \bbox \verb|# install lib/*.1 /usr/lib|\\ \verb|# for i in /usr/lib/*.1; do ln -sf ${i##*/} ${i%.*.*}; done|\\ \verb|# install lib/dict_ldap.so /usr/lib/postfix|\\ \verb|# install lib/dict_pcre.so /usr/lib/postfix|\\ \verb|# install lib/dict_tcp.so /usr/lib/postfix|\\ \verb|# install libexec/[a-z]* /usr/lib/postfix|\\ \verb|# install bin/[a-z]* /usr/sbin|\\ \verb|# install auxiliary/qshape/qshape.pl /usr/sbin/qshape|\\ \verb|# install -m 0444 HISTORY /usr/share/doc/postfix/changelog|\\ \verb|# ln -s ../sbin/rmail /usr/bin/rmail|\\ \verb|# ln -s ../sbin/sendmail /usr/bin/newaliases|\\ \verb|# ln -s ../sbin/sendmail /usr/bin/mailq|\\ \verb|# ln -s ../sbin/sendmail /usr/lib/sendmail|\\ \verb|# install -m 0755 conf/postfix-script conf/post-install /etc/postfix|\\ \verb|# install -m 0644 conf/postfix-files /etc/postfix|\\ \verb|# install -m 0644 conf/main.cf /usr/share/postfix/main.cf.dist|\\ \verb|# install -m 0644 conf/master.cf /usr/share/postfix/master.cf.dist|\\ \verb|# install man/man1/*.1 /usr/share/man/man1|\\ \verb|# install man/man5/*.5 /usr/share/man/man5|\\ \verb|# for f in man/man8/*.8; do \|\\ \verb| install ${f} /usr/share/${f}postfix; \|\\ \verb|done|\\ \verb|# install rmail/rmail.8 /usr/share/man/man8|\\ \verb|# gzip -9 /usr/share/man/man8/*.8postfix|\\ \verb|# ln -sf bounce.8postfix.gz /usr/share/man/man8/trace.8postfix.gz|\\ \verb|# ln -sf bounce.8postfix.gz /usr/share/man/man8/defer.8postfix.gz|\\ \ebox \subsection{Configuracin} Antes de poder utilizar postfix debemos configurarlo, su configuracin est guardada en /etc/postfix, y los puntos importantes de esta son: \subsubsection{main.cf} Es la configuracin principal de postfix y se indican numerosos parametros de funcionamiento (Gracias a Cajus Pollmeier por la configuracin): \cbbox \verb|# Configuracin principal de POSTFIX|\\ \\ \verb|# Configuracin especfica para debian|\\ \verb|command_directory = /usr/sbin|\\ \verb|daemon_directory = /usr/libexec/postfix|\\ \verb|program_directory = /usr/libexec/postfix|\\ \verb|# Que muestra el servidor en un HELO|\\ \verb|smtpd_banner = $myhostname ESMTP $mail_name|\\ \verb|setgid_group = postdrop|\\ \verb|biff = no|\\ \verb|append_dot_mydomain = no|\\ \\ \verb|# Seguridad|\\ \verb|disable_vrfy_command = yes|\\ \verb|smtpd_sasl_auth_enable = yes|\\ \verb|smtpd_sasl_local_domain = $myhostname|\\ \verb|smtpd_tls_auth_only = no|\\ \verb|#smtpd_sasl_security_options = noplaintext|\\ \verb|smtpd_use_tls = yes|\\ \verb|smtpd_tls_cert_file = /etc/postfix/cert.pem|\\ \verb|smtpd_tls_key_file = /etc/postfix/key.pem|\\ \verb|smtpd_tls_CAfile = /etc/postfix/CAcert.pem|\\ \\ \verb|# Fix Microsoft mail clients|\\ \verb|broken_sasl_auth_clients = yes|\\ \\ \verb|# Cuotas por defecto|\\ \verb|mail_size_limit = 10240000|\\ \verb|message_size_limit = 10240000|\\ \verb|header_size_limit = 10240|\\ \verb|bounce_size_limit = 500000|\\ \\ \verb|# Colas por defecto|\\ \verb|virtualsource_server_host = 10.3.66.11|\\ \verb|virtualsource_search_base = dc=gonicus,dc=de|\\ \verb#virtualsource_query_filter = (&(|(mail=%s)(gosaMailAlternateAddress=%s))(objectClass=gosaAccount))#\\ \verb|virtualsource_result_attribute = uid,gosaMailForwardingAddress|\\ \\ \verb|# Carpetas compartidas|\\ \verb|sharedsource_server_host = 10.3.66.11|\\ \verb|sharedsource_search_base = dc=gonicus,dc=de|\\ \verb#sharedsource_query_filter = (&(|(mail=%s)(gosaMailAlternateAddress=%s))(objectClass=posixGroup))#\\ \verb|sharedsource_result_attribute = gosaSharedFolderTarget,gosaMailForwardingAddress|\\ \\ \verb|# Access Lists for Non Local Delivery|\\ \verb|acllocal_server_host = 10.3.66.11|\\ \verb|acllocal_search_base = dc=gonicus,dc=de|\\ \verb#acllocal_query_filter = (&(|(mail=%s)(gosaMailAlternateAddress=%s))(gosaMailDeliveryMode=*L*))#\\ \verb|acllocal_result_attribute = mail|\\ \verb|acllocal_result_filter = insiders_only|\\ \\ \verb|# Origen|\\ \verb|myorigin = $mydomain|\\ \\ \verb|# destinos|\\ \verb|mydestination = $myhostname localhost.localdomain localhost.$mydomain /etc/postfix/locals|\\ \\ \verb|# redes locales|\\ \verb|mynetworks = 127.0.0.0/8 10.0.0.0/8|\\ \\ \verb|# Nombre de host|\\ \verb|myhostname = mail.gonicus.local|\\ \\ \verb|# Dominio|\\ \verb|mydomain = gonicus.de|\\ \\ \verb|# Interfaces que escuchan|\\ \verb|inet_interfaces = all|\\ \\ \verb|# Proteccin contra SPAM, reglas regex basicas|\\ \verb|#header_checks = regexp:/etc/postfix/header_checks|\\ \verb|# Bsp.: /etc/postfix/header_checks|\\ \verb|# /^to: *friend@public\.com$/ REJECT|\\ \verb|# /^to: *friend@public\.com$/ IGNORE|\\ \verb|# /^to: *friend@public\.com$/ WARN|\\ \\ \verb|# Restricciones SMTP|\\ \verb|#smtpd_client_restrictions = hash:/etc/postfix/access, reject_maps_rbl|\\ \verb|#smtpd_client_restrictions = permit_mynetworks, reject_unknown_client, reject_maps_rbl|\\ \verb|smtpd_client_restrictions = permit_mynetworks|\\ \\ \verb|# Para el envio SMTP|\\ \verb|#smtpd_sender_restrictions = hash:/etc/postfix/access, check_sender_access hash:|\\ \verb|#smtpd_sender_restrictions = reject_unknown_sender_domain, reject_non_fqdn_sender|\\ \verb|smtpd_sender_restrictions = regexp:/etc/postfix/protected, check_sender_access hash:/etc/postfix/badmailfrom|\\ \\ \verb|# Para los recipientes|\\ \verb|#smtpd_recipient_restrictions = permit_sasl_authenticated, reject_non_fqdn_recipient, check_client_access hash:/var/lib/pop|\\ \verb|smtpd_recipient_restrictions = regexp:/etc/postfix/protected,|\\ \verb| permit_mynetworks,|\\ \verb| permit_sasl_authenticated,|\\ \verb| check_relay_domains|\\ \\ \verb|# Restricciones la comando HELO|\\ \verb|smtpd_helo_required = no|\\ \verb|#smtpd_helo_restrictions = permit_mynetworks, reject_unknown_hostname, reject_invalid_hostname|\\ \verb|smtpd_helo_restrictions = permit_mynetworks|\\ \\ \verb|# |\\ \verb|smtpd_delay_reject = yes|\\ \verb|strict_rfc821_envelopes = yes|\\ \\ \verb|# Mapas antispam|\\ \verb|#maps_rbl_domains = hash:/etc/postfix/rbl|\\ \verb|maps_rbl_domains = blackholes.mail-abuse.org|\\ \\ \verb|# Sobre los usuarios y autentificacin|\\ \verb|smtpd_sasl_auth_enable = yes|\\ \\ \verb|smtpd_restriction_classes = insiders_only|\\ \verb|insiders_only = check_sender_access regexp:/etc/postfix/insiders, reject|\\ \\ \verb|# relay|\\ \verb|relay_domains = $mydestination|\\ \\ \verb|# transportes|\\ \verb|fallback_transport = smtp|\\ \verb|mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp|\\ \\ \verb|# Control de rendimiento|\\ \\ \verb|#local_destination_concurrency_limit = 2|\\ \verb|#default_destination_concurrency_limit = 10|\\ \verb|#uucp_destination_recipient_limit = 100|\\ \verb|#smtp_destination_recipient_limit = 100|\\ \\ \verb|# Manipulacin de direcciones|\\ \verb|#rewrite gonicus.de!horst to horst@gonicus.de|\\ \verb|#rewrite horst%gonicus.de to horst@gonicus.de|\\ \verb|#rewrite horst to horst@gonicus.de|\\ \\ \verb|# Mapas canonicos|\\ \verb|#canonical_maps = hash:/etc/postfix/canonical|\\ \verb|#sender_canonical_maps = hash:/etc/postfix/sender_canonical|\\ \verb|#recipient_canonical_maps = hash:/etc/postfix/recipient_canonical|\\ \\ \verb|# Mascarada|\\ \verb|#masquerade_domains = $mydomain|\\ \verb|#masquerade_exceptions = root|\\ \verb|#masquerade_clases = envelope_sender, envelope_recipient, header-sender, header_recipient|\\ \\ \verb|# Direcciones Virtuales|\\ \verb|virtual_maps = ldap:virtualsource, ldap:sharedsource|\\ \\ \verb|# Mapas de Transportes|\\ \verb|#default_transport = smtp-relay|\\ \verb|#transport_maps = hash:/etc/postfix/transports|\\ \\ \verb|# Aliases|\\ \verb|alias_maps = hash:/etc/aliases|\\ \\ \verb|# Antivirus a traves de amavis|\\ \verb|#content_filter = vscan:|\\ \verb|#soft_bounce = yes|\\ \\ \ebox \subsubsection{master.cf} \subsubsection{sasl} \subsubsection{ldap} \section{Qmail-ldap} \subsection{Instalacin} \subsection{Configuracin} \section{Sendmail} \subsection{Instalacin} \subsection{Configuracin} \section{Exim} \subsection{Instalacin} \subsection{Configuracin} \subsection{IMAP / POP Servers} \section{Cyrus} \section{Courier} \section{SPAM} \label{spam} \section{VIRUS} \label{virus} gosa-core-2.7.4/doc/admin/es/manual_gosa_es_ldap.tex0000644000175000017500000012667610271360203021016 0ustar mikemike\chapter{openLDAP} \section{Introduccin,Que es LDAP?} \subsection{Servicios de Directorios, X.500} Un directorio es una base de datos especializada en busqueda de informacin basada en atributos.\\ X.500|ISO 9594\cite{x500} es un estndar de ITU-S(International Telecommunication Union - Telecommunication Standardisation Burean), anteriormente conocido como CCITT, para solucionar el problema de directorios. Basado en los trabajos realizados con X.400 (un directorio para correo electrnico) y los trabajos de ISO ( International Standards Organisation) y ECMA (European Computer Manufacturers Association).\\ El X.501|ISO 9594 parte 2. define los modelos de como debe estar organizada la informacin, el modelo de informacin de usuario, el modelo de informacin administrativa y el servicio de directorio, que define como debe estar distribuida la informacin entre varios sistemas.\\ En X.509|ISO 9594 parte 8. el estndar de autentificacin y seguridad usado para SSL.\\ X.525|ISO 9594 parte 9. indica como debe ser la replicacin entre sistemas.\\ En X.519|ISO 9594 parte 5. se definen los protocolos de comunicaciones, entre ellos el que mas nos importa que es DAP - El protocolo de acceso a directorios - que define que operaciones se pueden hacer con la conexin: bind, unbind, los objetos (entradas) y sus operaciones: aadir, eliminar, modificar, buscar, listar, comparar, etc.\\ DAP es un protocolo demasiado complejo para que se puedan hacer servidores y clientes para su uso para Internet, as que se crea un protocolo mas cmodo de manejar estos directorios: LDAP.\\ LDAP (Lightweight Directory Access Protocol / Protocolo de acceso a directorios ligero) es un protocolo pensado para actualizacin y busquedas de directorios orientados a Internet (TCP/IP).\\ La ultima versin de LDAP es la 3 y es cubierta por los RFCs: 2251\cite{2251}, 2252\cite{2252}, 2253\cite{2253}, 2254\cite{2254}, 2255\cite{2255}, 2256\cite{2256} y 3377\cite{3377}.\\ \newpage \subsection{Conceptos Bsicos de LDAP} \begin{itemize} \item[]Entrada\\ (Entry)\\ Una entrada es una coleccin de atributos a los que se identifica por su DN (nombre distinguido / distinguished name). Un DN es nico en todo el rbol y por lo tanto identifica claramente la entrada a la que refiere. Como ejemplo: CN=Alex O=CHAOSDIMENSION C=ES identificara al objeto de nombre comn Alex que esta en la organizacin CHAOSDIMENSION y en pas ES (Espaa).\\ Un RDN( nombre distinguido relativo / relative distinguished name) es parte del DN, de tal manera que concatenando los RDN dan como resultado el DN. Del ejemplo anterior CN=Alex seria un RDN. \item[]Clase de objeto\\(Object Class)\\ Una clase es un atributo especial (ObjectClass) que define que atributos son requeridos y permitidos en una entrada. Los valores de las clases objetos estn definidos en el esquema. Todas las entradas deben tener un atributo ObjectClass. No se permite aadir atributos a las entradas que no permitidos por las definiciones de las clases de objetos de la entrada. \item[]Atributo\\(Attrib)\\ Un atributo es un tipo con uno o mas valores asociados. Se identifica por su OID ( identificador de objeto / object identifier). El tipo de atributo indica si puede haber mas de un valor de este atributo en una entrada, los valores que pueden tener y como se los puede buscar. \item[]Esquema\\(Schema)\\ Un esquema es una coleccin de definiciones de tipos de atributos, clases de objetos e informacin que el servidor usa para realizar las busquedas, introducir valores en un atributo, y permitir operaciones de aadir o modificar. \item[]Filtro\\(Filter)\\ Para realizar una busqueda debemos tener en cuenta varios parmetros importantes: \begin{list}{}{} \item[Base](baseObject)\\ Un DN que sera a partir del cual realizaremos la busqueda. \item[Alcance](scope)\\ Puede tener varios valores.\\- base: solo buscara en ese nivel base.\\- sub: har busqueda recursiva por todo el rbol a partir del nivel base.\\- one: descender solo un nivel por debajo del nivel base. \item[Tamao limite](sizelimit)\\ Restringe el numero de entradas devueltas como resultado de una busqueda. \item[Tiempo limite](timelimit)\\ Restringe el tiempo mximo de ejecucin de una busqueda. \item[filtro](filter)\\ Es una cadena que defina las condiciones que deben ser completadas para encontrar una entrada. \end{list} Los filtros se pueden concatenar con 'and', 'or' y 'not' para crear filtros mas complejos.\\ Por ejemplo un filtro con base O=CHAOSDIMENSION, C=ES, alcance base y filtro (CN=Alex) encontrara la entrada CN=Alex, O=CHAOSDIMENSION, C=ES.\\ \end{itemize} \newpage \subsection{Servidores de LDAP} LDAP esta soportado por numerosos servidores siendo los mas conocidos Active Directory de Microsoft, eDirectory de Novell, Oracle Internet Directory de Oracle, iPlanet directory server de SUN y por ltimo pero no menos importante openLDAP. En este manual se tratara el uso e instalacin de openLDAP, ya que esta soportado por prcticamente todas las distribuciones de linux y su licencia cumple el estndar openSource. Para mas informacin vase LDAP Linux HowTo\cite{llh}, Using LDAP\cite{ul}, openLDAP administrator Guide\cite{oag} y en espaol la parte relativa a LDAP del magnifico manual Ldap+Samba+Cups+Pykota\cite{lscp}. \section{Instalacin} Las mayoras de las distribuciones tienen paquetes de openLDAP. Como usar apt-get en debian, Urpmi en Mandrake, up2date en redhat o Yast2 en Suse sale fuera de este manual. As que este manual explicara los necesario para la construccin desde las fuentes. \subsection{Descargando openLDAP} \label{down_ldap} Aunque realmente no son necesarios, hay varios paquetes que deberan ser instalados antes de openLDAP ya que seguramente los necesitaremos. El primero de ellos es \textbf{openSSL} \ref{down_ssl}. El segundo es Servicios es \textbf{Kerberos v5} \ref{down_kerberos_mit} \ref{down_kerberos_heimdal}. Tambin ser interesante tener instaladas las libreras \textbf{Cyrus SASL} (Capa simple de seguridad y autentificacin de Cyrus / Cyrus's Simple Authentication and Security Layer).\\Que se pueden conseguir en \htmladdnormallink{http://asg.web.cmu.edu/sasl/}{http://asg.web.cmu.edu/sasl/sasl-library.html}, Cyrus SASL hace uso de openSSL y Kerberos/GSSAPI para autentificacin. Necesitaremos por ultimo una base de datos para openLDAP, en lo que atae a este manual esta ser dada a travs de las libreras de \htmladdnormallink{\textbf{Sleepycat Software Berkeley DB}}{http://www.sleepycat.com/}, las necesitaremos tanto si usamos LDBM (Berkeley DB versin 3) o BDB (Berkeley DB versin 4). Tambin existen en la totalidad de distribuciones. Una vez obtenidas y compiladas las libreras necesarias nos bajamos las \htmladdnormallink{fuentes de openLDAP}{http://www.openldap.org/software/download/} en /usr/src (por ejemplo) y descomprimimos en ese directorio (por ejemplo con tar -zxvf openldap-2.X.XX.tgz). \newpage \subsection{Opciones de instalacin} La siguientes opciones son para openLDAP versin 2.2.xx que pueden diferir de las versiones 2.0.XX y 2.1.XX. Ejecutamos \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure.sh} con las siguientes opciones. \begin{itemize} \item[](Directorios)\\ \begin{tabular}{|ll|}\hline --prefix=/usr & \\ --libexecdir='\${prefix}/lib' & \\ --sysconfdir=/etc & \\ --localstatedir=/var/run & \\ --mandir='\${prefix}/share/man' & \\ --with-subdir=ldap & \\ \hline \end{tabular} \item[](Opciones Bsicas)\\ \begin{tabular}{|ll|}\hline --enable-syslog & \\ --enable-proctitle & \\ --enable-ipv6 & $\rightarrow$Sockets IPv6\\ --enable-local & $\rightarrow$Sockets Unix\\ --with-cyrus-sasl & $\rightarrow$Autentificacin Cyrus SASL soportadas\\ --with-threads & $\rightarrow$Soporte de Hilos de ejecucin\\ --with-tls & $\rightarrow$Soporte TLS/SSL\\ --enable-dynamic & $\rightarrow$Compilacin dinmica\\ \hline \end{tabular} \item[](Opciones Slapd)\\ \begin{tabular}{|ll|}\hline --enable-slapd & $\rightarrow$Compilar el servidor adems de las libreras\\ --enable-cleartext & $\rightarrow$Permite el envo de contraseas en claro\\ --enable-crypt & $\rightarrow$Envo de contraseas encriptadas con DES.\\ --enable-spasswd & $\rightarrow$Verificacin de contraseas a travs de SASL\\ --enable-modules & $\rightarrow$Soporte dinmico de mdulos\\ --enable-aci & $\rightarrow$Soporte de ACIs por objetos (Experimental)\\ --enable-rewrite & $\rightarrow$Reescritura de DN en recuperacin de LDAP\\ --enable-rlookups & $\rightarrow$Busqueda inversa del nombre del equipo cliente\\ --enable-slp & $\rightarrow$Soporte de SLPv2\\ --enable-wrappers & $\rightarrow$Soporte TCP wrappers\\ \hline \end{tabular} \item[](Soporte)\\ \begin{tabular}{|ll|}\hline --enable-bdb=yes & $\rightarrow$Soporte Berkeley versin 4\\ --enable-dnssrv=mod & \\ --enable-ldap=mod & $\rightarrow$Soporta otro servidor LDAP como base de datos\\ --enable-ldbm=mod & \\ --with-ldbm-api=berkeley & $\rightarrow$Soporte Berkeley versin 3\\ --enable-meta=mod & $\rightarrow$Soporte metadirectorio\\ --enable-monitor=mod & \\ --enable-null=mod & \\ --enable-passwd=mod & \\ --enable-perl=mod & $\rightarrow$Soporte scripts en perl\\ --enable-shell=mod & $\rightarrow$Soporte scripts en shell\\ --enable-sql=mod & $\rightarrow$Soporte base de datos relacional\\ \hline \end{tabular} \end{itemize} Posteriormente hacemos:\\ \#make \&\& make install \newpage \section{Configuracin} \subsection{Bsica} \noindent La configuracin del servidor slapd de openLDAP se guarda en /etc/ldap/slapd.conf.\\ \noindent Una \htmladdnormallink{configuracin bsica}{http://warping.sourceforge.net/gosa/contrib/es/basic_slapd.conf} quedara as:\\ \\ \begin{center} \begin{longtable}{|p{15cm}l|}\hline \caption{Configuracin Bsica de openLDAP}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin Bsica de openLDAP}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin Bsica de openLDAP (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot \# Schema and objectClass definitions, configuracin bsica & \\ include /etc/ldap/schema/core.schema & \\ include /etc/ldap/schema/cosine.schema & \\ include /etc/ldap/schema/inetorgperson.schema & \\ include /etc/ldap/schema/openldap.schema & \\ include /etc/ldap/schema/nis.schema & \\ include /etc/ldap/schema/misc.schema & \\ & \\ \#Fuerza a las entradas a encontar eschemas para los ObjectClass & \\ schemacheck on & \\ & \\ \# Password hash, tipo de encriptacin de la clave & \\ \# Puede ser: \{SHA\}, \{MD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\ password-hash \{CRYPT\} & \\ & \\ \# Base de busqueda por defecto & \\ defaultsearchbase "dc=CHAOSDIMENSION,dc=ORG" & \\ & \\ \#Utilizado por init scripts para parar e iniciar el servidor. & \\ pidfile /var/run/slapd.pid & \\ & \\ \# Argumentos pasados al servidor. & \\ argsfile /var/run/slapd.args & \\ & \\ \# Nivel de logs & \\ loglevel 1024 & \\ & \\ \# Donde y que mdulos cargar & \\ modulepath /usr/lib/ldap & \\ moduleload back\_bdb \# Berkeley BD versin 4 & \\ & \\ \#definiciones de la base de datos & \\ database bdb & \\ & \\ \# La base del directorio & \\ suffix "dc=CHAOSDIMENSION,dc=ORG" & \\ & \\ \# Aqu definimos al administrador del directorio y su clave & \\ \# En este ejemplo es " tester" & \\ \# La clave se puede sacar con & \\ \# makepasswd --crypt --clearfrom fichero\_con\_nombre usuario & \\ & \\ rootdn \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| & \\ rootpw \{crypt\}OuorOLd3VqvC2 & \\ & \\ \# Que atributos indexamos para hacer busquedas & \\ index default sub & \\ index uid,mail eq & \\ index cn,sn,givenName,ou pres,eq,sub & \\ index objectClass pres,eq & \\ & \\ \# Directorio donde se guarda la base de datos & \\ directory " /var/lib/ldap" & \\ & \\ \# Indicamos si deseamos guardar la fecha de la ultima modificacin & \\ lastmod off & \\ & \\ \#Acceso del administrador & \\ access to * & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" =wrscx| & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\ by * read & \\ \end{longtable} \end{center} \newpage \subsection{Especfica para GOsa} GOsa aade varios esquemas para el control de ciertos servicios y caractersticas de los usuarios.\\ Los esquemas necesarios para GOsa estn en el paquete, en la seccion contrib, lo ideal ser copiarlos todos a /etc/ldap/schema\\ Una \htmladdnormallink{configuracin recomendada}{http://warping.sourceforge.net/gosa/contrib/es/gosa_slapd.conf} de /etc/ldap/slapd.conf es la siguiente:\\ \begin{center} \begin{longtable}{|p{15cm}l|}\hline \caption{Configuracin Especfica para GOsa}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin Especfica para GOsa}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin Especfica para GOsa (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot \# Schema and objectClass definitions, configuracin bsica & \\ include /etc/ldap/schema/core.schema & \\ include /etc/ldap/schema/cosine.schema & \\ include /etc/ldap/schema/inetorgperson.schema & \\ include /etc/ldap/schema/openldap.schema & \\ include /etc/ldap/schema/nis.schema & \\ include /etc/ldap/schema/misc.schema & \\ & \\ \# Estos esquemas deberan estar presentes en GOsa. En el caso de samba3 & \\ \# se deben cambiar samba.schema y gosa.schema por samba3.schema & \\ \# y gosa+samba3.schema. & \\ include /etc/ldap/schema/samba3.schema & \\ include /etc/ldap/schema/pureftpd.schema & \\ include /etc/ldap/schema/gohard.schema & \\ include /etc/ldap/schema/gofon.schema & \\ include /etc/ldap/schema/goto.schema & \\ include /etc/ldap/schema/gosa+samba3.schema & \\ include /etc/ldap/schema/gofax.schema & \\ include /etc/ldap/schema/goserver.schema & \\ & \\ \#Obliga al cumplimiento de los ObjectClass & \\ schemacheck on & \\ & \\ \# Password hash, tipo de encriptacin de la clave & \\ \# Puede ser: \{SHA\}, \{SMD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\ password-hash \{CRYPT\} & \\ & \\ \# Base de busqueda por defecto & \\ defaultsearchbase " dc=CHAOSDIMENSION,dc=ORG" & \\ & \\ \#Utilizado por init scripts para parar e iniciar el servidor. & \\ pidfile /var/run/slapd.pid & \\ & \\ \# Argumentos pasados al servidor. & \\ argsfile /var/run/slapd.args & \\ & \\ \# Nivel de logs & \\ loglevel 1024 & \\ & \\ \# Donde y que mdulos cargar & \\ modulepath /usr/lib/ldap & \\ moduleload back\_bdb \# Berkeley BD versin 4& \\ & \\ \# Algunos parmetros de rendimiento & \\ threads 64 & \\ concurrency 32 & \\ conn\_max\_pending 100 & \\ conn\_max\_pending\_auth 250 & \\ reverse-lookup off & \\ sizelimit 1000 & \\ timelimit 30 & \\ idletimeout 30 & \\ & \\ \# Limitaciones especficas & \\ limits anonymous size.soft=500 time.soft=5 & \\ & \\ \# Definiciones de la base de datos & \\ database bdb & \\ cachesize 5000 & \\ checkpoint 512 720 & \\ mode 0600 & \\ & \\ \# La base del directorio & \\ suffix " dc=CHAOSDIMENSION,dc=ORG" & \\ & \\ \# Aqu definimos al administrador del directorio y su clave & \\ \# En este ejemplo es " tester" & \\ \# La clave se puede sacar con & \\ \# makepasswd --crypt --clearfrom fichero\_con\_nombre usuario & \\ & \\ rootdn \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| & \\ rootpw \{crypt\}OuorOLd3VqvC2 & \\ & \\ \# Que atributos indexamos para hacer busquedas & \\ index default sub & \\ index uid,mail eq & \\ index gosaMailAlternateAddress,gosaMailForwardingAddress eq & \\ index cn,sn,givenName,ou pres,eq,sub & \\ index objectClass pres,eq & \\ index uidNumber,gidNumber,memberuid eq & \\ index gosaSubtreeACL,gosaObject,gosaUser pres,eq & \\ & \\ \# Indexing for Samba 3 index sambaSID eq & \\ index sambaPrimaryGroupSID eq & \\ index sambaDomainName eq & \\ & \\ \# Quienes pueden cambiar las claves de usuario & \\ \# Solo por el propio usuario si est autentificado & \\ \# o por el administrador & \\ access to attr=sambaPwdLastSet,sambaPwdMustChange,sambaPwdCanChange & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by anonymous auth & \\ by self write & \\ by * none & \\ access to attr=userPassword,shadowMax,shadowExpire & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by anonymous auth & \\ by self write & \\ by * none & \\ & \\ \# Denegar acceso a las claves imap, fax o kerberos guardadas en & \\ \# LDAP & \\ access to attr=goImapPassword & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by * none & \\ access to attr=goKrbPassword & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by * none & \\ access to attr=goFaxPassword & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by * none & \\ & \\ \# Permite que el servidor escriba el atributo LastUser & \\ access to attr=gotoLastUser & \\ by * write & \\ & \\ \#Las claves samba por defecto pueden ser cambiadas & \\ \#por el usuario si se ha autentificado. & \\ access to attr=sambaLmPassword,sambaNtPassword & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by anonymous auth & \\ by self write & \\ by * none & \\ & \\ \# Permite acceso de escritura para administrador de terminales & \\ access to dn=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG" & \\ by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ & \\ access to dn.subtree=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG" & \\ by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ & \\ \# Directorio donde se guarda la base de datos & \\ directory " /var/lib/ldap" & \\ & \\ \# Indicamos si deseamos guardar la fecha de la ultima modificacin & \\ lastmod off & \\ & \\ \# Acceso del administrador & \\ access to * & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\ by * read & \\ \end{longtable} \end{center} \section{Utilizacin} \subsection{Configuracin PAM/NSS} NSS (Libreras del servicio de seguridad en red / Network Security Service Libraries)\\ NSS es una parte bsica del sistema, sirve para control de las cuentas POSIX, para poder usar LDAP para cuentas POSIX (del sistema) utilizaremos NSS\_LDAP, que se puede descargar de \htmladdnormallink{http://www.padl.com/OSS/nss\_ldap.html}{http://www.padl.com/OSS/nss\_ldap.html} , lo descomprimimos es /usr/src y ejecutamos:\\ \noindent \#cd /usr/src/nss\_ldap\\ \noindent \#./configure \&\& make \&\& make install\\ La configuracin bsica de NSS esta en /etc/nsswitch.conf y debe quedar as para lo que nosotros queremos.\\ \begin{center} \begin{longtable}{|ll|}\hline \caption{Configuracin NSSWITCH}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin NSSWITCH}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin NSSWITCH (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot passwd: files ldap & \# Estas son las lineas que cambiamos para que haga peticiones ldap\\ group: files ldap & \#\\ shadow: files ldap & \#\\ & \\ hosts: files dns & \\ networks: files & \\ & \\ protocols: db files & \\ services: db files & \\ ethers: db files & \\ rpc: db files & \\ & \\ netgroup: nis & \\ \hline \end{longtable} \end{center} \newpage La configuracin de nss-ldap se guarda en /etc/nss-ldap.conf y una configuracin vlida para GOsa quedara as: \begin{center} \begin{longtable}{|ll|}\hline \caption{Configuracin NSS}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin NSS}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin NSS (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot host ip.servidor.ldap & \# Aqu ponemos donde\\ & \# estar nuestro servidor LDAP\\ base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Aqu donde van a ir los usuarios y sus claves.\\ & \# OU significa unidad organizativa\\ & \# y OU=people es el lugar donde GOsa guarda las\\ & \# caracteristicas de los usuarios\\ ldap\_version 3 & \# Versin de LDAP soportada \\ & \#(muy recomendado la versin 3)\\ nss\_base\_passwd ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \#Donde buscamos las caracteristicas POSIX\\ nss\_base\_shadow ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \#Donde buscamos las claves\\ nss\_base\_group ou=groups,dc=CHAOSDIMENSION,DC=ORG?one & \#Donde las caracteristicas de los grupos POSIX\\ \hline \end{longtable} \end{center} PAM ( Mdulos de autentificacin conectables / Pluggable Authentication Modules) es una paquete de libreras dinmicas que permiten al administrador de sistema elegir en que manera las aplicaciones autentifican a los usuarios. PAM viene de serie en todas las distribuciones, en /etc/pam.d se guarda la configuracin de cada mdulo y en /lib/security las libreras dinmicas. Nos vamos a concentrar en uno de los mdulos de PAM: pam\_ldap. Este mdulo nos servir para que las aplicaciones que usen el sistema base de autentificacin y control de sesin y que no usen LDAP, indirectamente accedan a LDAP, como fuente de autentificacin. Con PAM\_LDAP y la infraestructura de PAM conseguimos que los usuarios POSIX del sistema funcionen atraves de LDAP y se puedan configurar con GOsa. PAM\_LDAP se puede descargar de \htmladdnormallink{http://www.padl.com/OSS/pam\_ldap.html}{http://www.padl.com/OSS/pam\_ldap.html} , lo descomprimimos es /usr/src y ejecutamos el clsico:\\ \noindent \#cd /usr/src/pam\_ldap\\ \noindent \#./configure \&\& make \&\& make install\\ \\ La configuracin de este mdulo estar en /etc/pam\_ldap.conf, una configuracin bsica que funcione con GOsa quedara: \begin{center} \begin{longtable}{|ll|}\hline \caption{Configuracin PAM}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin PAM}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin PAM (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot host ip.servidor.ldap & \# Aqu ponemos donde estar nuestro servidor LDAP\\ base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Aqu donde van a ir los usuarios y sus claves.\\ & \# OU significa unidad organizativa y OU=people\\ & \# es el lugar donde GOsa guarda las caracteristicas de los usuarios\\ ldap\_version 3 & \# Versin de LDAP soportada (muy recomendado la versin 3)\\ scope one & \# En gosa los usuarios estn al mismo nivel,\\ & \# no necesitamos descender.\\ rootbinddn cn=ldapadmin,dc=solaria,dc=es & \# Aqu est el DN del administrador LDAP del servidor,\\ & \# es necesario, ya que el servidor solo\\ & \# dar acceso a las claves encriptadas al administrador.\\ pam\_password md5 & \# Indica como estn encriptadas las claves.\\ \hline \end{longtable} \end{center} En el archivo /etc/secret pondremos la clave del administrador LDAP, este archivo, as como el anterior solo deberan ser accesibles por root. Para poder user ahora los servicios con la autentificacin LDAP deberemos concentrarnos en tres archivos:\\ Control de cuentas /etc/pam.d/common-account: \begin{center} \begin{longtable}{|ll|}\hline \caption{Configuracin PAM common-account}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin PAM common-account}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin PAM common-account (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot account required pam\_unix.so & \# Siempre requerido\\ account sufficient pam\_ldap.so & \# Las llamadas a ldap\\ \hline \end{longtable} \end{center} Control de autentificacin /etc/pam.d/common-auth: \begin{center} \begin{longtable}{|ll|}\hline \caption{Configuracin PAM common-auth}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin PAM common-auth}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin PAM common-auth (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot auth sufficient pam\_unix.so & \# Autentificacin estandar\\ auth sufficient pam\_ldap.so try\_first\_pass & \# Autentificacion LDAP en el primer intento\\ auth required pam\_env.so & \\ auth required pam\_securetty.so & \\ auth required pam\_unix\_auth.so & \\ auth required pam\_warn.so & \\ auth required pam\_deny.so & \\ \hline \end{longtable} \end{center} Control de sesiones /etc/pam.d/common-session: \begin{center} \begin{longtable}{|ll|}\hline \caption{Configuracin PAM common-session}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin PAM common-session}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin PAM common-session (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot session required pam\_limits.so & \\ session required pam\_unix.so & \# Sesin unix estandar\\ session optional pam\_ldap.so & \# Sesin basada en LDAP\\ \hline \end{longtable} \end{center} Esta configuracin ser necesaria al menos para configurar POSIX y SAMBA. \newpage \subsection{Replicacin} Si tenemos mas de un dominio debemos tener una estructura mas distribuida que sea mas eficiente contra fallos. Una estructura bsica sera un servidor maestro con el rbol LDAP completo y servidores con subrboles LDAP que solo tuvieran la parte del dominio que controlan. De esta manera GOsa controla el servidor maestro y a traves de un proceso llamado replicacin los servidores de dominio. La replicacin se configura en la configuracin de ldap, pero no la ejecuta el demonio slapd, sino otro especializado llamado slurp. Su configuracin se realiza en la base de datos que queremos replicar, como en el ejemplo bsico no hemos configurado mas que una base de datos solo tendramos que aadir al final del fichero de configuracin /etc/ldap/slapd.conf: \begin{center} \begin{longtable}{|ll|}\hline \caption{Configuracin Replicacin}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin Replicacin}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Configuracin Replicacin (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot \#Configuracin de rplica & \\ \#Utilizado por init scripts para parar e iniciar el servidor. & \\ replica-pidfile /var/run/slurp.pid & \\ & \\ \# Argumentos pasados al servidor. & \\ replica-argsfile /var/run/slapd.args & \\ & \\ \#Lugar donde grabamos lo que se replica, y que usara slurpd & \\ replogfile /var/lib/ldap/replog & \\ \#Las configuraciones de rplica & \\ \#Indicacin de rplica & \\ replica & \\ \#Direccin URI del servidor & \\ uri=ldap://ip.servidor.esclavo1 & \\ \#Que vamos a replicar del maestro & \\ suffix=" dc=dominio1,dc=CHAOSDIMENSION,dc=ORG" & \\ \#Como vamos a autentificar & \\ bindmethod=simple & \\ \#DN replica del esclavo1 & \\ binddn=\verb|"cn=esclavo1,ou=people,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| & \\ \#Contrasea del usuario & \\ \# de replica de esclavo1 & \\ credentials=" tester" & \\ \#Indicacin de rplica del esclavo2 & \\ replica & \\ uri=ldap://ip.servidor.esclavo2 & \\ suffix=" dc=dominio2,dc=CHAOSDIMENSION,dc=ORG" & \\ bindmethod=simple & \\ binddn=\verb|"cn=esclavo2,ou=people,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| & \\ credentials=" tester" & \\ \hline \end{longtable} \end{center} Por simplicidad hemos supuesto que los dos servidores esclavos estn configurados igual que el maestro, excepto por la configuracin de replica del maestro y las indicaciones de los esclavos de quien es el servidor maestro. En los servidores esclavos aadimos al final del /etc/ldap/slapd.conf: En esclavo1:\\ \begin{tabular}{|ll|}\hline \#Quin puede actualizar el servidor & \\ updatedn \verb|"cn=esclavo1,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| & \\ \#Desde donde & \\ updateref ldap://ip.servidor.maestro & \\ \#Permitimos el acceso & \\ access to dn.subtree= " dc=dominio1,dc=CHAOSDIMENSION,dc=ORG" & \\ by dn= \verb|"cn=esclavo1,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ by * none & \\ \hline\end{tabular} \vspace{0.5cm} En esclavo2:\\ \begin{tabular}{|ll|}\hline \#Quin puede actualizar el servidor & \\ updatedn \verb|"cn=esclavo2,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| & \\ \#Desde donde & \\ updateref ldap://ip.servidor.maestro & \\ \#Permitimos el acceso & \\ access to dn.subtree= " dc=dominio2,dc=CHAOSDIMENSION,dc=ORG" & \\ by dn= \verb|"cn=esclavo2,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ by * none & \\ \hline \end{tabular} \vspace{1cm} Adems debemos crear los usuarios de replica en las bases de datos correspondientes. Eso se vera en el siguiente punto. \subsection{Carga de datos} En este punto daremos los datos iniciales de nuestro rbol LDAP necesario para GOsa. Tambien indicaremos de que manera hacer la carga de estos datos y que hacer en el caso de un servidor nico o en el caso de que haya rplicas. La carga se puede hacer de dos maneras, una es atraves de slapadd y la otra es atraves de ldapadd.\\ En el primer caso la carga se hace directamente sobre la base de datos con lo cual no existe replicacin y ademas no se mostrarn los datos en el servidor LDAP hasta que este no sea iniciado nuevamente, \textbf{la carga de datos de esta manera debe ser hecha con el servidor apagado}.\\ En el segundo caso, la carga se hace a traves de ldap y si hay replica esta se generara de la manera pertinente. Para una carga desde cero de la base de datos, deberemos hacerla desde slapadd, con el servidor slapd parado. La forma de usar slapadd es:\\ \noindent \#slapadd -v -l fichero\_con\_datos.ldif\\ LDIF es el formato estndar para guardar datos de LDAP. GOsa trae su propio ldif de ejemplo, en los siguientes dos puntos explicaremos como usarlo segn nuestras necesidades. \vspace{1cm} \subsubsection{Servidor nico} Es el caso mas bsico, en el no hay replicacin y solo necesitamos un rbol simple.\\ En nuestro ejemplo supondremos que nuestro rbol GOsa est en dc=CHAOSDIMENSION,dc=ORG.\\ Cargaremos los datos con un script, le llamaremos \htmladdnormallink{carga.sh}{http://warping.sourceforge.net/gosa/contrib/es/carga.sh}, esto simplificara los pasos. Los parmetros del script sern: DN de la base, Servidor IMAP,Realm Kerberos\\ \begin{center} \begin{longtable}{|l|}\hline \caption{Configuracin Carga de Datos}\\ \hline \hline \multicolumn{1}{|c|}{\textbf{Configuracin Carga de Datos}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{1}{|c|}{\textbf{Configuracin Carga de Datos (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{1}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{1}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot \#!/bin/sh\\ \\ if [ \$\{\#@\} != 3 ]\\ then\\ \verb| |echo "Se necesita los parametro DN base, Servidor IMAP y Servidor Kerberos"\\ \verb| |echo "Por ejemplo carga.sh dc=CHAOSDIMENSION,dc=ORG imap.solaria krb.solaria"\\ \verb| |exit\\ fi\\ \\ DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d \textbackslash , -f 1`\\ IMAP=\$2\\ KRB=\$3\\ \\ slapadd \verb|<<| EOF\\ dn: \$1\\ objectClass: dcObject\\ objectClass: organization\\ description: Base object\\ dc: \$DC\\ o: My own Organization\\ \\ dn: cn=terminal-admin,\$1\\ objectClass: person\\ cn: terminal-admin\\ sn: Upload user\\ description: GOto Upload Benutzer\\ userPassword:: e2tlcmJlcm9zfXRlcm1pbmFsYWRtaW5AR09OSUNVUy5MT0NBTAo=\\ \\ dn: ou=systems,\$1\\ objectClass: organizationalUnit\\ ou: systems\\ \\ dn: ou=terminals,ou=systems,\$1\\ objectClass: organizationalUnit\\ ou: terminals\\ \\ dn: ou=servers,ou=systems,\$1\\ objectClass: organizationalUnit\\ ou: servers\\ \\ dn: ou=people,\$1\\ objectClass: organizationalUnit\\ ou: people\\ \\ dn: ou=groups,\$1\\ objectClass: organizationalUnit\\ ou: groups\\ \\ dn: cn=default,ou=terminals,ou=systems,\$1\\ objectClass: gotoTerminal\\ cn: default\\ gotoMode: disabled\\ gotoXMethod: query\\ gotoRootPasswd: tyogUVSVZlEPs\\ gotoXResolution: 1024x768\\ gotoXColordepth: 16\\ gotoXKbModel: pc104\\ gotoXKbLayout: de\\ gotoXKbVariant: nodeadkeys\\ gotoSyslogServer: lts-1\\ gotoSwapServer: lts-1:/export/swap\\ gotoLpdServer: lts-1:/export/spool\\ gotoNtpServer: lts-1\\ gotoScannerClients: lts-1.\$DC.local\\ gotoFontPath: inet/lts-1:7110\\ gotoXdmcpServer: lts-1\\ gotoFilesystem: afs-1:/export/home /home nfs exec,dev,suid,rw,hard,nolock,fg,rsize=8192 1 1\\ \\ dn: cn=admin,ou=people,\$1\\ objectClass: person\\ objectClass: organizationalPerson\\ objectClass: inetOrgPerson\\ objectClass: gosaAccount\\ uid: admin\\ cn: admin\\ givenName: admin\\ sn: GOsa main administrator\\ sambaLMPassword: 10974C6EFC0AEE1917306D272A9441BB\\ sambaNTPassword: 38F3951141D0F71A039CFA9D1EC06378\\ userPassword:: dGVzdGVy\\ \\ dn: cn=administrators,ou=groups,\$1\\ objectClass: gosaObject\\ objectClass: posixGroup\\ objectClass: top\\ gosaSubtreeACL: :all\\ cn: administrators\\ gidNumber: 999\\ memberUid: admin\\ \\ dn: cn=lts-1,ou=servers,ou=systems,\$1\\ objectClass: goTerminalServer\\ objectClass: goServer\\ goXdmcpIsEnabled: true\\ macAddress: 00:B0:D0:F0:DE:1D\\ cn: lts-1\\ goFontPath: inet/lts-1:7110\\ \\ dn: cn=afs-1,ou=servers,ou=systems,\$1\\ objectClass: goNfsServer\\ objectClass: goNtpServer\\ objectClass: goLdapServer\\ objectClass: goSyslogServer\\ objectClass: goCupsServer\\ objectClass: goServer\\ macAddress: 00:B0:D0:F0:DE:1C\\ cn: afs-1\\ goExportEntry: /export/terminals 10.3.64.0/255.255.252.0(ro,async,no\_root\_squash)\\ goExportEntry: /export/spool 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ goExportEntry: /export/swap 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ goExportEntry: /export/home 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ goLdapBase: \$1\\ \\ dn: cn=vserver-02,ou=servers,ou=systems,\$1\\ objectClass: goImapServer\\ objectClass: goServer\\ macAddress: 00:B0:D0:F0:DE:1F\\ cn: vserver-02\\ goImapName: imap://\$IMAP\\ goImapConnect: {\$IMAP:143}\\ goImapAdmin: cyrus\\ goImapPassword: secret\\ goImapSieveServer: \$IMAP\\ goImapSievePort: 2000\\ \\ dn: cn=kerberos,ou=servers,ou=systems,\$1\\ objectClass: goKrbServer\\ objectClass: goServer\\ macAddress: 00:B0:D0:F0:DE:1E\\ cn: kerberos\\ goKrbRealm: \$KRB\\ goKrbAdmin: admin/admin\\ goKrbPassword: secret\\ \\ dn: cn=fax,ou=servers,ou=systems,\$1\\ objectClass: goFaxServer\\ objectClass: goServer\\ macAddress: 00:B0:D0:F0:DE:10\\ cn: fax\\ goFaxAdmin: fax\\ goFaxPassword: secret\\ \\ dn: ou=incoming,\$1\\ objectClass: organizationalUnit\\ ou: incoming\\ \\ EOF\\ \hline \end{longtable} \end{center} \subsubsection{Servidor Maestro y dos rplicas} La carga de datos se har con el mismo script de la seccin anterior, tanto en el maestro como en los esclavos, con las siguientes diferencias:\\ En el maestro por ejemplo "DC=CHAOSDIMENSION,DC=ORG" ejecutaremos este script \htmladdnormallink{crea\_base.sh}{http://warping.sourceforge.net/gosa/contrib/es/crea\_base.sh} para crear la base:\\ \begin{center} \begin{longtable}{|l|}\hline \caption{Configuracin Crea Base Maestro}\\ \hline \hline \multicolumn{1}{|c|}{\textbf{Configuracin Crea Base Maestro}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{1}{|c|}{\textbf{Configuracin Crea Base Maestro (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{1}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{1}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot \#!/bin/sh\\ \\ if [ \$\{\#@\} != 1 ]\\ then\\ \verb| |echo "Se necesita el parmetro DN base del maestro"\\ \verb| |echo "Por ejemplo crea\_base.sh dc=CHAOSDIMENSION,dc=ORG"\\ \verb| |exit\\ fi\\ \\ DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d\textbackslash, -f 1`\\ \\ slapadd \verb|<<| EOF\\ dn: \$1\\ objectClass: dcObject\\ objectClass: organization\\ description: Base object\\ dc: \$DC\\ o: My own Base Organization\\ \\ EOF\\ \hline \end{longtable} \end{center} Adems con el script de la seccin anterior cargaremos los dominios de ejemplo:\\ "DC=dominio1,DC=CHAOSDIMENSION,DC=ORG" y "DC=dominio2,DC=CHAOSDIMENSION,DC=ORG".\\ En el esclavo1 ejecutaremos el script con "DC=dominio1,DC=CHAOSDIMENSION,DC=ORG" y en esclavo2 con "DC=dominio2,DC=CHAOSDIMENSION,DC=ORG".\\ En ambos casos los dos servidores LDAP esclavos habrn sido configurados para su propio DN. Lo que nos faltara seria crear el usuario para la replica, que se podra hacer con el siguiente script \htmladdnormallink{usuario\_replica.sh}{http://warping.sourceforge.net/gosa/contrib/es/usuario\_replica.sh} con parmetros nombre del usuario y el DN base: \\ \begin{center} \begin{longtable}{|l|}\hline \caption{Configuracin Usuario Rplica}\\ \hline \hline \multicolumn{1}{|c|}{\textbf{Configuracin Usuario Rplica}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{1}{|c|}{\textbf{Configuracin Usuario Rplica (continuacin)}}\\ \hline \hline \endhead \hline \multicolumn{1}{|c|}{Sigue $\ldots$}\\ \hline \endfoot \hline \multicolumn{1}{|c|}{\textbf{Fin}}\\ \hline \endlastfoot \#!/bin/sh\\ if [ \$\{\#@\} != 2 ]\\ then\\ \verb| |echo "Se necesita los parametros nombre de usuario y DN base para replica"\\ \verb| |echo "Por ejemplo usuario\_replica.sh replicator dc=dominio1,dc=CHAOSDIMENSION,dc=ORG "\\ \verb| |exit\\ fi\\ \\ KEY=`makepasswd --crypt --chars=7 \textbackslash \\--string="abcdefghijklmnopqrstuvwxyz1234567890"`\\ PASS=`echo \$KEY|awk '\{ print \$1 \}'`\\ CRYPT=`echo \$KEY|awk '\{ print \$2 \}'`\\ \\ echo \verb|"Creando usuario $1 con contrasea: $PASS"|\\ \\ slapadd \verb|<<| EOF\\ dn: cn=\$1,ou=people,\$2\\ displayName: Debian User,,,\\ userPassword: \{crypt\} \$CRYPT\\ sambaLMPassword: \\ sambaNTPassword: \\ sn: \$1\\ givenName: \$1\\ cn: \$1\\ homeDirectory: /home/\$1\\ loginShell: /bin/false\\ uidNumber: 10000\\ gidNumber: 100\\ gecos: \$1\\ shadowMin: 0\\ shadowMax: 99999\\ shadowWarning: 7\\ shadowInactive: 0\\ shadowLastChange: 12438\\ gosaDefaultLanguage: es\_ES\\ uid: \$1\\ objectClass: posixAccount\\ objectClass: shadowAccount\\ objectClass: person\\ objectClass: organizationalPerson\\ objectClass: inetOrgPerson\\ objectClass: gosaAccount\\ objectClass: top\\ \\ EOF\\ \hline \end{longtable} \end{center} \section{Modificaciones para Kerberos} \subsection{Configurando Sasl y Openldap} \section{Configurar Heimdal Kerberos sobre OpenLdap} \label{heimdal_ldap} Porque debemos meter la base de datos de heimdal en ldap? La explicacin es sencilla, replicacin, ldap tiene sistemas de replicacin y de acceso a datos mucho mas modernos y utiles que los de hprop o iprop. Por otro lado al estar los datos en ldap, GOsa no tiene mas que escribirlos o modificarlos directamente, permitiendo crear dominios Kerberos desde ldap o aadir/quitar usuarios/servicios. \subsection{Configurar Heimdal} La instalacin \ref{down_kerberos_heimdal} y la configuracin \ref{heimdal_conf} en la misma, pero vamos a aadir al archivo de configuracin un nuevo bloque: \vspace{0.5cm} \begin{center} \begin{tabular}{|l|l|}\hline \verb| [kdc]| & $\rightarrow$ Configuracin de base de datos del KDC.\\ \verb| database = {| & $\rightarrow$ Definiciones de la base de datos.\\ \verb| realm=CHAOSDIMENSION.ORG| & $\rightarrow$ Que dominio tendremos bajo ese DN\\ \verb| dbname = ldap:ou=people,dc=chaosdimension,dc=org| & $\rightarrow$ El DN bajo el cual se va a guardar la\\ & base de datos, debemos elegir la que convenga segun nuestra configuracin GOsa.\\ \verb| acl_file=/var/lib/heimdal-kdc/kadmind.acl| & $\rightarrow$ Fichero con los permisos de acceso a esa base de datos.\\ \verb| mkey_file = /var/lib/heimdal-kdc/m-key| & $\rightarrow$ Clave maestra de esa base de datos.\\ \verb| }| & $\rightarrow$ \\ \hline \end{tabular} \end{center} \vspace{0.5cm} \subsection{Configurar OpenLdap} La configuracin de openLDAP tiene cuatro partes:\\ La primera es que heimdal solo accede al servidor openLDAP de forma local, via ldapi://, esto tendra que ser activado en el inicio de openLDAP.\\ La segunda es que tenemos que aadir el esquema para kerberos, lo podemos descargar de \htmladdnormallink{http://www.stanford.edu/services/directory/openldap/configuration/krb5-kdc.schema}{http://www.stanford.edu/services/directory/openldap/configuration/krb5-kdc.schema} y debemos colocarlo en /etc/ldap/schemas.\\ La tercera parte son los cambios necesarios en slapd.conf:\\ \vspace{0.5cm} \begin{center} \begin{tabular}{|l|l|}\hline ... & $\rightarrow$ En la carga de esquemas\\ \verb|include /etc/ldap/schema/krb5-kdc.schema| & \\ ... & $\rightarrow$ Configuracin SSL/TLS\\ \verb|TLSCertificateFile /etc/ldap/ssl/ldap.crt| & \\ \verb|TLSCertificateKeyFile /etc/ldap/ssl/ldap.key| & \\ \verb|TLSCACertificateFile /etc/ldap/ssl/gosa.ca| & \\ ... & $\rightarrow$ Configuracin Sasl\\ \verb|sasl-host ldap.chaosdimension.og| & \\ \verb|sasl-keytab /etc/krb5.keytab.ldap| & \\ \verb|sasl-realm CHAOSDIMENSION.ORG| & \\ \verb|sasl-secprops noanonymous| & \\ & \\ \verb|sasl-regexp "uidNumber=0\\\+gidNumber=.*,cn=peercred,cn=external,cn=auth"| & \\ \verb| "krb5PrincipalName=kadmin/admin@CHAOSDIMENSION.ORG,ou=people,dc=chaosdimension,dc=org"| & \\ \verb|sasl-regexp uid=(.+),cn=gssapi,cn=auth uid=$1,ou=people,dc=chaosdimension,dc=org| & \\ ... & $\rightarrow$ Configuracion Kerberos:\\ \verb|srvtab /etc/krb5.keytab.ldap| & \\ ... & $\rightarrow$ El las listas de acceso de la base de datos:\\ \verb|access to dn=""| & \\ \verb| by * read| & \\ & \\ \verb|access to dn.base="cn=Subschema"| & \\ \verb| by * read| & \\ & \\ \verb|access to attr=supportedSASLMechanisms,subschemaSubentry| & \\ \verb| by anonymous read| & \\ \verb| by * read| & \\ & \\ \verb|access to dn.regex="(.*,)?ou=chlgrupo,dc=chlgrupo,dc=com"| & \\ \verb| by dn="krb5PrincipalName=kadmin/admin@CHAOSDIMENSION.ORG,ou=people,dc=chaosdimension,dc=org" =wrscx| & \\ \hline \end{tabular} \end{center} \vspace{0.5cm} gosa-core-2.7.4/doc/admin/es/manual_gosa_es.tex0000644000175000017500000000734510271360203020005 0ustar mikemike\documentclass[a4paper,spanish,10pt]{book} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage[pdftex]{graphicx} \usepackage[spanish]{babel} \usepackage{times} \usepackage{multirow} \usepackage[latex2html,backref,pdftitle={GOsa}]{hyperref} \usepackage{html,color} \usepackage{latexsym} \usepackage{anysize} \usepackage{float} \usepackage{longtable} \usepackage{fancyvrb} \author{Alejandro Escanero Blanco} \title{Administracin de Sistemas con GOsa } \date{28-03-05} \marginsize{3cm}{2cm}{2.5cm}{2.5cm} \begin{document} \renewcommand{\contentsname}{ndice General} \renewcommand{\listfigurename}{Lista de Figuras} \renewcommand{\listtablename}{Lista de Tablas} \renewcommand{\bibname}{Bibliografa} \renewcommand{\indexname}{ndice Alfabtico} \renewcommand{\figurename}{Figura} \renewcommand{\partname}{Parte} \renewcommand{\chaptername}{Captulo} \renewcommand{\appendixname}{Apndice} \renewcommand{\abstractname}{Resumen} \renewcommand{\tablename}{Tabla} \CustomVerbatimEnvironment% {rbox}{Verbatim}{frame=single,fontsize=\small,fontfamily=helvetica,label=Cuadro,framesep=2mm,xleftmargin=2mm,xrightmargin=2mm,rulecolor=\color{blue}} \newcommand{\bbox}{ \vspace{0.5cm} \noindent \begin{tabular}{|l|}\hline } \newcommand{\ebox}{ \hline \end{tabular} \vspace{0.5cm} } \newcommand{\cbbox}{ \vspace{0.5cm} \noindent \begin{tabular}{|l|}\hline } \newcommand{\cebox}{ \hline \end{tabular} \vspace{0.5cm} } \newcommand{\hlink}[1]{ \htmladdnormallink{#1}{#1} } \newcommand{\jump}{ \vspace{0.5cm} } \maketitle \newpage \tableofcontents \newpage \listoffigures \newpage \listoftables \newpage \chapter*{Prembulo} \htmladdnormallink{GOsa}{http://gosa.gonicus.de}, es un proyecto creado en el ao 2001 por Cajus Pollmeier \htmladdnormallink{Cajus Pollmeier}{mailto://pollmeier@gonicus.de} En su versin 1.0 era un proyecto ambicioso, pero mal enfocado. Entre como desarrollador del proyecto en Junio del 2003 en las primeras versiones de la versin 1.99.xx. El cdigo fue rehecho completamente y se creo una nueva versin modular y extensible (basada en plugins) y se optimizo enormemente su funcionamiento. La versin actual de GOsa (a la fecha de la versin de este documento) es la 2.3. Es capaz de gestionar gran cantidad de servicios como samba2/3, pureftpd, postfix, cyrus-imap, posix, etc. Y cuenta con un pequeo, pero muy activo grupo de desarrolladores dirigido por Cajus. \chapter{Introduccin} La administracin de sistemas puede llegar a ser una tarea realmente complicada, demasiados usuarios con servicios y permisos diferentes. \section{Copyright and Disclaimer} Copyright (c) 2005 Alejandro Escanero Blanco. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have questions, please visit the following url: http://www.gnu.org/licenses/fdl.txt\\ And contact at: \htmladdnormallink{blainett@yahoo.es}{mailto://blainett@yahoo.es} \include{manual_gosa_es_certificates} \include{manual_gosa_es_kerberos} \include{manual_gosa_es_ldap} \include{manual_gosa_es_apache} \chapter{GOsa} \include{manual_gosa_es_dns} \include{manual_gosa_es_mail} \include{manual_gosa_es_fileserver} \include{manual_gosa_es_printing} \include{manual_gosa_es_proxy} \include{manual_gosa_es_gw} \include{manual_gosa_es_ssh} \include{manual_gosa_es_vpn} \include{manual_gosa_es_ftp} \include{manual_gosa_es_im} \include{manual_gosa_es_otros} \chapter{Los Servidores} \label{servidores} \bibliography{referencias_gosa} \bibliographystyle{unsrt} \end{document} gosa-core-2.7.4/doc/admin/es/manual_gosa_es_dns.tex0000644000175000017500000002422610271360203020646 0ustar mikemike\chapter{Servidores de Configuracin dinmica de Equipos - DHCP} \section{El protocolo DHCP} DHCP (Dynamic Host Configuration Protocol / Protocolo de configuracin dinmica de equipos) es usado ampliamente y tiene numerosas posibilidades, como la asignacin dinmicas de direcciones IP. DHCP aparece como un protocolo estandar en Octubre de 1993 (RFC 2131). \subsection{Asignacin de IPs} \begin{itemize} \item[Manual] La asignacin se hace de forma manual, de tal modo que para cada MAC se le asigna una ip fija. \item[Automtico] Se asigna un rango de ips que sern dadas a los clientes. Estas sern asignadas de tal forma que los clientes mantengan su IP. \item[Dinmico] Se asigna un rango de ips que sern dadas a los clientes. Estas sern asigandas de forma dinmica, de tal manera que al arrancar la maquina el servidor le asignara una IP y esta puede ser diferente cada vez que arranque. \end{itemize} \subsection{Anlisis del Protocolo} El protocolo utilizara los puertos 67/UDP para el lado de servidor y 68/UDP para el lado de cliente. \begin{itemize} \item[DISCOVER] El cliente lanza un broadcast a 255.255.255.255 buscando un servidor DHCP, tambien hace peticiones indicando su ultima IP. \item[OFFER] El servidor determina la configuracin del cliente con entre otras cosas, la direccin MAC del cliente. \item[REQUEST] El cliente pide la configuracin al servidor, indicando la IP que este le ha configurado. \item[ACKNOWLEDGE] El servidor lanza un broadcast para que los otros clientes vean lo que ha sucedido. \end{itemize} \section{Instalacin} Se descarga de \hlink{ftp://ftp.isc.org/isc/} y lo descomprimimos en /usr/src/dhcp-3.X.X, hacemos entonces los siguiente: \jump \begin{rbox} # cd /usr/src/dhcp-3.X.X # ./configure # make # make install \end{rbox} \jump \section{Configuracin Bsica} Al comenzar leera la configuracin desde el archivo /etc/dhcp3/dhcp.conf, una configuracin bsica puede ser: \jump \begin{rbox} # Intentara hacer una actualizacin automatica de dns (muy util para los windows 2k). ddns-update-style interim; ddns-hostname chaosdimension.org ddns-domainname chaosdimension.org # opciones de dominio y dns option domain-name "chaosdimension.org"; option domain-name-servers ns1.chaosdimension.org, ns2.chaosdimension.org; # Tiempos que se tendra una ip default-lease-time 600; max-lease-time 7200; # Fichero donde se guardan las peticiones # Muy interesante para actualizaciones dinamicas lease-file-name /var/lib/dhcp/dhcpd.leases # Si este es el unico servidor DHCP en la red # se debe activar esta opcin #authoritative; # Donde ira el registro de eventos # En /etc/syslog.conf habra que poner algo como: # log.local7 /var/log/dhcp3d.log log-facility local7; # Configuracin de la subred y las IPs subnet mysubnet.0 netmask 255.255.255.128 { range mysubnet.1 mysubnet.127; option broadcast-address mysubnet.128; option routers gw1.chaosdimension.org, gw2.chaosdimension.org; option domain-name-servers ns1.chaosdimension.org, ns2.chaosdimension.org; option domain-name "chaosdimension.org"; default-lease-time 600; max-lease-time 7200; } # Si lo que queremos es una configuracin por equipos el sistema es: host cliente1 { hardware ethernet MAC.cliente1; # filename "vmunix.passacaglia"; Muy interesante para subir archivos por tftp fixed-address cliente1.chaosdimension.org; server-name "chaosdimension.org"; } \end{rbox} \jump \chapter{Servidores de Dominios de Nombres - DNS} \section{El servicio de Dominio de Nombres} \section{El servidor Bind 9} Bind 9 es el servidor de nombres mas extendido por internet, aunque tenga la competencia de nuevos servidores como pdns(\hlink{http://www.powerdns.com/}) o djbdns(\hlink{http://cr.yp.to/djbdns.html}). Tiene gran cantidad de documentacin en el sitio web del ISC: \hlink{http://www.isc.org/index.pl?/sw/bind/bind9.php} , en especial muy interesante la guia del administrador de bind 9 en \hlink{http://www.nominum.com/content/documents/bind9arm.pdf}. \section{Instalacin} Se descarga de \hlink{ftp://ftp.isc.org/isc/} \section{Configuracin Bsica} El archivo con la configuracin de los dominios es /etc/bind/named.conf y la configuracin que vamos a poner de ejemplo es bastante bsica: \jump \begin{rbox}[label=named.conf] // Clave para actualizaciones tipo dyndns include "/etc/bind/dyndns-keyfile"; // Listas de acceso acl local{ myipnetwork/24; localhost/32; }; acl slaves{ ip.slave.dns1/32; ip.slave.dns2/32; // Ad Infinitun ... }; acl dhcp3{ ip.server.dhcp3/32; }; // Controlando el registro de eventos logging { category lame-servers { null; }; category cname { null; }; }; // El dominio raiz, este archivo contiene la lista de servidores raices, se // puede actualizar con el comando dig: zone "." { type hint; file "/etc/bind/db.root"; }; // Sera siempre el dominio autorizado para localhost zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; zone "chaosdimension.org" { // Estamos en el servidor maestro type master; // LIsta de acceso al dominio // Quienes pueden preguntar allow-query {local; }; // Quienes pueden hacer transferencias (esclavos) allow-transfer {slaves;}; // Quienes pueden hacer modificaciones de informacin allow-update {dhcp3;}; // Notificaremos los cambios notify yes; file "/etc/bind/dominios/chaosdimension.org.dns"; }; \end{rbox} \jump \begin{rbox}[label=/etc/bind/dyndns-keyfile] key getip { algorithm hmac-md5; secret "7YUVBA4v/5I="; }; \end{rbox} \jump \begin{rbox}[label=dominios/chaosdimension.org.dns] $TTL 86400 ; ; Zone file for chaosdimension.org ; ; The full zone file ; @ IN SOA chaosdimension.org hostmaster.chaosdimension.org. ( 2005060901 ; serial, todays date + todays serial ## 8H ; refresh, seconds 2H ; retry, seconds 2W ; expire, seconds 1D ) ; minimum, seconds ; NS ns1.chaosdimension.org. ; Inet Address of name server NS ns2.chaosdimension.org. MX 10 mx.chaosdimension.org. ; Primary Mail Exchanger ; $ORIGIN chaosdimension.org. sistemas IN A 192.168.0.155 ldap IN A 192.168.1.1 server1 IN A 192.168.1.2 server2 IN A 192.168.1.3 server3 IN A 192.168.1.4 krb IN A 192.168.1.1 kdc IN A 192.168.1.1 kadmin IN A 192.168.1.1 kpasswd IN A 192.168.1.1 ns1 IN A 192.168.1.1 ns2 IN A 192.168.1.2 @ IN A 192.168.1.1 \end{rbox} \jump \section{Una configuracin avanzada} \subsection{DHCP-ddns} Si queremos actualizacin automatica desde los servidores DHCP, tendremos que cambiar cosas en nuestra configuracin, entre otras cosas muy importantes permisos, en la configuracin anterior se indica la lista de acceso dhcp3 para el acceso de actualizacin (update) desde el servidor DHCP. \subsection{SDB} SDB (BIND 9 Simplified Database Interface / Interface simplificado a la base de datos de Bind 9) es una base de datos en memoria de los contenidos de la configuracin de bind9, este sistema es expansible a otros sistemas de bases de datos, con los cuales se puede manipular la informacin en Bind 9. \subsection{DYNDNS} DYNDNS es un protocolo de actualizacin de zonas DNS, usado tambien en bind 8 proporciona un sistema ideal para la actualizacin de servidores DNS sin tener que usar SDB, la actualizacin se realizara a traves del comando nsupdate, se necesita una clave para las actualizaciones que sera usada por este comando. En la configuracin hemos aadido un archivo que contine la clave de configuracin, desde nsupdate podremos usar la misma clave y conseguir las actualizaciones, tenemos aadir o borrar direcciones: \jump \begin{rbox}[label=Aadiendo registro DNS] # echo "update add nombre.chaosdimension.org 300 A direccin.ip"|/usr/sbin/nsupdate -k /home/keys/keys:getip. \end{rbox} \jump \begin{rbox}[label=Eliminando registro DNS] # echo "update delete nombre.chaosdimension.org"|/usr/sbin/nsupdate -k /home/keys/keys:getip. \end{rbox} \jump \subsection{DNSSEC} En el ejemplo anterior vemos un uso de dnssec, una infraestructura para la seguridad de bind, en este caso sencillo explicaremos la creacion tanto de dyndns-keyfile como la generacion de las claves que habra debajo del directorio /home/keys/keys, primero vamos al directorio y ejecutamos: \jump \begin{rbox} # dnssec-keygen -a HMAC-MD5 -b 64 -n zone getip Kgetip.+157+19720 \end{rbox} \jump Tendremos ahora dos archivo es ese directorio: Kgetip.+157+05353.key y Kgetip.+157+05353.private, del primero cogeremos la clave: \jump \begin{rbox} # cat Kgetip.+157+05353.key getip. IN KEY 256 3 157 7YUVBA4v/5I= \end{rbox} \jump El valor \verb|7YUVBA4v/5I=| es que pondremos en el archivo dyndns-keyfile descrito anteriormente. \subsection{Usando ldap2dns para sustituir al servidor Bind} \section{El servidor Pdns} \subsection{Usando Pdns-ldap como servidor de dominio} \section{Configurar el dns para los dominios y servidores Kerberos} \label{dns_kerberos} \subsection{Bind9} \jump \begin{rbox} _kerberos IN TXT "CHAOSDIMENSION.ORG" _kerberos._tcp IN SRV 0 0 88 krb.chaosdimension.org. _kerberos._udp IN SRV 0 0 88 krb.chaosdimension.org. _kerberos-master._udp IN SRV 0 0 88 krb.chaosdimension.org. _kerberos-adm._tcp IN SRV 0 0 749 krb.chaosdimension.org. _kpasswd._udp IN SRV 0 0 464 krb.chaosdimension.org. _ldap._tcp.chaosdimension.org IN SRV 0 0 389 ldap.chaosdimension.org \end{rbox} \jump \subsection{Pdns} gosa-core-2.7.4/doc/admin/en/0000755000175000017500000000000011752422547014307 5ustar mikemikegosa-core-2.7.4/doc/admin/en/manual_gosa_en.tex0000644000175000017500000000465010234261424017773 0ustar mikemike\documentclass[a4paper,english,10pt]{book} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage[pdftex]{graphicx} \usepackage[english]{babel} \usepackage{times} \usepackage{multirow} \usepackage[latex2html,backref,pdftitle={GOsa}]{hyperref} \usepackage{html,color} \usepackage{latexsym} \usepackage{anysize} \usepackage{float} \usepackage{longtable} \usepackage{verbatim} \author{Alejandro Escanero Blanco} \title{System Management with GOsa } \date{28-03-05} \marginsize{3cm}{2cm}{2.5cm}{2.5cm} \begin{document} \maketitle \newpage \tableofcontents \newpage \listoffigures \newpage \listoftables \newpage \chapter*{Preamble} \htmladdnormallink{GOsa}{http://gosa.gonicus.de}, was a project created in year 2001 by Cajus Pollmeier \htmladdnormallink{Cajus Pollmeier}{mailto://pollmeier@gonicus.de} In the 1.0 version GOsa was a an ambitious project, but badly focused. I entred as developer of the project in June of 2003 for the early versions of the branch 1.99.xx. The code was remade from scratch, and we created a new modular and extensible version (based on plugins) and optimizing its operations enormously. The actual version of GOsa (in the date of this document) is 2.3. It have the ability to manage a great amount of services like samba2/3, pureftpd, postfix, cyrus-imap, posix, etc. It have a small but very active developer group directed by Cajus. \chapter{Introduction} The management of systems can be a really complicated work, too many users with diferents services and access to them. \section{Copyright and Disclaimer} Copyright (c) 2005 Alejandro Escanero Blanco. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have questions, please visit the following url: http://www.gnu.org/licenses/fdl.txt and contact at: \htmladdnormallink{blainett@yahoo.es}{mailto://blainett@yahoo.es} \include{manual_gosa_en_ldap} \include{manual_gosa_en_apache} \chapter{GOsa} \chapter{The Servers} \label{servers} \section{Postfix} \section{Cyrus-IMAP} \section{Samba 2/3} \section{Pure-Ftpd} \section{Squid} \section{Egroupware} \bibliography{referencias_gosa} \bibliographystyle{unsrt} \end{document} gosa-core-2.7.4/doc/admin/en/manual_gosa_en_apache.tex0000644000175000017500000011411410234261424021271 0ustar mikemike\chapter{Apache And PHP} \section{Apache Introduction} GOsa is an application written in the PHP programming language. Although everybody knows what is a Web page, we will review some basic points: \begin{description} \item[WWW] The World Wide Web is the main core of what we know as the Internet, it is a space information where each resource is identified by its URI (Universal Resource Identifier), it defines the protocol necessary to accede to the information, the machine that has it and where it is placed. The WWW is the great revolution of our time, is an enormous source of information. And because this all the applications are being Internet oriented. GOsa uses the WWW for a simple reason, distribution of the program, a Internet oriented application that can be used from any place and any time. GOsa does not need to be acceded in the same machine that has it executed, and another thing, each one of the servers whom it controls even can be in different machines and remote places. \item[HTTP] \htmladdnormallink{HTTP}{http://www.w3.org/Protocols/}\cite{2616} is the acronym of HyperText Transfer Protocol, whose importantest purpose is the publication and reception of "Web pages". It is a application level protocol invented for distributed systems of hypermedia information. It has been being used for the WWW from 1990, the current version is HTTP/1.1. The practical operation can be reduced to a client whom makes a request and a server whom manages that request makes an answer. \item[HTML] If the request of the client and the answer of the server are correct, the answer of the server will contain some type of hypermedia, the most habitual is \htmladdnormallink{HTML}{http://www.w3.org/TR/1998/REC-html40-19980424/} (HyperText Markup Language), a language thought for publication with contents and a easy navigation by them. It is a protocol in constant development, the present version is HTML4.01 and in publication XHTML2.0 \end{description} \htmladdnormallink{APACHE}{http://httpd.apache.org/} is the \htmladdnormallink{most used}{http://news.netcraft.com/archives/web_server_survey.html} server for HTTP , secure, efficient and modular. This manual will be centered around this server, since this is the most used and has a opensource license. More information about this server is in \htmladdnormallink{http://httpd.apache.org/docs-2.0/}{http://httpd.apache.org/docs-2.0/} \section{PHP Introduction} PHP (PHP: Hypertext Preprocessor), is an interpreted high level language, specially thought for the design of web pages. The syntax is a mixture of C, Perl and Java. It is embed in HTML pages and is executed by the HTTP server. PHP is widely extended and has a numerous group of developer, a \htmladdnormallink{extensive documentation}{http://www.php.net/docs.php} and numerous web sites with documentation and examples. \newpage \section{Installation} \subsection{Unloading and Installing Apache} \label{down_apache} As in the previous chapter, Apache is practically in all the distributions, although we will see its installation from the sources. We are going to focus on the most advanced versions of apache, the 2.0.XX stables series. It is recommended install the same packages that are needed for openLDAP\ref{down_ldap}. It is possible to be downloaded of: \htmladdnormallink{http://httpd.apache.org/download.cgi}{http://httpd.apache.org/download.cgi}, the version which we are going to download and decompress in/usr/src is the httpd-2.0.XX.tar.gz We executed \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/en/configure-apache.sh} with the following options: \begin{itemize} \item[]Generals\\ \begin{tabular}{|ll|} \hline --enable-so & $\rightarrow$ Support of Dynamic Shared Objects (DSO)\\ --with-program-name=apache2 & \\ --with-dbm=db42 & $\rightarrow$ Version of Berkeley DB that we are going to use\\ --with-external-pcre=/usr & \\ --enable-logio & $\rightarrow$ Input and Output Log\\ --with-ldap=yes & \\ --with-ldap-include=/usr/include & \\ --with-ldap-lib=/usr/lib & \\ \hline \end{tabular} \item[]suexec Support\\ \begin{tabular}{|ll|}\hline --with-suexec-caller=www-data & \\ --with-suexec-bin=/usr/lib/apache2/suexec2 & \\ --with-suexec-docroot=/var/www & \\ --with-suexec-userdir=public\_html & \\ --with-suexec-logfile=/var/log/apache2/suexec.log & \\ \hline \end{tabular} \item[] \begin{longtable}{|ll|} \hline \multicolumn{2}{|c|}{\textbf{Modules}}\\ \hline \endfirsthead \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot --enable-userdir=shared & $\rightarrow$ mod\_userdir, module for user directories\\ --enable-ssl=shared & $\rightarrow$ mod\_ssl, module of secure connectivity SSL\\ --enable-deflate=shared & $\rightarrow$ mod\_deflate, module to compress the information\\ --enable-ldap=shared & $\rightarrow$ mod\_ldap\_userdir, module for ldap cache and connections\\ --enable-auth-ldap=shared & $\rightarrow$ mod\_ldap, module of authentication in ldap\\ --enable-speling=shared & $\rightarrow$ mod\_speling, module for the correction of failures in URL\\ --enable-include=shared & $\rightarrow$ mod\_include, module for the inclusion of other configurations \\ --enable-rewrite=shared & $\rightarrow$ mod\_rewrite, allows the URL manipulations \\ --enable-cgid=shared & $\rightarrow$ CGI script\\ --enable-vhost-alias=shared & $\rightarrow$ module for aliasing of virtual domains \\ --enable-info=shared & $\rightarrow$ Information of the server\\ --enable-suexec=shared & $\rightarrow$ Change the user and the group of the processes\\ --enable-unique-id=shared & $\rightarrow$ unique Identifier by request\\ --enable-usertrack=shared & $\rightarrow$ Track of the user session\\ --enable-expires=shared & $\rightarrow$ Module for sending of expiration headers\\ --enable-cern-meta=shared & $\rightarrow$ Files meta type CERN\\ --enable-mime-magic=shared & $\rightarrow$ Obtain automatically mimetype\\ --enable-headers=shared & $\rightarrow$ Control HTTP headers\\ --enable-auth-anon=shared & $\rightarrow$ Access to anonymous users\\ --enable-proxy=shared & $\rightarrow$ Allow the use of Apache as a proxy\\ --enable-dav=shared & $\rightarrow$ Able to handle to the WebDav protocol\\ --enable-dav-fs=shared & $\rightarrow$ Supplier DAV for the file system\\ --enable-auth-dbm=shared & $\rightarrow$ Authentication based on database DBM\\ --enable-cgi=shared & $\rightarrow$ Allow CGI scripts\\ --enable-asis=shared & $\rightarrow$ Types of archives as they are\\ --enable-imap=shared & $\rightarrow$ Server side image maps\\ --enable-ext-filter=shared & $\rightarrow$ Module for external filters\\ --enable-authn-dbm=shared & \\ --enable-authn-anon=shared & \\ --enable-authz-dbm=shared & \\ --enable-auth-digest=shared & $\rightarrow$ Collection of authentications according to RFC2617\\ --enable-actions=shared & $\rightarrow$ Active actions according to requests\\ --enable-file-cache=shared & $\rightarrow$ File Cache\\ --enable-cache=shared & $\rightarrow$ Dynamic Cache of archives\\ --enable-disk-cache=shared & $\rightarrow$ Disc cache\\ --enable-mem-cache=shared & $\rightarrow$ Mamory cache\\ \end{longtable} \end{itemize} Once configured, we must do:\\ \\ \begin{tabular}{|l|}\hline \#make \&\& make install\\ \hline \end{tabular} \newpage \subsection{Installing PHP in Apache} Can be downloaded of \htmladdnormallink{http://www.php.net/downloads.php}{http://www.php.net/downloads.php} being the version necessary to the date of this manual for comaptibility with GOsa, the 4.3.XX, since versions 5.0.XX are not supported yet. We will download and decompress in/usr/src. In order to be able to compile the necessary modules, we need the developer libraries of servers section \ref{servers}, in addition to same that openLDAP\ref{down_ldap} and the Apache\ref{down_apache}, we will need some library more: \begin{itemize} \item[libbz2] We can download it of \htmladdnormallink{http://sources.redhat.com/bzip2/}{http://sources.redhat.com/bzip2/} as module of compression BZ2. \item[e2fsprogs] For access to the file system, can be downloaded of \htmladdnormallink{http://e2fsprogs.sourceforge.net}{http://e2fsprogs.sourceforge.net} \item[expat] Download from \htmladdnormallink{http://expat.sourceforge.net/}{http://expat.sourceforge.net/}, A XML parser. \item[zziplib] Download from \htmladdnormallink{http://zziplib.sourceforge.net/}{http://zziplib.sourceforge.net/}, to access to ZIP archives. \item[zlib] Download from \htmladdnormallink{http://www.gzip.org/zlib/}{http://www.gzip.org/zlib/} for GZIP compression. \item[file] Download from \htmladdnormallink{http://www.darwinsys.com/freeware/file.html}{http://www.darwinsys.com/freeware/file.html} to get control of archives. \item[sed] Download from \htmladdnormallink{http://www.gnu.org/software/sed/sed.html}{http://www.gnu.org/software/sed/sed.html}, one of the most powerful tools for text handling. \item[libcurl] Powerful tool to handle remote archives, download from \htmladdnormallink{http://curl.haxx.se/}{http://curl.haxx.se/}. \item[gettext] GNU Tool for support of several languages, download from \htmladdnormallink{http://www.gnu.org/software/gettext/gettext.html}{http://www.gnu.org/software/gettext/gettext.html}. \item[libgd] For the manipulation and creation of images, download from: \htmladdnormallink{http://www.boutell.com/gd}{/http://www.boutell.com/gd/}. \item[libjpeg] Manipulation of JPEG images, download from \htmladdnormallink{http://www.ijg.org/}{http://www.ijg.org/}. \item[libpng] Manipulation of PNG images, donwload from \htmladdnormallink{http://www.libpng.org/pub/png/libpng.html}{http://www.libpng.org/pub/png/libpng.html}. \item[mcal] Library for access to remote Calendars, download from \htmladdnormallink{http://mcal.chek.com/}{http://mcal.chek.com/}. \item[libmysql] Support of most famous database, is essential for php, download from \htmladdnormallink{http://www.mysql.com/}{http://www.mysql.com/} \end{itemize} \vspace{1cm} A recommended configuration will be like this: \begin{itemize} \item[]Apache2\\ \begin{tabular}{|ll|}\hline --prefix=/usr --with-apxs2=/usr/bin/apxs2 & \\ --with-config-file-path=/etc/php4/apache2 & \\ \hline \end{tabular} \item[]Options of compilation\\ \begin{tabular}{|ll|}\hline --enable-memory-limit & \# Compiled with memory limit\\ --disable-debug & \# To compile without debug symbols\\ --disable-static & \# Without static libraries\\ --with-pic & \# To use PIC and nonPIC objects\\ --with-layout=GNU & \\ --enable-sysvsem & \# sysvmsg Support\\ --enable-sysvshm & \# sysvshm Support\\ --enable-sysvmsg & \# System V shared memory support\\ --disable-rpath & \# Disable to be able to pass routes to extra librerias to the binary\\ --without-mm & \# To disable memoty sessions support\\ \hline \end{tabular} \item[]Session\\ \begin{tabular}{|ll|}\hline --enable-track-vars & \\ --enable-trans-sid & \\ \hline \end{tabular} \item[]Support\\ \begin{tabular}{|ll|}\hline --enable-sockets & \# sockets support\\ --with-mime-magic=/usr/share/misc/file/magic.mime & \\ --with-exec-dir=/usr/lib/php4/libexec & \\ \hline \end{tabular} \item[]pear\\ \begin{tabular}{|ll|}\hline --with-pear=/usr/share/php & \# Where we are going to install PEAR\\ \hline \end{tabular} \item[]functions\\ \begin{tabular}{|ll|}\hline --enable-ctype & \# Control of characters functions support\\ --with-iconv & iconv functions support \\ --with-bz2 & BZ2 Compression support\\ --with-regex=php & Type of library of regular expressions\\ --enable-calendar & Calendar conversion functions\\ --enable-bcmath & Mathematics of arbitrary precision support\\ --with-db4 & DBA: Berkeley DB version 4 support \\ --enable-exif & exif functions support, for JPG and TIFF metadata reading\\ --enable-ftp & FTP functions support \\ --with-gettext & Localization support\\ --enable-mbstring & \\ --with-pcre-regex=/usr & \\ --enable-shmop & shared memory functions\\ --disable-xml --with-expat-dir=/usr & use expat xml instead of which comes with php\\ --with-xmlrpc & \\ --with-zlib & \\ --with-zlib-dir=/usr & \\ --with-imap=shared,/usr & imap generic support\\ --with-kerberos=/usr & Imap with Kerberos authentication\\ --with-imap-ssl & Imap with SSL secure access\\ --with-openssl=/usr & \\ --with-zip=/usr & \\ --enable-dbx & Layer of abstraction with databases\\ \hline \end{tabular} \item[]external modules\\ \begin{tabular}{|ll|}\hline --with-curl=shared,/usr & remote Handling of archives\\ --with-dom=shared,/usr --with-dom-xslt=shared,/usr --with-dom-exslt=shared,/usr & With xmlrpc already integrated\\ --with-gd=shared,/usr --enable-gd-native-ttf & Images handling support\\ --with-jpeg-dir=shared,/usr & GD Support for JPEG\\ --with-png-dir=shared,/usr & GD Support for png\\ --with-ldap=shared,/usr & Support for ldap\\ --with-mcal=shared,/usr & Support of calendars\\ --with-mhash=shared,/usr & Module for several key generation algorithms\\ --with-mysql=shared,/usr & Support of Mysql database\\ \hline \end{tabular} \end{itemize} Then do:\\ \#make \&\& make install \newpage \section{Apache2 Configuration} The apache configuration is saved in the directory /etc/apache2 in the following files and directories: \begin{itemize} \item[]File apache2.conf:\\ Main configuration of apache2, it have the necesary configuration to run apache.\\ We don\'t need to edit this file. \item[]File ports.conf\\ What port apache listen, we need two, port 80 for HTTP and port 443 for HTTPS, we will edit the file, and leave like this:\\ \begin{tabular}{|l|}\hline Listen 80,443\\ \hline \end{tabular} \item[]Directory conf.d:\\ Directory for especial configuration, we don\'t need it. \item[]Directories mods-available and mods-enabled:\\ This directory have all the modules we can use of apache2, to enable a module is neccesary link it to the directory mods-enabled.\\ \item[]Directories sites-available and sites-enabled:\\ In sites available we must configure the sites we can use.\\ For example we are going to create a no secure gosa site gosa, we can use it to redirect the request to the secure server. Gosa Configuration (sites-available/gosa) can be like this:\\ \begin{tabular}{|l|}\hline \noindent NameVirtual *\\ \\ \verb| |ServerName gosa.chaosdimension.org\\ \\ \verb| |Redirect /gosa https://gosa.chaosdimension.org/gosa\\ \\ \verb| |CustomLog /var/log/apache/gosa.log combined\\ \verb| |ErrorLog /var/log/apache/gosa.log\\ \\ \\ \hline \end{tabular} And when is saved, can be enabled making this:\\ \\ \begin{tabular}{|l|}\hline \#>ln -s /etc/apache2/sites-available/gosa.conf /etc/apache2/sites-enabled/gosa.conf\\ \hline \end{tabular} \\ \item[]Directory ssl:\\ Directory for Secure Socket Layer configuration, this will see in the next section. \end{itemize} \newpage \subsection{Security} The security is one of the most important points when running a apache server, we will need to make a safe environment where not to allow that the users manipulate and accede to code or programs. The way to obtain this is using cryptography, in which we secure the communications between clients and servers so that nobody else can accede to the data. This is obtained with cryptography and key exchange. The other way to secure the system is that if some failure exists in the system or the code, and if a intruder tries to execute code, this person can be disabled, since powerful limitations exist, like not allowing that he executes commands, reads code of others scripts. He cannot modify nothing because he has a user with very limited resources. \subsubsection{SSL Certificates} \noindent There are a great amount of documentation on cryptography and concretely on SSL, a system of encryption with public and private key. \\ \\ \noindent As the package openSSL was already installed from the previous steps, we must create the certificates that we will use in our Web server. \\ \\ \noindent we will save the certificates in/etc/apache2/ssl/gosa.pem \\ \\ \begin{tabular}{|l|}\hline \#>FILE=/ect/apache2/ssl/gosa.pem\\ \#>export RANDFILE=/dev/random\\ \#>openssl req -new -x509 -nodes -out \$FILE -keyout /etc/apache2/ssl/apache.pem\\ \#>chmod 600 \$FILE\\ \#>ln -sf \$FILE /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < \$FILE`.0\\ \hline \end{tabular} \vspace{0.5cm} \noindent With this we have created a certificate that allows SSL access to our pages. \\ \\ \noindent If what we want is a configuration that allows us not only that traffic is codified, but that in addition the client guarantees that he is a valid user, we must force the server to requests a client certification \\ \\ \noindent In this way we will follow a longer procedure, first will be creation of a certification of CA: \\ \\ \begin{tabular}{|l|}\hline \#>CAFILE=/ect/apache2/ssl/gosa.ca\\ \#>KEY=/etc/apache2/ssl/gosa.key\\ \#>REQFILE=/etc/apache2/ssl/gosa.req\\ \#>CERTFILE=/ect/apache2/ssl/gosa.cert\\ \#>DAYS=365\\ \#>export RANDFILE=/dev/random\\ \#>openssl req -x509 -keyout \$CAKEY -out \$CAFILE \$DAYS\\ \hline \end{tabular} \vspace{0.5cm} \noindent After several questions we will have a CA, now we make a requirement to the created CA: \\ \\ \begin{tabular}{|l|}\hline \#>openssl req -new -keyout \$REQFILE -out \$REQFILE \$DAYS\\ \hline \end{tabular} \vspace{0.5cm} \noindent Sign the new certificate: \\ \\ \begin{tabular}{|l|}\hline \#>openssl ca -policy policy\_anything -out \$CERFILE -infiles \$REQFILE\\ \hline \end{tabular} \vspace{0.5cm} \noindent and we created a pkcs12 certidicate to configure the clients: \\ \\ \begin{tabular}{|l|}\hline \#>openssl pkcs12 -export -inkey \$KEY -in \$CERTFILE -out certificado\_cliente.pkcs12\\ \hline \end{tabular} \vspace{0.5cm} \noindent This certificate will be installed in the client, and in the the configuration of the Web server in the way explained in the following point, we will have the security that the clients who will accede the server are in a secure machine and its communication will be strictly confidential. \ \ \subsubsection{Configuring mod-SSL} \noindent The SSL module comes with apache2, this will simplify our work. In order to know if already is enabled: \\ \\ \begin{tabular}{|l|}\hline \#> if [ -h /etc/apache2/mods-enabled/ssl.load ]; then echo "enabled module";else echo "disabled module"; fi\\ \hline \end{tabular} \vspace{0.4cm} \noindent To enabled it we will do it following: \\ \\ \begin{tabular}{|l|}\hline \#>ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf\\ \#>ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load\\ \hline \end{tabular} \vspace{0.5cm} \noindent This will enable the module in apache2 and we will be able to use it after restarting the server with: \\ \\ \begin{tabular}{|l|}\hline \#>/etc/init.d/apache2 restart\\ \hline \end{tabular} \vspace{0.5cm} \noindent If we only want a secure configuration, we will make this in /etc/apache2/sites-available, gosa-SSL: \\ \\ \begin{tabular}{|l|}\hline \noindent NameVirtual *:443\\ \\ \verb| |ServerName gosa.chaosdimension.org\\ \verb| |alias /gosa /usr/share/gosa/html\\ \\ \verb| |DocumentRoot /var/www/gosa.chaosdimension.org\\ \verb| |CustomLog /var/log/apache/gosa.log combined\\ \verb| |ErrorLog /var/log/apache/gosa.log\\ \\ \verb| |SSLEngine On\\ \verb| |SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ \verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ \verb| |SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ \verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ \verb| |SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ \verb| |SSLCACertificatePath /etc/apache2/ssl/\\ \verb| |SSLLogLevel error\\ \verb| |SSLLog /var/log/apache2/ssl-gosa.log\\ \\ \\ \hline \end{tabular} \vspace{0.5cm} \noindent For a secure communication in which we verified the certificate of the client: \\ \begin{tabular}{|l|}\hline \noindent NameVirtual *:443\\ \\ \verb| |ServerName gosa.chaosdimension.org\\ \\ \verb| |alias /gosa /usr/share/gosa/html\\ \\ \verb| |DocumentRoot /var/www/gosa.chaosdimension.org\\ \verb| |CustomLog /var/log/apache/gosa.log combined\\ \verb| |ErrorLog /var/log/apache/gosa.log\\ \\ \verb| |SSLEngine On\\ \verb| |SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ \verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ \verb| |SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ \verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ \verb| |SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ \verb| |SSLCACertificatePath /etc/apache2/ssl/\\ \verb| |SSLLogLevel error\\ \verb| |SSLLog /var/log/apache2/ssl-gosa.log\\ \\ \verb| |\\ \verb| |\verb| |SSLVerifyClient require\\ \verb| |\verb| |SSLVerifyDepth 1\\ \verb| |\\ \\ \hline \end{tabular} \vspace{0.5cm} \subsubsection{Configuring suphp} \noindent Suphp is a module for apache and php that allows to execute processes of php with a different user of which apache uses to execute php pages. It consists of two parts, one is a module for apache who "captures" requests of php pages, verifies the user of the file, its group, and sends the information to the other part, that is suid-root executable that sends the information to php4-cgi with the owner of the file as user, then gives back the result to the module of the apache. The idea is to lower the damage that would cause a possible failure of the system being exploited, in this way the user enter the system with an nonqualified account, without permissions of execution and possibility to access to another code or programs. Suphp can be downloaded of \htmladdnormallink{http://www.suphp.org/Home.html}{http://www.suphp.org/Home.html}, decompressing the package in/usr/src and compiled with the following options:\\ \\ \begin{tabular}{|l|}\hline \#>./configure --prefix=/usr \textbackslash \\ \verb| |--with-apxs=/usr/bin/apxs2 \textbackslash \\ \verb| |--with-apache-user=www-data \textbackslash \\ \verb| |--with-php=/usr/lib/cgi-bin/php4 \textbackslash \\ \verb| |--sbindir=/usr/lib/suphp \textbackslash \\ \verb| |--with-logfile=/var/log/suphp/suphp.log \textbackslash \\ \verb| |-with-setid-mode \textbackslash \\ \verb| |--disable-checkpath \\ \hline \end{tabular} \vspace{0.5cm} \noindent Of course we will need to have compiled in php for cgi, this means returning to compilation of php, but clearing the configuration for apache2 and adding: \\ \\ \begin{tabular}{|l|}\hline \verb| |--prefix=/usr --enable-force-cgi-redirect --enable-fastcgi \textbackslash\\ \verb| |--with-config-file-path=/etc/php4/cgi\\ \hline \end{tabular} \vspace{0.5cm} \noindent To configure in apache we will do the same as for SSL, first we verify if is enabled: \\ \\ \begin{tabular}{|l|}\hline \#> if [ -h /etc/apache2/mods-enabled/suphp.load ]; then echo "enabled module";else echo "disabled module"; fi\\ \hline \end{tabular} \vspace{0.5cm} \noindent to activate it we will do the following: \\ \\ \begin{tabular}{|l|}\hline \#>ln -s /etc/apache2/mods-available/suphp.conf /etc/apache2/mods-enabled/suphp.conf\\ \#>ln -s /etc/apache2/mods-available/suphp.load /etc/apache2/mods-enabled/suphp.load\\ \hline \end{tabular} \vspace{0.5cm} \noindent This will enable the module in apache2 and we will be able to use it after restarting the server with: \ \\ \begin{tabular}{|l|}\hline \#>/etc/init.d/apache2 restart\\ \hline \end{tabular} \vspace{0.5cm} \noindent The configuration of the secure site with suphp included would be like this: \\ \\ \begin{tabular}{|l|}\hline \noindent NameVirtual *:443\\ \\ \verb| |ServerName gosa.chaosdimension.org\\ \\ \verb| |DocumentRoot /usr/share/gosa/html\\ \verb| |alias /gosa /usr/share/gosa/html\\ \verb| |CustomLog /var/log/apache/gosa.log combined\\ \verb| |ErrorLog /var/log/apache/gosa.log\\ \\ \verb| |suPHP\_Engine on\\ \\ \verb| |SSLEngine On\\ \verb| |SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ \verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ \verb| |SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ \verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ \verb| |SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ \verb| |SSLCACertificatePath /etc/apache2/ssl/\\ \verb| |SSLLogLevel error\\ \verb| |SSLLog /var/log/apache2/ssl-gosa.log\\ \\ \verb| |\\ \verb| |\verb| |SSLVerifyClient require\\ \verb| |\verb| |SSLVerifyDepth 1\\ \verb| |\\ \\ \hline \end{tabular} \vspace{0.5cm} \noindent We must decide which user we are going to use, in this case I am going to create one called "gosa", that will be is used for suphp:\\ \\ \begin{tabular}{|l|}\hline \verb| |\#>useradd -d /usr/share/gosa/html gosa\\ \verb| |\#>passwd -l gosa\\ \verb| |\#>cd /usr/share/gosa\\ \verb| |\#>find /usr/share/gosa -name "*.php" -exec chown gosa {} ";"\\ \verb| |\#>find /usr/share/gosa -name "*.php" -exec chmod 600 {} ";"\\ \hline \end{tabular} \vspace{0.5cm} \newpage \section{PHP4 Configuration} The configuration for mod\_php will be in the path that we had configured in the compilation of php4. In our case it is/etc/php4/apache2. The configuration file we always be named php.ini and we will enable the modules. A basic configuration will be like this:\\ \\ \begin{center} \begin{longtable}{|l|} \caption{PHP4 Configuration}\\ \hline \multicolumn{1}{|c|}{\textbf{PHP4 Configuration}}\\ \hline \endfirsthead \hline \endhead \hline \multicolumn{1}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{1}{|c|}{\textbf{End}}\\ \hline \endlastfoot ; Engine \\ \verb| |engine = On ; Activates PHP\\ \verb| |short\_open\_tag = On ; allows to use \\ \verb| |precision = 14 ; Number of significant digits shown in numbers in floating comma\\ \verb| |output\_buffering = Off ; Only will be allowed send headers before send the content.\\ \verb| |implicit\_flush = Off ; We did not force to php to that cleans the exit buffer after each block.\\ \\ ; Safe Mode \\ \verb| |\label{sm} safe\_mode = Off ; We do not want the safe way\\ \verb| |\label{smed} safe\_mode\_exec\_dir = ; Directory where PHP is executed\\ \verb| |\label{smid} safe\_mode\_include\_dir = Directory where PHP will search PHP libraries\\ \verb| |\label{smaev} safe\_mode\_allowed\_env\_vars = PHP\_ ; Only is allowed to the users\\ \verb| |\verb| |\verb| |;to create system variables that begin with PHP\_\\ \verb| |\label{smpev} safe\_mode\_protected\_env\_vars = LD\_LIBRARY\_PATH ; List of system variables that\\ \verb| |\verb| |\verb| |; can not be changed by security reasons.\\ \verb| |\label{df} disable\_functions = ; Functions that will be disabled for security reasons\\ \verb| |\label{auf} allow\_url\_fopen = Yes ; We allowed that they open to archives from PHP\\ \verb| |\label{ob} open\_basedir = ;\\ \ \ ; Colors for the way of colored syntax. \ \ \verb| |highlight.string = \#DD0000\\ \verb| |highlight.comment = \#FF8000\\ \verb| |highlight.keyword = \#007700\\ \verb| |highlight.bg = \#FFFFFF\\ \verb| |highlight.default = \#0000BB\\ \verb| |highlight.html = \#000000\\ \\ ; Misc\\ \verb| |\label{ep}expose\_php = On ; It indicates in the message of the Web server if it is installed or no.\\ \\ ; Resource Limits ;\\ \verb| |max\_execution\_time = 30 ; Maximum time of execution of script.\\ \verb| |memory\_limit = 16M ; Maximun memory allowed that can consume the script.\\ \\ ; Error handling and logging ;\\ \verb| |error\_reporting = E\_ALL; We indicated that shows all the errors and warnings.\\ \verb| |display\_errors = Off ; Does not print in screen.\\ \verb| |display\_startup\_errors = Off ; That does not show the errors of PHP starting.\\ \verb| |log\_errors = On ; That sends the errors to a file.\\ \verb| |track\_errors = On ; That \$php\_errormsg keeps the last Error / Warning (boolean)\\ \verb| |error\_log = /var/log/php/php4.log ; File that will keep the errors\\ \verb| |warn\_plus\_overloading = Off ; We did not warn if operator + is used with strings\\ \\ ; Data Handling ;\\ \verb| |variables\_order = "EGPCS" ; This directive describes the order in which\\ \verb| |; will be registered the PHP variables (Being G=GET, P=POST, C=Cookie,\\ \verb| |; E = System, S = Own of PHP, all is indicated like EGPCS) \\ \verb| |\label{rg} register\_globals = Off ; We do not want that the EGPCS are registered like globals.\\ \verb| |register\_argc\_argv = Off ; We did not declare ARGV and ARGC for its use in scripts.\\ \verb| |post\_max\_size = 8M ; Maximum size of sending POST that will accept PHP.\\ \\ ; Magic quotes\\ \verb| |\label{mqq}magic\_quotes\_gpc = On ; Quotes added fro GPC(GET/POST/Cookie data)\\ \verb| |magic\_quotes\_runtime= Off ; Quotes added for system generated data, \\ \verb| |;for example from SQL, exec(), etc.\\ \verb| |magic\_quotes\_sybase = Off ; Use Sybase style added quotes.\\ \verb| ;(escape ' with '' instead of \')|\\ \\ ; PHP default type of file and default codification.\\ \verb| |default\_mimetype = "text/html"\\ \verb| |default\_charset = "iso-8859-1"\\ \\ ; Routes and directories ;\\ \verb| |\label{ip} include\_path = . ;\\ \verb| |doc\_root = ; Root of the php pages, better is to leave in blank.\\ \verb| |user\_dir = ; Where php executes scripts,better is to leave in blank.\\ \verb| |;extension\_dir = /usr/lib/php4/apache ; Where the modules are?\\ \verb| |enable\_dl = Off ; Allow or No the dymanic load of modules with the dl() function.\\ \\ ; Upload files to the server;\\ \verb| |file\_uploads = On ; Allow upload files to the server.\\ \verb| |upload\_max\_filesize = 2M ; Maximum size of the files we are going to upload.\\ \\ ; Dynamic Extensions ;\\ \verb| |extension=gd.so ; Graphics\\ \verb| |extension=mysql.so ; Mysql\\ \verb| |extension=ldap.so ; Ldap\\ \verb| |extension=mhash.so ; Mhash\\ \verb| |extension=imap.so ; Imap\\ \verb| |extension=kadm5.so ; Kerberos\\ \verb| |extension=cups.so ; Cupsys\\ \\ ; System Log \\ \verb|[Syslog]|\\ \verb| |define\_syslog\_variables = Off ; We disabled the definition of syslog variables.\\ \\ ; mail functions\\ \verb|[mail function]|\\ \verb| |;sendmail\_path = ;In unix system, where is located sendmail (is 'sendmail -t -i' by default)\\ \\ ; debug\\ \verb|[Debugger]|\\ \verb| |debugger.host = localhost ; Where is the debugger.\\ \verb| |debugger.port = 7869 ; The port it is listening.\\ \verb| |debugger.enabled = False ; We suppose there is not a debugger.\\ \\ ; SQL Options\\ \verb|[SQL]|\\ \verb| |sql.safe\_mode = Off ; SQL safe mode, we will disabled it.\\ \\ ; Mysql Options\\ \verb|[MySQL]|\\ \verb| |mysql.allow\_persistent = Off ; We will disable the persistent links for security reasons.\\ \verb| |mysql.max\_persistent = -1 ; Number of persistent connections, is not used when is disabled.\\ \verb| |mysql.max\_links = -1 ; Maximum number of connections, -1 is without limits.\\ \verb| |mysql.default\_port = 3306; Default port of mysql.\\ \verb| |mysql.default\_socket = ; Socket name that will be used for local mysql connections.\\ \verb| |;If is void, will be use the default compilation configuration of PHP.\\ \verb| |mysql.default\_host = ; No default host configured.\\ \verb| |mysql.default\_user = ; No default user configured.\\ \verb| |mysql.default\_password = ; No default password configured.\\ \\ ; session control\\ \verb|[Session]|\\ \verb| |session.save\_handler = files ; We saved the session information in files.\\ \verb| |\label{ss} session.save\_path = /var/lib/php4 ; Directory where is going to be saved the session files.\\ \verb| |session.use\_cookies = 1 ; We will use cookies for the session tracking.\\ \verb| |session.name = PHPSESSID ; Name of the session that will be used in the name of the cookie.\\ \verb| |session.auto\_start = 0 ; We did not initiate session automatically.\\ \verb| |session.cookie\_lifetime = 0 ; Time of life of a session cookie or 0 if we wait him to closes the navigator.\\ \verb| |session.cookie\_path = / ; The path for which the cookie is valid.\\ \verb| |session.cookie\_domain = ; The domain for which the cookie is valid.\\ \verb| |session.serialize\_handler = php ; Used manipulator to serialize the data.\\ \verb| |session.gc\_probability = 1 ; Probability in percentage that the garbage collector activates in each session.\\ \verb| |session.gc\_maxlifetime = 1440 ; After this time in seconds, the saved information\\ \verb| |; will be look like garbage for the garbage collector.\\ \verb| |session.referer\_check = ; Verifies HTTP Referer to invalidate externals URLs containing ids\\ \verb| |session.entropy\_length = 0 ; Number of bytes to be readed of the entropy file.\\ \verb| |session.entropy\_file = ; The file that will generate the entropy.\\ \verb| |session.cache\_limiter = nocache ; Without session cache.\\ \verb| |session.cache\_expire = 180 ; document expiration time.\\ \verb| |session.use\_trans\_sid = 0 ; To use translate sid if is enabled in compilation time.\\ \\ \end{longtable} \end{center} \subsection{Security} PHP is a powerful scripting language, it allows its users to have enough control over the system and to malicious attackers too many options to reach its objective. An system administrator does not have to suppose that a system is completely safe with only having installed security updates, a system that shows code to the outside is not safe, although the result is HTML, it is exposed to attacks of very diverse forms and failures of security not even know. Limit to the maximum the access that allows php is then a necessity. \subsection{Configuring safe php} PHP has a mode \htmladdnormallink{safe-mode}{http://www.php.net/manual/en/features.safe-mode.php} that allows a greater security, a recommended configuration for Safe mode is: \begin{tabular}{|l|}\hline \\ \verb| |\ref{mqq} magic\_quotes\_qpc = On\\ \\ \verb| |\ref{auf} allow\_url\_fopen = No\\ \\ \verb| |\ref{rg} register\_globals = Off\\ \\ \verb| |\ref{sm} safe\_mode = On\\ \\ \verb| |\ref{smid} safe\_mode\_include\_dir = "/usr/share/gosa:/var/spool/gosa"\\ \\ \verb| |\ref{smed} safe\_mode\_exec\_dir = "/usr/lib/gosa"\\ \\ \verb| |\ref{smaev} safe\_mode\_allowed\_env\_vars = PHP\_,LANG\\ \\ \verb| |\ref{ob} open\_basedir = "/etc/gosa:/var/spool/gosa:/var/cache/gosa:/usr/share/gosa:/tmp"\\ \\ \verb| |\ref{ip} include\_path = ".:/usr/share/php:/usr/share/gosa:/var/spool/gosa:/usr/share/gosa/safe\_bin"\\ \\ \verb| |\ref{df} disable\_functions = system, shell\_exec, passthru, phpinfo, show\_source\\ \\ \hline \end{tabular} In the case we are going to use SuPHP, we must give the following permissions to the directory /var/lib/php4:\\ \begin{tabular}{|l|}\hline \#>chmod 1777 /var/lib/php4\\ \hline \end{tabular} Since each user who executes PHP kept the session with that user. \section{Necessary PHP Modules} In this section are explained the steps to be able to compile and to use the necessary or important modules for GOsa, is recommended to install all the modules, even those that are not necessary. \subsection{ldap.so} NECCESARY MODULE \indent This module does not need any special configuration to work. Only knows a problem: PHP+Apache with cannot be connected with a LDAP server who requests valid Certificate. The communication will be safe, since SSL can be used, but will not be guaranteed. \subsection{mysql.so} OPTIONAL MODULE \indent This module does not need any special configuration to work. \indent Necessary to save the imap - sieve plugin configuration. \subsection{imap.so} OPTIONAL MODULE \indent The installed module when compiling PHP work, but it will have an important deficiency, the function getacl that gives control on the folders, so we will need a patch and steps to compile the module for its use in GOsa. We download the patch from \htmladdnormallink{php4-imap-getacl.patch}{ftp://ftp.gonicus.de/gosa/contrib/php4-imap-getacl.patch} and we put it in/usr/src, as we have the sources of PHP in /usr/src, we executed the following command: \begin{tabular}{|l|}\hline \#>cd /usr/src/php4.3-XXX/extensions/imap\\ \#>make clear\\ \#>patch -p1 phpize\\ \#>./configure\\ \#>make\\ \#>make install\\ \hline \end{tabular} This make and install the module correctly. \subsection{gd.so} OPTIONAL MODULE \indent This module does not need any special configuration to work. \indent The module is used for the handling of graphs, also used by the system of smarty templates. \subsection{cups} OPTIONAL MODULE \indent To use the Cups module for the selection of the printer in Posix, we must download the cups sources from \htmladdnormallink{http://www.cups.org/software.php}{http://www.cups.org/software.php} and decompress en /usr/src, then we executing the next commands: \\ \noindent \begin{tabular}{|l|}\hline \#cd /usr/src/cups-1.1.XX/scripting/php\\ \#phpize\\ \#./configure\\ \#make\\ \#make install\\ \#echo \verb|"extension=cups.so" >>| /etc/php4/apache2/php.init\\ \#/etc/init.d/apache2 reload\\ \hline \end{tabular} \subsection{krb} OPTIONAL MODULE \indent This module need to have the MIT Kerberos sources installed, because it can not be compiled with the Heimdal Kerberos sources. \indent The module will connect with the Kerberos servers to update the keys of the users. Will download from \htmladdnormallink{PECL}{http://pecl.php.net/kadm5}, and descompress in /usr/src, we must have the MIT Kerberos sources also, descompress in /usr/src, with it will execute this: (changing X.X for the actual version of the programs):\\ \\ \noindent \begin{tabular}{|l|}\hline \#cd /usr/src/kadm5-0.X.X/scripting/php\\ \#cp config.m4 config.m4.2\\ \#sed \verb|s/krb5-1\.2\.4\/src\/include/krb5-1\.X\.X\/src\/lib/| config.m4.2 >config.m4\\ \#rm -f config.m4.2\\ \#phpize\\ \#./configure\\ \#make\\ \#make install\\ \#echo \verb|"extension=kadm5.so" >>| /etc/php4/apache2/php.ini\\ \#/etc/init.d/apache2 reload\\ \hline \end{tabular} gosa-core-2.7.4/doc/admin/en/referencias_gosa.bib0000644000175000017500000000547010234261424020257 0ustar mikemike@Manual{x500, title = {Understanding X.500 - The Directory}, key = {x500}, author = { D W Chadwick}, } @TechReport{2251, author = {Network Working Group}, title = {Request for Comments: 2251. Lightweight Directory Access Protocol (v3)}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2251.txt}, } @TechReport{2252, author = {Network Working Group}, title = {Request for Comments: 2252. Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2252.txt}, } @TechReport{2253, author = {Network Working Group}, title = {Request for Comments: 2253. Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2253.txt}, } @TechReport{2254, author = {Network Working Group}, title = {Request for Comments: 2254. The String Representation of LDAP Search Filters}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2254.txt}, } @TechReport{2255, author = {Network Working Group}, title = {Request for Comments: 2255. The LDAP URL Format}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2255.txt}, } @TechReport{2256, author = {Network Working Group}, title = {Request for Comments: 2256. A Summary of the X.500(96) User Schema for use with LDAPv3}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2256.txt}, } @TechReport{3377, author = {Network Working Group}, title = {Request for Comments: 3377. Lightweight Directory Access Protocol (v3): Technical Specification}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc3377.txt}, } @TechReport{llh, author = {Luiz Ernesto Pinheiro Malre}, title = {LDAP Linux HOWTO}, institution = {}, year = {}, address = {http://www.tldp.org/HOWTO/LDAP-HOWTO/index.html}, } @TechReport{ul, author = {metaconsultancy}, title = {Using OpenLDAP}, institution = {}, year = {}, address = {http://www.metaconsultancy.com/whitepapers/ldap.htm}, } @TechReport{oag, author = {The OpenLDAP Project}, title = {OpenLDAP 2.2 Administrator's Guide}, institution = {}, year = {}, address = {http://www.openldap.org/doc/admin22/index.html}, } @TechReport{lscp, author = {Sergio Gonzlez Gonzlez}, title = {Integracin de redes con OpenLDAP, Samba, CUPS y PyKota}, institution = {}, year = {}, address = {http://es.tldp.org/Tutoriales/doc-openldap-samba-cups-python/html/ldap+samba+cups+pykota.html}, } @TechReport{ssldoc, author = {OpenSSL Project}, title = {OpenSSL Documents}, institution = {}, year = {}, address = {http://www.openssl.org/docs/}, } @TechReport{2616, author = {Network Working Group}, title = {Request for Comments: 2616. Hypertext Transfer Protocol -- HTTP/1.1}, institution = {}, year = {}, address = {http://www.ietf.org/rfc/rfc2616.txt}, } gosa-core-2.7.4/doc/admin/en/manual_gosa_en_ldap.tex0000644000175000017500000011571710234261424021002 0ustar mikemike\chapter{openLDAP} \section{Introduction,What is LDAP?} \subsection{Directory Services, X.500} A directory is a search information specialised database based on attributes. X.500|ISO 9594\cite{x500} is a standard of ITU-S(International Telecommunication Union - Telecommunication Standardisation Burean), previously known like CCITT, to solve the problem of directories. Based on the works made with X.400 (a directory for electronic mail) and the works of ISO (International Standards Organisation) and ECMA (European Computer Manufacturers Association).\\ The X.501|ISO 9594 part 2. define the models, as the information must be organized, the model of user information, the model of administrative information and the directory service, which defines as the information must be distributed between several systems.\\ In X.509|ISO 9594 part 8. the standard of authentication and security used for SSL.\\ X.525|ISO 9594 part 9. indicates as the replication must be between systems.\\ In X.519|ISO 9594 part 5. the communication protocols are defined, among them the one that have greater importance to us that is DAP - the protocol of access to directories - it defines that operations can be done with the connection: bind, unbind, the objects (entry) and its operation: add, eliminate, modify, search, list, compare, etc.\\ DAP is a protocol to complex to make servers and clients usable for Internet, then a comfortable protocol must be created to handle these directories: LDAP.\\ LDAP (Lightweight Directory Access Protocol) is a protocol thought for update and search of Internet (TCP/IP) oriented directories. \\ The last LDAP version is 3 and it is covered by the RFCs: 2251\cite{2251}, 2252\cite{2252}, 2253\cite{2253}, 2254\cite{2254}, 2255\cite{2255}, 2256\cite{2256} y 3377\cite{3377}.\\ \newpage \subsection{Basic Concepts of LDAP} \begin{itemize} \item[]Entry\\ An Entry is a collection of attributes identified by its DN (distinguished name). A DN is unique in all the tree and therefore it identifies clearly the entrance to which refers. As example: CN=Alex O=CHAOSDIMENSION C=ES must identify to the object of common name \'Alex\' that is in organization \'CHAOSDIMENSION\' and country is \'ES\' (Spain). A RDN(names distinguished relative) is a part of the DN, in a way that concatenating the RDNs they give as result the DN. Of the previous example CN=Alex is a RDN. \item[]Object Class\\ A Object Class is a special attribute (ObjectClass) that defines attributes that are required and allowed in an entry. The values of the Objects Classes are defined in the schema. All the entrances must have a ObjectClass attribute. It isn\'t allowed to add attributes to the entries that aren\'t allowed by definitions of the Objects Classes of the entry. \item[]Attrib\\ An Attribute is a type with one or more values associated. It is identified by a OID (object identifier). The attribute type indicates if can have more of a value of this attribute in an entry, the values that can have and how they can be searched. \item[]Schema\\ A Schema is a collection of definitions of types of attributes, Objects Classes and information that the server use to do the searches, to introduce values in an attribute, and to allow operations to add or to modify. To create a search, we must consider several important parameters: \item[]Filter\\ \begin{list}{}{} \item[Base Object] Un DN que sera a partir del cual realizaremos la busqueda. \item[Scope] It can have several values. \begin{list}{}{} \item[base] it will only search in the level base. \item[sub] it will make a recursive search by all the tree from the level base \item[one] search a level below the level base. \end{list} \item[Size Limit] It restricts the number of entries given back as result of a search. \item[Time Limit] It restricts the execution maximum time of a search. \item[Filter] A chain that defines the conditions that must be completed to find an entry. \end{list} The filters can be concatenated with ' and', ' or' and ' not' to create more complex filters. For example a filter with base O=CHAOSDIMENSION, C=ES, scope base and filter (CN=Alex) would find the entry CN=Alex , O=CHAOSDIMENSION, C=ES. \end{itemize} \newpage \subsection{LDAP Servers} LDAP is supported by numerous servers being the knownest Directory Active of Microsoft, eDirectory of Novell, Oracle Internet Directory of Oracle, iPlanet Directory Server of SUN and finally but not less important openLDAP. This manual teach about the use and installation of openLDAP, since this supported by practically all the distributions of linux and their license fulfills the openSource standard. For more information about LDAP see LDAP Linux HowTo\cite{llh}, Using LDAP\cite{ul}, openLDAP administrator Guide\cite{oag} and in Spanish the LDAP relative part of the magnify manual Ldap+Samba+Cups+Pykota\cite{lscp}. \section{Installation} Most distributions have packages of openLDAP. The use apt-get in debian, Urpmi in Mandrake, up2date in redhat or Yast2 in Suse is outside this manual. This manual explain the necessary work for the construction and configuration from the sources. \subsection{Downloading openLDAP} \label{down_ldap} Downloading openLDAP Although they are not really necessary, there is several packages that have to be installed before openLDAP because we need them. The first of them is \textbf{openSSL}, it exists in all the distributions and has documentation in is webpage\cite{ssldoc}. The sources can be downloaded from \htmladdnormallink{http://www.openssl.org/source/}{http://www.openssl.org/source/} The second is \textbf{Kerberos Services v5}, which have two implementations, one is \htmladdnormallink{MIT Kerberos V}{http://web.mit.edu/kerberos/www} and the other is \htmladdnormallink{Heimdal Kerberos}{http://www.pdc.kth.se/heimdal}, both have good documentation and are widely supported by all the distributions. It could also be interesting to have the \textbf{Cyrus SASL} libraries installed (Simple Cyrus's Authentication and Security Layer) that could be obtained from \htmladdnormallink{http://asg.web.cmu.edu/sasl/}{http://asg.web.cmu.edu/sasl/sasl-library.html}, Cyrus SASL makes use of openSSL and Kerberos/GSSAPI for authentication. At last we will need a database for openLDAP, with respect to this manual this will be given through the \htmladdnormallink{\textbf{Sleepycat Software Berkeley DB}}{http://www.sleepycat.com/} libraries, we will need it if we want to use LDBM (Berkeley DB version 3) or BDB (Berkeley DB version 4). Also they exist in the majority of the distributions. Once obtained and compiled the necessary libraries we download the \htmladdnormallink{sources of openLDAP}{http://www.openldap.org/software/download/} in /usr/src (for example) and decompressed in that directory (for example with tar -zxvf openldap-2.X.XX.tgz). \newpage \subsection{Install Options} The following options are for openLDAP version 2.2.xx that can differ from versions 2.0.XX and 2.1.XX. We executed \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/en/configure.sh} with the following options: \begin{itemize} \item[](Directories)\\ \begin{tabular}{|ll|}\hline --prefix=/usr & \\ --libexecdir='\${prefix}/lib' & \\ --sysconfdir=/etc & \\ --localstatedir=/var/run & \\ --mandir='\${prefix}/share/man' & \\ --with-subdir=ldap & \\ \hline \end{tabular} \item[](Basic Options)\\ \begin{tabular}{|ll|}\hline --enable-syslog & \\ --enable-proctitle & \\ --enable-ipv6 & $\rightarrow$Sockets IPv6\\ --enable-local & $\rightarrow$Sockets Unix\\ --with-cyrus-sasl & $\rightarrow$Supported authentication Cyrus SASL\\ --with-threads & $\rightarrow$Support thread of execution\\ --with-tls & $\rightarrow$Support TLS/SSL\\ --enable-dynamic & $\rightarrow$Dynamic compilation\\ \hline \end{tabular} \item[](Slapd Options)\\ \begin{tabular}{|ll|}\hline --enable-slapd & $\rightarrow$To compile the server in addition to the libraries\\ --enable-cleartext & $\rightarrow$It allows send clear text passwords\\ --enable-crypt & $\rightarrow$Send crypther passwords with DES.\\ --enable-spasswd & $\rightarrow$Verification of passwords through SASL\\ --enable-modules & $\rightarrow$Support of dynamic modules\\ --enable-aci & $\rightarrow$Support of ACIs by objects (Experimental)\\ --enable-rewrite & $\rightarrow$Rewriting of DN in recovery of LDAP\\ --enable-rlookups & $\rightarrow$Inverse search of the name of the client workstation\\ --enable-slp & $\rightarrow$SLPv2 support\\ --enable-wrappers & $\rightarrow$Support TCP wrappers\\ \hline \end{tabular} \item[](Support)\\ \begin{tabular}{|ll|}\hline --enable-bdb=yes & $\rightarrow$Berkeley version 4 support\\ --enable-dnssrv=mod & \\ --enable-ldap=mod & $\rightarrow$It supports another LDAP server as database\\ --enable-ldbm=mod & \\ --with-ldbm-api=berkeley & $\rightarrow$Berkeley version 3 support\\ --enable-meta=mod & $\rightarrow$Metadirectory support\\ --enable-monitor=mod & \\ --enable-null=mod & \\ --enable-passwd=mod & \\ --enable-perl=mod & $\rightarrow$Perl scripts support\\ --enable-shell=mod & $\rightarrow$Shell scripts support\\ --enable-sql=mod & $\rightarrow$Relational database support\\ \hline \end{tabular} \end{itemize} Then do:\\ \#make \&\& make install \newpage \section{Configuration} \subsection{Basic} \noindent The configuration of the LDAP server slapd of openLDAP is in /etc/ldap/slapd.conf \noindent A \htmladdnormallink{basic configuration}{http://warping.sourceforge.net/gosa/contrib/en/basic_slapd.conf} would be like this: \begin{center} \begin{longtable}{|ll|}\hline \caption{Basic LDAP COnfiguration}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Basic LDAP COnfiguration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Basic LDAP COnfiguration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot \# Schema and objectClass definitions, basic configuration & \\ include /etc/ldap/schema/core.schema & \\ include /etc/ldap/schema/cosine.schema & \\ include /etc/ldap/schema/inetorgperson.schema & \\ include /etc/ldap/schema/openldap.schema & \\ include /etc/ldap/schema/nis.schema & \\ include /etc/ldap/schema/misc.schema & \\ & \\ \# Force entries to match schemas for their ObjectClasses & \\ schemacheck on & \\ & \\ \# Password hash, default crypt type & \\ \# Puede ser: \{SHA\}, \{MD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\ password-hash \{CRYPT\} & \\ & \\ \# Default search base & \\ defaultsearchbase "dc=CHAOSDIMENSION,dc=ORG" & \\ & \\ \#Used by init scripts to stop and to start the server. & \\ pidfile /var/run/slapd.pid & \\ & \\ \# Arguments passed to the server. & \\ argsfile /var/run/slapd.args & \\ & \\ \# Level of log information & \\ loglevel 1024 & \\ & \\ \# Where and which modules load & \\ modulepath /usr/lib/ldap & \\ moduleload back\_bdb \# Berkeley BD version 4 & \\ & \\ \#definitions of the database & \\ database bdb & \\ & \\ \# The base of the directory & \\ suffix "dc=CHAOSDIMENSION,dc=ORG" & \\ & \\ \# Here is the definition of the administrator of the directory and his key & \\ \# In this example is " tester" & \\ \# The crypt key can be extract with & \\ \# makepasswd --crypt --clearfrom file\_with\_user\_name & \\ & \\ rootdn \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| & \\ rootpw \{crypt\}OuorOLd3VqvC2 & \\ & \\ \# here are the attributes that we indexed to make searchs & \\ index default sub & \\ index uid,mail eq & \\ index cn,sn,givenName,ou pres,eq,sub & \\ index objectClass pres,eq & \\ & \\ \# Directory where the database is located & \\ directory " /var/lib/ldap" & \\ & \\ \# We say if wished to keep the date of the last modification & \\ lastmod off & \\ & \\ \#Administrator access & \\ access to * & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\ by * read & \\ \end{longtable} \end{center} \newpage \subsection{GOsa Specifications} GOsa adds several schemas for the control of certain services and characteristics of users. \\ The necessary schemas for GOsa are in the package, in the contrib section, they need to be copied in /etc/ldap/schema. \\ A \htmladdnormallink{recommended configuration}{http://warping.sourceforge.net/gosa/contrib/en/gosa_slapd.conf} of /etc/ldap/slapd.conf is the following one: \\ \begin{center} \begin{longtable}{|ll|}\hline \caption{LDAP GOsa Configuration}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{LDAP GOsa Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{LDAP GOsa Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot \# Schema and objectClass definitions, basic configuration & \\ include /etc/ldap/schema/core.schema & \\ include /etc/ldap/schema/cosine.schema & \\ include /etc/ldap/schema/inetorgperson.schema & \\ include /etc/ldap/schema/openldap.schema & \\ include /etc/ldap/schema/nis.schema & \\ include /etc/ldap/schema/misc.schema & \\ & \\ \# These schemes would be present in GOsa. In the case of samba3 & \\ \# we must change samba.schema and gosa.schema by samba3.schema & \\ \# and gosa+samba3.schema & \\ include /etc/ldap/schema/samba3.schema & \\ include /etc/ldap/schema/pureftpd.schema & \\ include /etc/ldap/schema/gohard.schema & \\ include /etc/ldap/schema/gofon.schema & \\ include /etc/ldap/schema/goto.schema & \\ include /etc/ldap/schema/gosa+samba3.schema & \\ include /etc/ldap/schema/gofax.schema & \\ include /etc/ldap/schema/goserver.schema & \\ & \\ \# Force entries to match schemas for their ObjectClasses & \\ schemacheck on & \\ & \\ \# Password hash, type of key encryption & \\ \# Can be: \{SHA\}, \{SMD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\ password-hash \{CRYPT\} & \\ & \\ \# Default search base. & \\ defaultsearchbase " dc=CHAOSDIMENSION,dc=ORG" & \\ & \\ \# Used by init scripts to stop and to start the server. & \\ pidfile /var/run/slapd.pid & \\ & \\ \# Arguments passed to the server. & \\ argsfile /var/run/slapd.args & \\ & \\ \# Log level information & \\ loglevel 1024 & \\ & \\ \# Where and which modules to load. & \\ modulepath /usr/lib/ldap & \\ moduleload back\_bdb \# Berkeley BD version 4 & \\ & \\ \# Some performance parameters & \\ threads 64 & \\ concurrency 32 & \\ conn\_max\_pending 100 & \\ conn\_max\_pending\_auth 250 & \\ reverse-lookup off & \\ sizelimit 1000 & \\ timelimit 30 & \\ idletimeout 30 & \\ & \\ \# specific limitations & \\ limits anonymous size.soft=500 time.soft=5 & \\ & \\ \# Definitions of the database & \\ database bdb & \\ cachesize 5000 & \\ checkpoint 512 720 & \\ mode 0600 & \\ & \\ \# The diretory base. & \\ suffix " dc=CHAOSDIMENSION,dc=ORG" & \\ & \\ \# Here is the definition of the administrator of the directory and his key & \\ \# In this example is " tester" & \\ \# The crypt key can be extract with & \\ \# makepasswd --crypt --clearfrom file\_with\_user\_name & \\ & \\ rootdn \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| & \\ rootpw \{crypt\}OuorOLd3VqvC2 & \\ & \\ \# That attributes we indexed to make search & \\ index default sub & \\ index uid,mail eq & \\ index gosaMailAlternateAddress,gosaMailForwardingAddress eq & \\ index cn,sn,givenName,ou pres,eq,sub & \\ index objectClass pres,eq & \\ index uidNumber,gidNumber,memberuid eq & \\ index gosaSubtreeACL,gosaObject,gosaUser pres,eq & \\ & \\ \# Indexing for Samba 3 index sambaSID eq & \\ index sambaPrimaryGroupSID eq & \\ index sambaDomainName eq & \\ & \\ \# Who can change the user keys & \\ \# ,only by the own user if is authenticate & \\ \# or by the administrator & \\ access to attr=sambaPwdLastSet,sambaPwdMustChange,sambaPwdCanChange & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by anonymous auth & \\ by self write & \\ by * none & \\ access to attr=userPassword,shadowMax,shadowExpire & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by anonymous auth & \\ by self write & \\ by * none & \\ & \\ \# Acess deny to imap keys, fax or kerberos saved in & \\ \# LDAP & \\ access to attr=goImapPassword & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by * none & \\ access to attr=goKrbPassword & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by * none & \\ access to attr=goFaxPassword & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by * none & \\ & \\ \# Permit that server write the LastUser attribute & \\ access to attr=gotoLastUser & \\ by * write & \\ & \\ \# The samba keys by defect only can be changed & \\ \# by the user if has been authenticate. & \\ access to attr=sambaLmPassword,sambaNtPassword & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ by anonymous auth & \\ by self write & \\ by * none & \\ & \\ \# Allow write access for terminal administrator & \\ access to dn=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG" & \\ by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ & \\ access to dn.subtree=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG" & \\ by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ & \\ \# Directory where is the database & \\ directory " /var/lib/ldap" & \\ & \\ \# Indicate if we wished to keep the modification last date & \\ lastmod off & \\ & \\ \# Administrator access & \\ access to * & \\ by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\ by * read & \\ \end{longtable} \end{center} \section{Utilization} \subsection{PAM/NSS Configuration} NSS (Network Security Service Libraries) NSS is a basic component of the system, is used for control of accounts POSIX, to be able to use LDAP for accounts POSIX (of the system), we will use NSS\_LDAP, that can be downloaded of \htmladdnormallink{http://www.padl.com/OSS/nss\_ldap.html}{http://www.padl.com/OSS/nss\_ldap.html} , we decompressed it in /usr/src and executed:\\ \noindent \#cd /usr/src/nss\_ldap\\ \noindent \#./configure \&\& make \&\& make install\\ The basic configuration of NSS are in /etc/nsswitch.conf and must be left like this for what we want. \begin{center} \begin{longtable}{|ll|}\hline \caption{NSSWITCH Configuration}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{NSSWITCH Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{NSSWITCH Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot passwd: files ldap & \# These are the lines that we changed so that ldap makes requests\\ group: files ldap & \#\\ shadow: files ldap & \#\\ & \\ hosts: files dns & \\ networks: files & \\ & \\ protocols: db files & \\ services: db files & \\ ethers: db files & \\ rpc: db files & \\ & \\ netgroup: nis & \\ \end{longtable} \end{center} \newpage The NSS-LDAP configuration is saved in /etc/nss-ldap.conf and a valid configuration for GOsa would be this: \begin{center} \begin{longtable}{|ll|}\hline \caption{NSS Configuration}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{NSS Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{NSS Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot host ip.servidor.ldap & \# Here we will put our LDAP server LDAP\\ base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Here is where are going to go the users and\\ & \# their passwords. OU means organizational\\ & \# unit and OU=people is the place where\\ & \# GOsa save the characteristics of the users\\ ldap\_version 3 & \# Supported Version of LDAP \\ & \# (the use of version 3 is recommended)\\ nss\_base\_passwd ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \# Where we search for POSIX characteristics\\ nss\_base\_shadow ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \# Where we search for the passwords\\ nss\_base\_group ou=groups,dc=CHAOSDIMENSION,DC=ORG?one & \# Where is the POSIX group characteristics\\ \end{longtable} \end{center} PAM (Pluggable Authentication Modules) is a package of dynamic libraries that allow to system administrators to choose in which way the applications authenticates the users. PAM is in all the distributions, save the configurations of each module in /etc/pam.d and have the dynamic libraries in /lib/security. We are going to concentrate on one of the PAM modules: pam\_ldap. This module will serve to us so that the applications that don't use LDAP and use the system base of authentication and control of sessions, indirectly accede LDAP for authentication. With PAM\_LDAP and the infrastructure of PAM we gain that POSIX users of the system, work through LDAP and they can be created with GOsa. PAM\_LDAP can be downloaded from \htmladdnormallink{http://www.padl.com/OSS/pam\_ldap.html}{http://www.padl.com/OSS/pam\_ldap.html}, we decompressed it is /usr/src and we executed the clasic: \\ \#./configure \&\& make \&\& make install\\ \\ The configuration of this module will be in /etc/pam\_ldap.conf, a basic working configuration will be like this: \begin{center} \begin{longtable}{|ll|}\hline \caption{PAM Configuration}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{PAM Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{PAM Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot host ip.servidor.ldap & \# Here we put where will be our LDAP server\\ base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Here is where are going to go the users and their passwords.\\ & \# OU means organizational unit\\ & \# and OU=people is the place where GOsa\\ & \# save the users characteristics\\ ldap\_version 3 & \# Supported Version of LDAP (very recommended version 3)\\ scope one & \# In gosa the users are at the same level, we did not need to descend.\\ rootbinddn cn=ldapadmin,dc=solaria,dc=es & \# Here is the LDAP administrator DN of the server,\\ & \# is necessary, since the server\\ & \# will give access to the encrypted passwords to the administrator.\\ pam\_password md5 & \# Indicate as password are encrypted.\\ \end{longtable} \end{center} In the file /etc/secret we will put the LDAP administrator password, this file, like the previous one only could be accessible by root. Now, in order to be able to use LDAP authentication with the services, we will have to configure three pam configuration files:\\ Control of accounts /etc/pam.d/common-account: \begin{center} \begin{longtable}{|ll|}\hline \caption{PAM common-account Configuration}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{PAM common-account Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{PAM common-account Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot account required pam\_unix.so & \# Always required\\ account sufficient pam\_ldap.so & \# The calls to ldap\\ \end{longtable} \end{center} Authentication control /etc/pam.d/common-auth: \begin{center} \begin{longtable}{|ll|}\hline \caption{PAM common-auth Configuration}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{PAM common-auth Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{PAM common-auth Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot auth sufficient pam\_unix.so & \# Authentication Standar\\ auth sufficient pam\_ldap.so try\_first\_pass & \# LDAP Authentication in the first attempt\\ auth required pam\_env.so & \\ auth required pam\_securetty.so & \\ auth required pam\_unix\_auth.so & \\ auth required pam\_warn.so & \\ auth required pam\_deny.so & \\ \end{longtable} \end{center} Session control /etc/pam.d/common-session: \begin{center} \begin{longtable}{|ll|}\hline \caption{PAM common-session Configuration}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{PAM common-session Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{PAM common-session Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot session required pam\_limits.so & \\ session required pam\_unix.so & \# Standar UNIX session\\ session optional pam\_ldap.so & \# LDAP based session\\ \end{longtable} \end{center} This configuration will be necessary to use POSIX and SAMBA at least. \newpage \subsection{Replication} If we have more that one domain we must have a distributed structure, that is more efficient against failures. A basic structure would be a master server with a complete LDAP tree and servers with LDAP subtrees that only have the part of the tree for the domain they control. This way GOsa controls the master server and the domain servers through a process called replication. The replication is made in the configuration of ldap, but it is not executed by the daemon slapd, but another one called slurp. Its configuration is made in the database that we want to replicate, like in the basic example we have only configured a database that will be added at the end of the configuration file /etc/ldap/slapd.conf: \begin{center} \begin{longtable}{|ll|}\hline \caption{Replica Configuration}\\ \hline \hline \multicolumn{2}{|c|}{\textbf{Replica Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{2}{|c|}{\textbf{Replica Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{2}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{2}{|c|}{\textbf{End}}\\ \hline \endlastfoot \# Replica configuration & \\ \#Used by init scripts to stop and to start the server. & \\ replica-pidfile /var/run/slurp.pid & \\ & \\ \# Arguments passed to the server. & \\ replica-argsfile /var/run/slapd.args & \\ & \\ \# Place where we recorded the log of replica, is used by slurpd & \\ replogfile /var/lib/ldap/replog & \\ \# The replicas & \\ \# Slave1 replica indication & \\ replica & \\ \#URI direction of slave1 & \\ uri=ldap://ip.server.slave1 & \\ \#That we are going to reply & \\ \# from the master server & \\ suffix=" dc=domain1,dc=CHAOSDIMENSION,dc=ORG" & \\ \#How we are going to authenticate & \\ bindmethod=simple & \\ \# reply DN of the slave1 & \\ binddn=\verb|"cn=esclavo1,ou=people,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| & \\ \#Password of slave1 reply DN & \\ credentials=" tester" & \\ \# Slave2 replica indication & \\ replica & \\ uri=ldap://ip.server.slave2 & \\ suffix=" dc=domain2,dc=CHAOSDIMENSION,dc=ORG" & \\ bindmethod=simple & \\ binddn=\verb|"cn=esclavo2,ou=people,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| & \\ credentials=" tester" & \\ \end{longtable} \end{center} By simplicity we suppose that both slaved servers are configured like the master, excepted the replica configuration of the master and the indications at the slaves of who is the master server. In the slaved servers we must add at the end of /etc/ldap/slapd.conf: In slave 1:\\ \begin{tabular}{|ll|}\hline \# Who can update the server & \\ updatedn \verb|"cn=slave1,dc=domain1,dc=CHAOSDIMENSION,dc=ORG"| & \\ \# From where & \\ updateref ldap://ip.server.master & \\ \#Access allow & \\ access to dn.subtree= " dc=domain1,dc=CHAOSDIMENSION,dc=ORG" & \\ by dn= \verb|"cn=slave1,dc=domain1,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ by * none & \\ \hline\end{tabular} \vspace{0.5cm} In slave 2:\\ \begin{tabular}{|ll|}\hline \# Who can update the server & \\ updatedn \verb|"cn=slave2,dc=domain2,dc=CHAOSDIMENSION,dc=ORG"| & \\ \#From where & \\ updateref ldap://ip.server.master & \\ \#Access allow & \\ access to dn.subtree= " dc=domain2,dc=CHAOSDIMENSION,dc=ORG" & \\ by dn= \verb|"cn=slave2,dc=domain2,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ by * none & \\ \hline\end{tabular} \vspace{0.5cm} Also we must create the replica users in the corresponding databases. That will be explained in the following point. \subsection{Data Load} In this point we will give the initial data of our necessary LDAP tree for GOsa. Also we will show how upload the data and what to do in the case of a unique servant or in a case where there are replicas. The load can be done of two ways, one is trought of slapadd and the other is trought of ldapadd.\\ In the first case the load is made against the database, this replication does not exist and then will not be update the data in LDAP server until is initiated again, \textbf{the load of data this way must be done with the server stopped}. In the second case, the load will be trought LDAP and it will update self and will be replicated in the pertinent way. For a load from zero of the database, we will have to do it from slapadd, with the daemon slapd stopped. The way slapadd must be used is: \\ \noindent \#slapadd -v -l fichero\_con\_datos.ldif\\ LDIF is the standard format to save data from LDAP. GOsa come with its own ldif of example, in following two points we will explain how it must be used for our necessities. \vspace{1cm} \subsubsection{Server Alone} This is the most basic case, here isn't replication and only we need a single tree. In our example we will suppose that our GOsa tree is in dc=CHAOSDIMENSION, dc=ORG.\\ We will load the data with a script, called \htmladdnormallink{load.sh}{http://warping.sourceforge.net/gosa/contrib/en/load.sh}, this simplified the steps to load. The parameters of script will be: DN of the base, IMAP Server adn Kerberos Realm. \begin{center} \begin{longtable}{|l|}\hline \caption{Load Data on Single Server Configuration}\\ \hline \hline \multicolumn{1}{|c|}{\textbf{Load Data on Single Server Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{1}{|c|}{\textbf{Load Data on Single Server Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{1}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{1}{|c|}{\textbf{End}}\\ \hline \endlastfoot \#!/bin/sh\\ \\ if [ \$\{\#@\} != 3 ]\\ then\\ \verb| |echo "The parameters DN base, IMAP Server and Kerberos server are needed"\\ \verb| |echo "For example: ./carga.sh dc=CHAOSDIMENSION,dc=ORG imap.solaria krb.solaria"\\ \verb| |exit\\ fi\\ \\ DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d\textbackslash, -f 1`\\ IMAP=\$2\\ KRB=\$3\\ \\ slapadd \verb|<<| EOF\\ dn: \$1\\ objectClass: dcObject\\ objectClass: organization\\ description: Base object\\ dc: \$DC\\ o: My own Organization\\ \\ dn: cn=terminal-admin,\$1\\ objectClass: person\\ cn: terminal-admin\\ sn: Upload user\\ description: GOto Upload Benutzer\\ userPassword:: e2tlcmJlcm9zfXRlcm1pbmFsYWRtaW5AR09OSUNVUy5MT0NBTAo=\\ \\ dn: ou=systems,\$1\\ objectClass: organizationalUnit\\ ou: systems\\ \\ dn: ou=terminals,ou=systems,\$1\\ objectClass: organizationalUnit\\ ou: terminals\\ \\ dn: ou=servers,ou=systems,\$1\\ objectClass: organizationalUnit\\ ou: servers\\ \\ dn: ou=people,\$1\\ objectClass: organizationalUnit\\ ou: people\\ \\ dn: ou=groups,\$1\\ objectClass: organizationalUnit\\ ou: groups\\ \\ dn: cn=default,ou=terminals,ou=systems,\$1\\ objectClass: gotoTerminal\\ cn: default\\ gotoMode: disabled\\ gotoXMethod: query\\ gotoRootPasswd: tyogUVSVZlEPs\\ gotoXResolution: 1024x768\\ gotoXColordepth: 16\\ gotoXKbModel: pc104\\ gotoXKbLayout: de\\ gotoXKbVariant: nodeadkeys\\ gotoSyslogServer: lts-1\\ gotoSwapServer: lts-1:/export/swap\\ gotoLpdServer: lts-1:/export/spool\\ gotoNtpServer: lts-1\\ gotoScannerClients: lts-1.\$DC.local\\ gotoFontPath: inet/lts-1:7110\\ gotoXdmcpServer: lts-1\\ gotoFilesystem: afs-1:/export/home /home nfs exec,dev,suid,rw,hard,nolock,fg,rsize=8192 1 1\\ \\ dn: cn=admin,ou=people,\$1\\ objectClass: person\\ objectClass: organizationalPerson\\ objectClass: inetOrgPerson\\ objectClass: gosaAccount\\ uid: admin\\ cn: admin\\ givenName: admin\\ sn: GOsa main administrator\\ sambaLMPassword: 10974C6EFC0AEE1917306D272A9441BB\\ sambaNTPassword: 38F3951141D0F71A039CFA9D1EC06378\\ userPassword:: dGVzdGVy\\ \\ dn: cn=administrators,ou=groups,\$1\\ objectClass: gosaObject\\ objectClass: posixGroup\\ objectClass: top\\ gosaSubtreeACL: :all\\ cn: administrators\\ gidNumber: 999\\ memberUid: admin\\ \\ dn: cn=lts-1,ou=servers,ou=systems,\$1\\ objectClass: goTerminalServer\\ objectClass: goServer\\ goXdmcpIsEnabled: true\\ macAddress: 00:B0:D0:F0:DE:1D\\ cn: lts-1\\ goFontPath: inet/lts-1:7110\\ \\ dn: cn=afs-1,ou=servers,ou=systems,\$1\\ objectClass: goNfsServer\\ objectClass: goNtpServer\\ objectClass: goLdapServer\\ objectClass: goSyslogServer\\ objectClass: goCupsServer\\ objectClass: goServer\\ macAddress: 00:B0:D0:F0:DE:1C\\ cn: afs-1\\ goExportEntry: /export/terminals 10.3.64.0/255.255.252.0(ro,async,no\_root\_squash)\\ goExportEntry: /export/spool 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ goExportEntry: /export/swap 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ goExportEntry: /export/home 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ goLdapBase: \$1\\ \\ dn: cn=vserver-02,ou=servers,ou=systems,\$1\\ objectClass: goImapServer\\ objectClass: goServer\\ macAddress: 00:B0:D0:F0:DE:1F\\ cn: vserver-02\\ goImapName: imap://\$IMAP\\ goImapConnect: {\$IMAP:143}\\ goImapAdmin: cyrus\\ goImapPassword: secret\\ goImapSieveServer: \$IMAP\\ goImapSievePort: 2000\\ \\ dn: cn=kerberos,ou=servers,ou=systems,\$1\\ objectClass: goKrbServer\\ objectClass: goServer\\ macAddress: 00:B0:D0:F0:DE:1E\\ cn: kerberos\\ goKrbRealm: \$KRB\\ goKrbAdmin: admin/admin\\ goKrbPassword: secret\\ \\ dn: cn=fax,ou=servers,ou=systems,\$1\\ objectClass: goFaxServer\\ objectClass: goServer\\ macAddress: 00:B0:D0:F0:DE:10\\ cn: fax\\ goFaxAdmin: fax\\ goFaxPassword: secret\\ \\ dn: ou=incoming,\$1\\ objectClass: organizationalUnit\\ ou: incoming\\ \\ EOF\\ \end{longtable} \end{center} \subsubsection{Master Server and two slaves} The data will be loaded with the same script of the previous section, in the master and in the slaves, with the following differences:\\ In the master "DC=CHAOSDIMENSION, dc=ORG" we will execute this script \htmladdnormallink{creating\_base.sh}{http://warping.sourceforge.net/gosa/contrib/en/creating\_base.sh} to create the base: \\ \begin{center} \begin{longtable}{|l|}\hline \caption{Create Base Configuration}\\ \hline \hline \multicolumn{1}{|c|}{\textbf{Create Base Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{1}{|c|}{\textbf{Create Base Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{1}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{1}{|c|}{\textbf{End}}\\ \hline \endlastfoot \#!/bin/sh\\ \\ if [ \$\{\#@\} != 1 ]\\ then\\ \verb| |echo "Is needed the parameter base DN of the master"\\ \verb| |echo "For example creating\_base.sh dc=CHAOSDIMENSION,dc=ORG"\\ \verb| |exit\\ fi\\ \\ DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d\textbackslash, -f 1`\\ \\ slapadd \verb|<<| EOF\\ dn: \$1\\ objectClass: dcObject\\ objectClass: organization\\ description: Base object\\ dc: \$DC\\ o: My own Base Organization\\ EOF\\ \end{longtable} \end{center} Also with the script of the previous section we will load the domains\\ "DC=domain1, DC=CHAOSDIMENSION, DC=ORG" and "DC=domain2, DC=CHAOSDIMENSION, DC=ORG". \\ In slave1 we will execute script with "DC=domain1, DC=CHAOSDIMENSION, DC=ORG" and in slave2 with "DC=domain2, DC=CHAOSDIMENSION, DC=ORG". In both cases both LDAP slave servers will be configured for their own DN.\\ At last we need to create the user for the replica, who could make it with the following script (\htmladdnormallink{user\_replica.sh}{http://warping.sourceforge.net/gosa/contrib/en/user\_replica.sh}) with the name of the user and the DN base: \\ \begin{center} \begin{longtable}{|l|}\hline \caption{Create replica user Configuration}\\ \hline \hline \multicolumn{1}{|c|}{\textbf{Create replica user Configuration}}\\ \hline \hline \endfirsthead \hline \hline \multicolumn{1}{|c|}{\textbf{Create replica user Configuration (continuation)}}\\ \hline \hline \endhead \hline \multicolumn{1}{|c|}{Continue $\ldots$}\\ \hline \endfoot \hline \multicolumn{1}{|c|}{\textbf{End}}\\ \hline \endlastfoot \#!/bin/sh\\ \\ if [ \$\{\#@\} != 2 ]\\ then\\ \verb| |echo "Are needed the parameters name of user and DN base for replica"\\ \verb| |echo "For example user\_replica.sh replicator dc=domain1,dc=CHAOSDIMENSION,dc=ORG"\\ \verb| |exit\\ fi\\ \\ KEY=`makepasswd --crypt --chars=7 \textbackslash\\ --string="abcdefghijklmnopqrstuvwxyz1234567890"`\\ PASS=`echo \$KEY|awk '\{ print \$1\}'`\\ CRYPT=`echo \$KEY|awk '\{ print \$2\}'`\\ echo "Creating user \$1 with password: \$PASS"\\ slapadd \verb|<<| EOF\\ dn: cn=\$1,ou=people,\$2\\ displayName: Debian User,,,\\ userPassword: \{crypt\} \$CRYPT\\ sambaLMPassword: \\ sambaNTPassword: \\ sn: \$1\\ givenName: \$1\\ cn: \$1\\ homeDirectory: /home/\$1\\ loginShell: /bin/false\\ uidNumber: 10000\\ gidNumber: 100\\ gecos: \$1\\ shadowMin: 0\\ shadowMax: 99999\\ shadowWarning: 7\\ shadowInactive: 0\\ shadowLastChange: 12438\\ gosaDefaultLanguage: en\_EN\\ uid: \$1\\ objectClass: posixAccount\\ objectClass: shadowAccount\\ objectClass: person\\ objectClass: organizationalPerson\\ objectClass: inetOrgPerson\\ objectClass: gosaAccount\\ objectClass: top\\ EOF\\ \end{longtable} \end{center} gosa-core-2.7.4/bin/0000755000175000017500000000000011752422552012614 5ustar mikemikegosa-core-2.7.4/bin/mkntpasswd0000755000175000017500000000031511032351726014727 0ustar mikemike#!/bin/sh if [ $# -ne 1 ]; then echo "Usage: mkntpwd " exit 1 fi # Render hash using perl perl -MCrypt::SmbHash -e "ntlmgen \"\$ARGV[0]\", \$lm, \$nt; print \"\${lm}:\${nt}\n\";" "$1" exit 0 gosa-core-2.7.4/bin/gosa-encrypt-passwords0000755000175000017500000000744311377734271017217 0ustar mikemike#!/usr/bin/php load("/etc/gosa/gosa.conf") or die ("Cannot read /etc/gosa/gosa.conf - aborted\n"); $conf->encoding = 'UTF-8'; $referrals= $conf->getElementsByTagName("referral"); foreach($referrals as $referral){ $user = $referral->attributes->getNamedItem("adminDn"); echo "* encrypting GOsa password for: ".$user->nodeValue."\n"; $pw= $referral->attributes->getNamedItem("adminPassword"); $pw->nodeValue= cred_encrypt($pw->nodeValue, $master_key); } # Encrypt the snapshot passwords $locations= $conf->getElementsByTagName("location"); foreach($locations as $location){ $name = $location->attributes->getNamedItem("name"); $node = $location->attributes->getNamedItem("snapshotAdminPassword"); if($node->nodeValue){ echo "* encrypting snapshot pasword for location: ".$name->nodeValue."\n"; $node->nodeValue = cred_encrypt($node->nodeValue, $master_key);; } } # Move original gosa.conf out of the way and make it unreadable for the web user echo "* creating backup in /etc/gosa/gosa.conf.orig\n"; rename("/etc/gosa/gosa.conf", "/etc/gosa/gosa.conf.orig"); chmod("/etc/gosa/gosa.conf.orig", 0600); chown ("/etc/gosa/gosa.conf.orig", "root"); chgrp ("/etc/gosa/gosa.conf.orig", "root"); # Save new passwords echo "* saving modified /etc/gosa/gosa.conf\n"; $conf->save("/etc/gosa/gosa.conf") or die("Cannot write modified /etc/gosa/gosa.conf - aborted\n"); chmod("/etc/gosa/gosa.conf", 0640); chown ("/etc/gosa/gosa.conf", "root"); chgrp ("/etc/gosa/gosa.conf", "www-data"); echo "OK\n\n"; # Print reminder echo<< php_admin_flag engine on php_admin_value open_basedir "/etc/gosa/:/usr/share/gosa/:/var/cache/gosa/:/var/spool/gosa/" php_admin_flag register_globals off php_admin_flag allow_call_time_pass_reference off php_admin_flag expose_php off php_admin_flag zend.ze1_compatibility_mode off include /etc/gosa/gosa.secrets Please reload your httpd configuration after you've modified anything. EOF; ?> gosa-core-2.7.4/FAQ0000644000175000017500000004670711476204664012421 0ustar mikemikeThis is the textual form of the GOsa FAQ. Online information with comments is set up at Wiki: https://oss.gonicus.de/labs/gosa/wiki/documentation Q: When creating many users for one department, I need to fill somefields again and again. Is there a shortcut for that? A: Just create a user template and pre-fill all values you need. You can use dynamic content, too: uid, sn and givenName will be replaced. i.E. an entry '/home/{%uid}' in homeDirectory will be replaced by the real uid of the user you're creating, {%sn[0-4]}.{%givenName}@yourdomain.com creates proper email addresses, etc. Templates include group membership. For more details visit: https://oss.gonicus.de/labs/gosa/wiki/PluginInstallationUserTemplates Q: I can see passwords in my logs and in my process list while executing commands, such as postcreate/passwordHook/aso. A: The best way to execute scripts with sensitive data is to use envrionmental variables in your scripts, like shown here: An example snippet from the gosa.conf --- login screen * framework.tpl -> page contents * style.css -> stylesheets used by GOsa Q: How can I let a person do administrative tasks under a specific department? A: GOsa 2.6 implements a flexible but complex ACL management, please have a look at the following wiki page: https://oss.gonicus.de/labs/gosa/wiki/DocumentationWritingACLs2.6 If you have still questions, please use the mailing list or the forum. Q: What about applications? A: GOsa can manage desktop applications in ldap. Create a group and put all users in there, which have common desktop settings. Go to the "Application" tab and add all applications common to this group. Applications can be created from the application plugin. The idea behind this feature is a script running on the terminal-servers/ workstation which check for applications on login (or on a regular basis using timestamps). This one will create the corresponding icons on your KDE or GNOME desktop. Q: What's this terminal stuff? A: GOto is - similar to LTSP - a ldap based diskless client system. It is available from our projects page. Q: I can't select any mailservers. What's wrong? A: It seems that a mail server is missing in your configuration. Create a new server, go to the services tab and add a mailserver service and/or the imap service. For more details, please have a look at the FAQ and https://oss.gonicus.de/labs/gosa/wiki/PluginInstallationMailMethods. Q: Can I specify some kind of password policies? A: You can place the keywords "passwordMinLength" and "passwordMinDiffer" in the main section of your gosa.conf. "passwordMinLength" specifies how many characters a password must have to be accepted. "passwordMinDiffer" contains the number of characters that must be different from the previous password. Note that these only affect passwords that are set by the user, not by the admins. Q: I've to update passwords on external windows PDCs. Can I add a command to letsynchronize these for me? A: There's the possibility to add a hooks in gosa.conf's plugin tags using the "premodify/postmodify" keywords. The specified command will be executed with these additional parameters: * current_password * new_password * userPassword --- --- For further information about pre- and post hooks search for the premodify and postmodify statements. So you can call i.e. smbpasswd to handle your password change on the PDC. Q: What about templates for vacation messages? A: Create a directory to keep a set of vacation messages which are readable by the user that runs your apache. In this example I'll use /etc/gosa/vacation for that. Put your vacation files in there containing a "DESC:some descriptive text" as the first line followed by the normal vacation text. You can use all attributes from the generic tab. I.e.: /etc/gosa/vacation/business.txt --- DESC:Away from desk Hi, I'm currently away from my desk. You can contact me on my cell phone via %mobile. Greetings, %givenName %sn --- Place the config option vacationTemplateDirectory="/etc/gosa/vacation" in the location found in gosa.conf and a template box is show in the vacation mail tab. Q: How can I generate automatic ID's for user templates? A: Add an entry describing your id policy in gosa.conf, location section: 1) Using attributes You can specify LDAP attributes (currently only sn and givenName) in braces {} and add a percent sign befor it. Optionally you can strip it down to a number of characters, specified in []. I.e. --- idGenerator="{%sn}-{%givenName[2-4]}" --- will generate an ID using the full surename, adding a dash, and adding at least the first two characters of givenName. If this ID is used, it'll use up to four characters. If no automatic generation is possible, a input box is shown. 2) using automatic id's I.e. specifying --- idGenerator="acct{id:3}" --- will generate a three digits id with the next free entry appended to "acct". --- idGenerator="ext{id#3}" --- will generate a three digits random number appended to "ext". Q: I'm migrating from the current LDAP, now GOsa does not allow uid's and groupwith upper/lower case and spaces. What can I do? A: Include the strictNamingRules="no" keyword in your gosa.conf's location section. WARNING: using strictNamingRules="no" will cause problems with cyrus/postfix!! Q: I'd like to place my users under ou=staff, not under ou=people. Can I changethis? Yes. You can change the people and group locations by adding the following statements to your location sections: --- userRDN="ou=staff" groupRDN="ou=crowds" --- After logging in again, people and groups are created in the configured places. As a side note, you can leave these strings blank for flat structures, too. Q: I really don't want dn's containing the CN for user accounts because I don't want to support anonymous binds for uid resolution. Is it possible to have dn'scontaining the uid instead? A: Yes. Placing the accountPrimaryAttribute="uid" keyword in your gosa.conf's location section will solve your problem. Q: Hey, I've installed GOsa, but it claims something about "SID and / or RIDBASE are missing in your configuration". What's wrong? A: You've configured GOsa to use samba3, but your LDAP has no samba domain object inside. Either log into samba for the first time to let it create that object, or supply the sid and ridbase for your domain in your gosa.conf's location, i.e.: --- ... sambaRidBase="1000" sambaSID="0-815-4711" \> --- Remember to fill in your real domain sid which is retrievable by the command "net getlocalsid". Q: We have massive performance problems with using samba as a member server. A: This is a known issue. We're working around this by putting --- ... sambaIdMapping="true" ... \> --- into the configuration. GOsa will write the additional objectClass sambaIdmapEntry to the group and user objects. Q: I get 'The value specified as GID/UID number is too small' when forcing IDs. Why? A: This is an additional security feature, so that no one can fall back to uid 0. The default minimum ID is 100. You can set it to every value you like by specifying --- ... minId="40" ... \> --- in your configuration. In this example 40 will be the smallest ID you can enter. Q: Aahhrg. I've updated to a new version and my gosa.conf seems to be broken. A: Some parameters may have changed. Please move your gosa.conf away and re-run the setup. Q: I've saved my windows workstations in other locations like GOsa is doing it for decades. Is there a way to change this? A: Yes. Use the sambaMachineAccountRDN parameter in your location section: --- ... sambaMachineAccountRDN="ou=machineaccounts" ... \> --- Q: I'd like to have TLS based LDAP connections from within GOsa. Is this possible? A: Yes, add --- ... ldapTLS="true" ... \> --- to the location section of GOsa. This switch affects LDAP connections for a single location only. Q: Cyrus folder get created in the style user.username. I prefer the unix hirachystyle user/username. Is it possible to change this? A: Yes, add --- services tab in GOsa 2.6. Here is an older, but maybe helpful solution for Cyrus-Imapd 2.1.5 on SuSE 9.0: * Install the "cyrus-sasl-plain" rpm from the distro-cd (This packet contains "sasl2/libplain" library). * Modify your /etc/imap.conf: --- sasl_pwcheck_method: saslauthd sasl_mech_list: plain login --- * Modify your /etc/sysconfig/saslauthd: --- SASLAUTHD_AUTHMECH=pam --- Q: Slapd does not start after adding or changing schema files to the slapd config. What can I do? A: Check the order of how slapd loads the schema files. Order of schema loading matters, because some schemas depend on other schemas being already loaded. For a working order of the schema files look here: https://oss.gonicus.de/labs/gosa/wiki/InstallingLdap Q: Slapd does not start with kolab2.schema included. It claims that thedefinition of calFBURL is missing. What can I do? A: For Kolab to work correctly you have to include the rfc2739.schema in your slapd.conf. Insert it before the kolab2.schema Q: New implementations of OpenLDAP seem to require {sasl} instead of {kerberos} in password hashes. GOsa writes the wrong string. What can I do? A: You can set "useSaslForKerberos" to "true" in your gosa.conf's main section. Q: Is there a way to add the personalTitle attribute the the users dn? A: Just add this line into the location section of your gosa.conf. --- --- Q: I've shredded my access control and am not able to do anything from now on. Is there a way to override the ACL? A: Yes. Insert the following statement in the location section of your gosa.conf: --- ignoreAcl="your user's dn" --- Q: I can't logon as Administration, what is wrong? A: It looks like you are missing an administrativ account. In newer versions of GOsa you can simply re-run the setup and create an admin account on the migration page. Additionally you can set ignoreACL in GOsa 2.6, just search the FAQ. Q: The Unix's user's shell list is empty (unconfigured) A: Just copy or link your /etc/shell in /etc/gosa. Q: After upgrading GOsa, the setup.php doesn't work or looks broken. A: You should delete all files in /var/spool/gosa --- # cd /var/spool/gosa # rm -rf * --- Q: After installing GOsa using an existing LDAP tree, my user accounts are not listed. A: You need to add the following objectClasses to your accounts: --- objectClass: person objectClass: organizationalPerson --- The setup will automatically migrate those accounts, see migration step in GOsa setup! Q: Is it possible to login with the users mail address too? A: Yes, just add the following line to your gosa.conf: --- foo (bar () + 4)){ } 8<---------------------------------------------------------------------------- Don't layout your code like this, always minimize spaces: 8<---------------------------------------------------------------------------- var $most = "something"; 8<---------------------------------------------------------------------------- Always use spaces to seperate arguments after commata: 8<---------------------------------------------------------------------------- function foo ($param1, $param2) 8<---------------------------------------------------------------------------- Always use single spaces to split logical and mathematical operations: 8<---------------------------------------------------------------------------- if ( $a > 6 && $b == 17 && (foo ($b) < 1) ){ } 8<---------------------------------------------------------------------------- * Braces If statements with or without else clauses are formatted like this: 8<---------------------------------------------------------------------------- if ($value) { foo (); bar (); } if ($value) { foo (); } else { bar (); } 8<---------------------------------------------------------------------------- Switches are formatted like this: 8<---------------------------------------------------------------------------- switch ($reason) { case 'fine': foo (); break; case 'well': bar (); break; } 8<---------------------------------------------------------------------------- Always use use braces for single line blocks: 8<---------------------------------------------------------------------------- if ($value) { foo (); } 8<---------------------------------------------------------------------------- Function definitions, Classes and Methods have an opening brace on the next line: 8<---------------------------------------------------------------------------- function bar () { ... } 8<---------------------------------------------------------------------------- * Casing Always use camel casing with lowercase characters in the beginning for multi- word identifiers: 8<---------------------------------------------------------------------------- function checkForValidity (){ $testSucceeded = false; ... } 8<---------------------------------------------------------------------------- * Naming Non trivial variable names should speak for themselves from within the context. 8<---------------------------------------------------------------------------- // Use $hour = 5; // instead of $g = 5; 8<---------------------------------------------------------------------------- Find short function names that describe what the function does - in order to make the code read like a written sentence. 8<---------------------------------------------------------------------------- if ( configReadable ("/etc/foo.conf") ){ } 8<---------------------------------------------------------------------------- Use uppercase for constants/defines and _ if possible: 8<---------------------------------------------------------------------------- if ( $speedUp == TRUE ) { $wait = SHORT_WAIT; } else { $wait = LONG_WAIT; } 8<---------------------------------------------------------------------------- * PHP specific Open and close tags: HTML Do not include HTML code inside of your PHP file. Use smarty templating if possible. Code inclusion Use require_once instead of include. gosa-core-2.7.4/README.ldap0000644000175000017500000000175311551012631013637 0ustar mikemikeOpenLDAP setup using cn=config ============================== In order to include additional schema files into your cn=config driven LDAP setup, add the required schema files this way: # ldapadd -Y EXTERNAL -H ldapi:/// -f your_schema_file.ldif The GOsa schema packages include .schema and .ldif versions of the schema files. This for loop might help when adding schema files to a (nearly) fully stuffed installation: 8<---------------------------------------------------------------------------- for schema in \ gosa/samba3.ldif \ gosa/gosystem.ldif \ gosa/gofon.ldif \ gosa/gofax.ldif \ gosa/goto.ldif \ gosa/goserver.ldif \ gosa/gosa-samba3.ldif \ gosa/goto-mime.ldif \ gosa/trust.ldif \ gosa/pureftpd.ldif \ gosa/fai.ldif \ gosa/sudo.ldif \ gosa/openssh-lpk.ldif \ gosa/nagios.ldif \ gosa/kolab2.ldif \ dyngroup.ldif; do ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/$schema || exit 1 done 8<---------------------------------------------------------------------------- gosa-core-2.7.4/README.safemode0000644000175000017500000000104410727743407014513 0ustar mikemikeIn order to run GOsa in PHP's safe mode, these changes in your php.ini have been tested: magic_quotes_qpc = On allow_url_fopen = No register_globals = Off safe_mode = On safe_mode_include_dir = "/usr/share/gosa:/var/spool/gosa" safe_mode_exec_dir = "/usr/lib/gosa" safe_mode_allowed_env_vars = PHP_,LANG open_basedir = "/etc/gosa:/var/spool/gosa:/var/cache/gosa:/usr/share/gosa:/tmp" include_path = ".:/usr/share/php:/usr/share/gosa:/var/spool/gosa:/usr/share/gosa/safe_bin" disable_functions = system, shell_exec, passthru, phpinfo, show_source gosa-core-2.7.4/gosa-encrypt-passwords.10000644000175000017500000001133211254446346016570 0ustar mikemike.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "GOSA-ENCRYPT-PASSWORDS 1" .TH GOSA-ENCRYPT-PASSWORDS 1 "2009-09-17" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" gosa\-encrypt\-passwords \- Encrypt your gosa.conf passwords with a master password .SH "SYNOPSIS" .IX Header "SYNOPSIS" gosa-encrypt-passwords .SH "DESCRIPTION" .IX Header "DESCRIPTION" gosa-encrypt-passwords is a script to encrypt your gosa.conf passwords with a master password. Your passwords are then only readable by the GOsa location. .SH "BUGS" .IX Header "BUGS" Please report any bugs, or post any suggestions, to the GOsa mailing list or to .SH "LICENCE AND COPYRIGHT" .IX Header "LICENCE AND COPYRIGHT" This code is part of GOsa () .PP Copyright (C) 2003\-2009 \s-1GONICUS\s0 GmbH .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of \&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \&\s-1GNU\s0 General Public License for more details. gosa-core-2.7.4/README0000644000175000017500000000517611475731521012736 0ustar mikemikeGOsa 2.7 README =============== * Information GOsa is a LDAP administration frontend for user administration. It is NO GENERIC frontend to dictionary servers. Informations are stored in the way the underlying conecpts suppose them to be stored (i.e. people accounts are stored in "ou=people" subtrees, etc.) This can be configured marginally. Complete setups applying Kerberos, AFS, LDAP, Mail, Proxy and Fax setups are not trivial at all. You should be familiar with these components and with your UNIX installation, of cause. This file is (and will not be) an introduction to any of these components. See INSTALL for a quick overview about what to do, to get the things up and running. A complete GOsa infrastructure howto is work in progress and not released yet. * Translations GOsa is not available in your native language? Just read on... Translations (or I18N) in GOsa is done by the gettext library. As a result, every set of translations is stored inside of one directory per language as a text file called "messages.po". For GOsa you've to differenciate between gosa-core and single gosa-plugins. The core as a translation and every plugin has a seperate translation, too. GOsa core can be translated by taking a look at the locales/core directory. Just take the messages.po file and copy it to some other location and put your translations into the msgstr fields of this file. For more comfort, use programs like i.e. kbabel or poedit to achieve this. You may look at the de/LC_MESSAGES for the way how it works. If you're ready with that, create a directory for your language using the ISO shortcuts (i.e. es for spain) with a subdirectory LC_MESSAGES. In case of spain this will be gosa-core/locales/core/es/LC_MESSAGES and put the freshly translated messages.po in this directory. To test this, you've deploy the messages.po file in your running copy of GOsa and run the "update-gosa" command, to let GOsa merge the translations. Then, Make sure your apache has locale support or, in case of debian, that the specific locale will be generated (via dpkg-reconfigure locales). You may want your translations to be included in the main GOsa repository, then just send the .po file to me or ask for SVN access. For gosa-plugins, every plugin has a locales directory. Translation works like described for gosa-core. Always run update-gosa after you've added translations in order to let GOsa compile and re-sync the translations. * NOTES Be sure that 'gosaUserTemplates' are not able to log into your server, since they may have no password set. Example configs can be found in the contrib directory. Have fun! --- Cajus Pollmeier gosa-core-2.7.4/gosa-encrypt-passwords.pod0000644000175000017500000000151111254446346017210 0ustar mikemike =head1 NAME gosa-encrypt-passwords - Encrypt your gosa.conf passwords with a master password =head1 SYNOPSIS gosa-encrypt-passwords =head1 DESCRIPTION gosa-encrypt-passwords is a script to encrypt your gosa.conf passwords with a master password. Your passwords are then only readable by the GOsa location. =head1 BUGS Please report any bugs, or post any suggestions, to the GOsa mailing list or to =head1 LICENCE AND COPYRIGHT This code is part of GOsa (L) Copyright (C) 2003-2009 GONICUS GmbH This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. =cut gosa-core-2.7.4/update-online-help.10000644000175000017500000001117111254446346015625 0ustar mikemike.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "UPDATE-ONLINE-HELP 1" .TH UPDATE-ONLINE-HELP 1 "2009-09-17" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" update\-online\-help \- update the online help .SH "SYNOPSIS" .IX Header "SYNOPSIS" update-online-help .SH "DESCRIPTION" .IX Header "DESCRIPTION" update-online-help is a script that is used to regenerate the online help of GOsa when it as been changed. .SH "BUGS" .IX Header "BUGS" Please report any bugs, or post any suggestions, to the GOsa mailing list or to .SH "LICENCE AND COPYRIGHT" .IX Header "LICENCE AND COPYRIGHT" This code is part of GOsa () .PP Copyright (C) 2003\-2009 \s-1GONICUS\s0 GmbH .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of \&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \&\s-1GNU\s0 General Public License for more details. gosa-core-2.7.4/include/0000755000175000017500000000000012372424235013466 5ustar mikemikegosa-core-2.7.4/include/class_log.inc0000644000175000017500000001032211613731145016123 0ustar mikemike \version 2.6 \date 11.04.2007 This is the base class for the GOsa logging functionality. All logging should lead to this class. */ class log { var $config; /*! \brief logging constructor \param action One of these values (modify|create|remove|snapshot|copy) \param objecttype represents the current edited objecttype, like users/user \param object represents the current edited object dn \param changes_array An array containing names of all touched attributes \param result A status message, containing errors or success messages \sa log() */ function log($action,$objecttype,$object,$changes_array = array(),$result = "") { if(!is_array($changes_array)){ trigger_error("log(string,string,string,array(),bool). Forth parameter must be an array."); $changes_array = array(); } $entry = array(); if(!session::global_is_set('config')){ $entry['user']= "unkown"; }else{ $this->config = session::global_get('config'); $ui = get_userinfo(); $entry['user']= @$ui->dn; } /* Create string out of changes */ $changes =""; foreach($changes_array as $str ){ $changes .= $str.","; } $changes = preg_replace("/,$/","",$changes ); /* Create data object */ $entry['timestamp'] = time(); $entry['action'] = $action; $entry['objecttype']= $objecttype; $entry['object'] = $object; $entry['changes'] = $changes; $entry['result'] = $result; if(!isset($this->config) && empty($entry['user'])){ $entry['user'] = "unknown"; } /* Check if all given values are valid */ global $config; $msgs = @log::check($entry); if(count($msgs)){ foreach($msgs as $msg){ trigger_error("Logging failed, reason was: ".$msg); msg_dialog::display(_("Internal error"), sprintf(_("Logging failed: %s"), $msg), ERROR_DIALOG); } }else{ if(is_object($config) && $config->boolValueIsTrue("core","logging")){ $this->log_into_syslog($entry); } } } function check($entry = array()) { $msgs = array(); if(!isset($entry['action']) || !in_array_strict($entry['action'],array("modify","create","remove","copy","snapshot","view","security","debug"))){ $msgs[] = sprintf(_("Invalid option %s specified!"), bold($entry['action'])); } if(!isset($entry['objecttype'])){ $msgs[] = _("Specified 'objectType' is empty or invalid!"); } return($msgs); } /* This function is used to into the systems syslog */ function log_into_syslog($entry) { $str= ""; if(!empty($entry['action'])) $str .= "({$entry['action']}) "; // Add object and object type if set. if(!empty($entry['object']) && !empty($entry['objecttype'])){ $str .= "{$entry['object']} of type {$entry['objecttype']} "; }elseif(!empty($entry['object'])){ $str .= "{$entry['object']} "; }elseif(!empty($entry['objecttype'])){ $str .= "{$entry['objecttype']} "; } if(!empty($entry['changes'])) $str .= "{$entry['changes']} "; if(!empty($entry['result'])) $str .= ": {$entry['result']} "; gosa_log($str); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_SnapShotDialog.inc0000644000175000017500000001553511424277775020252 0ustar mikemikeparent = &$parent; $this->ui = get_userinfo(); // Prepare lists $this->snapList = new sortableListing(); $this->snapList->setDeleteable(false); $this->snapList->setEditable(false); $this->snapList->setWidth("100%"); $this->snapList->setHeight("200px"); $this->snapList->setHeader(array(_("Date"), _("Name") )); $this->snapList->setColspecs(array('140px','*','60px')); $this->snapList->setDefaultSortColumn(0); } /* Show deleted snapshots from these bases */ function set_snapshot_bases($bases) { $this->snap_shot_bases = $bases; } /* Display snapshot dialog */ function execute() { plugin::execute(); $smarty = get_smarty(); $ui = get_userinfo(); $once = true; foreach($_POST as $name => $value){ $value = get_post($name); if((preg_match("/^RemoveSnapShot_/",$name)) && ($once)){ $once = false; $entry = preg_replace("/^RemoveSnapShot_/","",$name); $entry = base64_decode($entry); $found = false; foreach($this->last_list as $t_stamp => $obj){ if($obj['dn'] == $entry){ $found = true; break; } } if($found){ $this->del_dn = $entry; $smarty= get_smarty(); $smarty->assign("info", sprintf(_("You are about to delete the snapshot %s."), bold(LDAP::fix($this->del_dn)))); return($smarty->fetch (get_template_path('removeSnapshots.tpl'))); } } } /* We must restore a snapshot */ if($this->display_restore_dialog){ /* Should we only display all snapshots of already deleted objects or the snapshots for the given object dn */ $res = array(); $tmp = array(); $handler = new SnapshotHandler($this->config); if($this->display_all_removed_objects){ if(count($this->snap_shot_bases)){ foreach($this->snap_shot_bases as $dn){ $tmp = array_merge($tmp,$handler->getAllDeletedSnapshots($dn,true)); } }else{ $tmp = $handler->getAllDeletedSnapshots($this->snap_shot_bases,true); } }else{ $tmp = $handler->Available_SnapsShots($this->dn,true); } $this->snapList->setAcl('rwcdm'); $list_of_elements = array(); /* Walk through all entries and setup the display text */ foreach($tmp as $key => $entry){ /* Check permissions */ $TimeStamp = $entry['gosaSnapshotTimestamp'][0]; $list_of_elements[$TimeStamp] = $entry; } /* Sort generated list */ krsort($list_of_elements); /* Add Elements to list */ $this->last_list = $list_of_elements; $data = $lData = array(); foreach($list_of_elements as $entry){ $actions= image('images/lists/restore.png','RestoreSnapShot_%KEY',_("Restore snapshot")); $actions.= image('images/lists/trash.png','RemoveSnapShot_%KEY',_("Delete snapshot")); $time_stamp = date(_("Y-m-d, H:i:s"),preg_replace("/\-.*$/","",$entry['gosaSnapshotTimestamp'][0])); $display_data = $entry['description'][0]; $data[$entry['dn']] = $entry; $lData[$entry['dn']] = array('data'=> array( $time_stamp, htmlentities(utf8_decode(LDAP::fix($display_data))), str_replace("%KEY",base64_encode($entry['dn']), $actions))); } $this->snapList->setListData($data, $lData); $this->snapList->update(); $smarty->assign("SnapShotList",$this->snapList->render()); $smarty->assign("CountSnapShots",count($list_of_elements)); } $smarty->assign("restore_deleted",$this->display_all_removed_objects); $smarty->assign("RestoreMode",$this->display_restore_dialog); $smarty->assign("CurrentDate",date(_("Y-m-d, H:i:s"))); $smarty->assign("CurrentDN",LDAP::fix($this->dn)); $smarty->assign("CurrentDescription",set_post($this->CurrentDescription)); return($smarty->fetch(get_template_path("snapshotdialog.tpl"))); } function check() { $message = plugin::check(); if(!$this->display_restore_dialog){ if(empty($this->CurrentDescription)){ $message[]= msgPool::invalid(_("Description")); } } return($message); } function save_object() { // plugin::save_object(); foreach($this->attributes as $name){ if(isset($_POST[$name])){ $this->$name = get_post($name); } } } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/pChart/0000755000175000017500000000000012372424235014707 5ustar mikemikegosa-core-2.7.4/include/pChart/Example19.php0000644000175000017500000000301611430735731017165 0ustar mikemikeAddPoint(array(10,4,3,2,3,3,2,1,0,7,4,3,2,3,3,5,1,0,7),"Serie1"); $DataSet->AddPoint(array(1,4,2,6,2,3,0,1,-5,1,2,4,5,2,1,0,6,4,30),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetXAxisName("Samples"); $DataSet->SetYAxisName("Temperature"); $DataSet->SetSerieName("January","Serie1"); // Initialise the graph $Test = new pChart(700,230); $Test->reportWarnings("GD"); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(60,30,585,185); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the cubic curve graph $Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription()); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 19",50,50,50,585); $Test->Render("example19.png"); ?>gosa-core-2.7.4/include/pChart/Example8.php0000644000175000017500000000263011430735731017104 0ustar mikemikeAddPoint(array("Memory","Disk","Network","Slots","CPU"),"Label"); $DataSet->AddPoint(array(1,2,3,4,3),"Serie1"); $DataSet->AddPoint(array(1,4,2,6,2),"Serie2"); $DataSet->AddSerie("Serie1"); $DataSet->AddSerie("Serie2"); $DataSet->SetAbsciseLabelSerie("Label"); $DataSet->SetSerieName("Reference","Serie1"); $DataSet->SetSerieName("Tested computer","Serie2"); // Initialise the graph $Test = new pChart(400,400); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawFilledRoundedRectangle(7,7,393,393,5,240,240,240); $Test->drawRoundedRectangle(5,5,395,395,5,230,230,230); $Test->setGraphArea(30,30,370,370); $Test->drawFilledRoundedRectangle(30,30,370,370,5,255,255,255); $Test->drawRoundedRectangle(30,30,370,370,5,220,220,220); // Draw the radar graph $Test->drawRadarAxis($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,20,120,120,120,230,230,230); $Test->drawFilledRadar($DataSet->GetData(),$DataSet->GetDataDescription(),50,20); // Finish the graph $Test->drawLegend(15,15,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(0,22,"Example 8",50,50,50,400); $Test->Render("example8.png"); ?>gosa-core-2.7.4/include/pChart/Example22.php0000644000175000017500000000355011430735731017162 0ustar mikemikeAddPoint(array(60,70,90,110,100,90),"Serie1"); $DataSet->AddPoint(array(40,50,60,80,70,60),"Serie2"); $DataSet->AddPoint(array("Jan","Feb","Mar","Apr","May","Jun"),"Serie3"); $DataSet->AddSerie("Serie1"); $DataSet->AddSerie("Serie2"); $DataSet->SetAbsciseLabelSerie("Serie3"); $DataSet->SetSerieName("Company A","Serie1"); $DataSet->SetSerieName("Company B","Serie2"); $DataSet->SetYAxisName("Product sales"); $DataSet->SetYAxisUnit("k"); $DataSet->SetSerieSymbol("Serie1","Sample/Point_Asterisk.gif"); $DataSet->SetSerieSymbol("Serie2","Sample/Point_Cd.gif"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(65,30,650,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the title $Test->setFontProperties("Fonts/pf_arma_five.ttf",6); $Title = "Comparative product sales for company A & B "; $Test->drawTextBox(65,30,650,45,$Title,0,255,255,255,ALIGN_RIGHT,TRUE,0,0,0,30); // Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Draw the legend $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(80,60,$DataSet->GetDataDescription(),255,255,255); // Render the chart $Test->Render("example22.png"); ?>gosa-core-2.7.4/include/pChart/Example23.php0000644000175000017500000000337711430735731017172 0ustar mikemikeAddPoint(array(9,9,9,10,10,11,12,14,16,17,18,18,19,19,18,15,12,10,9),"Serie1"); $DataSet->AddPoint(array(10,11,11,12,12,13,14,15,17,19,22,24,23,23,22,20,18,16,14),"Serie2"); $DataSet->AddPoint(array(4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22),"Serie3"); $DataSet->AddAllSeries(); $DataSet->RemoveSerie("Serie3"); $DataSet->SetAbsciseLabelSerie("Serie3"); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); $DataSet->SetYAxisName("Temperature"); $DataSet->SetYAxisUnit("C"); $DataSet->SetXAxisUnit("h"); // Initialise the graph $Test = new pChart(700,230); $Test->drawGraphAreaGradient(132,173,131,50,TARGET_BACKGROUND); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(120,20,675,190); $Test->drawGraphArea(213,217,221,FALSE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_ADDALL,213,217,221,TRUE,0,2,TRUE); $Test->drawGraphAreaGradient(163,203,167,50); $Test->drawGrid(4,TRUE,230,230,230,20); // Draw the bar chart $Test->drawStackedBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),70); // Draw the title $Title = " Average Temperatures during\r\n the first months of 2008 "; $Test->drawTextBox(0,0,50,230,$Title,90,255,255,255,ALIGN_BOTTOM_CENTER,TRUE,0,0,0,30); // Draw the legend $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(610,10,$DataSet->GetDataDescription(),236,238,240,52,58,82); // Render the picture $Test->addBorder(2); $Test->Render("example23.png"); ?>gosa-core-2.7.4/include/pChart/Example24.php0000644000175000017500000000317311430735731017165 0ustar mikemikeAddPoint(cos($i*3.14/180)*80+$i,"Serie1"); $DataSet->AddPoint(sin($i*3.14/180)*80+$i,"Serie2"); } $DataSet->SetSerieName("Trigonometric function","Serie1"); $DataSet->AddSerie("Serie1"); $DataSet->AddSerie("Serie2"); $DataSet->SetXAxisName("X Axis"); $DataSet->SetYAxisName("Y Axis"); // Initialise the graph $Test = new pChart(300,300); $Test->drawGraphAreaGradient(0,0,0,-100,TARGET_BACKGROUND); // Prepare the graph area $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(55,30,270,230); $Test->drawXYScale($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie1","Serie2",213,217,221,TRUE,45); $Test->drawGraphArea(213,217,221,FALSE); $Test->drawGraphAreaGradient(30,30,30,-50); $Test->drawGrid(4,TRUE,230,230,230,20); // Draw the chart $Test->setShadowProperties(2,2,0,0,0,60,4); $Test->drawXYGraph($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie1","Serie2",0); $Test->clearShadow(); // Draw the title $Title = "Drawing X versus Y charts trigonometric functions "; $Test->drawTextBox(0,280,300,300,$Title,0,255,255,255,ALIGN_RIGHT,TRUE,0,0,0,30); // Draw the legend $Test->setFontProperties("Fonts/pf_arma_five.ttf",6); $DataSet->RemoveSerie("Serie2"); $Test->drawLegend(160,5,$DataSet->GetDataDescription(),0,0,0,0,0,0,255,255,255,FALSE); $Test->Render("example24.png"); ?>gosa-core-2.7.4/include/pChart/logo.png0000644000175000017500000000651611430735731016365 0ustar mikemikePNG  IHDRk3atEXtCreation Time . tIME /2 pHYs  ~ IDATx[ۏdEs>MϕuY[ve!+/DcbL0b1Ay /c\Y ,vts*:_wٞYsr~n3Vd.-R^xʐE,=V 4[7qo4s;whҫ;'B)X[I9W~,^UV.㺑_ox{^N&ttQɃWsWq_ƕ uWY&)R:a=*~xc/JEHN>b>®ww oId囋7*wڱoMVÏnEZ3GyXxz'@j^ 죦魑_] >lx& M6٥IګC@We,DR'Xwknmzi"#'#$~_ !Uk|c}LmX8YUMǾ%M;|R{ƨD `)`Ѭ5j F"(e$QawvK̓[52jeq5sgx9ut/7g5Oʳj%g.a]]2wݶt!oOȾ>;]RSB輬>/VJ|_ dN?!"K΃ZX3{'"^ q[3uJ,+s_ʊ7IYwH'!Ryw /*9j^cnsUB${{W{gqbf0Uoф^SbMx *\;\x덹(BNҔ\Ow> 1O>Aʽ >VHR'ws'^/ &dTQs̽t s{HI )3AP'+B Q8M90ox{qud`dW WzpM8 `'W'PB| Ju?i+``&Gk3AE5'I*4M˲ ;+$C%=l:(޾I {h$hLp (`pF=*^U "&70B.BH[sss|NрE‚ǎ "C\V @i/䖾>Js`W*R㘞NMMZI j˲uAhG{yAIZ]Doݽ4q*#YZ6t+[ъ"lY/M HD@(" ceXV?ўv@Q.v=DWSFR rPrr!djhێ1=[JLT'\Xt:AxWmh" .E'}!| U6@&-PMq=Y((UQb:F]D"4yXVTV8BV*Y1R#A \q(RZZS YaC=y6]. tSTW8i8dag%"q$MK"jk,<ʳr`Iuvׄ)UOI} Ơ ( I*+CTY24 @A)D$ :%xOσ2Q ^-PFR,Ei&0,8T50ԬZP |nt2Nʤ_-Vq70Y -E@0֊ڬ:Ef .OS84V-!"^_Id5/x؎_7 E )I'yMUe(A }7h*Pj+~ =zgSelƓ\ ~6@7;3j\GmDMMg#,,0_2-)\tcv1P]A~ma3S: 䪥$NqIjm.yđ06a;;Wl4(`"Xٱ2\pk=>7}X $Ȩ%3 QTZ+l&[3:gىL.8l,hiUB<,Inaٞ^m4#A#֌`5WW267ʇ\$Scac;O_zufF!! \JS˒X{s^D$ml] *KU㤩V/|M~p6k>~yXu~O3j~ҢqYhV$׉{ƥ$)NGg$Dy.*c:d,EzO4!nAk6 -DԶ8_V!BXMr_+?YO $滘?wl3L&;uqdX2LW_LJ[8oSn/'FABJ;o.I >X \ !/)*Q2d72S% jNɔlޑ^ !EjF2d%REA&`'"ޠ“̇ *FO>mhqFSp4L U\T,p\)1ft+fAEcatQxHEf+2`s8$.dد epJ ne|&Y#իdodt -ATs0tV]?#%w_4L̓F\AddPoint(1,"Serie1"); $DataSet->AddPoint(3,"Serie2"); $DataSet->AddPoint(3,"Serie3"); $DataSet->AddPoint("A#~1","Labels"); $DataSet->AddAllSeries(); $DataSet->RemoveSerie("Labels"); $DataSet->SetAbsciseLabelSerie("Labels"); $DataSet->SetSerieName("Alpha","Serie1"); $DataSet->SetSerieName("Beta","Serie2"); $DataSet->SetSerieName("Gama","Serie3"); $DataSet->SetYAxisName("Test Marker"); $DataSet->SetYAxisUnit("m"); // Initialise the graph $Test = new pChart(210,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(65,30,125,200); $Test->drawFilledRoundedRectangle(7,7,203,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,205,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_ADDALLSTART0,150,150,150,TRUE,0,2,TRUE); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the bar graph $Test->drawStackedBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),50); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(135,150,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(0,22,"Sample size",50,50,50,210); $Test->Render("SmallStacked.png"); ?>gosa-core-2.7.4/include/pChart/Example20.php0000644000175000017500000000305111430735731017154 0ustar mikemikeAddPoint(array(1,4,-3,2,-3,3,2,1,0,7,4),"Serie1"); $DataSet->AddPoint(array(3,3,-4,1,-2,2,1,0,-1,6,3),"Serie2"); $DataSet->AddPoint(array(4,1,2,-1,-4,-2,3,2,1,2,2),"Serie3"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); $DataSet->SetSerieName("March","Serie3"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(50,30,680,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_ADDALL,150,150,150,TRUE,0,2,TRUE); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the bar graph $Test->drawStackedBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),100); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(596,150,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 20",50,50,50,585); $Test->Render("example20.png"); ?>gosa-core-2.7.4/include/pChart/Example6.php0000644000175000017500000000247111430735731017105 0ustar mikemikeImportFromCSV("Sample/datawithtitle.csv",",",array(1,2,3),TRUE,0); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(60,30,680,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the filled line graph $Test->drawFilledLineGraph($DataSet->GetData(),$DataSet->GetDataDescription(),50,TRUE); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(65,35,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(60,22,"Example 6",50,50,50,585); $Test->Render("example6.png"); ?>gosa-core-2.7.4/include/pChart/Example17.php0000644000175000017500000000340411430735731017164 0ustar mikemikeAddPoint(array(100,320,200,10,43),"Serie1"); $DataSet->AddPoint(array(23,432,43,153,234),"Serie2"); $DataSet->AddPoint(array(1217541600,1217628000,1217714400,1217800800,1217887200),"Serie3"); $DataSet->AddSerie("Serie1"); $DataSet->AddSerie("Serie2"); $DataSet->SetAbsciseLabelSerie("Serie3"); $DataSet->SetSerieName("Incoming","Serie1"); $DataSet->SetSerieName("Outgoing","Serie2"); $DataSet->SetYAxisName("Call duration"); $DataSet->SetYAxisFormat("time"); $DataSet->SetXAxisFormat("date"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(85,30,650,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(90,35,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(60,22,"example 17",50,50,50,585); $Test->Render("example17.png"); ?>gosa-core-2.7.4/include/pChart/Example2.php0000644000175000017500000000275411430735731017105 0ustar mikemikeAddPoint(array(1,4,3,4,3,3,2,1,0,7,4,3,2,3,3,5,1,0,7),"Serie1"); $DataSet->AddPoint(array(1,4,2,6,2,3,0,1,5,1,2,4,5,2,1,0,6,4,2),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); // Initialise the graph $Test = new pChart(700,230); $Test->setFixedScale(-2,8); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(50,30,585,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the cubic curve graph $Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription()); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 2",50,50,50,585); $Test->Render("example2.png"); ?>gosa-core-2.7.4/include/pChart/Example7.php0000644000175000017500000000274111430735731017106 0ustar mikemikeAddPoint(array(1,4,3,2,3,3,2,1,0,7,4,3,2,3,3,5,1,0,7),"Serie1"); $DataSet->AddPoint(array(1,4,2,6,2,3,0,1,5,1,2,4,5,2,1,0,6,4,2),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(50,30,585,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the cubic curve graph $Test->drawFilledCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription(),.1,50); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 7",50,50,50,585); $Test->Render("example7.png"); ?>gosa-core-2.7.4/include/pChart/SmallGraph.php0000644000175000017500000000161511430735731017455 0ustar mikemikeAddPoint(array(1,4,-3,2,-3,3,2,1,0,7,4,-3,2,-3,3,5,1,0,7),"Serie1"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); // Initialise the graph $Test = new pChart(100,30); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawFilledRoundedRectangle(2,2,98,28,2,230,230,230); $Test->setGraphArea(5,5,95,25); $Test->drawGraphArea(255,255,255); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,220,220,220,FALSE); // Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); // Finish the graph $Test->Render("SmallGraph.png"); ?>gosa-core-2.7.4/include/pChart/Example9.php0000644000175000017500000000350211430735731017104 0ustar mikemikeAddPoint(array(0,70,70,0,0,70,70,0,0,70),"Serie1"); $DataSet->AddPoint(array(0.5,2,4.5,8,12.5,18,24.5,32,40.5,50),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(50,30,585,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Set labels $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setLabel($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie1","2","Daily incomes",221,230,174); $Test->setLabel($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie2","6","Production break",239,233,195); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 9",50,50,50,585); $Test->Render("example9.png"); ?>gosa-core-2.7.4/include/pChart/pCache.class0000644000175000017500000000644511430735731017132 0ustar mikemike. Class initialisation : pCache($CacheFolder="Cache/") Cache management : IsInCache($Data) GetFromCache($ID,$Data) WriteToCache($ID,$Data,$Picture) DeleteFromCache($ID,$Data) ClearCache() Inner functions : GetHash($ID,$Data) */ /* pCache class definition */ class pCache { var $HashKey = ""; var $CacheFolder = "Cache/"; /* Create the pCache object */ function pCache($CacheFolder="Cache/") { $this->CacheFolder = $CacheFolder; } /* This function is clearing the cache folder */ function ClearCache() { if ($handle = opendir($this->CacheFolder)) { while (false !== ($file = readdir($handle))) { if ( $file != "." && $file != ".." ) unlink($this->CacheFolder.$file); } closedir($handle); } } /* This function is checking if we have an offline version of this chart */ function IsInCache($ID,$Data,$Hash="") { if ( $Hash == "" ) $Hash = $this->GetHash($ID,$Data); if ( file_exists($this->CacheFolder.$Hash) ) return(TRUE); else return(FALSE); } /* This function is making a copy of drawn chart in the cache folder */ function WriteToCache($ID,$Data,$Picture) { $Hash = $this->GetHash($ID,$Data); $FileName = $this->CacheFolder.$Hash; imagepng($Picture->Picture,$FileName); } /* This function is removing any cached copy of this chart */ function DeleteFromCache($ID,$Data) { $Hash = $this->GetHash($ID,$Data); $FileName = $this->CacheFolder.$Hash; if ( file_exists($FileName ) ) unlink($FileName); } /* This function is retrieving the cached picture if applicable */ function GetFromCache($ID,$Data) { $Hash = $this->GetHash($ID,$Data); if ( $this->IsInCache("","",$Hash ) ) { $FileName = $this->CacheFolder.$Hash; header('Content-type: image/png'); @readfile($FileName); exit(); } } /* This function is building the graph unique hash key */ function GetHash($ID,$Data) { $mKey = "$ID"; foreach($Data as $key => $Values) { $tKey = ""; foreach($Values as $Serie => $Value) $tKey = $tKey.$Serie.$Value; $mKey = $mKey.md5($tKey); } return(md5($mKey)); } } ?>gosa-core-2.7.4/include/pChart/pChart.1.27d.rar0000644000175000017500000111124411430735731017374 0ustar mikemikeRar!ϐs az#}3CMT ṔW|(DI7:-؃qhKIIhttiOzպI:u4?Hi<39|o?}Ό+M<9sM jp͂T#2(C?愠ԪrËۇ/ucYE/:wMFrZ]t XbQme"{%2.fn(t; Y:GM"ˤoSU9[1I.Wq:ܫ?v"5;ORp}zZuP/&^U]aFPL NXI"Yu"56&C6>TXjݥ2QۓW*4:ɥpz.3Fjd/':M^׸pAݏ`NC}Dw<ڀ^Z INJov?P ћvޔ4Ok KrZJ/,K P:sWl0\2.A~"̥n%] Wm`/]b<.S7Eb9 B.3Ѽؐe=W-iSvsŀo8˯7dyvLAfO6èx|},DNhה;bUɥ>?IrI3׊opP)fDQmH}8Ot@4WDqsiEӆ7~hiis4i=Km^Pyyޚ:puZ{KL>bx''Բ={_law@*f7=Β߽o>GC뽫2|>vK {ADt`6W[;T13 Fonts\GeosansLight.ttfP%QҵRD km$q674ɭ2L$?d&9懦8F㍸j8{SIfM"%ii6ym"ŁUB (P2:(tP~ Wiq>/ v6 t pH'` 0;/5 s3K KvyJ~q7d-cզk;.a8cٜe4C{]^Op\O$ӸuNBG˹`t7wvY'х75773}g_xs>?:G| `^{~9h;?U"?J{W{ j?~ZxGA4aN, =^ʁ]PWOGu}ׯoA|@+b]. g 0];@S@ ׂ`ufL 2Geb UɎD@N!WL|N l0ҥ9Noܯh̽,dAF.2Ǣj1hr:, #T/}+?ô>JʚD h]RWe$9c/;;? %Jf{ P{8c4 `bROH0gOP1`Q]:S^@B y v0V E !Խ1xN:z+3Tu^wL{zXo/?ڍ}@OF4Fms)ar ײ1:%sr# u᰻>@װ*;G:3~; GbN9uǔ g2T0.>1K:e0&8>m8K݂(K_4B8n޸k#`^"56]٠1n5U. r^޻>26|jBAHed8Ⱦ88pe [sK&7pO$0p!H ,"dVj1Qq#HfJNRVZ^bfi~tݮ|߯  N+㺌~C#yLXb/397ys;v=gݸsw}{0x/_7/p+|/`+o F(Lz*v>#u=o6;)g~?KW(ҷwQaB nWMct…Fn pl7|Aj8Sr,D??H'!wu܎dL5`p|&;ۃ/Sצ!y7 r+F+k9޻o?tNg74^Pg< \ĺIʆ϶ X+f\[hkf!M~RnR1%bw+Sc: nz{9-r-o]ouJGM'{T:+cS[ZêU:#]j-vZ͍XϺS3gsUg꾇!?cޮw=ߡr*w{>yܺc{mSh+muO){M˱뾍Ii?|Zm6gę}=Izx+Toe@~|_mh~F!c CE.񱘼f+a54&8jJr T)yO+}7#zFҾ y 8܍yYxw b!J퓁kľH|B%~R Vɜbܡ mT>2ٕ7m/1Mr4Yo7q%bN n*)so3c)`p[B1%ǖ ;9E3U'^ü/1 #+@BMtցA:S~՜7N6J"CBcYќ(4TmVqECflR֣C vM ᲍+r4IZ3Q&51Țt-tgAx=t9>>AGq_vvn"#ťxaeHMPlg~VdjɪyT0:鎻^XHeliL^Ke==GTg@U$QޤKtז''hC<{lXAu DI<1idR7i71 Y \dV;XWQk#f_j=g*-ttt֢6ޤ$f>;Jw nΑ4Zx:\SR|ZN@+YVG `rQҤ-RyK2]hųo׌iK/ 2 }N1MEaxTWj6TNiIdq݈~(-HֆUTT\T:ԦTel=,#,ѕ"p"Ued,}4eiʺ89?Ņ{I H}$&F)Nz+QKRdp~&_7lbgf0j VmE;7 ѷPQZDّ‘:tx^ULjjHL9dLz;Jpsf&)nEm7pxAޅZA,Er~(C&p%1"Fëx} 76]eJ͜, (u*JdX&h9̀;FlY4oY:'>ҷ]8vCMlHNͺvUT96O~R)5RO>6*l:pR  Y!5<+Jd?Oϩ߀:6LLTVyzz{FOC/J"l'1)EXKIuRT{GJaD¥4tD DzLP1T^"Iܜ7 P@좘# Y Y0Tܗg ԗfd!Vv0iX,`-+zJFKnyɤȊ@Va,y4d\J)W F[:: >*z)sm;9WSd,Jl͡ Q684(@yAV:KC|:{9+ xm(VT@R'}>[0[׋{/v |KΥ{֨:&h$~h|RB܍༱Z&\l%BfO+jƻcL^33MW7ƒ*EX-l=h~j[c6>o4?Bk P9`@;b1xY ( 3a4ףl$0Qq}9c۔ۡ =hT_olXTS_':}v|z%,؁o?aMgUw+t<'Jk4?I)ќU U,{]ԬTL/ubq)|CI@@;}Żd]a[OMGw|#DM幜-U#o6^f֖ݦaG6[{^ܧoӄ6߅y03|& iQ1HWQ{oAŇTCtzB=Q_ \qe-D4|({)V܇uXYir↢3c(40MB+CX+/sYՓQ c׮{<>͗[ra{14rS0TNR~%F7v`LJv͂%4?7/:.5y>N9 |77L 迊3>Dvg_Lu|ǃLswγ]n$HG:4Pc)urP݋7p/{, aX^9e~ -`=⪎0MOta9nA#ziRD!LTDʼQD * ȬKGeCdAsרUgɷ)/d7 $Fw9܉L L?Z jp{VF훈ϜQfW*Gpt/M=:zez7ww`pzU˄+"T~QVH$NlQkqu[7[r.]g8MKpn^g'jqyjHa%X[VU8$Cホ( |&;tũdu_1 i!t;&u$PoH țfǨ+gw vd;% 1JcBx EE-(i;<|[ V0BJhCED3uC6FXQsSQ>e"^Ox>GPh |#KۘYĘfBKz[59vo"y`{0u|Xmf2P-ei4tx]|K(6 qz&Քjf|85<"uTlAfV=gr!0=y]@5#fth6?qP4 >+"I`f%gQqjhZ~B>BF?|289,zC@yTvLII;,62t4C{¡sᑗ ӳ(;'BF^ eٌv!ěUŸ_] ]%.Lat\sA4fZ{jW]|,d:հ$c]JjI h2JNVM+֭H1 < D(RTR;#DGe9u^ˑc4(2+m*iM6+dz=SQGNd$0^ "m1wLd WDi,Wle&"~SWJ|Q 2u#x ~IV.>Qo8Y#FbXJ^n쀾↾s@U;DťKݴbv-C+^.qGadcj#Z3IJ:$Z;QC:g|> =zhl#'Mi \TK2Fk /A/-K+7B9$[1Z* At0WGNYXѻ 7c5}X9UweYyLh^hDaCHܤ$$d's3eG`2<$W%#.SX~+p}jvPyvMgΏqERQc_nJ>\g센"*+b# c)yHSHt7_; 2>tۘ+x9(Dz%: MYDw/oH<$%B,_'%LDB>RdjSP>i]5":ժއHu+c Es>!ɕ7$ȸten;#M:2wi1&:[vM@~>Ǖ{>ec~,&rWa _?A~VV٧p8,ZC=1`Н Ssݼ@2@tx^Wϐ\3i _̻AroC>ʶ!-F"҇&ԃSX|s-'s9*u0Ǘ|nbl#﬙Y/vvꁥx)l66sfdSJǍ0gd!qLY:i~#S-ܳvWLfo vvwBS7wN*+fjػπR ӖTۊWͷCi֙oHږ-ӊ*ڌ%W|6V' 0䪙Zc7n?9h!:.$+O"%49rBŮLsXcDRmŰzh-@%r9-m0*2n[cuѴn-wZuۮZH!g}fu]mcE-"Z2>jlF33{33T -L3J3=, SEF : tSM֗|*j,gpe헤gv@BB=g%4o= |׳ü QXHh3zd& Kf.\Mbȗ0 Ę"Z!JfC*y~}r 3&oY`.;'F o oU'${Yhr$PCܐDIڐw#5Ԍ(%:;,'-J4Cq[̊ݧϲdWvj xUS`溍_Z>>"0yWj=1))#/Dc/h_HdGDESaѕV;Tì[ʬ$;]%@~՞W;^vsc: P;M9 wCJe㣎JZLOq "<GN3yh FBUqNn}lA5p9! '|Z^^%MXI Sํ[7ar ( |< lt*@!l<Á!;~4YKGi;lChqkF^m|`NX5E4vdi+LPQ;-W.A8jzp}աW,yGMU!bfO'LDIepR#]ر)UUdbhj3Fmu"Jb=D^e:xe"/3T2|H"]XDSW̻<5Bɫ)3`!uDjQut݆ĢD4e 9wO:7kFkr91b:@ QΥEK?@>w]0Lzbz#] ]ENH$RTJ2؞P7%@2!B RHۜi3 XgR=$!)CO Y.^ȇw3'bϲ ]R_ B:ۑyӹ]ǧRYEa`1;(^&]hHR%ri­g>>_c!6ްeCSub|b S))I&l#w4ha BNf-NQ)JY$<%bJEkjtûW$D[4HL,Y ""3G#^zT $,VTX#ΎCjq"8iiZ#Fc#0`!0cx"@yX"V=5 Qd`0ǚeCʦUQDrg;؋ "%=>UJԳr ֪(w* HU$#%0O-{C#^vwԚ P#:_T*(8>䎼̍tH'F]vt AQ4BGJN9߈'O&şdމ 2C/ɔ#{ P >t~JmLJ>wg827ayҝ`_b< :`(G(;R=FGȩY%$zh!޶:PӳGD:I"p(Oy,1JYJWAK:KѦ@6C(7nAPi!]YՅb!?caixaT p]785Ho/CȡU!45Qp;Eܣ>Zhtj)3vh;:xQ繼Q4燇#Whh^a.~'?HA8ɂ!>;8 5<ʑ "hkM&_e~NճR 1`Jcug~}iQFF<\pr'UDll ̽4*+6SSv'=^6y8`rvE?6tpA"rsb)j[NN~}m9|bwd~Mk3h:&e=B7frLKVT; .ajF{՝ޖ .NT'YޯhZoqYG&3o>i.Fm'E;ϵ\}(zIWFE'U O!4Dt<-%b݋~ 8zXl3/Gt7eMڠ_p ɷ;l{ C=h]m;{A9mǺA* h$QR%ֻVz=l, +>լsa_7:<^rKiI[Э~C~l \aVS=a-~*rgf0MڏdQ>u9Ffb9&8|9p @J*ש';}+_nU%}EGewF(bzG\$b7>4'j8&^5.3,^ a/V(1'\ɸjCBmڵD˔c#CݚG[HKO?jS=Jkq:C,3`j^nx"G'5CacOqv0P-z2()_1Wb't*PmUÿX~ C|dFjXύ{L1o޷CD`u*

    d=rΛ )WӤK$ZcI=2K ҐiӐůp A$Q=auqu6v3fC!RIv&(h3yx}FE NdX#1&G c}I^dFJd%ˋLk0m$ѵ.N:Ii+ېOšDItd! J%[C[Lq}fT 2/˱ [o%h^p2߈; 5pd0p.Z;qqB7q!-ˇqq{ э~3@q1o8 ?  N?~c~q]]me]uquXV",D[wknqn)ݷ_쫇ʹb_LU?mjLJWYˁ@?'XW+]Uـ^X؂jCH .+.iҞw.c5֛u}Z Ⱥ-8?A濝.g'XW|U tztA}A]|KO_]6jT'qW2 u iOYK[~ώ1zupxW#0iy/b\vsOuss~OKOu}wWps^ u ԗlzP}jm%MQEow &tDYa$[啃 sFr j\dTqg|DTxUc |C|s|N i08؋I8;Zڱ:Fg ]ߠh -8j0;4\O9}0ŒvtAvn3z]nňwХv`ׇZNM\t^TJu5ԦLJrQXRF*[ XAz`O={1Oa=3j3ޯ1 KV7B9u~O[:DHoмȷ^W-(T:q=GWMX>Sf!8WqA reї3/bL te_ y_Y xk%Z\qri Xf_JJ:KE4bϙf^fN/P/pR/|P5b3X/li-θ^@$ͻ2UmzKFmu5H", ꌍp0/`"&.AmL%%ˋp6[ij/lXc'2v 5sn O "K5e(LFeZc)Y6 Pݺvkwe_Y/ETe_Qh 2-ii- Fۅ$9,,C%([\X1Ɛ' /Ԑq(APW`/>AI _3wD/s4JӐd5иu$$[*X/iq%{ lMyfJcRIdh^ċ2(^abF DcwG hco dfJLd}`2IkQn3bLxZ[OšE_h *e(&\te0)Ş2]QjL 2/l^K̽ 2/0֙%En]aơn G]Aa/ЇK)uEB:C?a0kшYn #́KtǠ74_큐TC, A)^X AsZsE2+f 3xУ y i쟟 \x4n .o6YH\8Cu3Wy9k̂M}0rƉ\Kj?Wq`_<`KkD[$Eƃ|qÁ.Uq$<+w'EAZQ/KEX* m@ozӮBĽs~7gHb?I,>7E;$Vv0|Z 1U{y+oďkpgċO,_r:%?G,ZV(<\F15E/O.6#x wj ^`Ix;[YgaXaZȍrv3wq?[y-.?HC)uZkoBJ}l*ۜA`R!]C$AuÆ<;p|jj6EHnur+KC{nL7VwUKy|ZsxE;A%P{B Ɉrxޠ8}6{ w^aI/}n[V~_-W{ WuGŠyK烙y9ܤ_3-O}? p^O7"/>40q<Zy& mcp4g)jyKէmkDAqP(B]o/_+pO"nj&wVG58<.3G?8JpKA"“ٳHY,?TxBU>7@Q|m}^"ʽtŖ SŽ簂F7_]ZO0 1_hc7LS?eUbLtj,߲^"?PP__D,\ܗi7цa7N.ݎ6mЫG]r>j]?ex}_;tպ6 ֈhF.W/.O\C?HVHt{D|vzGPcBg'GNW5\7n7kGA kzWu\ӈqvgY+t$>vC v0z7wM]s`\x`\Ǝ~8ucVAmP"1.р3C+/Mоu]3Ї}9؊T n;Cm+uOR>+{op ʴ-_=4Wn1ӊ[5=[f?9˪O,BݶGŚ[~p28MV1;"?C:sh=q>$zհ~Bwov}9{`}½ Q4ǷkH2י 3o}bV}pMsܙcF"Qŧ5 A :5W2K/5H". ,p \of 1r2#mmASJ-i1~&]2W*+D\qT7o"zej3mIy!k9Qfϒ%WKCfB+hA*Rmjop 4;jhl46 5!G_U{Dm2TƴsIA~FSa -#vB \jhtchl46 =a}CLbJRL("}E2(^ibLdhG 1Jld{6-Kv~d{CLhl4{~d?-yދŷ2@]^ѭ[0q0-$ۋ!Q Fk$a,|~!G)6uܣyl3!6LNImNX=py~m%Ǡ;aP6&0Riǡ-|Ϻ5ҊGg^'GўEzj*T&܁&I&M3iԭ`斕cLXr͞w/NmKIAVRro?ٵw\IWp. Q7iձtnb~W )[>'14tTa؎1rP)䇈wno08' O#TXNEwy?5H[&)*Ʒ3{GZ>0q}NzS8Kp|+Wx7@TrS)b3VJ˒04`x : %!e Q7b*Y1.ETWڹω) {T40+_Dľt{AceO3IEj5TeƤx訳-, k77JY2ͺVư|E3{⿭;11H*TE  iŹ 6.V30Q+7} t/b:=v<>2!7kƕ06Qc-vE,ie2AyrOsxwiT !0.Kl41BSWl?-T= .dt%$9RrMj6碴&_\_Qh(A3,&1DvPkfF"xHӡJl4.[Or ,գg%Yđݿ਷G;ly>355P>j [OXNZ/ψ^--Mfa6-l ʍV\|/.4ƭ hGSUg_:5,'wCT ?tp2z$vbЯE궎j^:9~&GP0iaMd!nDVA29:my=.Ԕ)SI*4bTY&냩t(q}yHԛrDJਫ਼:rs:3iZR[10G(K^m%]44z0uOS1['2WbU@{.JYxp薦}_yG+aBu2kwL,L>{Z㐖/ &eRD-r6~qxXݹh1!I~z>b5wm!cfO(9#6/,_'0T͛6lٳfqRn{9wqM݉坘u#y"溛"/cd_l]Wv]+3},}O%-S7BOh4)p|I(^vv۠SvEz ,:f͛6l.NYdMːsnpଐrbm3N+:ʞ; Zֲ2t/9iS?[3j|6PhTrU  ̢$pҴΝE]$](tܩr<~N[W"PfrFYqwt6"p.Zx5[R+:BpO) ZAl?mtkZBCLmvT#1W=D`;xun}զٌuvf \" [quK:/-~&0^ݳ?qu^9S_oxz$t @ ;WªZ bWH}b& neң)YD#-ݒkdnTtɮ+lrY[QGWߤ3T;?e6*FZ VDk u]%Pvړ3y*{LBy[ ՚^GQ]VT&" Ե4(@_I]1K~߳RoP%wN";#,6gLJrDj1V"1#,D2PgĘш?C ].x2@.|)W:1rL_'D|8һǂEra> @"a(ybKMe݄`*0<`Fw#;‰F\~W1cxc(ƌpC폸Wox W_"2C&XG2,e`fGXs,gt=9l}#&pFoL(GoQx 1Ǯ?Hx1*?@ T=Xv<pF??|KKԏ?qer.,<{RC}6x"DQ>{ѾQa%pD`뿉_dj<#PT. ;1 }= Wz84f [6ᩏ8HYD$'8  ؘ" /m,v- 2ݘ(jYPdHQ_msIK8mNY51拸a:J8v6$F53eq;bzY+ NʦϿI$mշBI8Z14@>Jqѳ܃\("F*dVjfmfvq' ¡b6Xv?!d\_1qvg5!Ey^[GI\9$tv /MOδONñ?vUu׽}^?ÉsyՐ޾Q"`V-YtUq~ vňWGb'}Da^M vy<K/ЖbE>f;tV4ۅCAmϊo7".췔?mLhSv܅֝-&hiA9wz{_753R.v Nhcܵ+4uTsx??ckn}ͥ[ԝFDNqm|]=?zȢ>>) _fyZ/,co_ك_#zZ koDz{GYt[_kzVǽ}Qno߇k=M6>&Ý>Nakߖgk>NnUsz<âm|j3o]mxIsx7_Wtu}_:zm?S_yxcxڽg,χwhegGAί[@#رjf'l)p?=Dw\D~ywgE?Ct]r^}&rvvG>jmw"~å˜%_·\.\f}@m2Z@B64e,&%:᥍2OrͷN@vrB2b{J'7Fm'ńv@4G+H 21NGV*EQSDuR Z HJ t:'gg" 4 : )Xp2`cf{E hfݨ(U6۫v d6BAðL$MD =  Z"Epx!YCd[fe*D z9c3Bj` ոjAxI]tI2V #̅RNTh&5U*A{ߟT rBG<_0jC[=62+= ay1qa7򼃱lQ[,i_ y2"?k ⧁ 6.FOr tnR ?/b/Cރ*ˠ&LL&jZBK*nهx I*. &ȺP5s*6ww< oS>O?8qj+J]k/~shpv>qÓxME4^Ƌ+a:3z!L :$:&7ȋK_\b D% BoIcp.|ҿ@ߋ6 M- g@#\*{coW "E(:qgVr8 ~\h#F:`kjEwiߓ&a*.LQRKL=rDqҧLM6'J..k~?.({fS-BDF8µ) V/U[9D[]U6*CXsH/Y,>AGW|+$mi(Փ/)4Yᑰ֌[:%c/&~V|B]j{!yÎ,L`],dPEnH$n~vxX9 %+:N) Xr ],>m!EJ-o=QuM\y׺K:_L p$%#ING 3lF(|UrZ ؋<ݱK4*߄`=] $^B^"F 3 3鹳fejq,Z + pr[xͬ&LEJJfQK`dq3I j*gnN.A<)KR6$Mj,(xA p![j.~PX:!P&D+|X"vBhɰ—vݑ #+<8]jRɫk%G%S .hu\0n4QQ .4^_ /\#NeMgf; w#ķsA +e<&zh8%'&G6|ZiS*Qؽ{cD\nB\ t( RQ  (1xz^:7|UVwN9SSҘq 2PDY!!wrl0 iu SF0ֿh6 [ Rf*}nOanfR"3f MV/ c z&2°(. 2y3,)9N=$õx֙^;3VĂ\w*+feR q)drKOVebdaVЅ'dJtSD/ cSMigzB3U;L| B|m'Џԍ\p<ӂ(GF<(? D"{L8LeN;?4)ZG-淧ã0;9 (ԄЃRzK{B!p-M!O'8p6o&uRM=kș:~O*vWM /b%O7Gp]PcFII"y'qN92g& Y@ JAcIW[68b|nܠYrUM,u2iX Ke)t\O=vƹY<>iCр:~)h5J5ɹ[=cl|OWGF6F*NG'_eƚVqI [sw+$(5dj9.b 'wQ37]m )u`[=JiLhqBc ǬҴ?}iV tV^´,]aYU{cF%Sʬ2TS̥pU5_:yz Z8r^3 0扢2f5,]Qiw~Vm:ʌP^4!t$j@*K &2m/I8n{CAwrYM%5w;x3XsI$1,O8~hꬋ FR29v?N=%Akq͓̳߀ k~پ-ae n=M PtA@./G/A^9tE P-h6y6I_4a\ƙײ2@٩?irFDvܱ)u .w z"\?V">{#Z}3*VA'ZAR"M0lV,Re)C؄"`ANf_rs%rYE%-y/No)G3Qw_hbS!L$lee尺 ?D3C,W=Tv;3b_x\hy.JwV)gף0 ]qMZ47;']Ba䅌cΏ '~5~Xn@nH%v2.aLð!hY%(%v99e\!S7P0@u[ɩjVؾ/nio6Ii+WhVSR'*'N;j\f.-l0 +/b!䄨%XX4/!XgsE¸ ;L{V}Jºt#=C˺scFWMvs3^:lU :;[ jhr|@}#pES%QM!cF/aEЗ - 8^Z )N-̩D 5ļ~|L׌R%M-aG&:fj ާ'MB , %ɥ/{EOfڷ7Ew"b02R |y @'-gL:6%HM*^)B\T 9x_F/BI\V4'Fb=q&+./)AI2pQw fNE+fӀ٥òcB- j`óF1tv[!|HSԋbxXI2Ep >ש02׬  \ے Sˋ ``}So/ (/a@yc׌l, O.8YqS^Pfh6+2H"!O?*(4Qe-XErV;rLq9zPx\a1!5jC$2mOH^J/ɞ6V@|G򰁙"XD9tLlt^/'こ;2B@9@Z]M,B+&-yc06tyz!!hJJ@83alCgsaq gH0AE`0W4ɟ `EBSlM2g탠>?Pg>SAxRCd04՟~KR[HrqCGy4<n<oL*_ %,DQ0pd &W;=<8pes@%kH4Q!?4JGNJ"w~i9&sRy;"4aiTGύ{@xVl%X9n]1A((Sc 0,DPI&^`Oja Z': RIĉTm9MW5 &(':v!xu%xhCy-X'E Ω QBX@Lc~A-D ؅H9$ˡ14)U $v`/4N1 թ];,CjP]=;tF*B0>LA`%!0QA.PBo ucAB:([X{ƞ8s\v@gʛx7_PLfP=/ؤ8Q{eW-;j%;;/U/s  tXaIT$3NhN3>.(a-[k6@gW;f)h5b-T*yVWah9tQ:v˪M2~7x\ OHJ0ݱX;2^H\pUB #6T0W^VeH 漎ϰ!Qcx,BhH{q +O2zBdi-Lkpc ` = yuY7]Ǐ(J;oxVTNCqssCVa[ULel9׀;)hY '&F7r9,d090%A;.]u-Qĭ~J=0tfl9qvcb']a~]m W}w>iZDxD`9Bل/i3IՂʼ.7с[$Hb i.7PJ&A2'CǺ=rf*@] SgA E 'EnJz^"? ؊SCID-%e }c&ڣMϏp|k΍S:/Ǜ RKǤNA^߅{@L=ū/ GꇣF,+X?K9?7p0ލwȡDAQSuƢQ-w=duLf+GDk Ħs`ߔ)uu41C&2D~D E3+d2ݥ_27]Za=CO~[G*4E*De5E]TRl0dcMHkPZ\a2*YQY;WxXȜ2)'COY!gF;w|K)79_RF ^LqcyǓ %xHN;NXc*ݱF+in"i\U qG/sczȨt~@<LJKud3C3LUL<6.x:Zj4i a ZP HzJ )8C:rEP'|bIBڷ7w9ZyQz \*2Κ(6o1->2S}ޔDQP?\^^H,Q[JvAlV/1mε FFlegIj[ztSM 4I K00+j5T̨v7lD* m!mPvcaPշ[܎=w0@Zixm ҅/҆`9zbWnJ!YCccf\/O}r4LvsfE2 mX6hckc'(}_^gK&z1XTi ex_Oh(fVe7NQ*nτ];9dCX;?}P­82Big.u)wcMprhbe]LVR^ᢆ'Tx8İG2 J=Oѣ|l2#4y=T.C18k20Q\AE|P=@љd@)Nz!4I A"NKjϔC@H8m) r"7 B}$ L]-"fkO504vx!٩CY]T('2! 30pQc&]tx TXWo!< $a ]ߢ_hԪDRtc3C R_m N-|̟](AgI!Ҁ݀`U7CvGff t-Oz9hh*Sی?oC  li4pAl==Cw(7s]q;YxCP(0o9Xbq,W-6t1 _alf0 STT+o͟@vVS}< %*$'"h+hl& xNrVxZ巋:D> nE[F6_[s E `g _$\/v)ބ%uBa_7 (iXEr A.LPoxd*]piZ^u<; RNw\%r=xEVٔ0kĨ b GJi.0 l})R9|`S3s DFAĖ9.6I1JW`dJW&Idi`8BŃjG) B(bIA)_*,4,VZ(!O$X/)d%{ۢVhZ5K|+3ܖZaB0T |N08t J{*k!G&P68fJ(P2!-J޼S372hb XAO{p@ ] BȔQluw}ye=thyL<]0D[ C CT,u9y70:\<=_C"'ӇM<2P}*0!Kd;4 <߄08'9&̃ccbqX4*n(?eiVfaW%TB3 s=EJ+\k lرVVnaQEMLQzWx_qFAuGt'X>[cˋm^' hik! {l1 n ~S];ʒm &p;ni*W jJfҤA"l`Obʖ0Xm3f"FJJѿBZWD#@tkEY.buivaɖJe(4DsLܿb:) T:wru``Iv(;y~k 7_҆BoӍYw y`8o^W;+] L!\ă|;˾:x[fl O|S(*7b^07C;Gn1 ȼh/2ϫbQ=y8Ҭ -F, !9\f#ibd]?.BjWθ$r1Q E#*A2XL_NRҜNܶތJ8KH* kzɋƌ,ӟ VGs4?xWJ:!K!x䶂ڃd%U<^)fhr ݕ88hG"HbvcWAwӥƧY/t 1xK[|Cw_+;*e|[L|:NZg&Q"Zdʄs"'5S8j;Wp3AV9c:dȏ j~lZ+AJ߷x5ZN,m%aX_ 6W ̴&c/Kl\1q8,E[L"xM&g:edRe;v\_WƵE iSJ>2LJ~uI|ߋpLNdʚA,w^-`" sG0FxI{٣b%YR' )ԫ|dѲB%=GnJ˚eʃ:\fHt{wiVoO9>im(֔H F -څt:`Y hT//O{#Ed\8]3X8K)m RBh[@\ 0kJax0m"tѹDB^dVY¾N98Ż.%\sp<%=\O R,` e̞@%b h& 3nd)=HjyCK8'}$,}¥V/3aÊpFH` %xk&txu e(m|6&b? /Z/ A(PX_RW=ȑ2ˁbv4mj8 8+$1/Ԑ_$KsW>V+[:Kƾf8o EP@vvT SXb]vP}MnU%TxWs\0ù@BU(9INf$ә*Ac[LDaJK0`R&TL5-q[ ~B_4Z [A9h َM$V<4 G~!ΜMGGNJT<~xPvl_fF0~ o$_`ߨ>D.\gd40m6 ,sg@};I5YmvV9 f~oɞ/9onxVr'/?Dz{+Th7xUB>ϔz vln*}lr~k=m(Kg흇;Wmt@D@ސmǛi%%8"on։Kn-IZaړ]M ԾLc]pbWƶpWq=׳z[w}rx/0>z&8LC ;BkZ`kξa.jewHH*!zsn7儥r|&"ne4w'ϛk~Y}% lug=-,wWv\KYrizS!OXUZ5ٖkSK3;WdHx?{ !+Ë?xMZgtWozZDYdUC,%kyĒ N /pHmOW %/^#"D1߬-L%pB,Akm8 qJ;yF_+xXk.8@b Mbߕ}!e[PWG*!@G‚Y,YȫĬ_mewRv\ ^U*\{iUCeX7,lݤcg߁ag(#|JZAI:kRPyrxp_eWr2UBy\!kKy$7=vٲy,;N& |n+@Ķ! Wr]%isi ypn57C.\Gy܅]<<[y=;lKh.uk)(`qO.g?A[v^:kh?=r'p"Yi^J1ۖw`Ow{a}h~Ԟ%cIpnF'9{b:c~z~V~Ոݲm=AHٚ=H AW __da7'aj7SqT %h8uH{7t,?[P1̉R7aR9`Dwap)~`)?hf9*UB0 =qje)Eve*ʨq_WQ'2( ep `L[sv)4 _Zp7*[Q"D' f xyKtp[IP"~ e' 3ť+*mN,u8S؞@LN NLJ8mNZq+gW Dy'l׹vb am0+`@޻4D߳loSs|H/u( M6 ]6o7T`ޣ0ƙޝ96{c>kwD(R~76!=j F{<־>LmjOmYݝ=yMfbeԑ7S{4}|bop}݈O> iOsMΫ#x ͚:D'G7O2Hkb=GQkv >1>fso߹L)Ѻ9|$F*s;d5H#);l5nyoEkc~+z Q kSbRkߌ> O!ÄR o9avAccN|Oq5[7l52W;ZI-=f~OYN'9w*/{T ohoh>c_;}7aP-M#}w$93)u=3P>Fzp pA?sGIF=Bt{M-{}ЛNgUϢH&CIcgv?׉CO O-7%DíMk]ECgm]}~V(C;cM3щ{o)O˩^V|** -Dv?!o=GiER[Z_R2AlqZ17qs1Q?֛~6rNg;^;Ivܛ16I'CV)Mbku]n׮FxU6aŮG)?`{ $)K6/d6۳o,ǘzMi8/G!<]/w dŹKI/siаCp!ӵ Eێ?v'mQ%yQwNQ>aZ 7h7żCetUXs,AyAPI.u$ 1GSͲ=ul:kxR+!)*9^#=}Ihk}WS6zkqp!7̓mF+X7PH^%v{=TS߃E[p C=_g+3Vͬ-yMkҵr1B^z{P+,[cPMXTP~II)$?6k a|{l3R0َ{> 8"mpoF$M jjZڍS2Ʌ|tcy)lJǖDyeS^CMnzM"{Pz$7q{ EsN?wXJOrt+Qw8Ok1Mw\{*{ywy~o=OeZXz _B]M Bs6*7R 9 yoQSSرsǡic1|DNzW߉K[a9\Ӄ:٘%~ϕk3$Mו~Lϯ#*ý_M祮is:D&6xO'w[%&U胨 D']rjI1{VC;p<>RYDU&Yrf7}_tJnF7S|LWHQ,`f&>7`{F!Lݥ췲}u#mv̲)趬P䷪Q"Zi;}yulN4r^`=fGۦg*[^N++P/qM>Eco$FiQ3;+#Gaɳ}8{Tz*\~&8Y;r}Qdm|caP+Nf/tA6ajfN;2Er?SSeG*:ﰍm(Xi3Lg_2ƴmkҖ=ۇxzNCx9Ͱ01ߔrxR3sW=EnLͪ':ЮwFe\Ł16cE}yzBG/OID~x)P]\Wd-rp$_"@jvDѝl.ldxt m悪Zs]+4Rӭ{і~xfODޫhA렂Eo8ﱫZ5rnA4k1iZuzֆJQr`fi2'K>\r2]jCZ'$UXo.~.hrHXnͨeP,*~qI=>('CQ-utJj[itpu_CmIFrHJ}u{>Oq2eډ7uq+(92NBV:6u1ޕ<Ō[SEH˩_7lU-Jʘt+]#kqs+V͞ X?PZqzX+ kX[ɹмk^&>Y֡S=CG]}V {soo_ڵnmX MjZ~n[brN۩as)_V:.%rK}CbNo#,I.vFzL Ho[R-MH3 'I`D\YjL=g^a~)Y>FDŽ6NDz17nGq@>+C/B4:MJV߫*ySzT tbط1JܮŃT}FMXD<9TuKP:7hxJ7DjښqT&.<7щ}3$D\>4nb1I#-N؈CZ·[tW%mmS\k-['Q8jdcoF3oks[rLZKҿ˨ub.Z:R->Su(]Suj)^UU۟|ٳf͛6lٳf͙ک]%_?P*I,}/2ɂ?]%\^e[z˗?{`+t^+Zjj ' ZzGZnJ;zlV'i8 C!dj҂,5ۻEއ,e,ݚQݫ],e޷ d@ F}~l=٠v_!(rF]vN,!k|;BHamS!fh%l߉{1|6PY05(r`AQZ^B[3$7~\n-+A8NUEC$G>6V($# Pk C`LGr!W1kCwo&2;E=ws@~PL^YPGxcqx'/C"jG'P7`F`ǜD6aq@$z$}b"gA$>1P'GnFoF|B7C|#>4~5B|F( ۍ4g:cs ؏SZ>Br<"Zrui9(qG8 Q,>Bv*'٣~!'# QJsd43c{#a `֍)_Y#ecFPq`+}d,J,0oVG &K'P]aw^7@AThb1Q* ,b`A_TCP]5[n}_7 އjq5M Uj}BGh|SYo0&ZfB1AX28TX"@H=d0a ?~@Ȇ@2AXXsD2M(̊l'8DA @(ˆ3AB:$(|1Ɇ89ֆ-C^ lf-h1ކ:6+W^C;=hHCN (wdHY5!P>m>|`>v~>ͯExa7a\'Gʴr?>oC A||@ ó>P| ?:0!F0iňwarvC`+CpM-\!?x.lѺCXbknnRªNP>;QM6:$x0!bBfs,32?r37&u77w0 w'/8wu/zq\pS*#㊙|1O]^P&aP~QUQW+H?f)BumtbyNzfoqX:ӊՊܝB;j4:^n+6äfXOԊY\nwG^_D7Pγ\sTyUYOpu򅆺a*Й5V?1Vā9yO~W b-y{auv}Ml>㴼 p!lÈa'xi.JD%| 1i/나SDF $EabcS lqseӀ8ڸL~1~6.\HAtĜ#x}~\/oM Ļ\K8>C볰!؇;쏣Ӝ@Aϐl_-|}F 0I2:yױwv,J8q_U{iJ3"f8ƥW\HyKlY.wTu}IDAu02 IIbbvX$ )cfc T<ʂG5l}Q $IZ ™ά[$"no0%^ykMmWUZdg3U &RCOETOP]u92yQ馆l[opRԓ:d}:R +Urɸz*l!Kd8i4D3RXT3HVԧA[f4Rft|nGXWH9^T5fv:4t>Iih|_F%uPKȁpy`g۫IF&aXi_ t.PwM;ahp1`t(Mn\yc fSpps\&nƎrr_4\b:7Kx=t֔q?Qݗzd8kqm>KhaVRxW0ȧVnMIs}d yصi]LJO\6~*[J)[H"ĈY*ڣ_,'Ϯ@x6XE9ĵ{QuR¢!WN_'5yÊ7q$ \T!se:nPìf9jܫVU idzЩ]L"ȓ Aq[p)I< Ie/+wMm-а$+#d x%XbA^V^>&3ٍ2+y6QVM In۠8d=r߷R~{F,tnǸX9N7[lObÀǣҒQN@nXwU5٭>7tқ|Iܢ0!34WR2U~ILOX'.x g3GH!%mkfe˓[tɗ|l:'R -gijzܡ9z-D6= !"PI: G|qқn ݋ݫmxݟ_HỶ[smyTFۤXuǀ4y rKiގ'6_k9~f+&{+u9 FPTQ.Z8LXӟzRMŰ ީ&ΈYϫ:LZZIP:KԖgR\J^jS(%4CAWpe"y8q{H2mΣ@FPD!dDfdB8z1EĦe)yOiЛꑴCOY(VIi)#̡Owwbܛ6uײ!Kih%i+IB &ء>eW6J\*fhG]K_% Y$JyK MdLR dRO:>bJk.Y7 !kMZ!$H8:t*{,`%vgӝg4`DԴJ5*nҀ`ER9g{uD_zJ_K:GӁ]4YN i9z k'ݨ8m;6qZ_{uẀgMK(kBA=$(|_\Jг7R+ :~0懙$N~8H|+|<pO\s6l ]VmU=lSEyVC#Ceb28Nʌ%F p wDM~' s8/v"GD5,wGjcٰR>_*ݬWBY]ǹ~"=uLЄiS_WtL9Z9"(#{'$+7Jk7'd R̝zEfy\9%XeOS5/ xtiLJ2r}ܟzqrwuɱCVTC Ѕ{냶 xhs&7dmἕhKE[[vϷ35I5MmS^{gk??Ye7ɾoy7ONd3i8#!f#xBvwSb{)=u$63?s}?Pb3wAqbwEJ=CP4;&СE[v[/2G(v}{GQp)`cf gY;| IL&j֓R}OR^A ``>].*3KR45-6Bi۪o"BfVysOqOStШ35GYQ~ ʜmNzUS> N)UZmX6!Wj;b_c2X2֥=lސ4b9}m:julA8.} N5 (U1ꙍ WWNj?RV yW4c^ cK`ܝiZ/5W!>IҚpdcV_:H5ַ,y:vbcʆ=5;zF]Kv+J#ﮏs']¬u:݅+a6 g57?ck5I3Ư$jP\46Bo:Q/y!SnD'8XּK֤pG#\b͖??~l·IO%-jIuc0AY+8D:#X0\;Y?8. uyLfuT̍=fF^d.}bПb|'~9'XƋ("oy&Ehv;Hh˳BHh?ь/``yؼ}.7ׇ5ᇈ9u!z͗ŽƵ R Q{f&7ĸsv44)`v2=0{އ,\ }Z/'?  w #F?. }bp| !<Bx:Y/M)vLU椻C X|@ڋ }=aX6:FKZ,ަI꦳zx]uHlф|9Bml0ݨBi]^??!K?t`4,?7T'3 Fonts\Silkscreen.ttf !9wyyٹzQyQE$z%+=I4HWA] %Hiu"Ta&~EI8Ђdl081<$Bqa @6@yo/3>]enfaܺ+MU9s?*.7IBJ-,^n?YoWnq[p<߶)%Mϙ~--~`y}?>**kw@[_fi9<~gkyy?/!ܑP))f^yfaDnY7 Ujޟ89{ÿ/yG޳{f3Q{Gnw?jr/{? upFgve/2Es; ^_H%ScR:9 å=l钎J35n%g g EH]9[6ͳl6ͳl6ͳ]G7GG0vs39} Άo5Vn~+.AsKT@j5[Ϭ,ͨr=K4]|/t<;,(_| W|Yf l4ڕkŷQcdk\,p|mpX(Y%WSڟ˦`YR\=5lNp6;ܥFn3 nwgGS:Ʋ>GO Q髰;#wm*> )lj-Z$DTTf ]ŸYլ[(CBmʊ1Kms]Sm KK> ]|c!AdL3bEOYchA'BE\VHp.PRvHj;nYjDm uez- (]'ױ8qG0(JYT?V:-ƙlwe^[fK&DuEքEc]*6!the:HqASO3T+6gt:^JjcW?oXA-UlRx}[h_l#-jFأ{ts_#XHC?~`@gҩN܄;鎹K\  .ξ "qI!d> u8fGֲu޾H.Iۮ֋bC%x4 O6NΓ4ƁӺjhm౯Fѭa_Ɵ*̋0ֲ@ԉ3\eVƒՐl Ș>϶hէ2*%:i>Z8k/@so ϸ ٸ +<#8izցe+6ueXo[ƛ=Jul{EyW88:{aq&:|q\u4t\@JJ'wX $(&; Dqi%x2ɐ;Kx:(\ʦtZ(НsYlkn+tUwdԐ р83WVd.sqWV=Tt㱶ӨJJtF6ǧ#˛pz͙-ZSJ(3Zת8idWZ᳨\u=Ӓ7Qw;5WMh2M.xulLK@/Y{6gԒw82vqU_23x Λ!m62]Kӛ1jUAڔ7{c⟩rDH.WM$8LiO\$p6,+}; X'a\CxRVbk5xO|*m_txa"3YF3c|Gk:,6 -2Y~W&6Lvնң"JF&SDjn*1-xe/ANhJSAy$t &iǠN~ի8ye"?^{Ndȴ^6kNõdjoMysөSo4_ubX gV0wۤ zIEW5eM\+g0,W͵*1a-ҩ{f6ٍex9 K$;A凢3uMbZd ѯ(E'ڤǵ:dzf68m@~+u#v8T.( FLVYPZ~7eg7y "m-1o[Pދ[DO+0C0M·\X]iW>itBvdxl)gi KDZ<8Pg餜ؖ-㓔B Xl 8041)}FǘWi㑞uIQxlRK 6W @EO ThYo3)r134$toúe6rcb~]cz7~r_9q̮5bsCXǑ}6T-8e-%Lh㗅t_KBx #H Sg~d})re}`1?ߒ8㰑E8/7} r_= ͋zU1vMf7s8umlкw<68 l0<n%*Y\x#Fwfƺk2;-z=yqW}<97dn)1>$K챾} ,QG\XUxP5ٞۀwν w8/BK =3(q#ƟN.Xm7#ǸzDϓ~&l[=6 7xn?/M7og˾SRxqkj<ˮFc;V7,g嗳Q/!)K2TQCM )Ѽd_zaHz/W:j(TlRJ*TRDG K YQY_,{HIU'LQU?C`>"|pd>FQuc ?jr[y黺]^8y&BD}BeOU(P$2Ph 9Y!lU>#/AYo^YA#A'|CA/ة3%2'k I(x:h'}1_AݡI nP5z w=w zEOjAF/ Ch:r.6ݗ7}ZdIc!e;>>Jdy2 -mY~9I_mˬ '[`+ZAYnP)8y N[ֶxְp;66-hK?m|rAdQ[t[J}en]w$oK|[Ev_DEޗ..!qK/"ˌ^!x_T䗔YխNӮ?͝Dӯ]P?͕A$SV2̛;~- VYuF_l;e-k22r;k~c{8<.=~}x><_Gfy,H OX =M-&Z(ȋx"+j,sh-2Κ궷PU~{˫vtf#bᄃ{:oߪ Օ4_*hrFUU /ie% -_!@.^\'nlG_bRxm QbW`4!]vC,DM4E((#H8{xV@0Ugښ8Cx$:6HP!avXa/`_ʲ'l"hɢ.S$Xx{pVs 6Z<,DLؓb+D-[dÎOYZe]A2 oa lEh0ۂ{)5kBCZ4 ʪ'l"i .Q100/MhI"^B,"v&"$Ix䈸{u l!Kʑ]_^Q%#1ʔJ=FFہ@#˓]e- < ,"v&",Js*&b'*#&a8^Q *bfUSUﺉov7|o|fjfcZkF&w-F#vyj5DouǰDti %ٷOme]sE18"cdpnjob/<oE's}O)|x}o^;_x ˨C<OAGK^_^>Ns/=T(ygw <"~5~]УC_y?便 |~y^_u=El:_ֽSq=ρ|ǡWQHF*4vhV=?s*|v蚷x{bxL{=_Eq5ԝ^яX4 ֱ*|<,.1fOFwqNϞ~;Hst /7<>2?KӉTߡ>Q=}c)yF_~j3gc(xx!O5$y.*_FQ]O?ua~͏͛sž/(;Z9ݏ ";>LS﹒=e?sǞ"b]Y?tCt>S ZgC Ŀ(lԨ6Q+Y< zeR+T+95zǘ kZS1$VZ_bǰGPW_RlvtJ=P1_9?$Oc Oձ$15e0v?+PǕj⇤ >i~DѷE1qwnM??P5=ATP@>kX3l{Ϻýz9= &;_z6z~`)~vr/irH-ECIOhQ73w^1*!nZOC肖ټTl^8Rn~ENKH~A'E"Rcꇱt} QELLzdzniz7|ŕjl^ ?l䍏߷oDkur]'}: ?V"BKI_ݥG$q2nNPwo2B,zyNBIR:G)z?7Zl{d>λ?sQK ch5 N?vVQ&<<բ*n7NCCSh b:_PyT~o?c!qZgڙUfxd[7)g.."PMTND3A*{?+A;V3UNQPy<FdAQLΆ@RA/=`?sJEKy^4E x\} E}Ҹ)``t>9(xv" (yJ}E38=D {ӹ",څϨxRa d7.#YM){HBC[zó3N$>]_ ǵ؎篇+^_6?Uk"x>~d9GW&Tҿ@ <<ʔ5E $jaj[Xzh/M=Hz>)9R/,X^_{~@~z Y\>%;< x;J_HvCcR%G޷(1KT%E cGqz٧GJUt z+ '3Wg f)K0 /Wϯ;?R4?Yse/uCv|g/F2ڗ;)?2g){Kaw^>%oMWLKr-A6<Zj}uxP'pdmG)f=?hcƢcX4mr ~0cEEe!CQBz~c%J")2/&$ko|"p!bg%qC؎~ʏ1cw {Af  ϴ{x{aiFwh,'ێMuvfN}c.I׋WE ӓVHb]Kȿz[<{c5&s;0 C1=jsE=ݖ @|Oaׂ+ZS *]-Mv* 5ՕIuGlb?gz1ce:&Bz"vr/K7i. ` tzE*zw./pa+'RW)J?s@ Jwd>}O]P]iׯ.Wĩ_WvHqz*z7,s ȵƓG+r.ܱ3pp"c8\s2NSjZZ,JOqIbjE$ÓKM@}?5o2\v܏Da_;q|Y{/*%ҩ]LSӪx$\s *>NwT|©+e_)dW'%=rQH:Jj{D{^/2,=|b8E"L W= DXf)5j_aNSO M%OË]+0G_XyEgz% y_/h"?qZ ׋Hőlc OrAA1-Qhw#Js6j48?c:1=|L堍IUcDQch|qq{/[r:،῿c>'/||4g zU>RxDcQ[~~Cs㾦ϸyS[rb𭓟NqM%ǺE?3=7~'7cb^/}__>ƭ~/7C%X~EOcjKF\~[}viʳ@Punz5v9y9Nv}~14U_+T$7Ha Co1dih=!/}w6$|eU]&'&Ghhh^ۑ^hN*Hn(sw6 jIvW)޴zorNV&`xը v[eCz.s9ɐ:G.Sb=vػ9T,^v; _~oQfuw(jccrUJ/2ʔUS t5lzϳ4-ZX­6C3^K@0tlRbjQ*}:i額#ccDb+$tBH+6Ie*{C,"Y%,%=(|mìw .3RjP^yPqw8!Rj[ f+Ŝ6ڊ-s(bbWÁ;QF-7Rc<9xXqw.QHMQʐTu]\ٱJ|]]ߋuӭ9)g1uԒ+sEW93O F+<R y֧5&Nj{>n2̡qE_ (RLoF16bK4ҡJ%FB+eF'g)DpB ~q!J-Ӣ*8̨#ަ;EGdu#YG*v~Y舡EGn-#1n6Xc!djaZH˅D6w=tƙeuU U5@37NڤT+j+h/yqHeZ -șD G?0+{f( '%E6TLyDK$&|$H;;4JYmupE#pQS6$d\]fhzR'@2n' "IOCW(gDFaNl+ٔ5 Qvis{k[5HTK ^ 4t4)+5i#2l4dBI9KɴyRDm:'0لDJ4jq%ya7UUHURd::PqYBfљ%BؽA36r* Ee \juv&oiuLΝϔyYj/_kAg|ЎK4&@)B{ԣ˽[kYj͟=’)Bmŵf̹Nr3kv-ew TnJK5fK# iܛԖMף wVS]_#WY@IsIuj wV}K;uIPmIAJ-Ѳ6N]l^4Ӽ:YK䏊QU=0gh+ {'Fl.V;QxVT+!;,s5|U#= %IsأT,eJhK}$>ڃ♰;M8NhvȓctPhT) ZEM0Y Y1 PQj;%: dG2J?m#I&䂚k RO*~E?;.(>%N/;]*:nG]Nz% "6AE3@d=#`PNj->1aiZ4K@Eh z'3vJf?M2CaLVјK~pVT46Z<5MG31z/ (ꙝ;Svi,& P| jw,cx,[' jn FNԤ9'HKENZLEoݘ)WK J2tVWI2>&pWS.' 7H(/b ݒiX>x*(?)rM q.vW+f* JtYRU}32Us9 'SW(A RX_9 jvl C7ڙo)uܷj{,[7J,fĶ,`n%?r*k^ T2tAL;YUIxi<ʞ I J-[ &np5 i΅-9NGG &dݻ'-aB?͡Iw<ъ"@*.7CL6s;-s.I3:wCn,Mp~:D ('e >HG%bInRg64" *+̵MR~eejb-ɖb3: \ m3NTflFīs5'jx*U#th?^7Wt#zmGsi D-NNϘ4*x1(,`*-Cyr²aW"G&M#P8Q2QD%ƙu3MwP.2d߆/V>t.)4}>_q'6%;u1PjD첓Q9"fW 0.=H71LiEE$1>ʋN9i/b+eΕ4C;˲ cQNJFr DEJ Jn\5Llx{F0|(QN'J:w*^zf|9ǕȊ~ tSU9A@:ݷ 83r94o_ F}Χ9FN roZQ:uK¶S-dհ iŪs,~折-:stK:^֩Mz.Ri͆&'ef:,/.prl3m"I`\v>iuLΝ#M(rYb͸/MO:ϒf|OWQNU{jL)e/0߶WM9S5ܕ:O ?a`xF^|zIkr>&8枝Ae6[^4MAձl$$ B|՞|5AyPJ;*3F\um3!ɒEݨ82ĭ zKbI;DrR%)HG H%zj&d4z5"jgvցӀ&ݗGA\oJvcGg(HAorVm5CrGbpˠZ_WhMgkfg&U||/ q] )ͼRmfc-ԐoYG!f+TZxJ%6; I-c btFBt,R|XR[;AqvqWüBCi,Iֻ4GҦσ^;=Ҙ|$^lϏ O 6i<'z#EAM2hv-UI1FKl%4}k~5!m,+ &p,*M\L9V57_4"/GN}ҍRL,|7*CqQ#m5Ʃ*FeH.f|u,l|f<_-M)gV෫L{!iU$ƠTl:'ݦI9^Z#y'v!mRni-۠iTfN[FQ\ಸ[_ykS%iR"GS=WL$ ֩NzHZK'8 E>d !X'ꃧ4Xs;-sf]gWq0Smx'%Yr'7=h=<>RD0E%LD9^~U4V:Zi7e{& ggHfZu3f5Q4YfĺLqMr'4"&Ŧn\UKT qԋ\cx!_Tnl-(06YsL𺏴+uh,/L>*E% 'mɉ"G0>d @'!܁#vR#9NenXx%53.:)Ѫg=(>9\TНyfpq3=/#c6 eZL}$'i..|q6ʃh)J(Bb&Ve1)̜߶_^hΥۘ:&){,8w KQM hvm'D%$ANзL}V[m"(Q8_ᚌ@gbo@5J&<@V&i*`FTơt̷qԧŅʨ '\cAT~$JqHDe&b[C*;28$n`@[[/N3ׅx1,L`x+tAٶ25`i9^q;MQdn+a A'zG#3RׅGOjNCǿW[, 6Wˈ嘉Sh[ H *EkT9^7k)%d쏇RG"fdt` *e \m#h&TZ$QM0e:<>HG+䏉]h 4e"iMm7k>#mVS Xl@Ȯ"dp|G6 Ta1lC^9O5$! IWn&Kbk.uKG%L aZ}i o=H@"CO-:a?#QoWZ=-g'JM譏G$:ęآjO#fዳ9>r7 v?/$֠/msAN޵jUz7ɊX!WAUhfB5HY ҉_6ic&sm8/2Oqd:)VMoGRhjU>;<ҸU`~F7U+㢲Aq B<]hn H2 2UNo.c*2 L&nYct.a#d #*+4\&ʐdj¡cL 98t}9 mҎfF.5/: ҞfGO4^D9$VKn> Ҝ/U&;կW}슽jr=GdieTdwkSi0Y׍fH KØ#YrhTGwy RWHVt{R6Ḱ#aʛ5T1^a Ϣ .$J2g䬣 -AVUǫM1 "Q`i]S3t)E7իEa|M_k Y%Zf)ipZZ{P0iۖ> N<{>ӏJkXlq4X2+KEӣib&kf^|d3 zh/Ö_|^kܹfL{.rhxW\jL ǧ Ĭ`: rőX#LWQjsVRPl;$p6UI&@%hi{ׯX]g PQxIaRt)m օ#9ByF`(myGV;gO$؊Tu:sŒpئ1AL'gݟښL:Sw\=sٓ(n~|C,]$Ⱦ~Z]֡ב/.qa[febbZx *+28cF }bۺ}tja|ffcDׂ<ݛ+S-# \Fub$t$ߨTza𑺋DR ~a|zxWZ8\d]lk¤M5v-Ϥ|hlWf8j%bG4w4cvMyo5 wae4 W{K)ܤ>t+5 q̐5?$`\?XA3v]ѵu?cۋk9EꋊNƥYQl*~$T9LGTrM.Ӿ&ЁE8!իfњVO:ϒfbH.CĴOWMWfu^weZҚ`Gƞ̬PU;N}Yv4-aTT RWEh"U3)+3nο4š5 ˖MC.@_08 YbNb~At] m'gj u!k%@hΐ?-!"ŷ%F$KqSenر6RuI qBP=fp^/  def+Ab ҘDj {REbauc;tJEٚtA9x1ԛ;tJ|h<^_׭*cge?EH-asH>3&#cKC'؀@EN/UŨ q$ZkÍy5P6g7[c0) Q0QbB5^gD%&vmKՃ&u3BW64A-scy6ь$@~aS a 5< #0k0yYEJ~װۇzuT5vةʭ2b(j%*jf'ʣJ6w.C^7kN)T9?/ga}^_ԥ5!y\Fm0/MDaA˴85G7"EZW4 \TDK)]ml.=YVVP|V $ \m"٪h&Tl@d{x'%Y&&օ{D!m oU=]5]y_J<^z]FwSOuWg$|CX?{#t:4ӏ3qZk MEiO{b'IxčZgq7X*IIMdj3S=b>p\9e@v"E#A=I2b= 8RĤY|Ml P'0 ]͔6uٳ+dd>*|9w!Z 1vl>%^ݶpjc|/iƅ]6YS)36qPC>3 jEveNk.V-CVO/*JM3ieQWޫW txִtVfATne'Aaw, 8WWH/lkrه>F+` -T^SNyTNU-2J$.`SAJ VVtV$;-s]S3|Mp֒,`8*md!s>':;Z4c|wNsdRj։k+Z=R)hZW63O0[IcBb|^uyjFCzsË|.jק7.Y|gqNˠ_-!y$i0 +,wc3a-n z!\!rɾa|0r[- >+cm8c"z//V6jE`\t)nRdWH\޽"/: Kj4=6 b!J>vl@F>+R(*DXu䶋ØsD:*q(#r3J\xR զ_5Bݜa25֤Ќ<=lx 84 1 d0Փ @xD7h@8Ū9#|W7ވD/K"aH#x5`Nz]ۭь$E12 ǔj51LV|3e>tb޼9UTvivM*riLlieQ\ w#wխu:innhq$9fG_<ߌ[f+;> X*~4 ?ங!-ĎIQ21?XA44Ej^+>Iׇy 'cR?vS9s[ ׂAb4Xs;-siڦit].(Vvj/oZnγrOWMWiWҏfDsQm-ԁ=|9L>+W;Nx 03B@8P>4)mGbИbN4㨅<ơ:~ZG ˖M?r4E|jڤ8Ir+Hu\޸>+SqQx= L> , |);J Az7Է:hl D`>۵z[O+UQ1Q Je9/H$\%um@b=cb>#.ºQb{Op>*mĜxvO/V=d|MwF%DMqnEL)yugH9KXZR? P'2cGbZkrہlV%Ρ;Y3mƠeOנ,nsD%&ͤ9 f:)̤q~7Mة$mƌa"N20 ]Z絴jC_ێܴڣk!Y\94իnws^>*g?0*1"n)r"T*8ᩝ,*8q.]ZŴ7"v7g7j,\e ըG0,sԡyRI5p6vHlq]>qL0jb+i>T-+Jysc Y*e \m8ٵM$3:^QNxj^ VkDy|_U{cL]/ "b'?{k;f4-a3[ |JW9#[@cjgQP4 ju ˖iUfVǭƭ/+ukU;5 L^LgX-YhN Up*:rg?bYzΔ R.433.G P.ݹX^d:#Cy`a2S]qo_gs3M|%Qr+jO̎ȋSI QdL n<3pPzqT;޽cms}&`ci1C?(BziI dXEel45^̆% 3 $v(_5e4NJExSW2;\X˃lUG8mdw'`1DMCD[p*Y#Srs;-sf]S3|FHQVy|mNRS)<.KsojZ{s01N9n'?{k QN Xlhs3Q!\9fnxбͫ_- k5iRסrɣSkd]_^ݽ"r 9# +.[+102shN b? 5}^ZJ3SF\I[d2^yiU+74b{nɤ;X1_s}PIieH1vpG&j5eGg`N cJէL뫂ͨJ Wg,Z쵯>T]d8g[ֲeLLcwʚݬL|G?T;YTY2+܍oڵu:?k)ٶ2?3`ÊIgU9S.p*vD6 Odԁ_9e8Ga䛦43t/f0X֩W"71 Dž-fvYs3K'`t S}-XBHs;-sf]S3|NE;6x'%Y_WgWYB9qQԙWMWr+GUxam74?Q{Z\Xek]iӴ ~ ڪzl` qs} ,MhÖ5:^)iY1W._nZY'1 􏅕rnWt|-gܵP2+lұ$ hZm:Ng2U22cΥqplK+  Y:Ӷ1Qohm NPmd8E"zR-mUͰ4>Zt֦=8?ϸoSQz`+;fD->ʵŽ`,N\l;`=feZ\s3y&־OM4PkupR 9$9\=bXtjz`:虆-l~L(>2B\\L*UjE+rhX+BcX<ݱc[vy\v cUBCeθ]pYe]kkfբHDdP&~ŖA;Ug[g-ۋD)|[!i&$R~Ec[>ܧ`{܂|[RŠwpG1D: ljʥ#bz- ˸m[TƠ9x?f@۵;Z,ʧ=J!X< X/d=  ;nj8l\W_b䋕#}&n~MSQdjXS!GV䴮*&d纨*e`5']<sX (w0Z.;iSE4 ήJ)۽"NJr&&ҶYB9K-UݯQ{ٳmVm7ݚ{s:Ψ߉ήy,nVϵw"-46r5Y%mi4% '( \[@.۹~aٴuBCiIQd]z}CrGdCX.Ai*:4KF['Y_[Fe4 Arȭ'Ԥ l4h} K, 0gHA">/%QY72olR؃ V.E UۭG𥷍juW^H/R|@e\ob P`o-G ^3&ée0f!ܸ$ụ)Js1̯g|2l3wrc99Eeqr&bF"z4Sr'F&0LfĉNc_lG>bZݷzUw$cm1MԮf̈c ,L`~K IbGZ>,U`%{܅;GöbEYlfsܲ߄& UqWʛV tڶd/ f%㺅A m٫eP^Ջe?vawׂm]׊*`wNTeU*c;$'sK*n|Ԩn.^hwL3JS@m{yR?2m,|YX~+ %mܤʠ [xl*]=[j S1v\UhaOm2h \-MZ}ge \m:]gWqvw/Gmؼ|M_kmγs!zXs&"sOv4/2gACUiE44Cu1RB*{hh:;-xհ7h$b|XXS\ORPܹduZ]_ ܰ?!>.[߸G묇ƅGČL]s1uT]po/*nY2] Eŭ΃lYJ e]7]EvS•5`$o?M`dZ xPL{,E)yqq"ڳ'jz}+2h neVdnষլxuN]YiU}? eU*c쫚:ieQdȻ\o ت:7{ 9`3C,nfwCSn+լ]n^OC_G-J٫۱Zw toݿ|a! \7sSG8V 2 9yz$Z@޿j7.?t_YG31qNF]gW}OD@-΋9*:wp/|<>HG:}=]5]\da6vUvc|9v"s縱Zֻ>֝gXAy߭]mj_U۳cĶqO㿗;ۻŵUvf [Ưuh v[Hkz,;"z[Vh.|c6y<+m?w p..a9>צ=.jX}迴z@2,nkkgw>Y8,qp۶[I :Wp=o\nZ`>jVQuyC(ko!|u)}.}x-B- U{Yaĝ_fR|螃9Q ERO>apf1Y_&bsz(̶v-5dtw-m;c`7ҙZF6c^՝(Nwpgif]̿1~jWaco}ľjCn๞vŭچjgrP.?m`6[b珞4 _v]ސW3p=Ln՛mx8."?}=ݖqv7ȹ$/h?܀>CXΟ]終1mU=0`\nƲHo; ԏgtMs\?ؾɽ;=>}W,z~BSxwpG~vTB0OS+Wʜ񦎱qLieQww n3o|f6 VA0,w׵< XrQ]l; p׷lyrhf^UƯW 0.Ɔm -TwR^E1Bx[k3$=֝ h8i+LkkpڿxLG31qN?SE4 ήl%CrUt/;t;y|v=hoU=]5^Ux\o{m6 Uic =-;9Xek]k:f4-a9ܳi [_`ׯǹ`3@`  oO[CɄi("KJbNb -rA hFWws`d+a| ixlQnq۷CMg+Ɇ'!Â'swt?LHLUQwil[s߹!7p+*@wQ닝̷{-_9"ozwpnspp `*߿&i_ ^û 4[.Dž1ys)q6?uA; +u.ۜcSJa++|;,piϝνn˅Y?|}%C[0-x# עH22C9[V`m/U)7[{[e|¸ь$@LGbU=hY:8Utz\=VSjߣ׃=뺻p^n)1ZKc*rƚ:3E"{Wsu{j7ݼopo?pݷoۙ,=J0< n3|0B[xS\〘ݠ [H0\?$`]6݋TvS$Ao9mѼOuR~bv(X.m]N%uǃHq2Y*ˬ>K}von=fX9LڙWCE4 ή,Oh QO{Ku:x'%Y9;u;"y|w9ldOWMWen8Dq3;gMn@:GFkM܎x:9Xek]kE;w4-aAn}ﶘrDI<[sqs|K6V7ٝSО5tg˭X(r싯On\h+XwnmpnC;aO  t,wn/޺q/>OUο3գԜX2sL׳w76ʸe\ooC7Ρ`kUs̥i1;xcPD_[puE(0n˕!ܪ:ےҔϫ칐Z\֨36-br=ebefD->g6`7kfЬO++br$f\pdv\7 2rILU?/X;p_8xrc[_7JM.m }-.< 3,7QRX/7vv|J[F1yRgk{,zU{-L[kV>F[;6FYKhzAsm>6s{`K"KbcNhnfsbnf\vt厙n77UqHw7@rԏgZuu˃CM.[/]<G~at{ Bg\w;Mx ࿫?TO?;mUv-1^iXS46U ?{^?3ww61iyd߻3yK)ORdOH !ݑ BC?\!:IKiozVջ[Jר7kmضi+_5j9&jV1Uuի;]]n;BN'9$I!9ϸ*M8XI!(N #U`SLU-brR*`˒@Ȃ.*; ~ґO-/#hgP'PRו$@Lզ0% PԦ P*)CI$gJ3Tק|nZ:>(4dPs$bdM43XԔ6x ueCA:K ]^XCWL@ѶťM z8qNʒ/OҴrWZ8kLd ҤJ*qR2 P=vYmY$qj6NJf=#`cGB ]*ĎQEp!!őJ R5a P*Ii*ǥ<5 *J_XڸPu#uD͠ +nݡb&C5d +j;XBM6όH$D:C#!bt Sv NYDžXMbc2&:,jH "QX*:2]VbI- ؖ5quD ViXW{K@=ㆪCQVs-kG;#Z8:LK'SI/RX%12TIDg#/92]U`"t"P@S˫ëuCYUVVaҪ lqVR\| eZbJѭGU?/]U2ar++dZh/+5γJE9rα@tKfGd{*.пF{*\$U$JT(piFBX*UGWK*D{`S#(CUW~?ʿL3ԴT_tn&Hb>MXCKIix! ѯpQ>igjl0ʐě΂LcJ.hЇz)Ӵ0ϝ&tk' x꣞ʨ"BR> {WBb!XiGdэZ81#䈤i"ޥdq瑫MArxmS*G#%<4AYKt!Zc&7"9 G r}"êe 3^5BVR(d:JebzkSV V5#ZDod"˿| Hjw 2X% +xk3xh >^ YQH &i֤FڧF-Zue,Pjut:R& ?▯"X4kWPpߪXsG[@R+= ?Q*Z[ӡC;"MOH> _S$;0Z7PZT%&Ĺrgz:B҇Y#ѧ.ҥҦ=λk%0.9x*F; " ȝZ[V[VIGCyF99N(ԬH #vf`5Ҩ`e j* kJTJ7C?V uk::9!5 (*6RN )T**I'I$WB P:F:,sYX3Xlu%vbT;/lpA;c`DJW.R#MCՉ&+0iWG 0c MT`4nJ℅Hp)J` V^z#m\[r^Wׇ<P] VDz+æ.6m,ò,äW.*b_=."(XiFeE.(jI1`0fQDąq Y,FU)5*mIOI=;bV-dC&UKdSE1[>(T.Rzޔnj-=T GʀR*h]__ZXڹpRj`.֩MJ퀸<05ʫuu$='ðJ(Ƶ-L$ta%"@?@%_,#)g 4l%ׄc&m$nՏIyqX+7T6 .C[(gHƕm<B1RʊuHL)@pբ6QGulhp|ׅdtWt ASX%m "IGM0pU`iHHRLհ5jXeYX\9d 2l, tbW(T,H 4| 'p $9tbg ,((x5]eUvB8.,-d/fH)0Lk 3gN^=P'ѽ:,:W,X'`thСWƚpx>βιdVw`o40*zG,n1aLTtl lcJ.bfSP>J>y?)t3:9xĖ2;W#'lعVͻэ[ə902xodͳ3T9 `.3t*f9$ma T'D{&xnrz::<$J=j,P.XqVq<I&刔Yj@d;`2 n\MCcKJjs$bdMĸfsL#5+ԝWQ|7zT;+M=LgieHTINBWV1P /(pŢq&Ggb%*  j R4 bT=CKmu'.[6nްhϥżyggeec;6gYOm`+uۮtq67qC~a#u|] gXv\5<uQX;8 <]4O\.FGpRlUMX.Ypa֩<YWPE]BfX@$ Rl uYvVi#2V͍K6hi!f6NUIH[=4f C x+#`p2Iɑk*-0ܭ+ՏKdgE~b~LQaLTU3MW4f[/ ic يk&0\ы1BʣdBq֩l$_[_"Y乓`fUt1 13B]lg+.?ГW..Y7{dHViZc,j_50r%oWdfJ/ݫlL|Ap^Au>j&65j0\4|c+X+&׬bŭb@[[IFeDky7989nǥ]2/L륍STL;ZKJР(ڎ˻H҃eLt'u>L>s$q4#J@ySQSSMQ_D+QՍ\?xFG(aPTeu{Bgr l/MIQP.bfSXԸ>JT{$>+.t6a~s-1;_# )`m/ncW̜K+NrG;۱hg8z/\qp3Zky\W{[!*hmT jZ&7nN1TRML@nGVdk8`铦ukNN'I$˜6r52{gEftH*( PȠ='IŘțb6q4Fk>+ԠY_3_, sQPvG8Gt"RN*Մ͖2ŃF!޳+0h¥<8q Wب4{KGH4+G%znٕʤDU똢Л]xv666뫱v:/+aKwd 玖y̟Z=xX8Ɍ,/VPtX+t*jkh3jvP~'|j!I75bծ`ã'uywn!U`RZAzO16NϢi0'WF;Y /RTUݙЌ| #VYC™uxuaC `bہf-q}[yD8^^a↙$(oyo^ U#3tfgifO$Lyc8wdf4vTzRQ,7c>y̞6mmv8wd,a,ըF&FbU[YCðNQdgۘz ,*cKN$|KvVoK-שoӿh4x>M-sT4I(@Tc%_.VЦ8kn쪬&w!zfBǏlMS[_ ;EU26o$ `*~ V=y#/` o DXj!ąs1,\?+S=3;@>?e|;dZit&|#cZ< 2㓏z[+`f ܃v,഑4=kKE+q6V-kme€D08zJ:  Z+2&(x4jNh˪z|+(鳙^-]G K=r *̧^.bfSh>JދO;.!gl]Vֵ.t;o#;)"{iڸᓙ)r4klWXٶ{_ak^2 c]X_}Lk-չyL _z?DRj `7~2\ /m[N'I$Tx~d>;ZFm2.%/b2(9I`1f2&W\39M& K?+g(, sQ^ǣv8Gui*yDuxua]kGz1}ZnYG)xR:r_9~^~b½&pt FdAވ =8!NMdTqzN~"& (RHF_)t! } P_䞚:oм^υ}^05^+3t?j籺'}?~CK>osy{ߟ{|ϟy??%MzhQoFG"7̟xk3Ǩʼ{ro݅οSϗ=~iN{|s#?gCK~;z2lcj _]oYj>iBO-f?LfwhFHC$]"3ɭcwݏ~zۚ;^g(Syx2ϱGJ|QNoWOuǷJS:bxˌՠ GIqr+4k?XMi;?$kA!?G qb>t`$xy$|Ds㑲#|FF4z$zDpHpB4zzdpّ##GFtG###֑###PGbGdGhGfGj@z2#RGnGpG#TGG###VG###l+AZ<###+a[,p!DSA\xDY!dםʂˋ0,ȳB酛pYg]8\BOR-ҋ)uB T"=! iĈT~.]hu Tyd] U"؉Ub%( 8 l.Zw @P t-X6X%\%rbb8{89$z"rP}A (5P~$:ƃ` ؠ<AAlyh.y.y<jlO۠(7?R AAAo~ IAApPzh8H=D4"XAAq%A Z~!x b// LLEų+y/8_[Ayډ“_[z v&b z/D[zBߋ /. /鋄&n/PN. aqE닌/~<" /`\{".X/x_^sE_\|BE/_8!Mi&̒fɜ&tqϓ@M 4DђBQJM14RJ2jHMY)ILJrk PJUį%,IdK2p{R[ܗ$%/s2~:~>?hO'' ' OO'=O{={x=~Cߘ{@󰖨mH_!l^tޏ[7€;=T8slELĢ\)/G|˱D%IrQo}{" ? ʱ&W0}E7W5)ΟtW8?YO0 S} VO&~@Q%zfG8k oa+~Y{}G)XŠ8  ń9t}1+|_b'_U[Ik,[s7-<(} ɂI'#mlFj4136XJPC&׷}Ã-TԾK8Q_ ,[͙lo>=aGs" vb硸FvZ3dłV+TEbt_T": <A30|"!~eB3wԕTC8{gu0oB3ٶ ԛ%AJI9Ų-, ;}nJ@ZˌL:nTi^sMrmu0D Q{L`ᾶQms%5oz+;5eƷQkr!;nLT7:a?;HF(NPJ6s )tJ39);zQ6#=#rDykv]j򹳻#" FcG+fJ }r(_8ˑ]M+Ck'_#G!͞FNp礣!pIEt3p\J' E"V3!;'Fbvz@{4OlL j۪;.3WHDr^dvZ<a%ׄ<µi3Yjq]vrj/)=v]_GnmtEd>so #֓E/κ#Ԡ-ab"Dͧ{#z ,@MML *#bH7%D,AL^LzGaB/ =X[5 のjD]߻]jHۑ=QJ?a4:OθX?! $7X^,0!t1_`|a}ߏ#ȉ˲" g{ >IN={N;]l6y֛W _6z#&ZYa~@r;FG ^ =~XЄ?YJa7һ!BȇgDs}'pU! zbêAI&WQCzuSY(XU_JVw1 #jT+*ueeM헵:Dd:UX#um/RሔZ1s*E+Ŋ¯2_U/.tO!JaaVw*3:|Q,VcI6][1{U%s"ġtDY4oFg tK u/*BuMВ ;8VzT.UuZ>YyvQ O|:򟆊!oSW}'Sy$>ѢCv|yNnY{oimju)[{q~ϼk{;U<'Żgv-|{Uoz}U'»~TW&+s\>7sȿ8~qӞ߃v[]teDžl>f缥c-8g_)q8{IC)|NDWeD'^r&mxYGp~?kG1]WxRl#K=#]h Ô즨ȏ~6;lƟåSIs=G:/Fļ f8|SX73 ~MuOg)%syk~Wz_Cms[y>r8WY#`RlS^f5;WBQNM^}YMOBE?ydҖYxuHs6-x{mf]۹~kI>3/*/s7 6燧 f{WG_OGɰ?#srx28c&NH r|^m߼8Mqq#yp8NQ"볬Fa_fMێA 0n wWq ̷Y{F>rt!/3Ǿo }_9>n^9aq9~Hb }OA缝ytn|XÇ&YIǒYd=>pw;Xzl?_icYCpbB!;~ oxߟ(|X{^!g)?6~Vd>g9CvR,wpGiU!![MagVRψYtYh#!}~ca8=Y1ġ'ZCa8TCap%\?m>ģJ9@3k=)N[d[!P0;"QGst?|( 7|0 BRGZ_? WFWم–Yu/B|ˇ9amң ?a__b=its+s@7ҴcGˢ5Og2B+*I}&*&Cbɦ'r&.;鉠4 -L3} }n ~jz7kڐ`bO=8Giwp6w"Ywk`ѽps =9r2t~7 |,w/vQ]Uis,St oӃw{Ko{N9BFqb<d7lm S_8pTVLgxg۷3^/c@ Fl׏j29v qPn?:8c{5qw8 \u:㙏4Cڎ4qJ͆@6yq{}\o0̜g,6W'S ~=?||̧( >1F$Rܼ(O0 ?{RD08{"L(O--v%Ԟ-8zb\nĪ-(t%\iIoN[QƀR[w|a -h I>[98ҟ?{p =l?n|QbR[(1庨z~GWC?e y ~-@<)~٪z((IǨl;IMr}뙁XLP;ם=fvj3:+_-(3T JGE;"([9W "S>Cz>[KhtQuJI=a9M//S\.tIJipZ\ޜTg,$IދlagK\=(xWcO{cj'H !x:ɰMmeL uSNq3dSJiWRT $`**G5*`ǶE4hvM4aA<,> MY2L7՜!J~S toHRJYN o|VҴh3kAu\w07U IGG\g4=nnkv&mvm y}nlh^[ًסbGaa0L$C_+Klz5>j6xi xx~pT<"pGs d'{ .A >H(f0Iqiُt@F=4ԍ@y hO>IPyġY4T4o">%S7?~ u|"g^"zޜ;\m =P8{?!Y0ópXG!V%g(䪋b??X?:.I82?L<tuLPgnӒV 39#⿯c뫼LW`BИȞ_gVsӄ:{SV">D+ ,TPy09Tɡ^[)Q,3393@`@*L>MAO.1lh<* [A+,(jA%*,T@UM60>/d-/BO뿄/]o>B'Y:?Mzh5R&R$@cMqq"5b/5M)cO  q~|f g@尽R  ˽nNsARs*c˱Lז`F?\.x]ATLD!6cȊ'FGfD_4ds T@_Pێ: (B`nI/{~#%:AbA=JH=D?|2.c=ػ 6eyMd W<붇8Hv:~$ 21WR0Lm@h:^{A;{G ̈́~vc.NE[;j,|a)Z> &Axz9"Mlzr= / - Mh<-.j3HF_3&fssQͦg*/GjfvɖyAtG"*QX48oF#RαXr_F)7N1ҡL`}]|/r-`H]CiO\d2y"KMJi(EK-ԁ7&_ ;M?[zcIV~?`Ӭf״r.'8zr6]bb9:bPsqc"C6 rjmR+OR!n\;)<$ifB>|i.L"M h0x<Ӑ[yɩqM@D|V(7 8py޸kB0u2o6 )jW@uO>Yc3YLFkS5"6V̩ۧ=99EP=O)R =) |皏Q/.IlSc1V )W Az<菥6($=y%ZB~4E]\c>G+ly'cc1qݭIVTr=*uij$}ϟV2?UJ TŠjJ-nr'69ee:55=4,vɓLBoFKݴ*qH4q Q.sJO9a˃:2 LjU!y,z8HR$!OO y:VNC)ԍ&Mg7oj &gf3]EvTfeehh4j{}KVUGڱ욥XeNjyGsfQ-a@&@ 3nX83du0q`!̧`:}zҒTt 'a7JKjJ%l@ SyЍ ν3hM&~%g:7 9da}?[ۥXުqp~ :crmxfg!?6 7`m8Kʫu;&jw1MU{}=_jIV!nlԒ Y8ތ)Ğ^/O <xʪ_jkn8 Ps4XXDn=4/DƢxEI5Rۏ4q27vv^sWr\dQyPe>aZ2Ǿ9j)Q2U@6X[/m~f x5ߤkAOhV0Yf&sSX1ȥ)2ٷW7,7+@AO u0ĩ+X,Xc0Y ̟ΠOl S&jfGD #rbcp(#c(!:K?FL0l#aG#MO!!\j&$PfCЉijwC qPi۽5X 8H P5LoXmEB=*AC1Pk%0{ nq-'>X|5㱾DX={H6 >R|u, wCӣ } =o ౷`4@9(}q^\!1~ S9St:J~sORѹ%({@<%ٕOXA&bYyN:zaS}bk MێL%1Qb4* YH8/k^'lp8-~Dϖ&՝BG>okH!Б|\@UR{Jv*Nf\h`)@2 pC`jBC'=ߞqρ#]1|?|o3+ VtښL5*[ѹмϽUj^hZ5AM|Mni^MԽJ2Oep5j⪂yg^+-h/6| |xEpօ!S jggl8ĩwIp32O 251~YOv[40{r]Aub<|vC##H/,ŶUf).Qt5x?a\Q#GA(j\t Fn,{ݶ / w9_>q=sFʀ[%).LRV"оWȍ4dT+RwFhK2уM YmOP1iڸdTZkյvKz,cdȈV ,60{SdsGĸ~8?9޿ėWJ ͊*-&|rgVr%huU6T5ëx .뢨PPFJ` 0?]>]XCÒDGۃ ݐc!Ðд%1^(AY Lj@(~SRX<"O^p?;PNJLVa+'^k~ aC0+IL}Z2F/,/7a9tݿobٿ#ORj;)s IUT wPN.48֣`Ybq'︝\*ԚGk@RjR *^Tܚ&:V&hiy+:"}PRdyhAL-QѤ {3*6#ȅwL4/xFG۱@~~+ˉ0Zl3R4.d::!=gccxAUIb~貙 6) {upR35 b;d‰q{=]a|o@? Ō΢H=RkgR @YҀAM6Е(qm[{0JhیoQ'=^4D0~VZ@KYrl=K=]i:n|.g5x#;{hK=4~_Iyut,>JJ?AAW1HXV `E[4 . ~ڕ&̕lFHw&[)p ZYI(@_u?dD:^*:ȬlAK-@1DxFq$'3 ,`Ȧ;dti&6'Vpחޙ:] B) ᡄ 0O u)A) Eʧ$HHt'?>A&VSgS(RpEO(nj .7w+އ:w]Iۤd6L%#pD#ݘčHb\? 9vٚWLRl?%6x`b8P<BC胴8YH\*hw -4@,7˂{ \{S{׎5 Ur?~)ՠP W9;c(YPb2j0$<o7nq$7QB&BMGOz4Juv_t>ybA-PNjl vGIr$,'U**Ъ{V)a9.SK*V H*2,؋`3b΃:OC^9kR/2@:&rN 7JA%]\Kၐ~RN6Q/.%@L>yL 6oڗjy(z t*Adwë&۩/RkP'zY Οm%ldW+^8' S3ԅAIX<:^1٥{"GYTB$T4(!V:9QUXfPV /k3gn܁Ccul۠.! ?JJ%Q cj=@NKf4n]7:/w+!j4EYY i>⇥܁r{Z`<ە>WG6tlc;P[+ᶴs{{{ ԇ?`fk쟛t5zLmc0 :H`D*y*#`|Lao<^YG[WptGƗ~oeyo>ܞK/e}M yyә~/+n3# @a0~qPyRɰ,fTI\pW\lNh=.ytcM$:Hæ 퍞u赲$hخ AG=Cc^m]{? w}N~ϙxyH||xzUjyx~ HЃŃ<LVa.kTW[a'rذʸ&sm3ҹW++_.y%[ֽ$Xiiny8CFT&YPR, _Xڌ|MaQ(BsD8d$h$z0dwY͎Ͷ7[݈sr4ol܄>_n2xBԜk0iH~> I4$ }}%90J?6u~o{)2X| :q:̰ZkQCw2Pf〦Y=MG\3fp7]6O`p&DmTV1A_s}b9M0ҟH>!BJoU;ҫ:sUʋ;,yf g+m,\˿^Ap};Le7!,jZoq/Kr>C||(-MaX3mH/AAtzpUΫjuir"FL82Wqo%S$ OƘ7n4-T&7,(=&*fPlZ _ p+Fɾ/ v Czr{YuSn? {ݹŮgA*p ھ:gwu{?w##Զ<2Y(mNL2Z<{N2)<6w6;t_q[ cbGlGqcq^G* nLވH0% 6qjRFhKk8;V\S\˘42h+08dBZri6&{B"7D Fl7:U ;a8fḺC6 Ϩr\ ⺢U *+Z0i|jF:l.7(^i)}⿠OY,-BX0+ZW (jyϕ:)^,!Ps`*RƸB^)"d5){+'~ll炶Bבt 8`?#T}t}} ^=Q\\z T.}3@ئʖTVE9U- ! nCR])@0x{:BFTW cHµ6 K[(S)LdFFLUUeWEr+Jծ?iFp Ust$FNCSaXPGGߋF,^4e!%b~IxsX?}}lsx&P:5p39HHIJj$ \<2of kW*b+Ey=)]X$6UWWz{I$:)݀^BcUon/[1tQ/ՌB[*^/fNT̚kN5H13Q9L&"10rm8Ӧ7XL8Y13{# y4~eg7E~uGZ_PT {?0K >:1"& FC赇GV1Qu?#hdD`)PyxS Z{q>+Qd2 G,nl*ލ)D|Q}{D+;D*e ^G*x[ԟœ\y@apdžUpLhK9j3fd0yJ~e4ba8|(Rh(5[ys~ys-g#37ZRҪEčo)HŘҮVsw!!ևwi3UZTh KGԭ И亚JnI\圑 Ar)yMdQdun< !l_U!!qB) K£J {(B VO^ v8dğP]GGx5S+¹>Do;D|-hi76pT@D?!2s6I  '"e7%903PbQK0{7ꫛ橬] *ޏ0"驭 ,YQfyں[剠cFѾg#J@?8f\eN"z0B(X%3J&M ;6PMh*]%*iȈDv簙.gsnvZ6NI6\_%Wm-'1UXB mJ`Ws %{)^!s"G .zw]hlFMx4VhHNIġV33M}}. x[[aMzPs/=? r2=Oȹ kŃx0$r+Tbb~yJRW^V$ϊ^\$GUc 3vUw0(_~sJv%U0E W.1w,aKԩb r'%bNݜTVl;c-$SLW,F}T֐5C@8؝#+PQya9 a`>_k]E;?wqLRX91ӮwN6ceBݬ omRD䑜%N y*j[[MMg[wA@R`4xjAEu׵I'_ɋK|Fd31Gu4ɐ׃Nc_a&5ҪGSrv'EE+cv@}9nc&pRF^f7I.( CxAJ- mfr-MbFXbq^}v'j_C0yGҍFSYHH^Tp'rtK͑I(|rMM;~`XBa.ٌ 6ӽā|h>&Sl(T0°MQ60sH X~v ax͡wFE-ĝC$,1=QWQ ?LSHw (~Ʉ,d:Yd# ޡÈ iv#NT$~}K}mjm煀RS᛬±ږZ_Aa_AB{V! nz,%c@t'_a:':L8=_|N "Yw&XI̎\/^hf :^GK&eɼ] v;W(  hVkVԻߥS} 00TL#b;ZdP!JO$ iq+[6XC7ă1NLrnsz#l^vޣ;>viS-'O9Z;I,P2FBjk])P /G6xt6OS#NFʙC{ojۦ8n"%{GϢ'~$e0CUSZ݁U8UHGfq/5qPq"C4*84(H;4:h4v%Yȇn ȝF˗D|ʬAeznT4 U̞k/Out*FR'%Y~\f H,߇#b=/=0y^ub8.֮cG??sqJ)Q+F2~raƎT̺ ښSΪ\WTcS2wJi7dB(q CB;tGpBt|?}]c]'kRaBeYHb#:M~eCM qgPVSI(f^l4=O̲ݕd(4{zo`ciFRa<#uNz^uG3ౘ6Qcez#}@( BmN򥐀9Æւ١IC\yXxpb0#Δ0='ӃIB4S*ͬSYV~2-I44O X5#b? b6B/eU04y& '^7nҮ<8"`䇆)r*i/ʑl6cempG+nL.C$"@2H]W*仡&y9І|S)*㗪B@>޾A4&4 lҺEngC8v>5) .nM6ӗluT/籕f`"nA+ Y/ժ8)5#& oz,|q3*‚k*[!ȷĄp׮@%}}׾"ntV~{Tc6=Ꜭsf4ʁ_ 올n5"ї7BvuNVu^fľtiڵ:Zz哥V:XuVXZ{旚y# D*(M7Z[4;G yWf&>P+Qwng4? seTcgD184RQqqrY)-wh-rԟ} /a|C˒#PTE:DQ|LOB bkV2"[l.FuL?ѩcZ6-E9Ygʻ+uy G]hc Ag>pt'wDss!@G慘iq$R9n,?8(horWux]1v@ Õ{je%^(~}xBzЩ\6!=둄jgzh=-o kpӚZӸrBY r!V> =BA N_&57L}У\7WA˺n -Kr_e/_鰭.\_˽r -/u+0:{ abЙw}UIMJp.:ة{C9.{KF04M7U-|hIu]H.+,Nl~A(©*З/^fNSK 3 lGG:GSm0R?G Of{&}K>C3ϔlCL4h^[ Z=&S%),&^Lz}!fR<쌐`ʲ 0m6pt6q_)y(P9Kf7} l81d=\Ew1e0k ?q);2[? 9qk1ѱW2T*-k ֪gW@l.TW*O`U-(W' X3ШX {a$%[?rř A岽_@coug8Of27#οrnc|nMN^Tky<)eeR_#wK}Gƒ]䅗)|9|f%(97)iXRJܕF Zs ] քd+qitĥ!Qc|*#'0J+:Cjl'QQY]X]e&/c`Fe8I+tM73{5DP -ʴq d0h- LN48fs|tN+g&BuuӉdVJ8c4s/=F\qϕ}c(Vq߱I 81ppl+([D߯K(wK}B'O5߶X'Lh% 2%r+(Hm| WB|̲_#Ck+BWUf:D0*GIRg@IH/E4 hDV BLMU;|?/"ض(2̥wR~iX&é$0KBNw.Ur^W%3_n/ZM"Nrp7#a pH c4i⒩]1L4mӓӦlH"J[S4fX|빤H3n"pF)|7vy<$ dș-6RL\x<.z ,ДM玬|fhpu x>ݹU(Mc 38)Q5zgHτGM "7vyϠ7M=f5?*TSus)+`2+,]hVkfu3k.>fʴ*8zε,#իa4 AqHǧ.;&C0=Ti4Re$qt^u>^&&ޣStﷆ)УO`馭oe\s*z exeKCt`++];p6x,ZTievS"z[o܌ ,CF^2GsKAShpNZʑsU# 6 'Z\uGmvMCU/PUPNfs2VWsY|š}&>f0Bc fF46q=)#E᠖E&YT24fx.BjY{nc'RҚ.j:f6o=ƈ#Xy >~vw]95՘ a9us8\CvW+rlԻ1VU| Yepn̶sPf;n+nTl\]kM\sRbH5p̓#)L%ja/cbO=`r2OWORK|D6=J;Yj*Ι xD^OH3!S Եp7COG^_#6hԕ 9Fi\!Ƚ!A2kc( e g?nPp^6i k彛[&OU6qX$iXCɳr cxc61jW&`Y lS}s_(W-%^zp%95?i_F{ݩU >~םRyWg=78q_VwTQdjL n +C2fk+'8o1jSH::I)֤RP8pzZx,#]r뿥rFJ3:r5C;iz z<#  Gqd(2rnS6F;5θfӾ,7;k +̗m廗뒛8 RߜDJvxlN0qpEor8>-oGձ:ޟ62r_paмa{13m=!͎u(W64k1t.+&A3 e-]Gxrƞ[c )Dxny4eC AzBA~a&F`ص>>k\ϲLj 7zph~P:e ʟ:PY"j4hV=( ppfrB0, @ ,mptb|W>!#Q߻)͆SBaf"\?Dhb t;,Kf\lA:sۘh~Ց4 R G\ 5p cGd/!]HS@2Zh[rUIB6awL,iC Zpa9[o2}y|P3#Ѣ+)oZwRx#T-9=&Aٕ AV`|;\"6$ix#!akO W/EGꗖ7|N|Z(~̉as%@p\@fr,+Kq,tv53Lvj5>E3JfUyF M^tZʙ`[yg3mu VN I5iR\ZYGaDeDmFY4/b5m[-ɕn~Fls^@=hJ8:y83PwqzAvz_3fW<->; j?^?U GeOd^g5[XP>uW$}4}Ώװu{\G +JWjn.Fp%thhRPQVZ eWKy{ehyzMT־?a!*6w*a+F&ƪqmvTێ\#[:T5K$ϝd4xxUxDhCBqS c:|[:KT)Hon=B$z+u<#9/~SQoYG/c |EzWu~4xYZ_sׁaС^g?뇫/d+V]]vT,8Cе"7rh%= ۏOwo *;drtD㝦(f!Q2Gm] u H)d=$|4i !oh(mmŷGh[aU9b+q)UN=&W "j͸w v^ZmDF̎fsJ`R RJj/`%F;@f?4-稻 cV\)}VMIG&Rzpwe?5&#!x._%C+3 29 [)z 鹿h/aBQKF L%eiЪRhU)j~N,)^x]2gtiVDC ny,hD)0qx1z{S^ZNfK ZxD;1h۶PV h8%: i"3ʎjzLs+3ԏ~uJkn`dM*2A[2żaGTG)2$UAZkO8jvmBE'3˵‡Rbk_W%@hFe|@tf$'pW!ڐte!hSegmwW9w2Txu_]e2vr /hۼ4=Ա*/eݏ5X~3<%ʙjUNǨǬQXJvI5O3lxYaLvz>,;$ 6+p>/G?~MϚȌH~y'}x7*}Y] 1UC`E?ѯ?0A޺t ~]T;S rt-юn?t~CiݱO&P"nߞȎ׌-&dg"G?n#;>!j䧺w_;9*̟6~Dl], !=]Ђd*?{=>@~]pSx:r3:rqAf9<_Rk+Y=6[/QOc88:LM=-5~փyl)wm=[D*c{qԪASW=~c3e˼m&Oe4%g(|?tef$Q>jS#pi#9~1s7ݐЈ#yfϰjmZ1>9kAf-KL;,s{1Ji,ZXD焚Ʋɔ 'pG|r%5ǒioCYp|_7mpwsJx73gW܏5_Oy:PgWRuu"ucY_AAu풭]Șcի[CPXo֍屻 ~<Kʂ݌o+-}= n|]&뭿A|>뺍FsҬ5g ]fi8)5> 1h9 .P)74cE%XtqNO=4eۦ򣼯RxU1Ggy Hv$b8=,dDfȠXx *˗A9#ٟ %bw% 3= 1ӁP\D?Ϋb7stl~܅"[ m;36V)zA^1#Ksf|5~+#T\;W˯y܊<;S--6FU6ZW=731P¡88Px$g1M#j4Jw ;9nӫw<? i'q6,T*M:z*5ݏQGcou5Rw -DE+qNAm %!.=Hv9s ހd+ggiAxs17&~N`DNMІ9D"eח%gֽiW l-Z讋Jpu Ȓ02mdG(*(GG/^ֆ¹h12YfƄd Kz0Rj5'jV RF1Rb9eoOy>H$c\ G= ~܈D ub/3xl1sJYʭEU$䣣G3`Dc0=:=*LP.Z'[/߉{=u^Iyp[M+A2c]/x& B5^ER5xԿTA$k-KoO{ gDz%YjrI)e- #$^ G©) `LะpH&D^<lQӀ'h*1WcqOGrAAsPY>ܷf!ʜdQ8nn{3ue X^($lР|_>TanLhްnFm vzW+ȸ]ޚ}<~ͮYyxQgdWw-[Z}SQA}a)F_#@X*}Rg'P] J"hg;h`YZu,q*WNY޿-^'F˷KО=g JC4>\:z#]:vҺ]ŴW GG\BpMT4\':PEM*6@T.vPL[B &Y@#%[P8OSM ;*O m\f#Z.5eh>h_OD&&][_]gU3|:#P{*fm4V=XhڗZnl_5.7?d7yx1|ٟ9~}ۖ;?hlz&"=%MIHE>p ~8c֦>>H|!䡗Qr;^?ph}5+x:lߘ*L}j=$ZE~!qcR?Z`Ƶ0) `zX}T!~ĥ@gW,I}[""dVpLrFU`a12|)MT ,~v{Q]g[N0a; b=f|1{|} T_8i⹇ k'fD7Xz/!fb B1Yy4_2/|u2ɠ 97L;neò#PpATcr@Ra{un#4QlTq6tJRiI`aOw֥eɒQ//Ttv˒uAQ9KE0T.|#6/|)P77Ж bbiʷ2>}bG5Q,Y UOOjV[|hTļMRҴnѴNYl&=#d ]1߿eD!M]| !Ѱt*luRdV :Iӝ2I: N%@DJDm[{u/<:nbBqQ@4Qx{P1|aħ~KE<>C ԃd @]Nk}#m*9u[ ֟z̗&&{6DeH{<pίMb,T/M$y, X鴨oS^t**-p$,\cA_{`o 䁨nD8 q_ːuuG?7dP%ju9pS&Nd8m`; C}X^gGS@3A x/ŹGFhB ⋨McH*K֞@)w7hor+<Χjy&":]sg!;&8H} V=e#lSA>[1/=?Im6tHYYV##KqDHywyBHWe2-ӭۛ>_ Q(-b|25 rʟ0Fh~d,DSS <|I/ tj2!j(L8 dg"C/NϳEG?vy|@!dt5pISyu`| ̽Zm rB+f2Q7 a,K/`/\ ,\aP9ƶ.5%)SƿΣ7z `\`3bRPh)FLޅ7zTR_bjV?XYY2M4>/AˬYs=%2@ RQӭ)p]Q t]Ouu7]yއeq]&ס.lr]eCaḠ|FZ};4})fRĮ?#-aDcuv9f5"wߚ{wV%S{'S;ڒ;vبR uP, dx3% 6ɥuEh楇ӽa qSDB4R0B ?0`ЛC>5osʎpVrGUc//G^v>w˘sA8CHSTU]|A\2GxJkIuuw>o8F1O6ih]yH`CD"Q͇&)Rb2zuB{,Nb,ĥ[9ɉG&azx i)|H?y]G Ԡv(ⱋrVq_><~g5Uw9%%l+"p=j (29+PWJGJf̮GxQmY]aYrBvmP'$n ܛp]9>I1a?X\3}\..WTezr@:nVR ^Kr}/)]aU+{}DonH`o >, VZd\_̦˜s*M#mS`(Z(fk>xp<8b[ NSdvkgZ]5a 5^G+{M 7%F.o$lLGMVAP@ AKT<djHmnml[f aKu@Ul9pPO1<ڊ"=XA .BN(- ]T f#X55y>3wc@흯aVڒ乇^xp,-2y;>-d Q0}/T1T~  |)psǎ<ݕ{ZI3@_ -@@4k y |tYV !wR]b݀((Q^&)EW)u9? R'VW}$ScO3Th@J;}7|i%~D-ƴ Ff~ƒm !b׬SteUM`L`[ZRN"&K4\]ʽzՉX7ntYяn ;W -B;UHg̶̨K+;:%ףx,-#zdt26gOaz4cP6IOEuScݒH4a?AcTD_1֚dX|d;t{+-b(z!R"BQ"M&"< kL|#ڨ> -4X#ʀj4KĈK2`#`fzZ0Ab [:-&--$!o{D>+ "z$†1uX";&g&"eF $||Q1@; B$!t`W^UZ۴*t+N GE'}H?=βq 1܎idS}Yu!*mrA?$H I7q H"ޑ&}Շۤl,eW=q(NJ)A `F"2piÒ'#f0/Oٟq1AᄿG)oHtǗ᝾rUBM.֋! ҙCS.ݴy+ xIP˕^λq#^F GSJs""I 6zvro+D P"1![3̔ &$q -[}瑲=in'~It']6]5X I' J圀~FJTb} %XvfQuE@^cҊ)y\H;(jJBW\aW~w▪]*PF'zk6e:MU:(T=N( %nJ3OPuhƥ+I7}/|so*%bq\tQX' yqFHYM'+d~H:K?SHn4vba@Ls.w V(!q] %{(UbxRK iElP 'Ol"a: ŋ(8k{j~uXP^m) d" ѻ}':=],#=<qFR) wD 7-ĤЗ/k$gRC)CP0 s8p8+Oـl7'o?-~s '|GNt0+.)˖a H9:눫HI rS珯߰pEf#6i3 lda e.HIRztsy2#902c O0@S?F[WX1. 84K3Щ2[1],DBň%/Ycl:-prr03 EdXn#Q@h)KH{*5Gh_4dpD@lV !^ Ӈdm@r\ɸJ7b#RqY0Oq/6G^9pf{lґqB#zsIa~Rh,pW{ͣdzED7*d<&Zb*xVyg.gO+@4#<{xG9vLn-D4_;e:V*Fb\'&qZDM$wu a1ي 8 CN<%`Lb\2\B; is ([0% Z7Ip[4 E0fM*U[v) 1`敷mwN&C6Yb}]yc,hIxVI%~M5o-t'xHp 3#{L25$Ŋk&(ޫrC.Mvv;:4Jfio>sLL UF҅i_ !4&S?a'D4!xSx``0@m|=4dDP7sDYVyW-]W<9a/ӫ)-ޭ.2Hh*fP}ϓ7dꇝ}oMXmBHNSAy})qD&]}6&ťbly^RIIB>W艵q6s8Y%Q{+v~M`6o 3i)BND=M`]o!5bG915"oaB|h~#w[QEEF\5.|7wg*!ʐ YغYG ;xz(.V NGew\|uq5>˾{:(Xq_Nj=m;3XPhqfRT%vz5m}6?l>>+'ex93dag5m8:’ok=OZ[gK<3Oo}\gk犍MrueQH#9:˺Kw~255q}vmItBS DW?iܘGꨖ+)Xazg/{ CoAme^"U7Jk tQzmFoXV|v6oB}KGMնpi`@|é?\N7;=H0: q}چLr6dF{`'NkV,i쓪2QL T`fLBlEh6> c4=*exPj^ګԓ[IYjE K`f;N#SxW¹)~U 2[wDW"`hZLLiͨx1r .B2xx*.eQzk4fk.ՔJ3k?t(|0-=ͷ%Ўoo-2VjZk'J4͈7m11}s8lo47ShcQW ^+8$Jp R4R,~V[G{ a! WW#P ,/ yi}kkn3'*_yw#tG2OR-+D$E#ّb0j㠏ayaĠ\p!ny%&GBhF+dw! a>?:/)ž 7%[ī#/Þ*a؆e$4pk!fxG8n1!VOdt̥ń2p+[М:Kv"qpSγP͖N=ǿ>")VKIA?=/iy{7<`FR©)8y<ڒzw b[LmVmu?npUiSqZUqWF 6YV$It踺 j"*]2*-Bs^XQF*z^7cþuBIΪg+lKEobY9h,R<-T4:>2JB΁ \RkEAo(g /Hp`F3Lif2؊f*߇'79:ήϋce^cy1IvwDt܁1 r}tEev6ƛcF!s3I/E%C.-S^CU+w4,/+] Q~ MFNn_:i!89\MU=ӚDfީzETA h"@ǸO61З#_X d3Ti]3?7LȕJ N} ?oP.qo, [7(1a?]w8ە;5o]qgnHI_?17M#sHؠ 펀Ac4pku t3fvZ:f%HZ40t]| s\%f΁]nM[C&of #z+1`8SRSn;[k!0vW~ d8`_ܡ0z(:UbDyےEZ3sy5$M*UnN>Y6m9tȬmXdDPida fBФ1Eʐի~AZzt~|[ p:dMϱy>MX_S3gaWYsi˙P@gsu/)V+'3w[oG{ro[nCry7s_]^~qgJ&} G{]Ӯ@SEt_ݩ.^?HxX 6MfN1" Q#U42dMJ h䐣 , :ȍ` x@@ Km"by/C3q9e);";<g]4ECi.UyqS`q~ vL>е 27,OણS}͘σ17_"{>aYpbzBGB^n)/(ҟ ~hm'P&" B/-||R>np TQ{.^ni;i>I+py7MGy"ڿ  M-T A~<#>.T;B8BыArR {<jGFRRmN1l,1K Pγ^Id|rؾՖ礴#dF uZ~ ^4: +#Iyma"YXd3;J SOl~{lʺjf}GtGpGObn񓱯˒mKI'~dӃˉ) E6+PHbQtO:Zp'u6 yԟݠYXa$mI槇pwww #T78b /22ڂ1j U(6t-1zTUqV (mU WIaLO"(;ظz#b ߼l*fJ4 V5t3 nAi\`?;1X* $ɻՓT*(:rg*BN!]yΩ T-Ccx8g &bNζ>³nAQw{q#|7_ nj$ ZĴ^% i!wQPCIVh!&*#@R8l|7a:-HIP-qIK W${|ˆ37{+z| :thp,]G뮃M%&IjiHib{Uxf"B`NӾ^7C 8juc%ގ|$Ɯ4貮m9€^Z=\zai' ćf~p@L^`4.~cRу[o0=7.Af:M5*qFx&'v} 6(5âkEJV &z1E#Irq(d'o4UqTVS8{X0g)iErz~ïCEKu}*: 6#Ky|ٵo;v)mG蝽y<`  A:"АkÂ዗p >NclM\#"ҙޘ7|]J=Lh(&t ,Q\=>)?ޥBa#"D+enMLCH hnCCBLm oߴ T3>%h^g;w{Di#0+SUv=[㲹,X-}_Wy6-<+$#C h̪=^-5Jۙfɟ #Լ7N=?Qu=^7#~]mD*;>F꺇`ݻ=ӴE C !NpI/&EKS=m=xY]n> oڼUgC? Rm 3u9n t[DE0rQ=yU;H:ȅc܌.n c녎Z}e&)K?$2JT +r8,0~ y'c^ Q[Ѓ R.`qHmm`pOs2(=Mf>gpvx8$8^tX] ,:mrquQ7''HH%. pq<άBb4ja6ɴ)S)4 MEQs&\rn iY3`1iZ0)a4$PrL3530)x2Ø $.5E3,p6Y` ^sx-BPdEꩺ(IIypQ(QpH]H=z{w`$USW jz$Jhe&ډ[!dV|־qd鳊0(np򥦣xᦉSd/B$0% Rnj|T8"gLe-.ÊR+F²k J c{dwD醍H{hܟ8O~{~\/k5p|."F~{ *x_hD [!< ~z 'vQ:`$l,.yh7(DO|QsN'v=ɹ^@H0a= nn:p{OXxZ z?c/.wp?#w+zУW5GP{zJڵůb%i)Z5`W;$s&]]/IxӧbN\#Pq;0p2܅Y3o6$ANemHGrs_-Le+9t,bb_>ydBl/Ey!.dN7pqHJӍc rDԊt\r`P(hN8"WU%Lpy\3 nJAy!0F#9)}+G.wug8zQ9h>&C1$heGbbj9N6oN!մC̰c0iZf.Cb_h J#蔨6/Xi4h (=; aY9Ξ"J)fPu(9 L{xFExaAbg&}||_ߎ_^kτ'+S5|q o^}pP<aأ֥yz-$=iQ~d]Y(ZT6v ɩ`S3('XŸ@B{*jt7_@~>Q_kvLBD9SV@LZ('_A}!r@R|YqW ⾅ cBm%@Q; )Ab'`}Oҋj;jdv>qJ %=cm˖R+2H\Z)) 4맊BIrme ;I ^rb7KsT*6+[\/U ɟ-2:۪hTPuUJel% cu?&1"cc4YzC"o D:=]3r ns]ղkQŠ|7ucJRCH[o;]j?}wFH|*٨թjاwG} 09Qd>qy4]D )ꏈWjY O?d`YL&aD1kqꐒ$Ɉ?x<ſ]L~wy!c6 .߈ NS5 ~GXgġ|̙ *ϝ)sEYZ6\e҈>Q/7n, Ł|r:MДf͙5  zq 0?+%" TBjIpdCYAoo(`a'_WGI0Pt*rV{6ʜεms̛1o&{#aL_q~zbjg4{d *A G"~{fKFQ.L"|WnK6t+ d౾c7Oo)z (JKPh\֕}#Qڅ'8M8돂G 5E_ #S%]22=hee?iV*c|`=&8BBEp;[K:+8J>LX!B’BV[m۱Ewum#iwlB'p߸Qyoܫ.i0.#:Flh\P~*yrqӫn(ݝ1z?SٙShURȅ 1u\ k <} +Zj!cr|+rkód8oIz T3?DYac>ˎU/m!qiw/GaA-ggl]+܌J٭UThwo!)!xjұù} jrb~n('9HxbSnu`T?aq5¸2싺4EԜSJ.w:?CB6tѫ;0:vy j|Or0&) F~R ?򗕑 rO)Ҽb`ܾSod#B `ZY BvYZQDVP`SC|>OiKgΗOK$rNjǙS XW}%%+)``꣪uX /=橕xfR#L w kڴҌW(S k owt=.GP13jU 3NՄJ L56,_Bmq[eV? K8,`;G8M*:!U11ر8+!R4E]azTPLjGǸg:(ehƮ=~hqsCͲ7bjuND3! =-VR(RS$c8Q>j(O!ۡ+M@oy#u5ug.*|Z\Af9VD,G5  $KX\Iqɞ?ylT)p`Zr 1t,%\K*0[[E1Ѧvq}=68|#ۂkP PyHGܨ/SF-#/Pi _en>GP5u~&UF%`BxA,\!` v+W1;>_UK-}eV^SAPNecNٍ&8u1" C 1_6Z5ZOrIW/|,6h@zD$?޾K"~KZKx) lI{̗Lx WJa:ংɍLDd.&X^H%W6OJ_"A% ІU&jkMM#"fP܊nHM76o8q%mF ro&JĪ/e=JHBۋ#I#;nR Q!Դ:=pK9KU9I5rUV_z2 ^UϬƑc73@=xfGaU;}HM]w߉1u 0rIU EGh7H G!}9"Է*V$F"8z&eG[}\)U;Ǟ⏚q{ńlȍS+30ԨQހp~٫;#)S ۀz!p܍ xpO;rMꃧ*8Ӹ)ծ o}Zp?= >HSyEW)sS!H~.{p8|ƽl4J  j%u5"* rǻd XaӥlOSⲙm{ykLTW9u@+:B gRQx鋟yO@Ҿo 1Iu__돈O %Xt+CjЗמ\ Эg\*ҶmyRfO?~\=zm9;?\5x4jwݴjgPGsq~a*6Pf}lV@n1&xRtX6KXj4 cFzĀ FT҃Ra.8͑X9lZ T)P CNⅻ̩GR%-oHѡZY"o6_]!ԮM6++Cdӎ䅔K9|e t'*@q;,K퐡lLidh'!ep.$LQ[|4H.h]s9_7iy)&f3:SeeI(.~#g6ZW~/>žץcICpΏ ?PԔ`BL 9Ég^Kw Y-i%k؈$0!IH1I*Gnܜ)%Bڊ1|%IRâ>`{ V+g]tk>Aq yX2Kw ,T u>;GN ~/ >wǛSRZ>uOy^F 4EdLSN^swcdD;qGfͷoH\^<~BԔB~6U6J jE[((,rm᣾ۇ˄9srX}\YD2T+ H8%Z2ۂziw޳#\X,.J5qa$MdPTRό=G/sGt%%f}lY.-$i 8ʅ6fsdQT{/P,iUm+ȷOf--9s9dAV P艍\P1LMlwWW0Iā7b Aܴwa]Cfy#C̎FԘ1׫gUKMur5v8wՒ b~S؋> ܍^Xw lEj.pMjTLD:eH@t$ܻ׽"^ƻ?WLtVkr V ]amӗ7LNFG[3\]Tւ5kc_%wnُ*cB+g+6T}+4F2 / >=FOcI:OaO:tVZPB!( ni|4S&iB2T)Z~;_)iys:Rm-Iaټ 3koVOzYqkO X${}mfS- G.^ͶRTۢair>-l2Șx#R,<3"q-ߕ0y .'T:QSO.@t5LV_d0ENioCv[R'1H\(֩J~J5ikW?&@` PY2Qg=DgMZi_x~B,O3uR:wrنjܦrY/`ZKD DK>@z+^E|$d!Z{+@#B,SQ|=i]%r5m=SHѕx!lk̤Y=2I04'gxbC_HrM~9"Ѝ7tH@Af m.zP Ip~  4o;Sߺ- Bw= AmmomotlKĮ|6TIm,Q!c:b1[3"qj.7_ElWΫ<;e8?krEx"Vd!k΃E Lӭ7$S\o;5ޢ1`q QEOe,u|N[dse8+c9Upf8PuUEi-RMĩXQZ@ӫgglkXݨߣ7HJTdyTT,KIs*gt[qg˰?2bmOzuZuX'SF~uNJv5V]܇;W+5:L>IYƝ|] %'%ro;\kW.5kL}Y5ۼ^<$nNƕNRN9x%6O*?Wt Eɋ*UAppN5S#`~Y^ރzvע &td'؇R#+}K-Kl.`x"l,Z>?%La0To'+ܜk3(ŒFV!aC5X yAr²vY;mm6'^W&D ",e @Da e+4Ys ׍d+a]!-ZW6^"AKQjLb1H*/v¶zߢDZՔ73;;[dg0np{[Sפ#cDDQX@^J j)"[W{ QRݝ)W^`x9OǮB* K^ZPW{əHbD7Qλ1 )ETܮRA1}Lر';/C=l/u o+>[ M`aA\1i#qN?yfL'3> "N35%R,PwNx~0dffod'Т q;!e=ZS#=J pv(n;RԒYXCC%"CUu6IEt7B Mx`ex[E"|&F~4L_8x1v,Ln[0:{v*R;ޠVئ\1|i1 Qbh 9< x",xU0ɯ|=N56~w_`̗C|`x&(z2RO; +||“a33H c2o UwJ $7iNHiȜ_z21S 2e$>s<uf,)E9t4L C' 1†OTtv"z/:|=\?t?!7B Hǯ1sV@ `ŇCSCN4Tdv58a{ e~_EAPۚbk\uîI&,,ڦ %^-x闭a}k?~ &^:\^$texzP'' nF3u0stUOS߮W;>|,^8~\(78']E*JCs ό̿@s&MҖ8%\C!ds{q㊬tiUX\F4ꖕCV09KeHkJ_zQb,ݞZ՞>rډEXq0eQIAx1zwUbػ;];q9V)1Je<f;S8v0nĕ9IRh8&3nϖ#~Pubu2=JBp)n$Y"Z:gsSY}K !Y0vnl#"}`)~p/?QUQ;1Ke2VD;3Sbcg/yibًM7PQMXy՝GvK ]*{?d~aJ'}E, n5Ԯ.5`cεf"+X {%a 3}5[](TLg-aUط&LcR;βIRWz|r$>ȿB7t&A)~QnpR? P_+^9+1;k.RkRO+kI#~<\7~a̿% y-зj!K&wud8B5HzpYZgl)ǥвTjs |{nb][܇ǝH{]NN8u +ə7:g6i$V ;ۏhRwަ6x}x+Rtwed&_܇_i-Vk;]B M X[VMcB;> uM{(|] lR46r/wp_;'_eh^ehݹJ+oYc^;ui'nFWh.,/ HXq59&Y0Yxߢ\Em媬g6S^WS~¦w"OuM&8_s8e`g^`TbUq|l|NCu.w;,L+yVs*}h@D2['h!Ȓ>KDӐr0uGQ2{ JEQNÁ$@_wvࠜJg ʳ= /9 @r WNW%b]۪rXMğ )̍yv/'Ʊ'1Oĭhx4:.1P-2q!kwv[z #9뀘Fe;!%xZ;@^ >T̒5Wv 9ZC=TfC~)Qem6LN c=S'ўQIi=31lpwۼԷDcH_4>uD5\gєM{> 'S^On?W`lxlñAdʬ*I4f0&IVaSHzh8 =ptu!} _eS@ <$ @aIf5eOya/OS:YM2= ]f5!):ɛ_wpє_e^ ;xL=R:Ӿ#zr WϦĵʚkXZQ?YSvIiAQFV* nC.Mf< ts:|5il"o#?nC߾?=Cw{wui  о𹱰#MXV/MQL% pq Ymw ɾdIMc4蒕h& _K GE(mCv]Uv̋=|*fi*ų;Qa.uձP!aen¬k!͝Jf iLh$ŕ5%4Tm©SED\ ^z7O0T)bY,_6ڴ&YhA6r~iOOƾK~-mP~1loƱi$i#P`MMz|=B-b-D:TL Sf x&4t/=.ĝJ/l67C+O/_PT/eI~1T-P1D ᩸x=g}u#KGIyČצ]L p`#VJ>F vjw cvgl T*;JzVet= u.T"1ŃJ-p}[7F_ f*j~>Tmh}>ejk<Λ^\(b[UqD}%⪧yAZkPVȌ&Kh1, N=xs 0hͰBL0c4jޞ3 x V x"8m.Dz%;Dɛ'RckW-K&`FCE*-HqΝ0u.gzrO;y+ouJrSRwźd"72]ywJk 69SѓRd%ڒv$D>Q!M *u|?%e"Z&[a"{'V͘4MǝY'ry-2?\xw;fi;)k)tC~rmunY/l 8_{K0aBA!|\+MEK`i$3\V:IЦHKT1IfEoꍹc7X0EG'٨\KqU6bTC] ٭Qg"[$oUf޲y+%xwf,*~p Ol0 ( CBEN5 \y_=1b;@51qoKp($EJ#ZDR7QK>{hKMɳ@ⷹ&Dfiw})|V񼅊dT~`$ɁW͊l"ld蹁Ea *PDF:Y6*AN^n^ύsB=:4K HDx/"9NF_Ǻ }= 8tϹnr=Yf7L4NsZw{ev:A`tv`SS;JPV cŁ|ϗ!lS/_`rϹ9YQYg`q?9T*=VR=UX8X<>)`ŹDg͋)f3z7gzr!O6o(7a`>MLnD`apRt C`XQ,FU̷ܛC;~;_1X2=NR=ST=Jjn]~_uJ۔u4@Pɻ)U V].zL/udRhS]묮Wzu47iˊ^dJgfgAkcE[Q[2sM|c+RaF]^]< 0X\{\ j5QN[(0.3]aYDs(mYa?QLTY3*L:vܫ3NF/I^mE48DM83t[lFbË+7 mr]no7',zf?lާYn_? #|^+Ŷ]u"fg;~^-~o]B ?Pc\"7և;Yl%/Kuw=FV)9y Ka'+?q?Phe~K"'9<m ,*d@2O1baGQY_: e!tʵg@p^Oʼy%Q[ |֩ =7ipmCj[ ,< 'R~ȲzjZnk| 4Y`9D>ӏy2ޔ,+>Sd1O0IT 4uZqF=Rk3a:]ۨKamg [b}ix0 t]&j5ӺKȬ?ml|#rQRl== -ƗKI'9-Y)32|I&p8[ԸFWJkvx_FR\uey{\JSy'jY<|]k$EQ=_::?qk"r͛0p]v{GphG]L3 ` y$D=|^&.$ E6]s%+Ӿa4nJm2̘uz,'jXC蟻C9?#b| ioD/}. b<Q EK Zu7S"b$i3+Ŷ&eQc/GfmbJ(zvXā (΄>c.'%m>B!,V ZZ3Y)t/k K+V{W tcvt)nI1ZE8G܅<%i9/qngv@xV5 >l[frޢ1;6u8"f ~(SSkV'hG|u5t{vgu4h֩ѱزT놴 ?aO8gCffģϝba0)e^Ui X]d-`rQ < ¦6_`2*y 4wyK!d ɰ&itOH(yKΉl !N0$Ld9whEg1fQα|6bcE1:`+B #]乒/[ Lz|e*<2 90U0 FqS׎%'uXQi*7dZܻݺ.RI΄j+k ;}/y 6&$H@'? Ui&uwϘNg WWgdNs]ӗDX3 S}!aoFIΙ\We}]*.SZ,ي'.ܶ[[o/(+A؄dЛfu]?b@OgUlSZgQe}qeRW#E2nߪϧR+}: מŀ/aa00"}l.B?"%),LĆQ9+?J^4)0ޢ K.tnH(*bHa_LʴpHy"y Tn٪QSz p] l1V?c%'\: N.+V G톎,/`+& : RrruwϛBF|'"AZ{[)8evrk]k +1)JtO.Q}Wa9# &ԼUPШεtff*rsU6U $[S]iKxn09A3tDt\C A8(p!]. #ǺrSl!С$ ~1AAx~駷/įFm1%w8r1 ܒݡՠAO=zZT"5S3:HW]w{$h##(9L BD@hz (^~)(>j@G<)?†Y#:B 8õRD7xnG2 9<]īW6^Lk6An=|)/ .=MJCVנ1R'CAӠS\d2P̥qJEFfMmi{y?[[3?k͗jj(Ρq@l/SHp>Z:#/5.2MI|vQ>[^3}QZ+dmOMSK*}Z}NjV)(u8qFMI87^K/Bp%z+nj*؀%T%C2kCNUOڔ"]v`!w@& Cۡ`$z`uZ gW;t7O ߖh3 ^`;_FL@;GvbP(W_䊩ht]{Vܓ 3C.^1_. @ KS"d9M2%R!)X4ݩI%n@@҅M^s~}ܙ:>@Am gweEju<DG僑=v;,:zޞYE@p`70ot@ Q)D2ϑ#BPK_pR߂g~ O8S iTQVvqfao RfδMqŋ1eotlCzn`>ʕ֡[ h50Ų.^{d 3-iBSrˡ)9@M0#bazD(o CZWG1Ɵ4ΣOO/W^͋S\Yo *py {]<^8޺ 7(y`u_>."[CMOgu0 VZo[*F't c FaEk^UWRШiX"^1^N7ڔ_茨+$F*Zڊ5r6nƦRl%2+NRU`ibs#xW_bk[*L]:4 L6+/*Ηun0It JglB8ӸKB™S-$ Xq_:!gCM*æu;&-+v~2~)<-`#mGpSǀhGK|ߋV-*fY)NmL)O\|n3TV?~ͻH^[U|:h2a !D .'-!xsGQ&&9*ʬZnS};r/:i|"EzU&U$(DY43xq+7R33Jc>)iMJ(""(94j>03$;jX-ϯaq8EUߩ{hw߯J*ۨmޅ7b kϢ8f_)ͲOd˭5Cy-[,Thꖭu)h◕t:43F"`q 4y% wR}gK!q}ym֛A1$>E~ d% 15/=>vrf{ 7UhTml-T1j=2=1L}%L>#S5".swJ$0O1[]V.]@}GuJ]O%ʺP `VffZŒQZygew:cه'Ea-*"HK /EGXB1Vrs2AFRMt/WUWm ; ESϨ m=qg _+:I<%OpO)^ )GFeg[ՌLP-#dX̍[+ߘks:T?HWCjsķr5 |P,A0@enO_./k 2Ф5]Jm ޣ3cwW%6̲BSeϢpHì1xonbI]3He@ :'#8nrt =4 zKHAI)0ó"UN}u}f8/Zi:?{ٛ_k /TO~o ax[aΏ7\uY8^uz{nٿ[tW Jlk}=ܣ*QM5ՋնLich\CFpvV]`]ڦkKa3Uq̩XA4ሠT_%VOgu1{h}4?z{vVC^Ȭg~MY>lg+6|`![hmidդ(/tnlO|levB6k d0J #XHŤ޷{2V Gx_!+dMĤZu]Pmqx@y)J'RͻzHdGRUy<Φ.fSi?}"Q+sW' c+>ee#cs3 b:ãa0:8كJvrR D{<$q4e(NPƈe (j2R1!H{+Y/ N 1^f7=b}ׇخӼsu:0W:߆ 3~$UNm֔#NB2Z haM78g2hv;() y/wN &[r*>!ZBrQR,w&>mpn Hc$V& y0^dINgQkneT3ۺ[9|y}_suzޏCknNF F#՚^]t.{u*;݋S]nSK,N {z&r;޼R+c^MW$)׬;/km~D-U5:'WDdX}/5b[d NטX[ gʣxp$Ǻ |kr֡tEw[AƖ}fc*OaK󺰪k Ew%r5pNL]LY.]be1L)mz mC^ы&Z" b+,Vl9U7Oy*v m3`2Scܷ'H AzDAJ— PR'pOTlqPgg1Tqc_[`ЇOkng`C)Ϫ -("H >rejXx+\ y%T OT]F~?7w?yvC3p$ '_7,#5 vg1vu՚*?NWRq}k E~B^ {J:g ?I;CD=n*F #eKpa @lEn&m]0A}|.5DЉ O6DbAa!O<OvKH0xNbgd|~CW3s7!C&9o?9 inQ%+q-Kie>|l2?" 2h\Ǜ[)P+IAѢyMI} vSA#iG9$zM>{!NQShh,=.ƶ5p^֗7j.|_%ö=`,U5i07~7}n0d8k.")~dYQwʒkⶓ\݌Z&4(Cܠ5*{b+"Sm 2K)ˠJ0ۣ1RWY)r&<*opN{ VTF󖏯P#It?.}Gt,{ˡ+•.BR!XLS'@涚 :OO׈JϜD0GGx8.=.Xkdpi髉G'XgmHN?Pa͖eB}#zQ2]66GcTkLG4ѱ(~# /ǿ/B,8WF! RV!_OCnm){bEq:`E_PTNiß|A(䓩!xHϺ]` $!ᓔR )īa$|DaՉqqf*0^"+K.=[zu:nG!+HJ_-.X27Wy/_t J{ׅ4(C83=BRTGcD*+)'L\藵x։&6^k.DP7Tya!}-g%SDJX0>jh0w('"/@jzݘ?eϾ؆Jϳ=xჇ,Y&%5.w^;cFEbz?LMQ0EP #r.W# j@4N_TO."-)Ow!:=Qo&$1zxcZoچ%Ǻ6)g&cE6>=<޺o68 Q%:BAGI>M9;Kb_MסC}Ənj0uN( EPO8dT'·% ^qEPg)eWRmD?VSN/J 8 'ZNɷucZ߽ݭ$;JG 5;FX_ jT@LSO,!Eϝ4A[u.J%ka] Y42b$ ^HN {wT.ET{>HO"C DfB; Q~'r(Xd} HwgC'W]gޣŏћ2wdӵO0{M7om9;k"z$#ٜb߁)ӞѤ$DbJTۦ[`7)ø2a(zD+` B^i,m)ZLq/ʵf94ı1[?9o̬ *UnS6fdB٪$IHR 6DP#|T',^y"="Bg/]=fhx+V;~ϟ1! xt{yhC#|TOd,Ϳ8,>ǒ맗b<\f Fgd;sRN1*dNF3zݫ}~otGM`Z_{cI4t^x./~T|wa1P^ku@? UTX٬J@ OH%EB"eNZe[㩡_h>Ui=gC|e\n; -mGAp~eh6bQe(})Fc. NC&xbwfPO($g_boD GGE)9Vöf,tW e8Cg՛z:9E$ǣѳ^}lǟb bqzۉ[&ʝ*-SęRL\?*!9 nо?T]!3p ns m=)8NWf |ұ~keoXK-Ƭc;Y5aQ>pn0ᇀAMntQ!׵XqX!?33A3;@pMg;M?v We .7[_P]yp?7Cx%eK#GK _ѝ*-FN(Nm釫;LڥP3v,klġ 6=؎\eG LN "ވ#rу[31qEDk;ɔRvIf],p[P{n_`s"_|I{|F[j\%l.cBMBB/h'ɣy| jŃZZ,e.1۩NjbY-$@ Qo=ZŐ ?&׍z 2tI\EA&ᥚ) /S)-2 a@"1kBRxZ2Fjp3c zh- ɞ-u?.< fswgг35vִpsOamyAs_6y'f>-BLZ͋0LUtXw/LO ]Pk溈gGmƩƳ'D3xt8Ai"7t ">`|\h~N(;ߣX}EJQ({&q#!")JRFlmێnOk7o5JEcJJmJ<\yM񂰀T *u< ɔVnj.;v+Qk-vn{28Ol|^1uv&sĩI~rd9ڐ+;:M*)K5uJ °(sFJS0Qqabm˔XQZ65jO=~PHODhx<$ޒ?e2_D ,~a͍RT\g}o]" h4.>0f#ax^q^֛=x>tp M/XJ*!%%ZJ=Ha*"__3Mym qK00$צOFR ^QeèkBUzׇv Up݊ـ6T1^^g)uӮ˟)4{[\Ww+ '`%7xJ'f8TJL*ܷ[͇ų '6=W WrvmܰFH4cP8/sp2(_.rKr~|С}^B~Tx)pYP{Atx=),>煗(72Z Zm m`5x'le/dTWfC@E-qNVϺ,.b J VKw`/"f FV͑E.qsppyyWvBp3gt99zm+kvS/׹AvM|>VŠ* HƏ.d mбT\MFI]ɢä*+ ^@Sw{Pi$<[mi蓫3Myt0={/'G0U5G:~Iu=^_3>gR?6?] \eW ZŬ\y`p U6;^BUUdguҫwv}:7i])gyu4Ɋ- YiݫP5cq/έZ UM>07P3Rͩlt`m=) ~G#~B~;$O6a:릭SLKsqv{|NWoSNngD$_-!`zq'N$7"`:uuEƕve\ۏLԊ8X?Ʈ6j9[(cYve脱[*JE^Ȫcų~+ՊQf.پ" ٽkvKT.9ɰf*)~-=`-$7IuW55Qbd6kᑘށ_!"%9E'M}rg9:@Kv߱\\~]J1Md윛Vd[1'g;~Vx &XvE҅GvyFWo2LVfU(X 9n&O禮4>g4-(хNߖ-Q7D+$ Z(T+=N?X3yOSP5VJqBN ]sa7;YnwkC;!:t^Yt: iw.lvqw=гEҰK@043Y C6l"ۥQ7İ— <)G 'lz 9MW6#OqޗU黎ᖆ)ՙS}.˞Ѫt=߰s_2%TWp)Qy8LQW ]0r}+5L_u>U M|8֐z'*;wq-7)TQRT !M i eX5'6l0=9kc8D+;"Bh%( AE*8C~ GI|b; Yb /X"1BEim V[f2^1wARg3TQ1@A^3w**OB` BN^:PE2(<|Fޔhi8#۷9so55oXU'&HFܹBXRQL_ЧT;({[cS索0sxWs/ 7dZJDpM0 &pX0Ӄm֘iRm:f65jRkOO6 BK_MΚq|W?w(qc'IҫN7 / b@'VH`Vhwv`2? a=˟ ǵ}« мS-so/R$'edҤ֑ CG7p{7[F=E'+:$M\[D|(L9H XQP\IR AT}{eyuIm7nb n3o7lq{eFfcߴ=u2&" UP1eitOq裏uiKZ)¸3Mri[E`B ;MM5P4gbk=ٔ` gt (CPBYŘT?M䎞ǂd"MM`e\q$ &juaagF ~bfi5$3Eԋ%275pU->Nv3'С'ON1&z~顈Umђ.m aWQOL>&u4c:AC-`1J`X B֌LG ۩۩۩aU'VTm={IJ{фC%_tۑCLHW\)!:6ED̿8ryKA_LFkhVZhoLXDSށlOCO—~]O3h8X ۇF9Pta'9^|% ~@%?H?UA1/v$`95zC N*EWW[O]VSDں_lyO/I5X„pt ! -IqadG] jAlYIDc [T2@Sy/9HGSq񞧹.ASגT)bllcƝkl#}D-FVNimCl 40 ,RݮH}T04  IWB36Ҟ<03j&UO']qY#g a%%fUp< :Wb~K9rBݏt%S\#^huʴݟkfUbLiV1lϙ]~Y^D!<)EFm^{ d׸uwCs<&[T9S]/ŗF@~a}!ExN0{cNGPlbONc77NHc1h3Ļ rR[}J.q͞fdue7V c5:tc<=E?*+—P))-@F Aj "'L=@GB (N[@x2D4S( (!FL B-{]ya`%`$ܔN"D'2#*){ȎT>bShIв XT XZ /sԧv}p8A+>l]~/ov>k3i=~- ^.Y~vVz}n9eg-+EGċ~Zw:Y.9NNY3Ztj%5k5O-riC$\jݿfg'Eqˋ쁾LavofO57CMijh Uf!G=oûH5,ebH_YPЛV X₂UJ+*/7ʖ*bʄP}C{SB &B>k 5A.:'naqعN.tQ6$󩸋bzmISHQULBOtś'kV}tt9֏=k/^R{'ӼEEA6^UfXh)Juֆ}B cfl^)U*.[5uQhSzOK8EゑW4VrDlOkK`Z kj㟺Bޛ/̐yl`i_bx4CɃw?μk6Ӽ:+w7SQ<,r>B{-7w;ސz>@#ܯ/ϴ +5y`EʜUOKg@i"ihlDoW#~2 XE өĄx(B] ćiXsڣ~L8+ u<׏ ab&å_Շ C<}z4ugFpձN\}Bo;<4\|uz ?%Ϙ^1[#/$ ќJhɬ8JY&11 *2{sZ{U5и/4*j/ +{ 9&+8T ZE{N^+_a;!=)t%glH5B#9J]ᓼC(d~IT,S֐s Y$O)}A:{GschA1ؼ]dyS 74䘝1/ MXNYG$ 'NeYErԳL 9<`w`KDdPfLN#|=w@dٖt6N6n=ۏR0K`1G@Vtw#6΍N͓aiw:-,~9~9%a^cz.yKk ir (v & F^<:I@W %540jj ĤO"vx_X|5\5x8~5 ', `V}/#*T=`i$T 2A fL`NYҰJ piH.SkOf3#Sv 5d'đ[%es=<SR%,CCi 2:4VGf[dqMgwZd{C $.c=Yvld#a/Ns&Q}.d>9q *&x\(,rXޠ{}0s#lɛ0%>'|/="՗A:]~/V.KTTv9ԕԿŝ1ZM) {,;s yH>;KUi{%a$k xz`Us(;o':dvnEmnA~+ j6L&43 Fct\> fdF'L3\L9ߔ *KI|"-˄] nkv\?e0=@7?%p}O d}B48B?q4SCgAg_f2WlZQ=O]yƌw缟oIu]_wOcIN7~҃m o!D)y7CMV7ČnfzW u#߄FQ#ρ\I11d&{aK3ok>6T%E6$tM_.j'_$")C֨D6%K \Wh8n# D*LEKb&àB, m/SORq/ ֒nd2"xFQ CBg o`kz$_ ҵ;kE1{{#ij;9*# ,6f& K ֿ=<_8p2% {գ'kr}6Hy4_Dz𥔿9a̖~XlH +^6Sgz/& OJ@Hcm \٩mIIuhykOXұcnоv>xJحhP(5";?uB8 Q<r 'x|=]L-4ͭ]rwg𹭿貽O9,q Son4ybGd]f2kI9wMO_ ]dԪ5ߎdXٔs6ʹbQ7 FrfHSs&Q,F,YWenlD[ U)*S1!$yT)ESa[v;h}ޯ|<ڴc8,3`#0C6+:}-bL#FFy5>de2!ZiCf]xٕؖjc^ɞR𥯗edaE J 8\9 *-*65]Dҧɟ!LiXp|&xRoa'DN*)lW떗\KHE[WaQщN xvuJ)> =5('ͥ)"Bh.d76a#g*U tPhH{}`_2': 3L/j./ik>pA_}frg9l:LzONǪWy|1I#g$}G01駪FMbK/3v* gT7}0Fj:agyHZIKk^zoV71x0g(ձޙ%_ Ep/T4Sw͂񩬐{-^2hZ_58$W$#\BWޭOSRrFUb)WC鷙GE% z9{]5.C.\vK(4_K= ?H[Ek݋KB.*Ob}Pi.l_{lU'0og1!uԕ:[<傧4Tp˹ua?]u1_z;vA^y\'(y׆:$VF ݰ\$LrMrCo\{t9u0K \T<\".@m$c KF4hɊ(CO|Yy){SNڜxdZ.""F,@{q}PŝxQ=I">hW#Vg2yozta\GWhLהW9|.HQwPhp{9^_^ ]&SNNi7_SPicjH7Kob߯51|V_A;Vʹk0ͦrVLˆɚWi(1)jY5*jI^d4kiHH^P!_(kCpoR%X6t#*<+9l`CM%+1T迚/u·*UO{kyebOqN6sv2BV L*ha]$nXhn949a6"6 aԙpBTC(L-w LꌕM.Iɺe?R J$ C)=hTBU8g1ʷTٟs8.KHXs}a@bs1,?\7=eGɺ~X4f4 oTj5 6 A LfUAnːxI45U3WQ/AIFADˑsS40z1~#9w_1S[VC>;*.ކ$i2!%kx{;veO|nK ZFq ᡒ pivTdwa?n9@N,y28 m:=_-.*'߉o9Ufsӯm d2~nw%7v~߷-etZ +IDmjqs'RjK"=ޣ}ǷnyC"fFp胊q.CB1#Br..as ̌I؏͈2,Q_wPe5lFMn{<畜OX&PWp$L'S/鉴&G2) D#ѫ.fqHaB!y>aÑ. ;ҩ JxWI z}iooUdtAeːe/.CiCEN[Jjߵ{YpTS / ƣnp*.0)*|5E28ݽ znqqZ{$|nCžo5@ÇZsz!GPuZ=W8=k4lE? FD7R|r< Pju\7t`T5 i`\Ud3Z<Gvaki)I|:D М,d$GGMy+uBp 3<QT_%ﴗpe?a?Iγi1b.BG$]Joj#N>S_ż_iv Kb }tʛh?\kx<_~wY7b]fh3 hv>؀4x} W0Xм y>>]57H#V*xIB srOb32 (#nHHPnO5ufd:A(ɤ2,HXèeuDž_n&ہV7 _,g*>s1}FVӢycj9Njzn]ou%r ].~dQx])T2˥1)@ S"V4`uf"M h:膕*'Z<| P7VgH8)qjp<`ɟ%jO,0hzz1У6*np_--10'*Wc:MNۇO_:Z6]XOIlo4\Bccb]떟/Y!HpJ1: 15 >c:=?7up Y& ٻCˁ?)yUAs0:єB(F)Y,xRr_֖u4gD_qa$ "|@/e,=McbXV?5K)a@f[`IWYvZ.eO7~͑޼T,m"Z0( d,u`&U%e#TpIvo$-&S3u,4#XMnlVȖ`d)؉ c:>Tu.Khwuϋt'͝W7`;_|1ni>C˩ud;uL7÷n&<撢'[<"1R岪0ig`+d賭 EeQ0E?"Xf4`J&ͦҦTl>Ņ>:MxDƿ@;řщ5 >xsh{]{rG*صNdr~l~uEO"qO41d!6 xL_M&"W,sZCfʱpNe͹]%;ICgP@=-j96C1Xrpn>' Z;キf%iu?\NlYx>-ýlUs1[o'o^pa)٣:tżK1Q%}58e9%^G Z@t}3@j&xN1*x=׎q9IO޳\ SSgCf 3-zyMC{(^52)-uqyZ* /otOjI#:; +AwgxpR-׵i|S*á f,e(tAkɖ_]R_DvWK KΠ^ MfU4&XVP/!{ =r]Vd:`%*Rzg¼iW6 ns%կ1Z~mKƫy륔m6.Mj1y)rU0%Һ4#};Wm 5P\&Y`[TI%qSamH,MX,ˆ;D@hv@.૲  ACSb5 ͖TWӞvcr>upii&Vo=zՠXl|8)^ۜKm)oiӢB.GB*K{=Ӿuz%4#e&-scT]R r2V^&G`Jg uW֑|uT&@%$Z%9z4J2]0VBD@Ӣڈ D@@}c g!_$C I4 bXWa ~F/i5 χXsu;|fݰ]ٸx:>(4ju=|'tsX'gi`Qd;PbCm︜ N7Q.G< *^`Rz;#Bػ>Þ7>)rbslx0,xKBH3PS8J2\EÓJNܟ8Fxn2v2w8081+G;>r[3pnxWqQ_oƟԿ-FIHMoGj"*V}N 2N&8.yKxyiFJ|6!(BAOIO'7/ G_O43Esyeˡ,j@WP+Q1;8 #]$&~x)"G^gT' r=:Ŭ$Q\)?B}XRXEc{IWak˼_(S.-Qz}GΔ quxۀDzǑ%[R.š2H>J* W}`FT !b>M,5h:Iypwh拽CR)ޗ g?<*}?I{ȧE5$N`߅e{C"T ;$4qPTZི~R:(o/?Po£Ee35:ewWWj` ֙C^cŭ.\wëqonj>vN _rpn,dSO*6#h?3GtFtbs||hyѹ_sc'6gF7qnRF8sûsC`#41hwathn+x|k1Hn8us_v4ZjDȂ`_`;ڊzm}ww7_h>ߋ ,$_I?e@ʃv[Bl\e͚KTQ'm`}N`#nէJ #2+ٴI0bAMX2a$bk 9B)HW ɺ@ؿ1$cc딕*䋜 G^PP8$~hJ;]$& r|_V甄ٺܛߴw,! B*iCx_AÊ<)/";ws: ņT5ZtQzU,7ZrpM紙ʶy9 Z:Am&VK+n9_||lFV7)խn.KY2We+J#^hdrײ,ҝ"e;#yS)F ">>>>:"`72̵In~I|H3\\)x ~כdmm[SW${_{.pbȣ/|2)s%LsT`YL_1%>'dB: OtꊩRFDd=Tq0If8ߜxP;8l\V1}ú~]jrOv3ߊSfŎu/NK}.X2 |EӐ@h5񣖔-:ldjp"[`0THF3:g>a[oJlmUnoyʑi`BJxܩԮT4$EeYH @i c]+Dzg60I & _{(vsP3L4r_7`5W`"6LP\o:U> P5Id+ 99rNZ5ZjxCz8xՑ"#I:/2'Yɲ{?>e\`޾*a0ER!AK ]{^tjiHQۣ٣#ܣߣѣCjNcձUUU* VV' D-hv֭Qi(.P\Ek*?2ތELBLtLO"?S8L^[-VߑjL2z_tWWjEi F&%/4P#D0F^[kȶ`'"tBW,>BY^ З}=q#p{D" LxPs;31?g;KUl5{Ӧ?BZ&c;B趛^f܋j6ktaY`9wu4 c*:;}ʰ,k$hɤLS@ [B *8GO7oB>!?g$j@I0.bxR7d #fj(MvFZ0< asO5 "b(,k10}f')bY~@ɫSwx!qTt@;2'>z̟ 22.pR꘵,3j+q Ӵ*P'8̬` {1#ftI7`Svwl Jhಌa"_B (g"rڳVy$TձXreeYFp.BD{ f6.|u-hjH~$iz\!)㨒U&0 TZ c߳":P]Ux56݄f'g$y*f3Hnm:"eW z؉#,#' <5LfK88׸3 8L9Yz'yA<$| )qh7Tȩnp%/yyxkDž*6HQ-sBI,FуG D{G٧{ /ӕA+ߌN(I@uAS N>u\OX2tFuuG=>gJ~k~\K;p>TNxZ F;Rq+ƈDgD3Tr=Y=57g3:M>4Ӻ7}U͎yYX W+ hT/AaaLa)b.ESe!^4-L ²iA 8yi4/ OI[22ڲ22#WEQxF 7ZirZZTTfP]yg* DXH9大St5TzJ+ERMNʧkSjBNLm4+Z0 N-\[ٸ8ܸ߸##mmmmo=3 RaR^J6K@*s@ ʻ39}*|19JG 9VzMMF{1prEd_T,۱cerP@ūE=nq̶[# ꮈRJƇ*90msvG7Iٌo?Y$h;ȗay !s#ecX?oc/C*z*M>s]2qR~HcAҠh' hS0a1Z~3aw[w7/:>K<.[pt=]eGekPҗ-1]q܌za3 Ύ-̯c9Iq#V6]={/W%?jkGOAC ;z}6'5bYoJ^ ~湸*Wi)4Jm1vKG0ywPQih+|sGyh  L56L6 _/.1߲$E8G_ڟj<(bM4:ZC#;j%cąr"8DNFldn`Ͷh>eF^ hS)m j {那i)70xѡ q,Rفa6q ) >Hvȁ~YpsOh2R*zdA)̂E~|7(Pz:w{KauA^*uS9??q֋y.3OAyGz+a]p/7<%eL/w: Dg^:Y #1s0sZ#28C@-KJ ,[j1V#1wik?:=p}Ӏ:3aC@=iHլ#W\ _&šʘb1LDFRk 8 T~k3o,$ klLmN6v413nlIWMASf60tk"(ysHv]bݤԆkp 5iE/i@Ϸm +`mo [@@J37K;,of׿?h %s PMW6qX.ڨרjnf H̺NϞw=OzyP vp*dw18@%7I!YZLpf8sL )\ WucPhbQYW?~UL2;H5QsS 9Цw\٠#ћ掂uHJz8hfّ eSSĪ]Y.ЁӸka^LޖO0CRo1S'tW#4>EP^ C/ >0 WRufW:U3 G\HdChGS;4qûZpqQ 2:同 =Or'/^oO$((@[777ڷ۷7n E`ɮɮծݮTkEn1K PA+q% 1H7'vM)L"PXlq Si::U3Gkr6涺N⼋-LZE&],m^m}{3(# >]! :OUhR)M׀:TXN,:s$ެ?5RtLdYnm,Qm\E^G(o:QE6~}iGm]mo[:C ų@.(Qעu5טvf9rq7GVMRj1Z#|8t;ͷXė< izE't}b_DcaR4pϞXjTLZCj)jjװ؅LqVqݫSM}\*_+Rsj"6`uI~*G?}ɂ}|FmlXceg^v,{Ƈ.u,333ڳ۳3f&:;&;V;v;6P> ҟJT]֊v6 jduK-VVKN16t`+ɕ 5 7c<&YY ek&M2S4n"7#y0 "(iT%\amX'쀜࿙9%zz~ˆYZ ,Ώq[_! c{~;|k7m4KWޗf \̃P9|,W}>߾Xe{#w+7dn=kcPrES.V LOyS.g.f` Ԃ$H)yS,m> 16ྎLc +#5I̟t# TI~kdkMћ֎RӛMf#ي@6ɉ)M ^EcAYmXXVS_(.Xjm)5BhDn=o)s>i$@,51*AG x6Qt rQ db nwpe?;N >9GkU?㷣hOu3}7#VwjT6&Ϳ3C*ef9S v]9 ?*x'Y#\ra;6U5 0hFfǛF4q"\!+-͂r"(t$f*أD6@=|f gN](u 2=֮E>Jq{V[08EtNlU%ˡnpW[9b8o<nMU:9Z:4| R|NEf#E&]VjdK%ď$|?RiH ?u4s] Ϩi_,,)\@Cq,YϚ'TLEËo"7WΆ36+6תEfǂıd-C Sۻo }'.M׸4I}Ɨ$(4_۠^f^C Ppf $#8Bfx[͂ӌ0m_?)Ǭ .0-#2iƙq!ʼn% WLEf&dR[H5ST ħZPRgFߎ {=1 <0xuJOQbm/CNo&]nzMthia&w/&l<z&d+2I-xd:哟l UFaZ½DWƚt+kyktE.m/77\l 7 `r\A6,ϘtQEZ(P|nSZ^M0ɅQZe>g6?(qk)GWhD}4+7Uֹp;RI˞Y9-}!]?ON/n$fG :^Cܑ:U~#2feB,!HѯY?j~k'ܺ=_%UCXUKփSI {IGpk\9撕,%k{ۖƖՑ!t7.ѨHu`6ֵs `F" 0ܶUD:RE1•d e\j o%TH'}˵AV.Ao3 kFy2BY>Pv c`1[4g/tUx ,Ζd߆J],63dbMMՏEm$ 3j|ZS P:r4b6NPdFFVl,F"64 ̌8bU C7U_"J,lF=WaJ4U %8Gbqf,8+2ʽ f|N6Yw/w[94*% H%L\Nr,lSe" fa0O<i^:, iF`Ixq*TӿYUQf Ǐ|d{Ah^/{&|",>uM^AL!"W p iKiɫWH)O.ut)R"2hs\"I6 d{#n Qv>F>zc˷Iښ{e gk[q€NgY؍ּ#00UGZ|-|]D6Dxf2E h 2><ҲٳD[5dFv0`ܵm񂩻D3; G|NFtbI ruX6|Ȭr}iX]zUg!xFÓI°%Xg&ftCMwD fcXihy fS7GR(ˎgY;ͬ6QeIIۥt6s;fg2|F[WwǶybg6KT<{ l7%MK`Իv[فLOA&flV,ma hjmՁAG`vX\rP\RZ.!f5(Hq\Ӧ#St00`[a 0!,'5=(A0$bkԡ*̴MeJĮ/)GSӗs_d q2Vi!3#{$ F `d}1ۼ M P T\A(þ`͝w!Ŭ爈Z { n) TTՓyDG'5ryNcE^;8Rkm7`8y7/6ZM}k̚ 24׻ٻ7hIAi8"/1šwߎ$Hp6066- p`p-az57tlC`b#Cјt"Reu.АERyqL_"!#:>}9Ů,]LuPT+J" -% dj8T3xe)ɓ00+`zV (B't1'(i9_ug>`"LJ%@s,5 1-nGl3^X6ŸlY9D T@}WZ\ry1#" th`nrp^KU Z xb0m%vd<=[|1=u-P&}b}"\2;3rxπ)u]r:OOoÏ)^vnCꍰ.n:#\᧠07Ij۹ b_pac5jC&n~OHe2ˇ /nw 5i 8W~9=mr4;N1p\I.ԑGM%do7g'CC(٬^#*uʡ3^BI&S9c%Wߚ[Ug)zbLPJb#^ p,czO3\ /{5R3>!XҸ!ty,} 9Y$'zucGo9A Ih1&g2ګ! ; ^BWqڢwM0)(8R𨨗p~cJJݤO#îVF{ ӵ# ?9=>iK;(ȼr%Zzx?:cé\,z{E|S,(d 8mV-.ɠ26sKfٻı`d5ؔ fBuWhVnPBzbI\,JluSi=.e $h%%Og."pk AgɟL:oYMwtCHB1\0S+fcSSquZ7.w1ԇgLnJf6w͎WKʻo&QRu*Yv]s~Ĺۏj͆˦dW7<dccR\zb 2 p0 uO)G֐r7{c4>.N9h\.ffNعOR(/HI!78\C fƌ# M%nIi- ոIPw1g8Nh_+ D:g;W) E*]KLkŷs"0\UsQ*?<-l=? 衖`.|0W` م] D1|K& twl.%U+3HNrtd# cah'\߁8:&/͜mG-QkD6yXɒNXk<Ğ܍BC(센ⅵ9!Ү=1w$mMǚwʂDLZR%u %N1y&>G/FbZ_?Q 2\ub:DIVeh|ZL<2rKiհkF#rųvNwAgS\ޏQy?ISy]>׫wn邸<i)f[\SU\e.pEz g7yC؟h痛cccgbd֔יJ1v RCϤ@hpjw.B,w1A^sڻܔ/\ >Od;v= .`/:xrnܶorŊp7hfxv <\%%y aڦaeK\C,y dBؑp&+`b{]pT%s6;PȍE4`3n7֊E.\6/mg4s&_1;m:++$H$iӧ]&9{0 lej*ֵKڻ\0~LԻwvca i!Sq l7v8 )z~F!ׁZU~ 1 ĎS" oˣjg1 rS]8?O}]]ggST~/GSboz>YG|tQnK<~KS*ȁ1\RnY~c@-WZNM܂@]/i_=iQod룦N`&4; ]G $Vm.X[ennxR#?)OAc͠Y@̄0U 3pHpz fHDЧ+(avY0-cihqu/MbWA,QRdT;ws U=9^9 K-qqqpi,vG` `| گWX[V޵y2o YsZ ^cS! z:t F9i0XZPinAhA岉(xM- kk9 *:TuGz h2(̷(7j1sC=tI S7Ģܑ6YPqe~iSǃl:ouLsǕz>NPn=g5SOcl=洣GIȵKU-KFY# V0ϐL3cZ(z 9&K?hH0o]G_c.vcۣ;:3;i]U,1՝qRw|H?/]wӻpጥfT941Eϯ~qpԁRVܭgP Y2+, 1~r|a+8tDz+q=d&oZ8x NݭXOfJ壷qrtK<~Cdzi2o-H#:e ]^Fq3H`؟}p[eZFDTΤjʘ9U?߇'9C\_lO>ز=gǵjUh_r(q~49lZl im-/XQw^5\ʆQ[ǰ&nQi;M݄;v9`v%"mMbSR R | 6gHhI߯ZP%rʤd%24 ႄ |`y6(R;qZǾ/ {;S&SHX?7ٔwXbNꁔx,(etx5w v@m9n $F7S6e} (PxS٧J%O8{rf6ͤX2IWb\Zjs}K!3[e{mÜ9xǓK)#BWZ\`)hB/`K^sɷ1U'Mb$.pdwDl(Q{&N buIID.le\ph{[5puХr/_o}&͹ҩJ  pA@q ]Y =pH#n%R Є,Vgb 23tE͞\:wXf~.[ ,vatY-'cz~'lo#jphcN/g:=Y3Gv]界Q64 EfgJ Ngxsm-M~ thi?F$Hq/Yr)I|Ǫ#jl.{d3f޶g*warh; !G42Ʀ:̄wN4jN\}zL"k{xY{iAHy+e/OR@C ^m>٤oQ2XnU>'kiNmLy xs}6oc+Oowt]7}txT_d@ȢWh”YIx0eZ@axR@35s4 ^2GvqHSʂS;G:znlX- D]*<>h|(ױ{&V Uw~:]{ÄkR 9*gPp pTH#0x ;_=ݔ~oY~^n7sfE6QMzް]wC,MkC{UϜKU# RֻZ1*a# 2 ֢KԹs*e].Ϣ\l]q%I ކ̸B|௡N dI/uYʃZnUQ9!)(6vm^f⠢h]D /?J r2ҙ'D:25Z~2O*(K(hmle]p$]D906*MTK$irHUSuU/(<#|e֊nwX7w>u|ڎb7Wf{V?[ʫk+ XNrz@Ѧ(GpeC D'MO׵YM铍ES:T3̱gȎ襾Xd{ΨoB?ZOq_L-O~?ޛ'9EhM|~; MHդ29VŭBcޮ?_8zzGө\'{UOh_'N9."m:N#||?"ڐN_Q^1CO*GH;0XQ/Q@K;(-+"|{_م?vO׺g lZX-Ka{C6eZ+j ů0^g6fzs0LӀ #P>%oA n>p=[\9-`o큍WHϷQdԙ nigL0sV\۾?֧U:Ç<WV\cc'xۇsfCq,۔}zEO'Cdp <~OrXcn,y< !3:A'KHPGozf0=fKG ܧpܨ9QwiOOwп =IJ+$o`Cj*mәN?a\eʿ(޼|NbK-S(vaK(f_}= iްwas2# >-_:>a 'sM2Ig>qo~%4Yě?~PM*"&dJgr|%竞gܟdz73OPhx} Upjg5AA\h1.Mǐt8NU80d"3h;$]=JCD_3xI%4\{==-%))o1fذ SR֮]dV XžC7a34菄(*'7zJiMdZ5an)x+ 1[~%IϴE h$/4i:UǦŏOF,vGSpzuz&՘鸁ahV"xmNٞ|:)A[OSAiiʓ7/3\)'I0Z^eN|YZ'ľ4su޿01gЊz+Dq^'Cs ^7@4N)v!K?k)#? kdM L3hswiH@%ȝkz]z($#Qcg@ᬿ_̮ 'i8PgGD06,->ArlxU ԔjZX/Zǥq@+u7W%^^vY"jP}~3<`%=!gS_}G C `w\>#N*ۜ|Zox#Chbb3wRtn`a]cLo$F .gŏ3#3->YRcCBI4bOibN>y1cSe.\vQ6) O.hۻk /AGZ1d&4&ZxfR&_&뎽VF +0eұAcyBI:!'?(P$!&NwEBME%QDJm_'Tm&S0$Bs <o=gp8BM$[q&ݧ4?IxDؼu(B-&.h2l8|C!&[Jl}ʴɼQ|pEm!Me(n Ҽ>yiHCC-Ӏ!z4Olؕ|.[T=O0j^BS#A3#/5=nJUU׍mOA&ﶹlP8AJ T}O7N)>N)n䭑_% JwbɋVJpg( %1^* Ze/3`HXetIЎqx,-M"TCFw;3&a:nx4{yG):ZI#녲ff0{0š;-@}đb18v<U5 Ԟ8 q&z5y/$)3}ʐQ5"[syغ9y? aOO_fl'uG,itLN`~2>@yZ@f Y2n1^N} )ƞq?_V gPZ9i意edX-&,Hؔe w(ej6`!wWq 8p!s!wIC^:ϪLVAR/&է'y9i?ɩrەop*:fsPaf.\T04[gH ixW]sM\2O,cʞEO\Қ)i.Z"AKa(M-VϽٟ9F,mg7SKUt߸4ow[<]\}?/˖\xi@[LyHoVŘiOJԐ{D^)1qyb_ @Ā,kK[pH˲~,1bE" $]W.~)1 U'55]S=Ae@ (y\Ol7I g+Ӛ',V]( {#]q'hVK^č̱DB;jӁ'agc=(0YfM_̣A˙oP4XEĘ娓IJG}'?9A;dObpAwЧWDʶi媻`[X$\~z2 6 ?yYΌܻ :F*_+s[٬})4E\/| >n_|$_ |¾{҄M0c9nݔZհYU6 Y?}̭ۧSKq[l>Χ|~td; !XJqTAPVsIyz}O*8;5qU{L>^2?;/Gڊj ;ݤ~,32(AbS$e! ASaCǏbW})}&O>a!U"aj>ԋߴI*CzDSp8^X<<ːsEL*O+s{agzu ZoW\[]g}j6B(;fPs%Qj>cor< m[n„p]ZNx(t7]fG"LbMtfL{.GͰk?u>&?&|ǂx/|'ytWXa>D< b48_r}'i !OY"쮀tnL?ůV=ǜ 17RK/XԞ<1(L1 ?/ϰX.sVYC]z/EEhHV{)5 s&<;skr WO!)6YHSݸ C9`zx8zx'QM_gVzJߥMW6+yD yMt v=~s \d~նNJ&I ћyD@,H=c<\T7ɹ,~Ls6`HO+`W_$ J鉁Z' Y^rVu>S'vL^G yh |S3-˾pw^gϒЫ.?AI:#N(y,/pqWDѽ '8]m*@YPZ"K"_ 2 ٢&ĭpIm#8[[. ">( |@8S b7}h'udKı*pqUW;-,*}gwȌM}χ3LnɲX2'̷!Y ZLc.=f21ik_|&X>ANoq;T` %IF| 6QNjp 7txhTa |vQWBn7 X|37ٲ=oRF׉Q[}L2C^M=sS YPh|׈ih3{Ϋ/X~>.b{ZX݁ %37!:ȃ`MWd6k0e Tݿ:;ePvPcβeI3|} К/3l[61\~5633QOqS4 oXP^'̽0E144CV3Esz[_Z]'fOjNOe,j(i<~hs&}wcoZ mHz9"}a3Vяw3 "J_o7a!Ψh['[UߜTw0|&0 ^k]fK5 ,&}gk KEۨ_Тb_/!^ p<\w[QV 1$ڕEWM욱`qS /^TT uN ÏX苆 5'F˚O3]yMM{ʥ4^7twX7 v{f(jGG屿|*3ܫ.G-|Dм-kQi$淈%+Tc!9VXּ o \: -_}?Ao|7N[>eAe7`q]|_^E&MZI]!xj ׊`Jڄp}W|'U% ?=Ů=OL s;AOV_*GZAvI=~JiyR^^ LCrT3̔bkA3 OXoZ @@Z2>" bd.V^;\/F }),7AdWK\_u̝h`/BKL-i~a~>/*'^п_pn'2M'@bד)ω2P0fz S^5}n 5>憎kĦvs+Ed? h-<9 n閠gOE7]Q@æctݸpSD PҝIIJlÎ(rVb ۫ i8i(m 5@RF=Ӻ!P3ؗYkQ VWf2u6&X]]ݐ_/(0$CO_h4zv<aM#"a~\õ%OjƋ,(WE0wȀ<)7lqM$/# ;k,)9ݏ}_'t}7_zۛi4.}u,=ӟ1?ihT,DZk7,̲Mj7%{BA\qsB6X7H()RPRҵtꆭ^ԻOߋ/ћ~yBSTAθo0ro9%IuACr0+u==&b 6D>`ز+Ge4ʍg X;:&g=v5;d2A|oVI3`&R3?z@/]MF $Rauƨ梼p/.'ljc%> em,1`q}4FGbǣ]/RRq ACW fuGE;O 7 }y&K ~)*ƕ7+ DEσeS>BëAV Sa)ZbJhXga⊁ l(mD Z E -BiTb~'7g&`o`=n+&V? MVLCO H'+#ZARF&Y QD@s;&x4=FuXkػ4 w$Iv׽QK&ߌVcn1/`۴,#/uS7#3#-(;tڸH ^({Sc ._gn?&uvԣ8_Ƈ 7>z=l/ sYQ/% |0"wE 7UZy<TnkpkeX/6Ը 2G,/ \s-6SA`PӞ/S2=F\XXm&4F-=peU/΋kq0gD(jo{9jV-]@s[&@vT!C;]9yu/:o:_SQS{y2ͨ)ryWL$b  bdf>i{9=y}9kqOA&V>1%fffnO&7D?\72A0sb0HS q;7Ys|֞ҡ]I8+[=={3QGX!B }ç?3:beۨ*{$'ӓ8M3j3WrB^1{^+yk3G /Wg,XW* guzK)vlb%HdHViBt^դJt$v(֋.6Ow!X/(ai0i UZȕ(jN;\>scHWw Hw֨ΨStZ2gN2_)r0 (2F G"p-$osh.ߦi# {άx W=|fuELQZq‘fDU̸UY^|KW^(l[rnWwQ]GudLuqj\&e1fvB_:nEÌGv>^C/t1 7 xjϟWl;j\qŘ-$#7T8;b3$*%hH2ԍGL-s14`qŖ9_HAjrpPe eFZdd X_fjYQ&#2'Nb܏c̙(B\hlewGB2R2dOm~I A@gn?t\`xApyt.taܣF/)'LuŹl a"/m|J4R$'sˁ?.lI!#QcQLK$&8iqcacĸ|$IâViH,s@x0\u$5Fȗh5'/ǩͬaؔ(\wi!&m3žXFn'DQ[V6Hǂ !gƪRX> p>RY 1l&)hF!x%&!-'P}~}4gyI72Tm?w!K"K!.b:-,XBIٌU44۴Au?->`w!DB}R]CB<eJ{OP;vHTu%%ӗ˄yxJ1D-uݥ"GUqdCR9+xTRpd(Yҭp~] ^6Hh8A.t/$PáB}^^ >PgƋ%.8eŗ#a.= 2L@A8"LBC]$m)RR/J&^DIhdY!D"Jp2J -/zࡉZ(#n̦+,U p^cRFCRb0nqJ(#q:(JrK]'>JWpk~}a:H@I~ȑ؜n=j?Դ`kI.i!2(F%u 6jGQm$wT܎|%ҳ9`,B^A/l&K2tg H dK@+Qǝ?H:!qK [TL2=)4pГvsrdYC\6@ ֎ F-2BOy!OS S-ёC\(*MΥ;c:c\ D=Y0<,?r РQTuǒ ,A8==VcEkZ3- (F9x A#"$/1qQPnEn>dg,+NN^4Wy :yNiiHGca+<Hdun{̸~A:yܸ)ͳ[<t".A!b2HG~8!ZhN&Kdnup}NC$UϧV Il .+Vܡ{Sݎ |ƐcG. 5+ GV!n31`ل ]d_/5ar:DMhNi &lFBJC$ݼ;qq͸ѓ2:Uu٤IV!êR:XtFG4+Fў]x- J{HJ il:uUפIC;JD1H\Rv{d.v#w1C mc؁P[ʠI4105LrDFjYm %lLb&1v?7Ǵ@ :NO3BAga)H9 ElCIi0K'KaXXڸc{66p$ȿ@FBlENTdcTHiɍWC¥w  `O}*Rp*1=;4xe<  $Vc`.#5~SjC!4uO 6VaI^ 7T^p.|mX@cJl#Y~98(^+n3/4sOÅv][# ;\r7Nlǯk;WSw \wia?Q/q|Ho Rn DQCZ;m69u@?#\-'N x*)' (CP3mqzY\рE]tt3M9..]Z===A'W0xxV\Fw"/bggK{+Cڽh>jSO{o=u}ySu\ 3{vd%Տ.{?7eJ,RwCå0:E Nd%#qx$qRjZiP /":b89[],7?:>*_R4r2~RoD1MM!~?˙ym g9J{S0v:eū-ՑRf9F{"h;34)\_*ESe03C_NYӛ +',x^.Nf&u֦+0 _ˇ .neC;x[&WbX.L iR?)Ky)Kl)0V -6{G@fUZ Vm/Ӆ!zп^_z[뿰vE0gvi8X6tڧ.R w'&I vV)6x[*׌s(z1^S7 Q,Xckj;vh^VMK]U _"mp9rU=D͒9HH3P6Ɠ_MOuQ 8gN ȳN^?_Ux?W.)j*3ilfn7*wݿ5]Z%db ă >]T+{%3_r!`O?E1F%]xV^]Miiڅ tǨ,ƳSe7hhvW)gt'fO*"aw]:nѶhsMgUloVn44/C(hAo*Zzgw7CLna1X1.=U ԏSE 'yg&itkӡ.qK` -3it0qc]-suS l\+VQ.O]bZǷ»bpn^slͪ 7jO6ݵfvt7<(~򯽐 L_pFtTJ[(Ig=.-ZmIz{zFC[Syc5uڮf2 wIR:0M 0xLevk{\%l #s8N*h\0h 2dže)QP*rɖv<ݞ)_$sWjԒu5ČѾ#}V[Qt7]1eϦ:=A~ ZY{7GK))]kuSi:P7[ njUrwRw\vj-x OWyBe}]Hpf3'^)COw^km;KcYNzNOYvwWjt{F}z;wED5oyne{_27s ծgMWr7[Z>Crഐ7*(j ÌxW6=,紇E$r_#\bJ= *?(.$ĩ&Ү{/3`GQt^a8 H‘a'mJ[ `|c · <0,\y6B o~ec _h]X{܉v}>pAsv|X ߒ=$pGVɪv5_Nv$]t.F`OGA?I^g.UZlEyqͧ6kTk[=ms7XBO(H6O `}Yh0k%Nhz$2ΊtU)? N U#ʾ|(6H{XO˱{-Ɓʛ'6p^SZ苿 -BL!PcݹO09h8r/H믢o'HOkZݵ=[J>ri;;iZ@haZ5c'@Mw+|e+ : <"S[v-dcI͟Fsν\{Ubiɐ];-0RȪb,\8^Ɠ+^L/nbld OIM1\ Qg-WSoq1vweG-Sۮ뭠)P]u~ ^qnUPw+v)jɠo0UPⲏȁJ0yLP}ř 0H f :>,,ީ  $E o@s#!#]adK11E$HyT|S @йÎ6q]];~sV$$eLʣ|)ǁ,hiGh4N Did#悁MyZSMPnt:w?|gCY>,e @1 {TUQs@* `^(Y@u n/f\m˲2+Upy`|nH“''kE,}kZ]:v{W?q7滛3;U@-b*i4tn;뮢+W\SRWLE .Zh]6 w 5A6ں=GϤA߱˲.IURPqWƟѳL66q E3m5G}a=2*k/|У[i;,EE~rE>_T۞7?3F=IqdIf+I,0`=IRNLyj3xjh J}RNx%ȵb?0"Vh᧌ rIb=J(|bv CJxY͡ ( F#Y 8Y_ΌN+U؟s_rT70j eq *Z4ǃ",X8<˄^:L8@Aw \r9x3IIU8,;'o !Hp/K|C *ҏM(Y4S[c QM B!`bB6eY3Kf2hGF9 @-Ʒb-ģ/mi`9Ei;DNdyQ)yDinN\I|M3̠hLryG_n{[b&,*hܩթLryw_)r/R)DtJ[J/,ll庲g5Eq\;@ lg3;9t4hd6gɧ |.229yb͂:%̶TUU}ʋ Y]W?z>s޳EsNBPl H:O_;5OƵ:Fv cM3N1R 4cv(h1|Ĩ/w+x?@"Ed59*#C$|c w&Ǜ^lC܈+M\5oU((0'hNW z VG0 Ve NU"iGڗ"SΞ] Qԧ}"}Px/k8 Nr ?ȵXj)AO @kvls8ܰ$R?1/x7ځS?̿ fEA`8rS(,ݢF%)_E~P,=; Ybj^2ֽj@%p#Clc3krEsY8cX0{V |Y P 4U{~[}x^5C/utmaJn dDk&E>n*!+d, ^Ȉu BZVAs bhAV/QTL1W@rk4CLLcrmr]Ќ50)Ϥ伂}09(R ,ۖ|T˘̕`IBslje.[}3(pTβu~/TE^(̰;\y1Dp奺\֩V9z:Gyh_m'9yזu aG-?iM %e[ ͗NnCټ?<%)Z9r%eWO(y?%F{iK*ȭ n+)z3TDO" פ o@_.p]v C]+UMh |$'VǢњBaNʨ)Hendn._ qerFnYNDo) Bl4: c|_1{݅n;>gQ*sH>va;^]דƘV :WGzW1şgX/ >V ?Vbp ES4 "ANvIWlD!_}55y}}Iu&k3o{i.ƬeK)8#XʧT\n@+gc>Ճ'6P" a$~yˑoOngh;G(ILX"PA2ߪ2;䬹B(xQkZ+z*V2+&#`78[Y,[zQ# :qGÛd9E1+vSɩUEj@8H@MFy2Es."ɬdwêQ:2 M<Ȟ}7R;{*!t1f/rV˕ Wy11J*̲u `~Frtg¥! ;hsW(!t_*"{=]' M3Eѕj c SUA+wj- ][T+0XY;6 )p?j{/EtznFҊ|djK+&hr8?؇Jc֑IeWSbcqZDl' -fε 73%ca\}T|nEz؞S֏Id)*3vEzTmJDb̍ FHS͹#GH)EJe&J jU6gC0{!(k3Β;a #?6xS!ʑ'GRvx1!7O3C3LL2ʪ6PnltUa|;ĔzLqø.Ho"T eZj9VC]񡨚3*Cޒ2! M`bZ~vPd̜0&.Q`z@)ig '$tʁANeA(!{#AS!v2Q@;T$ 9HcB@+׏ 9-D*cъYEG2 >Jq/"MIзv0ւθpqL,KbN;ѣǯJ/r ӏ_2-ɹ,)#'t=d=g[U :K*]j-sKy&)X [~y 4T+\҂ѻ!Iԡ*&TG|i͔0 G:  +$Aa=Br+ Vc a<{GqbL&l1dddD<1&TCY\DKY!q0dA["@['"4$+WPq)Z5xd%ě ?ڼ88C6P0"gZ7w-DVj-cⰆH`W+0U)jN!?l2qTf)jg~αkF &#${|t+҉ &%x[Y:7Ƈi}M&>ҐtRϱ`^OKcoM) :[.V9Q Ũ%ăb䦎PG1U7xyGmL$>v33!iUX7XQ467 v(e.k#0#(Vw9d93Z9ʇwj?}__r-f״Ǒ͇[yΏ3?IEGc {Y}|مj~+wgGURh v!6SOX*ǽ Xs&p&OL ;i$0X騆fgo,-Қ`.)Tda,Tôcj?%ޜhC2S6v#' @h HW uf7Z)AIgrq01!bFIT^E6#;<e FP"}hg GxrTz>~{y[O|?rnp.dcK<LuCߐl# 4WTd6 GZmYX#$nI2,$rnLCyёXՋ)I'J2~/xr8@$rE իTۂaYFS_`QLNHȢ$ZY`AH[I,8Z'DYcFT*vVX&:fT^VӴ뱇 vQv-l?VxAnal+f s9XG|;x=@i,㓬 ;'} ZNl"xh?AmlGxM j?xeAX0o)V$"_`.*,՗2-w$4W0fP՛@Joh?cIGG8VP X+ߏR8tX Rd`0K%o-{,s=S@(8h?PDHeEҭSoj?P#LOTr-yaW S3?"bMضiL奆Ŝ-Cԋ!y[O|?`DK9KO[Aɬ'GbC"%B$nM2QfĬxC4W"w8#MiU"ARl㼉[3rtQ߬z)W-[46.0/+}NiF;" FFu1SBFd( 0<8v<9-[^R ǴMfY Gʌ{ՎO$UB43[K1b\7+WCn \ QGAk'm1 ̭̊sWm%8ϒ5~%v֣.y{"aX/^*ZH]J[,,,Absu:eu85 x/ "|+5eUX~ϫ__?+ܴ-i\_ó0jRaكI`j b=H2p {\uta Dκ1gOQfUTGKepgN{3f$3ڷW2UUr*/h:m TlN5D\̮wbJM9m40?AQQ54ov]{?{h9SDbQ^IG!0^F@&r8J4jەZ~ ǯl|*`,boZ1[X7$˗Rl%ϔ&y)4S|&`d\mߥ }^ti$5{ U) (u %Z>iؼP"~}z5 V<(]xyҽ u*!+UqQ4U" rǓ/JL)THW')gw%*iD}}\EhDbPUM?ϟ>?sZ3a.y<^Z|>h48B^cNH"74.܌b a[\:J ᬲD>wA~96Wz=wccvyYY1$@/\luyDfmXH2ܻWwzLwgNxI֡=ZfXnzG2XM`]w:=~/V~ռ8J m*VlY'o0FZ$"mRBȤ +0F܋O6/ 'pEmm@ slː40Pz `}tڔ1S9ư {HsGG*`#^0; [M ?+jN>iaVX17Xw[Jn7coTlX\!`*8 :4#hͶ忤Wҕy<掵Mo ~--8ss}qX-4]Z zD˶!5kbCiqtI&҇NS`};QOc (Ƶ0£GFN K!e%n!;]лcš{%D1\>TY(` r#wNtAfG"@Y ~ K:ɅUSCŢh<8Aߝ#Dm|ovZ"w} f;g5"ќJ@Ojxq[QDG:mPtBvWMib lAnJ *$؜I#Lld;!wGG 8G,A% *"`Ѻ%[.+dh.l gܙa懧#;D oɾ nqU&D 삖#HІ#'aTq,g#.N«`6M_ "!׌{gLs,Dx~:79b{xŷ%-} 5qa( U_{3:y:TGHD sS"Oamwws,s I|"=3pHuIF%F#n|{ݤ,mh↚Oz|6* \?.5Er:L[j[jȍ#cFm^?Hm%=!*;ZC*%or4P XIHAT)A/ʺ*&r!]IJ-e>n8p}s]#ܲ;S$>O}X\~>T[5}ke?dm/D$l$0+aѲ$߅aB x$rs|.s9հL-ul#m32"Tc/"$FOge6lNK0Z~j v*`G}$z!`aL.qfdY#fW݂4p+ є?30#1t\#㼀x85asJGaհUl]sA891f6ć c(=Am$$CEdf4:K#x!ZP6V؋alm1+M݌O]oGU TK(Uc?`Q ijEjʫͶW>j`bXńpfS xQ]jhr/Ҍq 7A DĜd:`f7xZvϕp6]ݴIs-SՉar,I޼ Y \ȑآj`M\x$EjuF LY`]=1*uofوŢȆazsHU%+a,}xpWȫ#]YoU!؃z)b; iTem DPq2"D1 bMH\^(@&: 1ƽ3W*ָyXޘ^i,'jwj<mb۰O.*!9S Jսzu[y@x3 9U|lwH2œ> hѶ }t؆g$s28I`zna֌C|yTUG]g.:fa`FwW9U[)X"3@Z%XKwhwWUݨ Qq7[k8E qV4^ ufud} = x⯰cN'XI|8wF!ycխ؊z |,tYxCB `[j&-? _MvO&xl /֏Tk/\Ys{_}{5?:xU\MVmwknu݄b>L`er(B`ÆH U(b$UKѡM$#ZҢɤI 3ҐT=}r$q[ Ňbz"vb sKf"byzp4> 6]^6!D1$ _ Km7pNrHo/şbsUE, MΪUOM|kbW^q(Z).`~(F i XG[֪b5FKTXxt #Zѷ˗bXwmlq,'́҄uLop0 Ala*̛-#䊳ڠY`M_W R % d0Pqq&齷ܞj}?Ph1azJR I&`2Q~*oՏz2 {v|D[oAC#.4ӽRSpR O{&H` ݘR3'W]~?L{[͎ι%0+Υ l(1os ~6m6>1Y67k/ 3q;/2թ`殙ۗfӌdQ{![潂) ahvH$>újRb"XDb kI =aaU &CcaXb\=!I]3Q Σu?V#ѵSZSUz*>*8P^)<"ev %Xv ɏxLs+@q>O C_9hѯD%{ n4\lY1q6:tiN(zN2ږ& jEnY!#;?6CQo"x^mj*I3yxY"+6e:hl&`["s;haZvϸ Y[bOﱐbH"-΁80KR4h}L !#LIN)n%8ka+*rpwP0:Og d#ۇt3nuzs?l6Z)ُ)y'uWCsұCMonP,<׹\VQcj(_WcEsE k!byp݈b-K %iި{pDzkkBH!]"-xq{s 2!i#8fUL ت;X`^>؍Z2|$~Z?&0wz7-OmTOaψM>FMML3퍄.aEF½+Oۋ?[`U;3BYW|&%2*(8?I#9rlw$gTıjte/4jUj##E|뾴cvs%IɱިCCa2uLf~O*}O6UGn'sJ3XiGo2^YDW-6ڈ:ru\aqxysY` >4Qǧq6l,A!0ebd wcXDu R:4SuS<Ფa!ڈ‘"CCC Z = (F,}.Lg0~v66tjOPpq} UmaCBXŎv?ńCѸmY&ԴX%9C~]!+I"%:{`dϳ1sR>_՞Mxsј] &G!"0yf*tҬρA_@?5B>> 8b4oy$P!uu4XwIQBvn{}K,-j<,=d,RײF< ԍ`N;d`/֬z!id?UHpOş )*pn{UB8]'\C,Mge׊,Lo088&~c#㎏;M퇴fgbd#ǻȎTNBӆ1<"1ԛCβm7}ci01'l }kS;m=@<-]mǾx-= !`C}Hz5G}/A=  (2`^FZ߃uHPQMbVؐmvŝ? vxmPw9Qˇs"mN׉}`W* ,טs͇!Y|P$U\0cl~Wzܲ>P=>ٔ\Eka{eIKf}č8w[BU̴μ F1hL!Hw^jM0`rqMˎ -8#sD ml/SubpIks-КY3,BALue}j/k2@ǚMq 35& ˪ Ihfc ˦aÜr@Zӝ^E\p3hHa{C^SKEjaPsBhfFj9a81 A:ִ^3j:24{lFi;L=˚a\\b˪a3WSWkZ/f(v_I hqFhloif!2g0ގy3BR4TϦp3Xvx_O|,1_u^ww8T,L~.Z}~5nƩU߲sZ˭뵇eiz.V{{MzsXX瑥/ݗm^؝v{;6'Qt-c  2|.~t|Xy,~GS8ċ.=c\WaYy\e8MPu]>~wݼ Rb  P|v]?g4 os!FCX4vЕwN$7Ym rdxd?O$O Ev& ݈A;auPt^côEiychi*VUY<@gFm|7`[ב/~Hc>ʊ.ֱ#nV61]Gv}̾wTZp߿jz_vsC=skP}YF"7[<'b7r+o.7,#'w/j\(~ۑ֨[n?o֎ZBV۵{lI7yȶ[j]gσK?<e)6LF`(pWi7)] |/4/I1 73U?t_b,7M'3r؏@.Vùo Ӝw\:ELJk\֋;z tP؝g5/ Pe| ƨXz {vǕZ%veeؿB?@3=CBXX+!a8w v/{_Xnr@>9Ѷ u2ӂm*E F2ljsZ'G9AN*ͣtgkeGD>u(œmV/.hm75KqHeHIf,bN4D$fdeҗp5&ԕ!w2ލF$%Vj}0%1?:9?7pg<٨Q9 Û3=Ŝ.j.LgAӳѝ؉TBț-5pSs elm0[UT^%(!7ʅlqi_ѿ58ahiL ֓'h? >!9ڀ, LJ`N N9#y˚g¥ȍ@Ȑ֜k9lv̓$4a S,4[h~|@gmN|CLtG9L!> P+vM*M*8D"R5vKy&u<>}1#* u'xe81:{ _5% {/*'חQc}=aC0#7yn]? ʠ4h,^ő77{fFW3#|YQrdoip&W9OMz鼙h(GM,LZ3 ;SOE&fӔSOz)?@TPB 昀Y 8-X-(ZkF36ٻ. )AJJTRJej GW2TL *k*LB^P_zf` /` A^x# baJ+V$QXV4sC.d3NHtQ4{@C> ٗ>j|tcӵ cxd&fv7ngQɔ%'K@]QTˣ1;`RO0au21 fnʙud"?q,E^l*t$-G&~1>ta.~&Mx9Sw[TͫpD"#\"ƃԌp˻1 w5Iǚoh x4ih_A&e@ #\{6ĒY5MG&s<–m-Q 4h/>"Ux;j5 TxL@Daj"Z5M K8Hx6ہ]oVͬp#\+5hzRkT.5ǁXx}ސ787fPon4`!"Cj+-p57w$( R ZG ]NkЎ$W*DZ4h .BH )QZ q^zZGp]۹!RkhmQ)$ )9x#$=+5x@A&&cfٹ5=-A{7&TE&o Cj R(o|=U J2B|;omwfI5yNϰ(~D㣾_kvAX:]q ~1ocgC7dAVJ?cJ:(|}CR]!JNq-ad?kw>JW'gC{|~Ѻio _bmzfGT em=]i,yPD@x&xgs4zQ:Pibcx=q,y Yݍ7_#vO.%1D==L8TTRNVPY2xhJ J++++XV[2B}n ܕ+zWV\⸥~~Ev F:2m-!smc k,hyE'Ԥ ' =q8^!냲hx̓ !kE~hA/JGH|dށ{l&ilmCnﱿTE–9 J4%V}¶;`\*CA ;H=^$:ʟQCˁr/3~1p"$obdT}g׌45<-L$ڗf-Nb^%?AAZ 7h: Z)݊g:L0YґW7=M'Kok=Q`:\o6v_e._|Ǐq#:sr<1Gty~=y ޮMaHcr[Q}~9 氆lx>cr7ty^SLn4o,n<_3͗Qm.V{Nt|o-ُ|l {kDe9U?OKh̖SN}K{h-֯?{S:럻 @}Fo7PNآtVmרĂFR\rA.)q8þ$N5  DLvdW%#VT XS+qCQ<(JH%BdL( ,KH5-Q/9L}Mj ƾd;?' etv7iC_ZEv1F}"gOSQg 1jj3&ӝeOe8)9ʌ^cmifmL^ӄTZWؗS alWMB kqqn4QKKWiݺ܅}uwٶ '/7!`PnU-cin>ڱ 9EՌTvGS`t{ʈ}O!h?rh =G}^?+++W<ߢ2;m]4cEpFI'fŒgx2e Ϝzޢ1ESZ 򧦦L˝7 LRўR} =s6[?7e[eؿU({+b_uY ֵsI~Wh\ ,]ǧ?PZ:Exd_c=hzڟ-٥?Zqv:+cin}4 r5Y/[ s͐LEp!T_\'4IV{r==rݣl_o~ߏIk9i M\e.o_c۠7_>e*oKz0/ٴJ{5seP=-Ϛg O0ש8Sn猀}]5cfx%.*]7>nॵm<1y7?_'T|\wHzq }qWg}.?̴u p.Y.K}u&NOwFO_g zШcPJ*\7>{2RiNSsT54ZJgyՌ(:hU%'X3v1i7&W(_Ю_ȪbY~F<5Xx{y(E/*u`}]__-Rh<ӡ۷GS]#q۬ԽM{&//Fy}_zR5 g}fY`y3jOYy~S*+71?I -&_GC>*PЖ&CU<6WB1`yu**]=oJe~yIl dׂO !n8C5q\zEۊBJz܍l7DmHi}&:Bg[e($;,g0G3OW06] l1i1Ѹ_>ޟc~663y?Xͧ 8}}6'Ǚoxz鿗d_ /yfvly{dž\o{Oܬƚ(pr}e9e_ϵt lz MNجSe[GwuEeMzk\ngvSUqoG?_;^;Ȗ}&ZYw:bb NM*ZjVUHWG(2So$粺g{خ6G9_gǔ gM_:,~ jk0o@ 9h?)ny?i>~&Otd}Kѯ_5Hkߠknޞs1\}Qz7? R[5{qѾxɧ+:/e{Lcosl?87lIdXQ^D3u/J[_E9|R]sL~ vr{^Ok r28 lXX M+(xRaX255yi(ie':Y^%qy;`ߖ}G՟^_eWׅh/kP/:jDyj^/Z zݎtu^d>lz6KN1Wnqzrs[=)zd^|7FKY{88Ϸv^- L%X>a_멹fOw?nqs5Fk[ZMb6kIA~o盻>廃W+ک+l/Tk?j{֛8әIF態Nd^<#v2 8N;wp䡜0iXzjkq*,Χ,=÷kp ~y%."#B̥[%_N+| "#3!gCu'/÷0*sPxu]˴|y~?q8\cp~>M5wKr)+g1L1zKa56W~/7F=)/nuWy}Nvk^/obS}^OaB??fAn;kU03)On>eGTܠr;C27t`3% QsF83 pChart\pCache.class M A[ށ7[Ĥ^ɻ+v 'ڱtb z,rĎt.\$K0a?a—ل !n5[B8b$aq 8M3*\\Jp.F^tP̓Puw3. #$&` 1%[p[1xL,RYK͑t@yšQ]s-\\!C t0  fuh*u^Հ gn,ngұ!%u)Tqns#Gv;7 s%ތo^ߒe!yBkN?7`!rv,#k+/m7\\W] =j[49=1 o@"H7Dʬ8oܑk?^Y.9*pn^eܚ+ Y$B0ӥ9SOABNbx[`oKԫoSM"8W7Jrw En]NU+<Lfw_PFA5S8AD bf7W4BecVٞA2qΝ8o;e[T 4Y*W2j8,CrK5QQ#zLѰj46PL~^QýswCKd) p!? PVՇkѹ $j̍ٿ'&d^گD^J*ʾaCѺ濫Ȅ*wZilvޕm ݾXW̄Wz.yB $cEN=FjT+}|!il-P3cAc f)`?Ra>IcژHNY_&)`mKc tJllUUa9>(?2Zu3[h%D!}3^|hr7.3![aH%"Zv:MҗBU(yiU ԯ}ՎP=sRt`8I!bJ,F93 pChart\pChart.class)@U>qSԚIvܙ&(t,KeJQܽ$G'Ly#I+] #iY$AA껽p%IiNw8}=~ںa  ޶o{ `w?A*T[Ooqcmmy"OrorAd,!xܷSSW xWEz#50^⿷sv뚗na;k47o_ɫn߹ql[K'/r̠/=ck 8<ɶHöC-[ z.pd7A^A!xɁL%vo/;x=v,Knj [+lA~*soDpM|ԝ[_ nA _7m9aEa - h/rO?ڋs/F)@wr ~ڋdhb1 = U3.xE՞w }9&~Q5QhaЮ9m ۛT;YcUوkn-0;kAZp5xw}̯t7*pk!IH+7wˮ KԔmeBU$@1SdD1Zy/A( !Dص=[E6$?l[a=]E>$1BWrf'-SޔL^#@U3E Ĩwt10i1VI l_XE_ ٢Npжt$BU0|ЏK \lHTW#|7^E(G,Dh r{Uv +X촆_Lu$<*[j"v\.)prx1-@iT gwMuO} k6,;2OFP]bׇUWk@UDPdE7kGa=IJ@n5Cnn_wHѺa|d TY|a){dPu|`}I-;m·hYN7cOFXkeK9-7mNMԡΠys*a G!cvӽM﷋w yBgiSM80?o~xoy瀯 lX+(͟A&جO,&=rz)-2R4=5o`|Q\)9c  {vUNpGA( +bB<n+σ3Xz-YEV1#(ѯ|ֺY<fDfWK@E8L+&d4T ^L/#\aʒZqEхr$oU zͮbjͨ"{JV:JŤ7Aar%~m_O룫oIT|8].4jLъ2PrPTX:u\nY\zM4V A(&}lNCӹ#>Al2ezb誯ai=P%WFk7 zL=SadRVFl#>Gs)?bi<w< i=tUjݬYUf+"k°~@=&>2y:#f;wApFaejFXgQ)0+оC i'nפT7A\7Aߟ" Pu^\AY #H1,U8ZԳ 'M`?V%R0jŦߟZ_F+3aʘfu5֬&IIVDߦ: N^f!$=QŊcؐ .NĊoF4̱1W=IFhZ*P}@y'l}e 1vjjfy E ӽgy%hJ"J<-BF\5)! P5 Vdt(68 &-emk$NBIK :[Ih΀uQ* O$Ӄmr&LGd ݄L2~ #mAy HH@{.kW8E HE4Pn>戋O(0U\m# zGҢ9cP4G0h1#.F䦬)'s%'(9 "ט{4R ie;ARN|)vHֻR#JGFq- v(jM +k% tWǤSH=SRrEեG >Q:.Z[߷R5hGYVU%>VZ|c=!V O`DFcEwHyi jO|^_]Y-WôZ!cXń ,1.]aЅ_ٲ=&# _:FQY EbWb`C^חeڰ`مa&L"JŲjSǃ mlT O[0ɥHlqLSaZm:Eb.䎔@U2EF]Ver [' AH6}X8KE>>>>42? gMM"CU(7$0pYGD+j+>@y:'ϝ]uq~#? C0 fVfٍaevvAj6af\˖sFf @,bY/'b:LHr0WsC1@v zy5gوDV*L Y!(bg>16b#fhJ\N̡VɈ΄)b0Z,FX\YtvZzB'+"ĉIrX="hܛ1%m5tE4S,zVZҡXYjsKw 6+G,VBm6h9U]volZU37b 8b?,|`l爹0f",;n22S[(&M>P+NL9q=]v{H[*?*7~(- ~1:Ml[liA֔vޚEr<;{$gu1kGmiHkLp-1k( ' NO^ɺ* dš j7J& 6Zl6U, &1H]w0Xۡ*-(^A#Yi1o$9ȴW2Bw8G"# l|y 6m)%ܗW NF FdXqx#s2{7\pI<7td8lKtSuuY,:7o S;9ӂmN;wdŬO`:Tǚ1d ysq25Ħlo?0%v E I9Ew]_k \tRD(U5B^Kڹy=&dDi*g1;9 @?&"& dm B҉m4֪ޕdIk$\6=@JHСUys\4gI,>|H#FZ(W샌 `ZE7ϲJ&T">Lb#!):Q'*73UEP(!!vD H2Vk$TQIxţ,`]SǪM*lT4(O^\u)8qXUzPp $N~.0}Z̉wR5zʂ>iZeBktGB"UHuއsq֨yUg G/Nݒ%]h  Yy]/D<k#+(M6n20jۡŒ cw^. % mYChƲiH`=Tv@6WNl07 \M)!Zp7֤TG8c( ^5hޗI|r^DžŊޡ砦B%|2{$cP#O1xW=#D?B$L3(rOPrU` r}6&D"w5ͫ05P oHv%ZT5*HVUa4_( q@(E3$Mz%\&KX3G3 @KDg$K,w6 gwgv\1֟dwg?` fVZ EK龄18kOezU( Csniyf'㌧nU[ye{|~# *%[!+u5@WWUlASKp@.qݡ>Y< 7E˭t@hHǟa& t2妵2Ë=Lej3^iʉ`+2Ӗmo[Զk4 d˙ǫN8bY7$mqIFedQ0 7[z)p!<-mR0d9vĿ,/c%1Fx?aTf~9l"0gQU fѓQMno( 1%bɅ F02XA\[5&gCs)-&j XbS^Z_?c`+p^WY{JQ<:C!T" K¼$"KA 5Kyh,㸸mT>{mpO\ 'eTLc5U^cȸ<[Ǔ|e7.3 a TGK9a]0vC˥2q^ .1+#ۻ]3"04ɶT WJU2*w_tk'n mY,\  JVW '[w'ѽ8EA{Ly9_(nLX]<76[rL!*?ЋM dxl%CF;EG8I#v4RCc ⃕8n>C'}ج[K |kL`Ë2RE C_ JfU+mҜ*M&c/$`W]pMK1/ՃZ[߄ ,0+暓 K\ :R!U{(;H\\D\詀lwzWV"e S4Հ4Հyդ>)&H8(J&cLkʴRZ Mi/Ivx?_b&-$"3t;YGӯ_ yZv̯[ҵjj haCZ.JeL劮I(ٖ׭& TIIplEJPK*̯G&D*%J r#iMk.fiD F$Fr- R&g2EU\}uo8Rߞq\ʻ1B5*tLJRΚRxғiIA \ lh#GkF1)7n)mFOڽ[!XL)L+fsDE"ŕ9:.>-ʬD2D*'`w$פct8wH}|TY}/SisV?ژ189;lb;jКz?HP g;-d't#_!Q¡SŒhd(7׊  +yO;EHU |.K@_sYi;EcK-.(Q³+LC'غgZHG!S_vWHzհ"IJVL4}kV0JԽM=gϗܳ(gOb3/j:"ƹ 1 ۠s$}c 0_HݧB;Lm@ Yqc.ƁCB5ڋ7kum)y\+ ]Wdx<|!S-d\Q=ŞQ쫑/Q8Ĕۖ Y:R ZoYO㽙Mʻ;ohKOɼoY@^ax*4js ЮDƱ| \|uq9}S~.0_G ]bk\tB1pKt2~'͗ vatJ/ *H$|j˙Фl,U`_U7sg'OVoFXK@4B= Ҩ#.IE-)}@R$et*=Z&QIћR۽\:ObmHY˃_0i?R\9RQS4"lfAG:)%DI8 tv)=mdKί)6 Y٦jBLq9 BU_9qTˢneDdWؕ`4TC\MID4.J$l酗 &UOYQehL4yZ0H/ BBLl$Y=t@rBR0䍶_tdIid=|f 2e=9;^bTu8ch18f[e$%ʅh$F'5]NN͆ q9 M 62d1tR&׫ݾAQmWlD3:]Gn Gu}. iV on3Z4'D\R7`` ZCtr$C"o_9%~TC.w,O/T @B+[e=3+*/!QqR YY_6vҪfHO)e-۬?, NhAkcvH<ѝ1OzӀgΥa]nR z7fc*bKK5#3bYfHffs3:SռZJ# h_N:3Kg4aGnf ]] ANxNNEn1Y|⃡~P:r(+gt:Ԇ>$٤Y _X]Ac0R>Cz\KaT_)BHlG9D& 0DO@Jp}^T!idT㶖1qYOjoku*8]vb _3s6*us%uYM fZ6W{ܸW4)XO<@X*WQXrΖ#a:@9k /pv-&3Q9YH6d\ً1o(ww|@E୵G.X+e1EpuFS2Ysxd"=%Nh[ϸnfX~ܔufUR|]Ry̷qӻFт22n5_zʍCwF%Hx#"LrДh-V=w/ԫF mR5e">~E=YUUrXYl mw|pi敮1k15`cP\yʺ@ t~M*O#1u ۊ$ R54=Dd9K+('p 6qbBMAGhtYUWg ЍOt+p @M zc!4SJ'vqҗp>Y:ct~>7o|jtDX=Xy}H$+ʠnN} Mǡ(߈% Q$nUš6Uj,)U|.=S^mJȖ"oof[GNDtB6)Ձ܌`=4U㻵}?Iv(wz?.b3샹jǺzMڕ{=5eMmRh +K̎/G_&=cYi>qҕǓ#2Ov_:ƌ`-OR %1| G,]$bfW["3=H|Spd`8]z辿1h Z-րɕSmân2C6|IMÜY!N ւv<9n5p_ӓjh2`9;ؐ3íKJ){Ug#R;O!FM]!h i+3)G>K}m#4zF~V0#;3lSBoGu آ&މ c y!?ARC]̲kYg)g t\3[.?K_, WjrH]jCFV2,A,,l` Ov=s ^pW l,2kΣ5;7"(i;/_pE]ဤ;+xb5O:DSSt1sxd]={4PtiKE5>1^%~u>$bKΌM f^vD!6ډS b}Su$C8_5L:bei/P{>$IE'kX/.xu ^PkUV9rTӔBb42 }lea+b28W$mnWr3OqVn313$Bi(BΓ>~\xÓʆZݩuLc^,Tfi`jdVS/\6cCͲuBa1AqV.PcO9pxPrx4QzYNU҆+R71/oI٨Zq̽qL1Bk28$fҨ)Ô-"G¿ eb9H{rETkx?<^🅗iDzzqt|8kB/N>"X+=ZTwE|JT0A~w{@ͧ#^Oc-7|_H8;/{|UW+7UK6p۾Ӟ?hxPbȴ S''hxao(,Fsp:h$#`ŕWO. IXF)#"NSny'FI,#Ɍ,ƟX #+x`T[{%8p{Ous8Q\!I`J{Uh3Xxqv`63XbV8O7/C WmlX &,= Rc_ d)aAc : ؙK(RvҎU^d#id ~/klіx=b$Ƭ380[ز4L bZgJKle { 3"q&a m,bH$r`EF 1qkf%R ^J5yǽp=Gmab J7Of_-#]WŮ_M 񦠈ܣ}U""fgzé83eilOA07Qh D:i,m679Nd[jJ{$jp(dՌ߲^R(/wdB;Q{Ϧ PVkF.5j$EՓDSd?x82%4 Dw>dPiK4 n}zzV4xUǍ@6Oȴ+ (]pjypL}mKQbU%t{۝itOz6ڂr"P{!aw뫃xX#s?~F^lvl{JʍdI&3׸̤iL;xRm3 Z? +%}0>fO~CWb+!uǥ^rKQ39lcg*PQO-uzmNZ J_D?~(5?gppLjS>xvGaeڏpY^-҂t+jOjyqB&g躟(KZr{O{TpwQM1.駿!SJ7Mb$kc{ӵwWDy#ns^kʆR fze`eBf^zBǛjN>tۜ]q"$XYlB:q/kiA2AY_Ҹݞ6WsUaoyQ$_wԊ=v*{ImN eӌCn $'Hqq߷{?Rp" 1&{7}ak|n~[^W*=S\+s/-'.7q],me@#cmV3{ dJ< ̽Lz}MXަ,!n9=p=bldR=h5f(W)=)^_H/AF 1tx6mx2aAi?y%'2" w I%ү:ĩXWӹ1W[%9y+ņ|2Ct%MS0[OP`I~P.,#FE:AB6 4SIo  ыdN`g~m{ϘK &OK4-7//7o7SyޚOWׂlq 5T<__ ,bb&! :k=-K|@Lz>w{fz;Ow"w]8"U6?{]iOy`XNd*1-XSshxMbl jfY~\c? bO lȣK8posZkLuͿxupJ[ gnF?>\*0/J -]K6tGBJu !rPHo* 0wd*6 Z/h)B$6z#A^(ݜAk|_ܶNjjTEelc uʒβKA+ bmG,n$-O&a12K18Y*\iAC -s`rbFYĚXsk.JAQM8ijٞ=1 $}z~J~WO Gx.u+ S@z 566P ܨ0V$#Wdt@^/7MZ忩_ P9t4\ѓ% 3E05r\!}>.sԺz9nFUpoC{^|#ದ%rpM.U@Xl&U:؉,EXIAl4"R U@P$Fk{Q~I^[3$GO^(a28sHNw6p W'j$hW ǖ,9C8sygSv*F0. B,Ǟ,ݒ_pͺ beE2H[.4%/$B:SnK(FX ujYb;>MU|6h/‚ݕ{.޸2;bvNA0V96 +:q7,RwcÁO *]kbeaJܬ ; “d(^> /(Jxգ2[hǠ՟=2IQwyB?79_Jt2([nIzτ'>YYJ5{RM}k零9`*7 |'Nd.ReSޢYT‹1ԯ21[shɎ /_iWOgxeRN<J" e5FXZڤ"bnceO2jga#Yɐa.oG/t`3 L_83 Sample\bulkdata.csv 7"lIj89p 1lp℠"5B3*ސ8M|%/rJ` lh 49Ecw S.Ea7V} H <&c' - s/![s+ԍG^"+QgAZ3,fg[߰LgeD>̢m}-q+O`P:o3]`CF \A1.jlޕV2t&yy4p$sgӿ?w|>߲Kߢ cn'Maz-i':s鞗pđ>[2ptND9~R8YmM\9Q=X=jX_ʡqYV3=xЫϽ$LN8vq }q WiJ(+ֱf 1ʚiNib+"264);1CZF,WMe,4i|g989&@؊i I`{~R}b](/?WCaVzD"( WBgsj߯'p0Mƭn׍rsW0i@JVjBuXs#O ^0sBȶ+æ}& biRJn2X<HyK(X]y(哯]) raO9nJJʥ9璨'8Q!"w n'UUcf1篿s6[(jlOybdN7SRMiO*.T(IZ $B{#*(Щ4UanCu-YV-Iе[% -x9w-9hud1o> QQLV V)usuY1<(.IG =٦c9HϢ F&G)gxaCHxHt`/N N  u80 Sample\logo.pngPNG  IHDRk3atEXtCreation Time . tIME /2 pHYs  ~ IDATx[ۏdEs>MϕuY[ve!+/DcbL0b1Ay /c\Y ,vts*:_wٞYsr~n3Vd.-R^xʐE,=V 4[7qo4s;whҫ;'B)X[I9W~,^UV.㺑_ox{^N&ttQɃWsWq_ƕ uWY&)R:a=*~xc/JEHN>b>®ww oId囋7*wڱoMVÏnEZ3GyXxz'@j^ 죦魑_] >lx& M6٥IګC@We,DR'Xwknmzi"#'#$~_ !Uk|c}LmX8YUMǾ%M;|R{ƨD `)`Ѭ5j F"(e$QawvK̓[52jeq5sgx9ut/7g5Oʳj%g.a]]2wݶt!oOȾ>;]RSB輬>/VJ|_ dN?!"K΃ZX3{'"^ q[3uJ,+s_ʊ7IYwH'!Ryw /*9j^cnsUB${{W{gqbf0Uoф^SbMx *\;\x덹(BNҔ\Ow> 1O>Aʽ >VHR'ws'^/ &dTQs̽t s{HI )3AP'+B Q8M90ox{qud`dW WzpM8 `'W'PB| Ju?i+``&Gk3AE5'I*4M˲ ;+$C%=l:(޾I {h$hLp (`pF=*^U "&70B.BH[sss|NрE‚ǎ "C\V @i/䖾>Js`W*R㘞NMMZI j˲uAhG{yAIZ]Doݽ4q*#YZ6t+[ъ"lY/M HD@(" ceXV?ўv@Q.v=DWSFR rPrr!djhێ1=[JLT'\Xt:AxWmh" .E'}!| U6@&-PMq=Y((UQb:F]D"4yXVTV8BV*Y1R#A \q(RZZS YaC=y6]. tSTW8i8dag%"q$MK"jk,<ʳr`Iuvׄ)UOI} Ơ ( I*+CTY24 @A)D$ :%xOσ2Q ^-PFR,Ei&0,8T50ԬZP |nt2Nʤ_-Vq70Y -E@0֊ڬ:Ef .OS84V-!"^_Id5/x؎_7 E )I'yMUe(A }7h*Pj+~ =zgSelƓ\ ~6@7;3j\GmDMMg#,,0_2-)\tcv1P]A~ma3S: 䪥$NqIjm.yđ06a;;Wl4(`"Xٱ2\pk=>7}X $Ȩ%3 QTZ+l&[3:gىL.8l,hiUB<,Inaٞ^m4#A#֌`5WW267ʇ\$Scac;O_zufF!! \JS˒X{s^D$ml] *KU㤩V/|M~p6k>~yXu~O3j~ҢqYhV$׉{ƥ$)NGg$Dy.*c:d,EzO4!nAk6 -DԶ8_V!BXMr_+?YO $滘?wl3L&;uqdX2LW_LJ[8oSn/'FABJ;o.I >X \ !/)*Q2d72S% jNɔlޑ^ !EjF2d%REA&`'"ޠ“̇ *FO>mhqFSp4L U\T,p\)1ft+fAEcatQxHEf+2`s8$.dد epJ ne|&Y#իdodt -ATs0tV]?#%w_4L̓F\+.h?·|: u2P4) G%P+@T,l.'^Q m֩|ǨWp0{ aC1i=Nz8슑mL gy_3= oϨo_Z,Հ AN*Wl*U^_1ЖȭbI={5]XXYms>,e$W_a eR8U'Zׇam([(Q c5zN?]j8зWEU}_vl/˛&帶`<1 daʖ6juZc9TvV2E[kċFXqw 9ܯ}vk+ډW z]{y=Hr%.nnlh@)6 ltpAdci*b2!1L\6@Ą\?Z,\c(AslՁ /X֤nnbkŸ6sg( 7< b/@͊tPp4Qµw7Iøp@)@y `|Y%N Pa q3H[@GXh!9dӿeӕ?ϭri]'uNSkyݍ7H&|<ϰol_J:xYriTEUg b ,as$:ER'z*('O7H0%x#{o2r?|ÓL~aUs'5U.vW $zf^451JRVWORĴOOno=t`1O`90 Sample\Sav143.tmp t`44>ϒ83 Sample\softtones.txt L|  (WKUGD[!U2.i +t`077ODD-]83 Sample\tones.txt K>"bPAHQf삐^*kgrDž-wEt`1UzKmC93 buildAll.cmdn L{tliύiv[kF УjXmNwFl1#%lnmm%e?"ODp"w(rqy|gDR'P(݅$ZwӇ-M ʕ@ɏ zÒ7ga.Ω:Y|{ "k&"çY[WYogbli3+εVm nx3s]4!DR9p%mٸoXr.D,2|tvLĦ^0ūi872xTE &Phh"GDס-~N{R!,%/aPpG|v>ƩUtGҙ Y=+ ]PAvl ) s#*&91A Ot7JxΉ#G;S RJP=Uj[L,`~Nhp$=dHԛ JIќM'.Gb""!Ҫًuמ+wa* u]A6+ef.>=ʖuIJ7\qeAe5Olͦ/\rxcYuty0i;WUSoBZ8bubu/`7e P@|6x Nz]׆^ V43I`Fz6Ɗee`K_.LԷg"%̿|ɥO@Ū$p@]t`2J} m>93 Example10.phpz" ̐.;Qw9J-K{@]QL"q໏Ԃ#"UUW$ۍo3vOno?bYᘳ~X 㞄xJ 5"n1|A-Wko=$A̦4tK]d9ejD6J}\:b 3ʵ h ʇ`ZaUJॱ!H ՒdkY-+\zhK|o- (ؾ-&6XܣyKm޶[];gb(#Ӧi0,Jcgߔ,׊xbbêM: z +#WS9+q-h $ \3_ԕ:iPCy2"p9+|7r o7'x R.bᴢkkAeGtۃ䦌$B_q\ᇇT~/\oAHqChN>h*YzB@tINȗ0[eE(yLQX#,o]uQ6'3$1yO}޻sv]wbdn#w25H:ӶK( '= )U'lꩾ-ﭜlp{N=y6 *ߝlԺXMWQ1}=n,xbA 2U"B؜=w5o<)rrФvy4Hjİ zW`Qt`2v%ne5j=93 Example12.php\5  ~ 1~ Ф鵡da-I7VFڂxg,I8s ~6I'◎"y"J?#'~}eMah˃@Hs2B"̼cXH'[4x}iAՖO%h:UUI)sEԙ'!Ob495w)ge,HMkjW zCjCP)@v/]O2̉@W8,9Κ׏]uq'c8iȇ|X;wi#/6/4دSYR?Stp(Q&!ű8BNҪzric2rG>8LW .vv #lJͳ=Տ-^7uѷ6kѫIaMByLPXl+Gۣw4&?GUGT/)9ddMo*o^i߫OR)<{TsYB* [zp)+-}˕L+G i \ՁG?#t`2hq>93 Example13.php [ {'T u[ev%Ыp ҂1at$Uҕu]?;x9tX>8g @n^A/'^$4EfN "/#|F){_$ŘKOCi# yy-拍CuOsa"z$(f[(HSB{O?s%i߈.YqvDDMk,,nU@%TWȑ.pI.ySt SȢaϡz&rwaVv$ȑ 7uHKþjT`cݖCMD}'/?;s+d^RN@~ըZ辳![Wu<6cܻ`*B|H\& 1̈?&Mը4""TߵHhcgrN'x[zXL? e׋L\*-i~ķ;K4LQm6p2hB2g:jt`2,AaF; r>93 Example14.php!݃ {'DT q %vq%Ы[HAÏ hJaփ;74/'N'ghvܼkY/C4s|2"IMAqD.]xrs :y7o!Dŷ vps݁^!\ʟNJcAcex)t˖9ISM"q]f/kd4zp,`G(i]Vm~j6Ǥ;ݣ䒾';x˺V@[wP9E¾%tVRyb!KSr*G6Mٝ0h&gаegZ]\VzqO^\.C̯~wQU4( z!gt}Bw˱ \u޿f7joTA9N([l;U ,YU-lέL&WnG 3"P/L3˽wTt-Ѡz{v`(ǁrR u3)iX *Y7jiriEt`2 ѾfT:93 Example15.php =  A@A(s?rx;|wlmo˂q#{*sni“o\d;xwMRŸ揞@Q8}/[Ү.fпA`|A]IO9;ؿ1D9:1iLo0oC=lX$;I)NSUH9f$͵jX*Ұ[dB$!c 85uI;Rj}*M!Q/ C⮥ 7 eг`9-cFZ&H.9]~V .;d`ᱠϬq&P1)TɹS$ b2<.\ j!s1z2򓤴++`R w .LS{6o@m0n: ^A74;,=+?ѭ gQw]~"|$S:1eKXl2 :gN<#=*k{x. ? "6D{oQaKRIԠۨצC"ZI;m۸a\aG̀{CR tV1=ԥ&VrƷf4?ч@jO^#ᚘ) |\yqv@8PՊ03wu['րjU;MQBx:!}f] DSUFzm" 0ls sC]ͬ<3LY/S!>}o%wn cm3&gb{';rUq=;¤>kp? 1K]>ýoQo o-_RW5v9U<%XUZzf?/C XhL֖mWDЉ:sZs? rQ,[oÒQAMEgA^}|QuwsNݛt`2Xm93 Example17.phpWH'   t (zGkh_@MlL,X6n w-SyoEzl$')K<#\ ?r{³$}"" ]Ї `lCuȊ,Ne3!՟֜)i1 jP٪ਞ$E_qg~5qwyݬr[e*jP@Q:)nhkWL y)|++$tTS"ap/gpvUl<[pHPy?S=#;2ōHwg,6S4XQR7]X≭9h}. $ZF=`I&{TORWy3 2b(I aS<9!#7!& zCPVID)nY!_cΤ1RNy5ce7gZb͐-_aHkѩct')Cꇩ, @N6*d?ي۬g-:ĮU=LUtt [Y{Y#>QWgz/\gGY;;\Wv#)+fģHU*?z)0uRa^O\t`2k893 Example18.php5{   t(VEYľ@$ T*ڱmܲ\ۍ$YY$נ9(͞>IG#(w}xiπ+n%{@@W0m$Dݭ⎆/B7?b<|'ImG{r*f9JJ*">j uB $KPߑD}1 <+SFQP+|)$ll"g',ۥS3yP"V$S 4|EgFR.Wmm_ ` :="25GZ0~HHs__2<3@q㙝rbչ #<VGp+Cߥ!Jۭ)Խ5Tikh"̣?oAI4blRd$uB{?x/2@g EWjnI t`1c7t993 Example2.php]Y ̍=WE|$cqBunLЉBH[~ȇh7%)-*&n3unugfH8xO;+ 02bq N0FW,-ǚw4N>Iݳ.jS,Q,ŭjCht.GTMHrvYSs2}o15޽@ YuF ؓG+Ic Qf=⼰E4'벻y%;3&ٍ4û[*mدf֯ztء4sWWty7-,: dc&-m|si~AϭG WWTɑ}PQ0"Вn^gj6u}6i9#H5+-B(&"-/En0:H/ 5܏zd~`4B Δm?]_ 5/=*j׭3ǽ wR"U@uǍz|Vu$Y7`s+m_{Ҥ~ڟ[S߁m7Snk̿+63=J R4r5dTo.gIEM(} acO?7ut`2x)ٙ}r993 Example20.phpM  1|Ir9%kCIFl(olmY6n X-iSuAM$xGOg$IDHÀ'C~P̩3"Wř`寬@Ŏ=q>iN8qO&YkxUh̰@KIx"@hDt-C!Ȍq/7pϫλ,:xœKzjyrgPie r+?WP5X*P圀4 p'BP rvb +e#/+SmlӟҶqC(ɐlN&_!TFCH(ԑ  =gspAW|MiڸrEN. 6ٙ Vфԥ o(tnڶh5Qd:VA<#:˼z0O#A|7 ޽agB|)ٝ#ȐgOMὢUkv+%7&\÷9jk8j}@+I6̲)nl3K154wˡ@_uƈBCfx57nOXEaB_y<8wCr}.use1(o\Aa^#6bX|x"0ꮽfģ>z&P n 2L3XM>BDS#~"%bf`&/Ήq/Ppy 1M; -~yFKjљ|% 4:+ixh{FaTwA;U6:i_,ܸGrIwu`h6u 1"} kNVD+dP%4d\ԥvNd3ztGNou^f,@ﹰ`;ۈζS0>RE =rIBiLP9'IIjXaaCTjp|=}PgYp(u.4#ٯI?͂(k+/@hY?#t4Ÿ6u~1z+1DJ/Q(K5Wt^oʖohI. Y9SCOK0Θg+F_"_UˡBnc+lIۓ_#?O1P@&dVNu{?&Zfɶo|ŘV,kcC&n9G9Hqt`-h ?kR93 Example22.php }B V$np%AZTw#-IE  [z!JԪ+7: ڱaT"3!ULgUmp, Ӝ>#Qwx ZΟj a5K,D*rt"YdwR׮ r?KMCӂ%k_h_WTGkell k<ܽ7-e>yISí2< Q9=\Jl;GUDlOw4>weS x?H<{t`-K@A493 Example23.php M ́R-B|ݵCE}Ku*Ea$RB_B'y%[CnwA6UҋZD4+-}\hUwȿ$2Gݢ6'Ӊ`Cz%( ]ḱFumClȺ{ܢ')pRQ@S*ipנbh?ȞPNdP`~{ }O҄CT(|3 wI~:}ai%" TJ. 7Y&pnY{y`yY' s_wI/! M&W,kiwڛJ`_y%Uغ}) KXaf ~tӨ?;]f Wm]`|t.z\)ˏ[R5u9U}NbXRH -NiP8BYDjӡS6QT`׫uX[:L'mYy罾FόzHdFȑ.6TqhU^$Pjq BK[;YXQ\; !7IGj4)sˆ߷BFUd|7Xh&<-/{ߤt`2{DyNC93 Example24.php M ={WEz XڴRڶRE& "]Zlb MV &f7yy|k6In !_s/܃R¼/_zUpQmhȚmN6C8s ~=|'bZcAy[N"4qL?}U[x& Tb<|5B>}4jH&JXOP1 ~vP+Qܷ?9$s}OgM) z sXÕBeS ƿ|>M~X'Ziw2>s(+pO < 5\mޓq{W0/3:oSqq@qs]kϩ͏)3_U״#(zM#a8E3QO7jsJFJCU#Lް֑ (x4x )QB3g(>(RI؋#2 =4-R|1BUi#}olx8T7 [P&7ɣeswޚ:|v>]wWgYA?o4YA5>uc۹iA)յ&eܶJƬi2/0RF\]Vݛo}okh_;=^с2c\0aݖQi=B Oi,X<:*":W卵#gMBBr?1(̺]k:}>Z3\mXD3{g@Rc et(^Jg5wiY ˆ"aޠ- 4k|w[{'#։ۖNIQ zpRgY!``\-Mxm ԝ[.Í,(WDz|xB׾mJT컇䱷X%XØ$: 0vt3E#QhV,ݭDq=_N]rP+t`27s 3ֶmC93 Example26.phpȎ PA_ޥh[ME ѳvlϾ[/B$SOH$l6HBЭK|vCs:x?fa||xk?77C%j l~> Ovdyao>e,J Ѕփ@m\3k-AQ4/G1BNJ: |%gno5?`:-*? 5c 1nTQ4RdW3RH06%Lż 3TV!^cXN1Ry@;0W& tde[53d#t_lbrjz+tȹ]ǘ,hmIg=N88Pg|CU!ժiM:ukG3Eomè^MV }|_]}׵?O7~56l(Ŏc8yGlIMtǍ쁣 8t^ܽGH,E FўͼSj{ 87蘧عpA/'f>ͭzmss˟IU)3_cI*9^8%A(#|%Lt!*OZˁs9'sA2`F־ TTK˰" IV[W; d+9 HHn %]kp_X7:q&uJ8켟!0,p$|dQ-4kF-p=lcstkvAdV53Ǹ"o[ܽe. <9Mx7+ХT7mO@Eqyrd m?gM9a->0r]=)W]Mqp7t`,o/N93 Example3.php P̐{-vj2HD]5Z S&IO{Ktr @nɏ?/~9k>5ؖq./ }xl4>WLodz(&$ )/I.V2s; z pUSIM(9&UL•M5$S P#^ZDf3':ԉcpF&a)g/JzHh~(sև'ߠjRp8*Iu+l=rzWjNH ZMvNvˑRդR$p+?Kg( q`3\Jgp6[.¿J0rs{ՏQcn:Zo0Xͽƴќ"e3X1,<%騩bd tg53@跐<,=}϶O0c8kzA ֽH*JuNj)U-`Rq`w#mkVkVLZEw U2:ÞoPݘk}.`udtVcr+'x,vg!]z|yQb2%B^d01]c =vRb{==?yh!t`,`9bN93 Example5.php  ~ 1~P쉹ida5I7#VFۢxg);$s ~DSGD^9ĔyGOt>!T'r/v8q* e;:|OxDy|Sp˭VMH:ʅSe%ZVKF`/D"%?m;Dc^U&vX5VI6L.6곙#zIlg5;IoG=./v Tp"Ul!u("UUi6G[#7=.țTlf>BkJ`;*i}W;P7j[4S՚zz?HQt`,:9{cFN93 Example6.php Q)?k5v$BqN&;l bWoG]l47 *6G9;΅jK9ŋ<w*4}./p.wb؝qFh ,Pʦ1'4(uqSٓI܆XaJ?E*+Rh*f!"փ cz2EC=MgOlh9ؠၟfmFЛIqO\?t~S;Va-y îP8hS1 NM62ݠrWPG|r|#IWp&;hqO_9|DTgۊ.Y؀Mssƽ>[ZqQW2hyx3H _ڬOu%jڕkG\a>=ewvFvcoZ538LJdlqbywM_υÍzJ TTQIH\_,TAr'%vӀ'*hKDeXxYSshlz|WVU,W-(g`ۣKw] u" G|w#6{5Mtݵt`,_8N93 Example7.php Q {S5:уilB+Qe V ImYuFQ@p~*Ns?9~9n5bG9 Ά'_y xW'@\%q @bgs1P'1Lb+^I"AoC:1ԭqB+Y쉓#1,y}~C ڠۮ>xƼMC\5k)(,Ԃ IUj^40lV&>kz*K(cxbp<$??Dkf2+tz0Ds7W;xo";9M6Т TlV+ZK2 k>_ |idRat㏾\J&$ʄ(آܬ:qx\RS:8HL* k&b1\ZߟMHfM,jے,;5_ph{$פ}GFm￞gIIp C;@pclZyvF5]"YĹ1j[H{iuwM'&LD6, Jg(!mxƕAV*Ee~V8lJ枞6t`,5k0$93 Example8.php P̍={ďj+ Mj-RP#VEof4ҭd3fQΟXvO@aJD穨Pq*_ 8HdCnڃ_v*1R@^mpQ 8%Sw[ײPy噛_~RMz"_E'b ;&M`N6x#}WpG 5 `Ӥ!(+jM_8w~Ihp/x$EAŐ|f8boJiX(Syk֛3]gr-MqOrH&q+Yl6f*g>͉C; ;2nkg:Z*GUfIfVѳ5pE}be+BBwXuZL*LokzWNܢH3ˇ$jbW_N'u=?A- ˵<#+NxWeT<7O v~.(Ch{)\+gWO /t`,BRN93 Example9.php Ĺ[7# vAml.&HՍl6,[br8 6쁴$¸J3|GE"<9}p)?d)E{u;^ "I1F$ИPvi`J;u(Co1ԄRz{5o;~pOP*21*1vhf߽Z-PYh2ghuTnekcbpHajx'@z O~,|,P1z/5s&$wâ]]k6$\}CQԺYKہ:(#ƨ;JI:A-DܨJy[(]JP1>dLsqKֳQQR{?{o}PvI \ϯ6Iwό(̏TЍ_uK]nϟV[6D*]ZWb#](c/>Y(֞)z/%. UkLp 5w|-Ԙ$]҅dukkz0ޮy{hQ|M2z lrg1`DJ{c,( wbĬ] q]?|.}P>nzAu~ eIlڼE2+hf/]t`2p J|D93 HomePage3.php9 PA}١:mxE|]#uP[@0bEM$SGWp&lMGl[^Nxg0aÜ! #[K վ}&>@X,J &DKV*`/.Գ/ 9<$dzS#~9~*ba:}RCUxE#qw7kmץYb>e4i=$AZ-ؒ:-Hqq}#_ 8NCZY |s|YIb0"6~+.!j0~T )K9v}~wh+\"rZ?}I :s?!J@dc_xczPEs]TրA%ƴIܶ Y._kS([zb9y%Yq~@`T_Sz#E'N7=4yR$ZWd.BeoQ6ј|4Lu Z%21n/@FB=4cm Q+Kc#rhr'>7#v13zwL ݃pq3$ܛ&hBkF[Wk]m/zXG@ISh%tV<1B}S8y.^c9~,ۼŻ2{֐OS-Sb]1GSefSh 72mKiKIoRIC%bOv# )smm՞ِZo<4~qS"'Z<܍.Ui{1=BWp.blƝWcK@t`)e93 Naked.php }B%&Q]'H8 ;A DHZ)i(6NhՇӛR;5f3χt @_X>5"G锓jFɱ>G/$s>*VX?L;= *H30{XnW P"d~G}gQKa?ße)53t|7Gyz냿`jc8irOE-`l-EIHIPq]t) 5jeX,+mf\2xޜvT#7"B;W4Z{0XܸwseD{XZ|mM7`f\ f8ˤ=KEJ2SڄyR:5WI9T0S*a_ūJ1@%t`."˷N93 SmallGraph.php M ={_e ve2ZMHLmCKzBJ,{,սk1\OW1,XW<KF:A%/Cv)r?!4\P[gCH,og nŨ4rY* ĽWh::aD'n,I. € W9>$f0/󒘡ZEzWs{à_W~yeԧBn|5Գ:hs te.sX+EرꭟE=+Q vk \5oSI_ڣ5w5@)7&^ԠCHɳvPMZ"g*(Ypkܓ2`l-hRG\\jOb\UC٫ƥ&"C"2 A(oXq$\/S*E4KҜi5$^?t*Z=90Cache5gbt*Q990Fonts~t+lpC90pChart$ft+Y["90SampleJt(Y["90tmp:={@gosa-core-2.7.4/include/pChart/Example10.php0000644000175000017500000000217511430735731017161 0ustar mikemikeAddPoint(array(10,2,3,5,3),"Serie1"); $DataSet->AddPoint(array("January","February","March","April","May"),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie("Serie2"); // Initialise the graph $Test = new pChart(420,250); $Test->drawFilledRoundedRectangle(7,7,413,243,5,240,240,240); $Test->drawRoundedRectangle(5,5,415,245,5,230,230,230); $Test->createColorGradientPalette(195,204,56,223,110,41,5); // Draw the pie chart $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->AntialiasQuality = 0; $Test->drawPieGraph($DataSet->GetData(),$DataSet->GetDataDescription(),180,130,110,PIE_PERCENTAGE_LABEL,FALSE,50,20,5); $Test->drawPieLegend(330,15,$DataSet->GetData(),$DataSet->GetDataDescription(),250,250,250); // Write the title $Test->setFontProperties("Fonts/MankSans.ttf",10); $Test->drawTitle(10,20,"Sales per month",100,100,100); $Test->Render("example10.png"); ?>gosa-core-2.7.4/include/pChart/Example13.php0000644000175000017500000000176011430735731017163 0ustar mikemikeAddPoint(array(10,2,3,5,3),"Serie1"); $DataSet->AddPoint(array("Jan","Feb","Mar","Apr","May"),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie("Serie2"); // Initialise the graph $Test = new pChart(300,200); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawFilledRoundedRectangle(7,7,293,193,5,240,240,240); $Test->drawRoundedRectangle(5,5,295,195,5,230,230,230); // Draw the pie chart $Test->AntialiasQuality = 0; $Test->setShadowProperties(2,2,200,200,200); $Test->drawFlatPieGraphWithShadow($DataSet->GetData(),$DataSet->GetDataDescription(),120,100,60,PIE_PERCENTAGE,8); $Test->clearShadow(); $Test->drawPieLegend(230,15,$DataSet->GetData(),$DataSet->GetDataDescription(),250,250,250); $Test->Render("example13.png"); ?>gosa-core-2.7.4/include/pChart/Example11.php0000644000175000017500000000326011430735731017156 0ustar mikemikeAddPoint(array(1,4,3,2,3,3,2,1,0,7,4,3,2,3,3,5,1,0,7),"Serie1"); $DataSet->AddPoint(array(1,4,2,6,2,3,0,1,5,1,2,4,5,2,1,0,6,4,2),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); // Cache definition $Cache = new pCache(); $Cache->GetFromCache("Graph1",$DataSet->GetData()); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(50,30,585,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the cubic curve graph $Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription()); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 1",50,50,50,585); // Render the graph $Cache->WriteToCache("Graph1",$DataSet->GetData(),$Test); $Test->Render("example1.png"); ?>gosa-core-2.7.4/include/pChart/pData.class0000644000175000017500000001627011430735731016775 0ustar mikemike. Class initialisation : pData() Data populating methods : ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1) AddPoint($Value,$Serie="Serie1",$Description="") Series manipulation methods : AddSerie($SerieName="Serie1") AddAllSeries() RemoveSerie($SerieName="Serie1") SetAbsciseLabelSerie($SerieName = "Name") SetSerieName($Name,$SerieName="Serie1") + SetSerieSymbol($Name,$Symbol) SetXAxisName($Name="X Axis") SetYAxisName($Name="Y Axis") SetXAxisFormat($Format="number") SetYAxisFormat($Format="number") SetXAxisUnit($Unit="") SetYAxisUnit($Unit="") removeSerieName($SerieName) removeAllSeries() Data retrieval methods : GetData() GetDataDescription() */ /* pData class definition */ class pData { var $Data; var $DataDescription; function pData() { $this->Data = ""; $this->DataDescription = ""; $this->DataDescription["Position"] = "Name"; $this->DataDescription["Format"]["X"] = "number"; $this->DataDescription["Format"]["Y"] = "number"; $this->DataDescription["Unit"]["X"] = NULL; $this->DataDescription["Unit"]["Y"] = NULL; } function ImportFromCSV($FileName,$Delimiter=",",$DataColumns=-1,$HasHeader=FALSE,$DataName=-1) { $handle = @fopen($FileName,"r"); if ($handle) { $HeaderParsed = FALSE; while (!feof($handle)) { $buffer = fgets($handle, 4096); $buffer = str_replace(chr(10),"",$buffer); $buffer = str_replace(chr(13),"",$buffer); $Values = split($Delimiter,$buffer); if ( $buffer != "" ) { if ( $HasHeader == TRUE && $HeaderParsed == FALSE ) { if ( $DataColumns == -1 ) { $ID = 1; foreach($Values as $key => $Value) { $this->SetSerieName($Value,"Serie".$ID); $ID++; } } else { $SerieName = ""; foreach($DataColumns as $key => $Value) $this->SetSerieName($Values[$Value],"Serie".$Value); } $HeaderParsed = TRUE; } else { if ( $DataColumns == -1 ) { $ID = 1; foreach($Values as $key => $Value) { $this->AddPoint(intval($Value),"Serie".$ID); $ID++; } } else { $SerieName = ""; if ( $DataName != -1 ) $SerieName = $Values[$DataName]; foreach($DataColumns as $key => $Value) $this->AddPoint($Values[$Value],"Serie".$Value,$SerieName); } } } } fclose($handle); } } function AddPoint($Value,$Serie="Serie1",$Description="") { if (is_array($Value) && count($Value) == 1) $Value = $Value[0]; $ID = 0; for($i=0;$i<=count($this->Data);$i++) { if(isset($this->Data[$i][$Serie])) { $ID = $i+1; } } if ( count($Value) == 1 ) { $this->Data[$ID][$Serie] = $Value; if ( $Description != "" ) $this->Data[$ID]["Name"] = $Description; elseif (!isset($this->Data[$ID]["Name"])) $this->Data[$ID]["Name"] = $ID; } else { foreach($Value as $key => $Val) { $this->Data[$ID][$Serie] = $Val; if (!isset($this->Data[$ID]["Name"])) $this->Data[$ID]["Name"] = $ID; $ID++; } } } function AddSerie($SerieName="Serie1") { if ( !isset($this->DataDescription["Values"]) ) { $this->DataDescription["Values"][] = $SerieName; } else { $Found = FALSE; foreach($this->DataDescription["Values"] as $key => $Value ) if ( $Value == $SerieName ) { $Found = TRUE; } if ( !$Found ) $this->DataDescription["Values"][] = $SerieName; } } function AddAllSeries() { unset($this->DataDescription["Values"]); if ( isset($this->Data[0]) ) { foreach($this->Data[0] as $Key => $Value) { if ( $Key != "Name" ) $this->DataDescription["Values"][] = $Key; } } } function RemoveSerie($SerieName="Serie1") { if ( !isset($this->DataDescription["Values"]) ) return(0); $Found = FALSE; foreach($this->DataDescription["Values"] as $key => $Value ) { if ( $Value == $SerieName ) unset($this->DataDescription["Values"][$key]); } } function SetAbsciseLabelSerie($SerieName = "Name") { $this->DataDescription["Position"] = $SerieName; } function SetSerieName($Name,$SerieName="Serie1") { $this->DataDescription["Description"][$SerieName] = $Name; } function SetXAxisName($Name="X Axis") { $this->DataDescription["Axis"]["X"] = $Name; } function SetYAxisName($Name="Y Axis") { $this->DataDescription["Axis"]["Y"] = $Name; } function SetXAxisFormat($Format="number") { $this->DataDescription["Format"]["X"] = $Format; } function SetYAxisFormat($Format="number") { $this->DataDescription["Format"]["Y"] = $Format; } function SetXAxisUnit($Unit="") { $this->DataDescription["Unit"]["X"] = $Unit; } function SetYAxisUnit($Unit="") { $this->DataDescription["Unit"]["Y"] = $Unit; } function SetSerieSymbol($Name,$Symbol) { $this->DataDescription["Symbol"][$Name] = $Symbol; } function removeSerieName($SerieName) { if ( isset($this->DataDescription["Description"][$SerieName]) ) unset($this->DataDescription["Description"][$SerieName]); } function removeAllSeries() { foreach($this->DataDescription["Values"] as $Key => $Value) unset($this->DataDescription["Values"][$Key]); } function GetData() { return($this->Data); } function GetDataDescription() { return($this->DataDescription); } } ?>gosa-core-2.7.4/include/pChart/datawithtitle.csv0000644000175000017500000000072611430735731020300 0ustar mikemikeZob,January,February,March 1,0,1,0.5 2,1.204119983,4,2 3,4.294091292,9,4.5 4,9.632959861,16,8 5,17.47425011,25,12.5 6,28.01344501,36,18 7,41.40980396,49,24.5 8,57.79775917,64,32 9,77.29364326,81,40.5 10,100,100,50 11,126.0085149,121,60.5 12,155.4020994,144,72 13,188.2564265,169,84.5 14,224.641095,196,98 15,264.6205333,225,112.5 16,308.2547156,256,128 17,355.5997383,289,144.5 18,406.7082917,324,162 19,461.6300499,361,180.5 20,520.4119983,400,200 gosa-core-2.7.4/include/pChart/Point_Asterisk.gif0000644000175000017500000000176411430735731020344 0ustar mikemikeGIF89auuyz{~̃Άщъ֏֐ٓەܗޙޚߛԒ$6<3:AD)""->:FMHQR_QDMVWX^\]_[\`egfcoj`aagdggklurrurswqpzz}yy~ޅ!, H @n AsgtA@`1ϛ! ր2h R aP(RP铄@4:3GZ@HÇëa &ȨSh6xhI=NTqĈ+cX@Ba˙*4b M`P@<*Q@A;ĩ0]$ A&آc@t 4P@;gosa-core-2.7.4/include/pChart/Example15.php0000644000175000017500000000532111430735731017162 0ustar mikemikeAddPoint(array(10,9.4,7.7,5,1.7,-1.7,-5,-7.7,-9.4,-10,-9.4,-7.7,-5,-1.8,1.7),"Serie1"); $DataSet->AddPoint(array(0,3.4,6.4,8.7,9.8,9.8,8.7,6.4,3.4,0,-3.4,-6.4,-8.6,-9.8,-9.9),"Serie2"); $DataSet->AddPoint(array(7.1,9.1,10,9.7,8.2,5.7,2.6,-0.9,-4.2,-7.1,-9.1,-10,-9.7,-8.2,-5.8),"Serie3"); $DataSet->AddPoint(array("Jan","Jan","Jan","Feb","Feb","Feb","Mar","Mar","Mar","Apr","Apr","Apr","May","May","May"),"Serie4"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie("Serie4"); $DataSet->SetSerieName("Max Average","Serie1"); $DataSet->SetSerieName("Min Average","Serie2"); $DataSet->SetSerieName("Temperature","Serie3"); $DataSet->SetYAxisName("Temperature"); $DataSet->SetXAxisName("Month of the year"); // Initialise the graph $Test = new pChart(700,230); $Test->reportWarnings("GD"); $Test->setFixedScale(-12,12,5); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(65,30,570,185); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE,3); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the area $DataSet->RemoveSerie("Serie4"); $Test->drawArea($DataSet->GetData(),"Serie1","Serie2",239,238,227,50); $DataSet->RemoveSerie("Serie3"); $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); // Draw the line graph $Test->setLineStyle(1,6); $DataSet->RemoveAllSeries(); $DataSet->AddSerie("Serie3"); $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Write values on Serie3 $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->writeValues($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie3"); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(590,90,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(60,22,"example 15",50,50,50,585); // Add an image $Test->drawFromPNG("Sample/logo.png",584,35); // Render the chart $Test->Render("example15.png"); ?>gosa-core-2.7.4/include/pChart/Example25.php0000644000175000017500000000371711430735731017172 0ustar mikemikeAddPoint(array(9,9,9,10,10,11,12,14,16,17,18,18,19,19,18,15,12,10,9),"Serie1"); $DataSet->AddPoint(array(10,11,11,12,12,13,14,15,17,19,22,24,23,23,22,20,18,16,14),"Serie2"); $DataSet->AddPoint(array(4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22),"Serie3"); $DataSet->AddAllSeries(); $DataSet->RemoveSerie("Serie3"); $DataSet->SetAbsciseLabelSerie("Serie3"); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); $DataSet->SetYAxisName("Temperature"); $DataSet->SetYAxisUnit("C"); $DataSet->SetXAxisUnit("h"); // Initialise the graph $Test = new pChart(700,230); $Test->drawGraphAreaGradient(90,90,90,90,TARGET_BACKGROUND); $Test->setFixedScale(0,40,4); // Graph area setup $Test->setFontProperties("Fonts/pf_arma_five.ttf",6); $Test->setGraphArea(60,40,680,200); $Test->drawGraphArea(200,200,200,FALSE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,200,200,200,TRUE,0,2); $Test->drawGraphAreaGradient(40,40,40,-50); $Test->drawGrid(4,TRUE,230,230,230,10); // Draw the line chart $Test->setShadowProperties(3,3,0,0,0,30,4); $Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->clearShadow(); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,0,-1,-1,-1,TRUE); // Write the title $Test->setFontProperties("Fonts/MankSans.ttf",18); $Test->setShadowProperties(1,1,0,0,0); $Test->drawTitle(0,0,"Average temperatures",255,255,255,700,30,TRUE); $Test->clearShadow(); // Draw the legend $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(610,5,$DataSet->GetDataDescription(),0,0,0,0,0,0,255,255,255,FALSE); // Render the picture $Test->Render("example25.png"); ?>gosa-core-2.7.4/include/pChart/Example16.php0000644000175000017500000000273611430735731017172 0ustar mikemikeImportFromCSV("Sample/CO2.csv",",",array(1,2,3,4),TRUE,0); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetYAxisName("CO2 concentrations"); // Initialise the graph $Test = new pChart(700,230); $Test->reportWarnings("GD"); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(60,30,680,180); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,90,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(70,40,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(60,22,"CO2 concentrations at Mauna Loa",50,50,50,585); $Test->Render("example16.png"); ?>gosa-core-2.7.4/include/pChart/tones.txt0000644000175000017500000000006711430735731016603 0ustar mikemike94,48,0 201,34,0 247,143,1 255,238,208 90,181,110 gosa-core-2.7.4/include/pChart/Example26.php0000644000175000017500000000516311430735731017170 0ustar mikemikeAddPoint(array(110,101,118,108,110,106,104),"Serie1"); $DataSet->AddPoint(array(700,2705,2041,1712,2051,846,903),"Serie2"); $DataSet->AddPoint(array("03 Oct","02 Oct","01 Oct","30 Sep","29 Sep","28 Sep","27 Sep"),"Serie3"); $DataSet->AddSerie("Serie1"); $DataSet->SetAbsciseLabelSerie("Serie3"); $DataSet->SetSerieName("SourceForge Rank","Serie1"); $DataSet->SetSerieName("Web Hits","Serie2"); // Initialise the graph $Test = new pChart(660,230); $Test->drawGraphAreaGradient(90,90,90,90,TARGET_BACKGROUND); // Prepare the graph area $Test->setFontProperties("fonts/tahoma.ttf",8); $Test->setGraphArea(60,40,595,190); // Initialise graph area $Test->setFontProperties("fonts/tahoma.ttf",8); // Draw the SourceForge Rank graph $DataSet->SetYAxisName("Sourceforge Rank"); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,213,217,221,TRUE,0,0); $Test->drawGraphAreaGradient(40,40,40,-50); $Test->drawGrid(4,TRUE,230,230,230,10); $Test->setShadowProperties(3,3,0,0,0,30,4); $Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->clearShadow(); $Test->drawFilledCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription(),.1,30); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Clear the scale $Test->clearScale(); // Draw the 2nd graph $DataSet->RemoveSerie("Serie1"); $DataSet->AddSerie("Serie2"); $DataSet->SetYAxisName("Web Hits"); $Test->drawRightScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,213,217,221,TRUE,0,0); $Test->drawGrid(4,TRUE,230,230,230,10); $Test->setShadowProperties(3,3,0,0,0,30,4); $Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->clearShadow(); $Test->drawFilledCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription(),.1,30); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Write the legend (box less) $Test->setFontProperties("fonts/tahoma.ttf",8); $Test->drawLegend(530,5,$DataSet->GetDataDescription(),0,0,0,0,0,0,255,255,255,FALSE); // Write the title $Test->setFontProperties("fonts/MankSans.ttf",18); $Test->setShadowProperties(1,1,0,0,0); $Test->drawTitle(0,0,"SourceForge ranking summary",255,255,255,660,30,TRUE); $Test->clearShadow(); // Render the picture $Test->Render("example26.png"); ?>gosa-core-2.7.4/include/pChart/Example12.php0000644000175000017500000000304511430735731017160 0ustar mikemikeAddPoint(array(1,4,-3,2,-3,3,2,1,0,7,4),"Serie1"); $DataSet->AddPoint(array(3,3,-4,1,-2,2,1,0,-1,6,3),"Serie2"); $DataSet->AddPoint(array(4,1,2,-1,-4,-2,3,2,1,2,2),"Serie3"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); $DataSet->SetSerieName("March","Serie3"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(50,30,680,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the bar graph $Test->drawBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),TRUE,80); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(596,150,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 12",50,50,50,585); $Test->Render("example12.png"); ?>gosa-core-2.7.4/include/pChart/Example18.php0000644000175000017500000000373411430735731017173 0ustar mikemikeAddPoint(array(2,5,7,"","",5,6,4,8,4,"",2,5,6,4,5,6,7,6),"Serie1"); $DataSet->AddPoint(array(-1,-3,-1,-2,-4,-1,"",-4,-5,-3,-2,-2,-3,-3,-5,-4,-3,-1,""),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("Raw #1","Serie1"); $DataSet->SetSerieName("Raw #2","Serie2"); $DataSet->SetYAxisName("Response time"); $DataSet->SetXAxisName("Sample #ID"); //print_r($DataSet->GetData()); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(55,30,585,185); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the line graph $DataSet->RemoveSerie("Serie2"); $Test->drawFilledLineGraph($DataSet->GetData(),$DataSet->GetDataDescription(),60,TRUE); // Draw the curve graph $DataSet->RemoveSerie("Serie1"); $DataSet->AddSerie("Serie2"); $Test->setShadowProperties(2,2,200,200,200,50); $Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); $Test->clearShadow(); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 18",50,50,50,585); $Test->Render("example18.png"); ?>gosa-core-2.7.4/include/pChart/Example14.php0000644000175000017500000000210111430735731017152 0ustar mikemikeAddPoint(array(10,2,3,5,3),"Serie1"); $DataSet->AddPoint(array("Jan","Feb","Mar","Apr","May"),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie("Serie2"); // Initialise the graph $Test = new pChart(300,200); $Test->loadColorPalette("Sample/softtones.txt"); $Test->drawFilledRoundedRectangle(7,7,293,193,5,240,240,240); $Test->drawRoundedRectangle(5,5,295,195,5,230,230,230); // This will draw a shadow under the pie chart $Test->drawFilledCircle(122,102,70,200,200,200); // Draw the pie chart $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->AntialiasQuality = 0; $Test->drawBasicPieGraph($DataSet->GetData(),$DataSet->GetDataDescription(),120,100,70,PIE_PERCENTAGE,255,255,218); $Test->drawPieLegend(230,15,$DataSet->GetData(),$DataSet->GetDataDescription(),250,250,250); $Test->Render("example14.png"); ?>gosa-core-2.7.4/include/pChart/CO2.csv0000644000175000017500000000665011430735731016016 0ustar mikemikeYear,Jan.,Feb.,March,April,May,June,July,Aug.,Sept.,Oct.,Nov.,Dec.,Annual 1967,322.33,322.5,323.04,324.42,325,324.09,322.55,320.92,319.26,319.39,320.72,321.96,322.18 1968,322.57,323.15,323.89,325.02,325.57,325.36,324.14,322.11,320.33,320.25,321.32,322.9,323.05 1969,324,324.42,325.64,326.66,327.38,326.7,325.89,323.67,322.38,321.78,322.85,324.12,324.62 1970,325.06,325.98,326.93,328.13,328.07,327.66,326.35,324.69,323.1,323.07,324.01,325.13,325.68 1971,326.17,326.68,327.18,327.78,328.92,328.57,327.37,325.43,323.36,323.56,324.8,326.01,326.32 1972,326.77,327.63,327.75,329.72,330.07,329.09,328.05,326.32,324.84,325.2,326.5,327.55,327.46 1973,328.54,329.56,330.3,331.5,332.48,332.07,330.87,329.31,327.51,327.18,328.16,328.64,329.68 1974,329.35,330.71,331.48,332.65,333.09,332.25,331.18,329.4,327.44,327.37,328.46,329.58,330.25 1975,330.4,331.41,332.04,333.31,333.96,333.59,331.91,330.06,328.56,328.34,329.49,330.76,331.15 1976,331.74,332.56,333.5,334.58,334.87,334.34,333.05,330.94,329.3,328.94,330.31,331.68,332.15 1977,332.92,333.42,334.7,336.07,336.74,336.27,334.93,332.75,331.58,331.16,332.4,333.85,333.9 1978,334.97,335.39,336.64,337.76,338.01,337.89,336.54,334.68,332.76,332.54,333.92,334.95,335.5 1979,336.23,336.76,337.96,338.89,339.47,339.29,337.73,336.09,333.91,333.86,335.29,336.73,336.85 1980,338.01,338.36,340.08,340.77,341.46,341.17,339.56,337.6,335.88,336.01,337.1,338.21,338.69 1981,339.23,340.47,341.38,342.51,342.91,342.25,340.49,338.43,336.69,336.85,338.36,339.61,339.93 1982,340.75,341.61,342.7,343.56,344.13,343.35,342.06,339.82,337.97,337.86,339.26,340.49,341.13 1983,341.37,342.52,343.1,344.94,345.75,345.32,343.99,342.39,339.86,339.99,341.16,342.99,342.78 1984,343.7,344.51,345.28,347.08,347.43,346.79,345.4,343.28,341.07,341.35,342.98,344.22,344.42 1985,344.97,346,347.43,348.35,348.93,348.25,346.56,344.69,343.09,342.8,344.24,345.56,345.9 1986,346.29,346.96,347.86,349.55,350.21,349.54,347.94,345.91,344.86,344.17,345.66,346.9,347.15 1987,348.02,348.47,349.42,350.99,351.84,351.25,349.52,348.1,346.44,346.36,347.81,348.96,348.93 1988,350.43,351.72,352.22,353.59,354.22,353.79,352.39,350.44,348.72,348.88,350.07,351.34,351.48 1989,352.76,353.07,353.68,355.42,355.67,355.13,353.9,351.67,349.8,349.99,351.3,352.53,352.91 1990,353.66,354.7,355.39,356.2,357.16,356.22,354.82,352.91,350.96,351.18,352.83,354.21,354.19 1991,354.72,355.75,357.16,358.6,359.34,358.24,356.17,354.03,352.16,352.21,353.75,354.99,355.59 1992,355.98,356.72,357.81,359.15,359.66,359.25,357.03,355,353.01,353.31,354.16,355.4,356.37 1993,356.7,357.16,358.38,359.46,360.28,359.6,357.57,355.52,353.7,353.98,355.33,356.8,357.04 1994,358.36,358.91,359.97,361.26,361.68,360.95,359.55,357.49,355.84,355.99,357.58,359.04,358.88 1995,359.96,361,361.64,363.45,363.79,363.26,361.9,359.46,358.06,357.75,359.56,360.7,360.88 1996,362.05,363.25,364.03,364.72,365.41,364.97,363.65,361.49,359.46,359.6,360.76,362.33,362.64 1997,363.18,364,364.57,366.35,366.79,365.62,364.47,362.51,360.19,360.77,362.43,364.28,363.76 1998,365.32,366.15,367.31,368.61,369.3,368.87,367.64,365.77,363.9,364.23,365.46,366.97,366.63 1999,368.15,368.86,369.58,371.12,370.97,370.33,369.25,366.91,364.6,365.09,366.63,367.96,368.29 2000,369.08,369.4,370.45,371.59,371.75,371.62,370.04,368.04,366.54,366.63,368.2,369.43,369.4 2001,370.17,371.39,372,372.75,373.88,373.17,371.48,369.42,367.83,367.96,369.55,371.1,370.89 2002,372.29,372.94,373.38,374.71,375.4,375.26,373.87,371.35,370.57,370.1,371.93,373.63,372.95 gosa-core-2.7.4/include/pChart/Example5.php0000644000175000017500000000273111430735731017103 0ustar mikemikeAddPoint(array(1,4,-3,2,-3,3,2,1,0,7,4,-3,2,-3,3,5,1,0,7),"Serie1"); $DataSet->AddPoint(array(2,5,7,5,1,5,6,4,8,4,0,2,5,6,4,5,6,7,6),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(50,30,585,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the limit graph $Test->drawLimitsGraph($DataSet->GetData(),$DataSet->GetDataDescription(),180,180,180); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 5",50,50,50,585); $Test->Render("example5.png"); ?>gosa-core-2.7.4/include/pChart/Naked.php0000644000175000017500000000220311430735731016437 0ustar mikemikeAddPoint(array(1,4,3,2,3,3,2,1,0,7,4,3,2,3,3,5,1,0,7)); $DataSet->AddSerie(); $DataSet->SetSerieName("Sample data","Serie1"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->setGraphArea(40,30,680,200); $Test->drawGraphArea(252,252,252,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,70); // Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(45,35,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(60,22,"My pretty graph",50,50,50,585); $Test->Render("Naked.png"); ?>gosa-core-2.7.4/include/pChart/Example21.php0000644000175000017500000000363311430735731017163 0ustar mikemikeAddPoint(array(9,9,9,10,10,11,12,14,16,17,18,18,19,19,18,15,12,10,9),"Serie1"); $DataSet->AddPoint(array(10,11,11,12,12,13,14,15,17,19,22,24,23,23,22,20,18,16,14),"Serie2"); $DataSet->AddPoint(array(4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22),"Serie3"); $DataSet->AddAllSeries(); $DataSet->RemoveSerie("Serie3"); $DataSet->SetAbsciseLabelSerie("Serie3"); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); $DataSet->SetYAxisName("Temperature"); $DataSet->SetYAxisUnit("C"); $DataSet->SetXAxisUnit("h"); // Initialise the graph $Test = new pChart(700,230); $Test->drawGraphAreaGradient(132,153,172,50,TARGET_BACKGROUND); // Graph area setup $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(60,20,585,180); $Test->drawGraphArea(213,217,221,FALSE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,213,217,221,TRUE,0,2); $Test->drawGraphAreaGradient(162,183,202,50); $Test->drawGrid(4,TRUE,230,230,230,20); // Draw the line chart $Test->setShadowProperties(3,3,0,0,0,30,4); $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->clearShadow(); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),4,2,-1,-1,-1,TRUE); // Draw the legend $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(605,142,$DataSet->GetDataDescription(),236,238,240,52,58,82); // Draw the title $Title = "Average Temperatures during the first months of 2008 "; $Test->drawTextBox(0,210,700,230,$Title,0,255,255,255,ALIGN_RIGHT,TRUE,0,0,0,30); // Render the picture $Test->addBorder(2); $Test->Render("example21.png"); ?>gosa-core-2.7.4/include/pChart/Example1.php0000644000175000017500000000324511430735731017100 0ustar mikemikeImportFromCSV("Sample/bulkdata.csv",",",array(1,2,3),FALSE,0); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); $DataSet->SetSerieName("March","Serie3"); $DataSet->SetYAxisName("Average age"); $DataSet->SetYAxisUnit("s"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(70,30,680,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(75,35,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(60,22,"example 1",50,50,50,585); $Test->Render("example1.png"); ?>gosa-core-2.7.4/include/pChart/softtones.txt0000644000175000017500000000007611430735731017477 0ustar mikemike168,188,56 188,208,76 208,228,96 228,245,116 248,255,136 gosa-core-2.7.4/include/pChart/Sav143.tmp0000644000175000017500000000000011430735731016400 0ustar mikemikegosa-core-2.7.4/include/pChart/bulkdata.csv0000644000175000017500000000067211430735731017220 0ustar mikemike1,0,1,0.5 2,1.204119983,4,2 3,4.294091292,9,4.5 4,9.632959861,16,8 5,17.47425011,25,12.5 6,28.01344501,36,18 7,41.40980396,49,24.5 8,57.79775917,64,32 9,77.29364326,81,40.5 10,100,100,50 11,126.0085149,121,60.5 12,155.4020994,144,72 13,188.2564265,169,84.5 14,224.641095,196,98 15,264.6205333,225,112.5 16,308.2547156,256,128 17,355.5997383,289,144.5 18,406.7082917,324,162 19,461.6300499,361,180.5 20,520.4119983,400,200 gosa-core-2.7.4/include/pChart/Example3.php0000644000175000017500000000275011430735731017102 0ustar mikemikeAddPoint(array(1,4,-3,2,-3,3,2,1,0,7,4,-3,2,-3,3,5,1,0,7),"Serie1"); $DataSet->AddPoint(array(0,3,-4,1,-2,2,1,0,-1,6,3,-4,1,-4,2,4,0,-1,6),"Serie2"); $DataSet->AddAllSeries(); $DataSet->SetAbsciseLabelSerie(); $DataSet->SetSerieName("January","Serie1"); $DataSet->SetSerieName("February","Serie2"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(50,30,585,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the bar graph $Test->drawOverlayBarGraph($DataSet->GetData(),$DataSet->GetDataDescription()); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(50,22,"Example 3",50,50,50,585); $Test->Render("example3.png"); ?>gosa-core-2.7.4/include/pChart/HomePage3.php0000644000175000017500000000465311430735731017200 0ustar mikemikeAddPoint(array(1,2,5),"Serie1"); $DataSet->AddPoint(array(3,2,2),"Serie2"); $DataSet->AddPoint(array(3,4,1),"Serie3"); $DataSet->AddPoint(array("A#~1","A#~2","A#~3"),"Labels"); $DataSet->AddAllSeries(); $DataSet->RemoveSerie("Labels"); $DataSet->SetAbsciseLabelSerie("Labels"); $DataSet->SetSerieName("Alpha","Serie1"); $DataSet->SetSerieName("Beta","Serie2"); $DataSet->SetSerieName("Gama","Serie3"); $DataSet->SetXAxisName("Samples IDs"); $DataSet->SetYAxisName("Test Marker"); $DataSet->SetYAxisUnit("m"); // Initialise the graph $Test = new pChart(380,400); $Test->drawGraphAreaGradient(90,90,90,90,TARGET_BACKGROUND); // Graph area setup $Test->setFontProperties("Fonts/pf_arma_five.ttf",6); $Test->setGraphArea(110,180,350,360); $Test->drawGraphArea(213,217,221,FALSE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_ADDALLSTART0,213,217,221,TRUE,0,2,TRUE); $Test->drawGraphAreaGradient(40,40,40,-50); $Test->drawGrid(4,TRUE,230,230,230,5); // Draw the title $Test->setFontProperties("Fonts/tahoma.ttf",10); $Title = " Average growth size for selected\r\n DNA samples "; $Test->setLineStyle(2); $Test->drawLine(51,-2,51,402,0,0,0); $Test->setLineStyle(1); $Test->drawTextBox(0,0,50,400,$Title,90,255,255,255,ALIGN_BOTTOM_CENTER,TRUE,0,0,0,30); $Test->setFontProperties("Fonts/pf_arma_five.ttf",6); // Draw the bar graph $Test->drawStackedBarGraph($DataSet->GetData(),$DataSet->GetDataDescription(),70); // Second chart $DataSet->SetXAxisName(""); $Test->clearScale(); $Test->setGraphArea(110,20,350,140); $Test->drawGraphArea(213,217,221,FALSE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_START0,213,217,221,TRUE,0,2); $Test->drawGraphAreaGradient(40,40,40,-50); $Test->drawGrid(4,TRUE,230,230,230,5); // Draw the line chart $Test->setShadowProperties(0,3,0,0,0,30,4); $Test->drawFilledCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription(),.1,40); $Test->clearShadow(); // Write the legend $Test->drawLegend(-2,3,$DataSet->GetDataDescription(),0,0,0,0,0,0,255,255,255,FALSE); // Finish the graph $Test->addBorder(1); $Test->Render("HomePage2.png"); ?>gosa-core-2.7.4/include/pChart/Example4.php0000644000175000017500000000305611430735731017103 0ustar mikemikeImportFromCSV("Sample/datawithtitle.csv",",",array(1,2,3),TRUE,0); $DataSet->AddSerie("Serie2"); $DataSet->SetAbsciseLabelSerie(); $DataSet->removeSerieName("Serie1"); $DataSet->removeSerieName("Serie3"); // Initialise the graph $Test = new pChart(700,230); $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->setGraphArea(60,30,680,200); $Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240); $Test->drawRoundedRectangle(5,5,695,225,5,230,230,230); $Test->drawGraphArea(255,255,255,TRUE); $Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2); $Test->drawGrid(4,TRUE,230,230,230,50); // Draw the 0 line $Test->setFontProperties("Fonts/tahoma.ttf",6); $Test->drawTreshold(0,143,55,72,TRUE,TRUE); // Draw the area $Test->drawArea($DataSet->GetData(),"Serie1","Serie3",239,238,227,50); // Draw the line graph $Test->drawLineGraph($DataSet->GetData(),$DataSet->GetDataDescription()); $Test->drawPlotGraph($DataSet->GetData(),$DataSet->GetDataDescription(),3,2,255,255,255); // Finish the graph $Test->setFontProperties("Fonts/tahoma.ttf",8); $Test->drawLegend(65,35,$DataSet->GetDataDescription(),250,250,250); $Test->setFontProperties("Fonts/tahoma.ttf",10); $Test->drawTitle(60,22,"Example 4",50,50,50,585); $Test->Render("example4.png"); ?>gosa-core-2.7.4/include/pChart/buildAll.cmd0000644000175000017500000000357211430735731017133 0ustar mikemikeECHO OFF CLS ECHO Processing all examples ECHO. ECHO [01/28] A simple line chart php -q %~dp0Example1.php ECHO [02/28] A cubic curve graph php -q %~dp0Example2.php ECHO [03/28] An overlayed bar graph php -q %~dp0Example3.php ECHO [04/28] Showing how to draw area php -q %~dp0Example4.php ECHO [05/28] A limits graph php -q %~dp0Example5.php ECHO [06/28] A simple filled line graph php -q %~dp0Example6.php ECHO [07/28] A filled cubic curve graph php -q %~dp0Example7.php ECHO [08/28] A radar graph php -q %~dp0Example8.php ECHO [09/28] Showing how to use labels php -q %~dp0Example9.php ECHO [10/28] A 3D exploded pie graph php -q %~dp0Example10.php ECHO [11/28] A true bar graph php -q %~dp0Example12.php ECHO [12/28] A 2D exploded pie graph php -q %~dp0Example13.php ECHO [13/28] A smooth flat pie graph php -q %~dp0Example14.php ECHO [14/28] Playing with line style and pictures inclusion php -q %~dp0Example15.php ECHO [15/28] Importing CSV data php -q %~dp0Example16.php ECHO [16/28] Playing with axis php -q %~dp0Example17.php ECHO [17/28] Missing values php -q %~dp0Example18.php ECHO [18/28] Error reporting php -q %~dp0Example19.php ECHO [19/28] Stacked bar graph php -q %~dp0Example20.php ECHO [20/28] Playing with background php -q %~dp0Example21.php ECHO [21/28] Customizing plot charts php -q %~dp0Example22.php ECHO [22/28] Playing with background - Bis php -q %~dp0Example23.php ECHO [23/28] X Versus Y chart php -q %~dp0Example24.php ECHO [24/28] Using shadows php -q %~dp0Example25.php ECHO [25/28] Two Y axis / shadow demonstration php -q %~dp0Example26.php ECHO [26/28] Naked and easy! php -q %~dp0Naked.php ECHO [27/28] Let's go fast, draw small! php -q %~dp0SmallGraph.php ECHO [28/28] A Small stacked chart php -q %~dp0SmallStacked.php ECHO. ECHO Rendering complete! PAUSE gosa-core-2.7.4/include/pChart/Point_Cd.gif0000644000175000017500000000177411430735731017106 0ustar mikemikeGIF89aX疾疼藾闽왿陿륿ٗܪݬݡ!d,$. Class initialisation : pChart($XSize,$YSize) Draw methods : drawBackground($R,$G,$B) drawRectangle($X1,$Y1,$X2,$Y2,$R,$G,$B) drawFilledRectangle($X1,$Y1,$X2,$Y2,$R,$G,$B,$DrawBorder=TRUE,$Alpha=100) drawRoundedRectangle($X1,$Y1,$X2,$Y2,$Radius,$R,$G,$B) drawFilledRoundedRectangle($X1,$Y1,$X2,$Y2,$Radius,$R,$G,$B) drawCircle($Xc,$Yc,$Height,$R,$G,$B,$Width=0) drawFilledCircle($Xc,$Yc,$Height,$R,$G,$B,$Width=0) drawEllipse($Xc,$Yc,$Height,$Width,$R,$G,$B) drawFilledEllipse($Xc,$Yc,$Height,$Width,$R,$G,$B) drawLine($X1,$Y1,$X2,$Y2,$R,$G,$B,$GraphFunction=FALSE) drawDottedLine($X1,$Y1,$X2,$Y2,$DotSize,$R,$G,$B) drawAlphaPixel($X,$Y,$Alpha,$R,$G,$B) drawFromPNG($FileName,$X,$Y,$Alpha=100) drawFromGIF($FileName,$X,$Y,$Alpha=100) drawFromJPG($FileName,$X,$Y,$Alpha=100) Graph setup methods : addBorder($Width=3,$R=0,$G=0,$B=0) clearScale() clearShadow() createColorGradientPalette($R1,$G1,$B1,$R2,$G2,$B2,$Shades) drawGraphArea($R,$G,$B,$Stripe=FALSE) drawScale($Data,$DataDescription,$ScaleMode,$R,$G,$B,$DrawTicks=TRUE,$Angle=0,$Decimals=1,$WithMargin=FALSE,$SkipLabels=1,$RightScale=FALSE) drawRightScale($Data,$DataDescription,$ScaleMode,$R,$G,$B,$DrawTicks=TRUE,$Angle=0,$Decimals=1,$WithMargin=FALSE,$SkipLabels=1) drawXYScale($Data,$DataDescription,$YSerieName,$XSerieName,$R,$G,$B,$WithMargin=0,$Angle=0,$Decimals=1) drawGrid($LineWidth,$Mosaic=TRUE,$R=220,$G=220,$B=220,$Alpha=100) drawLegend($XPos,$YPos,$DataDescription,$R,$G,$B,$Rs=-1,$Gs=-1,$Bs=-1,$Rt=0,$Gt=0,$Bt=0,$Border=FALSE) drawPieLegend($XPos,$YPos,$Data,$DataDescription,$R,$G,$B) drawTitle($XPos,$YPos,$Value,$R,$G,$B,$XPos2=-1,$YPos2=-1,$Shadow=FALSE) drawTreshold($Value,$R,$G,$B,$ShowLabel=FALSE,$ShowOnRight=FALSE,$TickWidth=4,$FreeText=NULL) drawArea($Data,$Serie1,$Serie2,$R,$G,$B,$Alpha = 50) drawRadarAxis($Data,$DataDescription,$Mosaic=TRUE,$BorderOffset=10,$A_R=60,$A_G=60,$A_B=60,$S_R=200,$S_G=200,$S_B=200,$MaxValue=-1) drawGraphAreaGradient($R,$G,$B,$Decay,$Target=TARGET_GRAPHAREA) drawTextBox($X1,$Y1,$X2,$Y2,$Text,$Angle=0,$R=255,$G=255,$B=255,$Align=ALIGN_LEFT,$Shadow=TRUE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=100) getLegendBoxSize($DataDescription) loadColorPalette($FileName,$Delimiter=",") reportWarnings($Interface="CLI") setGraphArea($X1,$Y1,$X2,$Y2) setLabel($Data,$DataDescription,$SerieName,$ValueName,$Caption,$R=210,$G=210,$B=210) setColorPalette($ID,$R,$G,$B) setCurrency($Currency) setDateFormat($Format) setFontProperties($FontName,$FontSize) setLineStyle($Width=1,$DotSize=0) setFixedScale($VMin,$VMax,$Divisions=5,$VXMin=0,$VXMin=0,$XDivisions=5) setShadowProperties($XDistance=1,$YDistance=1,$R=60,$G=60,$B=60,$Alpha) writeValues($Data,$DataDescription,$Series) Graphs methods : drawPlotGraph($Data,$DataDescription,$BigRadius=5,$SmallRadius=2,$R2=-1,$G2=-1,$B2=-1,$Shadow=FALSE) drawXYPlotGraph($Data,$DataDescription,$YSerieName,$XSerieName,$PaletteID=0,$BigRadius=5,$SmallRadius=2,$R2=-1,$G2=-1,$B2=-1) drawLineGraph($Data,$DataDescription,$SerieName="") drawXYGraph($Data,$DataDescription,$YSerieName,$XSerieName,$PaletteID=0) drawFilledLineGraph($Data,$DataDescription,$Alpha=100,$AroundZero=FALSE) drawCubicCurve($Data,$DataDescription,$Accuracy=.1,$SerieName="") drawFilledCubicCurve($Data,$DataDescription,$Accuracy=.1,$Alpha=100,$AroundZero=FALSE) drawOverlayBarGraph($Data,$DataDescription,$Alpha=50) drawBarGraph($Data,$DataDescription,$Shadow=FALSE) drawStackedBarGraph($Data,$DataDescription,$Alpha=50,$Contiguous=FALSE) drawLimitsGraph($Data,$DataDescription,$R=0,$G=0,$B=0) drawRadar($Data,$DataDescription,$BorderOffset=10,$MaxValue=-1) drawFilledRadar($Data,$DataDescription,$Alpha=50,$BorderOffset=10,$MaxValue=-1) drawBasicPieGraph($Data,$DataDescription,$XPos,$YPos,$Radius=100,$DrawLabels=PIE_NOLABEL,$R=255,$G=255,$B=255,$Decimals=0) drawFlatPieGraph($Data,$DataDescription,$XPos,$YPos,$Radius=100,$DrawLabels=PIE_NOLABEL,$SpliceDistance=0,$Decimals = 0) drawFlatPieGraphWithShadow($Data,$DataDescription,$XPos,$YPos,$Radius=100,$DrawLabels=PIE_NOLABEL,$SpliceDistance=0,$Decimals = 0) drawPieGraph($Data,$DataDescription,$XPos,$YPos,$Radius=100,$DrawLabels=PIE_NOLABEL,$EnhanceColors=TRUE,$Skew=60,$SpliceHeight=20,$SpliceDistance=0,$Decimals=0) Other methods : setImageMap($Mode=TRUE,$GraphID="MyGraph") getImageMap($MapName,$Flush=TRUE) Render($FileName) Stroke() */ /* Declare some script wide constants */ define("SCALE_NORMAL",1); define("SCALE_ADDALL",2); define("SCALE_START0",3); define("SCALE_ADDALLSTART0",4); define("PIE_PERCENTAGE", 1); define("PIE_LABELS",2); define("PIE_NOLABEL",3); define("PIE_PERCENTAGE_LABEL", 4); define("TARGET_GRAPHAREA",1); define("TARGET_BACKGROUND",2); define("ALIGN_TOP_LEFT",1); define("ALIGN_TOP_CENTER",2); define("ALIGN_TOP_RIGHT",3); define("ALIGN_LEFT",4); define("ALIGN_CENTER",5); define("ALIGN_RIGHT",6); define("ALIGN_BOTTOM_LEFT",7); define("ALIGN_BOTTOM_CENTER",8); define("ALIGN_BOTTOM_RIGHT",9); /* pChart class definition */ class pChart { /* Palettes definition */ var $Palette = array("0"=>array("R"=>188,"G"=>224,"B"=>46), "1"=>array("R"=>224,"G"=>100,"B"=>46), "2"=>array("R"=>224,"G"=>214,"B"=>46), "3"=>array("R"=>46,"G"=>151,"B"=>224), "4"=>array("R"=>176,"G"=>46,"B"=>224), "5"=>array("R"=>224,"G"=>46,"B"=>117), "6"=>array("R"=>92,"G"=>224,"B"=>46), "7"=>array("R"=>224,"G"=>176,"B"=>46)); /* Some static vars used in the class */ var $XSize = NULL; var $YSize = NULL; var $Picture = NULL; var $ImageMap = NULL; /* Error management */ var $ErrorReporting = FALSE; var $ErrorInterface = "CLI"; var $Errors = NULL; var $ErrorFontName = "Fonts/pf_arma_five.ttf"; var $ErrorFontSize = 6; /* vars related to the graphing area */ var $GArea_X1 = NULL; var $GArea_Y1 = NULL; var $GArea_X2 = NULL; var $GArea_Y2 = NULL; var $GAreaXOffset = NULL; var $VMax = NULL; var $VMin = NULL; var $VXMax = NULL; var $VXMin = NULL; var $Divisions = NULL; var $XDivisions = NULL; var $DivisionHeight = NULL; var $XDivisionHeight = NULL; var $DivisionCount = NULL; var $XDivisionCount = NULL; var $DivisionRatio = NULL; var $XDivisionRatio = NULL; var $DivisionWidth = NULL; var $DataCount = NULL; var $Currency = "\$"; /* Text format related vars */ var $FontName = NULL; var $FontSize = NULL; var $DateFormat = "d/m/Y"; /* Lines format related vars */ var $LineWidth = 1; var $LineDotSize = 0; /* Layer related vars */ var $Layers = NULL; /* Set antialias quality : 0 is maximum, 100 minimum*/ var $AntialiasQuality = 0; /* Shadow settings */ var $ShadowActive = FALSE; var $ShadowXDistance = 1; var $ShadowYDistance = 1; var $ShadowRColor = 60; var $ShadowGColor = 60; var $ShadowBColor = 60; var $ShadowAlpha = 50; var $ShadowBlur = 0; /* Image Map settings */ var $BuildMap = FALSE; var $MapFunction = NULL; var $tmpFolder = "tmp/"; var $MapID = NULL; /* This function create the background picture */ function pChart($XSize,$YSize) { $this->XSize = $XSize; $this->YSize = $YSize; $this->Picture = imagecreatetruecolor($XSize,$YSize); $C_White =$this->AllocateColor($this->Picture,255,255,255); imagefilledrectangle($this->Picture,0,0,$XSize,$YSize,$C_White); imagecolortransparent($this->Picture,$C_White); $this->setFontProperties("tahoma.ttf",8); } /* Set if warnings should be reported */ function reportWarnings($Interface="CLI") { $this->ErrorReporting = TRUE; $this->ErrorInterface = $Interface; } /* Set the font properties */ function setFontProperties($FontName,$FontSize) { $this->FontName = $FontName; $this->FontSize = $FontSize; } /* Set the shadow properties */ function setShadowProperties($XDistance=1,$YDistance=1,$R=60,$G=60,$B=60,$Alpha=50,$Blur=0) { $this->ShadowActive = TRUE; $this->ShadowXDistance = $XDistance; $this->ShadowYDistance = $YDistance; $this->ShadowRColor = $R; $this->ShadowGColor = $G; $this->ShadowBColor = $B; $this->ShadowAlpha = $Alpha; $this->ShadowBlur = $Blur; } /* Remove shadow option */ function clearShadow() { $this->ShadowActive = FALSE; } /* Set Palette color */ function setColorPalette($ID,$R,$G,$B) { if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $this->Palette[$ID]["R"] = $R; $this->Palette[$ID]["G"] = $G; $this->Palette[$ID]["B"] = $B; } /* Create a color palette shading from one color to another */ function createColorGradientPalette($R1,$G1,$B1,$R2,$G2,$B2,$Shades) { $RFactor = ($R2-$R1)/$Shades; $GFactor = ($G2-$G1)/$Shades; $BFactor = ($B2-$B1)/$Shades; for($i=0;$i<=$Shades-1;$i++) { $this->Palette[$i]["R"] = $R1+$RFactor*$i; $this->Palette[$i]["G"] = $G1+$GFactor*$i; $this->Palette[$i]["B"] = $B1+$BFactor*$i; } } /* Load Color Palette from file */ function loadColorPalette($FileName,$Delimiter=",") { $handle = @fopen($FileName,"r"); $ColorID = 0; if ($handle) { while (!feof($handle)) { $buffer = fgets($handle, 4096); $buffer = str_replace(chr(10),"",$buffer); $buffer = str_replace(chr(13),"",$buffer); $Values = split($Delimiter,$buffer); if ( count($Values) == 3 ) { $this->Palette[$ColorID]["R"] = $Values[0]; $this->Palette[$ColorID]["G"] = $Values[1]; $this->Palette[$ColorID]["B"] = $Values[2]; $ColorID++; } } } } /* Set line style */ function setLineStyle($Width=1,$DotSize=0) { $this->LineWidth = $Width; $this->LineDotSize = $DotSize; } /* Set currency symbol */ function setCurrency($Currency) { $this->Currency = $Currency; } /* Set the graph area location */ function setGraphArea($X1,$Y1,$X2,$Y2) { $this->GArea_X1 = $X1; $this->GArea_Y1 = $Y1; $this->GArea_X2 = $X2; $this->GArea_Y2 = $Y2; } /* Prepare the graph area */ function drawGraphArea($R,$G,$B,$Stripe=FALSE) { $this->drawFilledRectangle($this->GArea_X1,$this->GArea_Y1,$this->GArea_X2,$this->GArea_Y2,$R,$G,$B,FALSE); $this->drawRectangle($this->GArea_X1,$this->GArea_Y1,$this->GArea_X2,$this->GArea_Y2,$R-40,$G-40,$B-40); if ( $Stripe ) { $R2 = $R-15; if ( $R2 < 0 ) { $R2 = 0; } $G2 = $R-15; if ( $G2 < 0 ) { $G2 = 0; } $B2 = $R-15; if ( $B2 < 0 ) { $B2 = 0; } $LineColor =$this->AllocateColor($this->Picture,$R2,$G2,$B2); $SkewWidth = $this->GArea_Y2-$this->GArea_Y1-1; for($i=$this->GArea_X1-$SkewWidth;$i<=$this->GArea_X2;$i=$i+4) { $X1 = $i; $Y1 = $this->GArea_Y2; $X2 = $i+$SkewWidth; $Y2 = $this->GArea_Y1; if ( $X1 < $this->GArea_X1 ) { $X1 = $this->GArea_X1; $Y1 = $this->GArea_Y1 + $X2 - $this->GArea_X1 + 1; } if ( $X2 >= $this->GArea_X2 ) { $Y2 = $this->GArea_Y1 + $X2 - $this->GArea_X2 +1; $X2 = $this->GArea_X2 - 1; } // * Fixed in 1.27 * { $X2 = $this->GArea_X2 - 1; $Y2 = $this->GArea_Y2 - ($this->GArea_X2 - $X1); } imageline($this->Picture,$X1,$Y1,$X2,$Y2+1,$LineColor); } } } /* Allow you to clear the scale : used if drawing multiple charts */ function clearScale() { $this->VMin = NULL; $this->VMax = NULL; $this->VXMin = NULL; $this->VXMax = NULL; $this->Divisions = NULL; $this->XDivisions = NULL; } /* Allow you to fix the scale, use this to bypass the automatic scaling */ function setFixedScale($VMin,$VMax,$Divisions=5,$VXMin=0,$VXMax=0,$XDivisions=5) { $this->VMin = $VMin; $this->VMax = $VMax; $this->Divisions = $Divisions; if ( !$VXMin == 0 ) { $this->VXMin = $VXMin; $this->VXMax = $VXMax; $this->XDivisions = $XDivisions; } } /* Wrapper to the drawScale() function allowing a second scale to be drawn */ function drawRightScale($Data,$DataDescription,$ScaleMode,$R,$G,$B,$DrawTicks=TRUE,$Angle=0,$Decimals=1,$WithMargin=FALSE,$SkipLabels=1) { $this->drawScale($Data,$DataDescription,$ScaleMode,$R,$G,$B,$DrawTicks,$Angle,$Decimals,$WithMargin,$SkipLabels,TRUE); } /* Compute and draw the scale */ function drawScale($Data,$DataDescription,$ScaleMode,$R,$G,$B,$DrawTicks=TRUE,$Angle=0,$Decimals=1,$WithMargin=FALSE,$SkipLabels=1,$RightScale=FALSE) { /* Validate the Data and DataDescription array */ $this->validateData("drawScale",$Data); $C_TextColor =$this->AllocateColor($this->Picture,$R,$G,$B); $this->drawLine($this->GArea_X1,$this->GArea_Y1,$this->GArea_X1,$this->GArea_Y2,$R,$G,$B); $this->drawLine($this->GArea_X1,$this->GArea_Y2,$this->GArea_X2,$this->GArea_Y2,$R,$G,$B); if ( $this->VMin == NULL && $this->VMax == NULL) { if (isset($DataDescription["Values"][0])) { $this->VMin = $Data[0][$DataDescription["Values"][0]]; $this->VMax = $Data[0][$DataDescription["Values"][0]]; } else { $this->VMin = 2147483647; $this->VMax = -2147483647; } /* Compute Min and Max values */ if ( $ScaleMode == SCALE_NORMAL || $ScaleMode == SCALE_START0 ) { if ( $ScaleMode == SCALE_START0 ) { $this->VMin = 0; } foreach ( $Data as $Key => $Values ) { foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { if (isset($Data[$Key][$ColName])) { $Value = $Data[$Key][$ColName]; if ( is_numeric($Value) ) { if ( $this->VMax < $Value) { $this->VMax = $Value; } if ( $this->VMin > $Value) { $this->VMin = $Value; } } } } } } elseif ( $ScaleMode == SCALE_ADDALL || $ScaleMode == SCALE_ADDALLSTART0 ) /* Experimental */ { if ( $ScaleMode == SCALE_ADDALLSTART0 ) { $this->VMin = 0; } foreach ( $Data as $Key => $Values ) { $Sum = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { if (isset($Data[$Key][$ColName])) { $Value = $Data[$Key][$ColName]; if ( is_numeric($Value) ) $Sum += $Value; } } if ( $this->VMax < $Sum) { $this->VMax = $Sum; } if ( $this->VMin > $Sum) { $this->VMin = $Sum; } } } if ( $this->VMax > preg_replace('/\.[0-9]+/','',$this->VMax) ) $this->VMax = preg_replace('/\.[0-9]+/','',$this->VMax)+1; /* If all values are the same */ if ( $this->VMax == $this->VMin ) { if ( $this->VMax >= 0 ) { $this->VMax++; } else { $this->VMin--; } } $DataRange = $this->VMax - $this->VMin; if ( $DataRange == 0 ) { $DataRange = .1; } /* Compute automatic scaling */ $ScaleOk = FALSE; $Factor = 1; $MinDivHeight = 25; $MaxDivs = ($this->GArea_Y2 - $this->GArea_Y1) / $MinDivHeight; if ( $this->VMin == 0 && $this->VMax == 0 ) { $this->VMin = 0; $this->VMax = 2; $Scale = 1; $Divisions = 2;} elseif ($MaxDivs > 1) { while(!$ScaleOk) { $Scale1 = ( $this->VMax - $this->VMin ) / $Factor; $Scale2 = ( $this->VMax - $this->VMin ) / $Factor / 2; $Scale4 = ( $this->VMax - $this->VMin ) / $Factor / 4; if ( $Scale1 > 1 && $Scale1 <= $MaxDivs && !$ScaleOk) { $ScaleOk = TRUE; $Divisions = floor($Scale1); $Scale = 1;} if ( $Scale2 > 1 && $Scale2 <= $MaxDivs && !$ScaleOk) { $ScaleOk = TRUE; $Divisions = floor($Scale2); $Scale = 2;} if (!$ScaleOk) { if ( $Scale2 > 1 ) { $Factor = $Factor * 10; } if ( $Scale2 < 1 ) { $Factor = $Factor / 10; } } } if ( floor($this->VMax / $Scale / $Factor) != $this->VMax / $Scale / $Factor) { $GridID = floor ( $this->VMax / $Scale / $Factor) + 1; $this->VMax = $GridID * $Scale * $Factor; $Divisions++; } if ( floor($this->VMin / $Scale / $Factor) != $this->VMin / $Scale / $Factor) { $GridID = floor( $this->VMin / $Scale / $Factor); $this->VMin = $GridID * $Scale * $Factor; $Divisions++; } } else /* Can occurs for small graphs */ $Scale = 1; if ( !isset($Divisions) ) $Divisions = 2; if ($Scale == 1 && $Divisions%2 == 1) $Divisions--; } else $Divisions = $this->Divisions; $this->DivisionCount = $Divisions; $DataRange = $this->VMax - $this->VMin; if ( $DataRange == 0 ) { $DataRange = .1; } $this->DivisionHeight = ( $this->GArea_Y2 - $this->GArea_Y1 ) / $Divisions; $this->DivisionRatio = ( $this->GArea_Y2 - $this->GArea_Y1 ) / $DataRange; $this->GAreaXOffset = 0; if ( count($Data) > 1 ) { if ( $WithMargin == FALSE ) $this->DivisionWidth = ( $this->GArea_X2 - $this->GArea_X1 ) / (count($Data)-1); else { $this->DivisionWidth = ( $this->GArea_X2 - $this->GArea_X1 ) / (count($Data)); $this->GAreaXOffset = $this->DivisionWidth / 2; } } else { $this->DivisionWidth = $this->GArea_X2 - $this->GArea_X1; $this->GAreaXOffset = $this->DivisionWidth / 2; } $this->DataCount = count($Data); if ( $DrawTicks == FALSE ) return(0); $YPos = $this->GArea_Y2; $XMin = NULL; for($i=1;$i<=$Divisions+1;$i++) { if ( $RightScale ) $this->drawLine($this->GArea_X2,$YPos,$this->GArea_X2+5,$YPos,$R,$G,$B); else $this->drawLine($this->GArea_X1,$YPos,$this->GArea_X1-5,$YPos,$R,$G,$B); $Value = $this->VMin + ($i-1) * (( $this->VMax - $this->VMin ) / $Divisions); $Value = round($Value * pow(10,$Decimals)) / pow(10,$Decimals); if ( $DataDescription["Format"]["Y"] == "number" ) $Value = $Value.$DataDescription["Unit"]["Y"]; if ( $DataDescription["Format"]["Y"] == "time" ) $Value = $this->ToTime($Value); if ( $DataDescription["Format"]["Y"] == "date" ) $Value = $this->ToDate($Value); if ( $DataDescription["Format"]["Y"] == "metric" ) $Value = $this->ToMetric($Value); if ( $DataDescription["Format"]["Y"] == "currency" ) $Value = $this->ToCurrency($Value); $Position = imageftbbox($this->FontSize,0,$this->FontName,$Value); $TextWidth = $Position[2]-$Position[0]; if ( $RightScale ) { imagettftext($this->Picture,$this->FontSize,0,$this->GArea_X2+10,$YPos+($this->FontSize/2),$C_TextColor,$this->FontName,$Value); if ( $XMin < $this->GArea_X2+15+$TextWidth || $XMin == NULL ) { $XMin = $this->GArea_X2+15+$TextWidth; } } else { imagettftext($this->Picture,$this->FontSize,0,$this->GArea_X1-10-$TextWidth,$YPos+($this->FontSize/2),$C_TextColor,$this->FontName,$Value); if ( $XMin > $this->GArea_X1-10-$TextWidth || $XMin == NULL ) { $XMin = $this->GArea_X1-10-$TextWidth; } } $YPos = $YPos - $this->DivisionHeight; } /* Write the Y Axis caption if set */ if ( isset($DataDescription["Axis"]["Y"]) ) { $Position = imageftbbox($this->FontSize,90,$this->FontName,$DataDescription["Axis"]["Y"]); $TextHeight = abs($Position[1])+abs($Position[3]); $TextTop = (($this->GArea_Y2 - $this->GArea_Y1) / 2) + $this->GArea_Y1 + ($TextHeight/2); if ( $RightScale ) imagettftext($this->Picture,$this->FontSize,90,$XMin+$this->FontSize,$TextTop,$C_TextColor,$this->FontName,$DataDescription["Axis"]["Y"]); else imagettftext($this->Picture,$this->FontSize,90,$XMin-$this->FontSize,$TextTop,$C_TextColor,$this->FontName,$DataDescription["Axis"]["Y"]); } /* Horizontal Axis */ $XPos = $this->GArea_X1 + $this->GAreaXOffset; $ID = 1; $YMax = NULL; foreach ( $Data as $Key => $Values ) { if ( $ID % $SkipLabels == 0 ) { $this->drawLine(floor($XPos),$this->GArea_Y2,floor($XPos),$this->GArea_Y2+5,$R,$G,$B); $Value = $Data[$Key][$DataDescription["Position"]]; if ( $DataDescription["Format"]["X"] == "number" ) $Value = $Value.$DataDescription["Unit"]["X"]; if ( $DataDescription["Format"]["X"] == "time" ) $Value = $this->ToTime($Value); if ( $DataDescription["Format"]["X"] == "date" ) $Value = $this->ToDate($Value); if ( $DataDescription["Format"]["X"] == "metric" ) $Value = $this->ToMetric($Value); if ( $DataDescription["Format"]["X"] == "currency" ) $Value = $this->ToCurrency($Value); $Position = imageftbbox($this->FontSize,$Angle,$this->FontName,$Value); $TextWidth = abs($Position[2])+abs($Position[0]); $TextHeight = abs($Position[1])+abs($Position[3]); if ( $Angle == 0 ) { $YPos = $this->GArea_Y2+18; imagettftext($this->Picture,$this->FontSize,$Angle,floor($XPos)-floor($TextWidth/2),$YPos,$C_TextColor,$this->FontName,$Value); } else { $YPos = $this->GArea_Y2+10+$TextHeight; if ( $Angle <= 90 ) imagettftext($this->Picture,$this->FontSize,$Angle,floor($XPos)-$TextWidth+5,$YPos,$C_TextColor,$this->FontName,$Value); else imagettftext($this->Picture,$this->FontSize,$Angle,floor($XPos)+$TextWidth+5,$YPos,$C_TextColor,$this->FontName,$Value); } if ( $YMax < $YPos || $YMax == NULL ) { $YMax = $YPos; } } $XPos = $XPos + $this->DivisionWidth; $ID++; } /* Write the X Axis caption if set */ if ( isset($DataDescription["Axis"]["X"]) ) { $Position = imageftbbox($this->FontSize,90,$this->FontName,$DataDescription["Axis"]["X"]); $TextWidth = abs($Position[2])+abs($Position[0]); $TextLeft = (($this->GArea_X2 - $this->GArea_X1) / 2) + $this->GArea_X1 + ($TextWidth/2); imagettftext($this->Picture,$this->FontSize,0,$TextLeft,$YMax+$this->FontSize+5,$C_TextColor,$this->FontName,$DataDescription["Axis"]["X"]); } } /* Compute and draw the scale for X/Y charts */ function drawXYScale($Data,$DataDescription,$YSerieName,$XSerieName,$R,$G,$B,$WithMargin=0,$Angle=0,$Decimals=1) { /* Validate the Data and DataDescription array */ $this->validateData("drawScale",$Data); $C_TextColor =$this->AllocateColor($this->Picture,$R,$G,$B); $this->drawLine($this->GArea_X1,$this->GArea_Y1,$this->GArea_X1,$this->GArea_Y2,$R,$G,$B); $this->drawLine($this->GArea_X1,$this->GArea_Y2,$this->GArea_X2,$this->GArea_Y2,$R,$G,$B); /* Process Y scale */ if ( $this->VMin == NULL && $this->VMax == NULL) { $this->VMin = $Data[0][$YSerieName]; $this->VMax = $Data[0][$YSerieName]; foreach ( $Data as $Key => $Values ) { if (isset($Data[$Key][$YSerieName])) { $Value = $Data[$Key][$YSerieName]; if ( $this->VMax < $Value) { $this->VMax = $Value; } if ( $this->VMin > $Value) { $this->VMin = $Value; } } } if ( $this->VMax > preg_replace('/\.[0-9]+/','',$this->VMax) ) $this->VMax = preg_replace('/\.[0-9]+/','',$this->VMax)+1; $DataRange = $this->VMax - $this->VMin; if ( $DataRange == 0 ) { $DataRange = .1; } /* Compute automatic scaling */ $ScaleOk = FALSE; $Factor = 1; $MinDivHeight = 25; $MaxDivs = ($this->GArea_Y2 - $this->GArea_Y1) / $MinDivHeight; if ( $this->VMin == 0 && $this->VMax == 0 ) { $this->VMin = 0; $this->VMax = 2; $Scale = 1; $Divisions = 2;} elseif ($MaxDivs > 1) { while(!$ScaleOk) { $Scale1 = ( $this->VMax - $this->VMin ) / $Factor; $Scale2 = ( $this->VMax - $this->VMin ) / $Factor / 2; $Scale4 = ( $this->VMax - $this->VMin ) / $Factor / 4; if ( $Scale1 > 1 && $Scale1 <= $MaxDivs && !$ScaleOk) { $ScaleOk = TRUE; $Divisions = floor($Scale1); $Scale = 1;} if ( $Scale2 > 1 && $Scale2 <= $MaxDivs && !$ScaleOk) { $ScaleOk = TRUE; $Divisions = floor($Scale2); $Scale = 2;} if (!$ScaleOk) { if ( $Scale2 > 1 ) { $Factor = $Factor * 10; } if ( $Scale2 < 1 ) { $Factor = $Factor / 10; } } } if ( floor($this->VMax / $Scale / $Factor) != $this->VMax / $Scale / $Factor) { $GridID = floor ( $this->VMax / $Scale / $Factor) + 1; $this->VMax = $GridID * $Scale * $Factor; $Divisions++; } if ( floor($this->VMin / $Scale / $Factor) != $this->VMin / $Scale / $Factor) { $GridID = floor( $this->VMin / $Scale / $Factor); $this->VMin = $GridID * $Scale * $Factor; $Divisions++; } } else /* Can occurs for small graphs */ $Scale = 1; if ( !isset($Divisions) ) $Divisions = 2; if ( $this->isRealInt(($this->VMax-$this->VMin)/($Divisions-1))) $Divisions--; elseif ( $this->isRealInt(($this->VMax-$this->VMin)/($Divisions+1))) $Divisions++; } else $Divisions = $this->Divisions; $this->DivisionCount = $Divisions; $DataRange = $this->VMax - $this->VMin; if ( $DataRange == 0 ) { $DataRange = .1; } $this->DivisionHeight = ( $this->GArea_Y2 - $this->GArea_Y1 ) / $Divisions; $this->DivisionRatio = ( $this->GArea_Y2 - $this->GArea_Y1 ) / $DataRange; $YPos = $this->GArea_Y2; $XMin = NULL; for($i=1;$i<=$Divisions+1;$i++) { $this->drawLine($this->GArea_X1,$YPos,$this->GArea_X1-5,$YPos,$R,$G,$B); $Value = $this->VMin + ($i-1) * (( $this->VMax - $this->VMin ) / $Divisions); $Value = round($Value * pow(10,$Decimals)) / pow(10,$Decimals); if ( $DataDescription["Format"]["Y"] == "number" ) $Value = $Value.$DataDescription["Unit"]["Y"]; if ( $DataDescription["Format"]["Y"] == "time" ) $Value = $this->ToTime($Value); if ( $DataDescription["Format"]["Y"] == "date" ) $Value = $this->ToDate($Value); if ( $DataDescription["Format"]["Y"] == "metric" ) $Value = $this->ToMetric($Value); if ( $DataDescription["Format"]["Y"] == "currency" ) $Value = $this->ToCurrency($Value); $Position = imageftbbox($this->FontSize,0,$this->FontName,$Value); $TextWidth = $Position[2]-$Position[0]; imagettftext($this->Picture,$this->FontSize,0,$this->GArea_X1-10-$TextWidth,$YPos+($this->FontSize/2),$C_TextColor,$this->FontName,$Value); if ( $XMin > $this->GArea_X1-10-$TextWidth || $XMin == NULL ) { $XMin = $this->GArea_X1-10-$TextWidth; } $YPos = $YPos - $this->DivisionHeight; } /* Process X scale */ if ( $this->VXMin == NULL && $this->VXMax == NULL) { $this->VXMin = $Data[0][$XSerieName]; $this->VXMax = $Data[0][$XSerieName]; foreach ( $Data as $Key => $Values ) { if (isset($Data[$Key][$XSerieName])) { $Value = $Data[$Key][$XSerieName]; if ( $this->VXMax < $Value) { $this->VXMax = $Value; } if ( $this->VXMin > $Value) { $this->VXMin = $Value; } } } if ( $this->VXMax > preg_replace('/\.[0-9]+/','',$this->VXMax) ) $this->VXMax = preg_replace('/\.[0-9]+/','',$this->VXMax)+1; $DataRange = $this->VMax - $this->VMin; if ( $DataRange == 0 ) { $DataRange = .1; } /* Compute automatic scaling */ $ScaleOk = FALSE; $Factor = 1; $MinDivWidth = 25; $MaxDivs = ($this->GArea_X2 - $this->GArea_X1) / $MinDivWidth; if ( $this->VXMin == 0 && $this->VXMax == 0 ) { $this->VXMin = 0; $this->VXMax = 2; $Scale = 1; $XDivisions = 2;} elseif ($MaxDivs > 1) { while(!$ScaleOk) { $Scale1 = ( $this->VXMax - $this->VXMin ) / $Factor; $Scale2 = ( $this->VXMax - $this->VXMin ) / $Factor / 2; $Scale4 = ( $this->VXMax - $this->VXMin ) / $Factor / 4; if ( $Scale1 > 1 && $Scale1 <= $MaxDivs && !$ScaleOk) { $ScaleOk = TRUE; $XDivisions = floor($Scale1); $Scale = 1;} if ( $Scale2 > 1 && $Scale2 <= $MaxDivs && !$ScaleOk) { $ScaleOk = TRUE; $XDivisions = floor($Scale2); $Scale = 2;} if (!$ScaleOk) { if ( $Scale2 > 1 ) { $Factor = $Factor * 10; } if ( $Scale2 < 1 ) { $Factor = $Factor / 10; } } } if ( floor($this->VXMax / $Scale / $Factor) != $this->VXMax / $Scale / $Factor) { $GridID = floor ( $this->VXMax / $Scale / $Factor) + 1; $this->VXMax = $GridID * $Scale * $Factor; $XDivisions++; } if ( floor($this->VXMin / $Scale / $Factor) != $this->VXMin / $Scale / $Factor) { $GridID = floor( $this->VXMin / $Scale / $Factor); $this->VXMin = $GridID * $Scale * $Factor; $XDivisions++; } } else /* Can occurs for small graphs */ $Scale = 1; if ( !isset($XDivisions) ) $XDivisions = 2; if ( $this->isRealInt(($this->VXMax-$this->VXMin)/($XDivisions-1))) $XDivisions--; elseif ( $this->isRealInt(($this->VXMax-$this->VXMin)/($XDivisions+1))) $XDivisions++; } else $XDivisions = $this->XDivisions; $this->XDivisionCount = $Divisions; $this->DataCount = $Divisions + 2; $XDataRange = $this->VXMax - $this->VXMin; if ( $XDataRange == 0 ) { $XDataRange = .1; } $this->DivisionWidth = ( $this->GArea_X2 - $this->GArea_X1 ) / $XDivisions; $this->XDivisionRatio = ( $this->GArea_X2 - $this->GArea_X1 ) / $XDataRange; $XPos = $this->GArea_X1; $YMax = NULL; for($i=1;$i<=$XDivisions+1;$i++) { $this->drawLine($XPos,$this->GArea_Y2,$XPos,$this->GArea_Y2+5,$R,$G,$B); $Value = $this->VXMin + ($i-1) * (( $this->VXMax - $this->VXMin ) / $XDivisions); $Value = round($Value * pow(10,$Decimals)) / pow(10,$Decimals); if ( $DataDescription["Format"]["Y"] == "number" ) $Value = $Value.$DataDescription["Unit"]["Y"]; if ( $DataDescription["Format"]["Y"] == "time" ) $Value = $this->ToTime($Value); if ( $DataDescription["Format"]["Y"] == "date" ) $Value = $this->ToDate($Value); if ( $DataDescription["Format"]["Y"] == "metric" ) $Value = $this->ToMetric($Value); if ( $DataDescription["Format"]["Y"] == "currency" ) $Value = $this->ToCurrency($Value); $Position = imageftbbox($this->FontSize,$Angle,$this->FontName,$Value); $TextWidth = abs($Position[2])+abs($Position[0]); $TextHeight = abs($Position[1])+abs($Position[3]); if ( $Angle == 0 ) { $YPos = $this->GArea_Y2+18; imagettftext($this->Picture,$this->FontSize,$Angle,floor($XPos)-floor($TextWidth/2),$YPos,$C_TextColor,$this->FontName,$Value); } else { $YPos = $this->GArea_Y2+10+$TextHeight; if ( $Angle <= 90 ) imagettftext($this->Picture,$this->FontSize,$Angle,floor($XPos)-$TextWidth+5,$YPos,$C_TextColor,$this->FontName,$Value); else imagettftext($this->Picture,$this->FontSize,$Angle,floor($XPos)+$TextWidth+5,$YPos,$C_TextColor,$this->FontName,$Value); } if ( $YMax < $YPos || $YMax == NULL ) { $YMax = $YPos; } $XPos = $XPos + $this->DivisionWidth; } /* Write the Y Axis caption if set */ if ( isset($DataDescription["Axis"]["Y"]) ) { $Position = imageftbbox($this->FontSize,90,$this->FontName,$DataDescription["Axis"]["Y"]); $TextHeight = abs($Position[1])+abs($Position[3]); $TextTop = (($this->GArea_Y2 - $this->GArea_Y1) / 2) + $this->GArea_Y1 + ($TextHeight/2); imagettftext($this->Picture,$this->FontSize,90,$XMin-$this->FontSize,$TextTop,$C_TextColor,$this->FontName,$DataDescription["Axis"]["Y"]); } /* Write the X Axis caption if set */ if ( isset($DataDescription["Axis"]["X"]) ) { $Position = imageftbbox($this->FontSize,90,$this->FontName,$DataDescription["Axis"]["X"]); $TextWidth = abs($Position[2])+abs($Position[0]); $TextLeft = (($this->GArea_X2 - $this->GArea_X1) / 2) + $this->GArea_X1 + ($TextWidth/2); imagettftext($this->Picture,$this->FontSize,0,$TextLeft,$YMax+$this->FontSize+5,$C_TextColor,$this->FontName,$DataDescription["Axis"]["X"]); } } /* Compute and draw the scale */ function drawGrid($LineWidth,$Mosaic=TRUE,$R=220,$G=220,$B=220,$Alpha=100) { /* Draw mosaic */ if ( $Mosaic ) { $LayerWidth = $this->GArea_X2-$this->GArea_X1; $LayerHeight = $this->GArea_Y2-$this->GArea_Y1; $this->Layers[0] = imagecreatetruecolor($LayerWidth,$LayerHeight); $C_White =$this->AllocateColor($this->Layers[0],255,255,255); imagefilledrectangle($this->Layers[0],0,0,$LayerWidth,$LayerHeight,$C_White); imagecolortransparent($this->Layers[0],$C_White); $C_Rectangle =$this->AllocateColor($this->Layers[0],250,250,250); $YPos = $LayerHeight; //$this->GArea_Y2-1; $LastY = $YPos; for($i=0;$i<=$this->DivisionCount;$i++) { $LastY = $YPos; $YPos = $YPos - $this->DivisionHeight; if ( $YPos <= 0 ) { $YPos = 1; } if ( $i % 2 == 0 ) { imagefilledrectangle($this->Layers[0],1,$YPos,$LayerWidth-1,$LastY,$C_Rectangle); } } imagecopymerge($this->Picture,$this->Layers[0],$this->GArea_X1,$this->GArea_Y1,0,0,$LayerWidth,$LayerHeight,$Alpha); imagedestroy($this->Layers[0]); } /* Horizontal lines */ $YPos = $this->GArea_Y2 - $this->DivisionHeight; for($i=1;$i<=$this->DivisionCount;$i++) { if ( $YPos > $this->GArea_Y1 && $YPos < $this->GArea_Y2 ) $this->drawDottedLine($this->GArea_X1,$YPos,$this->GArea_X2,$YPos,$LineWidth,$R,$G,$B); $YPos = $YPos - $this->DivisionHeight; } /* Vertical lines */ if ( $this->GAreaXOffset == 0 ) { $XPos = $this->GArea_X1 + $this->DivisionWidth + $this->GAreaXOffset; $ColCount = $this->DataCount-2; } else { $XPos = $this->GArea_X1 + $this->GAreaXOffset; $ColCount = floor( ($this->GArea_X2 - $this->GArea_X1) / $this->DivisionWidth ); } for($i=1;$i<=$ColCount;$i++) { if ( $XPos > $this->GArea_X1 && $XPos < $this->GArea_X2 ) $this->drawDottedLine(floor($XPos),$this->GArea_Y1,floor($XPos),$this->GArea_Y2,$LineWidth,$R,$G,$B); $XPos = $XPos + $this->DivisionWidth; } } /* retrieve the legends size */ function getLegendBoxSize($DataDescription) { if ( !isset($DataDescription["Description"]) ) return(-1); /* <-10->[8]<-4->Text<-10-> */ $MaxWidth = 0; $MaxHeight = 8; foreach($DataDescription["Description"] as $Key => $Value) { $Position = imageftbbox($this->FontSize,0,$this->FontName,$Value); $TextWidth = $Position[2]-$Position[0]; $TextHeight = $Position[1]-$Position[7]; if ( $TextWidth > $MaxWidth) { $MaxWidth = $TextWidth; } $MaxHeight = $MaxHeight + $TextHeight + 4; } $MaxHeight = $MaxHeight - 3; $MaxWidth = $MaxWidth + 32; return(array($MaxWidth,$MaxHeight)); } /* Draw the data legends */ function drawLegend($XPos,$YPos,$DataDescription,$R,$G,$B,$Rs=-1,$Gs=-1,$Bs=-1,$Rt=0,$Gt=0,$Bt=0,$Border=TRUE) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawLegend",$DataDescription); if ( !isset($DataDescription["Description"]) ) return(-1); $C_TextColor =$this->AllocateColor($this->Picture,$Rt,$Gt,$Bt); /* <-10->[8]<-4->Text<-10-> */ $MaxWidth = 0; $MaxHeight = 8; foreach($DataDescription["Description"] as $Key => $Value) { $Position = imageftbbox($this->FontSize,0,$this->FontName,$Value); $TextWidth = $Position[2]-$Position[0]; $TextHeight = $Position[1]-$Position[7]; if ( $TextWidth > $MaxWidth) { $MaxWidth = $TextWidth; } $MaxHeight = $MaxHeight + $TextHeight + 4; } $MaxHeight = $MaxHeight - 5; $MaxWidth = $MaxWidth + 32; if ( $Rs == -1 || $Gs == -1 || $Bs == -1 ) { $Rs = $R-30; $Gs = $G-30; $Bs = $B-30; } if ( $Border ) { $this->drawFilledRoundedRectangle($XPos+1,$YPos+1,$XPos+$MaxWidth+1,$YPos+$MaxHeight+1,5,$Rs,$Gs,$Bs); $this->drawFilledRoundedRectangle($XPos,$YPos,$XPos+$MaxWidth,$YPos+$MaxHeight,5,$R,$G,$B); } $YOffset = 4 + $this->FontSize; $ID = 0; foreach($DataDescription["Description"] as $Key => $Value) { $this->drawFilledRoundedRectangle($XPos+10,$YPos+$YOffset-4,$XPos+14,$YPos+$YOffset-4,2,$this->Palette[$ID]["R"],$this->Palette[$ID]["G"],$this->Palette[$ID]["B"]); imagettftext($this->Picture,$this->FontSize,0,$XPos+22,$YPos+$YOffset,$C_TextColor,$this->FontName,$Value); $Position = imageftbbox($this->FontSize,0,$this->FontName,$Value); $TextHeight = $Position[1]-$Position[7]; $YOffset = $YOffset + $TextHeight + 4; $ID++; } } /* Draw the data legends */ function drawPieLegend($XPos,$YPos,$Data,$DataDescription,$R,$G,$B) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawPieLegend",$DataDescription,FALSE); $this->validateData("drawPieLegend",$Data); if ( !isset($DataDescription["Position"]) ) return(-1); $C_TextColor =$this->AllocateColor($this->Picture,0,0,0); /* <-10->[8]<-4->Text<-10-> */ $MaxWidth = 0; $MaxHeight = 8; foreach($Data as $Key => $Value) { $Value2 = $Value[$DataDescription["Position"]]; $Position = imageftbbox($this->FontSize,0,$this->FontName,$Value2); $TextWidth = $Position[2]-$Position[0]; $TextHeight = $Position[1]-$Position[7]; if ( $TextWidth > $MaxWidth) { $MaxWidth = $TextWidth; } $MaxHeight = $MaxHeight + $TextHeight + 4; } $MaxHeight = $MaxHeight - 3; $MaxWidth = $MaxWidth + 32; $this->drawFilledRoundedRectangle($XPos+1,$YPos+1,$XPos+$MaxWidth+1,$YPos+$MaxHeight+1,5,$R-30,$G-30,$B-30); $this->drawFilledRoundedRectangle($XPos,$YPos,$XPos+$MaxWidth,$YPos+$MaxHeight,5,$R,$G,$B); $YOffset = 4 + $this->FontSize; $ID = 0; foreach($Data as $Key => $Value) { $Value2 = $Value[$DataDescription["Position"]]; $Position = imageftbbox($this->FontSize,0,$this->FontName,$Value2); $TextHeight = $Position[1]-$Position[7]; $this->drawFilledRectangle($XPos+10,$YPos+$YOffset-6,$XPos+14,$YPos+$YOffset-2,$this->Palette[$ID]["R"],$this->Palette[$ID]["G"],$this->Palette[$ID]["B"]); imagettftext($this->Picture,$this->FontSize,0,$XPos+22,$YPos+$YOffset,$C_TextColor,$this->FontName,$Value2); $YOffset = $YOffset + $TextHeight + 4; $ID++; } } /* Draw the graph title */ function drawTitle($XPos,$YPos,$Value,$R,$G,$B,$XPos2=-1,$YPos2=-1,$Shadow=FALSE) { $C_TextColor = $this->AllocateColor($this->Picture,$R,$G,$B); if ( $XPos2 != -1 ) { $Position = imageftbbox($this->FontSize,0,$this->FontName,$Value); $TextWidth = $Position[2]-$Position[0]; $XPos = floor(( $XPos2 - $XPos - $TextWidth ) / 2 ) + $XPos; } if ( $YPos2 != -1 ) { $Position = imageftbbox($this->FontSize,0,$this->FontName,$Value); $TextHeight = $Position[5]-$Position[3]; $YPos = floor(( $YPos2 - $YPos - $TextHeight ) / 2 ) + $YPos; } if ( $Shadow ) { $C_ShadowColor = $this->AllocateColor($this->Picture,$this->ShadowRColor,$this->ShadowGColor,$this->ShadowBColor); imagettftext($this->Picture,$this->FontSize,0,$XPos+$this->ShadowXDistance,$YPos+$this->ShadowYDistance,$C_ShadowColor,$this->FontName,$Value); } imagettftext($this->Picture,$this->FontSize,0,$XPos,$YPos,$C_TextColor,$this->FontName,$Value); } /* Draw a text box with text align & alpha properties */ function drawTextBox($X1,$Y1,$X2,$Y2,$Text,$Angle=0,$R=255,$G=255,$B=255,$Align=ALIGN_LEFT,$Shadow=TRUE,$BgR=-1,$BgG=-1,$BgB=-1,$Alpha=100) { $Position = imageftbbox($this->FontSize,$Angle,$this->FontName,$Text); $TextWidth = $Position[2]-$Position[0]; $TextHeight = $Position[5]-$Position[3]; $AreaWidth = $X2 - $X1; $AreaHeight = $Y2 - $Y1; if ( $BgR != -1 && $BgG != -1 && $BgB != -1 ) $this->drawFilledRectangle($X1,$Y1,$X2,$Y2,$BgR,$BgG,$BgB,FALSE,$Alpha); if ( $Align == ALIGN_TOP_LEFT ) { $X = $X1+1; $Y = $Y1+$this->FontSize+1; } if ( $Align == ALIGN_TOP_CENTER ) { $X = $X1+($AreaWidth/2)-($TextWidth/2); $Y = $Y1+$this->FontSize+1; } if ( $Align == ALIGN_TOP_RIGHT ) { $X = $X2-$TextWidth-1; $Y = $Y1+$this->FontSize+1; } if ( $Align == ALIGN_LEFT ) { $X = $X1+1; $Y = $Y1+($AreaHeight/2)-($TextHeight/2); } if ( $Align == ALIGN_CENTER ) { $X = $X1+($AreaWidth/2)-($TextWidth/2); $Y = $Y1+($AreaHeight/2)-($TextHeight/2); } if ( $Align == ALIGN_RIGHT ) { $X = $X2-$TextWidth-1; $Y = $Y1+($AreaHeight/2)-($TextHeight/2); } if ( $Align == ALIGN_BOTTOM_LEFT ) { $X = $X1+1; $Y = $Y2-1; } if ( $Align == ALIGN_BOTTOM_CENTER ) { $X = $X1+($AreaWidth/2)-($TextWidth/2); $Y = $Y2-1; } if ( $Align == ALIGN_BOTTOM_RIGHT ) { $X = $X2-$TextWidth-1; $Y = $Y2-1; } $C_TextColor =$this->AllocateColor($this->Picture,$R,$G,$B); $C_ShadowColor =$this->AllocateColor($this->Picture,0,0,0); if ( $Shadow ) imagettftext($this->Picture,$this->FontSize,$Angle,$X+1,$Y+1,$C_ShadowColor,$this->FontName,$Text); imagettftext($this->Picture,$this->FontSize,$Angle,$X,$Y,$C_TextColor,$this->FontName,$Text); } /* Compute and draw the scale */ function drawTreshold($Value,$R,$G,$B,$ShowLabel=FALSE,$ShowOnRight=FALSE,$TickWidth=4,$FreeText=NULL) { if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $C_TextColor =$this->AllocateColor($this->Picture,$R,$G,$B); $Y = $this->GArea_Y2 - ($Value - $this->VMin) * $this->DivisionRatio; if ( $Y <= $this->GArea_Y1 || $Y >= $this->GArea_Y2 ) return(-1); if ( $TickWidth == 0 ) $this->drawLine($this->GArea_X1,$Y,$this->GArea_X2,$Y,$R,$G,$B); else $this->drawDottedLine($this->GArea_X1,$Y,$this->GArea_X2,$Y,$TickWidth,$R,$G,$B); if ( $ShowLabel ) { if ( $FreeText == NULL ) { $Label = $Value; } else { $Label = $FreeText; } if ( $ShowOnRight ) imagettftext($this->Picture,$this->FontSize,0,$this->GArea_X2+2,$Y+($this->FontSize/2),$C_TextColor,$this->FontName,$Label); else imagettftext($this->Picture,$this->FontSize,0,$this->GArea_X1+2,$Y-($this->FontSize/2),$C_TextColor,$this->FontName,$Label); } } /* This function put a label on a specific point */ function setLabel($Data,$DataDescription,$SerieName,$ValueName,$Caption,$R=210,$G=210,$B=210) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("setLabel",$DataDescription); $this->validateData("setLabel",$Data); $ShadowFactor = 100; $C_Label =$this->AllocateColor($this->Picture,$R,$G,$B); $C_Shadow =$this->AllocateColor($this->Picture,$R-$ShadowFactor,$G-$ShadowFactor,$B-$ShadowFactor); $C_TextColor =$this->AllocateColor($this->Picture,0,0,0); $Cp = 0; $Found = FALSE; foreach ( $Data as $Key => $Value ) { if ( $Data[$Key][$DataDescription["Position"]] == $ValueName ) { $NumericalValue = $Data[$Key][$SerieName]; $Found = TRUE; } if ( !$Found ) $Cp++; } $XPos = $this->GArea_X1 + $this->GAreaXOffset + ( $this->DivisionWidth * $Cp ) + 2; $YPos = $this->GArea_Y2 - ($NumericalValue - $this->VMin) * $this->DivisionRatio; $Position = imageftbbox($this->FontSize,0,$this->FontName,$Caption); $TextHeight = $Position[3] - $Position[5]; $TextWidth = $Position[2]-$Position[0] + 2; $TextOffset = floor($TextHeight/2); // Shadow $Poly = array($XPos+1,$YPos+1,$XPos + 9,$YPos - $TextOffset,$XPos + 8,$YPos + $TextOffset + 2); imagefilledpolygon($this->Picture,$Poly,3,$C_Shadow); $this->drawLine($XPos,$YPos+1,$XPos + 9,$YPos - $TextOffset - .2,$R-$ShadowFactor,$G-$ShadowFactor,$B-$ShadowFactor); $this->drawLine($XPos,$YPos+1,$XPos + 9,$YPos + $TextOffset + 2.2,$R-$ShadowFactor,$G-$ShadowFactor,$B-$ShadowFactor); $this->drawFilledRectangle($XPos + 9,$YPos - $TextOffset-.2,$XPos + 13 + $TextWidth,$YPos + $TextOffset + 2.2,$R-$ShadowFactor,$G-$ShadowFactor,$B-$ShadowFactor); // Label background $Poly = array($XPos,$YPos,$XPos + 8,$YPos - $TextOffset - 1,$XPos + 8,$YPos + $TextOffset + 1); imagefilledpolygon($this->Picture,$Poly,3,$C_Label); $this->drawLine($XPos-1,$YPos,$XPos + 8,$YPos - $TextOffset - 1.2,$R,$G,$B); $this->drawLine($XPos-1,$YPos,$XPos + 8,$YPos + $TextOffset + 1.2,$R,$G,$B); $this->drawFilledRectangle($XPos + 8,$YPos - $TextOffset - 1.2,$XPos + 12 + $TextWidth,$YPos + $TextOffset + 1.2,$R,$G,$B); imagettftext($this->Picture,$this->FontSize,0,$XPos + 10,$YPos + $TextOffset,$C_TextColor,$this->FontName,$Caption); } /* This function draw a plot graph */ function drawPlotGraph($Data,$DataDescription,$BigRadius=5,$SmallRadius=2,$R2=-1,$G2=-1,$B2=-1,$Shadow=FALSE) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawPlotGraph",$DataDescription); $this->validateData("drawPlotGraph",$Data); $GraphID = 0; $Ro = $R2; $Go = $G2; $Bo = $B2; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } $R = $this->Palette[$ColorID]["R"]; $G = $this->Palette[$ColorID]["G"]; $B = $this->Palette[$ColorID]["B"]; $R2 = $Ro; $G2 = $Go; $B2 = $Bo; if ( isset($DataDescription["Symbol"][$ColName]) ) { $Is_Alpha = ((ord ( file_get_contents ($DataDescription["Symbol"][$ColName], false, null, 25, 1)) & 6) & 4) == 4; $Infos = getimagesize($DataDescription["Symbol"][$ColName]); $ImageWidth = $Infos[0]; $ImageHeight = $Infos[1]; $Symbol = imagecreatefromgif($DataDescription["Symbol"][$ColName]); } $XPos = $this->GArea_X1 + $this->GAreaXOffset; $Hsize = round($BigRadius/2); $R3 = -1; $G3 = -1; $B3 = -1; foreach ( $Data as $Key => $Values ) { $Value = $Data[$Key][$ColName]; $YPos = $this->GArea_Y2 - (($Value-$this->VMin) * $this->DivisionRatio); /* Save point into the image map if option activated */ if ( $this->BuildMap ) $this->addToImageMap($XPos-$Hsize,$YPos-$Hsize,$XPos+1+$Hsize,$YPos+$Hsize+1,$DataDescription["Description"][$ColName],$Data[$Key][$ColName].$DataDescription["Unit"]["Y"],"Plot"); if ( is_numeric($Value) ) { if ( !isset($DataDescription["Symbol"][$ColName]) ) { if ( $Shadow ) { if ( $R3 !=-1 && $G3 !=-1 && $B3 !=-1 ) $this->drawFilledCircle($XPos+2,$YPos+2,$BigRadius,$R3,$G3,$B3); else { $R3 = $this->Palette[$ColorID]["R"]-20; if ( $R3 < 0 ) { $R3 = 0; } $G3 = $this->Palette[$ColorID]["G"]-20; if ( $G3 < 0 ) { $G3 = 0; } $B3 = $this->Palette[$ColorID]["B"]-20; if ( $B3 < 0 ) { $B3 = 0; } $this->drawFilledCircle($XPos+2,$YPos+2,$BigRadius,$R3,$G3,$B3); } } $this->drawFilledCircle($XPos+1,$YPos+1,$BigRadius,$R,$G,$B); if ( $SmallRadius != 0 ) { if ( $R2 !=-1 && $G2 !=-1 && $B2 !=-1 ) $this->drawFilledCircle($XPos+1,$YPos+1,$SmallRadius,$R2,$G2,$B2); else { $R2 = $this->Palette[$ColorID]["R"]-15; if ( $R2 < 0 ) { $R2 = 0; } $G2 = $this->Palette[$ColorID]["G"]-15; if ( $G2 < 0 ) { $G2 = 0; } $B2 = $this->Palette[$ColorID]["B"]-15; if ( $B2 < 0 ) { $B2 = 0; } $this->drawFilledCircle($XPos+1,$YPos+1,$SmallRadius,$R2,$G2,$B2); } } } else { imagecopymerge($this->Picture,$Symbol,$XPos+1-$ImageWidth/2,$YPos+1-$ImageHeight/2,0,0,$ImageWidth,$ImageHeight,100); } } $XPos = $XPos + $this->DivisionWidth; } $GraphID++; } } /* This function draw a plot graph in an X/Y space */ function drawXYPlotGraph($Data,$DataDescription,$YSerieName,$XSerieName,$PaletteID=0,$BigRadius=5,$SmallRadius=2,$R2=-1,$G2=-1,$B2=-1,$Shadow=TRUE) { $R = $this->Palette[$PaletteID]["R"]; $G = $this->Palette[$PaletteID]["G"]; $B = $this->Palette[$PaletteID]["B"]; $R3 = -1; $G3 = -1; $B3 = -1; $YLast = -1; $XLast = -1; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$YSerieName]) && isset($Data[$Key][$XSerieName]) ) { $X = $Data[$Key][$XSerieName]; $Y = $Data[$Key][$YSerieName]; $Y = $this->GArea_Y2 - (($Y-$this->VMin) * $this->DivisionRatio); $X = $this->GArea_X1 + (($X-$this->VXMin) * $this->XDivisionRatio); if ( $Shadow ) { if ( $R3 !=-1 && $G3 !=-1 && $B3 !=-1 ) $this->drawFilledCircle($X+2,$Y+2,$BigRadius,$R3,$G3,$B3); else { $R3 = $this->Palette[$PaletteID]["R"]-20; if ( $R < 0 ) { $R = 0; } $G3 = $this->Palette[$PaletteID]["G"]-20; if ( $G < 0 ) { $G = 0; } $B3 = $this->Palette[$PaletteID]["B"]-20; if ( $B < 0 ) { $B = 0; } $this->drawFilledCircle($X+2,$Y+2,$BigRadius,$R3,$G3,$B3); } } $this->drawFilledCircle($X+1,$Y+1,$BigRadius,$R,$G,$B); if ( $R2 !=-1 && $G2 !=-1 && $B2 !=-1 ) $this->drawFilledCircle($X+1,$Y+1,$SmallRadius,$R2,$G2,$B2); else { $R2 = $this->Palette[$PaletteID]["R"]+20; if ( $R > 255 ) { $R = 255; } $G2 = $this->Palette[$PaletteID]["G"]+20; if ( $G > 255 ) { $G = 255; } $B2 = $this->Palette[$PaletteID]["B"]+20; if ( $B > 255 ) { $B = 255; } $this->drawFilledCircle($X+1,$Y+1,$SmallRadius,$R2,$G2,$B2); } } } } /* This function draw an area between two series */ function drawArea($Data,$Serie1,$Serie2,$R,$G,$B,$Alpha = 50) { /* Validate the Data and DataDescription array */ $this->validateData("drawArea",$Data); $LayerWidth = $this->GArea_X2-$this->GArea_X1; $LayerHeight = $this->GArea_Y2-$this->GArea_Y1; $this->Layers[0] = imagecreatetruecolor($LayerWidth,$LayerHeight); $C_White =$this->AllocateColor($this->Layers[0],255,255,255); imagefilledrectangle($this->Layers[0],0,0,$LayerWidth,$LayerHeight,$C_White); imagecolortransparent($this->Layers[0],$C_White); $C_Graph =$this->AllocateColor($this->Layers[0],$R,$G,$B); $XPos = $this->GAreaXOffset; $LastXPos = -1; foreach ( $Data as $Key => $Values ) { $Value1 = $Data[$Key][$Serie1]; $Value2 = $Data[$Key][$Serie2]; $YPos1 = $LayerHeight - (($Value1-$this->VMin) * $this->DivisionRatio); $YPos2 = $LayerHeight - (($Value2-$this->VMin) * $this->DivisionRatio); if ( $LastXPos != -1 ) { $Points = ""; $Points[] = $LastXPos; $Points[] = $LastYPos1; $Points[] = $LastXPos; $Points[] = $LastYPos2; $Points[] = $XPos; $Points[] = $YPos2; $Points[] = $XPos; $Points[] = $YPos1; imagefilledpolygon($this->Layers[0],$Points,4,$C_Graph); } $LastYPos1 = $YPos1; $LastYPos2 = $YPos2; $LastXPos = $XPos; $XPos = $XPos + $this->DivisionWidth; } imagecopymerge($this->Picture,$this->Layers[0],$this->GArea_X1,$this->GArea_Y1,0,0,$LayerWidth,$LayerHeight,$Alpha); imagedestroy($this->Layers[0]); } /* This function write the values of the specified series */ function writeValues($Data,$DataDescription,$Series) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("writeValues",$DataDescription); $this->validateData("writeValues",$Data); if ( !is_array($Series) ) { $Series = array($Series); } foreach($Series as $Key => $Serie) { $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $Serie ) { $ColorID = $ID; }; $ID++; } $XPos = $this->GArea_X1 + $this->GAreaXOffset; $XLast = -1; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$Serie]) && is_numeric($Data[$Key][$Serie])) { $Value = $Data[$Key][$Serie]; $YPos = $this->GArea_Y2 - (($Value-$this->VMin) * $this->DivisionRatio); $Positions = imagettfbbox($this->FontSize,0,$this->FontName,$Value); $Width = $Positions[2] - $Positions[6]; $XOffset = $XPos - ($Width/2); $Height = $Positions[3] - $Positions[7]; $YOffset = $YPos - 4; $C_TextColor =$this->AllocateColor($this->Picture,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); imagettftext($this->Picture,$this->FontSize,0,$XOffset,$YOffset,$C_TextColor,$this->FontName,$Value); } $XPos = $XPos + $this->DivisionWidth; } } } /* This function draw a line graph */ function drawLineGraph($Data,$DataDescription,$SerieName="") { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawLineGraph",$DataDescription); $this->validateData("drawLineGraph",$Data); $GraphID = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } if ( $SerieName == "" || $SerieName == $ColName ) { $XPos = $this->GArea_X1 + $this->GAreaXOffset; $XLast = -1; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) { $Value = $Data[$Key][$ColName]; $YPos = $this->GArea_Y2 - (($Value-$this->VMin) * $this->DivisionRatio); /* Save point into the image map if option activated */ if ( $this->BuildMap ) $this->addToImageMap($XPos-3,$YPos-3,$XPos+3,$YPos+3,$DataDescription["Description"][$ColName],$Data[$Key][$ColName].$DataDescription["Unit"]["Y"],"Line"); if (!is_numeric($Value)) { $XLast = -1; } if ( $XLast != -1 ) $this->drawLine($XLast,$YLast,$XPos,$YPos,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"],TRUE); $XLast = $XPos; $YLast = $YPos; if (!is_numeric($Value)) { $XLast = -1; } } $XPos = $XPos + $this->DivisionWidth; } $GraphID++; } } } /* This function draw a line graph */ function drawXYGraph($Data,$DataDescription,$YSerieName,$XSerieName,$PaletteID=0) { $YLast = -1; $XLast = -1; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$YSerieName]) && isset($Data[$Key][$XSerieName]) ) { $X = $Data[$Key][$XSerieName]; $Y = $Data[$Key][$YSerieName]; $Y = $this->GArea_Y2 - (($Y-$this->VMin) * $this->DivisionRatio); $X = $this->GArea_X1 + (($X-$this->VXMin) * $this->XDivisionRatio); if ($XLast != -1 && $YLast != -1) { $this->drawLine($XLast,$YLast,$X,$Y,$this->Palette[$PaletteID]["R"],$this->Palette[$PaletteID]["G"],$this->Palette[$PaletteID]["B"],TRUE); } $XLast = $X; $YLast = $Y; } } } /* This function draw a cubic curve */ function drawCubicCurve($Data,$DataDescription,$Accuracy=.1,$SerieName="") { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawCubicCurve",$DataDescription); $this->validateData("drawCubicCurve",$Data); $GraphID = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { if ( $SerieName == "" || $SerieName == $ColName ) { $XIn = ""; $Yin = ""; $Yt = ""; $U = ""; $XIn[0] = 0; $YIn[0] = 0; $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } $Index = 1; $XLast = -1; $Missing = ""; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName]) ) { $Value = $Data[$Key][$ColName]; $XIn[$Index] = $Index; $YIn[$Index] = $Value; if ( !is_numeric($Value) ) { $Missing[$Index] = TRUE; } $Index++; } } $Index--; $Yt[0] = 0; $Yt[1] = 0; $U[1] = 0; for($i=2;$i<=$Index-1;$i++) { $Sig = ($XIn[$i] - $XIn[$i-1]) / ($XIn[$i+1] - $XIn[$i-1]); $p = $Sig * $Yt[$i-1] + 2; $Yt[$i] = ($Sig - 1) / $p; $U[$i] = ($YIn[$i+1] - $YIn[$i]) / ($XIn[$i+1] - $XIn[$i]) - ($YIn[$i] - $YIn[$i-1]) / ($XIn[$i] - $XIn[$i-1]); $U[$i] = (6 * $U[$i] / ($XIn[$i+1] - $XIn[$i-1]) - $Sig * $U[$i-1]) / $p; } $qn = 0; $un = 0; $Yt[$Index] = ($un - $qn * $U[$Index-1]) / ($qn * $Yt[$Index-1] + 1); for($k=$Index-1;$k>=1;$k--) $Yt[$k] = $Yt[$k] * $Yt[$k+1] + $U[$k]; $XPos = $this->GArea_X1 + $this->GAreaXOffset; for($X=1;$X<=$Index;$X=$X+$Accuracy) { $klo = 1; $khi = $Index; $k = $khi - $klo; while($k > 1) { $k = $khi - $klo; If ( $XIn[$k] >= $X ) $khi = $k; else $klo = $k; } $klo = $khi - 1; $h = $XIn[$khi] - $XIn[$klo]; $a = ($XIn[$khi] - $X) / $h; $b = ($X - $XIn[$klo]) / $h; $Value = $a * $YIn[$klo] + $b * $YIn[$khi] + (($a*$a*$a - $a) * $Yt[$klo] + ($b*$b*$b - $b) * $Yt[$khi]) * ($h*$h) / 6; $YPos = $this->GArea_Y2 - (($Value-$this->VMin) * $this->DivisionRatio); if ( $XLast != -1 && !isset($Missing[floor($X)]) && !isset($Missing[floor($X+1)]) ) $this->drawLine($XLast,$YLast,$XPos,$YPos,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"],TRUE); $XLast = $XPos; $YLast = $YPos; $XPos = $XPos + $this->DivisionWidth * $Accuracy; } // Add potentialy missing values $XPos = $XPos - $this->DivisionWidth * $Accuracy; if ( $XPos < ($this->GArea_X2 - $this->GAreaXOffset) ) { $YPos = $this->GArea_Y2 - (($YIn[$Index]-$this->VMin) * $this->DivisionRatio); $this->drawLine($XLast,$YLast,$this->GArea_X2-$this->GAreaXOffset,$YPos,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"],TRUE); } $GraphID++; } } } /* This function draw a filled cubic curve */ function drawFilledCubicCurve($Data,$DataDescription,$Accuracy=.1,$Alpha=100,$AroundZero=FALSE) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawFilledCubicCurve",$DataDescription); $this->validateData("drawFilledCubicCurve",$Data); $LayerWidth = $this->GArea_X2-$this->GArea_X1; $LayerHeight = $this->GArea_Y2-$this->GArea_Y1; $YZero = $LayerHeight - ((0-$this->VMin) * $this->DivisionRatio); if ( $YZero > $LayerHeight ) { $YZero = $LayerHeight; } $GraphID = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { $XIn = ""; $Yin = ""; $Yt = ""; $U = ""; $XIn[0] = 0; $YIn[0] = 0; $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } $Index = 1; $XLast = -1; $Missing = ""; foreach ( $Data as $Key => $Values ) { $Value = $Data[$Key][$ColName]; $XIn[$Index] = $Index; $YIn[$Index] = $Value; if ( !is_numeric($Value) ) { $Missing[$Index] = TRUE; } $Index++; } $Index--; $Yt[0] = 0; $Yt[1] = 0; $U[1] = 0; for($i=2;$i<=$Index-1;$i++) { $Sig = ($XIn[$i] - $XIn[$i-1]) / ($XIn[$i+1] - $XIn[$i-1]); $p = $Sig * $Yt[$i-1] + 2; $Yt[$i] = ($Sig - 1) / $p; $U[$i] = ($YIn[$i+1] - $YIn[$i]) / ($XIn[$i+1] - $XIn[$i]) - ($YIn[$i] - $YIn[$i-1]) / ($XIn[$i] - $XIn[$i-1]); $U[$i] = (6 * $U[$i] / ($XIn[$i+1] - $XIn[$i-1]) - $Sig * $U[$i-1]) / $p; } $qn = 0; $un = 0; $Yt[$Index] = ($un - $qn * $U[$Index-1]) / ($qn * $Yt[$Index-1] + 1); for($k=$Index-1;$k>=1;$k--) $Yt[$k] = $Yt[$k] * $Yt[$k+1] + $U[$k]; $Points = ""; $Points[] = $this->GAreaXOffset; $Points[] = $LayerHeight; $this->Layers[0] = imagecreatetruecolor($LayerWidth,$LayerHeight); $C_White =$this->AllocateColor($this->Layers[0],255,255,255); imagefilledrectangle($this->Layers[0],0,0,$LayerWidth,$LayerHeight,$C_White); imagecolortransparent($this->Layers[0],$C_White); $YLast = NULL; $XPos = $this->GAreaXOffset; $PointsCount = 2; for($X=1;$X<=$Index;$X=$X+$Accuracy) { $klo = 1; $khi = $Index; $k = $khi - $klo; while($k > 1) { $k = $khi - $klo; If ( $XIn[$k] >= $X ) $khi = $k; else $klo = $k; } $klo = $khi - 1; $h = $XIn[$khi] - $XIn[$klo]; $a = ($XIn[$khi] - $X) / $h; $b = ($X - $XIn[$klo]) / $h; $Value = $a * $YIn[$klo] + $b * $YIn[$khi] + (($a*$a*$a - $a) * $Yt[$klo] + ($b*$b*$b - $b) * $Yt[$khi]) * ($h*$h) / 6; $YPos = $LayerHeight - (($Value-$this->VMin) * $this->DivisionRatio); if ( $YLast != NULL && $AroundZero && !isset($Missing[floor($X)]) && !isset($Missing[floor($X+1)])) { $aPoints = ""; $aPoints[] = $XLast; $aPoints[] = $YLast; $aPoints[] = $XPos; $aPoints[] = $YPos; $aPoints[] = $XPos; $aPoints[] = $YZero; $aPoints[] = $XLast; $aPoints[] = $YZero; $C_Graph =$this->AllocateColor($this->Layers[0],$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); imagefilledpolygon($this->Layers[0],$aPoints,4,$C_Graph); } if ( !isset($Missing[floor($X)]) || $YLast == NULL ) { $PointsCount++; $Points[] = $XPos; $Points[] = $YPos; } else { $PointsCount++; $Points[] = $XLast; $Points[] = $LayerHeight; } $YLast = $YPos; $XLast = $XPos; $XPos = $XPos + $this->DivisionWidth * $Accuracy; } // Add potentialy missing values $XPos = $XPos - $this->DivisionWidth * $Accuracy; if ( $XPos < ($LayerWidth-$this->GAreaXOffset) ) { $YPos = $LayerHeight - (($YIn[$Index]-$this->VMin) * $this->DivisionRatio); if ( $YLast != NULL && $AroundZero ) { $aPoints = ""; $aPoints[] = $XLast; $aPoints[] = $YLast; $aPoints[] = $LayerWidth-$this->GAreaXOffset; $aPoints[] = $YPos; $aPoints[] = $LayerWidth-$this->GAreaXOffset; $aPoints[] = $YZero; $aPoints[] = $XLast; $aPoints[] = $YZero; $C_Graph =$this->AllocateColor($this->Layers[0],$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); imagefilledpolygon($this->Layers[0],$aPoints,4,$C_Graph); } if ( $YIn[$klo] != "" && $YIn[$khi] != "" || $YLast == NULL ) { $PointsCount++; $Points[] = $LayerWidth-$this->GAreaXOffset; $Points[] = $YPos; } } $Points[] = $LayerWidth-$this->GAreaXOffset; $Points[] = $LayerHeight; if ( !$AroundZero ) { $C_Graph =$this->AllocateColor($this->Layers[0],$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); imagefilledpolygon($this->Layers[0],$Points,$PointsCount,$C_Graph); } imagecopymerge($this->Picture,$this->Layers[0],$this->GArea_X1,$this->GArea_Y1,0,0,$LayerWidth,$LayerHeight,$Alpha); imagedestroy($this->Layers[0]); $this->drawCubicCurve($Data,$DataDescription,$Accuracy,$ColName); $GraphID++; } } /* This function draw a filled line graph */ function drawFilledLineGraph($Data,$DataDescription,$Alpha=100,$AroundZero=FALSE) { $Empty = -2147483647; /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawFilledLineGraph",$DataDescription); $this->validateData("drawFilledLineGraph",$Data); $LayerWidth = $this->GArea_X2-$this->GArea_X1; $LayerHeight = $this->GArea_Y2-$this->GArea_Y1; $GraphID = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } $aPoints = ""; $aPoints[] = $this->GAreaXOffset; $aPoints[] = $LayerHeight; $this->Layers[0] = imagecreatetruecolor($LayerWidth,$LayerHeight); $C_White = $this->AllocateColor($this->Layers[0],255,255,255); imagefilledrectangle($this->Layers[0],0,0,$LayerWidth,$LayerHeight,$C_White); imagecolortransparent($this->Layers[0],$C_White); $XPos = $this->GAreaXOffset; $XLast = -1; $PointsCount = 2; $YZero = $LayerHeight - ((0-$this->VMin) * $this->DivisionRatio); if ( $YZero > $LayerHeight ) { $YZero = $LayerHeight; } $YLast = $Empty; foreach ( $Data as $Key => $Values ) { $Value = $Data[$Key][$ColName]; $YPos = $LayerHeight - (($Value-$this->VMin) * $this->DivisionRatio); /* Save point into the image map if option activated */ if ( $this->BuildMap ) $this->addToImageMap($XPos-3,$YPos-3,$XPos+3,$YPos+3,$DataDescription["Description"][$ColName],$Data[$Key][$ColName].$DataDescription["Unit"]["Y"],"FLine"); if ( !is_numeric($Value) ) { $PointsCount++; $aPoints[] = $XLast; $aPoints[] = $LayerHeight; $YLast = $Empty; } else { $PointsCount++; if ( $YLast <> $Empty ) { $aPoints[] = $XPos; $aPoints[] = $YPos; } else { $PointsCount++; $aPoints[] = $XPos; $aPoints[] = $LayerHeight; $aPoints[] = $XPos; $aPoints[] = $YPos; } if ($YLast <> $Empty && $AroundZero) { $Points = ""; $Points[] = $XLast; $Points[] = $YLast; $Points[] = $XPos; $Points[] = $YPos; $Points[] = $XPos; $Points[] = $YZero; $Points[] = $XLast; $Points[] = $YZero; $C_Graph = $this->AllocateColor($this->Layers[0],$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); imagefilledpolygon($this->Layers[0],$Points,4,$C_Graph); } $YLast = $YPos; } $XLast = $XPos; $XPos = $XPos + $this->DivisionWidth; } $aPoints[] = $LayerWidth - $this->GAreaXOffset; $aPoints[] = $LayerHeight; if ( $AroundZero == FALSE ) { $C_Graph = $this->AllocateColor($this->Layers[0],$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); imagefilledpolygon($this->Layers[0],$aPoints,$PointsCount,$C_Graph); } imagecopymerge($this->Picture,$this->Layers[0],$this->GArea_X1,$this->GArea_Y1,0,0,$LayerWidth,$LayerHeight,$Alpha); imagedestroy($this->Layers[0]); $GraphID++; $this->drawLineGraph($Data,$DataDescription,$ColName); } } /* This function draw a bar graph */ function drawOverlayBarGraph($Data,$DataDescription,$Alpha=50) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawOverlayBarGraph",$DataDescription); $this->validateData("drawOverlayBarGraph",$Data); $LayerWidth = $this->GArea_X2-$this->GArea_X1; $LayerHeight = $this->GArea_Y2-$this->GArea_Y1; $GraphID = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } $this->Layers[$GraphID] = imagecreatetruecolor($LayerWidth,$LayerHeight); $C_White = $this->AllocateColor($this->Layers[$GraphID],255,255,255); $C_Graph = $this->AllocateColor($this->Layers[$GraphID],$this->Palette[$GraphID]["R"],$this->Palette[$GraphID]["G"],$this->Palette[$GraphID]["B"]); imagefilledrectangle($this->Layers[$GraphID],0,0,$LayerWidth,$LayerHeight,$C_White); imagecolortransparent($this->Layers[$GraphID],$C_White); $XWidth = $this->DivisionWidth / 4; $XPos = $this->GAreaXOffset; $YZero = $LayerHeight - ((0-$this->VMin) * $this->DivisionRatio); $XLast = -1; $PointsCount = 2; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName]) ) { $Value = $Data[$Key][$ColName]; if ( is_numeric($Value) ) { $YPos = $LayerHeight - (($Value-$this->VMin) * $this->DivisionRatio); imagefilledrectangle($this->Layers[$GraphID],$XPos-$XWidth,$YPos,$XPos+$XWidth,$YZero,$C_Graph); $X1 = floor($XPos - $XWidth + $this->GArea_X1); $Y1 = floor($YPos+$this->GArea_Y1) + .2; $X2 = floor($XPos + $XWidth + $this->GArea_X1); $Y2 = $this->GArea_Y2 - ((0-$this->VMin) * $this->DivisionRatio); if ( $X1 <= $this->GArea_X1 ) { $X1 = $this->GArea_X1 + 1; } if ( $X2 >= $this->GArea_X2 ) { $X2 = $this->GArea_X2 - 1; } /* Save point into the image map if option activated */ if ( $this->BuildMap ) $this->addToImageMap($X1,min($Y1,$Y2),$X2,max($Y1,$Y2),$DataDescription["Description"][$ColName],$Data[$Key][$ColName].$DataDescription["Unit"]["Y"],"oBar"); $this->drawLine($X1,$Y1,$X2,$Y1,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"],TRUE); } } $XPos = $XPos + $this->DivisionWidth; } $GraphID++; } for($i=0;$i<=($GraphID-1);$i++) { imagecopymerge($this->Picture,$this->Layers[$i],$this->GArea_X1,$this->GArea_Y1,0,0,$LayerWidth,$LayerHeight,$Alpha); imagedestroy($this->Layers[$i]); } } /* This function draw a bar graph */ function drawBarGraph($Data,$DataDescription,$Shadow=FALSE,$Alpha=100) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawBarGraph",$DataDescription); $this->validateData("drawBarGraph",$Data); $GraphID = 0; $Series = count($DataDescription["Values"]); $SeriesWidth = $this->DivisionWidth / ($Series+1); $SerieXOffset = $this->DivisionWidth / 2 - $SeriesWidth / 2; $YZero = $this->GArea_Y2 - ((0-$this->VMin) * $this->DivisionRatio); if ( $YZero > $this->GArea_Y2 ) { $YZero = $this->GArea_Y2; } $SerieID = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } $XPos = $this->GArea_X1 + $this->GAreaXOffset - $SerieXOffset + $SeriesWidth * $SerieID; $XLast = -1; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) { if ( is_numeric($Data[$Key][$ColName]) ) { $Value = $Data[$Key][$ColName]; $YPos = $this->GArea_Y2 - (($Value-$this->VMin) * $this->DivisionRatio); /* Save point into the image map if option activated */ if ( $this->BuildMap ) { $this->addToImageMap($XPos+1,min($YZero,$YPos),$XPos+$SeriesWidth-1,max($YZero,$YPos),$DataDescription["Description"][$ColName],$Data[$Key][$ColName].$DataDescription["Unit"]["Y"],"Bar"); } if ( $Shadow && $Alpha == 100 ) $this->drawRectangle($XPos+1,$YZero,$XPos+$SeriesWidth-1,$YPos,25,25,25,TRUE,$Alpha); $this->drawFilledRectangle($XPos+1,$YZero,$XPos+$SeriesWidth-1,$YPos,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"],TRUE,$Alpha); } } $XPos = $XPos + $this->DivisionWidth; } $SerieID++; } } /* This function draw a stacked bar graph */ function drawStackedBarGraph($Data,$DataDescription,$Alpha=50,$Contiguous=FALSE) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawBarGraph",$DataDescription); $this->validateData("drawBarGraph",$Data); $GraphID = 0; $Series = count($DataDescription["Values"]); if ( $Contiguous ) $SeriesWidth = $this->DivisionWidth; else $SeriesWidth = $this->DivisionWidth * .8; $YZero = $this->GArea_Y2 - ((0-$this->VMin) * $this->DivisionRatio); if ( $YZero > $this->GArea_Y2 ) { $YZero = $this->GArea_Y2; } $SerieID = 0; $LastValue = ""; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } $XPos = $this->GArea_X1 + $this->GAreaXOffset - $SeriesWidth / 2; $XLast = -1; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) { if ( is_numeric($Data[$Key][$ColName]) ) { $Value = $Data[$Key][$ColName]; if ( isset($LastValue[$Key]) ) { $YPos = $this->GArea_Y2 - ((($Value+$LastValue[$Key])-$this->VMin) * $this->DivisionRatio); $YBottom = $this->GArea_Y2 - (($LastValue[$Key]-$this->VMin) * $this->DivisionRatio); $LastValue[$Key] += $Value; } else { $YPos = $this->GArea_Y2 - (($Value-$this->VMin) * $this->DivisionRatio); $YBottom = $YZero; $LastValue[$Key] = $Value; } /* Save point into the image map if option activated */ if ( $this->BuildMap ) $this->addToImageMap($XPos+1,min($YBottom,$YPos),$XPos+$SeriesWidth-1,max($YBottom,$YPos),$DataDescription["Description"][$ColName],$Data[$Key][$ColName].$DataDescription["Unit"]["Y"],"sBar"); $this->drawFilledRectangle($XPos+1,$YBottom,$XPos+$SeriesWidth-1,$YPos,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"],TRUE,$Alpha); } } $XPos = $XPos + $this->DivisionWidth; } $SerieID++; } } /* This function draw a limits bar graphs */ function drawLimitsGraph($Data,$DataDescription,$R=0,$G=0,$B=0) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawLimitsGraph",$DataDescription); $this->validateData("drawLimitsGraph",$Data); $XWidth = $this->DivisionWidth / 4; $XPos = $this->GArea_X1 + $this->GAreaXOffset; foreach ( $Data as $Key => $Values ) { $Min = $Data[$Key][$DataDescription["Values"][0]]; $Max = $Data[$Key][$DataDescription["Values"][0]]; $GraphID = 0; $MaxID = 0; $MinID = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { if ( isset($Data[$Key][$ColName]) ) { if ( $Data[$Key][$ColName] > $Max && is_numeric($Data[$Key][$ColName])) { $Max = $Data[$Key][$ColName]; $MaxID = $GraphID; } } if ( isset($Data[$Key][$ColName]) && is_numeric($Data[$Key][$ColName])) { if ( $Data[$Key][$ColName] < $Min ) { $Min = $Data[$Key][$ColName]; $MinID = $GraphID; } $GraphID++; } } $YPos = $this->GArea_Y2 - (($Max-$this->VMin) * $this->DivisionRatio); $X1 = floor($XPos - $XWidth); $Y1 = floor($YPos) - .2; $X2 = floor($XPos + $XWidth); if ( $X1 <= $this->GArea_X1 ) { $X1 = $this->GArea_X1 + 1; } if ( $X2 >= $this->GArea_X2 ) { $X2 = $this->GArea_X2 - 1; } $YPos = $this->GArea_Y2 - (($Min-$this->VMin) * $this->DivisionRatio); $Y2 = floor($YPos) + .2; $this->drawLine(floor($XPos)-.2,$Y1+1,floor($XPos)-.2,$Y2-1,$R,$G,$B,TRUE); $this->drawLine(floor($XPos)+.2,$Y1+1,floor($XPos)+.2,$Y2-1,$R,$G,$B,TRUE); $this->drawLine($X1,$Y1,$X2,$Y1,$this->Palette[$MaxID]["R"],$this->Palette[$MaxID]["G"],$this->Palette[$MaxID]["B"],FALSE); $this->drawLine($X1,$Y2,$X2,$Y2,$this->Palette[$MinID]["R"],$this->Palette[$MinID]["G"],$this->Palette[$MinID]["B"],FALSE); $XPos = $XPos + $this->DivisionWidth; } } /* This function draw radar axis centered on the graph area */ function drawRadarAxis($Data,$DataDescription,$Mosaic=TRUE,$BorderOffset=10,$A_R=60,$A_G=60,$A_B=60,$S_R=200,$S_G=200,$S_B=200,$MaxValue=-1) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawRadarAxis",$DataDescription); $this->validateData("drawRadarAxis",$Data); $C_TextColor = $this->AllocateColor($this->Picture,$A_R,$A_G,$A_B); /* Draw radar axis */ $Points = count($Data); $Radius = ( $this->GArea_Y2 - $this->GArea_Y1 ) / 2 - $BorderOffset; $XCenter = ( $this->GArea_X2 - $this->GArea_X1 ) / 2 + $this->GArea_X1; $YCenter = ( $this->GArea_Y2 - $this->GArea_Y1 ) / 2 + $this->GArea_Y1; /* Search for the max value */ if ( $MaxValue == -1 ) { foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) if ( $Data[$Key][$ColName] > $MaxValue ) { $MaxValue = $Data[$Key][$ColName]; } } } } /* Draw the mosaic */ if ( $Mosaic ) { $RadiusScale = $Radius / $MaxValue; for ( $t=1; $t<=$MaxValue-1; $t++) { $TRadius = $RadiusScale * $t; $LastX1 = -1; for ( $i=0; $i<=$Points; $i++) { $Angle = -90 + $i * 360/$Points; $X1 = cos($Angle * 3.1418 / 180 ) * $TRadius + $XCenter; $Y1 = sin($Angle * 3.1418 / 180 ) * $TRadius + $YCenter; $X2 = cos($Angle * 3.1418 / 180 ) * ($TRadius+$RadiusScale) + $XCenter; $Y2 = sin($Angle * 3.1418 / 180 ) * ($TRadius+$RadiusScale) + $YCenter; if ( $t % 2 == 1 && $LastX1 != -1) { $Plots = ""; $Plots[] = $X1; $Plots[] = $Y1; $Plots[] = $X2; $Plots[] = $Y2; $Plots[] = $LastX2; $Plots[] = $LastY2; $Plots[] = $LastX1; $Plots[] = $LastY1; $C_Graph = $this->AllocateColor($this->Picture,250,250,250); imagefilledpolygon($this->Picture,$Plots,(count($Plots)+1)/2,$C_Graph); } $LastX1 = $X1; $LastY1= $Y1; $LastX2 = $X2; $LastY2= $Y2; } } } /* Draw the spider web */ for ( $t=1; $t<=$MaxValue; $t++) { $TRadius = ( $Radius / $MaxValue ) * $t; $LastX = -1; for ( $i=0; $i<=$Points; $i++) { $Angle = -90 + $i * 360/$Points; $X = cos($Angle * 3.1418 / 180 ) * $TRadius + $XCenter; $Y = sin($Angle * 3.1418 / 180 ) * $TRadius + $YCenter; if ( $LastX != -1 ) $this->drawDottedLine($LastX,$LastY,$X,$Y,4,$S_R,$S_G,$S_B); $LastX = $X; $LastY= $Y; } } /* Draw the axis */ for ( $i=0; $i<=$Points; $i++) { $Angle = -90 + $i * 360/$Points; $X = cos($Angle * 3.1418 / 180 ) * $Radius + $XCenter; $Y = sin($Angle * 3.1418 / 180 ) * $Radius + $YCenter; $this->drawLine($XCenter,$YCenter,$X,$Y,$A_R,$A_G,$A_B); $XOffset = 0; $YOffset = 0; if (isset($Data[$i][$DataDescription["Position"]])) { $Label = $Data[$i][$DataDescription["Position"]]; $Positions = imagettfbbox($this->FontSize,0,$this->FontName,$Label); $Width = $Positions[2] - $Positions[6]; $Height = $Positions[3] - $Positions[7]; if ( $Angle >= 0 && $Angle <= 90 ) $YOffset = $Height; if ( $Angle > 90 && $Angle <= 180 ) { $YOffset = $Height; $XOffset = -$Width; } if ( $Angle > 180 && $Angle <= 270 ) { $XOffset = -$Width; } imagettftext($this->Picture,$this->FontSize,0,$X+$XOffset,$Y+$YOffset,$C_TextColor,$this->FontName,$Label); } } /* Write the values */ for ( $t=1; $t<=$MaxValue; $t++) { $TRadius = ( $Radius / $MaxValue ) * $t; $Angle = -90 + 360 / $Points; $X1 = $XCenter; $Y1 = $YCenter - $TRadius; $X2 = cos($Angle * 3.1418 / 180 ) * $TRadius + $XCenter; $Y2 = sin($Angle * 3.1418 / 180 ) * $TRadius + $YCenter; $XPos = floor(($X2-$X1)/2) + $X1; $YPos = floor(($Y2-$Y1)/2) + $Y1; $Positions = imagettfbbox($this->FontSize,0,$this->FontName,$t); $X = $XPos - ( $X+$Positions[2] - $X+$Positions[6] ) / 2; $Y = $YPos + $this->FontSize; $this->drawFilledRoundedRectangle($X+$Positions[6]-2,$Y+$Positions[7]-1,$X+$Positions[2]+4,$Y+$Positions[3]+1,2,240,240,240); $this->drawRoundedRectangle($X+$Positions[6]-2,$Y+$Positions[7]-1,$X+$Positions[2]+4,$Y+$Positions[3]+1,2,220,220,220); imagettftext($this->Picture,$this->FontSize,0,$X,$Y,$C_TextColor,$this->FontName,$t); } } /* This function draw a radar graph centered on the graph area */ function drawRadar($Data,$DataDescription,$BorderOffset=10,$MaxValue=-1) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawRadar",$DataDescription); $this->validateData("drawRadar",$Data); $Points = count($Data); $Radius = ( $this->GArea_Y2 - $this->GArea_Y1 ) / 2 - $BorderOffset; $XCenter = ( $this->GArea_X2 - $this->GArea_X1 ) / 2 + $this->GArea_X1; $YCenter = ( $this->GArea_Y2 - $this->GArea_Y1 ) / 2 + $this->GArea_Y1; /* Search for the max value */ if ( $MaxValue == -1 ) { foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) if ( $Data[$Key][$ColName] > $MaxValue ) { $MaxValue = $Data[$Key][$ColName]; } } } } $GraphID = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } $Angle = -90; $XLast = -1; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) { $Value = $Data[$Key][$ColName]; $Strength = ( $Radius / $MaxValue ) * $Value; $XPos = cos($Angle * 3.1418 / 180 ) * $Strength + $XCenter; $YPos = sin($Angle * 3.1418 / 180 ) * $Strength + $YCenter; if ( $XLast != -1 ) $this->drawLine($XLast,$YLast,$XPos,$YPos,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); if ( $XLast == -1 ) { $FirstX = $XPos; $FirstY = $YPos; } $Angle = $Angle + (360/$Points); $XLast = $XPos; $YLast = $YPos; } } $this->drawLine($XPos,$YPos,$FirstX,$FirstY,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); $GraphID++; } } /* This function draw a radar graph centered on the graph area */ function drawFilledRadar($Data,$DataDescription,$Alpha=50,$BorderOffset=10,$MaxValue=-1) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawFilledRadar",$DataDescription); $this->validateData("drawFilledRadar",$Data); $Points = count($Data); $LayerWidth = $this->GArea_X2-$this->GArea_X1; $LayerHeight = $this->GArea_Y2-$this->GArea_Y1; $Radius = ( $this->GArea_Y2 - $this->GArea_Y1 ) / 2 - $BorderOffset; $XCenter = ( $this->GArea_X2 - $this->GArea_X1 ) / 2; $YCenter = ( $this->GArea_Y2 - $this->GArea_Y1 ) / 2; /* Search for the max value */ if ( $MaxValue == -1 ) { foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) if ( $Data[$Key][$ColName] > $MaxValue && is_numeric($Data[$Key][$ColName])) { $MaxValue = $Data[$Key][$ColName]; } } } } $GraphID = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { $ID = 0; foreach ( $DataDescription["Description"] as $keyI => $ValueI ) { if ( $keyI == $ColName ) { $ColorID = $ID; }; $ID++; } $Angle = -90; $XLast = -1; $Plots = ""; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) { $Value = $Data[$Key][$ColName]; if ( !is_numeric($Value) ) { $Value = 0; } $Strength = ( $Radius / $MaxValue ) * $Value; $XPos = cos($Angle * 3.1418 / 180 ) * $Strength + $XCenter; $YPos = sin($Angle * 3.1418 / 180 ) * $Strength + $YCenter; $Plots[] = $XPos; $Plots[] = $YPos; $Angle = $Angle + (360/$Points); $XLast = $XPos; $YLast = $YPos; } } if (isset($Plots[0])) { $Plots[] = $Plots[0]; $Plots[] = $Plots[1]; $this->Layers[0] = imagecreatetruecolor($LayerWidth,$LayerHeight); $C_White = $this->AllocateColor($this->Layers[0],255,255,255); imagefilledrectangle($this->Layers[0],0,0,$LayerWidth,$LayerHeight,$C_White); imagecolortransparent($this->Layers[0],$C_White); $C_Graph = $this->AllocateColor($this->Layers[0],$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); imagefilledpolygon($this->Layers[0],$Plots,(count($Plots)+1)/2,$C_Graph); imagecopymerge($this->Picture,$this->Layers[0],$this->GArea_X1,$this->GArea_Y1,0,0,$LayerWidth,$LayerHeight,$Alpha); imagedestroy($this->Layers[0]); for($i=0;$i<=count($Plots)-4;$i=$i+2) $this->drawLine($Plots[$i]+$this->GArea_X1,$Plots[$i+1]+$this->GArea_Y1,$Plots[$i+2]+$this->GArea_X1,$Plots[$i+3]+$this->GArea_Y1,$this->Palette[$ColorID]["R"],$this->Palette[$ColorID]["G"],$this->Palette[$ColorID]["B"]); } $GraphID++; } } /* This function draw a flat pie chart */ function drawBasicPieGraph($Data,$DataDescription,$XPos,$YPos,$Radius=100,$DrawLabels=PIE_NOLABEL,$R=255,$G=255,$B=255,$Decimals=0) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawBasicPieGraph",$DataDescription,FALSE); $this->validateData("drawBasicPieGraph",$Data); /* Determine pie sum */ $Series = 0; $PieSum = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { if ( $ColName != $DataDescription["Position"] ) { $Series++; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) $PieSum = $PieSum + $Data[$Key][$ColName]; $iValues[] = $Data[$Key][$ColName]; $iLabels[] = $Data[$Key][$DataDescription["Position"]]; } } } /* Validate serie */ if ( $Series != 1 ) RaiseFatal("Pie chart can only accept one serie of data."); $SpliceRatio = 360 / $PieSum; $SplicePercent = 100 / $PieSum; /* Calculate all polygons */ $Angle = 0; $TopPlots = ""; foreach($iValues as $Key => $Value) { $TopPlots[$Key][] = $XPos; $TopPlots[$Key][] = $YPos; /* Process labels position & size */ $Caption = ""; if ( !($DrawLabels == PIE_NOLABEL) ) { $TAngle = $Angle+($Value*$SpliceRatio/2); if ($DrawLabels == PIE_PERCENTAGE) $Caption = (round($Value * pow(10,$Decimals) * $SplicePercent)/pow(10,$Decimals))."%"; elseif ($DrawLabels == PIE_LABELS) $Caption = $iLabels[$Key]; elseif ($DrawLabels == PIE_PERCENTAGE_LABEL) $Caption = $iLabels[$Key]."\r\n".(round($Value * pow(10,$Decimals) * $SplicePercent)/pow(10,$Decimals))."%"; elseif ($DrawLabels == PIE_PERCENTAGE_LABEL) $Caption = $iLabels[$Key]."\r\n".(round($Value * pow(10,$Decimals) * $SplicePercent)/pow(10,$Decimals))."%"; $Position = imageftbbox($this->FontSize,0,$this->FontName,$Caption); $TextWidth = $Position[2]-$Position[0]; $TextHeight = abs($Position[1])+abs($Position[3]); $TX = cos(($TAngle) * 3.1418 / 180 ) * ($Radius+10) + $XPos; if ( $TAngle > 0 && $TAngle < 180 ) $TY = sin(($TAngle) * 3.1418 / 180 ) * ($Radius+10) + $YPos + 4; else $TY = sin(($TAngle) * 3.1418 / 180 ) * ($Radius+4) + $YPos - ($TextHeight/2); if ( $TAngle > 90 && $TAngle < 270 ) $TX = $TX - $TextWidth; $C_TextColor = $this->AllocateColor($this->Picture,70,70,70); imagettftext($this->Picture,$this->FontSize,0,$TX,$TY,$C_TextColor,$this->FontName,$Caption); } /* Process pie slices */ for($iAngle=$Angle;$iAngle<=$Angle+$Value*$SpliceRatio;$iAngle=$iAngle+.5) { $TopX = cos($iAngle * 3.1418 / 180 ) * $Radius + $XPos; $TopY = sin($iAngle * 3.1418 / 180 ) * $Radius + $YPos; $TopPlots[$Key][] = $TopX; $TopPlots[$Key][] = $TopY; } $TopPlots[$Key][] = $XPos; $TopPlots[$Key][] = $YPos; $Angle = $iAngle; } $PolyPlots = $TopPlots; /* Set array values type to float --- PHP Bug with imagefilledpolygon casting to integer */ foreach ($TopPlots as $Key => $Value) { foreach ($TopPlots[$Key] as $Key2 => $Value2) { settype($TopPlots[$Key][$Key2],"float"); } } /* Draw Top polygons */ foreach ($PolyPlots as $Key => $Value) { $C_GraphLo = $this->AllocateColor($this->Picture,$this->Palette[$Key]["R"],$this->Palette[$Key]["G"],$this->Palette[$Key]["B"]); imagefilledpolygon($this->Picture,$PolyPlots[$Key],(count($PolyPlots[$Key])+1)/2,$C_GraphLo); } $this->drawCircle($XPos-.5,$YPos-.5,$Radius,$R,$G,$B); $this->drawCircle($XPos-.5,$YPos-.5,$Radius+.5,$R,$G,$B); /* Draw Top polygons */ foreach ($TopPlots as $Key => $Value) { for($j=0;$j<=count($TopPlots[$Key])-4;$j=$j+2) $this->drawLine($TopPlots[$Key][$j],$TopPlots[$Key][$j+1],$TopPlots[$Key][$j+2],$TopPlots[$Key][$j+3],$R,$G,$B); } } function drawFlatPieGraphWithShadow($Data,$DataDescription,$XPos,$YPos,$Radius=100,$DrawLabels=PIE_NOLABEL,$SpliceDistance=0,$Decimals=0) { $this->drawFlatPieGraph($Data,$DataDescription,$XPos+$this->ShadowXDistance,$YPos+$this->ShadowYDistance,$Radius,PIE_NOLABEL,$SpliceDistance,$Decimals,TRUE); $this->drawFlatPieGraph($Data,$DataDescription,$XPos,$YPos,$Radius,$DrawLabels,$SpliceDistance,$Decimals,FALSE); } /* This function draw a flat pie chart */ function drawFlatPieGraph($Data,$DataDescription,$XPos,$YPos,$Radius=100,$DrawLabels=PIE_NOLABEL,$SpliceDistance=0,$Decimals=0,$AllBlack=FALSE) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawFlatPieGraph",$DataDescription,FALSE); $this->validateData("drawFlatPieGraph",$Data); $ShadowStatus = $this->ShadowActive ; $this->ShadowActive = FALSE; /* Determine pie sum */ $Series = 0; $PieSum = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { if ( $ColName != $DataDescription["Position"] ) { $Series++; foreach ( $Data as $Key => $Values ) { if ( isset($Data[$Key][$ColName])) $PieSum = $PieSum + $Data[$Key][$ColName]; $iValues[] = $Data[$Key][$ColName]; $iLabels[] = $Data[$Key][$DataDescription["Position"]]; } } } /* Validate serie */ if ( $Series != 1 ) { RaiseFatal("Pie chart can only accept one serie of data."); return(0); } $SpliceRatio = 360 / $PieSum; $SplicePercent = 100 / $PieSum; /* Calculate all polygons */ $Angle = 0; $TopPlots = ""; foreach($iValues as $Key => $Value) { $XOffset = cos(($Angle+($Value/2*$SpliceRatio)) * 3.1418 / 180 ) * $SpliceDistance; $YOffset = sin(($Angle+($Value/2*$SpliceRatio)) * 3.1418 / 180 ) * $SpliceDistance; $TopPlots[$Key][] = round($XPos + $XOffset); $TopPlots[$Key][] = round($YPos + $YOffset); if ( $AllBlack ) { $Rc = $this->ShadowRColor; $Gc = $this->ShadowGColor; $Bc = $this->ShadowBColor; } else { $Rc = $this->Palette[$Key]["R"]; $Gc = $this->Palette[$Key]["G"]; $Bc = $this->Palette[$Key]["B"]; } $XLineLast = ""; $YLineLast = ""; /* Process labels position & size */ $Caption = ""; if ( !($DrawLabels == PIE_NOLABEL) ) { $TAngle = $Angle+($Value*$SpliceRatio/2); if ($DrawLabels == PIE_PERCENTAGE) $Caption = (round($Value * pow(10,$Decimals) * $SplicePercent)/pow(10,$Decimals))."%"; elseif ($DrawLabels == PIE_LABELS) $Caption = $iLabels[$Key]; elseif ($DrawLabels == PIE_PERCENTAGE_LABEL) $Caption = $iLabels[$Key]."\r\n".(round($Value * pow(10,$Decimals) * $SplicePercent)/pow(10,$Decimals))."%"; elseif ($DrawLabels == PIE_PERCENTAGE_LABEL) $Caption = $iLabels[$Key]."\r\n".(round($Value * pow(10,$Decimals) * $SplicePercent)/pow(10,$Decimals))."%"; $Position = imageftbbox($this->FontSize,0,$this->FontName,$Caption); $TextWidth = $Position[2]-$Position[0]; $TextHeight = abs($Position[1])+abs($Position[3]); $TX = cos(($TAngle) * 3.1418 / 180 ) * ($Radius+10+$SpliceDistance) + $XPos; if ( $TAngle > 0 && $TAngle < 180 ) $TY = sin(($TAngle) * 3.1418 / 180 ) * ($Radius+10+$SpliceDistance) + $YPos + 4; else $TY = sin(($TAngle) * 3.1418 / 180 ) * ($Radius+$SpliceDistance+4) + $YPos - ($TextHeight/2); if ( $TAngle > 90 && $TAngle < 270 ) $TX = $TX - $TextWidth; $C_TextColor = $this->AllocateColor($this->Picture,70,70,70); imagettftext($this->Picture,$this->FontSize,0,$TX,$TY,$C_TextColor,$this->FontName,$Caption); } /* Process pie slices */ if ( !$AllBlack ) $LineColor = $this->AllocateColor($this->Picture,$Rc,$Gc,$Bc); else $LineColor = $this->AllocateColor($this->Picture,$Rc,$Gc,$Bc); $XLineLast = ""; $YLineLast = ""; for($iAngle=$Angle;$iAngle<=$Angle+$Value*$SpliceRatio;$iAngle=$iAngle+.5) { $PosX = cos($iAngle * 3.1418 / 180 ) * $Radius + $XPos + $XOffset; $PosY = sin($iAngle * 3.1418 / 180 ) * $Radius + $YPos + $YOffset; $TopPlots[$Key][] = round($PosX); $TopPlots[$Key][] = round($PosY); if ( $iAngle == $Angle || $iAngle == $Angle+$Value*$SpliceRatio || $iAngle +.5 > $Angle+$Value*$SpliceRatio) $this->drawLine($XPos+$XOffset,$YPos+$YOffset,$PosX,$PosY,$Rc,$Gc,$Bc); if ( $XLineLast != "" ) $this->drawLine($XLineLast,$YLineLast,$PosX,$PosY,$Rc,$Gc,$Bc); $XLineLast = $PosX; $YLineLast = $PosY; } $TopPlots[$Key][] = round($XPos + $XOffset); $TopPlots[$Key][] = round($YPos + $YOffset); $Angle = $iAngle; } $PolyPlots = $TopPlots; /* Draw Top polygons */ foreach ($PolyPlots as $Key => $Value) { if ( !$AllBlack ) $C_GraphLo = $this->AllocateColor($this->Picture,$this->Palette[$Key]["R"],$this->Palette[$Key]["G"],$this->Palette[$Key]["B"]); else $C_GraphLo = $this->AllocateColor($this->Picture,$this->ShadowRColor,$this->ShadowGColor,$this->ShadowBColor); imagefilledpolygon($this->Picture,$PolyPlots[$Key],(count($PolyPlots[$Key])+1)/2,$C_GraphLo); } $this->ShadowActive = $ShadowStatus; } /* This function draw a pseudo-3D pie chart */ function drawPieGraph($Data,$DataDescription,$XPos,$YPos,$Radius=100,$DrawLabels=PIE_NOLABEL,$EnhanceColors=TRUE,$Skew=60,$SpliceHeight=20,$SpliceDistance=0,$Decimals=0) { /* Validate the Data and DataDescription array */ $this->validateDataDescription("drawPieGraph",$DataDescription,FALSE); $this->validateData("drawPieGraph",$Data); /* Determine pie sum */ $Series = 0; $PieSum = 0; $rPieSum = 0; foreach ( $DataDescription["Values"] as $Key2 => $ColName ) { if ( $ColName != $DataDescription["Position"] ) { $Series++; foreach ( $Data as $Key => $Values ) if ( isset($Data[$Key][$ColName])) { if ( $Data[$Key][$ColName] == 0 ) { $iValues[] = 0; $rValues[] = 0; $iLabels[] = $Data[$Key][$DataDescription["Position"]]; } // Removed : $PieSum++; $rValues[] = 1; else { $PieSum += $Data[$Key][$ColName]; $iValues[] = $Data[$Key][$ColName]; $iLabels[] = $Data[$Key][$DataDescription["Position"]]; $rValues[] = $Data[$Key][$ColName]; $rPieSum += $Data[$Key][$ColName];} } } } /* Validate serie */ if ( $Series != 1 ) RaiseFatal("Pie chart can only accept one serie of data."); $SpliceDistanceRatio = $SpliceDistance; $SkewHeight = ($Radius * $Skew) / 100; $SpliceRatio = (360 - $SpliceDistanceRatio * count($iValues) ) / $PieSum; $SplicePercent = 100 / $PieSum; $rSplicePercent = 100 / $rPieSum; /* Calculate all polygons */ $Angle = 0; $CDev = 5; $TopPlots = ""; $BotPlots = ""; $aTopPlots = ""; $aBotPlots = ""; foreach($iValues as $Key => $Value) { $XCenterPos = cos(($Angle-$CDev+($Value*$SpliceRatio+$SpliceDistanceRatio)/2) * 3.1418 / 180 ) * $SpliceDistance + $XPos; $YCenterPos = sin(($Angle-$CDev+($Value*$SpliceRatio+$SpliceDistanceRatio)/2) * 3.1418 / 180 ) * $SpliceDistance + $YPos; $XCenterPos2 = cos(($Angle+$CDev+($Value*$SpliceRatio+$SpliceDistanceRatio)/2) * 3.1418 / 180 ) * $SpliceDistance + $XPos; $YCenterPos2 = sin(($Angle+$CDev+($Value*$SpliceRatio+$SpliceDistanceRatio)/2) * 3.1418 / 180 ) * $SpliceDistance + $YPos; $TopPlots[$Key][] = round($XCenterPos); $BotPlots[$Key][] = round($XCenterPos); $TopPlots[$Key][] = round($YCenterPos); $BotPlots[$Key][] = round($YCenterPos + $SpliceHeight); $aTopPlots[$Key][] = $XCenterPos; $aBotPlots[$Key][] = $XCenterPos; $aTopPlots[$Key][] = $YCenterPos; $aBotPlots[$Key][] = $YCenterPos + $SpliceHeight; /* Process labels position & size */ $Caption = ""; if ( !($DrawLabels == PIE_NOLABEL) ) { $TAngle = $Angle+($Value*$SpliceRatio/2); if ($DrawLabels == PIE_PERCENTAGE) $Caption = (round($rValues[$Key] * pow(10,$Decimals) * $rSplicePercent)/pow(10,$Decimals))."%"; elseif ($DrawLabels == PIE_LABELS) $Caption = $iLabels[$Key]; elseif ($DrawLabels == PIE_PERCENTAGE_LABEL) $Caption = $iLabels[$Key]."\r\n".(round($Value * pow(10,$Decimals) * $SplicePercent)/pow(10,$Decimals))."%"; $Position = imageftbbox($this->FontSize,0,$this->FontName,$Caption); $TextWidth = $Position[2]-$Position[0]; $TextHeight = abs($Position[1])+abs($Position[3]); $TX = cos(($TAngle) * 3.1418 / 180 ) * ($Radius + 10)+ $XPos; if ( $TAngle > 0 && $TAngle < 180 ) $TY = sin(($TAngle) * 3.1418 / 180 ) * ($SkewHeight + 10) + $YPos + $SpliceHeight + 4; else $TY = sin(($TAngle) * 3.1418 / 180 ) * ($SkewHeight + 4) + $YPos - ($TextHeight/2); if ( $TAngle > 90 && $TAngle < 270 ) $TX = $TX - $TextWidth; $C_TextColor = $this->AllocateColor($this->Picture,70,70,70); imagettftext($this->Picture,$this->FontSize,0,$TX,$TY,$C_TextColor,$this->FontName,$Caption); } /* Process pie slices */ for($iAngle=$Angle;$iAngle<=$Angle+$Value*$SpliceRatio;$iAngle=$iAngle+.5) { $TopX = cos($iAngle * 3.1418 / 180 ) * $Radius + $XPos; $TopY = sin($iAngle * 3.1418 / 180 ) * $SkewHeight + $YPos; $TopPlots[$Key][] = round($TopX); $BotPlots[$Key][] = round($TopX); $TopPlots[$Key][] = round($TopY); $BotPlots[$Key][] = round($TopY + $SpliceHeight); $aTopPlots[$Key][] = $TopX; $aBotPlots[$Key][] = $TopX; $aTopPlots[$Key][] = $TopY; $aBotPlots[$Key][] = $TopY + $SpliceHeight; } $TopPlots[$Key][] = round($XCenterPos2); $BotPlots[$Key][] = round($XCenterPos2); $TopPlots[$Key][] = round($YCenterPos2); $BotPlots[$Key][] = round($YCenterPos2 + $SpliceHeight); $aTopPlots[$Key][] = $XCenterPos2; $aBotPlots[$Key][] = $XCenterPos2; $aTopPlots[$Key][] = $YCenterPos2; $aBotPlots[$Key][] = $YCenterPos2 + $SpliceHeight; $Angle = $iAngle + $SpliceDistanceRatio; } /* Draw Bottom polygons */ foreach($iValues as $Key => $Value) { $C_GraphLo = $this->AllocateColor($this->Picture,$this->Palette[$Key]["R"],$this->Palette[$Key]["G"],$this->Palette[$Key]["B"],-20); imagefilledpolygon($this->Picture,$BotPlots[$Key],(count($BotPlots[$Key])+1)/2,$C_GraphLo); if ( $EnhanceColors ) { $En = -10; } else { $En = 0; } for($j=0;$j<=count($aBotPlots[$Key])-4;$j=$j+2) $this->drawLine($aBotPlots[$Key][$j],$aBotPlots[$Key][$j+1],$aBotPlots[$Key][$j+2],$aBotPlots[$Key][$j+3],$this->Palette[$Key]["R"]+$En,$this->Palette[$Key]["G"]+$En,$this->Palette[$Key]["B"]+$En); } /* Draw pie layers */ if ( $EnhanceColors ) { $ColorRatio = 30 / $SpliceHeight; } else { $ColorRatio = 25 / $SpliceHeight; } for($i=$SpliceHeight-1;$i>=1;$i--) { foreach($iValues as $Key => $Value) { $C_GraphLo = $this->AllocateColor($this->Picture,$this->Palette[$Key]["R"],$this->Palette[$Key]["G"],$this->Palette[$Key]["B"],-10); $Plots = ""; $Plot = 0; foreach($TopPlots[$Key] as $Key2 => $Value2) { $Plot++; if ( $Plot % 2 == 1 ) $Plots[] = $Value2; else $Plots[] = $Value2+$i; } imagefilledpolygon($this->Picture,$Plots,(count($Plots)+1)/2,$C_GraphLo); $Index = count($Plots); if ($EnhanceColors ) {$ColorFactor = -20 + ($SpliceHeight - $i) * $ColorRatio; } else { $ColorFactor = 0; } $this->drawAntialiasPixel($Plots[0],$Plots[1],$this->Palette[$Key]["R"]+$ColorFactor,$this->Palette[$Key]["G"]+$ColorFactor,$this->Palette[$Key]["B"]+$ColorFactor); $this->drawAntialiasPixel($Plots[2],$Plots[3],$this->Palette[$Key]["R"]+$ColorFactor,$this->Palette[$Key]["G"]+$ColorFactor,$this->Palette[$Key]["B"]+$ColorFactor); $this->drawAntialiasPixel($Plots[$Index-4],$Plots[$Index-3],$this->Palette[$Key]["R"]+$ColorFactor,$this->Palette[$Key]["G"]+$ColorFactor,$this->Palette[$Key]["B"]+$ColorFactor); } } /* Draw Top polygons */ for($Key=count($iValues)-1;$Key>=0;$Key--) { $C_GraphLo = $this->AllocateColor($this->Picture,$this->Palette[$Key]["R"],$this->Palette[$Key]["G"],$this->Palette[$Key]["B"]); imagefilledpolygon($this->Picture,$TopPlots[$Key],(count($TopPlots[$Key])+1)/2,$C_GraphLo); if ( $EnhanceColors ) { $En = 10; } else { $En = 0; } for($j=0;$j<=count($aTopPlots[$Key])-4;$j=$j+2) $this->drawLine($aTopPlots[$Key][$j],$aTopPlots[$Key][$j+1],$aTopPlots[$Key][$j+2],$aTopPlots[$Key][$j+3],$this->Palette[$Key]["R"]+$En,$this->Palette[$Key]["G"]+$En,$this->Palette[$Key]["B"]+$En); } } /* This function can be used to set the background color */ function drawBackground($R,$G,$B) { if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $C_Background = $this->AllocateColor($this->Picture,$R,$G,$B); imagefilledrectangle($this->Picture,0,0,$this->XSize,$this->YSize,$C_Background); } /* This function can be used to set the background color */ function drawGraphAreaGradient($R,$G,$B,$Decay,$Target=TARGET_GRAPHAREA) { if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } if ( $Target == TARGET_GRAPHAREA ) { $X1 = $this->GArea_X1+1; $X2 = $this->GArea_X2-1; $Y1 = $this->GArea_Y1+1; $Y2 = $this->GArea_Y2; } if ( $Target == TARGET_BACKGROUND ) { $X1 = 0; $X2 = $this->XSize; $Y1 = 0; $Y2 = $this->YSize; } /* Positive gradient */ if ( $Decay > 0 ) { $YStep = ($Y2 - $Y1 - 2) / $Decay; for($i=0;$i<=$Decay;$i++) { $R-=1;$G-=1;$B-=1; $Yi1 = $Y1 + ( $i * $YStep ); $Yi2 = ceil( $Yi1 + ( $i * $YStep ) + $YStep ); if ( $Yi2 >= $Yi2 ) { $Yi2 = $Y2-1; } $C_Background = $this->AllocateColor($this->Picture,$R,$G,$B); imagefilledrectangle($this->Picture,$X1,$Yi1,$X2,$Yi2,$C_Background); } } /* Negative gradient */ if ( $Decay < 0 ) { $YStep = ($Y2 - $Y1 - 2) / -$Decay; $Yi1 = $Y1; $Yi2 = $Y1+$YStep; for($i=-$Decay;$i>=0;$i--) { $R+=1;$G+=1;$B+=1; $C_Background = $this->AllocateColor($this->Picture,$R,$G,$B); imagefilledrectangle($this->Picture,$X1,$Yi1,$X2,$Yi2,$C_Background); $Yi1+= $YStep; $Yi2+= $YStep; if ( $Yi2 >= $Yi2 ) { $Yi2 = $Y2-1; } } } } /* This function create a rectangle with antialias */ function drawRectangle($X1,$Y1,$X2,$Y2,$R,$G,$B) { if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $C_Rectangle = $this->AllocateColor($this->Picture,$R,$G,$B); $X1=$X1-.2;$Y1=$Y1-.2; $X2=$X2+.2;$Y2=$Y2+.2; $this->drawLine($X1,$Y1,$X2,$Y1,$R,$G,$B); $this->drawLine($X2,$Y1,$X2,$Y2,$R,$G,$B); $this->drawLine($X2,$Y2,$X1,$Y2,$R,$G,$B); $this->drawLine($X1,$Y2,$X1,$Y1,$R,$G,$B); } /* This function create a filled rectangle with antialias */ function drawFilledRectangle($X1,$Y1,$X2,$Y2,$R,$G,$B,$DrawBorder=TRUE,$Alpha=100,$NoFallBack=FALSE) { if ( $X2 < $X1 ) { list($X1, $X2) = array($X2, $X1); } if ( $Y2 < $Y1 ) { list($Y1, $Y2) = array($Y2, $Y1); } if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } if ( $Alpha == 100 ) { /* Process shadows */ if ( $this->ShadowActive && !$NoFallBack ) { $this->drawFilledRectangle($X1+$this->ShadowXDistance,$Y1+$this->ShadowYDistance,$X2+$this->ShadowXDistance,$Y2+$this->ShadowYDistance,$this->ShadowRColor,$this->ShadowGColor,$this->ShadowBColor,FALSE,$this->ShadowAlpha,TRUE); if ( $this->ShadowBlur != 0 ) { $AlphaDecay = ($this->ShadowAlpha / $this->ShadowBlur); for($i=1; $i<=$this->ShadowBlur; $i++) $this->drawFilledRectangle($X1+$this->ShadowXDistance-$i/2,$Y1+$this->ShadowYDistance-$i/2,$X2+$this->ShadowXDistance-$i/2,$Y2+$this->ShadowYDistance-$i/2,$this->ShadowRColor,$this->ShadowGColor,$this->ShadowBColor,FALSE,$this->ShadowAlpha-$AlphaDecay*$i,TRUE); for($i=1; $i<=$this->ShadowBlur; $i++) $this->drawFilledRectangle($X1+$this->ShadowXDistance+$i/2,$Y1+$this->ShadowYDistance+$i/2,$X2+$this->ShadowXDistance+$i/2,$Y2+$this->ShadowYDistance+$i/2,$this->ShadowRColor,$this->ShadowGColor,$this->ShadowBColor,FALSE,$this->ShadowAlpha-$AlphaDecay*$i,TRUE); } } $C_Rectangle = $this->AllocateColor($this->Picture,$R,$G,$B); imagefilledrectangle($this->Picture,round($X1),round($Y1),round($X2),round($Y2),$C_Rectangle); } else { $LayerWidth = abs($X2-$X1)+2; $LayerHeight = abs($Y2-$Y1)+2; $this->Layers[0] = imagecreatetruecolor($LayerWidth,$LayerHeight); $C_White = $this->AllocateColor($this->Layers[0],255,255,255); imagefilledrectangle($this->Layers[0],0,0,$LayerWidth,$LayerHeight,$C_White); imagecolortransparent($this->Layers[0],$C_White); $C_Rectangle = $this->AllocateColor($this->Layers[0],$R,$G,$B); imagefilledrectangle($this->Layers[0],round(1),round(1),round($LayerWidth-1),round($LayerHeight-1),$C_Rectangle); imagecopymerge($this->Picture,$this->Layers[0],round(min($X1,$X2)-1),round(min($Y1,$Y2)-1),0,0,$LayerWidth,$LayerHeight,$Alpha); imagedestroy($this->Layers[0]); } if ( $DrawBorder ) { $ShadowSettings = $this->ShadowActive; $this->ShadowActive = FALSE; $this->drawRectangle($X1,$Y1,$X2,$Y2,$R,$G,$B); $this->ShadowActive = $ShadowSettings; } } /* This function create a rectangle with rounded corners and antialias */ function drawRoundedRectangle($X1,$Y1,$X2,$Y2,$Radius,$R,$G,$B) { if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $C_Rectangle = $this->AllocateColor($this->Picture,$R,$G,$B); $Step = 90 / ((3.1418 * $Radius)/2); for($i=0;$i<=90;$i=$i+$Step) { $X = cos(($i+180)*3.1418/180) * $Radius + $X1 + $Radius; $Y = sin(($i+180)*3.1418/180) * $Radius + $Y1 + $Radius; $this->drawAntialiasPixel($X,$Y,$R,$G,$B); $X = cos(($i-90)*3.1418/180) * $Radius + $X2 - $Radius; $Y = sin(($i-90)*3.1418/180) * $Radius + $Y1 + $Radius; $this->drawAntialiasPixel($X,$Y,$R,$G,$B); $X = cos(($i)*3.1418/180) * $Radius + $X2 - $Radius; $Y = sin(($i)*3.1418/180) * $Radius + $Y2 - $Radius; $this->drawAntialiasPixel($X,$Y,$R,$G,$B); $X = cos(($i+90)*3.1418/180) * $Radius + $X1 + $Radius; $Y = sin(($i+90)*3.1418/180) * $Radius + $Y2 - $Radius; $this->drawAntialiasPixel($X,$Y,$R,$G,$B); } $X1=$X1-.2;$Y1=$Y1-.2; $X2=$X2+.2;$Y2=$Y2+.2; $this->drawLine($X1+$Radius,$Y1,$X2-$Radius,$Y1,$R,$G,$B); $this->drawLine($X2,$Y1+$Radius,$X2,$Y2-$Radius,$R,$G,$B); $this->drawLine($X2-$Radius,$Y2,$X1+$Radius,$Y2,$R,$G,$B); $this->drawLine($X1,$Y2-$Radius,$X1,$Y1+$Radius,$R,$G,$B); } /* This function create a filled rectangle with rounded corners and antialias */ function drawFilledRoundedRectangle($X1,$Y1,$X2,$Y2,$Radius,$R,$G,$B) { if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $C_Rectangle = $this->AllocateColor($this->Picture,$R,$G,$B); $Step = 90 / ((3.1418 * $Radius)/2); for($i=0;$i<=90;$i=$i+$Step) { $Xi1 = cos(($i+180)*3.1418/180) * $Radius + $X1 + $Radius; $Yi1 = sin(($i+180)*3.1418/180) * $Radius + $Y1 + $Radius; $Xi2 = cos(($i-90)*3.1418/180) * $Radius + $X2 - $Radius; $Yi2 = sin(($i-90)*3.1418/180) * $Radius + $Y1 + $Radius; $Xi3 = cos(($i)*3.1418/180) * $Radius + $X2 - $Radius; $Yi3 = sin(($i)*3.1418/180) * $Radius + $Y2 - $Radius; $Xi4 = cos(($i+90)*3.1418/180) * $Radius + $X1 + $Radius; $Yi4 = sin(($i+90)*3.1418/180) * $Radius + $Y2 - $Radius; imageline($this->Picture,$Xi1,$Yi1,$X1+$Radius,$Yi1,$C_Rectangle); imageline($this->Picture,$X2-$Radius,$Yi2,$Xi2,$Yi2,$C_Rectangle); imageline($this->Picture,$X2-$Radius,$Yi3,$Xi3,$Yi3,$C_Rectangle); imageline($this->Picture,$Xi4,$Yi4,$X1+$Radius,$Yi4,$C_Rectangle); $this->drawAntialiasPixel($Xi1,$Yi1,$R,$G,$B); $this->drawAntialiasPixel($Xi2,$Yi2,$R,$G,$B); $this->drawAntialiasPixel($Xi3,$Yi3,$R,$G,$B); $this->drawAntialiasPixel($Xi4,$Yi4,$R,$G,$B); } imagefilledrectangle($this->Picture,$X1,$Y1+$Radius,$X2,$Y2-$Radius,$C_Rectangle); imagefilledrectangle($this->Picture,$X1+$Radius,$Y1,$X2-$Radius,$Y2,$C_Rectangle); $X1=$X1-.2;$Y1=$Y1-.2; $X2=$X2+.2;$Y2=$Y2+.2; $this->drawLine($X1+$Radius,$Y1,$X2-$Radius,$Y1,$R,$G,$B); $this->drawLine($X2,$Y1+$Radius,$X2,$Y2-$Radius,$R,$G,$B); $this->drawLine($X2-$Radius,$Y2,$X1+$Radius,$Y2,$R,$G,$B); $this->drawLine($X1,$Y2-$Radius,$X1,$Y1+$Radius,$R,$G,$B); } /* This function create a circle with antialias */ function drawCircle($Xc,$Yc,$Height,$R,$G,$B,$Width=0) { if ( $Width == 0 ) { $Width = $Height; } if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $C_Circle = $this->AllocateColor($this->Picture,$R,$G,$B); $Step = 360 / (2 * 3.1418 * max($Width,$Height)); for($i=0;$i<=360;$i=$i+$Step) { $X = cos($i*3.1418/180) * $Height + $Xc; $Y = sin($i*3.1418/180) * $Width + $Yc; $this->drawAntialiasPixel($X,$Y,$R,$G,$B); } } /* This function create a filled circle/ellipse with antialias */ function drawFilledCircle($Xc,$Yc,$Height,$R,$G,$B,$Width=0) { if ( $Width == 0 ) { $Width = $Height; } if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $C_Circle = $this->AllocateColor($this->Picture,$R,$G,$B); $Step = 360 / (2 * 3.1418 * max($Width,$Height)); for($i=90;$i<=270;$i=$i+$Step) { $X1 = cos($i*3.1418/180) * $Height + $Xc; $Y1 = sin($i*3.1418/180) * $Width + $Yc; $X2 = cos((180-$i)*3.1418/180) * $Height + $Xc; $Y2 = sin((180-$i)*3.1418/180) * $Width + $Yc; $this->drawAntialiasPixel($X1-1,$Y1-1,$R,$G,$B); $this->drawAntialiasPixel($X2-1,$Y2-1,$R,$G,$B); if ( ($Y1-1) > $Yc - max($Width,$Height) ) imageline($this->Picture,$X1,$Y1-1,$X2-1,$Y2-1,$C_Circle); } } /* This function will draw a filled ellipse */ function drawEllipse($Xc,$Yc,$Height,$Width,$R,$G,$B) { $this->drawCircle($Xc,$Yc,$Height,$R,$G,$B,$Width); } /* This function will draw an ellipse */ function drawFilledEllipse($Xc,$Yc,$Height,$Width,$R,$G,$B) { $this->drawFilledCircle($Xc,$Yc,$Height,$R,$G,$B,$Width); } /* This function create a line with antialias */ function drawLine($X1,$Y1,$X2,$Y2,$R,$G,$B,$GraphFunction=FALSE) { if ( $this->LineDotSize > 1 ) { $this->drawDottedLine($X1,$Y1,$X2,$Y2,$this->LineDotSize,$R,$G,$B,$GraphFunction); return(0); } if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $Distance = sqrt(($X2-$X1)*($X2-$X1)+($Y2-$Y1)*($Y2-$Y1)); if ( $Distance == 0 ) return(-1); $XStep = ($X2-$X1) / $Distance; $YStep = ($Y2-$Y1) / $Distance; for($i=0;$i<=$Distance;$i++) { $X = $i * $XStep + $X1; $Y = $i * $YStep + $Y1; if ( ($X >= $this->GArea_X1 && $X <= $this->GArea_X2 && $Y >= $this->GArea_Y1 && $Y <= $this->GArea_Y2) || !$GraphFunction ) { if ( $this->LineWidth == 1 ) $this->drawAntialiasPixel($X,$Y,$R,$G,$B); else { $StartOffset = -($this->LineWidth/2); $EndOffset = ($this->LineWidth/2); for($j=$StartOffset;$j<=$EndOffset;$j++) $this->drawAntialiasPixel($X+$j,$Y+$j,$R,$G,$B); } } } } /* This function create a line with antialias */ function drawDottedLine($X1,$Y1,$X2,$Y2,$DotSize,$R,$G,$B,$GraphFunction=FALSE) { if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $Distance = sqrt(($X2-$X1)*($X2-$X1)+($Y2-$Y1)*($Y2-$Y1)); $XStep = ($X2-$X1) / $Distance; $YStep = ($Y2-$Y1) / $Distance; $DotIndex = 0; for($i=0;$i<=$Distance;$i++) { $X = $i * $XStep + $X1; $Y = $i * $YStep + $Y1; if ( $DotIndex <= $DotSize) { if ( ($X >= $this->GArea_X1 && $X <= $this->GArea_X2 && $Y >= $this->GArea_Y1 && $Y <= $this->GArea_Y2) || !$GraphFunction ) { if ( $this->LineWidth == 1 ) $this->drawAntialiasPixel($X,$Y,$R,$G,$B); else { $StartOffset = -($this->LineWidth/2); $EndOffset = ($this->LineWidth/2); for($j=$StartOffset;$j<=$EndOffset;$j++) $this->drawAntialiasPixel($X+$j,$Y+$j,$R,$G,$B); } } } $DotIndex++; if ( $DotIndex == $DotSize * 2 ) $DotIndex = 0; } } /* Load a PNG file and draw it over the chart */ function drawFromPNG($FileName,$X,$Y,$Alpha=100) { $this->drawFromPicture(1,$FileName,$X,$Y,$Alpha); } /* Load a GIF file and draw it over the chart */ function drawFromGIF($FileName,$X,$Y,$Alpha=100) { $this->drawFromPicture(2,$FileName,$X,$Y,$Alpha); } /* Load a JPEG file and draw it over the chart */ function drawFromJPG($FileName,$X,$Y,$Alpha=100) { $this->drawFromPicture(3,$FileName,$X,$Y,$Alpha); } /* Generic loader function for external pictures */ function drawFromPicture($PicType,$FileName,$X,$Y,$Alpha=100) { if ( file_exists($FileName)) { $Infos = getimagesize($FileName); $Width = $Infos[0]; $Height = $Infos[1]; if ( $PicType == 1 ) { $Raster = imagecreatefrompng($FileName); } if ( $PicType == 2 ) { $Raster = imagecreatefromgif($FileName); } if ( $PicType == 3 ) { $Raster = imagecreatefromjpeg($FileName); } imagecopymerge($this->Picture,$Raster,$X,$Y,0,0,$Width,$Height,$Alpha); imagedestroy($Raster); } } /* Draw an alpha pixel */ function drawAlphaPixel($X,$Y,$Alpha,$R,$G,$B) { if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } if ( $X < 0 || $Y < 0 || $X >= $this->XSize || $Y >= $this->YSize ) return(-1); $RGB2 = imagecolorat($this->Picture, $X, $Y); $R2 = ($RGB2 >> 16) & 0xFF; $G2 = ($RGB2 >> 8) & 0xFF; $B2 = $RGB2 & 0xFF; $iAlpha = (100 - $Alpha)/100; $Alpha = $Alpha / 100; $Ra = floor($R*$Alpha+$R2*$iAlpha); $Ga = floor($G*$Alpha+$G2*$iAlpha); $Ba = floor($B*$Alpha+$B2*$iAlpha); $C_Aliased = $this->AllocateColor($this->Picture,$Ra,$Ga,$Ba); imagesetpixel($this->Picture,$X,$Y,$C_Aliased); } /* Color helper */ function AllocateColor($Picture,$R,$G,$B,$Factor=0) { $R = $R + $Factor; $G = $G + $Factor; $B = $B + $Factor; if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } return(imagecolorallocate($Picture,$R,$G,$B)); } /* Add a border to the picture */ function addBorder($Size=3,$R=0,$G=0,$B=0) { $Width = $this->XSize+2*$Size; $Height = $this->YSize+2*$Size; $Resampled = imagecreatetruecolor($Width,$Height); $C_Background = $this->AllocateColor($Resampled,$R,$G,$B); imagefilledrectangle($Resampled,0,0,$Width,$Height,$C_Background); imagecopy($Resampled,$this->Picture,$Size,$Size,0,0,$this->XSize,$this->YSize); imagedestroy($this->Picture); $this->XSize = $Width; $this->YSize = $Height; $this->Picture = imagecreatetruecolor($this->XSize,$this->YSize); $C_White = $this->AllocateColor($this->Picture,255,255,255); imagefilledrectangle($this->Picture,0,0,$this->XSize,$this->YSize,$C_White); imagecolortransparent($this->Picture,$C_White); imagecopy($this->Picture,$Resampled,0,0,0,0,$this->XSize,$this->YSize); } /* Render the current picture to a file */ function Render($FileName) { if ( $this->ErrorReporting ) $this->printErrors($this->ErrorInterface); /* Save image map if requested */ if ( $this->BuildMap ) $this->SaveImageMap(); imagepng($this->Picture,$FileName); } /* Render the current picture to STDOUT */ function Stroke() { if ( $this->ErrorReporting ) $this->printErrors("GD"); /* Save image map if requested */ if ( $this->BuildMap ) $this->SaveImageMap(); header('Content-type: image/png'); imagepng($this->Picture); } /* Private functions for internal processing */ function drawAntialiasPixel($X,$Y,$R,$G,$B,$Alpha=100,$NoFallBack=FALSE) { /* Process shadows */ if ( $this->ShadowActive && !$NoFallBack ) { $this->drawAntialiasPixel($X+$this->ShadowXDistance,$Y+$this->ShadowYDistance,$this->ShadowRColor,$this->ShadowGColor,$this->ShadowBColor,$this->ShadowAlpha,TRUE); if ( $this->ShadowBlur != 0 ) { $AlphaDecay = ($this->ShadowAlpha / $this->ShadowBlur); for($i=1; $i<=$this->ShadowBlur; $i++) $this->drawAntialiasPixel($X+$this->ShadowXDistance-$i/2,$Y+$this->ShadowYDistance-$i/2,$this->ShadowRColor,$this->ShadowGColor,$this->ShadowBColor,$this->ShadowAlpha-$AlphaDecay*$i,TRUE); for($i=1; $i<=$this->ShadowBlur; $i++) $this->drawAntialiasPixel($X+$this->ShadowXDistance+$i/2,$Y+$this->ShadowYDistance+$i/2,$this->ShadowRColor,$this->ShadowGColor,$this->ShadowBColor,$this->ShadowAlpha-$AlphaDecay*$i,TRUE); } } if ( $R < 0 ) { $R = 0; } if ( $R > 255 ) { $R = 255; } if ( $G < 0 ) { $G = 0; } if ( $G > 255 ) { $G = 255; } if ( $B < 0 ) { $B = 0; } if ( $B > 255 ) { $B = 255; } $Plot = ""; $Xi = floor($X); $Yi = floor($Y); if ( $Xi == $X && $Yi == $Y) { if ( $Alpha == 100 ) { $C_Aliased = $this->AllocateColor($this->Picture,$R,$G,$B); imagesetpixel($this->Picture,$X,$Y,$C_Aliased); } else $this->drawAlphaPixel($X,$Y,$Alpha,$R,$G,$B); } else { $Alpha1 = (((1 - ($X - floor($X))) * (1 - ($Y - floor($Y))) * 100) / 100) * $Alpha; if ( $Alpha1 > $this->AntialiasQuality ) { $this->drawAlphaPixel($Xi,$Yi,$Alpha1,$R,$G,$B); } $Alpha2 = ((($X - floor($X)) * (1 - ($Y - floor($Y))) * 100) / 100) * $Alpha; if ( $Alpha2 > $this->AntialiasQuality ) { $this->drawAlphaPixel($Xi+1,$Yi,$Alpha2,$R,$G,$B); } $Alpha3 = (((1 - ($X - floor($X))) * ($Y - floor($Y)) * 100) / 100) * $Alpha; if ( $Alpha3 > $this->AntialiasQuality ) { $this->drawAlphaPixel($Xi,$Yi+1,$Alpha3,$R,$G,$B); } $Alpha4 = ((($X - floor($X)) * ($Y - floor($Y)) * 100) / 100) * $Alpha; if ( $Alpha4 > $this->AntialiasQuality ) { $this->drawAlphaPixel($Xi+1,$Yi+1,$Alpha4,$R,$G,$B); } } } /* Validate data contained in the description array */ function validateDataDescription($FunctionName,&$DataDescription,$DescriptionRequired=TRUE) { if (!isset($DataDescription["Position"])) { $this->Errors[] = "[Warning] ".$FunctionName." - Y Labels are not set."; $DataDescription["Position"] = "Name"; } if ( $DescriptionRequired ) { if (!isset($DataDescription["Description"])) { $this->Errors[] = "[Warning] ".$FunctionName." - Series descriptions are not set."; foreach($DataDescription["Values"] as $key => $Value) { $DataDescription["Description"][$Value] = $Value; } } if (count($DataDescription["Description"]) < count($DataDescription["Values"])) { $this->Errors[] = "[Warning] ".$FunctionName." - Some series descriptions are not set."; foreach($DataDescription["Values"] as $key => $Value) { if ( !isset($DataDescription["Description"][$Value])) $DataDescription["Description"][$Value] = $Value; } } } } /* Validate data contained in the data array */ function validateData($FunctionName,&$Data) { $DataSummary = array(); foreach($Data as $key => $Values) { foreach($Values as $key2 => $Value) { if (!isset($DataSummary[$key2])) $DataSummary[$key2] = 1; else $DataSummary[$key2]++; } } if ( max($DataSummary) == 0 ) $this->Errors[] = "[Warning] ".$FunctionName." - No data set."; foreach($DataSummary as $key => $Value) { if ($Value < max($DataSummary)) { $this->Errors[] = "[Warning] ".$FunctionName." - Missing data in serie ".$key."."; } } } /* Print all error messages on the CLI or graphically */ function printErrors($Mode="CLI") { if (count($this->Errors) == 0) return(0); if ( $Mode == "CLI" ) { foreach($this->Errors as $key => $Value) echo $Value."\r\n"; } elseif ( $Mode == "GD" ) { $this->setLineStyle($Width=1); $MaxWidth = 0; foreach($this->Errors as $key => $Value) { $Position = imageftbbox($this->ErrorFontSize,0,$this->ErrorFontName,$Value); $TextWidth = $Position[2]-$Position[0]; if ( $TextWidth > $MaxWidth ) { $MaxWidth = $TextWidth; } } $this->drawFilledRoundedRectangle($this->XSize-($MaxWidth+20),$this->YSize-(20+(($this->ErrorFontSize+4)*count($this->Errors))),$this->XSize-10,$this->YSize-10,6,233,185,185); $this->drawRoundedRectangle($this->XSize-($MaxWidth+20),$this->YSize-(20+(($this->ErrorFontSize+4)*count($this->Errors))),$this->XSize-10,$this->YSize-10,6,193,145,145); $C_TextColor = $this->AllocateColor($this->Picture,133,85,85); $YPos = $this->YSize - (18 + (count($this->Errors)-1) * ($this->ErrorFontSize + 4)); foreach($this->Errors as $key => $Value) { imagettftext($this->Picture,$this->ErrorFontSize,0,$this->XSize-($MaxWidth+15),$YPos,$C_TextColor,$this->ErrorFontName,$Value); $YPos = $YPos + ($this->ErrorFontSize + 4); } } } /* Activate the image map creation process */ function setImageMap($Mode=TRUE,$GraphID="MyGraph") { $this->BuildMap = $Mode; $this->MapID = $GraphID; } /* Add a box into the image map */ function addToImageMap($X1,$Y1,$X2,$Y2,$SerieName,$Value,$CallerFunction) { if ( $this->MapFunction == NULL || $this->MapFunction == $CallerFunction ) { $this->ImageMap[] = round($X1).",".round($Y1).",".round($X2).",".round($Y2).",".$SerieName.",".$Value; $this->MapFunction = $CallerFunction; } } /* Load and cleanup the image map from disk */ function getImageMap($MapName,$Flush=TRUE) { /* Strip HTML query strings */ $Values = $this->tmpFolder.$MapName; $Value = split("\?",$Values); $FileName = $Value[0]; if ( file_exists($FileName) ) { $Handle = fopen($FileName, "r"); $MapContent = fread($Handle, filesize($FileName)); fclose($Handle); echo $MapContent; if ( $Flush ) unlink($FileName); exit(); } else { header("HTTP/1.0 404 Not Found"); exit(); } } /* Save the image map to the disk */ function SaveImageMap() { if ( !$this->BuildMap ) { return(-1); } if ( $this->ImageMap == NULL ) { $this->Errors[] = "[Warning] SaveImageMap - Image map is empty."; return(-1); } $Handle = fopen($this->tmpFolder.$this->MapID, 'w'); if ( !$Handle ) { $this->Errors[] = "[Warning] SaveImageMap - Cannot save the image map."; return(-1); } else { foreach($this->ImageMap as $Key => $Value) fwrite($Handle, htmlentities($Value)."\r"); } fclose ($Handle); } /* Convert seconds to a time format string */ function ToTime($Value) { $Hour = floor($Value/3600); $Minute = floor(($Value - $Hour*3600)/60); $Second = floor($Value - $Hour*3600 - $Minute*60); if (strlen($Hour) == 1 ) { $Hour = "0".$Hour; } if (strlen($Minute) == 1 ) { $Minute = "0".$Minute; } if (strlen($Second) == 1 ) { $Second = "0".$Second; } return($Hour.":".$Minute.":".$Second); } /* Convert to metric system */ function ToMetric($Value) { $Go = floor($Value/1000000000); $Mo = floor(($Value - $Go*1000000000)/1000000); $Ko = floor(($Value - $Go*1000000000 - $Mo*1000000)/1000); $o = floor($Value - $Go*1000000000 - $Mo*1000000 - $Ko*1000); if ($Go != 0) { return($Go.".".$Mo."g"); } if ($Mo != 0) { return($Mo.".".$ko."m"); } if ($Ko != 0) { return($Ko.".".$o)."k"; } return($o); } /* Convert to curency */ function ToCurrency($Value) { $Go = floor($Value/1000000000); $Mo = floor(($Value - $Go*1000000000)/1000000); $Ko = floor(($Value - $Go*1000000000 - $Mo*1000000)/1000); $o = floor($Value - $Go*1000000000 - $Mo*1000000 - $Ko*1000); if ( strlen($o) == 1 ) { $o = "00".$o; } if ( strlen($o) == 2 ) { $o = "0".$o; } $ResultString = $o; if ( $Ko != 0 ) { $ResultString = $Ko.".".$ResultString; } if ( $Mo != 0 ) { $ResultString = $Mo.".".$ResultString; } if ( $Go != 0 ) { $ResultString = $Go.".".$ResultString; } $ResultString = $this->Currency.$ResultString; return($ResultString); } /* Set date format for axis labels */ function setDateFormat($Format) { $this->DateFormat = $Format; } /* Convert TS to a date format string */ function ToDate($Value) { return(date($this->DateFormat,$Value)); } /* Check if a number is a full integer (for scaling) */ function isRealInt($Value) { if ($Value == floor($Value)) return(TRUE); return(FALSE); } } function RaiseFatal($Message) { echo "[FATAL] ".$Message."\r\n"; exit(); } ?>gosa-core-2.7.4/include/class_filterNOACL.inc0000644000175000017500000000100411600301426017370 0ustar mikemikeget_ldap_link(TRUE); $flag= GL_NO_ACL_CHECK | GL_SIZELIMIT | (($scope == "sub")?GL_SUBSEARCH:0); $result= filterLDAP::get_list($base, $filter, $attributes, $category, $objectStorage, $flag); $result = (filterLDAPBlacklist::filterByBlacklist($result)); return $result; } } ?> gosa-core-2.7.4/include/class_filterLDAP.inc0000644000175000017500000000754611472445244017313 0ustar mikemikeget_ldap_link(TRUE); $flag= ($scope == "sub")?GL_SUBSEARCH:0; $result= filterLDAP::get_list($base, $filter, $attributes, $category, $objectStorage, $flag | GL_SIZELIMIT); return $result; } static function get_list($base, $filter, $attributes, $category, $objectStorage, $flags= GL_SUBSEARCH) { $ui= session::global_get('ui'); $config= session::global_get('config'); // Move to arrays for category and objectStorage if (!is_array($category)) { $category= array($category); } // Store in base - i.e. is a rdn value empty? $storeOnBase= count($objectStorage) == 1 && empty($objectStorage[0]); $method= ($storeOnBase && !($flags & GL_SUBSEARCH))?"ls":"search"; // Initialize search bases $bases= array(); // Get list of sub bases to search on if ($storeOnBase) { $bases[$base]= ""; } else { foreach ($objectStorage as $oc) { // Handle empty storage locatios here, maybe get_ou() as returned an empty string. if(empty($oc)){ $bases[$base] = ""; continue; } $oc= preg_replace('/,$/', '', $oc); $tmp= explode(',', $oc); if (count($tmp) == 1) { preg_match('/([^=]+)=(.*)$/', $oc, $m); if ($flags & GL_SUBSEARCH) { $bases[$base][]= $m[1].":dn:=".$m[2]; } else { $bases["$oc,$base"][]= $m[1].":dn:=".$m[2]; } } else { // No, there's no \, in pre defined RDN values preg_match('/^([^,]+),(.*)$/', $oc, $matches); preg_match('/([^=]+)=(.*)$/', $matches[1], $m); if ($flags & GL_SUBSEARCH) { $bases[$base][]= $m[1].":dn:=".$m[2]; } else { $bases[$matches[2].",$base"][]= $m[1].":dn:=".$m[2]; } } } } // Get LDAP link $ldap= $config->get_ldap_link($flags & GL_SIZELIMIT); // Do search for every base $result= array(); $limit_exceeded = FALSE; foreach($bases as $base => $dnFilters) { // Break if the size limit is exceeded if($limit_exceeded){ return($result); } // Switch to new base and search if (is_array($dnFilters)){ $dnFilter= "(|"; foreach ($dnFilters as $df) { $dnFilter.= "($df)"; } $dnFilter.= ")"; } else { $dnFilter= ""; } $ldap->cd($base); if ($method == "ls") { $ldap->ls("(&$filter$dnFilter)", $base, $attributes); } else { $ldap->search("(&$filter$dnFilter)", $attributes); } // Check for size limit exceeded messages for GUI feedback if (preg_match("/size limit/i", $ldap->get_error())){ session::set('limit_exceeded', TRUE); $limit_exceeded = TRUE; } /* Crawl through result entries and perform the migration to the result array */ while($attrs = $ldap->fetch()) { $dn= $ldap->getDN(); /* Convert dn into a printable format */ if ($flags & GL_CONVERT){ $attrs["dn"]= convert_department_dn($dn); } else { $attrs["dn"]= $dn; } /* Skip ACL checks if we are forced to skip those checks */ if($flags & GL_NO_ACL_CHECK){ $result[]= $attrs; }else{ /* Sort in every value that fits the permissions */ foreach ($category as $o){ if((preg_match("/\//",$o) && preg_match("/r/",$ui->get_permissions($dn,$o))) || (!preg_match("/\//",$o) && preg_match("/r/",$ui->get_category_permissions($dn, $o)))){ $result[]= $attrs; break; } } } } } return $result; } } ?> gosa-core-2.7.4/include/class_session.inc0000644000175000017500000001425311424277773017050 0ustar mikemike gosa-core-2.7.4/include/class_sortableListing.inc0000644000175000017500000004766011656430600020525 0ustar mikemikesetListData($data, $displayData); // Get list of used IDs if(!session::is_set('sortableListing_USED_IDS')){ session::set('sortableListing_USED_IDS',array()); } $usedIds = session::get('sortableListing_USED_IDS'); // Generate instance wide unique ID $id = ""; while($id == "" || in_array_strict($id, $usedIds)){ // Wait 1 msec to ensure that we definately get a new id if($id != "") usleep(1); $tmp= gettimeofday(); $id = 'l'.md5(microtime().$tmp['sec']); } // Only keep the last 10 list IDsi $usedIds = array_slice($usedIds, count($usedIds) -10, 10); $usedIds[] = $id; session::set('sortableListing_USED_IDS',$usedIds); $this->id = $id; // Set reorderable flag $this->reorderable= $reorderable; if (!$reorderable) { $this->sortData(); } } public function setReorderable($bool) { $this->reorderable= $bool; } public function setDefaultSortColumn($id) { $this->sortColumn = $id; } /* * * Examples * DatenARray ($data) * @param: array( arbitrary object, arbitrary object) * Datenarray will be manipulated by add, del and sort operations. According to this it will be returned from this widget. * The index of a data entry must correspond to the entry of the "display array" following. * DisplayArray ($displyData) * @param: array("eins" array( "data"=> array("Uno", "2", "x" ) , "zwei" array( "data"=> array("Due", "3", "y" ))) ; * label pointing on a list of columns that will be shown in the list. */ public function setListData($data, $displayData= null) { // Save data to display $this->setData($data); if (!$displayData) { $displayData= array(); foreach ($data as $key => $value) { $displayData[$key]= array("data" => array($value)); } } $this->setDisplayData($displayData); } //setting flat data private function setData($data) { $this->data= $data; } // collecting the display data - private function setDisplayData($data) { if (!is_array($data)) { trigger_error ("sortableList needs an array as data!"); } // Transfer information $this->displayData= array(); $this->modes= array(); $this->mapping= array(); foreach ($data as $key => $value) { $this->displayData[]= $value['data']; if (isset($value['mode'])) { $this->modes[]= $value['mode']; } } $this->keys= array_keys($data); // Create initial mapping if(count($this->keys)){ $this->mapping= range(0, abs(count($this->keys)-1)); } $this->current_mapping= $this->mapping; // Find the number of coluns reset($this->displayData); $first= current($this->displayData); if (is_array($first)) { $this->columns= count($first); } else { $this->columns= 1; } // Preset sort orders to 'down' for ($column= 0; $column<$this->columns; $column++) { if(!isset($this->sortDirection[$column])){ $this->sortDirection[$column]= true; } } } public function setWidth($width) { $this->width= $width; } public function setInstantDelete($flag) { $this->instantDelete= $flag; } public function setColorAlternate($flag) { $this->colorAlternate= $flag; } public function setEditable($flag) { $this->editable= $flag; } public function setDeleteable($flag) { $this->deleteable= $flag; } public function setHeight($height) { $this->height= $height; } public function setCssClass($css) { $this->cssclass= $css; } public function setHeader($header) { $this->header= $header; } public function setColspecs($specs) { $this->colspecs= $specs; } public function render() { $result= "

    \n"; $result.= "cssclass)?" class='".$this->cssclass."'":"").">\n"; $action_width= 0; if (strpos($this->acl, 'w') === false) { $edit_image= $this->editable?image("images/lists/edit-grey.png"):""; } else { $edit_image= $this->editable?image('images/lists/edit.png', "%ID", _("Edit this entry")):""; } if (strpos($this->acl, 'w') === false) { $delete_image= $this->deleteable?image('images/lists/trash-grey.png'):""; } else { $delete_image= $this->deleteable?image('images/lists/trash.png', "%ID", _("Delete this entry")):""; } // Do we need colspecs? $action_width= ($this->editable?30:0) + ($this->deleteable?30:0); if ($this->colspecs) { $result.= " \n"; for ($i= 0; $i<$this->columns; $i++) { if(isset($this->colspecs[$i]) && $this->colspecs[$i] != '*'){ $result.= " \n"; }else{ $result.= " \n"; } } // Extend by another column if we've actions specified if ($action_width) { $result.= " \n"; } $result.= " \n"; } // Do we need a header? if ($this->header) { $result.= " \n \n"; $first= " style='border-left:0'"; for ($i= 0; $i<$this->columns; $i++) { $link= "href='?plug=".$_GET['plug']."&PID=".$this->id."&act=SORT_$i'"; $sorter= ""; if ($i == $this->sortColumn){ $sorter= " ".image("images/lists/sort-".($this->sortDirection[$i]?"up":"down").".png", null, $this->sortDirection[$i]?_("Sort ascending"):_("Sort descending")); } if ($this->reorderable) { $result.= " ".(isset($this->header[$i])?$this->header[$i]:"").""; } else { $result.= " ".(isset($this->header[$i])?$this->header[$i]:"")."$sorter"; } $first= ""; } if ($action_width) { $result.= ""; } $result.= "\n \n \n"; } // Render table body if we've read permission $result.= " \n"; $reorderable= $this->reorderable?"":" style='cursor:default'"; if (strpos($this->acl, 'r') !== false) { foreach ($this->mapping as $nr => $row) { $editable= $this->editable?" onClick='$(\"edit_".$this->id."_$nr\").click()'":""; $id= ""; if (isset($this->modes[$row])) { switch ($this->modes[$row]) { case LIST_DISABLED: $id= " sortableListItemDisabled"; $editable= ""; break; case LIST_MARKED: $id= " sortableListItemMarked"; break; } } $result.= " \n"; $first= " style='border:0'"; foreach ($this->displayData[$row] as $column) { // Do NOT use the onClick statement for columns that contain links or buttons. if(preg_match("<.*type=.submit..*>", $column) || preg_match("", $column)){ $result.= " ".$column."\n"; }else{ $result.= " ".$column."\n"; } $first= ""; } if ($action_width) { $result.= ""; } $result.= " \n"; } } // Add spacer $result.= " "; $num= $action_width?$this->columns:$this->columns-1; for ($i= 0; $i<$num; $i++) { $result.= ""; } $result.= "\n"; $result.= " \n
     
    ".str_replace('%ID', "edit_".$this->id."_$nr", $edit_image). str_replace('%ID', "del_".$this->id."_$nr", $delete_image)."
    \n
    \n"; # $result.= " \n"; $result.= " \n"; $result.= " \n"; // Append script stuff if needed $result.= ''; return $result; } public function update() { // Filter GET with "act" attributes if (!$this->reorderable){ if(isset($_GET['act']) && isset($_GET['PID']) && $this->id == $_GET['PID']) { $key= validate($_GET['act']); if (preg_match('/^SORT_([0-9]+)$/', $key, $match)) { // Switch to new column or invert search order? $column= $match[1]; if ($this->sortColumn != $column) { $this->sortColumn= $column; } else { $this->sortDirection[$column]= !$this->sortDirection[$column]; } } } // Update mapping according to sort parameters $this->sortData(); } } public function save_object() { // Do not do anything if this is not our PID, or there's even no PID available... if(isset($_REQUEST['PID']) && $_REQUEST['PID'] != $this->id) { return; } // Do not do anything if we're not posted - or have no permission if (strpos($this->acl, 'w') !== false && isset($_POST['reorder_'.$this->id])){ if (isset($_POST['position_'.$this->id]) && is_numeric($_POST['position_'.$this->id])) { $this->scrollPosition= get_post('position_'.$this->id); } // Move requested? $move= get_post('reorder_'.$this->id); if ($move != "") { preg_match_all('/=([0-9]+)[&=]/', $move, $matches); $this->action= "reorder"; $tmp= array(); foreach ($matches[1] as $id => $row) { $tmp[$id]= $this->mapping[$row]; } $this->mapping= $tmp; $this->current_mapping= $matches[1]; $this->modified= true; return; } } // Delete requested? $this->action = ""; if (strpos($this->acl, 'd') !== false){ foreach ($_POST as $key => $value) { $value = get_post($key); if (preg_match('/^del_'.$this->id.'_([0-9]+)$/', $key, $matches)) { if(!isset($this->mapping[$matches[1]])) return; $this->active_index= $this->mapping[$matches[1]]; // Ignore request if mode requests it if (isset($this->modes[$this->active_index]) && $this->modes[$this->active_index] == LIST_DISABLED) { $this->active_index= null; continue; } // Set action $this->action= "delete"; // Remove value if requested if ($this->instantDelete) { $this->deleteEntry($this->active_index); } } } } // Edit requested? if (strpos($this->acl, 'w') !== false){ foreach ($_POST as $key => $value) { $value = get_post($key); if (preg_match('/^edit_'.$this->id.'_([0-9]+)$/', $key, $matches)) { if(!isset($this->mapping[$matches[1]])) return; $this->active_index= $this->mapping[$matches[1]]; // Ignore request if mode requests it if (isset($this->modes[$this->active_index]) && $this->modes[$this->active_index] == LIST_DISABLED) { $this->active_index= null; continue; } $this->action= "edit"; } } } } public function getAction() { // Do not do anything if we're not posted if(!isset($_POST['reorder_'.$this->id])) { return; } // For reordering, return current mapping if ($this->action == 'reorder') { return array("targets" => $this->current_mapping, "mapping" => $this->mapping, "action" => $this->action); } // Edit and delete $result= array("targets" => array($this->active_index), "action" => $this->action); return $result; } public function deleteEntry($id) { // Remove mapping $index= array_search($id, $this->mapping); if ($index !== false) { $target = $this->mapping[$index]; $key = $this->keys[$target]; unset($this->mapping[$index]); if(isset($this->displayData[$target])){ unset($this->displayData[$target]); unset($this->data[$key]); unset($this->keys[$target]); } $this->mapping= array_values($this->mapping); $this->modified= true; } } public function getMaintainedData() { $tmp= array(); foreach ($this->mapping as $src => $dst) { $realKey = $this->keys[$dst]; $tmp[$realKey] = $this->data[$realKey]; } return $tmp; } public function isModified() { return $this->modified; } public function setAcl($acl) { $this->acl= $acl; } public function sortingEnabled($bool = TRUE) { $this->sortingEnabled= $bool; } public function sortData() { if(!$this->sortingEnabled || !count($this->data)) return; // Extract data $tmp= array(); foreach($this->displayData as $key => $item) { if (isset($item[$this->sortColumn])){ $tmp[$key]= $item[$this->sortColumn]; } else { $tmp[$key]= ""; } } // Sort entries if ($this->sortDirection[$this->sortColumn]) { asort($tmp); } else { arsort($tmp); } // Adapt mapping accordingly $this->mapping= array(); foreach ($tmp as $key => $value) { $this->mapping[]= $key; } } public function addEntry($entry, $displayEntry= null, $key= null) { // Only add if not already there if (!$key) { if (in_array_strict($entry, $this->data)) { return; } } else { if (isset($this->data[$key])) { return; } } // Prefill with default value if not specified if (!$displayEntry) { $displayEntry= array('data' => array($entry)); } // Append to data and mapping $this->displayData[]= $displayEntry['data']; $this->mapping[]= max(array_keys($this->displayData)); $this->modified= true; if ($key) { $this->data[$key]= $entry; $this->keys[]= $key; } else { $this->data[]= $entry; $this->keys[]= max(array_keys($this->displayData)); } // Find the number of coluns reset($this->displayData); $first= current($this->displayData); if (is_array($first)) { $this->columns= count($first); } else { $this->columns= 1; } // Preset sort orders to 'down' for ($column= 0; $column<$this->columns; $column++) { if(!isset($this->sortDirection[$column])){ $this->sortDirection[$column]= true; } } // Sort data after we've added stuff $this->sortData(); } public function getKey($index) { return isset($this->keys[$index])?$this->keys[$index]:null; } public function getData($index) { $realkey = $this->keys[$index]; return($this->data[$realkey]); } } gosa-core-2.7.4/include/class_departmentSortIterator.inc0000644000175000017500000000410711242276372022077 0ustar mikemikedata= array_reverse($data, true); } else { $this->data= $data; } } function rewind() { return reset($this->data); } function current() { return current($this->data); } function key() { return key($this->data); } function next() { return next($this->data); } function valid() { return key($this->data) !== null; } } ?> gosa-core-2.7.4/include/class_pluglist.inc0000644000175000017500000005203211475144661017220 0ustar mikemikeregisteredMenuEntries); } function getRegisteredPathEntries () { return($this->registeredPathEntries); } function getRegisteredIconEntries () { return($this->registeredIconEntries); } function getRegisteredShortCutEntries () { return($this->registeredShortCutEntries); } function pluglist(&$config, &$ui) { $this->ui= &$ui; $this->config= &$config; $this->loadPluginList(); } function loadPluginList() { $this->pluginList = array(); /* Fill info part of pluglist */ $classes= get_declared_classes(); foreach ($classes as $cname){ $cmethods = get_class_methods($cname); if (in_array_ics('plInfo',$cmethods)){ $this->info[$cname]= call_user_func(array($cname, 'plInfo')); } } if(!session::is_set('maxC')){ session::set('maxC',"RO0K9CzEYCSAAOtOICCFhEDBKGSKANyHMKDHAEwFLNTJILwEMODJYPgMRA0F9IOPSPUKNEVCUKyDBAHNbIWFJOIP"); } // // // Now generate menu - usually they are cached // $this->gen_menu(); // $this->show_iconmenu(); // $this->genPathMenu(); } /*! \brief Tries to register a plugin in the pluglist * Checks existence and ACL for the given plugin. * Returns true in case of success else false. */ function registerPlugin(&$plug) { global $class_mapping; // Clean ACL string, we do not want any spaces or lines breaks here. $plug['ACL'] = trim($plug['ACL']); // Clean ACL string, we do not want any spaces or lines breaks here. $acl = trim($plug['ACL']); if(preg_match("/,/",$acl)){ $acls = explode(",",$acl); }else{ $acls = array($acl); } foreach($acls as $key => $aclEntry){ $aclEntry = trim($aclEntry); $tmp = preg_replace("/[^a-z0-9\/:]/i","",$aclEntry); // Check if cleaned 'acl' tag doesn't match the configured one from the gosa.conf. // Display a notification to tell the user that there is something wrong. if($tmp != $aclEntry){ trigger_error("Please check acl='{$aclEntry}' tag for plugin '{$plug['CLASS']}' in your gosa.conf, it contains invalid characters!" ); } $acls[$key] = $tmp; } $plug['ACL'] = implode(',',$acls); // Check class if (!isset($plug['CLASS'])){ msg_dialog::display( _("Configuration error"), _("The configuration format has changed: please run the setup again!"), FATAL_ERROR_DIALOG); exit(); } if (!plugin_available($plug['CLASS'])){ return(FALSE); } if (!$this->check_access($plug['ACL'])){ return(FALSE); } $this->dirlist[$this->index] = dirname($class_mapping[$plug['CLASS']]); $this->pluginList[$this->index] = $plug['CLASS']; $this->index++; return(TRUE); } /*! \brief Check whether we are allowed to modify the given acl or not.. * This function is used to check which plugins are visible. * * @param The acl tag to check for, eg. "users/user:self", "systems", ... * @return Boolean TRUE on success else FALSE */ function check_access($aclname) { if (isset($this->silly_cache[$aclname])) { return $this->silly_cache[$aclname]; } // Split given acl string into an array. e.g. "user,systems" => array("users","systems"); $acls_to_check = array(); if(preg_match("/,/",$aclname)){ $acls_to_check = explode(",",$aclname); }else{ $acls_to_check = array($aclname); } foreach($acls_to_check as $acl_to_check){ // Remove spaces and line breaks. $acl_to_check = trim($acl_to_check); $acl_to_check = preg_replace("/ /","",$acl_to_check); if($acl_to_check == "none"){ $this->silly_cache[$aclname]= TRUE; return(TRUE); } /* Check if the given acl tag is only valid for self acl entries * ui->get_permissions($this->ui->dn,$acl_to_check,"") != ""){ $this->silly_cache[$aclname]= TRUE; return(TRUE); } }else{ if($this->ui->get_category_permissions($this->ui->dn,$acl_to_check,"") != ""){ $this->silly_cache[$aclname]= TRUE; return(TRUE); } } }else{ // No self acls. Check if we have any acls for the given ACL type $deps = $this->ui->get_module_departments($acl_to_check,TRUE); if(count($deps)){ $this->silly_cache[$aclname]= TRUE; return TRUE; } } } $this->silly_cache[$aclname]= FALSE; return (FALSE); } /*! \brief Generate the GOsa Main-Menu here (The menu on the left), * this usually only done once during login. * ----------------------------------------------------------------- * Do NOT add style changes here manually, use the style.css or * if you prefer create your own theme!! * ----------------------------------------------------------------- */ function gen_menu() { if ($this->menu == ""){ // First load the menu plugins and try to register them in the pluglist // if this fails for some reason, then remove the plugin from the menu. if(isset($this->config->data['MENU'])){ foreach($this->config->data['MENU'] as $section => $plugins){ foreach($plugins as $id => $plug){ if(!$this->registerPlugin($this->config->data['MENU'][$section][$id])){ unset($this->config->data['MENU'][$section][$id]); } } // Remove empty sections if(count($this->config->data['MENU'][$section]) == 0){ unset($this->config->data['MENU'][$section]); } } } $disabledPlugins = $this->config->configRegistry->getDisabledPlugins(); $cfg= $this->config->data['MENU']; $menu = ""; foreach ($cfg as $headline => $plug){ if(!count($plug)) continue; $menu.= "\n \n"; $menu.= "\n
     
    "; $menu.= "\n
    \n"; } if(count($this->registeredMenuEntries)){ $this->menu = "\n"; } // Add javascript method to print out warning messages while leaving an unsaved form. // We do it in here to get the string translated. $this->menu .= "\n \n"; } // Use javascript to mark the currently selected plugin. $menu = $this->menu; if(isset($_GET['plug'])){ $menu.= "\n \n"; } // Return the generated/cached gosa menu. return ($menu); } /*! \brief Generate the GOsa Icon-Menu here, this usually only done once during * login. * ----------------------------------------------------------------- * Do NOT add style changes here manually, use the style.css or * if you prefer create your own theme!! * ----------------------------------------------------------------- */ function show_iconmenu() { $add_hr =FALSE; if ($this->iconmenu == ""){ $disabledPlugins = $this->config->configRegistry->getDisabledPlugins(); $cfg= $this->config->data['MENU']; foreach ($cfg as $headline => $plug){ $col= 0; $this->iconmenu .= "\n
    "; if($add_hr){ $add_hr = FALSE; $this->iconmenu .= "\n
    "; } $this->iconmenu .= "\n

    ". _($headline)."

    "; foreach ($plug as $info){ // Get Plugin info list($index, $title, $desc, $icon) = $this->getPlugData($info['CLASS']); $this->registeredIconEntries[] = $index; // The Plugin has been deactivated for some reason, perhabs a missing ldap schema. if(isset($disabledPlugins[$info['CLASS']])) continue; // Add a seperating row if (($col % 4) == 0){ $this->iconmenu .= "\n
    "; } $this->iconmenu.= "\n
    "; $this->iconmenu.= "\n ".image($icon); $this->iconmenu.= "\n
    "; $this->iconmenu.= "\n

    {$title}

    "; $this->iconmenu.= "\n

    {$desc}

    "; $this->iconmenu.= "\n
    "; $this->iconmenu.= "\n
    "; $col++ ; } $add_hr = TRUE; } } return ($this->iconmenu); } /*! \brieg Generates and the path menu (the one on the upper right) and keeps * the generated HTML content, so we are not forced to generate it on every * page request. * (See of your gosa.conf) */ function genPathMenu() { if(empty($this->pathMenu)){ $disabledPlugins = $this->config->configRegistry->getDisabledPlugins(); // Now load the icon menu and try to register the plugins in the pluglist // if this fails for some reason, then remove the plugins from the menu. if(isset($this->config->data['SHORTCUTMENU'])){ foreach($this->config->data['SHORTCUTMENU'] as $id => $plugin){ if(!$this->registerPlugin($this->config->data['SHORTCUTMENU'][$id])){ unset($this->config->data['SHORTCUTMENU'][$id]); } } } // Now load the path menu and try to register the plugins in the pluglist // if this fails for some reason, then remove the plugin from the menu. if(isset($this->config->data['PATHMENU'])){ foreach($this->config->data['PATHMENU'] as $id => $plugin){ if(!$this->registerPlugin($this->config->data['PATHMENU'][$id])){ unset($this->config->data['PATHMENU'][$id]); } } } $this->pathMenu = "\n
    ". "\n
      "; // Check if we've at least one entry defined ih the iconmenu if(isset($this->config->data['SHORTCUTMENU'])){ $icfg= &$this->config->data['SHORTCUTMENU']; $rcfg = array_reverse($icfg); foreach($rcfg as $id => $plug){ list($index, $title, $desc, $icon, $shortIcon) = $this->getPlugData($plug['CLASS']); $this->registeredShortCutEntries[] = $index; // The Plugin has been deactivated for some reason, perhabs a missing ldap schema. if(isset($disabledPlugins[$plug['CLASS']])) continue; $cssClass= (!isset($rcfg[$id+1]))? 'left' : 'left right-border'; $this->pathMenu.= "
    • ". image(get_template_path($shortIcon))."
    • "; } } // Place the navigator part, this will be replaced during runtime. $this->pathMenu .= "\n %navigator%"; // Check if we've at least one entry defined ih the pathmenu if(isset($this->config->data['PATHMENU'])){ $cfg= &$this->config->data['PATHMENU']; $rcfg = array_reverse($cfg); foreach($rcfg as $id => $plug){ list($index, $title, $desc, $icon) = $this->getPlugData($plug['CLASS']); $this->registeredPathEntries[] = $index; // The Plugin has been deactivated for some reason, perhabs a missing ldap schema. if(isset($disabledPlugins[$plug['CLASS']])) continue; $this->pathMenu.= "\n
    • {$title}
    • "; } } $this->pathMenu.= "\n
    "; $this->pathMenu.= "\n
    "; } $menu = pathNavigator::getCurrentPath(); return(preg_replace("/%navigator%/", $menu, $this->pathMenu)); } /*! \brief Returns additional info for a given class name, like * plugin-icon, title, description and the index of the element in the pluglist which uses this class. */ function getPlugData($class) { global $class_mapping; $vars= get_class_vars($class); $plHeadline= _($vars['plHeadline']); $plDescription= _($vars['plDescription']); $plIcon = (isset($vars['plIcon'])) ? $vars['plIcon']: "plugin.png"; $plShortIcon = (isset($vars['plShortIcon'])) ? $vars['plShortIcon']: "plugin.png"; $index= $this->get_index($class); /* Check if class is available. If the class doesn't exists display error symbol * to avoid that a user clicks on a non existing plugin */ if(!$vars){ $plHeadline = $plDescription = _("Unknown"); $plIcon = "error.png"; $index = ''; } // Detect the correct position of the plugin icon if(!preg_match("/\//",$plIcon)){ $image= get_template_path("plugins/".preg_replace('%^.*/([^/]+)/[^/]+$%', '\1', $class_mapping[$class])."/images/$plIcon"); }else{ $image = $plIcon; } // Detect the correct position of the plugin icon if(!preg_match("/\//",$plShortIcon)){ $shortImage= get_template_path("plugins/".preg_replace('%^.*/([^/]+)/[^/]+$%', '\1', $class_mapping[$class])."/images/$plShortIcon"); }else{ $shortImage = $plShortIcon; } return(array($index, $plHeadline, $plDescription, $image, $shortImage)); } /*! \brief Returns the installation path of a plugin. * e.g. '../plugins/admin/mimetypes' */ function get_path($index) { if(!isset($this->dirlist[$index])){ return (""); } return ("../".$this->dirlist[$index]); } /*! \brief Returns the plugins id for a given class. */ function get_index($class) { return (array_search($class, $this->pluginList)); } /*! \brief Returns the plugins id for a given class. */ function get_class($index) { return($this->pluginList[$index]); } /*! \brief This function checks if we are allowed to view the plugin with the given id * * @param $plug_id Integer The ID of the plugin. * @return Boolean TRUE if we are allowed to view the plugin else FASLE */ function plugin_access_allowed($plug_id) { return(isset($this->pluginList[$plug_id]) && $plug_id != ""); } /*! \brief Force the menu to be recreated */ function reset_menus() { $this->menu = ""; $this->iconmenu =""; } /*! \brief Generates an array containing plugin names (headlines) and theirs ids. * This is just used in the helpviewer.php */ function gen_headlines() { $ret = array(); if(count($this->headlines) == 0){ foreach($this->config->data['MENU'] as $headline => $plugins){ foreach( $plugins as $id => $plug){ if (plugin_available($plug['CLASS'])){ $attrs = (get_class_vars($plug['CLASS'])); $ret[$id]['HEADLINE'] = $headline; $ret[$id]['NAME'] = $attrs['plHeadline']; } } } $this->headlines = $ret; } return($this->headlines); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/php_setup.inc0000644000175000017500000002711011651531333016166 0ustar mikemikedata) && $config->get_cfg_value("core","displayErrors") != "true"){ /* Write to syslog */ if(class_exists("log") && !preg_match("/No such object/",$errstr)){ new log("view","error","",array(),"PHP error: $errstr ($errfile, line $errline)"); } set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_STRICT) ; return; } /* Send all errors to logging class, except "Ldap : No such object" messages*/ if(class_exists("log") && !preg_match("/No such object/",$errstr)){ new log("debug","all",$errfile,array(),"Type:".$errno.", Message:".$errstr.", File:".$errfile.", Line: ".$errline); } // Log errors in usage DB if(class_exists('stats') && !preg_match("/No such object/",$errstr)){ stats::log('error', $class = 'ERROR', $category = array(), $action = __FUNCTION__, $amount = 1, $duration = 0, $errno); } /* Create header as needed */ if ($error_collector == ""){ /* Mailto body header */ if(function_exists("prepare4mailbody")){ $version= "unknown"; if(function_exists("get_gosa_version")){ $version= get_gosa_version(); } $error_collector_mailto .=prepare4mailbody( "Oups. Seems like you've catched some kind of bug inside GOsa/PHP. You may want to help ". "us to improve the software stability. If so, please provide some more information below.". "\n\n". "*** GOsa bug report ***". "\nGOsa Version: $version". "\n\n". "Please describe what you did to produce this error as detailed as possible. Can you ". "reproduce this bug using the demo on http://www.gosa-project.org ?". "\n\n". "*** PHP error information ***\n\n"); } if (class_exists('session') && session::is_set('js') && session::get('js')==FALSE){ $error_collector= "
    "; } else { $warning_image = (is_callable('image')) ? image('images/toolbar-warning.png') : ""; $mailto_image = (is_callable('image')) ? image('images/mailto.png') : ""; $error_collector= "
    {$warning_image} "._("Generating this page caused the PHP interpreter to raise some errors!")." {$mailto_image} "._("Send bug report")."
    "; flush(); exit; } } function prepare4mailbody($string) { $string = html_entity_decode($string); $from = array( "/%/", "/ /", "/\n/", "/\r/", "/!/", "/#/", "/\*/", "/\//", "//", "/\?/", "/\"/"); $to = array( "%25", "%20", "%0A", "%0D", "%21", "%23", "%2A", "%2F", "%3C", "%3E", "%3F", "%22"); $string = preg_replace($from,$to,$string); return($string); } function dummy_error_handler() { } /* Bail out for incompatible/old PHP versions */ if (!version_compare(phpversion(),"5.2.0",">=")){ echo "PHP version needs to be 5.2.0 or above to run GOsa. Aborted."; exit(); } /* Set timezone */ date_default_timezone_set("GMT"); /* Get base dir for reference */ $BASE_DIR= dirname(dirname(__FILE__)); $ROOT_DIR= $BASE_DIR."/html"; error_reporting (E_ALL | E_STRICT); /* Register error handler */ $error_collector= ""; $error_collector_mailto= ""; set_error_handler('gosaRaiseError', E_WARNING | E_NOTICE | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE | E_STRICT) ; $variables_order= "ES"; ini_set("register_globals",0); ini_set("track_vars",1); ini_set("display_errors",1); ini_set("report_memleaks",1); ini_set("include_path",".:$BASE_DIR/include:$BASE_DIR/include/utils/excel:/usr/share/php"); /* Do smarty setup */ require("smarty/Smarty.class.php"); $smarty = new Smarty; $smarty->template_dir = $BASE_DIR.'/ihtml/'; $smarty->caching= false; // To be able to switch between smarty version 2/3 if(defined('SMARTY_PHP_REMOVE')){ $smarty->php_handling= SMARTY_PHP_REMOVE; }else{ $smarty->php_handling= Smarty::PHP_REMOVE; } // Register GOsa contributed smarty plugins $d = opendir("$BASE_DIR/include/smartyAddons"); while($file = readdir($d)){ if(preg_match("/\.php$/", $file)) require_once("$BASE_DIR/include/smartyAddons/{$file}"); } #$smarty->registerPlugin("block", "tr", "smarty_block_tr"); $smarty->registerPlugin("block", "t", "smarty_block_t"); $smarty->registerPlugin("block", "render", "smarty_block_render"); $smarty->registerPlugin("function", "msgPool", "smarty_function_msgPool"); $smarty->registerPlugin("function", "image", "smarty_function_image"); $smarty->registerPlugin("function", "factory", "smarty_function_factory"); /* Global FPDF define */ define('FPDF_FONTPATH', '/usr/share/php/fpdf/font/'); // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_remoteObject.inc0000644000175000017500000002262011613731145017770 0ustar mikemikerpcHandle = $rpcHandle; $this->properties = $properties; $this->methods = $methods; $this->type = $type; $this->ref_id = $ref_id; $this->object_id = $object_id; $this->values = $values; $this->cache = $values; } /*!\brief Returns the object type. * @return String The type of the object. E.g. 'user'. */ function getType() { return($this->type); } /*!\brief Returns a list of available property names. * @return Array A list of property names. */ function getProperties() { return($this->properties); } /*!\brief Returns the objects reference ID. * @return String the server side object id. */ function getReferenceId() { return($this->ref_id); } /*!\brief Clears all object modification when in not in * 'directStorage' mode. */ function clearCache() { $this->__clearCache(); } /*!\brief Catch all method for undefined function calls. * This method detects setter, getter and methods calls * and forwards them to the right object method. * @param String The name of the function to call. * @param Array A list of parameters. * @return Mixed E.g. The answer from the server. */ function __call($name, $args) { // Check if such an attribute is registered if(preg_match("/^get/", $name)){ $varName = ucfirst(preg_replace("/^get/","", $name)); $varName2 = lcfirst($varName); if(in_array_strict($varName, $this->properties)){ $force = isset($args[0]) && $args[0]; return($this->__getProperty($varName, $force)); }elseif(in_array_strict($varName2, $this->properties)){ $force = isset($args[0]) && $args[0]; return($this->__getProperty($varName2, $force)); } }elseif(preg_match("/^set/", $name)){ $varName = ucfirst(preg_replace("/^set/","", $name)); $varName2 = lcfirst($varName); if(in_array_strict($varName, $this->properties)){ return($this->__setProperty($varName, $args[0])); }elseif(in_array_strict($varName2, $this->properties)){ return($this->__setProperty($varName2, $args[0])); } } // Forward to the call to the backend. if(in_array_strict($name, $this->methods)){ $this->lastError = ""; $this->success = TRUE; $fArgs = array(); $fArgs[] = $this->ref_id; $fArgs[] = $name; $fArgs = array_merge($fArgs, $args); $res = call_user_func_array(array($this->rpcHandle,"dispatchObjectMethod"), $fArgs); if(!$this->rpcHandle->success()){ $this->success = FALSE; $this->lastError = $this->rpcHandle->get_error(); trigger_error($this->lastError); } return($res); } // Show an error, we do not know what to to with this.. trigger_error("Unknown method '{$name}' called for {$this->object_id}!"); } function success() { return($this->success); } function getError() { return($this->lastError); } /*!\brief A catch all method for setter calls. * * @param String The name of the property to set. * @param String The value to use. * @return */ function __set($varName, $value) { // Set property value if(in_array_strict($varName, $this->properties)){ return($this->__setProperty($varName, $value)); } // Set class member value if(isset($this->$varName)){ $this->$varName = $value; return(TRUE); } trigger_error("No attribute '{$varName}' defined!"); return(FALSE); } /*!\brief A catch all method for getter calls. * @param String The name of the requested property. * @return Mixed. */ function __get($varName) { if(in_array_strict($varName, $this->properties)){ return($this->__getProperty($varName)); } // Set class member value if(isset($this->$varName)){ return($this->$varName); } trigger_error("No attribute '{$varName}' defined!"); return(NULL); } /*!\brief Internal method used to set properties. * @param String The name of property to set. * @param Mixed The new value for the property. * @return Boolean true on success else false. */ function __setProperty($name, $value, $forceSave = FALSE) { if($this->directStorage || $forceSave){ $this->rpcHandle->setObjectProperty($this->ref_id, $name,$value); if($this->rpcHandle->success()){ $this->__addPropValueToCache($name, $value); return(TRUE); }else{ return(FALSE); } }else{ $this->__addPropValueToCache($name, $value); return(TRUE); } } /*!\brief Internal method used to get property values. * @param String The name of the property. * @return Mixed. */ function __getProperty($name, $force = FALSE) { if(!$force && $this->__propIsCached($name)){ return($this->__getPropFromCache($name)); } $res = $this->rpcHandle->getObjectProperty($this->ref_id, $name); if(!$this->rpcHandle->success()){ return(NULL); }else{ $this->__addPropValueToCache($name, $res); $this->values[$name] = $res; return($res); } } /*!\brief Closes the object on the server side. * @return The closing status. */ function close() { $res = $this->rpcHandle->closeObject($this->ref_id); if($this->success){ $this->ref_id = ""; } return($this->rpcHandle->success()); } /*!\brief Internal method used to add property values to the cache. * @param String The name of the propterty to add. * @param String The value of the property to add. */ function __addPropValueToCache($name, $value) { $this->cache[$name] = $value; } /*!\brief Internal method used to fetch property values from the cache. * @param String The name of the property to fetch. * @return Mixed. */ function __getPropFromCache($name) { return($this->cache[$name]); } /*!\brief Internal method to check whether a property value is cached or not. * @param String The name of the property. * @return Boolean True on success else false */ function __propIsCached($name) { return(isset($this->cache[$name])); } /*!\brief Clears the internal property cache. */ function __clearCache() { $this->cache = array(); } /* \brief See commit(); */ function save() { return($this->commit()); } /*! \brief Saves property modifications back to the server. * This is only necessary in directStorage mode. * @param Boolean If set to true all attributes will be saved, even not modified. */ function commit($saveUntouchedPropertiesToo = FALSE) { foreach($this->properties as $prop){ if(!$this->__propIsCached($prop)) continue; if($saveUntouchedPropertiesToo || $this->values[$prop] != $this->__getPropFromCache($prop)){ $this->__setProperty($prop, $this->__getPropFromCache($prop), TRUE); } } } /*!\brief Internal method which removes a property from the cache. * @param String The name of the property. * @return */ function __removePropFromCache($name) { if($this->__propIsCached($name)){ unset($this->cache[$name]); } } } ?> gosa-core-2.7.4/include/class_acl.inc0000644000175000017500000016602711613731145016117 0ustar mikemikegosaAclEntry= array(); if (isset($this->attrs['gosaAclEntry'])){ for ($i= 0; $i<$this->attrs['gosaAclEntry']['count']; $i++){ $acl= $this->attrs['gosaAclEntry'][$i]; $this->gosaAclEntry= array_merge($this->gosaAclEntry, acl::explodeACL($acl)); } } ksort($this->gosaAclEntry); /* Save parent - we've to know more about it than other plugins... */ $this->parent= &$parent; /* Container? */ if (preg_match('/^(o|ou|c|l|dc)=/i', $dn)){ $this->isContainer= TRUE; } /* Users */ $ui= get_userinfo(); $tag= $ui->gosaUnitTag; $ldap= $config->get_ldap_link(); $ldap->cd($config->current['BASE']); if ($tag == ""){ $ldap->search('(objectClass=gosaAccount)', array('uid', 'cn')); } else { $ldap->search('(&(objectClass=gosaAccount)(gosaUnitTag='.$tag.'))', array('uid', 'cn')); } while ($attrs= $ldap->fetch()){ // Allow objects without cn to be listed without causing an error. if(!isset($attrs['cn'][0]) && isset($attrs['uid'][0])){ $this->users['U:'.$attrs['dn']]= $attrs['uid'][0]; }elseif(!isset($attrs['uid'][0]) && isset($attrs['cn'][0])){ $this->users['U:'.$attrs['dn']]= $attrs['cn'][0]; }elseif(!isset($attrs['uid'][0]) && !isset($attrs['cn'][0])){ $this->users['U:'.$attrs['dn']]= $attrs['dn']; }else{ $this->users['U:'.$attrs['dn']]= $attrs['cn'][0].' ['.$attrs['uid'][0].']'; } } ksort($this->users); /* Groups */ $ldap->cd($config->current['BASE']); # if ($tag == ""){ $ldap->search('(objectClass=posixGroup)', array('cn', 'description')); # } else { # $ldap->search('(&(objectClass=posixGroup)(gosaUnitTag='.$tag.'))', array('cn', 'description')); # } while ($attrs= $ldap->fetch()){ $dsc= ""; if (isset($attrs['description'][0])){ $dsc= $attrs['description'][0]; } $this->groups['G:'.$attrs['dn']]= $attrs['cn'][0].' ['.$dsc.']'; } $this->groups['G:*']= _("All users"); ksort($this->groups); /* Roles */ $ldap->cd($config->current['BASE']); # if ($tag == ""){ $ldap->search('(objectClass=gosaRole)', array('cn', 'description','gosaAclTemplate','dn')); # } else { # $ldap->search('(&(objectClass=gosaRole)(gosaUnitTag='.$tag.'))', array('cn', 'description','gosaAclTemplate','dn')); # } while ($attrs= $ldap->fetch()){ $dsc= ""; if (isset($attrs['description'][0])){ $dsc= $attrs['description'][0]; } $role_id = $attrs['dn']; $this->roles[$role_id]['acls'] =array(); for ($i= 0; $i < $attrs['gosaAclTemplate']['count']; $i++){ $acl= $attrs['gosaAclTemplate'][$i]; $this->roles[$role_id]['acls'] = array_merge($this->roles[$role_id]['acls'],acl::explodeACL($acl)); } $this->roles[$role_id]['description'] = $dsc; $this->roles[$role_id]['cn'] = $attrs['cn'][0]; } /* Objects */ $tmp= session::global_get('plist'); $plist= $tmp->info; $cats = array(); if (isset($this->parent) && $this->parent !== NULL){ $oc= array(); foreach ($this->parent->by_object as $key => $obj){ if(isset($obj->objectclasses) && is_array($obj->objectclasses)){ $oc= array_merge($oc, $obj->objectclasses); } if(isset($obj->acl_category)){ $tmp= str_replace("/","",$obj->acl_category); $cats[$tmp] = $tmp; } } if (in_array_ics('organizationalUnit', $oc)){ $this->isContainer= TRUE; } } else { $oc= $this->attrs['objectClass']; } /* Extract available categories from plugin info list */ foreach ($plist as $class => $acls){ /* Only feed categories */ if (isset($acls['plCategory'])){ /* Walk through supplied list and feed only translated categories */ foreach($acls['plCategory'] as $idx => $data){ /* Non numeric index means -> base object containing more informations */ if (preg_match('/^[0-9]+$/', $idx)){ if (!isset($this->ocMapping[$data])){ $this->ocMapping[$data]= array(); $this->ocMapping[$data][]= '0'; } if(isset($cats[$data])){ $this->myAclObjects[$data.'/'.$class]= $acls['plDescription']; } $this->ocMapping[$data][]= $class; } else { if (!isset($this->ocMapping[$idx])){ $this->ocMapping[$idx]= array(); $this->ocMapping[$idx][]= '0'; } $this->ocMapping[$idx][]= $class; $this->aclObjects[$idx]= $data['description']; /* Additionally filter the classes we're interested in in "self edit" mode */ if(!isset($data['objectClass'])) continue; if (is_array($data['objectClass'])){ foreach($data['objectClass'] as $objectClass){ if (in_array_ics($objectClass, $oc)){ $this->myAclObjects[$idx.'/'.$class]= $acls['plDescription']; break; } } } else { if (in_array_ics($data['objectClass'], $oc)){ $this->myAclObjects[$idx.'/'.$class]= $acls['plDescription']; } } } } } } /* Sort categories */ asort($this->aclObjects); /* Fill acl types */ if ($this->isContainer){ $this->aclTypes= array("reset" => _("Reset ACLs"), "one" => _("One level"), "base" => _("Current object"), "sub" => _("Complete subtree"), "psub" => _("Complete subtree (permanent)"), "role" => _("Use ACL defined in role")); } else { $this->aclTypes= array("base" => _("Current object"), "role" => _("Use ACL defined in role")); } asort($this->aclTypes); $this->targets= array("user" => _("Users"), "group" => _("Groups")); asort($this->targets); /* Finally - we want to get saved... */ $this->is_account= TRUE; $this->updateList(); // Prepare lists $this->sectionList = new sortableListing(); $this->sectionList->setDeleteable(false); $this->sectionList->setEditable(false); $this->sectionList->setWidth("100%"); $this->sectionList->setHeight("220px"); $this->sectionList->setColspecs(array('200px','*')); $this->sectionList->setHeader(array(_("Section"),_("Description"))); $this->sectionList->setDefaultSortColumn(0); $this->sectionList->setAcl('rwcdm'); // All ACLs, we filter on our own here. $this->roleList = new sortableListing(); $this->roleList->setDeleteable(false); $this->roleList->setEditable(false); $this->roleList->setWidth("100%"); $this->roleList->setHeight("120px"); $this->roleList->setColspecs(array('20px','*','*')); $this->roleList->setHeader(array(_("Used"),_("Name"),_("Description"))); $this->roleList->setDefaultSortColumn(1); $this->roleList->setAcl('rwcdm'); // All ACLs, we filter on our own here. $this->aclMemberList = new sortableListing(array(), array(), false); $this->aclMemberList->setEditable(false); $this->aclMemberList->setDeleteable(true); $this->aclMemberList->setInstantDelete(false); $this->aclMemberList->sortingEnabled(true); $this->aclMemberList->setWidth("100%"); $this->aclMemberList->setHeight("150px"); $this->aclMemberList->setColspecs(array('20px','*','*')); $this->aclMemberList->setHeader(array(_("~"),_("Name"),_("Description"))); $this->aclMemberList->setDefaultSortColumn(1); $this->aclMemberList->setAcl('rwcdm'); // All ACLs, we filter on our own here. } function updateList() { if(!$this->list){ $this->list = new sortableListing($this->gosaAclEntry,array(),TRUE); $this->list->setDeleteable(true); $this->list->setEditable(true); $this->list->setColspecs(array('*')); $this->list->setWidth("100%"); $this->list->setHeight("400px"); $this->list->setAcl("rwcdm"); $this->list->setHeader(array(_("Member"),_("Permissions"),_("Type"))); } // Add ACL entries to the listing $lData = array(); foreach($this->gosaAclEntry as $id => $entry){ $lData[] = $this->convertForListing($entry); } $this->list->setListData($this->gosaAclEntry, $lData); } function convertForListing($entry) { $member = implode($entry['members'],", "); if(isset($entry['acl']) && is_array($entry['acl'])){ $acl = implode(array_keys($entry['acl']),", "); }else{ $acl=""; } return(array('data' => array($member, $acl, $this->aclTypes[$entry['type']]))); } function execute() { /* Call parent execute */ plugin::execute(); $tmp= session::global_get('plist'); $plist= $tmp->info; /* Handle posts */ if (isset($_POST['new_acl'])){ $this->dialogState= 'create'; $this->dialog= TRUE; $this->currentIndex= count($this->gosaAclEntry); $this->loadAclEntry(TRUE); $this->aclMemberList->setListData(array()); $this->aclMemberList->update(); } $new_acl= array(); $aclDialog= FALSE; $firstedit= FALSE; // Get listing actions. Delete or Edit. $this->list->save_object(); $lAction = $this->list->getAction(); $this->gosaAclEntry = array_values($this->list->getMaintainedData()); /* Act on HTML post and gets here. */ if($lAction['action'] == "edit"){ $this->currentIndex = $this->list->getKey($lAction['targets'][0]); $this->dialogState= 'create'; $firstedit= TRUE; $this->dialog= TRUE; $this->loadAclEntry(); } foreach($_POST as $name => $post){ $post =get_post($name); /* Actions... */ if (preg_match('/^acl_edit_[0-9]*$/', $name)){ $this->dialogState= 'create'; $firstedit= TRUE; $this->dialog= TRUE; $this->currentIndex= preg_replace('/^acl_edit_([0-9]*)$/', '\1', $name); $this->loadAclEntry(); continue; } if (preg_match('/^cat_edit_.*$/', $name)){ $this->aclObject= preg_replace('/^cat_edit_(.*)$/', '\1', $name); $this->dialogState= 'edit'; foreach ($this->ocMapping[$this->aclObject] as $oc){ if (isset($this->aclContents[$oc])){ $this->savedAclContents[$oc]= $this->aclContents[$oc]; } } continue; } /* Only handle posts, if we allowed to modify ACLs */ if(!$this->acl_is_writeable("")){ continue; } if (preg_match('/^acl_del_[0-9]*$/', $name)){ unset($this->gosaAclEntry[preg_replace('/^acl_del_([0-9]*)$/', '\1', $name)]); continue; } if (preg_match('/^cat_del_.*$/', $name)){ $idx= preg_replace('/^cat_del_(.*)$/', '\1', $name); foreach ($this->ocMapping[$idx] as $key){ if(isset($this->aclContents[$idx])) unset($this->aclContents[$idx]); if(isset($this->aclContents["$idx/$key"])) unset($this->aclContents["$idx/$key"]); } continue; } /* ACL saving... */ if (preg_match('/^acl_.*_[^xy]$/', $name)){ list($dummy, $object, $attribute, $value)= explode('_', $name); /* Skip for detection entry */ if ($object == 'dummy') { continue; } /* Ordinary ACLs */ if (!isset($new_acl[$object])){ $new_acl[$object]= array(); } if (isset($new_acl[$object][$attribute])){ $new_acl[$object][$attribute].= $value; } else { $new_acl[$object][$attribute]= $value; } } // Remember the selected ACL role. if(isset($_POST['selected_role']) && $_POST['aclType'] == 'role'){ $this->aclContents = ""; $this->aclContents = base64_decode(get_post('selected_role')); }else{ if(is_string($this->aclContents)) $this->aclContents = array(); } } if(isset($_POST['acl_dummy_0_0_0'])){ $aclDialog= TRUE; } if($this->acl_is_writeable("")){ /* Only be interested in new acl's, if we're in the right _POST place */ if ($aclDialog && $this->aclObject != "" && is_array($this->ocMapping[$this->aclObject])){ foreach ($this->ocMapping[$this->aclObject] as $oc){ if(isset($this->aclContents[$oc]) && is_array($this->aclContents)){ unset($this->aclContents[$oc]); }elseif(isset($this->aclContents[$this->aclObject.'/'.$oc]) && is_array($this->aclContents)){ unset($this->aclContents[$this->aclObject.'/'.$oc]); }else{ # trigger_error("Huhm?"); } if (isset($new_acl[$oc]) && is_array($new_acl)){ $this->aclContents[$oc]= $new_acl[$oc]; } if (isset($new_acl[$this->aclObject.'/'.$oc]) && is_array($new_acl)){ $this->aclContents[$this->aclObject.'/'.$oc]= $new_acl[$this->aclObject.'/'.$oc]; } } } /* Save new acl in case of base edit mode */ if ($this->aclType == 'base' && !$firstedit){ $this->aclContents= $new_acl; } } /* Cancel new acl? */ if (isset($_POST['cancel_new_acl'])){ $this->dialogState= 'head'; $this->dialog= FALSE; if ($this->wasNewEntry){ unset ($this->gosaAclEntry[$this->currentIndex]); } } /* Save common values */ if($this->acl_is_writeable("")){ foreach (array("aclType","aclFilter", "aclObject", "target") as $key){ if (isset($_POST[$key])){ $this->$key= get_post($key); } } } /* Store ACL in main object? */ if (isset($_POST['submit_new_acl'])){ $this->gosaAclEntry[$this->currentIndex]['type']= $this->aclType; $this->gosaAclEntry[$this->currentIndex]['members']= $this->recipients; $this->gosaAclEntry[$this->currentIndex]['acl']= $this->aclContents; $this->gosaAclEntry[$this->currentIndex]['filter']= $this->aclFilter; $this->dialogState= 'head'; $this->dialog= FALSE; } /* Cancel edit acl? */ if (isset($_POST['cancel_edit_acl'])){ $this->dialogState= 'create'; foreach ($this->ocMapping[$this->aclObject] as $oc){ if (isset($this->savedAclContents[$oc])){ $this->aclContents[$oc]= $this->savedAclContents[$oc]; } } } /* Save edit acl? */ if (isset($_POST['submit_edit_acl'])){ $this->dialogState= 'create'; } /* Add acl? */ if (isset($_POST['add_acl']) && $_POST['aclObject'] != ""){ $this->dialogState= 'edit'; $this->savedAclContents= array(); foreach ($this->ocMapping[$this->aclObject] as $oc){ if (isset($this->aclContents[$oc])){ $this->savedAclContents[$oc]= $this->aclContents[$oc]; } } } /* Add to list? */ if (isset($_POST['add']) && isset($_POST['source'])){ foreach ($_POST['source'] as $key){ if ($this->target == 'user'){ $this->recipients[$key]= $this->users[$key]; } if ($this->target == 'group'){ $this->recipients[$key]= $this->groups[$key]; } } ksort($this->recipients); } /* Remove from list? */ if (isset($_POST['del']) && isset($_POST['recipient'])) { foreach ($_POST['recipient'] as $key) { unset($this->recipients[$key]); } } $this->aclMemberList->save_object(); $actionL = $this->aclMemberList->getAction(); if($actionL['action'] == "delete") { $key = $this->aclMemberList->getData($actionL['targets'][0]); unset($this->recipients[$key]); $this->aclMemberList->deleteEntry($actionL['targets'][0]); } /* Adds the 'all-users' peudo-group to the acl */ if(isset($_POST['add_all_users'])) { if(!isset($this->recipients['G:*'])) { $this->recipients['G:*'] = _("All users"); $key = "G:*"; $vData = array("data" => array(image("plugins/groups/images/select_group.png"), _("All users"), _("Pseudo-group for all users."))); $this->aclMemberList->addEntry($key, $vData, $key); } } /* Show User/Group-Add-Dialog */ if(isset($_POST['add_user_or_group'])) { $this->dialog = new userGroupSelect($this->config, get_userinfo()); } /* If dialog is confirmed */ if(isset($_POST['userGroupSelect_save']) && $this->dialog instanceof userGroupSelect) { $groupIcon = image("plugins/groups/images/select_group.png"); $userIcon = image("plugins/users/images/select_user.png"); if($this->acl_is_writeable("")) { foreach($this->dialog->save() as $entry) { if(in_array_strict("posixGroup", $entry['objectClass'])) { $key = "G:" . $entry['dn']; $vData = array("data" => array($groupIcon, $entry['cn'][0], $entry['description'][0])); $this->recipients[$key] = $entry['cn'][0]; } else if(isset($entry['uid'])) { $key = "U:" . $entry['dn']; $vData = array("data" => array($userIcon, $entry['uid'][0], $entry['cn'][0])); $lData = array($key => $key); $this->recipients["U:" . $entry['dn']] = $entry['uid'][0]; } else { // Error break; } $this->aclMemberList->addEntry($key, $vData, $key); } } unset($this->dialog); $this->dialog = true; } /* If dialog is canceled */ if(isset($_POST['userGroupSelect_cancel']) && $this->dialog instanceof userGroupSelect) { unset($this->dialog); $this->dialog = true; } if($this->dialog instanceof userGroupSelect) { // filter current members out $used = array(); foreach(array_keys($this->recipients) as $key) { $used['dn'][] = substr($key, 2); } session::set('filterBlacklist', $used); return $this->dialog->execute(); } /* Create templating instance */ $smarty= get_smarty(); $smarty->assign("acl_readable",$this->acl_is_readable("")); if(!$this->acl_is_readable("")){ return ($smarty->fetch (get_template_path('acl.tpl'))); } if ($this->dialogState == 'head'){ $this->updateList(); $smarty->assign("aclList", $this->list->render()); } if ($this->dialogState == 'create'){ if($this->aclType != 'role'){ // Create a map of all used sections, this allows us to simply hide the remove button // if no acl is configured for the given section // e.g. ';all;department/country;users/user; $usedList = ";".implode(array_keys($this->aclContents),';').";"; /* Add settings for all categories to the (permanent) list */ $data = $lData = array(); foreach ($this->aclObjects as $section => $dsc){ $summary= ""; foreach($this->ocMapping[$section] as $oc){ if (isset($this->aclContents[$oc]) && count($this->aclContents[$oc]) && isset($this->aclContents[$oc][0]) && $this->aclContents[$oc][0] != ""){ $summary.= "$oc, "; continue; } if (isset($this->aclContents["$section/$oc"]) && count($this->aclContents["$section/$oc"])){ $summary.= "$oc, "; continue; } if (isset($this->aclContents[$oc]) && !isset($this->aclContents[$oc][0]) && count($this->aclContents[$oc])){ $summary.= "$oc, "; } } /* Set summary... */ if ($summary == ""){ $summary= ''._("No ACL settings for this category!").''; } else { $summary= trim($summary,", "); $summary= " ".sprintf(_("ACLs for: %s"), $summary); } $actions =""; if($this->acl_is_readable("")){ $actions.= image('images/lists/edit.png','cat_edit_'.$section, msgPool::editButton(_("category ACL"))); } if($this->acl_is_removeable() && preg_match("/;".$section."(;|\/)/", $usedList)){ $actions.= image('images/lists/trash.png','cat_del_'.$section, msgPool::delButton(_("category ACL"))); } $data[] = $section; $lData[] = array('data'=>array($dsc, $summary, $actions)); } $this->sectionList->setListData($data,$lData); $this->sectionList->update(); $smarty->assign("aclList", $this->sectionList->render()); } $smarty->assign("aclType", set_post($this->aclType)); $smarty->assign("aclFilter", set_post($this->aclFilter)); $smarty->assign("aclTypes", set_post($this->aclTypes)); $smarty->assign("target", set_post($this->target)); $smarty->assign("targets", set_post($this->targets)); /* Assign possible target types */ $smarty->assign("targets", $this->targets); foreach ($this->attributes as $attr){ $smarty->assign($attr, set_post($this->$attr)); } /* Generate list */ $tmp= array(); if ($this->target == "group" && !isset($this->recipients["G:*"])){ $tmp["G:*"]= _("All users"); } foreach (array("user" => "users", "group" => "groups") as $field => $arr){ if ($this->target == $field){ foreach ($this->$arr as $key => $value){ if (!isset($this->recipients[$key])){ $tmp[$key]= $value; } } } } $smarty->assign('sources', set_post($tmp)); $smarty->assign('recipients', set_post($this->recipients)); /* Generate ACL member list */ if($this->acl_is_writeable("")) { $this->aclMemberList->setDeleteable(true); } else { $this->aclMemberList->setDeleteable(false); } $this->aclMemberList->update(); $smarty->assign("aclMemberList", $this->aclMemberList->render()); /* Acl selector if scope is base */ if ($this->aclType == 'base'){ $smarty->assign('aclSelector', $this->buildAclSelector($this->myAclObjects)); } /* Role selector if scope is base */ if ($this->aclType == 'role'){ $smarty->assign('roleSelector', $this->buildRoleSelector($this->roles)); } } if ($this->dialogState == 'edit'){ $smarty->assign('headline', sprintf(_("Edit ACL for '%s' with scope '%s'"), $this->aclObjects[$this->aclObject], $this->aclTypes[$this->aclType])); /* Collect objects for selected category */ foreach ($this->ocMapping[$this->aclObject] as $idx => $class){ if ($idx == 0){ continue; } $aclObjects[$this->aclObject.'/'.$class]= $plist[$class]['plDescription']; } /* Role selector if scope is base */ if ($this->aclType == 'role'){ $smarty->assign('roleSelector', $this->buildRoleSelector($this->roles)); } else { $smarty->assign('aclSelector', $this->buildAclSelector($aclObjects)); } } /* Show main page */ $smarty->assign("dialogState", $this->dialogState); /* Assign acls */ $smarty->assign("acl_createable",$this->acl_is_createable()); $smarty->assign("acl_writeable" ,$this->acl_is_writeable("")); $smarty->assign("acl_readable" ,$this->acl_is_readable("")); $smarty->assign("acl_removeable",$this->acl_is_removeable()); return ($smarty->fetch (get_template_path('acl.tpl'))); } function sort_by_priority($list) { $tmp= session::global_get('plist'); $plist= $tmp->info; asort($plist); $newSort = array(); foreach($list as $name => $translation){ $na = preg_replace("/^.*\//","",$name); $prio = 0; if(isset($plist[$na]['plPriority'])){ $prio= $plist[$na]['plPriority'] ; } $newSort[$name] = $prio; } asort($newSort); $ret = array(); foreach($newSort as $name => $prio){ $ret[$name] = $list[$name]; } return($ret); } function buildRoleSelector($list) { $selected = $this->aclContents; if(!is_string($this->aclContents) || !isset($list[$this->aclContents])){ $selected = key($list); } $data = $lData = array(); foreach($list as $dn => $values){ if($dn == $selected){ $option = ""; }else{ $option = ""; } $data[] = postEncode($dn); $lData[] = array('data'=>array($option, $values['cn'], $values['description'])); } $this->roleList->setListData($data,$lData); $this->roleList->update(); return($this->roleList->render()); } function buildAclSelector($list) { $display= ""; $cols= 3; $tmp= session::global_get('plist'); $plist= $tmp->info; asort($plist); /* Add select all/none buttons */ $style = "style='width:100px;'"; if($this->acl_is_writeable("")){ $display .= ""; $display .= ""; $display .= " - "; $display .= ""; $display .= " - "; $display .= ""; $display .= ""; $display .= "
    "; $style = "style='width:50px;'"; $display .= ""; $display .= ""; $display .= ""; $display .= ""; $display .= ""; $display .= " - "; $display .= ""; $display .= ""; $display .= ""; $display .= " - "; $display .= ""; $display .= ""; $display .= ""; $display .= ""; } /* Build general objects */ $list =$this->sort_by_priority($list); foreach ($list as $key => $name){ /* Create sub acl if it does not exist */ if (!isset($this->aclContents[$key])){ $this->aclContents[$key]= array(); } if(!isset($this->aclContents[$key][0])){ $this->aclContents[$key][0]= ''; } $currentAcl= $this->aclContents[$key]; /* Get the overall plugin acls */ $overall_acl =""; if(isset($currentAcl[0])){ $overall_acl = $currentAcl[0]; } // Detect configured plugins $expand = count($currentAcl) > 1 || $currentAcl[0] != ""; /* Object header */ $tname= preg_replace("/[^a-z0-9]/i","_",$name); if($expand){ $back_color = "#C8C8FF"; }else{ $back_color = "#C8C8C8"; } if(isset($_SERVER['HTTP_USER_AGENT']) && (preg_match("/gecko/i",$_SERVER['HTTP_USER_AGENT'])) || (preg_match("/presto/i",$_SERVER['HTTP_USER_AGENT']))) { $display.= "\n". "\n ". "\n ". "\n ". "\n "; } else if (isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/ie/i",$_SERVER['HTTP_USER_AGENT'])) { $display.= "\n
    "._("Object").": $name". "\n
    ". "\n ". "\n ". "\n ". "\n "; } else { $display.= "\n
    "._("Object").": $name". "\n
    ". "\n ". "\n ". "\n "; } /* Generate options */ $spc= "  "; $options= $this->mkchkbx($key."_0_c", _("Create objects"), preg_match('/c/', $overall_acl)).$spc; $options.= $this->mkchkbx($key."_0_m", _("Move objects"), preg_match('/m/', $overall_acl)).$spc; $options.= $this->mkchkbx($key."_0_d", _("Remove objects"), preg_match('/d/', $overall_acl)).$spc; if ($plist[preg_replace('%^.*/%', '', $key)]['plSelfModify']){ $options.= $this->mkchkbx($key."_0_s", _("Restrict changes to user's own object"), preg_match('/s/', $overall_acl)).$spc; } /* Global options */ $more_options= $this->mkchkbx($key."_0_r", _("read"), preg_match('/r/', $overall_acl)).$spc; $more_options.= $this->mkchkbx($key."_0_w", _("write"), preg_match('/w/', $overall_acl)); $display.= "\n ". "\n ". "\n ". "\n "; /* Walk through the list of attributes */ $cnt= 1; $splist= array(); if(isset($plist[preg_replace('%^.*/%', '', $key)]['plProvidedAcls'])){ $splist= $plist[preg_replace('%^.*/%', '', $key)]['plProvidedAcls']; } if(session::global_get('js')) { if(isset($_SERVER['HTTP_USER_AGENT']) && (preg_match("/gecko/i",$_SERVER['HTTP_USER_AGENT'])) || (preg_match("/presto/i",$_SERVER['HTTP_USER_AGENT']))) { $display.= "\n ". "\n "; } else { $this->header[$index]= ""; } $this->plainHeader[]= _($config['label']); } else { if ($sortable) { $this->header[$index]= ""; } else { $this->header[$index]= ""; } $this->plainHeader[]= ""; } } } } function render() { // Check for exeeded sizelimit if (($message= check_sizelimit()) != ""){ return($message); } // Some browsers don't have the ability do do scrollable table bodies, filter them // here. $switch= false; if (preg_match('/(Opera|Konqueror|Safari)/i', $_SERVER['HTTP_USER_AGENT'])){ $switch= true; } // Initialize list $result= "\n"; $result.= "\n"; $height= 450; if ($this->height != 0) { $result.= "\n"; $height= $this->height; } $result.= "
    \n"; $result.= "
    "._("Object").": $name
    $options "._("Complete object").": $more_options
    ". "\n "; $return .=""; $return .=""; $return .=""; $return .=""; } return($return); } } ?> gosa-core-2.7.4/include/class_listing.inc0000644000175000017500000016064211663662270017035 0ustar mikemikepid= preg_replace("/[^0-9]/", "", microtime(TRUE)); if($isString){ if(!$this->loadString($source)){ die("Cannot parse $source!"); } }else{ if (!$this->loadFile($source)) { die("Cannot parse $source!"); } } // Set base for filter if ($this->baseMode) { $this->base= session::global_get("CurrentMainBase"); if ($this->base == null) { $this->base= $config->current['BASE']; } $this->refreshBasesList(); } else { $this->base= $config->current['BASE']; } // Move footer information $this->showFooter= ($config->get_cfg_value("core","listSummary") == "true"); // Register build in filters $this->registerElementFilter("objectType", "listing::filterObjectType"); $this->registerElementFilter("departmentLink", "listing::filterDepartmentLink"); $this->registerElementFilter("link", "listing::filterLink"); $this->registerElementFilter("actions", "listing::filterActions"); // Load exporters foreach($class_mapping as $class => $dummy) { if (preg_match('/Exporter$/', $class)) { $info= call_user_func(array($class, "getInfo")); if ($info != null) { $this->exporter= array_merge($this->exporter, $info); } } } // Instanciate base selector $this->baseSelector= new baseSelector($this->bases, $this->base); } function setCopyPasteHandler($handler) { $this->copyPasteHandler= &$handler; } function setHeight($height) { $this->height= $height; } function setSnapshotHandler($handler) { $this->snapshotHandler= &$handler; } function getFilter() { return($this->filter); } function setFilter($filter) { $this->filter= &$filter; if ($this->departmentBrowser){ $this->departments= $this->getDepartments(); } $this->filter->setBase($this->base); } function registerElementFilter($name, $call) { if (!isset($this->filters[$name])) { $this->filters[$name]= $call; return true; } return false; } function loadFile($filename) { return($this->loadString(file_get_contents($filename))); } function loadString($contents) { $this->xmlData= xml::xml2array($contents, 1); if (!isset($this->xmlData['list'])) { return false; } $this->xmlData= $this->xmlData["list"]; // Load some definition values foreach (array("departmentBrowser", "departmentRootVisible", "multiSelect","singleSelect", "baseMode", "noAclChecks") as $token) { if (isset($this->xmlData['definition'][$token]) && $this->xmlData['definition'][$token] == "true"){ $this->$token= true; } } // Fill objectTypes from departments and xml definition $types = departmentManagement::get_support_departments(); foreach ($types as $class => $data) { $this->objectTypes[$data['OC']]= array("label" => $data['TITLE'], "objectClass" => $data['OC'], "image" => $data['IMG']); } $this->categories= array(); if (isset($this->xmlData['definition']['objectType'])) { if(isset($this->xmlData['definition']['objectType']['label'])) { $this->xmlData['definition']['objectType']= array($this->xmlData['definition']['objectType']); } foreach ($this->xmlData['definition']['objectType'] as $index => $otype) { $tmp = $this->xmlData['definition']['objectType'][$index]; $this->objectTypes[$tmp['objectClass']]= $tmp; if (isset($this->xmlData['definition']['objectType'][$index]['category'])){ $this->categories[]= $otype['category']; if(isset($otype['category']) && isset($otype['class'])){ $this->aclToObjectClass[$otype['category']."/".$otype['class']][] = $otype['objectClass']; } } } } $this->objectTypes = array_values($this->objectTypes); // Parse layout per column $this->colprops= $this->parseLayout($this->xmlData['table']['layout']); // Prepare table headers $this->renderHeader(); // Assign headline/Categories $this->headline= _($this->xmlData['definition']['label']); if (!is_array($this->categories)){ $this->categories= array($this->categories); } // Evaluate columns to be exported if (isset($this->xmlData['table']['column'])){ foreach ($this->xmlData['table']['column'] as $index => $config) { if (isset($config['export']) && $config['export'] == "true"){ $this->exportColumns[]= $index; } } } return true; } function renderHeader() { $this->header= array(); $this->plainHeader= array(); // Initialize sort? $sortInit= false; if (!$this->sortDirection) { $this->sortColumn= 0; if (isset($this->xmlData['definition']['defaultSortColumn'])){ $this->sortColumn= $this->xmlData['definition']['defaultSortColumn']; } else { $this->sortAttribute= ""; } $this->sortDirection= array(); $sortInit= true; } if (isset($this->xmlData['table']['column'])){ foreach ($this->xmlData['table']['column'] as $index => $config) { // Initialize everything to one direction if ($sortInit) { $this->sortDirection[$index]= false; } $sorter= ""; if ($index == $this->sortColumn && isset($config['sortAttribute']) && isset($config['sortType'])) { $this->sortAttribute= $config['sortAttribute']; $this->sortType= $config['sortType']; $sorter= " ".image("images/lists/sort-".($this->sortDirection[$index]?"up":"down").".png", null, $this->sortDirection[$index]?_("Sort ascending"):_("Sort descending"), "text-top"); } $sortable= (isset($config['sortAttribute'])); $link= "href='?plug=".$_GET['plug']."&PID=".$this->pid."&act=SORT_$index'"; if (isset($config['label'])) { if ($sortable) { $this->header[$index]= "colprops[$index].">"._($config['label'])."$sortercolprops[$index].">"._($config['label'])."colprops[$index]."> $sortercolprops[$index]."> 
    \n"; $this->numColumns= count($this->colprops) + (($this->multiSelect|$this->singleSelect)?1:0); // Build list header $result.= "\n"; if ($this->multiSelect || $this->singleSelect) { $width= "24px"; if (preg_match('/Konqueror/i', $_SERVER['HTTP_USER_AGENT'])){ $width= "28px"; } $result.= "\n"; } foreach ($this->header as $header) { $result.= $header; } $result.= "\n"; // Build list body $result.= "\n"; // No results? Just take an empty colspanned row if (count($this->entries) + count($this->departments) == 0) { $result.= ""; } // Line color alternation $alt= 0; $deps= 0; // Draw department browser if configured and we're not in sub mode $this->useSpan= false; if ($this->departmentBrowser && $this->filter->scope != "sub") { // Fill with department browser if configured this way $departmentIterator= new departmentSortIterator($this->departments, $this->sortDirection[$this->sortColumn]); foreach ($departmentIterator as $row => $entry){ $rowResult= ""; // Render multi select if needed if ($this->multiSelect || $this->singleSelect) { $rowResult.=""; } // Render defined department columns, fill the rest with some stuff $rest= $this->numColumns - 1; foreach ($this->xmlData['table']['department'] as $index => $config) { $colspan= 1; if (isset($config['span'])){ $colspan= $config['span']; $this->useSpan= true; } $rowResult.=""; $rest-= $colspan; } // Fill remaining cols with nothing $last= $this->numColumns - $rest; for ($i= 0; $i<$rest; $i++){ $rowResult.= ""; } $rowResult.=""; // Apply label to objecttype icon? if (preg_match("//i", $rowResult, $matches)){ $objectType= image($matches[1], null, LDAP::fix(base64_decode($matches[2]))); $rowResult= preg_replace("/]+>/", $objectType, $rowResult); } $result.= $rowResult; $alt++; } $deps= $alt; } // Fill with contents, sort as configured $ui = get_userinfo(); foreach ($this->entries as $row => $entry) { $trow= ""; // Render multi select if needed if ($this->multiSelect) { $trow.="\n"; } if ($this->singleSelect) { $trow.="\n"; } foreach ($this->xmlData['table']['column'] as $index => $config) { $renderedCell= $this->renderCell($config['value'], $entry, $row); $trow.="\n"; // Save rendered column $sort= preg_replace('/.*>([^<]+)<.*$/', '$1', $renderedCell); $sort= preg_replace('/ /', '', $sort); if (preg_match('/entries[$row]["_sort$index"]= $sort; } // Save rendered entry $this->entries[$row]['_rendered']= $trow; } // Complete list by sorting entries for _sort$index and appending them to the output $entryIterator= new listingSortIterator($this->entries, $this->sortDirection[$this->sortColumn], "_sort".$this->sortColumn, $this->sortType); foreach ($entryIterator as $row => $entry){ // Apply label to objecttype icon? if (preg_match("//i", $entry['_rendered'], $matches)){ if (preg_match("//i", $entry['_rendered'], $m)) { $objectType= image($matches[1]."[".$m[1]."]", null, LDAP::fix(base64_decode($matches[2]))); } else { $objectType= image($matches[1], null, LDAP::fix(base64_decode($matches[2]))); } $entry['_rendered']= preg_replace("/]+>/", $objectType, $entry['_rendered']); $entry['_rendered']= preg_replace("/]+>/", '', $entry['_rendered']); } // Apply custom class to row? if (preg_match("//i", $entry['_rendered'], $matches)) { $result.="\n"; $result.= preg_replace("/]+>/", '', $entry['_rendered']); } else { $result.="\n"; $result.= $entry['_rendered']; } $result.="\n"; $alt++; } // Need to fill the list if it's not full (nobody knows why this is 22 ;-)) $emptyListStyle= (count($this->entries) + (($this->useSpan && count($this->entries))?$deps:0) == 0)?"border:0;":""; if ((count($this->entries) + $deps) < 22) { $result.= ""; for ($i= 0; $i<$this->numColumns; $i++) { if ($i == 0) { $result.= ""; continue; } if ($i != $this->numColumns-1) { $result.= ""; } else { $result.= ""; } } $result.= ""; } // Close list body $result.= "
    "; if($this->multiSelect){ $result.= ""; }else{ $result.= " "; } $result.="
     
     colprops[$index]." class='list1'>".$this->renderCell($config['value'], $entry, $row)."colprops[$last+$i-1]." class='list1'> 
    colprops[$index]." class='list0'>".$renderedCell."
       
    "; // Add the footer if requested if ($this->showFooter) { $result.= "
    "; foreach ($this->objectTypes as $objectType) { if (isset($this->objectTypeCount[$objectType['label']])) { $label= _($objectType['label']); $result.= image($objectType['image'], null, $label)." ".$this->objectTypeCount[$objectType['label']]."  "; }elseif (isset($this->objectTypeCount[$objectType['objectClass']])) { $label= _($objectType['label']); $result.= image($objectType['image'], null, $label)." ".$this->objectTypeCount[$objectType['objectClass']]."  "; } } $result.= "
    "; } // Close list $result.= $switch?"":""; // Add scroll positioner $result.= ''; $smarty= get_smarty(); $smarty->assign("FILTER", $this->filter->render()); $smarty->assign("SIZELIMIT", print_sizelimit_warning()); $smarty->assign("LIST", $result); // Assign navigation elements $nav= $this->renderNavigation(); foreach ($nav as $key => $html) { $smarty->assign($key, $html); } // Assign action menu / base $smarty->assign("HEADLINE", $this->headline); $smarty->assign("ACTIONS", $this->renderActionMenu()); $smarty->assign("BASE", $this->renderBase()); // Assign separator $smarty->assign("SEPARATOR", "-"); // Assign summary $smarty->assign("HEADLINE", $this->headline); // Try to load template from plugin the folder first... $file = get_template_path($this->xmlData['definition']['template'], true); // ... if this fails, try to load the file from the theme folder. if(!file_exists($file)){ $file = get_template_path($this->xmlData['definition']['template']); } return ($smarty->fetch($file)); } function update() { global $config; $ui= get_userinfo(); // Take care of base selector if ($this->baseMode) { $this->baseSelector->update(); // Check if a wrong base was supplied if(!$this->baseSelector->checkLastBaseUpdate()){ msg_dialog::display(_("Error"), msgPool::check_base(), ERROR_DIALOG); } } // Save base $refresh= false; if ($this->baseMode) { $this->base= $this->baseSelector->getBase(); session::global_set("CurrentMainBase", $this->base); $refresh= true; } // Reset object counter / DN mapping $this->objectTypeCount= array(); $this->objectDnMapping= array(); // Do not do anything if this is not our PID if($refresh || !(isset($_REQUEST['PID']) && $_REQUEST['PID'] != $this->pid)) { // Save position if set if (isset($_POST['position_'.$this->pid]) && is_numeric($_POST['position_'.$this->pid])) { $this->scrollPosition= get_post('position_'.$this->pid); } // Override the base if we got a message from the browser navigation if ($this->departmentBrowser && isset($_GET['act'])) { if (preg_match('/^department_([0-9]+)$/', validate($_GET['act']), $match)){ if (isset($this->departments[$match[1]])){ $this->base= $this->departments[$match[1]]['dn']; if ($this->baseMode) { $this->baseSelector->setBase($this->base); } session::global_set("CurrentMainBase", $this->base); } } } // Filter POST with "act" attributes -> posted from action menu if (isset($_POST['exec_act']) && $_POST['act'] != '') { if (preg_match('/^export.*$/', $_POST['act']) && isset($this->exporter[$_POST['act']])) { $exporter= $this->exporter[get_post('act')]; $userinfo= ", "._("created by")." ".$ui->cn." - ".strftime('%A, %d. %B %Y, %H:%M:%S'); $entryIterator= new listingSortIterator($this->entries, $this->sortDirection[$this->sortColumn], "_sort".$this->sortColumn, $this->sortType); $sortedEntries= array(); foreach ($entryIterator as $entry){ $sortedEntries[]= $entry; } $instance= new $exporter['class']($this->headline.$userinfo, $this->plainHeader, $sortedEntries, $this->exportColumns); $type= call_user_func(array($exporter['class'], "getInfo")); $type= $type[get_post('act')]; send_binary_content($instance->query(), $type['filename'], $type= $type['mime']); } } // Filter GET with "act" attributes if (isset($_GET['act'])) { $key= validate($_GET['act']); if (preg_match('/^SORT_([0-9]+)$/', $key, $match)) { // Switch to new column or invert search order? $column= $match[1]; if ($this->sortColumn != $column) { $this->sortColumn= $column; } else { $this->sortDirection[$column]= !$this->sortDirection[$column]; } // Allow header to update itself according to the new sort settings $this->renderHeader(); } } // Override base if we got signals from the navigation elements $action= ""; foreach ($_POST as $key => $value) { if (preg_match('/^(ROOT|BACK|HOME)(_x)?$/', $key, $match)) { $action= $match[1]; break; } } // Navigation handling if ($action == 'ROOT') { $deps= $ui->get_module_departments($this->categories); $this->base= $deps[0]; $this->baseSelector->setBase($this->base); session::global_set("CurrentMainBase", $this->base); } if ($action == 'BACK') { $deps= $ui->get_module_departments($this->categories); $base= preg_replace("/^[^,]+,/", "", $this->base); if(in_array_ics($base, $deps)){ $this->base= $base; $this->baseSelector->setBase($this->base); session::global_set("CurrentMainBase", $this->base); } } if ($action == 'HOME') { $ui= get_userinfo(); $this->base= get_base_from_people($ui->dn); $this->baseSelector->setBase($this->base); session::global_set("CurrentMainBase", $this->base); } } // Reload departments if ($this->departmentBrowser){ $this->departments= $this->getDepartments(); } // Update filter and refresh entries $this->filter->setBase($this->base); $this->entries= $this->filter->query(); // Check entry acls if(!$this->noAclChecks){ foreach($this->entries as $row => $entry){ $acl = ""; $found = false; foreach($this->aclToObjectClass as $category => $ocs){ if(count(array_intersect($ocs, $entry['objectClass']))){ $acl .= $ui->get_permissions($entry['dn'],$category, 0); $found = true; } } if(!preg_match("/r/", $acl) && $found){ unset($this->entries[$row]); continue; } } } // Fix filter if querie returns NULL if ($this->entries == null) { $this->entries= array(); } } function setBase($base) { $this->base= $base; if ($this->baseMode) { $this->baseSelector->setBase($this->base); } } function getBase() { return $this->base; } function parseLayout($layout) { $result= array(); $layout= preg_replace("/^\|/", "", $layout); $layout= preg_replace("/\|$/", "", $layout); $cols= explode("|", $layout); foreach ($cols as $index => $config) { if ($config != "") { $res= ""; $components= explode(';', $config); foreach ($components as $part) { if (preg_match("/^r$/", $part)) { $res.= "text-align:right;"; continue; } if (preg_match("/^l$/", $part)) { $res.= "text-align:left;"; continue; } if (preg_match("/^c$/", $part)) { $res.= "text-align:center;"; continue; } if (preg_match("/^[0-9]+(|px|%)$/", $part)) { $res.= "width:$part;min-width:$part;"; continue; } } // Add minimum width for scalable columns if (!preg_match('/width:/', $res)){ $res.= "min-width:200px;"; } $result[$index]= " style='$res'"; } else { $result[$index]= " style='min-width:100px;'"; } } // Save number of columns for later use $this->numColumns= count($cols); // Add no border to the last column $result[$this->numColumns-1]= preg_replace("/'$/", "border-right:0;'", $result[$this->numColumns-1]); return $result; } function renderCell($data, $config, $row) { // Replace flat attributes in data string for ($i= 0; $i<$config['count']; $i++) { $attr= $config[$i]; $value= ""; if (is_array($config[$attr])) { $value= $config[$attr][0]; } else { $value= $config[$attr]; } $data= preg_replace("/%\{$attr\}/", $value, $data); } // Watch out for filters and prepare to execute them $data= $this->processElementFilter($data, $config, $row); // Replace all non replaced %{...} instances because they // are non resolved attributes or filters $data= preg_replace('/%{[^}]+}/', ' ', $data); return $data; } function renderBase() { if (!$this->baseMode) { return; } return $this->baseSelector->render(); } function processElementFilter($data, $config, $row) { preg_match_all("/%\{filter:([^(]+)\((.*)\)\}/", $data, $matches, PREG_SET_ORDER); foreach ($matches as $match) { $cl= ""; $method= ""; if (preg_match('/::/', $match[1])) { $cl= preg_replace('/::.*$/', '', $match[1]); $method= preg_replace('/^.*::/', '', $match[1]); } else { if (!isset($this->filters[$match[1]])) { continue; } $cl= preg_replace('/::.*$/', '', $this->filters[$match[1]]); $method= preg_replace('/^.*::/', '', $this->filters[$match[1]]); } // Prepare params for function call $params= array(); preg_match_all('/"[^"]+"|[^,]+/', $match[2], $parts); foreach ($parts[0] as $param) { // Row is replaced by the row number if ($param == "row") { $params[]= $row; continue; } // pid is replaced by the current PID if ($param == "pid") { $params[]= $this->pid; continue; } // base is replaced by the current base if ($param == "base") { $params[]= $this->getBase(); continue; } // Fixie with "" is passed directly if (preg_match('/^".*"$/', $param)){ $params[]= preg_replace('/"/', '', $param); continue; } // Move dn if needed if ($param == "dn") { $params[]= LDAP::fix($config["dn"]); continue; } // LDAP variables get replaced by their objects for ($i= 0; $i<$config['count']; $i++) { if ($param == $config[$i]) { $values= $config[$config[$i]]; if (is_array($values)){ unset($values['count']); } $params[]= $values; break; } } } // Replace information if ($cl == "listing") { // Non static call - seems to result in errors $data= @preg_replace('/'.preg_quote($match[0]).'/', call_user_func_array(array($this, "$method"), $params), $data); } else { // Static call $data= preg_replace('/'.preg_quote($match[0]).'/', call_user_func_array(array($cl, $method), $params), $data); } } return $data; } function getObjectType($types, $classes) { // Walk thru types and see if there's something matching foreach ($types as $objectType) { $ocs= $objectType['objectClass']; if (!is_array($ocs)){ $ocs= array($ocs); } $found= true; foreach ($ocs as $oc){ if (preg_match('/^!(.*)$/', $oc, $match)) { $oc= $match[1]; if (in_array_strict($oc, $classes)) { $found= false; } } else { if (!in_array_strict($oc, $classes)) { $found= false; } } } if ($found) { return $objectType; } } return null; } function filterObjectType($dn, $classes) { // Walk thru classes and return on first match $result= " "; $objectType= $this->getObjectType($this->objectTypes, $classes); if ($objectType) { $this->objectDnMapping[$dn]= $objectType["objectClass"]; $result= ""; if (!isset($this->objectTypeCount[$objectType['label']])) { $this->objectTypeCount[$objectType['label']]= 0; } $this->objectTypeCount[$objectType['label']]++; } return $result; } function filterActions($dn, $row, $classes) { // Do nothing if there's no menu defined if (!isset($this->xmlData['actiontriggers']['action'])) { return " "; } // Go thru all actions $result= ""; $actions= $this->xmlData['actiontriggers']['action']; // Ensure we've a valid actions array, if there is only one action in the actiontriggers col // then we've to create a valid array here. if(isset($actions['name'])) $actions = array($actions); foreach($actions as $action) { // Skip the entry completely if there's no permission to execute it if (!$this->hasActionPermission($action, $dn, $classes)) { $result.= image('images/empty.png'); continue; } // Skip entry if the pseudo filter does not fit if (isset($action['filter']) && preg_match('/^[a-z0-9_]+!?=[a-z0-9_]+$/i', $action['filter'])) { list($fa, $fv)= explode('=', $action['filter']); if (preg_match('/^(.*)!$/', $fa, $m)){ $fa= $m[1]; if (isset($this->entries[$row][$fa]) && $this->entries[$row][$fa][0] == $fv) { $result.= image('images/empty.png'); continue; } } else { if (!isset($this->entries[$row][$fa]) && !$this->entries[$row][$fa][0] == $fv) { $result.= image('images/empty.png'); continue; } } } // If there's an objectclass definition and we don't have it // add an empty picture here. if (isset($action['objectclass'])){ $objectclass= $action['objectclass']; if (preg_match('/^!(.*)$/', $objectclass, $m)){ $objectclass= $m[1]; if(in_array_strict($objectclass, $classes)) { $result.= image('images/empty.png'); continue; } } elseif (is_string($objectclass)) { if(!in_array_strict($objectclass, $classes)) { $result.= image('images/empty.png'); continue; } } elseif (is_array($objectclass)) { if(count(array_intersect($objectclass, $classes)) != count($objectclass)){ $result.= image('images/empty.png'); continue; } } } // Render normal entries as usual if ($action['type'] == "entry") { $label= $this->processElementFilter($action['label'], $this->entries[$row], $row); $image= $this->processElementFilter($action['image'], $this->entries[$row], $row); $result.= image($image, "listing_".$action['name']."_$row", $label); } // Handle special types if ($action['type'] == "copypaste" || $action['type'] == "snapshot") { $objectType= $this->getObjectType($this->objectTypes, $this->entries[$row]['objectClass']); $category= $class= null; if ($objectType) { $category= $objectType['category']; $class= $objectType['class']; } if ($action['type'] == "copypaste") { $copy = !isset($action['copy']) || $action['copy'] == "true"; $cut = !isset($action['cut']) || $action['cut'] == "true"; $result.= $this->renderCopyPasteActions($row, $this->entries[$row]['dn'], $category, $class,$copy,$cut); } else { $result.= $this->renderSnapshotActions($row, $this->entries[$row]['dn'], $category, $class); } } } return $result; } function filterDepartmentLink($row, $dn, $description) { $attr= $this->departments[$row]['sort-attribute']; $name= $this->departments[$row][$attr]; if (is_array($name)){ $name= $name[0]; } $result= sprintf("%s [%s]", $name, $description[0]); return("pid&act=department_$row' title='$dn'>".set_post($result).""); } function filterLink() { $result= " "; $row= func_get_arg(0); $pid= $this->pid; // Prepare title attribute $titleAttr = func_get_arg(1); if(is_array($titleAttr) && isset($titleAttr[0])){ $titleAttr = $titleAttr[0]; } $titleAttr = LDAP::fix($titleAttr); $params= array(func_get_arg(2)); // Collect sprintf params for ($i = 3;$i < func_num_args();$i++) { $val= func_get_arg($i); if (is_array($val)){ $params[]= $val[0]; continue; } $params[]= $val; } $result= " "; $trans= call_user_func_array("sprintf", $params); if ($trans != "") { return("".set_post($trans).""); } return $result; } function renderNavigation() { $result= array(); $enableBack = true; $enableRoot = true; $enableHome = true; $ui = get_userinfo(); /* Check if base = first available base */ $deps = $ui->get_module_departments($this->categories); if(!count($deps) || $deps[0] == $this->filter->base){ $enableBack = false; $enableRoot = false; } $listhead =""; /* Check if we are in users home department */ if(!count($deps) || $this->filter->base == get_base_from_people($ui->dn)){ $enableHome = false; } /* Draw root button */ if($enableRoot){ $result["ROOT"]= image('images/lists/root.png', 'ROOT', _("Root")); }else{ $result["ROOT"]= image('images/lists/root-grey.png', null, _("Root")); } /* Draw back button */ if($enableBack){ $result["BACK"]= image('images/lists/back.png', 'BACK', _("Go to preceding level")); }else{ $result["BACK"]= image('images/lists/back-grey.png', null, _("Go to preceding level")); } /* Draw home button */ /* Draw home button */ if($enableHome){ $result["HOME"]= image('images/lists/home.png', 'HOME', _("Go to current users level")); }else{ $result["HOME"]= image('images/lists/home-grey.png', null, _("Go to current users level")); } /* Draw reload button, this button is enabled everytime */ $result["RELOAD"]= image('images/lists/reload.png', 'REFRESH', _("Reload list")); return ($result); } function getAction() { // Do not do anything if this is not our PID, or there's even no PID available... if(!isset($_REQUEST['PID']) || $_REQUEST['PID'] != $this->pid) { return; } // Save position if set if (isset($_POST['position_'.$this->pid]) && is_numeric($_POST['position_'.$this->pid])) { $this->scrollPosition= get_post('position_'.$this->pid); } $result= array("targets" => array(), "action" => ""); // Filter GET with "act" attributes if (isset($_GET['act'])) { $key= validate($_GET['act']); $target= preg_replace('/^listing_[a-zA-Z_]+_([0-9]+)$/', '$1', $key); if (isset($this->entries[$target]['dn'])) { $result['action']= preg_replace('/^listing_([a-zA-Z_]+)_[0-9]+$/', '$1', $key); $result['targets'][]= $this->entries[$target]['dn']; } // Drop targets if empty if (count($result['targets']) == 0) { unset($result['targets']); } return $result; } // Get single selection (radio box) if($this->singleSelect && isset($_POST['listing_radio_selected'])){ $entry = get_post('listing_radio_selected'); $result['targets']= array($this->entries[$entry]['dn']); } // Filter POST with "listing_" attributes foreach ($_POST as $key => $prop) { $prop = get_post($key); // Capture selections if (preg_match('/^listing_selected_[0-9]+$/', $key)) { $target= preg_replace('/^listing_selected_([0-9]+)$/', '$1', $key); if (isset($this->entries[$target]['dn'])) { $result['targets'][]= $this->entries[$target]['dn']; } continue; } // Capture action with target - this is a one shot if (preg_match('/^listing_[a-zA-Z_]+_[0-9]+(|_x)$/', $key)) { $target= preg_replace('/^listing_[a-zA-Z_]+_([0-9]+)(|_x)$/', '$1', $key); if (isset($this->entries[$target]['dn'])) { $result['action']= preg_replace('/^listing_([a-zA-Z_]+)_[0-9]+(|_x)$/', '$1', $key); $result['targets']= array($this->entries[$target]['dn']); } break; } // Capture action without target if (preg_match('/^listing_[a-zA-Z_]+(|_x)$/', $key)) { $result['action']= preg_replace('/^listing_([a-zA-Z_]+)(|_x)$/', '$1', $key); continue; } } // Filter POST with "act" attributes -> posted from action menu if (isset($_POST['act']) && $_POST['act'] != '') { if (!preg_match('/^export.*$/', $_POST['act'])){ $result['action']= get_post('act'); } } // Drop targets if empty if (count($result['targets']) == 0) { unset($result['targets']); } return $result; } function renderActionMenu() { $result= "
    "; // Don't send anything if the menu is not defined if (!isset($this->xmlData['actionmenu']['action'])){ return $result; } // Array? if (isset($this->xmlData['actionmenu']['action']['type'])){ $this->xmlData['actionmenu']['action']= array($this->xmlData['actionmenu']['action']); } // Load shortcut $actions= &$this->xmlData['actionmenu']['action']; $result.= ""; } function recurseActions($actions) { global $class_mapping; static $level= 2; $result= "
      "; $separator= ""; foreach ($actions as $action) { // Skip the entry completely if there's no permission to execute it if (!$this->hasActionPermission($action, $this->filter->base)) { continue; } // Skip entry if there're missing dependencies if (isset($action['depends'])) { $deps= is_array($action['depends'])?$action['depends']:array($action['depends']); foreach($deps as $clazz) { if (!isset($class_mapping[$clazz])){ continue 2; } } } // Fill image if set $img= ""; if (isset($action['image'])){ $img= image($action['image'])." "; } if ($action['type'] == "separator"){ $separator= " style='border-top:1px solid #AAA' "; continue; } // Dive into subs if ($action['type'] == "sub" && isset($action['action'])) { $level++; if (isset($action['label'])){ $result.= "$img"._($action['label'])." ".image('images/forward-arrow.png').""; } // Ensure we've an array of actions, this enables sub menus with only one action. if(isset($action['action']['type'])){ $action['action'] = array($action['action']); } $result.= $this->recurseActions($action['action']).""; $level--; $separator= ""; continue; } // Render entry elseways if (isset($action['label'])){ $result.= "$img"._($action['label']).""; } // Check for special types switch ($action['type']) { case 'copypaste': $cut = !isset($action['cut']) || $action['cut'] != "false"; $copy = !isset($action['copy']) || $action['copy'] != "false"; $result.= $this->renderCopyPasteMenu($separator, $copy , $cut); break; case 'snapshot': $result.= $this->renderSnapshotMenu($separator); break; case 'exporter': $result.= $this->renderExporterMenu($separator); break; case 'daemon': $result.= $this->renderDaemonMenu($separator); break; } $separator= ""; } $result.= "
    "; return $result; } function hasActionPermission($action, $dn, $classes= null) { $ui= get_userinfo(); if (isset($action['acl'])) { $acls= $action['acl']; if (!is_array($acls)) { $acls= array($acls); } // Every ACL has to pass foreach ($acls as $acl) { $module= $this->categories; $aclList= array(); // Replace %acl if available if ($classes) { $otype= $this->getObjectType($this->objectTypes, $classes); $acl= str_replace('%acl', $otype['category']."/".$otype['class'], $acl); } // Split for category and plugins if needed // match for "[rw]" style entries if (preg_match('/^\[([rwcdm]+)\]$/', $acl, $match)){ $aclList= array($match[1]); } // match for "users[rw]" style entries if (preg_match('/^([a-zA-Z0-9]+)\[([rwcdm]+)\]$/', $acl, $match)){ $module= $match[1]; $aclList= array($match[2]); } // match for "users/user[rw]" style entries if (preg_match('/^([a-zA-Z0-9]+\/[a-zA-Z0-9]+)\[([rwcdm]+)\]$/', $acl, $match)){ $module= $match[1]; $aclList= array($match[2]); } // match "users/user[userPassword:rw(,...)*]" style entries if (preg_match('/^([a-zA-Z0-9]+\/[a-zA-Z0-9]+)\[([a-zA-Z0-9]+:[rwcdm]+(,[a-zA-Z0-9]+:[rwcdm]+)*)\]$/', $acl, $match)){ $module= $match[1]; $aclList= explode(',', $match[2]); } // Walk thru prepared ACL by using $module foreach($aclList as $sAcl) { $checkAcl= ""; // Category or detailed permission? if (strpos($module, '/') !== false) { if (preg_match('/([a-zA-Z0-9]+):([rwcdm]+)/', $sAcl, $m) ) { $checkAcl= $ui->get_permissions($dn, $module, $m[1]); $sAcl= $m[2]; } else { $checkAcl= $ui->get_permissions($dn, $module, '0'); } } else { $checkAcl= $ui->get_category_permissions($dn, $module); } // Split up remaining part of the acl and check if it we're // allowed to do something... $parts= str_split($sAcl); foreach ($parts as $part) { if (strpos($checkAcl, $part) === false){ return false; } } } } } return true; } function refreshBasesList() { global $config; $ui= get_userinfo(); // Do some array munching to get it user friendly $ids= $config->idepartments; $d= $ui->get_module_departments($this->categories); $k_ids= array_keys($ids); $deps= array_intersect($d,$k_ids); // Fill internal bases list $this->bases= array(); foreach($k_ids as $department){ $this->bases[$department] = $ids[$department]; } // Populate base selector if already present if ($this->baseSelector && $this->baseMode) { $this->baseSelector->setBases($this->bases); $this->baseSelector->update(TRUE); } } function getDepartments() { $departments= array(); $ui= get_userinfo(); // Get list of supported department types $types = departmentManagement::get_support_departments(); // Load departments allowed by ACL $validDepartments = $ui->get_module_departments($this->categories); // Build filter and look in the LDAP for possible sub departments // of current base $filter= "(&(objectClass=gosaDepartment)(|"; $attrs= array("description", "objectClass"); foreach($types as $name => $data){ $filter.= "(objectClass=".$data['OC'].")"; $attrs[]= $data['ATTR']; } $filter.= "))"; $res= get_list($filter, $this->categories, $this->base, $attrs, GL_NONE); // Analyze list of departments foreach ($res as $department) { if (!in_array_strict($department['dn'], $validDepartments)) { continue; } // Add the attribute where we use for sorting $oc= null; foreach(array_keys($types) as $type) { if (in_array_strict($type, $department['objectClass'])) { $oc= $type; break; } } $department['sort-attribute']= $types[$oc]['ATTR']; // Move to the result list $departments[]= $department; } return $departments; } function renderCopyPasteMenu($separator, $copy= true, $cut= true) { // We can only provide information if we've got a copypaste handler // instance if(!(isset($this->copyPasteHandler) && is_object($this->copyPasteHandler))){ return ""; } // Presets $result= ""; $read= $paste= false; $ui= get_userinfo(); // Switch flags to on if there's at least one category which allows read/paste foreach($this->categories as $category){ $read= $read || preg_match('/r/', $ui->get_category_permissions($this->base, $category)); $paste= $paste || $ui->is_pasteable($this->base, $category) == 1; } // Draw entries that allow copy and cut if($read){ // Copy entry if($copy){ $result.= "".image('images/lists/copy.png')." "._("Copy").""; $separator= ""; } // Cut entry if($cut){ $result.= "".image("images/lists/cut.png")." "._("Cut").""; $separator= ""; } } // Draw entries that allow pasting entries if($paste){ if($this->copyPasteHandler->entries_queued()){ $result.= "".image("images/lists/paste.png")." "._("Paste").""; }else{ $result.= "".image('images/lists/paste-grey.png')." "._("Paste").""; } } return($result); } function renderCopyPasteActions($row, $dn, $category, $class, $copy= true, $cut= true) { // We can only provide information if we've got a copypaste handler // instance if(!(isset($this->copyPasteHandler) && is_object($this->copyPasteHandler))){ return ""; } // Presets $ui = get_userinfo(); $result = ""; // Render cut entries if($cut){ if($ui->is_cutable($dn, $category, $class)){ $result.= image('images/lists/cut.png', "listing_cut_$row", _("Cut this entry")); }else{ $result.= image('images/empty.png'); } } // Render copy entries if($copy){ if($ui->is_copyable($dn, $category, $class)){ $result.= image('images/lists/copy.png', "listing_copy_$row", _("Copy this entry")); }else{ $result.= image('images/empty.png'); } } return($result); } function renderSnapshotMenu($separator) { // We can only provide information if we've got a snapshot handler // instance if(!(isset($this->snapshotHandler) && is_object($this->snapshotHandler))){ return ""; } // Presets $result = ""; $ui = get_userinfo(); if($this->snapshotHandler->enabled() && $ui->allow_snapshot_restore($this->base, $this->categories)){ // Check if there is something to restore $restore= false; foreach($this->snapshotHandler->getSnapshotBases() as $base){ $restore= $restore || count($this->snapshotHandler->getDeletedSnapshots($base)) > 0; } // Draw icons according to the restore flag if($restore){ $result.= "".image('images/lists/restore.png')." "._("Restore snapshots").""; }else{ $result.= "".image('images/lists/restore-grey.png')." "._("Restore snapshots").""; } } return($result); } function renderExporterMenu($separator) { // Presets $result = ""; // Draw entries $result.= "".image('images/lists/export.png')." "._("Export list")." ".image("images/forward-arrow.png").""; return($result); } function renderSnapshotActions($row, $dn, $category, $class, $copy= true, $cut= true) { // We can only provide information if we've got a snapshot handler // instance if(!(isset($this->snapshotHandler) && is_object($this->snapshotHandler))){ return ""; } // Presets $result= ""; $ui = get_userinfo(); // Only act if enabled here if($this->snapshotHandler->enabled()){ // Draw restore button if ($ui->allow_snapshot_restore($dn, $category)){ // Do we have snapshots for this dn? if($this->snapshotHandler->hasSnapshots($dn)){ $result.= image('images/lists/restore.png', "listing_restore_$row", _("Restore snapshot")); } else { $result.= image('images/lists/restore-grey.png'); } } // Draw snapshot button if($ui->allow_snapshot_create($dn, $category)){ $result.= image('images/snapshot.png', "listing_snapshot_$row", _("Create new snapshot for this object")); }else{ $result.= image('images/empty.png'); } } return($result); } function renderDaemonMenu($separator) { $result= ""; // If there is a daemon registered, draw the menu entries if(class_available("DaemonEvent")){ $events= DaemonEvent::get_event_types_by_category($this->categories); if(isset($events['BY_CLASS']) && count($events['BY_CLASS'])){ foreach($events['BY_CLASS'] as $name => $event){ $result.= "".$event['MenuImage']." ".$event['s_Menu_Name'].""; $separator= ""; } } } return $result; } function getEntry($dn) { foreach ($this->entries as $entry) { if (isset($entry['dn']) && strcasecmp($dn, $entry['dn']) == 0){ return $entry; } } return null; } function getEntries() { return $this->entries; } function getType($dn) { $dn = LDAP::fix($dn); if (isset($this->objectDnMapping[$dn])) { return $this->objectDnMapping[$dn]; } return null; } } ?> gosa-core-2.7.4/include/password-methods/0000755000175000017500000000000011752422552016772 5ustar mikemikegosa-core-2.7.4/include/password-methods/class_password-methods.inc0000644000175000017500000003333111476176512024165 0ustar mikemikeget_hash_name() == ""){ return("{crypt}N0T$3T4N0W"); }else{ return('{'.$this->get_hash().'}').'N0T$3T4N0W'; } } function get_hash_name() { } function is_locked($config,$dn = "") { if(!$this->lockable) return FALSE; /* Get current password hash */ $pwd =""; if(!empty($dn)){ $ldap = $config->get_ldap_link(); $ldap->cd($config->current['BASE']); $ldap->cat($dn); $attrs = $ldap->fetch(); if(isset($attrs['userPassword'][0])){ $pwd = $attrs['userPassword'][0]; } }elseif(isset($this->attrs['userPassword'][0])){ $pwd = $this->attrs['userPassword'][0]; } return(preg_match("/^[^\}]*+\}!/",$pwd)); } /*! \brief Locks an account (gosaAccount) by added a '!' as prefix to the password hashes. * This makes logins impossible, due to the fact that the hash becomes invalid. * userPassword: {SHA}!q02NKl9IChNwZEAJxzRdmB6E * sambaLMPassword: !EBD223B61F8C259AD3B435B51404EE * sambaNTPassword: !98BB35737013AAF181D0FE9FDA09E */ function lock_account($config,$dn = "") { if(!$this->lockable) return FALSE; /* Get current password hash */ $userPassword = $sambaLMPassword = $sambaNTPassword = ""; $ldap = $config->get_ldap_link(); $ldap->cd($config->current['BASE']); if(!empty($dn)){ $ldap->cat($dn,array('sambaLMPassword','sambaNTPassword','userPassword')); $attrs = $ldap->fetch(); $userPassword = (isset($attrs['userPassword'][0])) ? $attrs['userPassword'][0]: ""; $sambaLMPassword = (isset($attrs['sambaLMPassword'][0])) ? $attrs['sambaLMPassword'][0]: ""; $sambaNTPassword = (isset($attrs['sambaNTPassword'][0])) ? $attrs['sambaNTPassword'][0]: ""; }elseif(isset($this->attrs['userPassword'][0])){ $dn = $this->attrs['dn']; $userPassword = (isset($this->attrs['userPassword'][0])) ? $this->attrs['userPassword'][0]: ""; $sambaLMPassword = (isset($this->attrs['sambaLMPassword'][0])) ? $this->attrs['sambaLMPassword'][0]: ""; $sambaNTPassword = (isset($this->attrs['sambaNTPassword'][0])) ? $this->attrs['sambaNTPassword'][0]: ""; } /* We can only lock/unlock non-empty passwords */ if(!empty($userPassword)){ /* Check if this entry is already locked. */ if(preg_match("/^[^\}]*+\}!/",$userPassword)){ return(TRUE); } /* Lock entry */ $userPassword = preg_replace("/(^[^\}]+\})(.*$)/","\\1!\\2",$userPassword); // Only lock samba hashes if samba passwords are enabled $smbPasswdEnabled = trim($config->get_cfg_value('core','sambaHashHook')) != ""; if($smbPasswdEnabled){ $sambaLMPassword = preg_replace("/^[!]*(.*$)/","!\\1",$sambaLMPassword); $sambaNTPassword = preg_replace("/^[!]*(.*$)/","!\\1",$sambaNTPassword); } // Call external lock hook $res = $ldap->cat($dn); $hookAttrs = array(); foreach($ldap->fetch() as $name => $value){ if(is_numeric($name)) continue; if(isset($value[0])) $hookAttrs[$name] = $value[0]; if(isset($value) && is_string($value)) $hookAttrs[$name] = $value; } $pwdClass = new password($config, $dn); $pwdClass->callHook($pwdClass, 'PRELOCK',$hookAttrs, $ret); // Update the ldap entry $ldap->cd($dn); $attrs = array(); $attrs['userPassword'] = $userPassword; // Updated samba hashes if samba hashing is enabled if($smbPasswdEnabled){ $attrs['sambaLMPassword'] = $sambaLMPassword; $attrs['sambaNTPassword'] = $sambaNTPassword; } $ldap->modify($attrs); if($ldap->success()){ // Call the password post-lock hook, if defined. $pwdClass->callHook($pwdClass, 'POSTLOCK',$hookAttrs, $ret); } return($ldap->success()); } return(FALSE); } /*! \brief Unlocks an account (gosaAccount) which was locked by 'lock_account()'. * For details about the locking mechanism see 'lock_account()'. */ function unlock_account($config,$dn = "") { if(!$this->lockable) return FALSE; /* Get current password hash */ $userPassword = $sambaLMPassword = $sambaNTPassword = ""; $ldap = $config->get_ldap_link(); $ldap->cd($config->current['BASE']); if(!empty($dn)){ $ldap->cat($dn,array('sambaLMPassword','sambaNTPassword','userPassword')); $attrs = $ldap->fetch(); $userPassword = (isset($attrs['userPassword'][0])) ? $attrs['userPassword'][0]: ""; $sambaLMPassword = (isset($attrs['sambaLMPassword'][0])) ? $attrs['sambaLMPassword'][0]: ""; $sambaNTPassword = (isset($attrs['sambaNTPassword'][0])) ? $attrs['sambaNTPassword'][0]: ""; }elseif(isset($this->attrs['userPassword'][0])){ $dn = $this->attrs['dn']; $userPassword = (isset($this->attrs['userPassword'][0])) ? $this->attrs['userPassword'][0]: ""; $sambaLMPassword = (isset($this->attrs['sambaLMPassword'][0])) ? $this->attrs['sambaLMPassword'][0]: ""; $sambaNTPassword = (isset($this->attrs['sambaNTPassword'][0])) ? $this->attrs['sambaNTPassword'][0]: ""; } /* We can only lock/unlock non-empty passwords */ if(!empty($userPassword)){ /* Check if this entry is already locked. */ if(!preg_match("/^[^\}]*+\}!/",$userPassword)){ return (TRUE); } /* Lock entry */ $userPassword = preg_replace("/(^[^\}]+\})!(.*$)/","\\1\\2",$userPassword); // Update samba hashes only if its enabled. $smbPasswdEnabled = trim($config->get_cfg_value('core','sambaHashHook')) != ""; if($smbPasswdEnabled){ $sambaLMPassword = preg_replace("/^[!]*(.*$)/","\\1",$sambaLMPassword); $sambaNTPassword = preg_replace("/^[!]*(.*$)/","\\1",$sambaNTPassword); } // Call external lock hook $res = $ldap->cat($dn); $hookAttrs = array(); foreach($ldap->fetch() as $name => $value){ if(is_numeric($name)) continue; if(isset($value[0])) $hookAttrs[$name] = $value[0]; if(isset($value) && is_string($value)) $hookAttrs[$name] = $value; } $pwdClass = new password($config, $dn); $pwdClass->callHook($pwdClass, 'PREUNLOCK',$hookAttrs, $ret); // Lock the account by modifying the password hash. $ldap->cd($dn); // Update the ldap entry $attrs = array(); $attrs['userPassword'] = $userPassword; // Updated samba hashes if samba hashing is enabled if($smbPasswdEnabled){ $attrs['sambaLMPassword'] = $sambaLMPassword; $attrs['sambaNTPassword'] = $sambaNTPassword; } $ldap->modify($attrs); if($ldap->success()){ // Call the password post-lock hook, if defined. $pwdClass = new password($config, $dn); $pwdClass->callHook($pwdClass, 'POSTUNLOCK',$hookAttrs, $ret); } return($ldap->success()); } return(FALSE); } // this function returns all loaded classes for password encryption static function get_available_methods() { global $class_mapping, $config; $ret =false; $i =0; /* Only */ if(!session::is_set("passwordMethod::get_available_methods")){ foreach($class_mapping as $class => $path) { if(preg_match('/passwordMethod/i', $class) && !preg_match("/^passwordMethod$/i", $class)){ $name = preg_replace ("/passwordMethod/i", "", $class); $test = new $class($config, ""); if($test->is_available()) { $plugs= $test->get_hash_name(); if (!is_array($plugs)){ $plugs= array($plugs); } foreach ($plugs as $plugname){ $cfg = $test->is_configurable(); $ret['name'][$i]= $plugname; $ret['class'][$i]=$class; $ret['is_configurable'][$i]= $cfg; $ret['object'][$i]= $test; $ret['desc'][$i] = $test->get_description(); $ret[$i]['name'] = $plugname; $ret[$i]['class'] = $class; $ret[$i]['object']= $test; $ret[$i]['is_configurable']= $cfg; $ret[$i]['desc'] = $test->get_description(); $ret[$plugname]=$class; $i++; } } } } session::set("passwordMethod::get_available_methods",$ret); } return(session::get("passwordMethod::get_available_methods")); } function get_description() { return(""); } // Method to let password backends remove additional information besides // the userPassword attribute function remove_from_parent() { } // Method to let passwords backends manage additional information // besides the userAttribute entry function set_password($password) { return(TRUE); } // Return true if this password method provides a configuration dialog function is_configurable() { return FALSE; } // Provide a subdialog to configure a password method function configure() { return ""; } // Save information to LDAP function save($dn) { } // Try to find out if it's our hash... static function get_method($password_hash,$dn = "") { global $config; $methods= passwordMethod::get_available_methods(); foreach ($methods['class'] as $class){ $test = new $class($config,$dn); # All listed methods are available. # if(!$test->is_available())continue; $method= $test->_extract_method($password_hash); if ($method != ""){ $test->set_hash($method); return $test; } } msg_dialog::display(_("Error"), _("Cannot find a suitable password method for the current hash!"), ERROR_DIALOG); return NULL; } function _extract_method($password_hash) { $hash= $this->get_hash_name(); if (preg_match("/^\{$hash\}/i", $password_hash)){ return $hash; } return ""; } static function make_hash($password, $hash) { global $config; $methods= passwordMethod::get_available_methods(); $tmp= new $methods[$hash]($config); $tmp->set_hash($hash); return $tmp->generate_hash($password); } function set_hash($hash) { $this->hash= $hash; } function get_hash() { return $this->hash; } function adapt_from_template($dn) { return($this); } static function is_harmless($password) { global $config; if ($config->boolValueIsTrue("core","strictPasswordRules")) { // Do we have UTF8 characters in the password? return ($password == utf8_decode($password)); } return(true); } static function getPasswordProposal($config) { if($config->configRegistry->propertyExists('core', 'passwordProposalHook')){ $value = $config->configRegistry->getPropertyValue('core', 'passwordProposalHook'); $core = new core($config); // No execute the hook and fetch the results. plugin::callHook($core, 'passwordProposalHook', $addAttrs= array(), $ret); if(count($ret) && !empty($ret[0])){ return($ret[0]); } } return(''); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/password-methods/class_password-methods-smd5.inc0000644000175000017500000000302311330043647025015 0ustar mikemike gosa-core-2.7.4/include/password-methods/class_password-methods-crypt.inc0000644000175000017500000000575611330043647025325 0ustar mikemikegenerate_hash('N0T$3T4N0W').'N0T$3T4N0W'); } function generate_hash($pwd) { if ($this->hash == "crypt/standard-des"){ $salt = ""; for ($i = 0; $i < 2; $i++) { $salt .= get_random_char(); } } if ($this->hash == "crypt/enhanced-des"){ $salt = "_"; for ($i = 0; $i < 8; $i++) { $salt .= get_random_char(); } } if ($this->hash == "crypt/md5"){ $salt = "\$1\$"; for ($i = 0; $i < 8; $i++) { $salt .= get_random_char(); } $salt .= "\$"; } if ($this->hash == "crypt/blowfish"){ $salt = "\$2a\$07\$"; for ($i = 0; $i < CRYPT_SALT_LENGTH; $i++) { $salt .= get_random_char(); } $salt .= "\$"; } return "{CRYPT}".crypt($pwd, $salt); } function get_hash_name() { $hashes= array(); if (CRYPT_STD_DES == 1) { $hashes[]= "crypt/standard-des"; } if (CRYPT_EXT_DES == 1) { $hashes[]= "crypt/enhanced-des"; } if (CRYPT_MD5 == 1) { $hashes[]= "crypt/md5"; } if (CRYPT_BLOWFISH == 1) { $hashes[]= "crypt/blowfish"; } return $hashes; } function _extract_method($password_hash) { if (!preg_match('/^{crypt}/i', $password_hash)){ return ""; } $password_hash= preg_replace('/^{[^}]+}!?/', '', $password_hash); if (preg_match("/^[a-zA-Z0-9.\/][a-zA-Z0-9.\/]/", $password_hash)){ return "crypt/standard-des"; } if (preg_match("/^_[a-zA-Z0-9.\/]/", $password_hash)){ return "crypt/enhanced-des"; } if (preg_match('/^\$1\$/', $password_hash)){ return "crypt/md5"; } if (preg_match('/^(\$2\$|\$2a\$)/', $password_hash)){ return "crypt/blowfish"; } return ""; } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/password-methods/class_password-methods-sha.inc0000644000175000017500000000330411330043647024722 0ustar mikemike gosa-core-2.7.4/include/password-methods/class_password-methods-sasl.inc0000644000175000017500000000350511750201501025103 0ustar mikemikerealm = trim($config->get_cfg_value('core','SASLRealm')); if($this->realm == ""){ trigger_error(msgPool::cmdnotfound("SASLRealm", _("SASL"))); } $ldap = $config->get_ldap_link(); $ldap->cd($config->current['BASE']); $ldap->cat($dn,array('uid')); if($ldap->count() == 1){ $attrs = $ldap->fetch(); $this->uid = $attrs['uid'][0]; }else{ trigger_error("Cannot change password, unknown users '".$dn."'"); } } function is_available() { return(true); } function generate_hash($pwd) { return("{SASL}".$this->uid."@".$this->realm); } function get_hash_name() { return "sasl"; } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/password-methods/class_password-methods-clear.inc0000644000175000017500000000237611330043647025245 0ustar mikemike gosa-core-2.7.4/include/password-methods/class_password-methods-md5.inc0000644000175000017500000000247511330043647024644 0ustar mikemike gosa-core-2.7.4/include/password-methods/class_password-methods-ssha.inc0000644000175000017500000000365311330043647025114 0ustar mikemike gosa-core-2.7.4/include/class_filter.inc0000644000175000017500000003457011424300127016632 0ustar mikemikeload($filename)) { die("Cannot parse $filename!"); } $this->pid= preg_replace("/[^0-9]/", "", microtime(TRUE)); } function load($filename) { $contents = file_get_contents($filename); $xmlData= xml::xml2array($contents, 1); if (!isset($xmlData['filterdef'])) { return false; } $xmlData= $xmlData["filterdef"]; // Load filter if (isset($xmlData['search'])) { // Array conversion if (!isset($xmlData['search'][0])) { $searches= array($xmlData['search']); } else { $searches= $xmlData['search']; } /* Store available searches */ foreach ($searches as $search) { /* Do multi conversation */ if (!isset($search['query'][0])){ $search['query']= array($search['query']); } /* Store search */ $this->xmlSearches[$search['tag']]= $search; } } else { return false; } // Transfer scope $this->scopeMode= $xmlData['definition']['scope']; if ($this->scopeMode == "auto") { $this->scope= "one"; } else { $this->scope= $this->scopeMode; } // Transfer attributes $this->attributes= $xmlData['definition']['attribute']; if (!is_array($this->attributes)) { $this->attributes= array($this->attributes); } // Transfer initial value if (isset($xmlData['definition']['initial']) && $xmlData['definition']['initial'] == "true"){ $this->initial= true; } // Transfer category if (isset($xmlData['definition']['category'])){ $this->category= $xmlData['definition']['category']; } if (!is_array($this->category)) { $this->category= array($this->category); } // Initialize searches and default search mode $this->defaultSearch= $xmlData['definition']['default']; $this->reloadFilters(); $this->setSearch($this->defaultSearch); return true; } function reloadFilters() { $this->searches= array_merge($this->xmlSearches, userFilter::getFilter($this->category)); $this->setSearch($this->search); } function setSearch($method= null) { $patch= null; // Maybe our search method has gone? if (!isset($this->searches[$method])) { $method= $this->defaultSearch; } // Try to use it, but bail out if there's no help... if (isset($this->searches[$method])) { $this->query= $this->searches[$method]['query']; $this->search= $method; } else { die ("Invalid search module!"); } } function getTextfield($tag, $value= "", $element= null) { $size= 30; $maxlength= 30; $result= ""; if ($element && isset($element['autocomplete'])) { $frequency= "0.5"; $characters= "1"; if (isset($element['autocomplete']['frequency'])) { $frequency= $element['autocomplete']['frequency']; } if (isset($element['autocomplete']['characters'])) { $characters= $element['autocomplete']['characters']; } $result.= "
    ". ""; $this->autocompleters[$tag]= $element; } return $result; } function getCurrentBase() { if (isset($this->search->base) && (string)$this->search->scope != "auto") { return false; } return $this->base; } function getCurrentScope() { if (isset($this->search->scope) && (string)$this->search->scope != "auto") { return (string)$this->search->scope; } return $this->scope; } function setConverter($hook) { $this->converter= $hook; } function setObjectStorage($storage) { $this->objectStorage= $storage; } function setBase($base) { $this->base= $base; } function setCurrentScope($scope) { $this->scope= $scope; } function render() { $content= "
    ".$this->renderFilterMenu().""; $content.= "
    ".$this->getTextfield('search_filter', set_post($this->value), $this->searches[$this->search])."
    ". " 
    "; // Return meta data return ("".$content); } function query() { global $class_mapping; $result= array(); // Return empty list if initial is not set if (!$this->initial) { $this->initial= true; return $result; } // Go thru all queries and merge results foreach ($this->query as $query) { if (!isset($query['backend']) || !isset($query['filter'])) { die("No backend specified in search config."); } // Is backend available? $backend= "filter".$query['backend']; if (!isset($class_mapping["$backend"])) { die("Invalid backend specified in search config."); } // Load filter and attributes $filter= $query['filter']; // Handle converters if present if ($this->converter) { preg_match('/([^:]+)::(.*)$/', $this->converter, $m); if ($this->value == "") { $filter= call_user_func(array($m[1], $m[2]), preg_replace('/\$/', "*", $filter)); } else { $filter= call_user_func(array($m[1], $m[2]), preg_replace('/\$/', $this->value, $filter)); } } // Do not replace escaped \$ - This is required to be able to search for e.g. windows machines. if ($this->value == "") { $filter= preg_replace("/\\$/", '*', $filter); } else { $filter= preg_replace("/\\$/", "*".normalizeLdap($this->value)."*", $filter); } $result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $this->attributes, $this->category, $this->objectStorage)); } return ($result); } function update() { if (isset($_POST['FILTER_PID']) && $_POST['FILTER_PID'] == $this->pid) { // Save input field if (isset($_POST['search_filter'])) { $this->value= get_post('search_filter'); } // Save scope if needed if ($this->scopeMode == "auto" && isset($_POST['act']) && $_POST['act'] == "toggle-subtree") { $this->scope= ($this->scope == "one")?"sub":"one"; } // Switch filter? if (isset($_POST['act'])) { foreach ($this->searches as $tag => $cfg) { if ($_POST['act'] == "filter-$tag") { $this->setSearch($tag); break; } } } } } function getCompletitionList($config, $value="*") { global $class_mapping; $res= array(); // Load result attributes $attributes= $config['autocomplete']['attribute']; if (!is_array($attributes)) { $attributes= array($attributes); } // Do the query $result= array(); // Is backend available? # FIXME $queries= $config['query']; if (!isset($queries[0])){ $queries= array($queries); } foreach ($queries as $query) { $backend= "filter".$query['backend']; if (!isset($class_mapping["$backend"])) { die("Invalid backend specified in search config."); } $filter= preg_replace("/\\$/", "*".normalizeLdap($value)."*", $query['filter']); $result= array_merge($result, call_user_func(array($backend, 'query'), $this->base, $this->scope, $filter, $attributes, $this->category, $this->objectStorage)); } foreach ($result as $entry) { foreach ($attributes as $attribute) { if (is_array($entry[$attribute])) { for ($i= 0; $i<$entry[$attribute]['count']; $i++) { if (mb_stristr($entry[$attribute][$i], $value)) { $res[]= $entry[$attribute][$i]; } } } else { $res[]= $entry[$attribute]; } } } return $res; } function processAutocomplete() { global $class_mapping; $result= array(); // Introduce maximum number of entries $max= 25; if(isset($this->searches[$this->search]['autocomplete'])){ $result= $this->getCompletitionList($this->searches[$this->search], get_post('search_filter')); $result= array_unique($result); asort($result); echo '
      '; foreach ($result as $entry) { echo '
    • '.mark(get_post('search_filter'), $entry).'
    • '; if ($max-- == 0) { break; } } echo '
    '; } } function getObjectBase($dn) { global $config; $base= ""; // Try every object storage $storage= $this->objectStorage; if (!is_array($storage)){ $storage= array($storage); } foreach ($storage as $location) { $pattern= "/^[^,]+,".preg_quote($location, '/')."/i"; $base= preg_replace($pattern, '', $dn); } /* Set to base, if we're not on a correct subtree */ if (!isset($config->idepartments[$base])){ $base= $config->current['BASE']; } return $base; } function renderFilterMenu() { // Load shortcut $result= "$script"; } function getFixedFilters() { return array_keys($this->searches); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_jsonRPC.inc0000644000175000017500000003117311605073030016660 0ustar mikemikeconfigRegistry->getProperty('core','gosaRpcUser'); $username = $user->getValue($temporaryValue = TRUE); $passwd = $config->configRegistry->getProperty('core','gosaRpcPassword'); $passwdString = $passwd->getValue($temporaryValue = TRUE); $connection = new jsonRPC($config, $value, $username, $passwdString); if(!$connection->success() && $message){ msg_dialog::display(_("Warning"), sprintf(_("The RPC connection (%s) specified for %s:%s is invalid: %s"), bold($value),bold($class),bold($name), bold($connection->get_error())), WARNING_DIALOG); } return($connection->success()); } /*! \brief Constructs a new jsonRPC handle which is connected to a given URL. * It can either connect using a rpc method or via auth method digest. * @param object The gosa configuration object (class_config) * @param string The url to connect to. * @param string The username for authentication * @param string The password to use for authentication * @param boolean Whether to use DIGEST authentication or not. * @return */ public function __construct($config, $connectUrl, $username, $userPassword, $authModeDigest=FALSE) { $this->config = $config; $this->id = 0; // Get connection data $this->connectUrl = $connectUrl; $this->username = $username; $this->userPassword = $userPassword; $this->authModeDigest = $authModeDigest; // Put some usefull info in the logs DEBUG (DEBUG_RPC, __LINE__, __FUNCTION__, __FILE__,bold($this->connectUrl), "Initiated RPC "); DEBUG (DEBUG_RPC, __LINE__, __FUNCTION__, __FILE__,bold($this->username), "RPC user: "); DEBUG (DEBUG_RPC, __LINE__, __FUNCTION__, __FILE__,bold($this->userPassword),"RPC password: "); DEBUG (DEBUG_RPC, __LINE__, __FUNCTION__, __FILE__,bold($this->authModeDigest),"Digest Auth (0: No, 1: Yes): "); $this->__login(); } /*! \brief * @param * @return */ private function __login() { // Init Curl handler $this->curlHandler = curl_init($this->connectUrl); // Set curl options curl_setopt($this->curlHandler, CURLOPT_URL , $this->connectUrl); curl_setopt($this->curlHandler, CURLOPT_POST , TRUE); curl_setopt($this->curlHandler, CURLOPT_RETURNTRANSFER ,TRUE); curl_setopt($this->curlHandler, CURLOPT_HTTPHEADER , array('Content-Type: application/json')); curl_setopt($this->curlHandler, CURLOPT_SSL_VERIFYPEER, FALSE); // Try to login if($this->authModeDigest){ if(!empty($this->username)){ curl_setopt($this->curlHandler, CURLOPT_USERPWD , "{$this->username}:{$this->userPassword}"); } curl_setopt($this->curlHandler, CURLOPT_HTTPAUTH , CURLAUTH_ANYSAFE); }else{ curl_setopt($this->curlHandler, CURLOPT_COOKIESESSION , TRUE); curl_setopt($this->curlHandler, CURLOPT_COOKIEFILE, 'cookiefile.txt'); if(!empty($this->username)) $this->login($this->username, $this->userPassword); } } /*! \brief Returns the last HTTP status code. * @return int The last status code. */ public function getHTTPstatusCode() { return((isset($this->lastStats['http_code']))? $this->lastStats['http_code'] : -1 ); } /*! \brief Returns the last error string. * @return string The last error message. */ public function get_error() { $error = ""; if($this->lastStats['http_code'] != 200){ $error = $this->getHttpStatusCodeMessage($this->lastStats['http_code']); } if(isset($this->lastResult['error']['error']) && is_array($this->lastResult['error']['error'])){ $err = $this->lastResult['error']['error']; #$message = call_user_func_array(sprintf,$err); $message = $err; $error .= $message; }elseif(isset($this->lastResult['error']['message'])){ $error .= $this->lastResult['error']['message']; } if($error){ return(trim($error, ": ")); } return(curl_error($this->curlHandler)); } /*! \brief Returns TRUE if the last action was successfull else FALSE. * @return boolean TRUE on success else FALSE. */ public function success() { return(curl_errno($this->curlHandler) == 0 && !isset($this->lastResult['error']) && isset($this->lastStats['http_code']) && $this->lastStats['http_code'] == 200); } /*! \brief The class destructor, it destroys open rpc handles if needed. */ public function __destruct() { if($this->curlHandler){ curl_close($this->curlHandler); } } /*! \brief This is some kind of catch-all method, all unknown method names will * will be interpreted as rpc request. * If you call "$this->blafasel" this method will initiate an rpc request * for method 'blafasel'. * @param string method The rpc method to execute. * @param params array The parameter to use. * @return mixed The request result. */ public function __call($method,$params) { // Check if handle is still valid! if(!$this->curlHandler && $this->lastAction != 'login'){ $this->__login(); } // Start request DEBUG (DEBUG_RPC, __LINE__, __FUNCTION__, __FILE__,"{$method}", "Calling: "); $response = $this->request($method,$params); if($this->success()){ DEBUG (DEBUG_RPC, __LINE__, __FUNCTION__, __FILE__, (is_array($response['result']))?$response['result']:bold($response['result']), "Result: "); }else{ DEBUG (DEBUG_RPC, __LINE__, __FUNCTION__, __FILE__,bold($this->get_error())."
    ".$response, "Result (FAILED): "); } global $config; $debugLevel = $config->get_cfg_value('core', 'debugLevel'); if($debugLevel & DEBUG_RPC){ print_a(array('CALLED:' => array($method => $params))); print_a(array('RESPONSE' => $response)); } $return = $response['result']; // Inspect the result and replace predefined statements with their // coresponding classes. $return = $this->inspectJsonResult($return); return($return); } public function inspectJsonResult($result) { if(is_array($result) && isset($result['__jsonclass__']) && class_available('remoteObject')){ // Get all relevant class informations $classDef = $result['__jsonclass__'][1]; $type = $classDef[0]; $ref_id = $classDef[1]; $object_id = $classDef[2]; $methods = $classDef[3]; $properties = $classDef[4]; // Prepare values $values = array(); foreach($properties as $prop){ $values[$prop] = NULL; if(isset($res[$prop])) $values[$prop] = $res[$prop]; } // Build up remote object $object = new remoteObject($this, $type, $properties, $values, $methods, $object_id, $ref_id); return($object); } return($result); } /*! \brief This method finally initiates the real RPC requests and handles * the result from the server. * @param string method The method to call * @param array params The paramter to use. * @return mixed The server response. */ private function request($method, $params) { // Set last action $this->lastAction = $method; // Reset stats of last request. $this->lastStats = array(); // Validate input values if (!is_scalar($method)) trigger_error('jsonRPC::__call requires a scalar value as first parameter!'); if (is_array($params)) { $params = array_values($params); } else { trigger_error('jsonRPC::__call requires an array value as second parameter!'); } // prepares the request $this->id ++; $request = json_encode(array('method' => $method,'params' => $params,'id' => $this->id)); // Set curl options curl_setopt($this->curlHandler, CURLOPT_POSTFIELDS , $request); $response = curl_exec($this->curlHandler); $response = json_decode($response,true); // Set current result stats. $this->lastStats = curl_getinfo($this->curlHandler); $this->lastResult = $response; return($response); } /*! \brief Returns the HTTP status message for a given HTTP status code. * @param int code The status to code to return a message for. * @return string The corresponding status message. */ public static function getHttpStatusCodeMessage($code) { $codes = array( '100' => 'Continue', '101' => 'Switching Protocols', '102' => 'Processing', '200' => 'OK', '201' => 'Created', '202' => 'Accepted', '203' => 'Non-Authoritative Information', '204' => 'No Content', '205' => 'Reset Content', '206' => 'Partial Content', '207' => 'Multi-Status', '300' => 'Multiple Choice', '301' => 'Moved Permanently', '302' => 'Found', '303' => 'See Other', '304' => 'Not Modified', '305' => 'Use Proxy', '306' => 'reserved', '307' => 'Temporary Redirect', '400' => 'Bad Request', '401' => 'Unauthorized', '402' => 'Payment Required', '403' => 'Forbidden', '404' => 'Not Found', '405' => 'Method Not Allowed', '406' => 'Not Acceptable', '407' => 'Proxy Authentication Required', '408' => 'Request Time-out', '409' => 'Conflict', '410' => 'Gone', '411' => 'Length Required', '412' => 'Precondition Failed', '413' => 'Request Entity Too Large', '414' => 'Request-URI Too Long', '415' => 'Unsupported Media Type', '416' => 'Requested range not satisfiable', '417' => 'Expectation Failed', '421' => 'There are too many connections from your internet address', '422' => 'Unprocessable Entity', '423' => 'Locked', '424' => 'Failed Dependency', '425' => 'Unordered Collection', '426' => 'Upgrade Required', '500' => 'Internal Server Error', '501' => 'Not Implemented', '502' => 'Bad Gateway', '503' => 'Service Unavailable', '504' => 'Gateway Time-out', '505' => 'HTTP Version not supported', '506' => 'Variant Also Negotiates', '507' => 'Insufficient Storage', '509' => 'Bandwidth Limit Exceeded', '510' => 'Not Extended'); return((isset($codes[$code]))? $codes[$code] : sprintf(_("Unknown HTTP status code %s!"), bold($code))); } } ?> gosa-core-2.7.4/include/class_pathNavigator.inc0000644000175000017500000000534111365473437020171 0ustar mikemikeplHeadline)){ $str= _($class->plHeadline); } // Shown title of sub dialogs (They have no plHeadline set.) if($class instanceOf plugin && !isset($class->plHeadline)){ if(!empty($class->pathTitle)){ $str = _($class->pathTitle); } } // In case of tabs add the 'dn' of the entry if($class instanceOf tabs){ // Convert dn to cn if(isset($class->dn)){ if(!session::is_set("pathNavigator::registerPlugin:{$class->dn}")){ global $config; $ldap = $config->get_ldap_link(); if(!empty($class->dn)){ $namingAttr = preg_replace("/^([^=]*)=.*$/","\\1",$class->dn); $ldap->cat($class->dn, array($namingAttr)); if($ldap->count()){ $attrs = $ldap->fetch(); $str = $attrs[$namingAttr][0]; } session::set("pathNavigator::registerPlugin:{$class->dn}", $str); } } $str = session::get("pathNavigator::registerPlugin:{$class->dn}"); if(empty($title)){ $title = $class->dn; } } } // Simple string given if(is_string($class)){ $str = $class; } if(!empty($str)){ $cur = session::get('pathNavigator::position'); $entry = array('TITLE' => $title, 'NAME' => $str); $cur[] = $entry; session::set('pathNavigator::position', $cur); } } static function getCurrentPath() { // Ensure that we've a position value initialized. if(!session::is_set('pathNavigator::position')) { session::set('pathNavigator::position',array()); } // Get position and validate its value $list = session::get('pathNavigator::position'); if(!is_array($list)){ $list = array(); } // Build up title and path string. $path = ""; $sTitle = ""; foreach($list as $entry){ $title = (!empty($entry['TITLE']))? 'title="'.htmlentities(LDAP::fix($entry['TITLE']),ENT_COMPAT,'UTF-8').'"': ''; $path.= "\n
  • {$entry['NAME']}
  • "; $sTitle .= " - ".$entry['NAME']; } // If no path is given then show a simple 'Welcome to GOsa' string. if(empty($path)){ $path = "
  • "._("Welcome to GOsa")."
  • "; } $smarty = get_smarty(); $smarty->assign('title', 'GOsa '.$sTitle); return($path); } static function clear() { session::set('pathNavigator::position', array()); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_configRegistry.inc0000644000175000017500000011437511662424035020356 0ustar mikemikeconfig = &$config; // Detect classes that have a plInfo method global $class_mapping; foreach ($class_mapping as $cname => $path){ $cmethods = get_class_methods($cname); if (is_array($cmethods) && in_array_ics('plInfo',$cmethods)){ // Get plugin definitions $def = call_user_func(array($cname, 'plInfo'));; // Register Post Events (postmodfiy,postcreate,postremove,checkhook) if(count($def)){ $this->classesWithInfo[$cname] = $def; } } } // (Re)Load properties $this->reload(); } /*! \brief Returns a list of plugins used by GOsa. @return Array An array containing all plugins with theis plInfo data. */ function getListOfPlugins() { return($this->classesWithInfo); } /*! \brief Checks whether the schema check was called in the current session or not. * @return Boolean True if check was already called */ function schemaCheckFinished() { return($this->schemaCheckFinished); } /*! \brief Starts the schema validation * @param Boolean 'force' Force a re-check. * @param Boolean 'disableIncompatiblePlugins' Disables of incompatible GOsa-plugins. * @return Boolean True on success else FALSE */ function validateSchemata($force = FALSE, $disableIncompatiblePlugins = FALSE, $objectClassesToUse = array()) { // Read objectClasses from ldap if(count($objectClassesToUse)){ $this->setObjectClasses($objectClassesToUse); }elseif(!count($this->objectClasses)){ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $this->setObjectClasses($ldap->get_objectclasses()); } return($this->_validateSchemata($force, $disableIncompatiblePlugins)); } /*! \brief Sets the list object classes to use while validation the schema. (See 'validateSchemata') * This is called from the GOsa-Setup * @param Array The list of object classes (usually LDAP::get_objectlclasses()). * @return void */ function setObjectClasses($ocs) { $this->objectClasses = $ocs; } /*! \brief Returns an array which contains all unresolved schemata requirements. * @return Array An array containing all errors/issues */ function getSchemaResults() { return($this->detectedSchemaIssues); } /*! \brief This method checks if the installed ldap-schemata matches the plugin requirements. * @param Boolean 'force' Force a re-check. * @param Boolean 'disableIncompatiblePlugins' Disables of incompatible GOsa-plugins. * @return String */ private function _validateSchemata($force = FALSE, $disableIncompatiblePlugins = FALSE) { // We cannot check without readable schema info if(!count($this->objectClasses)){ return(TRUE); } // Don't do things twice unless forced if($this->schemaCheckFinished && !$force) return($this->schemaCheckFailed); // Prepare result array $this->detectedSchemaIssues = array(); $this->detectedSchemaIssues['missing'] = array(); $this->detectedSchemaIssues['versionMismatch'] = array(); // Clear last results $this->pluginsDeactivated = array(); // Collect required schema infos $this->pluginRequirements = array('ldapSchema' => array()); $this->categoryToClass = array(); // Walk through plugins with requirements, but only check for active plugins. foreach($this->classesWithInfo as $cname => $defs){ if(isset($defs['plRequirements'])){ // Check only if required plugin is enabled in gosa.conf // Normally this is the class name itself, but may be overridden // in plInfo using the plRequirements::activePlugin statement. $requiresActivePlugin = $cname; if(isset($defs['plRequirements']['activePlugin'])){ $requiresActivePlugin = $defs['plRequirements']['activePlugin']; } // Only queue checks for active plugins. if(isset($this->activePlugins[strtolower($requiresActivePlugin)])){ $this->pluginRequirements[$cname] = $defs['plRequirements']; }else{ if($cname == $requiresActivePlugin){ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "", "Skipped schema check for '{$cname}' plugin is inactive!"); }else{ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "", "Skipped schema check for class '{$cname}' skipped,". " required plugin '{$requiresActivePlugin}' is inactive!"); } } } } // Check schema requirements now $missing = $invalid = array(); foreach($this->pluginRequirements as $cname => $requirements){ // Check LDAP schema requirements for this plugins $failure = FALSE; if(isset($requirements['ldapSchema'])){ foreach($requirements['ldapSchema'] as $oc => $version){ if(!$this->ocAvailable($oc)){ $this->detectedSchemaIssues['missing'][$oc] = $oc; $this->schemaCheckFailed = TRUE; $failure = TRUE; new log("debug","","LDAP objectClass missing '{$oc}'!", array(),''); }elseif(!empty($version)){ $currentVersion = $this->getObjectClassVersion($oc); if(!empty($currentVersion) && !$this->ocVersionMatch($version, $currentVersion)){ if($currentVersion == -1){ $currentVersion = _("unknown"); } $this->detectedSchemaIssues['versionMismatch'][$oc] = sprintf(_("%s has version %s but %s is required!"), bold($oc),bold($currentVersion),bold($version)); $this->schemaCheckFailed = TRUE; $failure = TRUE; new log("debug","","LDAP objectClass version mismatch '{$oc}' ". "has '{$currentVersion}' but {$version} required!", array(),''); } } } } // Display corresponding plugins now if($disableIncompatiblePlugins && $failure && isset($requirements['onFailureDisablePlugin'])){ foreach($requirements['onFailureDisablePlugin'] as $name){ $this->pluginsDeactivated[$name] = $name; } } } $this->schemaCheckFinished =TRUE; session::un_set('plist'); return(!$this->schemaCheckFailed); } /*! \brief The function 'validateSchemata' may has disabled some GOsa-Plugins, * the list of disabled plugins will be returned here. * @return Array The list of plugins disabled by 'validateSchemata' */ function getDisabledPlugins() { return($this->pluginsDeactivated); } /*! \brief Displays an error message with all issues detect during the schema validation. */ function displayRequirementErrors() { $message = ""; if(count($this->detectedSchemaIssues['missing'])){ $message.= "
    ". _("The following object classes are missing:"). "
    ". msgPool::buildList(array_values($this->detectedSchemaIssues['missing'])). "
    "; } if(count($this->detectedSchemaIssues['versionMismatch'])){ $message.= "
    ". _("The following object classes are outdated:"). "
    ". msgPool::buildList(array_values($this->detectedSchemaIssues['versionMismatch'])). "
    "; } if($message != ""){ $message.= "
    "._("Plugins that require one or more of the object classes above will be disabled until the object classes get updated."); msg_dialog::display(_("Schema validation error"),$message, ERROR_DIALOG); } } /*! \brief Checks to version strings (e.g. '>=v2.8' and '2.9') * @param String The required version with operators (e.g. '>=2.8') * @param String The version to match for withOUT operators (e.g. '2.9') * @return Boolean True if version matches else false. */ private function ocVersionMatch($required, $installed) { $operator = preg_replace('/^([=<>]*).*$/',"\\1",$required); $required = preg_replace('/^[=<>]*(.*)$/',"\\1",$required); return(version_compare($installed,$required, $operator)); } /*! \brief Returns the currently installed version of a given object class. * @param String The name of the objectClass to check for. * @return String The version string of the objectClass (e.g. v2.7) */ function getObjectClassVersion($oc) { if(!isset($this->objectClasses[$oc])){ return(NULL); }else{ $version = -1; // unknown if(preg_match("/(v[^)]*)/", $this->objectClasses[$oc]['DESC'])){ $version = preg_replace('/^.*\(v([^)]*)\).*$/',"\\1", $this->objectClasses[$oc]['DESC']); } } return($version); } /*! \brief Check whether the given object class is available or not. * @param String The name of the objectClass to check for (e.g. 'mailAccount') * @return Boolean Returns TRUE if the class exists else FALSE. */ function ocAvailable($name) { return(isset($this->objectClasses[$name])); } /*! \brief Re-loads the list of installed GOsa-Properties. * @param Boolean $force If force is TRUE, the complete properties list is rebuild.. */ function reload($force = FALSE) { // Do not reload the properties everytime, once we have // everything loaded and registrered skip the reload. // Status is 'finished' once we had a ldap connection (logged in) if(!$force && $this->status == 'finished') return; // Reset everything $this->ldapStoredProperties = array(); $this->fileStoredProperties = array(); $this->properties = array(); $this->mapByName = array(); $this->activePlugins = array('core'=>'core'); if(!$this->config) return; // Search for config flags defined in the config file (TAB section) foreach($this->config->data['TABS'] as $tabname => $tabdefs){ foreach($tabdefs as $info){ // Put plugin in list of active plugins if(isset($info['CLASS'])){ $class = strtolower($info['CLASS']); $this->activePlugins[$class] = $class; } // Check if the info is valid if(isset($info['NAME']) && isset($info['CLASS'])){ // Check if there is nore than just the plugin definition if(count($info) > 2){ foreach($info as $name => $value){ if(!in_array_strict($name, array('CLASS','NAME'))){ $class= $info['CLASS']; $this->fileStoredProperties[strtolower($class)][strtolower($name)] = $value; } } } } } } foreach($this->config->data['MENU'] as $section => $entries){ foreach($entries as $entry){ if(isset($entry['CLASS'])){ // Put plugin to active plugins list. $class = strtolower($entry['CLASS']); $this->activePlugins[$class] = $class; if(count($entry) > 2 ){ foreach($entry as $name => $value){ if(!in_array_strict($name, array('CLASS','ACL'))){ $this->fileStoredProperties[strtolower($class)][strtolower($name)] = $value; } } } } } } // Search for config flags defined in the config file (PATHMENU) foreach($this->config->data['PATHMENU'] as $entry){ if(isset($entry['CLASS'])){ // Put plugin to active plugins list. $class = strtolower($entry['CLASS']); $this->activePlugins[$class] = $class; if(count($entry) > 2 ){ foreach($entry as $name => $value){ if(!in_array_strict($name, array('CLASS','ACL'))){ $this->fileStoredProperties[strtolower($class)][strtolower($name)] = $value; } } } } } // Search for config flags defined in the config file (MAIN section) foreach($this->config->data['MAIN'] as $name => $value){ $this->fileStoredProperties['core'][strtolower($name)] = $value; } // Search for config flags defined in the config file (Current LOCATION section) if(isset($this->config->current)){ foreach($this->config->current as $name => $value){ $this->fileStoredProperties['core'][strtolower($name)] = $value; } } // Skip searching for LDAP defined properties if 'ignoreLdapProperties' is set to 'true' // in the config. $this->ignoreLdapProperties = FALSE; if(isset($this->fileStoredProperties['core'][strtolower('ignoreLdapProperties')]) && preg_match("/(true|on)/i", $this->fileStoredProperties['core'][strtolower('ignoreLdapProperties')])){ $this->ignoreLdapProperties = TRUE; } // Search for all config flags defined in the LDAP - BUT only if we ARE logged in. if(!empty($this->config->current['CONFIG'])){ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['CONFIG']); $ldap->search('(&(objectClass=gosaConfig)(gosaSetting=*))', array('cn','gosaSetting')); while($attrs = $ldap->fetch()){ $class = $attrs['cn'][0]; for($i=0; $i<$attrs['gosaSetting']['count']; $i++){ list($name,$value) = preg_split("/:/",$attrs['gosaSetting'][$i],2); $this->ldapStoredProperties[$class][$name] = $value; } } } // Register plugin properties. foreach ($this->classesWithInfo as $cname => $def){ // Detect class name $name = $cname; $name = (isset($def['plShortName'])) ? $def['plShortName'] : $cname; $name = (isset($def['plDescription'])) ? $def['plDescription'] : $cname; // Register post events $this->classToName[$cname] = $name; $data = array('name' => 'postcreate','type' => 'command'); $this->register($cname, $data); $data = array('name' => 'postremove','type' => 'command'); $this->register($cname, $data); $data = array('name' => 'postmodify','type' => 'command'); $this->register($cname, $data); $data = array('name' => 'precreate','type' => 'command'); $this->register($cname, $data); $data = array('name' => 'preremove','type' => 'command'); $this->register($cname, $data); $data = array('name' => 'premodify','type' => 'command'); $this->register($cname, $data); $data = array('name' => 'check', 'type' => 'command'); $this->register($cname, $data); // Register properties if(isset($def['plProperties'])){ foreach($def['plProperties'] as $property){ $this->register($cname, $property); } } } // We are only finsihed once we are logged in. if(!empty($this->config->current['CONFIG'])){ $this->status = 'finished'; } } /*! \brief Returns TRUE if the property registration has finished without any error. */ function propertyInitializationComplete() { return($this->status == 'finished'); } /*! \brief Registers a GOsa-Property and thus makes it useable by GOsa and its plugins. * @param String $class The name of the class/plugin that wants to register this property. * @return Array $data An array containing all data set in plInfo['plProperty] */ function register($class,$data) { $id = count($this->properties); $this->properties[$id] = new gosaProperty($this,$class,$data); $p = strtolower("{$class}::{$data['name']}"); $this->mapByName[$p] = $id; } /*! \brief Returns all registered properties. * @return Array A list of all properties. */ public function getAllProperties() { return($this->properties); } /*! \brief Checks whether a property exists or not. * @param String $class The class name (e.g. 'core' or 'mailAccount') * @param String $name The property name (e.g. 'sessionTimeout' or 'mailMethod') * @return Boolean TRUE if it exists else FALSE. */ function propertyExists($class,$name) { $p = strtolower("{$class}::{$name}"); return(isset($this->mapByName[$p])); } /*! \brief Returns the id of a registered property. * @param String $class The class name (e.g. 'core' or 'mailAccount') * @param String $name The property name (e.g. 'sessionTimeout' or 'mailMethod') * @return Integer The id for the given property. */ private function getId($class,$name) { $p = strtolower("{$class}::{$name}"); if(!isset($this->mapByName[$p])){ return(-1); } return($this->mapByName[$p]); } /*! \brief Returns a given property, if it exists. * @param String $class The class name (e.g. 'core' or 'mailAccount') * @param String $name The property name (e.g. 'sessionTimeout' or 'mailMethod') * @return GOsaPropery The property or 'NULL' if it doesn't exists. */ function getProperty($class,$name) { if($this->propertyExists($class,$name)){ return($this->properties[$this->getId($class,$name)]); } return(NULL); } /*! \brief Returns the value for a given property, if it exists. * @param String $class The class name (e.g. 'core' or 'mailAccount') * @param String $name The property name (e.g. 'sessionTimeout' or 'mailMethod') * @return GOsaPropery The property value or an empty string if it doesn't exists. */ function getPropertyValue($class,$name) { if($this->propertyExists($class,$name)){ $tmp = $this->getProperty($class,$name); return($tmp->getValue()); } return(""); } /*! \brief Set a new value for a given property, if it exists. * @param String $class The class name (e.g. 'core' or 'mailAccount') * @param String $name The property name (e.g. 'sessionTimeout' or 'mailMethod') * @return */ function setPropertyValue($class,$name, $value) { if($this->propertyExists($class,$name)){ $tmp = $this->getProperty($class,$name); return($tmp->setValue($value)); } return(""); } /*! \brief Save all temporary made property changes and thus make them useable/effective. * @return Array Returns a list of plugins that have to be migrated before they can be saved. */ function saveChanges() { $migrate = array(); foreach($this->properties as $prop){ // Is this property modified if(in_array_strict($prop->getStatus(),array('modified','removed'))){ // Check if we've to migrate something before we can make the changes effective. if($prop->migrationRequired()){ $migrate[] = $prop; }else{ $prop->save(); } } } return($migrate); } } class gosaProperty { protected $name = ""; protected $class = ""; protected $value = ""; protected $tmp_value = ""; // Used when modified but not saved protected $type = "string"; protected $default = ""; protected $defaults = ""; protected $description = ""; protected $check = ""; protected $migrate = ""; protected $mandatory = FALSE; protected $group = "default"; protected $parent = NULL; protected $data = array(); protected $migrationClass = NULL; /*! The current property status * 'ldap' Property is stored in ldap * 'file' Property is stored in the config file * 'undefined' Property is currently not stored anywhere * 'modified' Property has been modified (should be saved) */ protected $status = 'undefined'; protected $attributes = array('name','type','default','description','check', 'migrate','mandatory','group','defaults'); function __construct($parent,$classname,$data) { // Set some basic infos $this->parent = &$parent; $this->class = $classname; $this->data = $data; // Get all relevant information from the data array (comes from plInfo) foreach($this->attributes as $aName){ if(isset($data[$aName])){ $this->$aName = $data[$aName]; } } // Initialize with the current value $this->_restoreCurrentValue(); } function migrationRequired() { // Instantiate migration class if(!empty($this->migrate) && $this->migrationClass == NULL){ if(!class_available($this->migrate)){ trigger_error("Cannot start migration for gosaProperty::'{$this->getName()}' class not found ({$this->migrate})!"); }else{ $class = $this->migrate; $tmp = new $class($this->parent->config,$this); if(! $tmp instanceof propertyMigration){ trigger_error("Cannot start migration for gosaProperty::'{$this->getName()}' doesn't implement propertyMigration!"); }else{ $this->migrationClass = $tmp; } } } if(empty($this->migrate) || $this->migrationClass == NULL){ return(FALSE); } return($this->migrationClass->checkForIssues()); } function getMigrationClass() { return($this->migrationClass); } function check() { $val = $this->getValue(TRUE); $return = TRUE; if($this->mandatory && empty($val)){ $return = FALSE; } $check = $this->getCheck(); if(!empty($val) && !empty($check)){ $res = call_user_func(preg_split("/::/", $this->check),$messages=TRUE, $this->class,$this->name,$val, $this->type); if(!$res){ $return = FALSE; } } return($return); } static function isBool($message,$class,$name,$value, $type) { $match = in_array_strict($value,array('true','false','')); // Display the reason for failing this check. if($message && ! $match){ msg_dialog::display(_("Warning"), sprintf(_("The value %s specified for %s:%s needs to be a bool value!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } return($match); } static function isString($message,$class,$name,$value, $type) { $match = TRUE; // Display the reason for failing this check. if($message && ! $match){ msg_dialog::display(_("Warning"), sprintf(_("The value %s specified for %s:%s needs to be a string!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } return($match); } static function isInteger($message,$class,$name,$value, $type) { $match = is_numeric($value) && !preg_match("/[^0-9]/", $value); // Display the reason for failing this check. if($message && ! $match){ msg_dialog::display(_("Warning"), sprintf(_("The value %s specified for %s:%s needs to be numeric!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } return($match); } static function isPath($message,$class,$name,$value, $type) { $match = preg_match("#^(/[^/]*/){1}#", $value); // Display the reason for failing this check. if($message && ! $match){ msg_dialog::display(_("Warning"), sprintf(_("The path %s specified for %s:%s is invalid!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } return($match); } static function isReadablePath($message,$class,$name,$value, $type) { $match = !empty($value)&&is_dir($value)&&is_writeable($value); // Display the reason for failing this check. if($message && ! $match){ if(!is_dir($value)){ msg_dialog::display(_("Warning"), sprintf(_("The folder %s specified for %s:%s does not exists!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); }elseif(!is_readable($value)){ msg_dialog::display(_("Warning"), sprintf(_("The folder %s specified for %s:%s is not readable!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } } return($match); } static function isWriteableFile($message,$class,$name,$value, $type) { $match = (file_exists($value) && is_writeable($value)) || (!file_exists($value) && is_writeable(dirname($value))); // Display the reason for failing this check. if($message && ! $match){ if(!file_exists($value) && !is_writeable(dirname($value))){ msg_dialog::display(_("Warning"), sprintf(_("The file %s specified for %s:%s is not writeable!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); }elseif(file_exists($value) && !is_writeable($value)){ msg_dialog::display(_("Warning"), sprintf(_("The file %s specified for %s:%s is not writeable!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } } return($match); } static function isWriteablePath($message,$class,$name,$value, $type) { $match = !empty($value)&&is_dir($value)&&is_writeable($value); // Display the reason for failing this check. if($message && ! $match){ if(!is_dir($value)){ msg_dialog::display(_("Warning"), sprintf(_("The folder %s specified for %s:%s does not exists!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); }elseif(!is_writeable($value)){ msg_dialog::display(_("Warning"), sprintf(_("The folder %s specified for %s:%s is not writeable!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } } return($match); } static function isReadableFile($message,$class,$name,$value, $type) { $match = !empty($value) && is_readable($value) && is_file($value); // Display the reason for failing this check. if($message && ! $match){ if(!is_file($value)){ msg_dialog::display(_("Warning"), sprintf(_("The file %s specified for %s:%s does not exists!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); }elseif(!is_readable($value)){ msg_dialog::display(_("Warning"), sprintf(_("The file %s specified for %s:%s is not readable!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } } return($match); } static function isCommand($message,$class,$name,$value, $type) { $match = TRUE; // Display the reason for failing this check. if($message && ! $match){ msg_dialog::display(_("Warning"), sprintf(_("The command %s specified for %s:%s is invalid!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } return($match); } static function isDn($message,$class,$name,$value, $type) { $match = preg_match("/^([a-z]*=[^=,]*,)*[^=]*=[^=]*$/i", $value); // Display the reason for failing this check. if($message && ! $match){ msg_dialog::display(_("Warning"), sprintf(_("The DN %s specified for %s:%s is invalid!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } return($match); } static function isRdn($message,$class,$name,$value, $type) { $match = preg_match("/^([a-z]*=[^=,]*,)*[^=]*=[^=,]*,?$/i", $value); // Display the reason for failing this check. if($message && ! $match){ msg_dialog::display(_("Warning"), sprintf(_("The RDN %s specified for %s:%s is invalid!"), bold($value),bold($class),bold($name)), WARNING_DIALOG); } return($match); } private function _restoreCurrentValue() { // First check for values in the LDAP Database. if(isset($this->parent->ldapStoredProperties[$this->class][$this->name])){ $this->setStatus('ldap'); $this->value = $this->parent->ldapStoredProperties[$this->class][$this->name]; return; } // Second check for values in the config file. if(isset($this->parent->fileStoredProperties[strtolower($this->class)][strtolower($this->name)])){ $this->setStatus('file'); $this->value = $this->parent->fileStoredProperties[strtolower($this->class)][strtolower($this->name)]; return; } // If there still wasn't found anything then fallback to the default. if($this->getStatus() == 'undefined'){ $this->value = $this->getDefault(); } } function getMigrate() { return($this->migrate); } function getCheck() { return($this->check); } function getName() { return($this->name); } function getClass() { return($this->class); } function getGroup() { return($this->group); } function getType() { return($this->type); } function getDescription() { return($this->description); } function getDefault() { return($this->default); } function getDefaults() { return($this->defaults); } function getStatus() { return($this->status); } function isMandatory() { return($this->mandatory); } function setValue($str) { if(in_array_strict($this->getStatus(), array('modified'))){ $this->tmp_value = $str; }elseif($this->value != $str){ $this->setStatus('modified'); $this->tmp_value = $str; } } function getValue($temporary = FALSE) { if($temporary){ if(in_array_strict($this->getStatus(), array('modified','removed'))){ return($this->tmp_value); }else{ return($this->value); } }else{ // Do not return ldap values if we've to ignore them. if($this->parent->ignoreLdapProperties){ if(isset($this->parent->fileStoredProperties[strtolower($this->class)][strtolower($this->name)])){ return($this->parent->fileStoredProperties[strtolower($this->class)][strtolower($this->name)]); }else{ return($this->getDefault()); } }else{ return($this->value); } } } function restoreDefault() { if(in_array_strict($this->getStatus(),array('ldap'))){ $this->setStatus('removed'); // Second check for values in the config file. if(isset($this->parent->fileStoredProperties[strtolower($this->class)][strtolower($this->name)])){ $this->tmp_value = $this->parent->fileStoredProperties[strtolower($this->class)][strtolower($this->name)]; }else{ $this->tmp_value = $this->getDefault(); } } } function save() { if($this->getStatus() == 'modified'){ $ldap = $this->parent->config->get_ldap_link(); $ldap->cd($this->parent->config->current['BASE']); $dn = "cn={$this->class},".$this->parent->config->current['CONFIG']; $ldap->cat($dn); if(!$ldap->count()){ $ldap->cd($dn); $data = array( 'cn' => $this->class, 'objectClass' => array('top','gosaConfig'), 'gosaSetting' => $this->name.":".$this->tmp_value); $ldap->add($data); if(!$ldap->success()){ echo $ldap->get_error(); } }else{ $attrs = $ldap->fetch(); $data = array(); $found = false; if(isset($attrs['gosaSetting']['count'])){ for($i = 0;$i<$attrs['gosaSetting']['count']; $i ++){ $set = $attrs['gosaSetting'][$i]; if(preg_match("/^{$this->name}:/", $set)){ $set = "{$this->name}:{$this->tmp_value}"; $found = true; } $data['gosaSetting'][] = $set; } } if(!$found) $data['gosaSetting'][] = "{$this->name}:{$this->tmp_value}"; $ldap->cd($dn); $ldap->modify($data); if(!$ldap->success()){ echo $ldap->get_error(); } } $this->value = $this->tmp_value; $this->setStatus('ldap'); }elseif($this->getStatus() == 'removed'){ $ldap = $this->parent->config->get_ldap_link(); $ldap->cd($this->parent->config->current['BASE']); $dn = "cn={$this->class},".$this->parent->config->current['CONFIG']; $ldap->cat($dn); $attrs = $ldap->fetch(); $data = array('gosaSetting' => array()); for($i = 0;$i<$attrs['gosaSetting']['count']; $i ++){ $set = $attrs['gosaSetting'][$i]; if(preg_match("/^{$this->name}:/", $set)){ continue; } $data['gosaSetting'][] = $set; } $ldap->cd($dn); $ldap->modify($data); if(!$ldap->success()){ echo $ldap->get_error(); } $this->_restoreCurrentValue(); } } private function setStatus($state) { if(!in_array_strict($state, array('ldap','file','undefined','modified','removed'))) { trigger_error("Unknown property status given '{$state}' for {$this->class}:{$this->name}!"); }else{ $this->status = $state; } } function isValid() { return(TRUE); } } interface propertyMigration { function __construct($config,$property); } ?> gosa-core-2.7.4/include/utils/0000755000175000017500000000000011752422553014630 5ustar mikemikegosa-core-2.7.4/include/utils/class_xml.inc0000644000175000017500000001713111613731145017307 0ustar mikemikeload($file); if (!$xml->schemaValidate($schema)) { $errors = libxml_get_errors(); foreach ($errors as $error) { $estr= ""; switch ($error->level) { case LIBXML_ERR_WARNING: $estr= _("Warning")." ".$error->code.":"; break; case LIBXML_ERR_ERROR: $estr= _("Error")." ".$error->code.":"; break; case LIBXML_ERR_FATAL: $estr= _("Fatal error")." ".$error->code.":"; break; } if ($error->file) { $str= sprintf("%s %s in %s", $estr, trim($error->message), $error->file); } else { $str= sprintf("%s %s in %s on line %s", $estr, trim($error->message), $error->file, $error->line); } msg_dialog::display(_("XML error"), $str, ERROR_DIALOG); } libxml_clear_errors(); } } static function xml2array($contents, $get_attributes=1, $priority = 'tag') { if(!$contents) return array(); if(!function_exists('xml_parser_create')) { //print "'xml_parser_create()' function not found!"; return array(); } //Get the XML parser of PHP - PHP must have this module for the parser to work $parser = xml_parser_create(''); xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); # http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, trim($contents), $xml_values); xml_parser_free($parser); if(!$xml_values) return;//Hmm... //Initializations $xml_array = array(); $parents = array(); $opened_tags = array(); $arr = array(); $current = &$xml_array; //Refference //Go through the tags. $repeated_tag_index = array();//Multiple tags with same name will be turned into an array foreach($xml_values as $data) { unset($attributes,$value);//Remove existing values, or there will be trouble //This command will extract these variables into the foreach scope // tag(string), type(string), level(int), attributes(array). extract($data);//We could use the array by itself, but this cooler. $result = array(); $attributes_data = array(); if(isset($value)) { if($priority == 'tag') $result = $value; else $result['value'] = $value; //Put the value in a assoc array if we are in the 'Attribute' mode } //Set the attributes too. if(isset($attributes) and $get_attributes) { foreach($attributes as $attr => $val) { if($priority == 'tag') $attributes_data[$attr] = $val; else $result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr' } } //See tag status and do the needed. if($type == "open") {//The starting of the tag '' $parent[$level-1] = &$current; if(!is_array($current) or (!in_array_strict($tag, array_keys($current)))) { //Insert New tag $current[$tag] = $result; if($attributes_data) $current[$tag. '_attr'] = $attributes_data; $repeated_tag_index[$tag.'_'.$level] = 1; $current = &$current[$tag]; } else { //There was another element with the same tag name if(isset($current[$tag][0])) {//If there is a 0th element it is already an array $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result; $repeated_tag_index[$tag.'_'.$level]++; } else {//This section will make the value an array if multiple tags with the same name appear together $current[$tag] = array($current[$tag],$result);//This will combine the existing item and the new item together to make an array $repeated_tag_index[$tag.'_'.$level] = 2; if(isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well $current[$tag]['0_attr'] = $current[$tag.'_attr']; unset($current[$tag.'_attr']); } } $last_item_index = $repeated_tag_index[$tag.'_'.$level]-1; $current = &$current[$tag][$last_item_index]; } } elseif($type == "complete") { //Tags that ends in 1 line '' //See if the key is already taken. if(!isset($current[$tag])) { //New Key $current[$tag] = $result; $repeated_tag_index[$tag.'_'.$level] = 1; if($priority == 'tag' and $attributes_data) $current[$tag. '_attr'] = $attributes_data; } else { //If taken, put all things inside a list(array) if(isset($current[$tag][0]) and is_array($current[$tag])) {//If it is already an array... // ...push the new element into that array. $current[$tag][$repeated_tag_index[$tag.'_'.$level]] = $result; if($priority == 'tag' and $get_attributes and $attributes_data) { $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data; } $repeated_tag_index[$tag.'_'.$level]++; } else { //If it is not an array... $current[$tag] = array($current[$tag],$result); //...Make it an array using using the existing value and the new value $repeated_tag_index[$tag.'_'.$level] = 1; if($priority == 'tag' and $get_attributes) { if(isset($current[$tag.'_attr'])) { //The attribute of the last(0th) tag must be moved as well $current[$tag]['0_attr'] = $current[$tag.'_attr']; unset($current[$tag.'_attr']); } if($attributes_data) { $current[$tag][$repeated_tag_index[$tag.'_'.$level] . '_attr'] = $attributes_data; } } $repeated_tag_index[$tag.'_'.$level]++; //0 and 1 index is already taken } } } elseif($type == 'close') { //End of tag '' $current = &$parent[$level-1]; } } return($xml_array); } } gosa-core-2.7.4/include/utils/class_timezone.inc0000644000175000017500000000473611370241175020347 0ustar mikemike "unconfigured", "value" => 0); /* Use current timestamp if $stamp is not set */ if($stamp === NULL){ $stamp = time(); } /* Is there a timezone configured in the gosa configuration (gosa.conf) */ if ($config->get_cfg_value("core","timezone") != ""){ /* Get zonename */ $tz = $config->get_cfg_value("core","timezone"); if(!@date_default_timezone_set($tz)){ msg_dialog::display(_("Configuration error"), sprintf(_("The configured timezone %s is not valid!"), bold($tz)), ERROR_DIALOG); } $tz_delta = date("Z", $stamp); $tz_delta = $tz_delta / 3600 ; return(array("name" => $tz, "value" => $tz_delta)); } return($zone); } /* Return zone informations */ static public function _get_tz_zones() { $timezone_identifiers = DateTimeZone::listIdentifiers(); $timezones = array(); $zones = DateTimeZone::listAbbreviations(); foreach($zones as $group){ foreach($group as $zone) { $timezones[$zone['timezone_id']] = $zone['offset']; if($zone['dst']){ $dst_timezones[$zone['timezone_id']] = 1; } } } return(array("TIMEZONES" => @$timezones, "DST_ZONES" => @$dst_timezones)); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/utils/class_tests.inc0000644000175000017500000002556011725072237017662 0ustar mikemike= 255){ $reason = 1; return(FALSE); } # Check hostname length if(strlen(preg_replace("/\..*$/", "", $str)) > 63){ $reason = 2; return(FALSE); } # Split host and domain part $tmp = preg_split("/\./", $str, 2); $host = $tmp[0]; $domain = count($tmp) == 1 ? NULL : $tmp[1]; if(!preg_match("/^{$regex}*$/i", $host)){ $reason = 3; return(FALSE); } if ($domain) { $regex = "[a-z0-9\.\-_]"; if(!preg_match("/^{$regex}*$/i", $domain)){ $reason = 4; return(FALSE); } } return(TRUE); } /*! \brief Test if the given string is an URL */ public static function is_url($url) { if ($url == ""){ return (TRUE); } return preg_match ("/^(http|https):\/\/((?:[a-zA-Z0-9_-]+\.?)+):?(\d*)/", $url); } /*! \brief Test if the given string is a DN */ public static function is_dn($dn) { if ($dn == ""){ return (TRUE); } return preg_match ("/^[a-z0-9 _-]+$/i", $dn); } /*! \brief Test if the given string is an uid */ public static function is_uid($uid) { if ($uid == ""){ return (TRUE); } /* STRICT adds spaces and case insenstivity to the uid check. This is dangerous and should not be used. */ if (strict_uid_mode()){ return preg_match ("/^[a-z0-9_-]+$/", $uid); } else { return preg_match ("/^[a-z0-9 _.-]+$/i", $uid); } } /*! \brief Test if the given string is an IP */ public static function is_ip($ip) { if(function_exists('filter_var')) { return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); } else { return preg_match("/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/", $ip); } } public static function is_ipv6($ip) { if(function_exists('filter_var')) { return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); } else { $ipv4 = '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'; $g = '([0-9a-f]{1,4})'; //IPv6 group return preg_match("/^$g:$g:$g:$g:$g:$g:$g:$g$/", $ip) || preg_match("/^$g:$g:$g:$g:$g:$g:$ipv4$/", $ip); } } /*! \brief Test if the given string is a mac address */ public static function is_mac($mac) { return preg_match("/^[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]:[a-f0-9][a-f0-9]$/i", $mac); } /*! \brief Checks if the given ip address dosen't match "is_ip" because there is also a sub net mask given */ public static function is_ip_with_subnetmask($ip) { /* Generate list of valid submasks */ $res = array(); for($e = 0 ; $e <= 32; $e++){ $res[$e] = $e; } $i[0] =255; $i[1] =255; $i[2] =255; $i[3] =255; for($a= 3 ; $a >= 0 ; $a --){ $c = 1; while($i[$a] > 0 ){ $str = $i[0].".".$i[1].".".$i[2].".".$i[3]; $res[$str] = $str; $i[$a] -=$c; $c = 2*$c; } } $res["0.0.0.0"] = "0.0.0.0"; if(preg_match("/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/", $ip)){ $mask = preg_replace("/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.". "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)/","",$ip); $mask = preg_replace("/^\//","",$mask); if((in_array_strict("$mask",$res)) && preg_match("/^[0-9\.]/",$mask)){ return(TRUE); } } return(FALSE); } /*! \brief Simple is domain check * * This checks if the given string looks like "string(...).string" */ public static function is_domain($str) { return(preg_match("/^(([a-z0-9\-]{2,63})\.)*[a-z]{2,63}$/i",$str)); } /*! \brief Check if the given argument is an id */ public static function is_id($id) { if ($id == ""){ return (FALSE); } return preg_match ("/^[0-9]+$/", $id); } /*! \brief Check if the given argument is a path */ public static function is_path($path) { if ($path == ""){ return (TRUE); } if (!preg_match('/^[a-z0-9%\/_.+-]+$/i', $path)){ return (FALSE); } return preg_match ("/\/.+$/", $path); } /*! \brief Check if the given argument is an email */ public static function is_email($address, $template= FALSE) { if ($address == ""){ return (TRUE); } if ($template){ return preg_match ("/^[._a-z0-9{\[\]}%\+-]+@[_a-{}\[\]%z0-9-]+(\.[a-z0-9-]+)(\.[a-z0-9-]+)*$/i", $address); } else { return preg_match ("/^[._a-z0-9\+-]+@[_a-z0-9-]+(\.[a-z0-9i-]+)(\.[a-z0-9-]+)*$/i", $address); } } /* \brief Check if the given department name is valid */ public static function is_department_name_reserved($name,$base) { $reservedName = array("systems","apps","incomming","internal","accounts","fax","addressbook", preg_replace("/ou=(.*),/","\\1",get_people_ou()), preg_replace("/ou=(.*),/","\\1",get_groups_ou())); $follwedNames['/ou=fai,ou=configs,ou=systems,/'] = array("fai","hooks","templates","scripts","disk","packages","variables","profiles"); /* Check if name is one of the reserved names */ if(in_array_ics($name,$reservedName)) { return(true); } /* Check all follow combinations if name is in array && parent base == array_key, return false*/ foreach($follwedNames as $key => $names){ if((in_array_ics($name,$names)) && (preg_match($key,$base))){ return(true); } } return(false); } /* \brief Check if $ip1 and $ip2 represents a valid IP range * \return TRUE in case of a valid range, FALSE in case of an error. */ public static function is_ip_range($ip1,$ip2) { if(!tests::is_ip($ip1) || !tests::is_ip($ip2)){ return(FALSE); }else{ $ar1 = explode(".",$ip1); $var1 = $ar1[0] * (16777216) + $ar1[1] * (65536) + $ar1[2] * (256) + $ar1[3]; $ar2 = explode(".",$ip2); $var2 = $ar2[0] * (16777216) + $ar2[1] * (65536) + $ar2[2] * (256) + $ar2[3]; return($var1 < $var2); } } /* \brief Check if the specified IP address $address is inside the given network */ public static function is_in_network($network, $netmask, $address) { $nw= explode('.', $network); $nm= explode('.', $netmask); $ad= explode('.', $address); /* Generate inverted netmask */ for ($i= 0; $i<4; $i++){ $ni[$i]= 255-$nm[$i]; $la[$i]= $nw[$i] | $ni[$i]; } /* Transform to integer */ $first= $nw[0] * (16777216) + $nw[1] * (65536) + $nw[2] * (256) + $nw[3]; $curr= $ad[0] * (16777216) + $ad[1] * (65536) + $ad[2] * (256) + $ad[3]; $last= $la[0] * (16777216) + $la[1] * (65536) + $la[2] * (256) + $la[3]; return ($first < $curr&& $last > $curr); } /* Check if entry value is a valid date */ public static function is_date($date) { global $lang; if ($date == ""){ return (TRUE); } #TODO: use $lang to check date format if (!preg_match("/^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})$/", $date, $matches)) { return false; } return checkdate($matches[2],$matches[1],$matches[3]); } /* * Compares two dates * @param $dataA as String in german dateformat * @param $dataB as String in german dateformat * @return float or false on error * * * <0 => a a=b * >0 => a>b */ public static function compareDate($dateA, $dateB){ /* * TODO: * use $lang to check date format */ $tstampA = strtotime($dateA); if($tstampA === false){ trigger_error("Given date can not be converted to timestamp(".$dataA.") in function tests::compareDate."); return false; } $tstampB = strtotime($dateB); if($tstampB === false){ trigger_error("Given date can not be converted to timestamp(".$dataB.") in function tests::compareDate."); return false; } return $tstampA-$tstampB; } /* \brief Check if the specified IP address $address is inside the given network */ public static function is_in_ip_range($from, $to, $address) { $from = explode('.', $from); $to = explode('.', $to); $ad = explode('.', $address); /* Transform to integer */ $from= $from[0] * (16777216) + $from[1] * (65536) + $from[2] * (256) + $from[3]; $to= $to[0] * (16777216) + $to[1] * (65536) + $to[2] * (256) + $to[3]; $ad= $ad[0] * (16777216) + $ad[1] * (65536) + $ad[2] * (256) + $ad[3]; return ($ad >= $from && $ad <= $to); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/utils/class_msgPool.inc0000644000175000017500000003732711472705006020140 0ustar mikemike
    $name")); }else{ return (sprintf(_("This %s object will be deleted: %s"), bold($type), "

    $name")); } } if (count($name) == 1){ if($type == ""){ return (_("This object will be deleted:")."
    ".msgPool::buildList($name)); }else{ return (sprintf(_("This %s object will be deleted:"), bold($type)). "
    ".msgPool::buildList($name)); } } if($type == ""){ return (sprintf(_("These objects will be deleted: %s"), "

    ".msgPool::buildList($name))); }else{ return (sprintf(_("These %s objects will be deleted: %s"), bold($type), "
    ".msgPool::buildList($name))); } } public static function permDelete($name= "") { if ($name == "") { return (_("You have no permission to delete this object!")); } if (!is_array($name)){ return (_("You have no permission to delete the object:")."

    $name"); } if (count($name) == 1){ return (_("You have no permission to delete the object:")."
    ".msgPool::buildList($name)); } return (_("You have no permission to delete these objects:")."
    ".msgPool::buildList($name)); } public static function permCreate($name= "") { if ($name == "") { return (_("You have no permission to create this object!")); } if (!is_array($name)){ return (_("You have no permission to create the object:")."

    $name"); } if (count($name) == 1){ return (_("You have no permission to create the object:")."
    ".msgPool::buildList($name)); } return (_("You have no permission to create these objects:")."
    ".msgPool::buildList($name)); } public static function permModify($name= "") { if ($name == "") { return (_("You have no permission to modify this object!")); } if (!is_array($name)){ return (_("You have no permission to modify the object:")."

    $name"); } if (count($name) == 1){ return (_("You have no permission to modify the object:")."
    ".msgPool::buildList($name)); } return (_("You have no permission to modify these objects:")."
    ".msgPool::buildList($name)); } public static function permView($name= "") { if ($name == "") { return (_("You have no permission to view this object!")); } if (!is_array($name)){ return (_("You have no permission to view the object:")."

    $name"); } if (count($name) == 1){ return (_("You have no permission to view the object:")."
    ".msgPool::buildList($name)); } return (_("You have no permission to view these objects:")."
    ".msgPool::buildList($name)); } public static function permMove($name= "") { if ($name == "") { return (_("You have no permission to move this object!")); } if (!is_array($name)){ return (_("You have no permission to move the object:")."

    $name"); } if (count($name) == 1){ return (_("You have no permission to move the object:")."
    ".msgPool::buildList($name)); } return (_("You have no permission to move these objects:")."
    ".msgPool::buildList($name)); } public static function dbconnect($name, $error= "", $dbinfo= "") { if ($error != ""){ $error= "

    "._("Error").": ".bold($error); } if ($dbinfo != ""){ $error.= "

    "._("Connection information").": ".bold($dbinfo); } return (sprintf(_("Cannot connect to %s database!"), bold($name)).$error); } public static function dbselect($name, $error= "", $dbinfo= "") { if ($error != ""){ $error= "

    "._("Error").": ".bold($error); } if ($dbinfo != ""){ $error.= "

    "._("Connection information").": ".bold($dbinfo); } return (sprintf(_("Cannot select %s database!"), bold($name)).$error); } public static function noserver($name) { return (sprintf(_("No %s server defined!"), bold($name))); } public static function dbquery($name, $error= "", $dbinfo= "") { if ($error != ""){ $error= "

    "._("Error").": ".bold($error); } if ($dbinfo != ""){ $error.= "

    "._("Connection information").": ".bold($dbinfo); } return (sprintf(_("Cannot query %s database!"), bold($name)).$error); } public static function reserved($name) { return (sprintf(_("The field %s contains a reserved keyword!"), bold($name))); } public static function cmdnotfound($type, $plugin) { return (sprintf(_("Command specified as %s hook for plugin %s does not exist!"), bold($type), bold($plugin))); } public static function cmdinvalid($type, $command = "",$plugin="") { if(empty($command)){ return (sprintf(_("%s command is invalid!"), bold($type))); }elseif($command != "" && $plugin != ""){ return (sprintf(_("%s command (%s) for plugin %s is invalid!"), bold($type), bold($command) ,bold($plugin))); }elseif($plugin != "" && $command =""){ return (sprintf(_("%s command for plugin %s is invalid!"), bold($type), bold($plugin))); }else{ return (sprintf(_("%s command (%s) is invalid!"), bold($type), bold($command))); } } public static function cmdexecfailed($type, $command = "",$plugin="") { if(empty($command)){ return (sprintf(_("Cannot execute %s command!"), bold($type))); }elseif($command != "" && $plugin != ""){ return (sprintf(_("Cannot execute %s command (%s) for plugin %s!"), bold($type), bold($command), bold($plugin))); }elseif($plugin != "" && $command =""){ return (sprintf(_("Cannot execute %s command for plugin %s!"), bold($type), bold($plugin))); }else{ return (sprintf(_("Cannot execute %s command (%s)!"), bold($type), bold($command))); } } public static function toobig($name, $min= "") { if ($min == ""){ return (sprintf(_("Value for %s is too large!"), bold($name))); } else { return (sprintf(_("%s must be smaller than %s!"), bold($name), bold($min))); } } public static function toosmall($name, $min= "") { if ($min == ""){ return (sprintf(_("Value for %s is too small!"), bold($name))); } else { return (sprintf(_("%s must be %s or above!"), bold($name), bold($min))); } } public static function depends($name1, $name2) { return (sprintf(_("%s depends on %s - please provide both values!"), bold($name1), bold($name2))); } public static function duplicated($name) { return (sprintf(_("There is already an entry with this %s attribute in the system!"), bold($name))); } public static function required($name) { return (sprintf(_("The required field %s is empty!"), bold($name))); } public static function invalid($name, $data= "", $regex= "", $example= "") { /* Stylize example */ if ($example != ""){ $example= "

    "._("Example").": ".bold($example); } /* If validChars are posted, take data and paint all invalid characters... */ if ($regex) { $result= ""; $mismatch= ""; mb_internal_encoding('UTF-8'); for($i=0; $i<=mb_strlen($data);$i++){ $currentChar= mb_substr($data, $i,1); if (preg_match("$regex", $currentChar)){ $result.= $currentChar; } else { $result.= "".($currentChar).""; $mismatch.= $currentChar; } } return sprintf(_("The Field %s contains invalid characters"), bold($name)).". ". (strlen($mismatch)==1?sprintf(_("%s is not allowed:"), bold($mismatch)):sprintf(_("%s are not allowed!"), bold($mismatch))). "

    \"$result\"$example"; } else { return sprintf(_("The Field %s contains invalid characters!"), bold($name))."!$example"; } } public static function missingext($name) { return sprintf(_("Missing %s PHP extension!"), bold($name)); } public static function cancelButton() { return sprintf(_("Cancel")); } public static function okButton() { return sprintf(_("OK")); } public static function applyButton() { return sprintf(_("Apply")); } public static function saveButton() { return sprintf(_("Save")); } public static function addButton($what= "") { return $what == "" ? sprintf(_("Add")): sprintf(_("Add %s"), $what); } public static function delButton($what= "") { return $what == "" ? sprintf(_("Delete")): sprintf(_("Delete %s"), $what); } public static function setButton($what= "") { return $what == "" ? sprintf(_("Set")): sprintf(_("Set %s"), $what); } public static function editButton($what= "") { return $what == "" ? sprintf(_("Edit...")): sprintf(_("Edit %s..."), $what); } public static function backButton($what= "") { return _("Back"); } public static function buildList($data) { $objects= "
      "; foreach ($data as $key => $value){ if (is_numeric($key)){ $objects.= "
    • \n".LDAP::makeReadable($value)."
    • "; } else { $objects.= "
    • \n$value ".LDAP::makeReadable($key)."
    • "; } } $objects.= "
    "; return($objects); } public static function noValidExtension($name) { return sprintf(_("This account has no valid %s extensions!"), bold($name)); } public static function featuresEnabled($name, $depends= "") { if ($depends == ""){ return sprintf(_("This account has %s settings enabled. You can disable them by clicking below."), bold($name)); } else { if (count($depends) == 1){ return sprintf(_("This account has %s settings enabled. To disable them, you'll need to remove the %s settings first!"), bold($name), bold($depends)); } else { $deps= ""; foreach ($depends as $dep){ $deps.= "$dep / "; } $deps= preg_replace("/ \/ $/", "", $deps); return sprintf(_("This account has %s settings enabled. To disable them, you'll need to remove the %s settings first!"), bold($name), bold($deps)); } } } public static function featuresDisabled($name, $depends= "") { if ($depends == ""){ return sprintf(_("This account has %s settings disabled. You can enable them by clicking below."), bold($name)); } else { if (count($depends) == 1){ return sprintf(_("This account has %s settings disabled. To enable them, you'll need to add the %s settings first!"), bold($name), bold($depends)); } else { $deps= ""; foreach ($depends as $dep){ $deps.= "$dep / "; } $deps= preg_replace("/ \/ $/", "", $deps); return sprintf(_("This account has %s settings disabled. To enable them, you'll need to add the %s settings first!"), bold($name), bold($deps)); } } } public static function addFeaturesButton($name) { return sprintf(_("Add %s settings"), $name); } public static function removeFeaturesButton($name) { return sprintf(_("Remove %s settings"), $name); } public static function clickEditToChange() { return _("Click the 'Edit' button below to change informations in this dialog"); } public static function months() { return array(_("January"), _("February"), _("March"), _("April"), _("May"), _("June"), _("July"), _("August"), _("September"), _("October"), _("November"), _("December")); } public static function weekdays() { return array( _("Sunday"), _("Monday"), _("Tuesday"), _("Wednesday"), _("Thursday"), _("Friday"), _("Saturday")); } public static function mysqlerror($error, $plugin= "") { /* Assign headline depending on type */ $headline= _("MySQL operation failed!"); return $headline."

    "._("Error").": ".bold($error); } public static function ldaperror($error, $dn= "", $type= 0, $plugin= "") { /* Assign headline depending on type */ $typemap= array(1 => _("read operation"), _("add operation"), _("modify operation"), _("delete operation"), _("search operation"), _("authentication")); if (isset($typemap[$type])){ $headline= sprintf(_("LDAP %s failed!"), bold($typemap[$type])); } else { $headline= _("LDAP operation failed!"); } /* Fill DN information */ $dn_info=""; if ($dn != ""){ $dn_info= "

    "._("Object").": ".bold(LDAP::fix($dn)); } return $headline.$dn_info."

    "._("Error").": ".bold($error); } public static function incorrectUpload($reason= "") { if ($reason == ""){ return _("Upload failed!"); } return sprintf(_("Upload failed: %s"), "

    ".bold($reason)); } public static function siError($error= "") { if ($error == ""){ return _("Communication failure with the infrastructure service!"); } return sprintf(_("Communication failure with the infrastructure service: %s"), "

    ".$error); } public static function rpcError($error= "") { if ($error == ""){ return _("Communication failure with the GOsa-NG service!"); } return sprintf(_("Communication failure with the GOsa-NG service: %s"), "

    ".$error); } public static function stillInUse($type, $objects= array()) { if (!is_array($objects)){ return sprintf(_("This %s is still in use by this object: %s"), bold($type), "

    ".$objects); } if (count($objects) == 1){ return sprintf(_("This %s is still in use by this object: %s"), bold($type), "
    ".msgPool::buildList($objects)); } if (count($objects) == 0){ return sprintf(_("This %s is still in use."), bold($type)); } return sprintf(_("This %s is still in use by these objects: %s"), bold($type), "
    ".msgPool::buildList($objects)); } public static function fileDoesNotExist($file) { return sprintf(_("File %s does not exist!"), bold($file)); } public static function cannotReadFile($file) { return sprintf(_("Cannot open file %s for reading!"), bold($file)); } public static function cannotWriteFile($file) { return sprintf(_("Cannot open file %s for writing!"), bold($file)); } public static function invalidConfigurationAttribute($attr) { return sprintf(_("The value for %s is currently unconfigured or invalid, please check your configuration file!"), bold($attr)); } public static function cannotDeleteFile($file) { return sprintf(_("Cannot delete file %s!"), bold($file)); } public static function cannotCreateFolder($path) { return sprintf(_("Cannot create folder %s!"), bold($path)); } public static function cannotDeleteFolder($path) { return sprintf(_("Cannot delete folder %s!"), bold($path)); } public static function checkingFor($what) { return sprintf(_("Checking for %s support"), bold($what)); } public static function installPhpModule($what) { return sprintf(_("Install and activate the %s PHP module."), bold($what)); } public static function class_not_found($plugin) { return (sprintf(_("Cannot initialize class %s! Maybe there is a plugin missing in your gosa setup?"), bold($plugin))); } public static function check_base() { return _("The supplied base is not valid and has been reset to its previous value!"); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/utils/excel/0000755000175000017500000000000011752422553015730 5ustar mikemikegosa-core-2.7.4/include/utils/excel/functions.writeexcel_utility.inc.php0000644000175000017500000001677010330363250025156 0ustar mikemike 0) { $chr1 = chr(ord('A') + $int - 1); } $chr2 = chr(ord('A') + $frac); // Zero index to 1-index $row++; return $col_abs.$chr1.$chr2.$row_abs.$row; } /* * Converts an Excel cell reference string in A1 notation * to numeric $row/$col notation. * * Returns: array($row, $col, $row_absolute, $col_absolute) * * The $row_absolute and $col_absolute parameters aren't documented because * they are mainly used internally and aren't very useful to the user. */ function xl_cell_to_rowcol($cell) { preg_match('/(\$?)([A-I]?[A-Z])(\$?)(\d+)/', $cell, $reg); $col_abs = ($reg[1] == "") ? 0 : 1; $col = $reg[2]; $row_abs = ($reg[3] == "") ? 0 : 1; $row = $reg[4]; // Convert base26 column string to number // All your Base are belong to us. $chars = preg_split('//', $col, -1, PREG_SPLIT_NO_EMPTY); $expn = 0; $col = 0; while (sizeof($chars)>0) { $char = array_pop($chars); // Least significant character first $col += (ord($char) - ord('A') + 1) * pow(26, $expn); $expn++; } // Convert 1-index to zero-index $row--; $col--; return array($row, $col, $row_abs, $col_abs); } /* * Increments the row number of an Excel cell reference string * in A1 notation. * For example C4 to C5 * * Returns: a cell reference string in A1 notation. */ function xl_inc_row($cell) { list($row, $col, $row_abs, $col_abs) = xl_cell_to_rowcol($cell); return xl_rowcol_to_cell(++$row, $col, $row_abs, $col_abs); } /* * Decrements the row number of an Excel cell reference string * in A1 notation. * For example C4 to C3 * * Returns: a cell reference string in A1 notation. */ function xl_dec_row($cell) { list($row, $col, $row_abs, $col_abs) = xl_cell_to_rowcol($cell); return xl_rowcol_to_cell(--$row, $col, $row_abs, $col_abs); } /* * Increments the column number of an Excel cell reference string * in A1 notation. * For example C3 to D3 * * Returns: a cell reference string in A1 notation. */ function xl_inc_col($cell) { list($row, $col, $row_abs, $col_abs) = xl_cell_to_rowcol($cell); return xl_rowcol_to_cell($row, ++$col, $row_abs, $col_abs); } /* * Decrements the column number of an Excel cell reference string * in A1 notation. * For example C3 to B3 * * Returns: a cell reference string in A1 notation. */ function xl_dec_col($cell) { list($row, $col, $row_abs, $col_abs) = xl_cell_to_rowcol($cell); return xl_rowcol_to_cell($row, --$col, $row_abs, $col_abs); } function xl_date_list($year, $month=1, $day=1, $hour=0, $minute=0, $second=0) { $monthdays=array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); // Leap years since 1900 (year is dividable by 4) $leapyears=floor(($year-1900)/4); // Non-leap years since 1900 (year is dividable by 100) $nonleapyears=floor(($year-1900)/100); // Non-non-leap years since 1900 (year is dividable by 400) // (Yes, it MUST be "1600", not "1900") $nonnonleapyears=floor(($year-1600)/400); // Don't count the leap day of the specified year if it didn't // happen yet (i.e. before 1 March) // // Please note that $leapyears becomes -1 for dates before 1 March 1900; // this is not logical, but later we will add a day for Excel's // phantasie leap day in 1900 without checking if the date is actually // after 28 February 1900; so these two logic errors "neutralize" // each other if ($year%4==0 && $month<3) { $leapyears--; } $days=365*($year-1900)+$leapyears-$nonleapyears+$nonnonleapyears; for ($c=1;$c<$month;$c++) { $days+=$monthdays[$c-1]; } // Excel actually wants the days since 31 December 1899, not since // 1 January 1900; this will also add this extra day $days+=$day; // Excel treats 1900 erroneously as a leap year, so we must // add one day // // Please note that we DON'T have to check if the date is after // 28 February 1900, because for such dates $leapyears is -1 // (see above) $days++; return (float)($days+($hour*3600+$minute*60+$second)/86400); } function xl_parse_time($time) { if (preg_match('/(\d{1,2}):(\d\d):?((?:\d\d)(?:\.\d+)?)?(?:\s+)?(am|pm)?/i', $time, $reg)) { $hours = $reg[1]; $minutes = $reg[2]; $seconds = $reg[3] || 0; $meridian = strtolower($reg[4]) || ''; // Normalise midnight and midday if ($hours == 12 && $meridian != '') { $hours = 0; } // Add 12 hours to the pm times. Note: 12.00 pm has been set to 0.00. if ($meridian == 'pm') { $hours += 12; } // Calculate the time as a fraction of 24 hours in seconds return (float)(($hours*3600+$minutes*60+$seconds)/86400); } else { return false; // Not a valid time string } } /* * Automagically converts almost any date/time string to an Excel date. * This function will always only be as good as strtotime() is. */ function xl_parse_date($date) { $unixtime=strtotime($date); $year=date("Y", $unixtime); $month=date("m", $unixtime); $day=date("d", $unixtime); $hour=date("H", $unixtime); $minute=date("i", $unixtime); $second=date("s", $unixtime); // Convert to Excel date return xl_date_list($year, $month, $day, $hour, $minute, $second); } /* * Dummy function to be "compatible" to Spreadsheet::WriteExcel */ function xl_parse_date_init() { // Erm... do nothing... // strtotime() doesn't require anything to be initialized // (do not ask me how to set the timezone...) } /* * xl_decode_date_EU() and xl_decode_date_US() are mapped * to xl_parse_date(); there seems to be no PHP function that * differentiates between EU and US dates; I've never seen * somebody using dd/mm/yyyy anyway, it always should be one of: * - yyyy-mm-dd (international) * - dd.mm.yyyy (european) * - mm/dd/yyyy (english/US/british?) */ function xl_decode_date_EU($date) { return xl_parse_date($date); } function xl_decode_date_US($date) { return xl_parse_date($date); } function xl_date_1904($exceldate) { if ($exceldate < 1462) { // date is before 1904 $exceldate = 0; } else { $exceldate -= 1462; } return $exceldate; } ?> gosa-core-2.7.4/include/utils/excel/class.writeexcel_worksheet.inc.php0000644000175000017500000027015511327532760024575 0ustar mikemikewriteexcel_biffwriter(); $rowmax = 65536; // 16384 in Excel 5 $colmax = 256; $strmax = 255; $this->_name = $name; $this->_index = $index; $this->_activesheet = $activesheet; $this->_firstsheet = $firstsheet; $this->_url_format = $url_format; $this->_parser = $parser; $this->_tempdir = $tempdir; $this->_ext_sheets = array(); $this->_using_tmpfile = 1; $this->_filehandle = false; $this->_fileclosed = 0; $this->_offset = 0; $this->_xls_rowmax = $rowmax; $this->_xls_colmax = $colmax; $this->_xls_strmax = $strmax; $this->_dim_rowmin = $rowmax +1; $this->_dim_rowmax = 0; $this->_dim_colmin = $colmax +1; $this->_dim_colmax = 0; $this->_colinfo = array(); $this->_selection = array(0, 0); $this->_panes = array(); $this->_active_pane = 3; $this->_frozen = 0; $this->_selected = 0; $this->_paper_size = 0x0; $this->_orientation = 0x1; $this->_header = ''; $this->_footer = ''; $this->_hcenter = 0; $this->_vcenter = 0; $this->_margin_head = 0.50; $this->_margin_foot = 0.50; $this->_margin_left = 0.75; $this->_margin_right = 0.75; $this->_margin_top = 1.00; $this->_margin_bottom = 1.00; $this->_title_rowmin = false; $this->_title_rowmax = false; $this->_title_colmin = false; $this->_title_colmax = false; $this->_print_rowmin = false; $this->_print_rowmax = false; $this->_print_colmin = false; $this->_print_colmax = false; $this->_print_gridlines = 1; $this->_screen_gridlines = 1; $this->_print_headers = 0; $this->_fit_page = 0; $this->_fit_width = 0; $this->_fit_height = 0; $this->_hbreaks = array(); $this->_vbreaks = array(); $this->_protect = 0; $this->_password = false; $this->_col_sizes = array(); $this->_row_sizes = array(); $this->_col_formats = array(); $this->_row_formats = array(); $this->_zoom = 100; $this->_print_scale = 100; $this->_initialize(); } ############################################################################### # # _initialize() # # Open a tmp file to store the majority of the Worksheet data. If this fails, # for example due to write permissions, store the data in memory. This can be # slow for large files. # function _initialize() { # Open tmp file for storing Worksheet data. $fh=fopen(tempnam($this->_tempdir, "php_writeexcel"), "w+b"); if ($fh) { # Store filehandle $this->_filehandle = $fh; } else { # If tempfile() failed store data in memory $this->_using_tmpfile = 0; if ($this->_index == 0) { $dir = $this->_tempdir; //todo warn "Unable to create temp files in $dir. Refer to set_tempdir()". // " in the Spreadsheet::WriteExcel documentation.\n" ; } } } /* * Add data to the beginning of the workbook (note the reverse order) * and to the end of the workbook. */ function _close($sheetnames) { /////////////////////////////// // Prepend in reverse order!! // $this->_store_dimensions(); // Prepend the sheet dimensions $this->_store_password(); // Prepend the sheet password $this->_store_protect(); // Prepend the sheet protection $this->_store_setup(); // Prepend the page setup $this->_store_margin_bottom(); // Prepend the bottom margin $this->_store_margin_top(); // Prepend the top margin $this->_store_margin_right(); // Prepend the right margin $this->_store_margin_left(); // Prepend the left margin $this->_store_vcenter(); // Prepend the page vertical // centering $this->_store_hcenter(); // Prepend the page horizontal // centering $this->_store_footer(); // Prepend the page footer $this->_store_header(); // Prepend the page header $this->_store_vbreak(); // Prepend the vertical page breaks $this->_store_hbreak(); // Prepend the horizontal // page breaks $this->_store_wsbool(); // Prepend WSBOOL $this->_store_gridset(); // Prepend GRIDSET $this->_store_print_gridlines(); // Prepend PRINTGRIDLINES $this->_store_print_headers(); // Prepend PRINTHEADERS // Prepend EXTERNSHEET references $num_sheets = sizeof($sheetnames); for ($i = $num_sheets; $i > 0; $i--) { $sheetname = $sheetnames[$i-1]; $this->_store_externsheet($sheetname); } $this->_store_externcount($num_sheets); // Prepend the EXTERNCOUNT // of external references. // Prepend the COLINFO records if they exist if (sizeof($this->_colinfo)>0){ while (sizeof($this->_colinfo)>0) { $arrayref = array_pop ($this->_colinfo); $this->_store_colinfo($arrayref); } $this->_store_defcol(); } $this->_store_bof(0x0010); // Prepend the BOF record // // End of prepend. Read upwards from here. //////////////////////////////////////////// // Append $this->_store_window2(); $this->_store_zoom(); if (sizeof($this->_panes)>0) { $this->_store_panes($this->_panes); } $this->_store_selection($this->_selection); $this->_store_eof(); } /* * Retrieve the worksheet name. */ function get_name() { return $this->_name; } ############################################################################### # # get_data(). # # Retrieves data from memory in one chunk, or from disk in $buffer # sized chunks. # function get_data() { $buffer = 4096; # Return data stored in memory if ($this->_data!==false) { $tmp = $this->_data; $this->_data=false; $fh = $this->_filehandle; if ($this->_using_tmpfile) { fseek($fh, 0, SEEK_SET); } if ($this->_debug) { print "*** worksheet::get_data() called (1):"; for ($c=0;$c_using_tmpfile) { if ($tmp=fread($this->_filehandle, $buffer)) { if ($this->_debug) { print "*** worksheet::get_data() called (2):"; for ($c=0;$c_selected = 1; } /* * Set this worksheet as the active worksheet, i.e. the worksheet * that is displayed when the workbook is opened. Also set it as * selected. */ function activate() { $this->_selected = 1; $this->_activesheet = $this->_index; } /* * Set this worksheet as the first visible sheet. This is necessary * when there are a large number of worksheets and the activated * worksheet is not visible on the screen. */ function set_first_sheet() { $this->_firstsheet = $this->_index; } /* * Set the worksheet protection flag to prevent accidental modification * and to hide formulas if the locked and hidden format properties have * been set. */ function protect($password) { $this->_protect = 1; $this->_password = $this->_encode_password($password); } ############################################################################### # # set_column($firstcol, $lastcol, $width, $format, $hidden) # # Set the width of a single column or a range of column. # See also: _store_colinfo # function set_column() { $_=func_get_args(); $cell = $_[0]; # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $cell)) { $_ = $this->_substitute_cellref($_); } array_push($this->_colinfo, $_); # Store the col sizes for use when calculating image vertices taking # hidden columns into account. Also store the column formats. # if (sizeof($_)<3) { # Ensure at least $firstcol, $lastcol and $width return; } $width = $_[4] ? 0 : $_[2]; # Set width to zero if column is hidden $format = $_[3]; list($firstcol, $lastcol) = $_; for ($col=$firstcol;$col<=$lastcol;$col++) { $this->_col_sizes[$col] = $width; if ($format) { $this->_col_formats[$col] = $format; } } } ############################################################################### # # set_selection() # # Set which cell or cells are selected in a worksheet: see also the # function _store_selection # function set_selection() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } $this->_selection = $_; } ############################################################################### # # freeze_panes() # # Set panes and mark them as frozen. See also _store_panes(). # function freeze_panes() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } $this->_frozen = 1; $this->_panes = $_; } ############################################################################### # # thaw_panes() # # Set panes and mark them as unfrozen. See also _store_panes(). # function thaw_panes() { $_=func_get_args(); $this->_frozen = 0; $this->_panes = $_; } /* * Set the page orientation as portrait. */ function set_portrait() { $this->_orientation = 1; } /* * Set the page orientation as landscape. */ function set_landscape() { $this->_orientation = 0; } /* * Set the paper type. Ex. 1 = US Letter, 9 = A4 */ function set_paper($type) { $this->_paper_size = $type; } /* * Set the page header caption and optional margin. */ function set_header($string, $margin) { if (strlen($string) >= 255) { trigger_error("Header string must be less than 255 characters", E_USER_WARNING); return; } $this->_header = $string; $this->_margin_head = $margin; } /* * Set the page footer caption and optional margin. */ function set_footer($string, $margin) { if (strlen($string) >= 255) { trigger_error("Footer string must be less than 255 characters", E_USER_WARNING); return; } $this->_footer = $string; $this->_margin_foot = $margin; } /* * Center the page horizontally. */ function center_horizontally($hcenter=1) { $this->_hcenter = $hcenter; } /* * Center the page horizontally. */ function center_vertically($vcenter=1) { $this->_vcenter = $vcenter; } /* * Set all the page margins to the same value in inches. */ function set_margins($margin) { $this->set_margin_left($margin); $this->set_margin_right($margin); $this->set_margin_top($margin); $this->set_margin_bottom($margin); } /* * Set the left and right margins to the same value in inches. */ function set_margins_LR($margin) { $this->set_margin_left($margin); $this->set_margin_right($margin); } /* * Set the top and bottom margins to the same value in inches. */ function set_margins_TB($margin) { $this->set_margin_top($margin); $this->set_margin_bottom($margin); } /* * Set the left margin in inches. */ function set_margin_left($margin=0.75) { $this->_margin_left = $margin; } /* * Set the right margin in inches. */ function set_margin_right($margin=0.75) { $this->_margin_right = $margin; } /* * Set the top margin in inches. */ function set_margin_top($margin=1.00) { $this->_margin_top = $margin; } /* * Set the bottom margin in inches. */ function set_margin_bottom($margin=1.00) { $this->_margin_bottom = $margin; } ############################################################################### # # repeat_rows($first_row, $last_row) # # Set the rows to repeat at the top of each printed page. See also the # _store_name_xxxx() methods in Workbook.pm. # function repeat_rows() { $_=func_get_args(); $this->_title_rowmin = $_[0]; $this->_title_rowmax = isset($_[1]) ? $_[1] : $_[0]; # Second row is optional } ############################################################################### # # repeat_columns($first_col, $last_col) # # Set the columns to repeat at the left hand side of each printed page. # See also the _store_names() methods in Workbook.pm. # function repeat_columns() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } $this->_title_colmin = $_[0]; $this->_title_colmax = isset($_[1]) ? $_[1] : $_[0]; # Second col is optional } ############################################################################### # # print_area($first_row, $first_col, $last_row, $last_col) # # Set the area of each worksheet that will be printed. See also the # _store_names() methods in Workbook.pm. # function print_area() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } if (sizeof($_) != 4) { # Require 4 parameters return; } $this->_print_rowmin = $_[0]; $this->_print_colmin = $_[1]; $this->_print_rowmax = $_[2]; $this->_print_colmax = $_[3]; } /* * Set the option to hide gridlines on the screen and the printed page. * There are two ways of doing this in the Excel BIFF format: The first * is by setting the DspGrid field of the WINDOW2 record, this turns off * the screen and subsequently the print gridline. The second method is * to via the PRINTGRIDLINES and GRIDSET records, this turns off the * printed gridlines only. The first method is probably sufficient for * most cases. The second method is supported for backwards compatibility. */ function hide_gridlines($option=1) { if ($option == 0) { $this->_print_gridlines = 1; # 1 = display, 0 = hide $this->_screen_gridlines = 1; } elseif ($option == 1) { $this->_print_gridlines = 0; $this->_screen_gridlines = 1; } else { $this->_print_gridlines = 0; $this->_screen_gridlines = 0; } } /* * Set the option to print the row and column headers on the printed page. * See also the _store_print_headers() method below. */ function print_row_col_headers($headers=1) { $this->_print_headers = $headers; } /* * Store the vertical and horizontal number of pages that will define * the maximum area printed. See also _store_setup() and _store_wsbool() * below. */ function fit_to_pages($width, $height) { $this->_fit_page = 1; $this->_fit_width = $width; $this->_fit_height = $height; } /* * Store the horizontal page breaks on a worksheet. */ function set_h_pagebreaks($breaks) { $this->_hbreaks=array_merge($this->_hbreaks, $breaks); } /* * Store the vertical page breaks on a worksheet. */ function set_v_pagebreaks($breaks) { $this->_vbreaks=array_merge($this->_vbreaks, $breaks); } /* * Set the worksheet zoom factor. */ function set_zoom($scale=100) { // Confine the scale to Excel's range if ($scale < 10 || $scale > 400) { trigger_error("Zoom factor $scale outside range: ". "10 <= zoom <= 400", E_USER_WARNING); $scale = 100; } $this->_zoom = $scale; } /* * Set the scale factor for the printed page. */ function set_print_scale($scale=100) { // Confine the scale to Excel's range if ($scale < 10 || $scale > 400) { trigger_error("Print scale $scale outside range: ". "10 <= zoom <= 400", E_USER_WARNING); $scale = 100; } // Turn off "fit to page" option $this->_fit_page = 0; $this->_print_scale = $scale; } ############################################################################### # # write($row, $col, $token, $format) # # Parse $token call appropriate write method. $row and $column are zero # indexed. $format is optional. # # Returns: return value of called subroutine # function write() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } $token = $_[2]; # Match an array ref. if (is_array($token)) { return call_user_func_array(array($this, 'write_row'), $_); } # Match number if (preg_match('/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/', $token)) { return call_user_func_array(array($this, 'write_number'), $_); } # Match http, https or ftp URL elseif (preg_match('|^[fh]tt?ps?://|', $token)) { return call_user_func_array(array($this, 'write_url'), $_); } # Match mailto: elseif (preg_match('/^mailto:/', $token)) { return call_user_func_array(array($this, 'write_url'), $_); } # Match internal or external sheet link elseif (preg_match('[^(?:in|ex)ternal:]', $token)) { return call_user_func_array(array($this, 'write_url'), $_); } # Match formula elseif (preg_match('/^=/', $token)) { return call_user_func_array(array($this, 'write_formula'), $_); } # Match blank elseif ($token == '') { array_splice($_, 2, 1); # remove the empty string from the parameter list return call_user_func_array(array($this, 'write_blank'), $_); } # Default: match string else { return call_user_func_array(array($this, 'write_string'), $_); } } ############################################################################### # # write_row($row, $col, $array_ref, $format) # # Write a row of data starting from ($row, $col). Call write_col() if any of # the elements of the array ref are in turn array refs. This allows the writing # of 1D or 2D arrays of data in one go. # # Returns: the first encountered error value or zero for no errors # function write_row() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } # Catch non array refs passed by user. if (!is_array($_[2])) { trigger_error("Not an array ref in call to write_row()!", E_USER_ERROR); } list($row, $col, $tokens)=array_splice($_, 0, 3); $options = $_[0]; $error = 0; foreach ($tokens as $token) { # Check for nested arrays if (is_array($token)) { $ret = $this->write_col($row, $col, $token, $options); } else { $ret = $this->write ($row, $col, $token, $options); } # Return only the first error encountered, if any. $error = $error || $ret; $col++; } return $error; } ############################################################################### # # _XF() # # Returns an index to the XF record in the workbook. # TODO # # Note: this is a function, not a method. # function _XF($row=false, $col=false, $format=false) { if ($format) { return $format->get_xf_index(); } elseif (isset($this->_row_formats[$row])) { return $this->_row_formats[$row]->get_xf_index(); } elseif (isset($this->_col_formats[$col])) { return $this->_col_formats[$col]->get_xf_index(); } else { return 0x0F; } } ############################################################################### # # write_col($row, $col, $array_ref, $format) # # Write a column of data starting from ($row, $col). Call write_row() if any of # the elements of the array ref are in turn array refs. This allows the writing # of 1D or 2D arrays of data in one go. # # Returns: the first encountered error value or zero for no errors # function write_col() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } # Catch non array refs passed by user. if (!is_array($_[2])) { trigger_error("Not an array ref in call to write_row()!", E_USER_ERROR); } $row = array_shift($_); $col = array_shift($_); $tokens = array_shift($_); $options = $_; $error = 0; foreach ($tokens as $token) { # write() will deal with any nested arrays $ret = $this->write($row, $col, $token, $options); # Return only the first error encountered, if any. $error = $error || $ret; $row++; } return $error; } ############################################################################### ############################################################################### # # Internal methods # ############################################################################### # # _append(), overloaded. # # Store Worksheet data in memory using the base class _append() or to a # temporary file, the default. # function _append($data) { if (func_num_args()>1) { trigger_error("writeexcel_worksheet::_append() ". "called with more than one argument", E_USER_ERROR); } if ($this->_using_tmpfile) { if ($this->_debug) { print "worksheet::_append() called:"; for ($c=0;$c $this->_limit) { $data = $this->_add_continue($data); } fputs($this->_filehandle, $data); $this->_datasize += strlen($data); } else { parent::_append($data); } } ############################################################################### # # _substitute_cellref() # # Substitute an Excel cell reference in A1 notation for zero based row and # column values in an argument list. # # Ex: ("A4", "Hello") is converted to (3, 0, "Hello"). # // Exactly one array must be passed! function _substitute_cellref($_) { $cell = strtoupper(array_shift($_)); # Convert a column range: 'A:A' or 'B:G' if (preg_match('/([A-I]?[A-Z]):([A-I]?[A-Z])/', $cell, $reg)) { list($dummy, $col1) = $this->_cell_to_rowcol($reg[1] .'1'); # Add a dummy row list($dummy, $col2) = $this->_cell_to_rowcol($reg[2] .'1'); # Add a dummy row return array_merge(array($col1, $col2), $_); } # Convert a cell range: 'A1:B7' if (preg_match('/\$?([A-I]?[A-Z]\$?\d+):\$?([A-I]?[A-Z]\$?\d+)/', $cell, $reg)) { list($row1, $col1) = $this->_cell_to_rowcol($reg[1]); list($row2, $col2) = $this->_cell_to_rowcol($reg[2]); return array_merge(array($row1, $col1, $row2, $col2), $_); } # Convert a cell reference: 'A1' or 'AD2000' if (preg_match('/\$?([A-I]?[A-Z]\$?\d+)/', $cell, $reg)) { list($row1, $col1) = $this->_cell_to_rowcol($reg[1]); return array_merge(array($row1, $col1), $_); } trigger_error("Unknown cell reference $cell", E_USER_ERROR); } ############################################################################### # # _cell_to_rowcol($cell_ref) # # Convert an Excel cell reference in A1 notation to a zero based row and column # reference; converts C1 to (0, 2). # # Returns: row, column # # TODO use functions in Utility.pm # function _cell_to_rowcol($cell) { preg_match('/\$?([A-I]?[A-Z])\$?(\d+)/', $cell, $reg); $col = $reg[1]; $row = $reg[2]; # Convert base26 column string to number # All your Base are belong to us. $chars = preg_split('//', $col, -1, PREG_SPLIT_NO_EMPTY); $expn = 0; $col = 0; while (sizeof($chars)) { $char = array_pop($chars); # LS char first $col += (ord($char) -ord('A') +1) * pow(26, $expn); $expn++; } # Convert 1-index to zero-index $row--; $col--; return array($row, $col); } /* * This is an internal method that is used to filter elements of the * array of pagebreaks used in the _store_hbreak() and _store_vbreak() * methods. It: * 1. Removes duplicate entries from the list. * 2. Sorts the list. * 3. Removes 0 from the list if present. */ function _sort_pagebreaks($breaks) { // Hash slice to remove duplicates foreach ($breaks as $break) { $hash["$break"]=1; } // Numerical sort $breaks=array_keys($hash); sort($breaks, SORT_NUMERIC); // Remove zero if ($breaks[0] == 0) { array_shift($breaks); } // 1000 vertical pagebreaks appears to be an internal Excel 5 limit. // It is slightly higher in Excel 97/200, approx. 1026 if (sizeof($breaks) > 1000) { array_splice($breaks, 1000); } return $breaks; } /* * Based on the algorithm provided by Daniel Rentz of OpenOffice. */ function _encode_password($plaintext) { $chars=preg_split('//', $plaintext, -1, PREG_SPLIT_NO_EMPTY); $count=sizeof($chars); for ($c=0;$c> 15; $char = $low_15 | $high_15; } $password = 0x0000; foreach ($chars as $char) { $password ^= $char; } $password ^= $count; $password ^= 0xCE4B; return $password; } ############################################################################### ############################################################################### # # BIFF RECORDS # ############################################################################### # # write_number($row, $col, $num, $format) # # Write a double to the specified row and column (zero indexed). # An integer can be written as a double. Excel will display an # integer. $format is optional. # # Returns 0 : normal termination # -1 : insufficient number of arguments # -2 : row or column out of range # function write_number() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } # Check the number of args if (sizeof($_) < 3) { return -1; } $record = 0x0203; # Record identifier $length = 0x000E; # Number of bytes to follow $row = $_[0]; # Zero indexed row $col = $_[1]; # Zero indexed column $num = $_[2]; //!!! $xf = $this->_XF($row, $col, $_[3]); # The cell format # Check that row and col are valid and store max and min values if ($row >= $this->_xls_rowmax) { return -2; } if ($col >= $this->_xls_colmax) { return -2; } if ($row < $this->_dim_rowmin) { $this->_dim_rowmin = $row; } if ($row > $this->_dim_rowmax) { $this->_dim_rowmax = $row; } if ($col < $this->_dim_colmin) { $this->_dim_colmin = $col; } if ($col > $this->_dim_colmax) { $this->_dim_colmax = $col; } $header = pack("vv", $record, $length); $data = pack("vvv", $row, $col, $xf); $xl_double = pack("d", $num); if ($this->_byte_order) { //TODO $xl_double = strrev($xl_double); } $this->_append($header . $data . $xl_double); return 0; } ############################################################################### # # write_string ($row, $col, $string, $format) # # Write a string to the specified row and column (zero indexed). # NOTE: there is an Excel 5 defined limit of 255 characters. # $format is optional. # Returns 0 : normal termination # -1 : insufficient number of arguments # -2 : row or column out of range # -3 : long string truncated to 255 chars # function write_string() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } # Check the number of args if (sizeof($_) < 3) { return -1; } $record = 0x0204; # Record identifier $length = 0x0008 + strlen($_[2]); # Bytes to follow $row = $_[0]; # Zero indexed row $col = $_[1]; # Zero indexed column $strlen = strlen($_[2]); $str = $_[2]; $xf = $this->_XF($row, $col, $_[3]); # The cell format $str_error = 0; # Check that row and col are valid and store max and min values if ($row >= $this->_xls_rowmax) { return -2; } if ($col >= $this->_xls_colmax) { return -2; } if ($row < $this->_dim_rowmin) { $this->_dim_rowmin = $row; } if ($row > $this->_dim_rowmax) { $this->_dim_rowmax = $row; } if ($col < $this->_dim_colmin) { $this->_dim_colmin = $col; } if ($col > $this->_dim_colmax) { $this->_dim_colmax = $col; } if ($strlen > $this->_xls_strmax) { # LABEL must be < 255 chars $str = substr($str, 0, $this->_xls_strmax); $length = 0x0008 + $this->_xls_strmax; $strlen = $this->_xls_strmax; $str_error = -3; } $header = pack("vv", $record, $length); $data = pack("vvvv", $row, $col, $xf, $strlen); $this->_append($header . $data . $str); return $str_error; } ############################################################################### # # write_blank($row, $col, $format) # # Write a blank cell to the specified row and column (zero indexed). # A blank cell is used to specify formatting without adding a string # or a number. # # A blank cell without a format serves no purpose. Therefore, we don't write # a BLANK record unless a format is specified. This is mainly an optimisation # for the write_row() and write_col() methods. # # Returns 0 : normal termination (including no format) # -1 : insufficient number of arguments # -2 : row or column out of range # function write_blank() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } # Check the number of args if (sizeof($_) < 2) { return -1; } # Don't write a blank cell unless it has a format if (!isset($_[2])) { return 0; } $record = 0x0201; # Record identifier $length = 0x0006; # Number of bytes to follow $row = $_[0]; # Zero indexed row $col = $_[1]; # Zero indexed column $xf = $this->_XF($row, $col, $_[2]); # The cell format # Check that row and col are valid and store max and min values if ($row >= $this->_xls_rowmax) { return -2; } if ($col >= $this->_xls_colmax) { return -2; } if ($row < $this->_dim_rowmin) { $this->_dim_rowmin = $row; } if ($row > $this->_dim_rowmax) { $this->_dim_rowmax = $row; } if ($col < $this->_dim_colmin) { $this->_dim_colmin = $col; } if ($col > $this->_dim_colmax) { $this->_dim_colmax = $col; } $header = pack("vv", $record, $length); $data = pack("vvv", $row, $col, $xf); $this->_append($header . $data); return 0; } ############################################################################### # # write_formula($row, $col, $formula, $format) # # Write a formula to the specified row and column (zero indexed). # The textual representation of the formula is passed to the parser in # Formula.pm which returns a packed binary string. # # $format is optional. # # Returns 0 : normal termination # -1 : insufficient number of arguments # -2 : row or column out of range # function write_formula() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } # Check the number of args if (sizeof($_) < 3) { return -1; } $record = 0x0006; # Record identifier $length=0; # Bytes to follow $row = $_[0]; # Zero indexed row $col = $_[1]; # Zero indexed column $formula = $_[2]; # The formula text string # Excel normally stores the last calculated value of the formula in $num. # Clearly we are not in a position to calculate this a priori. Instead # we set $num to zero and set the option flags in $grbit to ensure # automatic calculation of the formula when the file is opened. # $xf = $this->_XF($row, $col, $_[3]); # The cell format $num = 0x00; # Current value of formula $grbit = 0x03; # Option flags $chn = 0x0000; # Must be zero # Check that row and col are valid and store max and min values if ($row >= $this->_xls_rowmax) { return -2; } if ($col >= $this->_xls_colmax) { return -2; } if ($row < $this->_dim_rowmin) { $this->_dim_rowmin = $row; } if ($row > $this->_dim_rowmax) { $this->_dim_rowmax = $row; } if ($col < $this->_dim_colmin) { $this->_dim_colmin = $col; } if ($col > $this->_dim_colmax) { $this->_dim_colmax = $col; } # Strip the = sign at the beginning of the formula string $formula = preg_replace('/^=/', "", $formula); # Parse the formula using the parser in Formula.pm $parser = $this->_parser; $formula = $parser->parse_formula($formula); $formlen = strlen($formula); # Length of the binary string $length = 0x16 + $formlen; # Length of the record data $header = pack("vv", $record, $length); $data = pack("vvvdvVv", $row, $col, $xf, $num, $grbit, $chn, $formlen); $this->_append($header . $data . $formula); return 0; } ############################################################################### # # write_url($row, $col, $url, $string, $format) # # Write a hyperlink. This is comprised of two elements: the visible label and # the invisible link. The visible label is the same as the link unless an # alternative string is specified. The label is written using the # write_string() method. Therefore the 255 characters string limit applies. # $string and $format are optional and their order is interchangeable. # # The hyperlink can be to a http, ftp, mail, internal sheet, or external # directory url. # # Returns 0 : normal termination # -1 : insufficient number of arguments # -2 : row or column out of range # -3 : long string truncated to 255 chars # function write_url() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } # Check the number of args if (sizeof($_) < 3) { return -1; } # Add start row and col to arg list return call_user_func_array(array($this, 'write_url_range'), array_merge(array($_[0], $_[1]), $_)); } ############################################################################### # # write_url_range($row1, $col1, $row2, $col2, $url, $string, $format) # # This is the more general form of write_url(). It allows a hyperlink to be # written to a range of cells. This function also decides the type of hyperlink # to be written. These are either, Web (http, ftp, mailto), Internal # (Sheet1!A1) or external ('c:\temp\foo.xls#Sheet1!A1'). # # See also write_url() above for a general description and return values. # function write_url_range() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } # Check the number of args if (sizeof($_) < 5) { return -1; } # Reverse the order of $string and $format if necessary. //TODO ($_[5], $_[6]) = ($_[6], $_[5]) if (ref $_[5]); $url = $_[4]; # Check for internal/external sheet links or default to web link if (preg_match('[^internal:]', $url)) { return call_user_func_array(array($this, '_write_url_internal'), $_); } if (preg_match('[^external:]', $url)) { return call_user_func_array(array($this, '_write_url_external'), $_); } return call_user_func_array(array($this, '_write_url_web'), $_); } ############################################################################### # # _write_url_web($row1, $col1, $row2, $col2, $url, $string, $format) # # Used to write http, ftp and mailto hyperlinks. # The link type ($options) is 0x03 is the same as absolute dir ref without # sheet. However it is differentiated by the $unknown2 data stream. # # See also write_url() above for a general description and return values. # function _write_url_web() { $_=func_get_args(); $record = 0x01B8; # Record identifier $length = 0x00000; # Bytes to follow $row1 = $_[0]; # Start row $col1 = $_[1]; # Start column $row2 = $_[2]; # End row $col2 = $_[3]; # End column $url = $_[4]; # URL string if (isset($_[5])) { $str = $_[5]; # Alternative label } $xf = $_[6] ? $_[6] : $this->_url_format; # The cell format # Write the visible label using the write_string() method. if(!isset($str)) { $str = $url; } $str_error = $this->write_string($row1, $col1, $str, $xf); if ($str_error == -2) { return $str_error; } # Pack the undocumented parts of the hyperlink stream $unknown1 = pack("H*", "D0C9EA79F9BACE118C8200AA004BA90B02000000"); $unknown2 = pack("H*", "E0C9EA79F9BACE118C8200AA004BA90B"); # Pack the option flags $options = pack("V", 0x03); # Convert URL to a null terminated wchar string $url = join("\0", preg_split("''", $url, -1, PREG_SPLIT_NO_EMPTY)); $url = $url . "\0\0\0"; # Pack the length of the URL $url_len = pack("V", strlen($url)); # Calculate the data length $length = 0x34 + strlen($url); # Pack the header data $header = pack("vv", $record, $length); $data = pack("vvvv", $row1, $row2, $col1, $col2); # Write the packed data $this->_append($header. $data. $unknown1. $options. $unknown2. $url_len. $url); return $str_error; } ############################################################################### # # _write_url_internal($row1, $col1, $row2, $col2, $url, $string, $format) # # Used to write internal reference hyperlinks such as "Sheet1!A1". # # See also write_url() above for a general description and return values. # function _write_url_internal() { $_=func_get_args(); $record = 0x01B8; # Record identifier $length = 0x00000; # Bytes to follow $row1 = $_[0]; # Start row $col1 = $_[1]; # Start column $row2 = $_[2]; # End row $col2 = $_[3]; # End column $url = $_[4]; # URL string if (isset($_[5])) { $str = $_[5]; # Alternative label } $xf = $_[6] ? $_[6] : $this->_url_format; # The cell format # Strip URL type $url = preg_replace('s[^internal:]', '', $url); # Write the visible label if (!isset($str)) { $str = $url; } $str_error = $this->write_string($row1, $col1, $str, $xf); if ($str_error == -2) { return $str_error; } # Pack the undocumented parts of the hyperlink stream $unknown1 = pack("H*", "D0C9EA79F9BACE118C8200AA004BA90B02000000"); # Pack the option flags $options = pack("V", 0x08); # Convert the URL type and to a null terminated wchar string $url = join("\0", preg_split("''", $url, -1, PREG_SPLIT_NO_EMPTY)); $url = $url . "\0\0\0"; # Pack the length of the URL as chars (not wchars) $url_len = pack("V", int(strlen($url)/2)); # Calculate the data length $length = 0x24 + strlen($url); # Pack the header data $header = pack("vv", $record, $length); $data = pack("vvvv", $row1, $row2, $col1, $col2); # Write the packed data $this->_append($header. $data. $unknown1. $options. $url_len. $url); return $str_error; } ############################################################################### # # _write_url_external($row1, $col1, $row2, $col2, $url, $string, $format) # # Write links to external directory names such as 'c:\foo.xls', # c:\foo.xls#Sheet1!A1', '../../foo.xls'. and '../../foo.xls#Sheet1!A1'. # # Note: Excel writes some relative links with the $dir_long string. We ignore # these cases for the sake of simpler code. # # See also write_url() above for a general description and return values. # function _write_url_external() { $_=func_get_args(); # Network drives are different. We will handle them separately # MS/Novell network drives and shares start with \\ if (preg_match('[^external:\\\\]', $_[4])) { return call_user_func_array(array($this, '_write_url_external_net'), $_); } $record = 0x01B8; # Record identifier $length = 0x00000; # Bytes to follow $row1 = $_[0]; # Start row $col1 = $_[1]; # Start column $row2 = $_[2]; # End row $col2 = $_[3]; # End column $url = $_[4]; # URL string if (isset($_[5])) { $str = $_[5]; # Alternative label } $xf = $_[6] ? $_[6] : $this->_url_format; # The cell format # Strip URL type and change Unix dir separator to Dos style (if needed) # $url = preg_replace('[^external:]', '', $url); $url = preg_replace('[/]', "\\", $url); # Write the visible label if (!isset($str)) { $str = preg_replace('[\#]', ' - ', $url); } $str_error = $this->write_string($row1, $col1, $str, $xf); if ($str_error == -2) { return $str_error; } # Determine if the link is relative or absolute: # relative if link contains no dir separator, "somefile.xls" # relative if link starts with up-dir, "..\..\somefile.xls" # otherwise, absolute # $absolute = 0x02; # Bit mask if (!preg_match('[\\]', $url)) { $absolute = 0x00; } if (preg_match('[^\.\.\\]', $url)) { $absolute = 0x00; } # Determine if the link contains a sheet reference and change some of the # parameters accordingly. # Split the dir name and sheet name (if it exists) # list($dir_long, $sheet) = preg_split('/\#/', $url); $link_type = 0x01 | $absolute; //!!! if (isset($sheet)) { $link_type |= 0x08; $sheet_len = pack("V", length($sheet) + 0x01); $sheet = join("\0", str_split($sheet)); $sheet .= "\0\0\0"; } else { $sheet_len = ''; $sheet = ''; } # Pack the link type $link_type = pack("V", $link_type); # Calculate the up-level dir count e.g.. (..\..\..\ == 3) /* TODO $up_count = 0; $up_count++ while $dir_long =~ s[^\.\.\\][]; $up_count = pack("v", $up_count); */ # Store the short dos dir name (null terminated) $dir_short = $dir_long . "\0"; # Store the long dir name as a wchar string (non-null terminated) $dir_long = join("\0", preg_split('', $dir_long, -1, PREG_SPLIT_NO_EMPTY)); $dir_long = $dir_long . "\0"; # Pack the lengths of the dir strings $dir_short_len = pack("V", strlen($dir_short) ); $dir_long_len = pack("V", strlen($dir_long) ); $stream_len = pack("V", strlen($dir_long) + 0x06); # Pack the undocumented parts of the hyperlink stream $unknown1 =pack("H*",'D0C9EA79F9BACE118C8200AA004BA90B02000000' ); $unknown2 =pack("H*",'0303000000000000C000000000000046' ); $unknown3 =pack("H*",'FFFFADDE000000000000000000000000000000000000000'); $unknown4 =pack("v", 0x03 ); # Pack the main data stream $data = pack("vvvv", $row1, $row2, $col1, $col2) . $unknown1 . $link_type . $unknown2 . $up_count . $dir_short_len. $dir_short . $unknown3 . $stream_len . $dir_long_len . $unknown4 . $dir_long . $sheet_len . $sheet ; # Pack the header data $length = strlen($data); $header = pack("vv", $record, $length); # Write the packed data $this->_append($header . $data); return $str_error; } ############################################################################### # # write_url_xxx($row1, $col1, $row2, $col2, $url, $string, $format) # # Write links to external MS/Novell network drives and shares such as # '//NETWORK/share/foo.xls' and '//NETWORK/share/foo.xls#Sheet1!A1'. # # See also write_url() above for a general description and return values. # function _write_url_external_net() { $_=func_get_args(); $record = 0x01B8; # Record identifier $length = 0x00000; # Bytes to follow $row1 = $_[0]; # Start row $col1 = $_[1]; # Start column $row2 = $_[2]; # End row $col2 = $_[3]; # End column $url = $_[4]; # URL string if(isset($_[5])) { $str = $_[5]; # Alternative label } $xf = $_[6] ? $_[6] : $this->_url_format; # The cell format # Strip URL type and change Unix dir separator to Dos style (if needed) # $url = preg_replace('[^external:]', "", $url); $url = preg_replace('[/]', "\\"); # Write the visible label if (!isset($str)) { $str = preg_replace('[\#]', " - ", $url); } $str_error = $this->write_string($row1, $col1, $str, $xf); if ($str_error == -2) { return $str_error; } # Determine if the link contains a sheet reference and change some of the # parameters accordingly. # Split the dir name and sheet name (if it exists) # list($dir_long , $sheet) = preg_split('\#', $url); $link_type = 0x0103; # Always absolute //!!! if (isset($sheet)) { $link_type |= 0x08; $sheet_len = pack("V", strlen($sheet) + 0x01); $sheet = join("\0", preg_split("''", $sheet, -1, PREG_SPLIT_NO_EMPTY)); $sheet .= "\0\0\0"; } else { $sheet_len = ''; $sheet = ''; } # Pack the link type $link_type = pack("V", $link_type); # Make the string null terminated $dir_long = $dir_long . "\0"; # Pack the lengths of the dir string $dir_long_len = pack("V", strlen($dir_long)); # Store the long dir name as a wchar string (non-null terminated) $dir_long = join("\0", preg_split("''", $dir_long, -1, PREG_SPLIT_NO_EMPTY)); $dir_long = $dir_long . "\0"; # Pack the undocumented part of the hyperlink stream $unknown1 = pack("H*",'D0C9EA79F9BACE118C8200AA004BA90B02000000'); # Pack the main data stream $data = pack("vvvv", $row1, $row2, $col1, $col2) . $unknown1 . $link_type . $dir_long_len . $dir_long . $sheet_len . $sheet ; # Pack the header data $length = strlen($data); $header = pack("vv", $record, $length); # Write the packed data $this->_append($header . $data); return $str_error; } ############################################################################### # # set_row($row, $height, $XF) # # This method is used to set the height and XF format for a row. # Writes the BIFF record ROW. # function set_row() { $_=func_get_args(); $record = 0x0208; # Record identifier $length = 0x0010; # Number of bytes to follow $rw = $_[0]; # Row Number $colMic = 0x0000; # First defined column $colMac = 0x0000; # Last defined column //$miyRw; # Row height $irwMac = 0x0000; # Used by Excel to optimise loading $reserved = 0x0000; # Reserved $grbit = 0x01C0; # Option flags. (monkey) see $1 do //$ixfe; # XF index if (isset($_[2])) { $format = $_[2]; # Format object } # Check for a format object if (isset($_[2])) { $ixfe = $format->get_xf_index(); } else { $ixfe = 0x0F; } # Use set_row($row, undef, $XF) to set XF without setting height if (isset($_[1])) { $miyRw = $_[1] *20; } else { $miyRw = 0xff; } $header = pack("vv", $record, $length); $data = pack("vvvvvvvv", $rw, $colMic, $colMac, $miyRw, $irwMac,$reserved, $grbit, $ixfe); $this->_append($header . $data); # Store the row sizes for use when calculating image vertices. # Also store the column formats. # # Ensure at least $row and $height if (sizeof($_) < 2) { return; } $this->_row_sizes[$_[0]] = $_[1]; if (isset($_[2])) { $this->_row_formats[$_[0]] = $_[2]; } } /* * Writes Excel DIMENSIONS to define the area in which there is data. */ function _store_dimensions() { $record = 0x0000; // Record identifier $length = 0x000A; // Number of bytes to follow $row_min = $this->_dim_rowmin; // First row $row_max = $this->_dim_rowmax; // Last row plus 1 $col_min = $this->_dim_colmin; // First column $col_max = $this->_dim_colmax; // Last column plus 1 $reserved = 0x0000; // Reserved by Excel $header = pack("vv", $record, $length); $data = pack("vvvvv", $row_min, $row_max, $col_min, $col_max, $reserved); $this->_prepend($header . $data); } /* * Write BIFF record Window2. */ function _store_window2() { $record = 0x023E; // Record identifier $length = 0x000A; // Number of bytes to follow $grbit = 0x00B6; // Option flags $rwTop = 0x0000; // Top row visible in window $colLeft = 0x0000; // Leftmost column visible in window $rgbHdr = 0x00000000; // Row/column heading and gridline // color // The options flags that comprise $grbit $fDspFmla = 0; // 0 - bit $fDspGrid = $this->_screen_gridlines; // 1 $fDspRwCol = 1; // 2 $fFrozen = $this->_frozen; // 3 $fDspZeros = 1; // 4 $fDefaultHdr = 1; // 5 $fArabic = 0; // 6 $fDspGuts = 1; // 7 $fFrozenNoSplit = 0; // 0 - bit $fSelected = $this->_selected; // 1 $fPaged = 1; // 2 $grbit = $fDspFmla; $grbit |= $fDspGrid << 1; $grbit |= $fDspRwCol << 2; $grbit |= $fFrozen << 3; $grbit |= $fDspZeros << 4; $grbit |= $fDefaultHdr << 5; $grbit |= $fArabic << 6; $grbit |= $fDspGuts << 7; $grbit |= $fFrozenNoSplit << 8; $grbit |= $fSelected << 9; $grbit |= $fPaged << 10; $header = pack("vv", $record, $length); $data = pack("vvvV", $grbit, $rwTop, $colLeft, $rgbHdr); $this->_append($header . $data); } /* * Write BIFF record DEFCOLWIDTH if COLINFO records are in use. */ function _store_defcol() { $record = 0x0055; // Record identifier $length = 0x0002; // Number of bytes to follow $colwidth = 0x0008; // Default column width $header = pack("vv", $record, $length); $data = pack("v", $colwidth); $this->_prepend($header . $data); } ############################################################################### # # _store_colinfo($firstcol, $lastcol, $width, $format, $hidden) # # Write BIFF record COLINFO to define column widths # # Note: The SDK says the record length is 0x0B but Excel writes a 0x0C # length record. # function _store_colinfo($_) { $record = 0x007D; # Record identifier $length = 0x000B; # Number of bytes to follow $colFirst = $_[0] ? $_[0] : 0; # First formatted column $colLast = $_[1] ? $_[1] : 0; # Last formatted column $coldx = $_[2] ? $_[2] : 8.43; # Col width, 8.43 is Excel default $coldx += 0.72; # Fudge. Excel subtracts 0.72 !? $coldx *= 256; # Convert to units of 1/256 of a char //$ixfe; # XF index $grbit = $_[4] || 0; # Option flags $reserved = 0x00; # Reserved $format = $_[3]; # Format object # Check for a format object if (isset($_[3])) { $ixfe = $format->get_xf_index(); } else { $ixfe = 0x0F; } $header = pack("vv", $record, $length); $data = pack("vvvvvC", $colFirst, $colLast, $coldx, $ixfe, $grbit, $reserved); $this->_prepend($header . $data); } ############################################################################### # # _store_selection($first_row, $first_col, $last_row, $last_col) # # Write BIFF record SELECTION. # function _store_selection($_) { $record = 0x001D; # Record identifier $length = 0x000F; # Number of bytes to follow $pnn = $this->_active_pane; # Pane position $rwAct = $_[0]; # Active row $colAct = $_[1]; # Active column $irefAct = 0; # Active cell ref $cref = 1; # Number of refs $rwFirst = $_[0]; # First row in reference $colFirst = $_[1]; # First col in reference $rwLast = $_[2] ? $_[2] : $rwFirst; # Last row in reference $colLast = $_[3] ? $_[3] : $colFirst; # Last col in reference # Swap last row/col for first row/col as necessary if ($rwFirst > $rwLast) { list($rwFirst, $rwLast) = array($rwLast, $rwFirst); } if ($colFirst > $colLast) { list($colFirst, $colLast) = array($colLast, $colFirst); } $header = pack("vv", $record, $length); $data = pack("CvvvvvvCC", $pnn, $rwAct, $colAct, $irefAct, $cref, $rwFirst, $rwLast, $colFirst, $colLast); $this->_append($header . $data); } /* * Write BIFF record EXTERNCOUNT to indicate the number of external * sheet references in a worksheet. * * Excel only stores references to external sheets that are used in * formulas. For simplicity we store references to all the sheets in * the workbook regardless of whether they are used or not. This reduces * the overall complexity and eliminates the need for a two way dialogue * between the formula parser the worksheet objects. */ function _store_externcount($cxals) { // $cxals Number of external references $record = 0x0016; // Record identifier $length = 0x0002; // Number of bytes to follow $header = pack("vv", $record, $length); $data = pack("v", $cxals); $this->_prepend($header . $data); } /* * Writes the Excel BIFF EXTERNSHEET record. These references are used * by formulas. A formula references a sheet name via an index. Since we * store a reference to all of the external worksheets the EXTERNSHEET * index is the same as the worksheet index. */ function _store_externsheet($sheetname) { $record = 0x0017; # Record identifier // $length Number of bytes to follow // $cch Length of sheet name // $rgch Filename encoding // References to the current sheet are encoded differently to // references to external sheets. if ($this->_name == $sheetname) { $sheetname = ''; $length = 0x02; // The following 2 bytes $cch = 1; // The following byte $rgch = 0x02; // Self reference } else { $length = 0x02 + strlen($sheetname); $cch = strlen($sheetname); $rgch = 0x03; // Reference to a sheet in the current // workbook } $header = pack("vv", $record, $length); $data = pack("CC", $cch, $rgch); $this->_prepend($header . $data . $sheetname); } ############################################################################### # # _store_panes() # # # Writes the Excel BIFF PANE record. # The panes can either be frozen or thawed (unfrozen). # Frozen panes are specified in terms of a integer number of rows and columns. # Thawed panes are specified in terms of Excel's units for rows and columns. # function _store_panes() { $_=func_get_args(); $record = 0x0041; # Record identifier $length = 0x000A; # Number of bytes to follow $y = $_[0] || 0; # Vertical split position $x = $_[1] || 0; # Horizontal split position if (isset($_[2])) { $rwTop = $_[2]; # Top row visible } if (isset($_[3])) { $colLeft = $_[3]; # Leftmost column visible } if (isset($_[4])) { $pnnAct = $_[4]; # Active pane } # Code specific to frozen or thawed panes. if ($this->_frozen) { # Set default values for $rwTop and $colLeft if (!isset($rwTop)) { $rwTop = $y; } if (!isset($colLeft)) { $colLeft = $x; } } else { # Set default values for $rwTop and $colLeft if (!isset($rwTop)) { $rwTop = 0; } if (!isset($colLeft)) { $colLeft = 0; } # Convert Excel's row and column units to the internal units. # The default row height is 12.75 # The default column width is 8.43 # The following slope and intersection values were interpolated. # $y = 20*$y + 255; $x = 113.879*$x + 390; } # Determine which pane should be active. There is also the undocumented # option to override this should it be necessary: may be removed later. # if (!isset($pnnAct)) { # Bottom right if ($x != 0 && $y != 0) { $pnnAct = 0; } # Top right if ($x != 0 && $y == 0) { $pnnAct = 1; } # Bottom left if ($x == 0 && $y != 0) { $pnnAct = 2; } # Top left if ($x == 0 && $y == 0) { $pnnAct = 3; } } $this->_active_pane = $pnnAct; # Used in _store_selection $header = pack("vv", $record, $length); $data = pack("vvvvv", $x, $y, $rwTop, $colLeft, $pnnAct); $this->_append($header . $data); } /* * Store the page setup SETUP BIFF record. */ function _store_setup() { $record = 0x00A1; // Record identifier $length = 0x0022; // Number of bytes to follow $iPaperSize = $this->_paper_size; // Paper size $iScale = $this->_print_scale; // Print scaling factor $iPageStart = 0x01; // Starting page number $iFitWidth = $this->_fit_width; // Fit to number of pages wide $iFitHeight = $this->_fit_height; // Fit to number of pages high $grbit = 0x00; // Option flags $iRes = 0x0258; // Print resolution $iVRes = 0x0258; // Vertical print resolution $numHdr = $this->_margin_head; // Header Margin $numFtr = $this->_margin_foot; // Footer Margin $iCopies = 0x01; // Number of copies $fLeftToRight = 0x0; // Print over then down $fLandscape = $this->_orientation; // Page orientation $fNoPls = 0x0; // Setup not read from printer $fNoColor = 0x0; // Print black and white $fDraft = 0x0; // Print draft quality $fNotes = 0x0; // Print notes $fNoOrient = 0x0; // Orientation not set $fUsePage = 0x0; // Use custom starting page $grbit = $fLeftToRight; $grbit |= $fLandscape << 1; $grbit |= $fNoPls << 2; $grbit |= $fNoColor << 3; $grbit |= $fDraft << 4; $grbit |= $fNotes << 5; $grbit |= $fNoOrient << 6; $grbit |= $fUsePage << 7; $numHdr = pack("d", $numHdr); $numFtr = pack("d", $numFtr); if ($this->_byte_order) { $numHdr = strrev($numHdr); $numFtr = strrev($numFtr); } $header = pack("vv", $record, $length); $data1 = pack("vvvvvvvv", $iPaperSize, $iScale, $iPageStart, $iFitWidth, $iFitHeight, $grbit, $iRes, $iVRes); $data2 = $numHdr . $numFtr; $data3 = pack("v", $iCopies); $this->_prepend($header . $data1 . $data2 . $data3); } /* * Store the header caption BIFF record. */ function _store_header() { $record = 0x0014; // Record identifier $str = $this->_header; // header string $cch = strlen($str); // Length of header string $length = 1 + $cch; // Bytes to follow $header = pack("vv", $record, $length); $data = pack("C", $cch); $this->_append($header . $data . $str); } /* * Store the footer caption BIFF record. */ function _store_footer() { $record = 0x0015; // Record identifier $str = $this->_footer; // Footer string $cch = strlen($str); // Length of footer string $length = 1 + $cch; // Bytes to follow $header = pack("vv", $record, $length); $data = pack("C", $cch); $this->_append($header . $data . $str); } /* * Store the horizontal centering HCENTER BIFF record. */ function _store_hcenter() { $record = 0x0083; // Record identifier $length = 0x0002; // Bytes to follow $fHCenter = $this->_hcenter; // Horizontal centering $header = pack("vv", $record, $length); $data = pack("v", $fHCenter); $this->_append($header . $data); } /* * Store the vertical centering VCENTER BIFF record. */ function _store_vcenter() { $record = 0x0084; // Record identifier $length = 0x0002; // Bytes to follow $fVCenter = $this->_vcenter; // Horizontal centering $header = pack("vv", $record, $length); $data = pack("v", $fVCenter); $this->_append($header . $data); } /* * Store the LEFTMARGIN BIFF record. */ function _store_margin_left() { $record = 0x0026; // Record identifier $length = 0x0008; // Bytes to follow $margin = $this->_margin_left; // Margin in inches $header = pack("vv", $record, $length); $data = pack("d", $margin); if ($this->_byte_order) { $data = strrev($data); } $this->_append($header . $data); } /* * Store the RIGHTMARGIN BIFF record. */ function _store_margin_right() { $record = 0x0027; // Record identifier $length = 0x0008; // Bytes to follow $margin = $this->_margin_right; // Margin in inches $header = pack("vv", $record, $length); $data = pack("d", $margin); if ($this->_byte_order) { $data = strrev($data); } $this->_append($header . $data); } /* * Store the TOPMARGIN BIFF record. */ function _store_margin_top() { $record = 0x0028; // Record identifier $length = 0x0008; // Bytes to follow $margin = $this->_margin_top; // Margin in inches $header = pack("vv", $record, $length); $data = pack("d", $margin); if ($this->_byte_order) { $data = strrev($data); } $this->_append($header . $data); } /* * Store the BOTTOMMARGIN BIFF record. */ function _store_margin_bottom() { $record = 0x0029; // Record identifier $length = 0x0008; // Bytes to follow $margin = $this->_margin_bottom; // Margin in inches $header = pack("vv", $record, $length); $data = pack("d", $margin); if ($this->_byte_order) { $data = strrev($data); } $this->_append($header . $data); } ############################################################################### # # merge_cells($first_row, $first_col, $last_row, $last_col) # # This is an Excel97/2000 method. It is required to perform more complicated # merging than the normal align merge in Format.pm # function merge_cells() { $_=func_get_args(); // Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } $record = 0x00E5; # Record identifier $length = 0x000A; # Bytes to follow $cref = 1; # Number of refs $rwFirst = $_[0]; # First row in reference $colFirst = $_[1]; # First col in reference $rwLast = $_[2] || $rwFirst; # Last row in reference $colLast = $_[3] || $colFirst; # Last col in reference // Swap last row/col for first row/col as necessary if ($rwFirst > $rwLast) { list($rwFirst, $rwLast) = array($rwLast, $rwFirst); } if ($colFirst > $colLast) { list($colFirst, $colLast) = array($colLast, $colFirst); } $header = pack("vv", $record, $length); $data = pack("vvvvv", $cref, $rwFirst, $rwLast, $colFirst, $colLast); $this->_append($header . $data); } /* * Write the PRINTHEADERS BIFF record. */ function _store_print_headers() { $record = 0x002a; // Record identifier $length = 0x0002; // Bytes to follow $fPrintRwCol = $this->_print_headers; // Boolean flag $header = pack("vv", $record, $length); $data = pack("v", $fPrintRwCol); $this->_prepend($header . $data); } /* * Write the PRINTGRIDLINES BIFF record. Must be used in conjunction * with the GRIDSET record. */ function _store_print_gridlines() { $record = 0x002b; // Record identifier $length = 0x0002; // Bytes to follow $fPrintGrid = $this->_print_gridlines; // Boolean flag $header = pack("vv", $record, $length); $data = pack("v", $fPrintGrid); $this->_prepend($header . $data); } /* * Write the GRIDSET BIFF record. Must be used in conjunction with the * PRINTGRIDLINES record. */ function _store_gridset() { $record = 0x0082; // Record identifier $length = 0x0002; // Bytes to follow $fGridSet = !$this->_print_gridlines; // Boolean flag $header = pack("vv", $record, $length); $data = pack("v", $fGridSet); $this->_prepend($header . $data); } /* * Write the WSBOOL BIFF record, mainly for fit-to-page. Used in * conjunction with the SETUP record. */ function _store_wsbool() { $record = 0x0081; # Record identifier $length = 0x0002; # Bytes to follow // $grbit Option flags // The only option that is of interest is the flag for fit to page. // So we set all the options in one go. if ($this->_fit_page) { $grbit = 0x05c1; } else { $grbit = 0x04c1; } $header = pack("vv", $record, $length); $data = pack("v", $grbit); $this->_prepend($header . $data); } /* * Write the HORIZONTALPAGEBREAKS BIFF record. */ function _store_hbreak() { // Return if the user hasn't specified pagebreaks if(sizeof($this->_hbreaks)==0) { return; } # Sort and filter array of page breaks $breaks = $this->_sort_pagebreaks($this->_hbreaks); $record = 0x001b; // Record identifier $cbrk = sizeof($breaks); // Number of page breaks $length = ($cbrk + 1) * 2; // Bytes to follow $header = pack("vv", $record, $length); $data = pack("v", $cbrk); // Append each page break foreach ($breaks as $break) { $data .= pack("v", $break); } $this->_prepend($header . $data); } /* * Write the VERTICALPAGEBREAKS BIFF record. */ function _store_vbreak() { // Return if the user hasn't specified pagebreaks if(sizeof($this->_vbreaks)==0) { return; } // Sort and filter array of page breaks $breaks = $this->_sort_pagebreaks($this->_vbreaks); $record = 0x001a; // Record identifier $cbrk = sizeof($breaks); // Number of page breaks $length = ($cbrk + 1) * 2; // Bytes to follow $header = pack("vv", $record, $length); $data = pack("v", $cbrk); // Append each page break foreach ($breaks as $break) { $data .= pack("v", $break); } $this->_prepend($header . $data); } /* * Set the Biff PROTECT record to indicate that the worksheet is * protected. */ function _store_protect() { // Exit unless sheet protection has been specified if (!$this->_protect) { return; } $record = 0x0012; // Record identifier $length = 0x0002; // Bytes to follow $fLock = $this->_protect; // Worksheet is protected $header = pack("vv", $record, $length); $data = pack("v", $fLock); $this->_prepend($header . $data); } /* * Write the worksheet PASSWORD record. */ function _store_password() { // Exit unless sheet protection and password have been specified if (!$this->_protect || !$this->_password) { return; } $record = 0x0013; // Record identifier $length = 0x0002; // Bytes to follow $wPassword = $this->_password; // Encoded password $header = pack("vv", $record, $length); $data = pack("v", $wPassword); $this->_prepend($header . $data); } ############################################################################### # # insert_bitmap($row, $col, $filename, $x, $y, $scale_x, $scale_y) # # Insert a 24bit bitmap image in a worksheet. The main record required is # IMDATA but it must be proceeded by a OBJ record to define its position. # function insert_bitmap() { $_=func_get_args(); # Check for a cell reference in A1 notation and substitute row and column if (preg_match('/^\D/', $_[0])) { $_ = $this->_substitute_cellref($_); } $row = $_[0]; $col = $_[1]; $bitmap = $_[2]; $x = $_[3] ? $_[3] : 0; $y = $_[4] ? $_[4] : 0; $scale_x = $_[5] ? $_[5] : 1; $scale_y = $_[6] ? $_[6] : 1; list($width, $height, $size, $data) = $this->_process_bitmap($bitmap); # Scale the frame of the image. $width *= $scale_x; $height *= $scale_y; # Calculate the vertices of the image and write the OBJ record $this->_position_image($col, $row, $x, $y, $width, $height); # Write the IMDATA record to store the bitmap data $record = 0x007f; $length = 8 + $size; $cf = 0x09; $env = 0x01; $lcb = $size; $header = pack("vvvvV", $record, $length, $cf, $env, $lcb); $this->_append($header . $data); } /* * Calculate the vertices that define the position of the image as * required by the OBJ record. * * +------------+------------+ * | A | B | * +-----+------------+------------+ * | |(x1,y1) | | * | 1 |(A1)._______|______ | * | | | | | * | | | | | * +-----+----| BITMAP |-----+ * | | | | | * | 2 | |______________. | * | | | (B2)| * | | | (x2,y2)| * +---- +------------+------------+ * * Example of a bitmap that covers some of the area from cell A1 to * cell B2. * * Based on the width and height of the bitmap we need to calculate 8 *vars: * $col_start, $row_start, $col_end, $row_end, $x1, $y1, $x2, $y2. * The width and height of the cells are also variable and have to be * taken into account. * The values of $col_start and $row_start are passed in from the calling * function. The values of $col_end and $row_end are calculated by * subtracting the width and height of the bitmap from the width and * height of the underlying cells. * The vertices are expressed as a percentage of the underlying cell * width as follows (rhs values are in pixels): * * x1 = X / W *1024 * y1 = Y / H *256 * x2 = (X-1) / W *1024 * y2 = (Y-1) / H *256 * * Where: X is distance from the left side of the underlying cell * Y is distance from the top of the underlying cell * W is the width of the cell * H is the height of the cell * * Note: the SDK incorrectly states that the height should be expressed * as a percentage of 1024. */ function _position_image($col_start, $row_start, $x1, $y1, $width, $height) { // $col_start Col containing upper left corner of object // $x1 Distance to left side of object // $row_start Row containing top left corner of object // $y1 Distance to top of object // $col_end Col containing lower right corner of object // $x2 Distance to right side of object // $row_end Row containing bottom right corner of object // $y2 Distance to bottom of object // $width Width of image frame // $height Height of image frame // Initialise end cell to the same as the start cell $col_end = $col_start; $row_end = $row_start; // Zero the specified offset if greater than the cell dimensions if ($x1 >= $this->_size_col($col_start)) { $x1 = 0; } if ($y1 >= $this->_size_row($row_start)) { $y1 = 0; } $width = $width + $x1 -1; $height = $height + $y1 -1; // Subtract the underlying cell widths to find the end cell of the // image while ($width >= $this->_size_col($col_end)) { $width -= $this->_size_col($col_end); $col_end++; } // Subtract the underlying cell heights to find the end cell of the // image while ($height >= $this->_size_row($row_end)) { $height -= $this->_size_row($row_end); $row_end++; } // Bitmap isn't allowed to start or finish in a hidden cell, i.e. a // cell with zero height or width. if ($this->_size_col($col_start) == 0) { return; } if ($this->_size_col($col_end) == 0) { return; } if ($this->_size_row($row_start) == 0) { return; } if ($this->_size_row($row_end) == 0) { return; } // Convert the pixel values to the percentage value expected by Excel $x1 = $x1 / $this->_size_col($col_start) * 1024; $y1 = $y1 / $this->_size_row($row_start) * 256; $x2 = $width / $this->_size_col($col_end) * 1024; $y2 = $height / $this->_size_row($row_end) * 256; $this->_store_obj_picture($col_start, $x1, $row_start, $y1, $col_end, $x2, $row_end, $y2); } /* * Convert the width of a cell from user's units to pixels. By * interpolation the relationship is: y = 7x +5. If the width * hasn't been set by the user we use the default value. If the * col is hidden we use a value of zero. */ function _size_col($col) { // Look up the cell value to see if it has been changed if (isset($this->_col_sizes[$col])) { if ($this->_col_sizes[$col] == 0) { return 0; } else { return floor(7 * $this->_col_sizes[$col] + 5); } } else { return 64; } } /* * Convert the height of a cell from user's units to pixels. By * interpolation # the relationship is: y = 4/3x. If the height * hasn't been set by the user we use the default value. If the * row is hidden we use a value of zero. (Not possible to hide row * yet). */ function _size_row($row) { // Look up the cell value to see if it has been changed if (isset($this->_row_sizes[$row])) { if ($this->_row_sizes[$row] == 0) { return 0; } else { return floor(4/3 * $this->_row_sizes[$row]); } } else { return 17; } } /* * Store the OBJ record that precedes an IMDATA record. This could * be generalized to support other Excel objects. */ function _store_obj_picture($col_start, $x1, $row_start, $y1, $col_end, $x2, $row_end, $y2) { $record = 0x005d; // Record identifier $length = 0x003c; // Bytes to follow $cObj = 0x0001; // Count of objects in file (set to 1) $OT = 0x0008; // Object type. 8 = Picture $id = 0x0001; // Object ID $grbit = 0x0614; // Option flags $colL = $col_start; // Col containing upper left corner of // object $dxL = $x1; // Distance from left side of cell $rwT = $row_start; // Row containing top left corner of // object $dyT = $y1; // Distance from top of cell $colR = $col_end; // Col containing lower right corner of // object $dxR = $x2; // Distance from right of cell $rwB = $row_end; // Row containing bottom right corner of // object $dyB = $y2; // Distance from bottom of cell $cbMacro = 0x0000; // Length of FMLA structure $Reserved1 = 0x0000; // Reserved $Reserved2 = 0x0000; // Reserved $icvBack = 0x09; // Background colour $icvFore = 0x09; // Foreground colour $fls = 0x00; // Fill pattern $fAuto = 0x00; // Automatic fill $icv = 0x08; // Line colour $lns = 0xff; // Line style $lnw = 0x01; // Line weight $fAutoB = 0x00; // Automatic border $frs = 0x0000; // Frame style $cf = 0x0009; // Image format, 9 = bitmap $Reserved3 = 0x0000; // Reserved $cbPictFmla = 0x0000; // Length of FMLA structure $Reserved4 = 0x0000; // Reserved $grbit2 = 0x0001; // Option flags $Reserved5 = 0x0000; // Reserved $header = pack("vv", $record, $length); $data = pack("V", $cObj); $data .= pack("v", $OT); $data .= pack("v", $id); $data .= pack("v", $grbit); $data .= pack("v", $colL); $data .= pack("v", $dxL); $data .= pack("v", $rwT); $data .= pack("v", $dyT); $data .= pack("v", $colR); $data .= pack("v", $dxR); $data .= pack("v", $rwB); $data .= pack("v", $dyB); $data .= pack("v", $cbMacro); $data .= pack("V", $Reserved1); $data .= pack("v", $Reserved2); $data .= pack("C", $icvBack); $data .= pack("C", $icvFore); $data .= pack("C", $fls); $data .= pack("C", $fAuto); $data .= pack("C", $icv); $data .= pack("C", $lns); $data .= pack("C", $lnw); $data .= pack("C", $fAutoB); $data .= pack("v", $frs); $data .= pack("V", $cf); $data .= pack("v", $Reserved3); $data .= pack("v", $cbPictFmla); $data .= pack("v", $Reserved4); $data .= pack("v", $grbit2); $data .= pack("V", $Reserved5); $this->_append($header . $data); } /* * Convert a 24 bit bitmap into the modified internal format used by * Windows. This is described in BITMAPCOREHEADER and BITMAPCOREINFO * structures in the MSDN library. */ function _process_bitmap($bitmap) { // Open file and binmode the data in case the platform needs it. $bmp=fopen($bitmap, "rb"); if (!$bmp) { trigger_error("Could not open file '$bitmap'.", E_USER_ERROR); } $data=fread($bmp, filesize($bitmap)); // Check that the file is big enough to be a bitmap. if (strlen($data) <= 0x36) { trigger_error("$bitmap doesn't contain enough data.", E_USER_ERROR); } // The first 2 bytes are used to identify the bitmap. if (substr($data, 0, 2) != "BM") { trigger_error("$bitmap doesn't appear to to be a ". "valid bitmap image.", E_USER_ERROR); } // Remove bitmap data: ID. $data = substr($data, 2); // Read and remove the bitmap size. This is more reliable than reading // the data size at offset 0x22. $array = unpack("Vsize", $data); $data = substr($data, 4); $size = $array["size"]; $size -= 0x36; # Subtract size of bitmap header. $size += 0x0C; # Add size of BIFF header. // Remove bitmap data: reserved, offset, header length. $data = substr($data, 12); // Read and remove the bitmap width and height. Verify the sizes. $array = unpack("Vwidth/Vheight", $data); $data = substr($data, 8); $width = $array["width"]; $height = $array["height"]; if ($width > 0xFFFF) { trigger_error("$bitmap: largest image width supported is 64k.", E_USER_ERROR); } if ($height > 0xFFFF) { trigger_error("$bitmap: largest image height supported is 64k.", E_USER_ERROR); } // Read and remove the bitmap planes and bpp data. Verify them. $array = unpack("vplanes/vbitcount", $data); $data = substr($data, 4); $planes = $array["planes"]; $bitcount = $array["bitcount"]; if ($bitcount != 24) { trigger_error("$bitmap isn't a 24bit true color bitmap.", E_USER_ERROR); } if ($planes != 1) { trigger_error("$bitmap: only 1 plane supported in bitmap image.", E_USER_ERROR); } // Read and remove the bitmap compression. Verify compression. $array = unpack("Vcompression", $data); $data = substr($data, 4); $compression = $array["compression"]; if ($compression != 0) { trigger_error("$bitmap: compression not supported in bitmap image.", E_USER_ERROR); } // Remove bitmap data: data size, hres, vres, colours, imp. colours. $data = substr($data, 20); // Add the BITMAPCOREHEADER data $header = pack("Vvvvv", 0x000c, $width, $height, 0x01, 0x18); $data = $header . $data; return array($width, $height, $size, $data); } /* * Store the window zoom factor. This should be a reduced fraction but for * simplicity we will store all fractions with a numerator of 100. */ function _store_zoom() { // If scale is 100% we don't need to write a record if ($this->_zoom == 100) { return; } $record = 0x00A0; // Record identifier $length = 0x0004; // Bytes to follow $header = pack("vv", $record, $length); $data = pack("vv", $this->_zoom, 100); $this->_append($header . $data); } } ?> gosa-core-2.7.4/include/utils/excel/class.writeexcel_format.inc.php0000644000175000017500000004651711327532760024055 0ustar mikemike_xf_index = (sizeof($_)>0) ? array_shift($_) : 0; $this->_font_index = 0; $this->_font = 'Arial'; $this->_size = 10; $this->_bold = 0x0190; $this->_italic = 0; $this->_color = 0x7FFF; $this->_underline = 0; $this->_font_strikeout = 0; $this->_font_outline = 0; $this->_font_shadow = 0; $this->_font_script = 0; $this->_font_family = 0; $this->_font_charset = 0; $this->_num_format = 0; $this->_hidden = 0; $this->_locked = 1; $this->_text_h_align = 0; $this->_text_wrap = 0; $this->_text_v_align = 2; $this->_text_justlast = 0; $this->_rotation = 0; $this->_fg_color = 0x40; $this->_bg_color = 0x41; $this->_pattern = 0; $this->_bottom = 0; $this->_top = 0; $this->_left = 0; $this->_right = 0; $this->_bottom_color = 0x40; $this->_top_color = 0x40; $this->_left_color = 0x40; $this->_right_color = 0x40; // Set properties passed to writeexcel_workbook::addformat() if (sizeof($_)>0) { call_user_func_array(array($this, 'set_properties'), $_); } } /* * Copy the attributes of another writeexcel_format object. */ function copy($other) { $xf = $this->_xf_index; // Backup XF index /* A better way to copy member vars, ... won't cause fatal errors in PHP5. The only thing i can understand is : For what is this function used, it is never used by any object, as I can see in the source code. ... */ foreach(get_object_vars($other) as $var => $val){ $this->$var = $val; } // $this = $other; // Copy properties $this->_xf_index = $xf; // Restore XF index } /* * Generate an Excel BIFF XF record. */ function get_xf() { $_=func_get_args(); // $record Record identifier // $length Number of bytes to follow // $ifnt Index to FONT record // $ifmt Index to FORMAT record // $style Style and other options // $align Alignment // $icv fg and bg pattern colors // $fill Fill and border line style // $border1 Border line style and color // $border2 Border color // Set the type of the XF record and some of the attributes. if ($_[0] == "style") { $style = 0xFFF5; } else { $style = $this->_locked; $style |= $this->_hidden << 1; } // Flags to indicate if attributes have been set. $atr_num = ($this->_num_format != 0) ? 1 : 0; $atr_fnt = ($this->_font_index != 0) ? 1 : 0; $atr_alc = $this->_text_wrap ? 1 : 0; $atr_bdr = ($this->_bottom || $this->_top || $this->_left || $this->_right) ? 1 : 0; $atr_pat = ($this->_fg_color != 0x41 || $this->_bg_color != 0x41 || $this->_pattern != 0x00) ? 1 : 0; $atr_prot = 0; // Reset the default colors for the non-font properties if ($this->_fg_color == 0x7FFF) $this->_fg_color = 0x40; if ($this->_bg_color == 0x7FFF) $this->_bg_color = 0x41; if ($this->_bottom_color == 0x7FFF) $this->_bottom_color = 0x41; if ($this->_top_color == 0x7FFF) $this->_top_color = 0x41; if ($this->_left_color == 0x7FFF) $this->_left_color = 0x41; if ($this->_right_color == 0x7FFF) $this->_right_color = 0x41; // Zero the default border colour if the border has not been set. if ($this->_bottom == 0) { $this->_bottom_color = 0; } if ($this->_top == 0) { $this->_top_color = 0; } if ($this->_right == 0) { $this->_right_color = 0; } if ($this->_left == 0) { $this->_left_color = 0; } // The following 2 logical statements take care of special cases in // relation to cell colors and patterns: // 1. For a solid fill (_pattern == 1) Excel reverses the role of // foreground and background colors // 2. If the user specifies a foreground or background color // without a pattern they probably wanted a solid fill, so we // fill in the defaults. if ($this->_pattern <= 0x01 && $this->_bg_color != 0x41 && $this->_fg_color == 0x40 ) { $this->_fg_color = $this->_bg_color; $this->_bg_color = 0x40; $this->_pattern = 1; } if ($this->_pattern <= 0x01 && $this->_bg_color == 0x41 && $this->_fg_color != 0x40 ) { $this->_bg_color = 0x40; $this->_pattern = 1; } $record = 0x00E0; $length = 0x0010; $ifnt = $this->_font_index; $ifmt = $this->_num_format; $align = $this->_text_h_align; $align |= $this->_text_wrap << 3; $align |= $this->_text_v_align << 4; $align |= $this->_text_justlast << 7; $align |= $this->_rotation << 8; $align |= $atr_num << 10; $align |= $atr_fnt << 11; $align |= $atr_alc << 12; $align |= $atr_bdr << 13; $align |= $atr_pat << 14; $align |= $atr_prot << 15; $icv = $this->_fg_color; $icv |= $this->_bg_color << 7; $fill = $this->_pattern; $fill |= $this->_bottom << 6; $fill |= $this->_bottom_color << 9; $border1 = $this->_top; $border1 |= $this->_left << 3; $border1 |= $this->_right << 6; $border1 |= $this->_top_color << 9; $border2 = $this->_left_color; $border2 |= $this->_right_color << 7; $header = pack("vv", $record, $length); $data = pack("vvvvvvvv", $ifnt, $ifmt, $style, $align, $icv, $fill, $border1, $border2); return($header . $data); } /* * Generate an Excel BIFF FONT record. */ function get_font() { // $record Record identifier // $length Record length // $dyHeight Height of font (1/20 of a point) // $grbit Font attributes // $icv Index to color palette // $bls Bold style // $sss Superscript/subscript // $uls Underline // $bFamily Font family // $bCharSet Character set // $reserved Reserved // $cch Length of font name // $rgch Font name $dyHeight = $this->_size * 20; $icv = $this->_color; $bls = $this->_bold; $sss = $this->_font_script; $uls = $this->_underline; $bFamily = $this->_font_family; $bCharSet = $this->_font_charset; $rgch = $this->_font; $cch = strlen($rgch); $record = 0x31; $length = 0x0F + $cch; $reserved = 0x00; $grbit = 0x00; if ($this->_italic) { $grbit |= 0x02; } if ($this->_font_strikeout) { $grbit |= 0x08; } if ($this->_font_outline) { $grbit |= 0x10; } if ($this->_font_shadow) { $grbit |= 0x20; } $header = pack("vv", $record, $length); $data = pack("vvvvvCCCCC", $dyHeight, $grbit, $icv, $bls, $sss, $uls, $bFamily, $bCharSet, $reserved, $cch); return($header . $data . $this->_font); } /* * Returns a unique hash key for a font. * Used by writeexcel_workbook::_store_all_fonts() */ function get_font_key() { # The following elements are arranged to increase the probability of # generating a unique key. Elements that hold a large range of numbers # eg. _color are placed between two binary elements such as _italic # $key = $this->_font.$this->_size. $this->_font_script.$this->_underline. $this->_font_strikeout.$this->_bold.$this->_font_outline. $this->_font_family.$this->_font_charset. $this->_font_shadow.$this->_color.$this->_italic; $key = preg_replace('/ /', '_', $key); # Convert the key to a single word return $key; } /* * Returns the used by Worksheet->_XF() */ function get_xf_index() { return $this->_xf_index; } /* * Used in conjunction with the set_xxx_color methods to convert a color * string into a number. Color range is 0..63 but we will restrict it * to 8..63 to comply with Gnumeric. Colors 0..7 are repeated in 8..15. */ function _get_color($color=false) { $colors = array( 'aqua' => 0x0F, 'cyan' => 0x0F, 'black' => 0x08, 'blue' => 0x0C, 'brown' => 0x10, 'magenta' => 0x0E, 'fuchsia' => 0x0E, 'gray' => 0x17, 'grey' => 0x17, 'green' => 0x11, 'lime' => 0x0B, 'navy' => 0x12, 'orange' => 0x35, 'purple' => 0x14, 'red' => 0x0A, 'silver' => 0x16, 'white' => 0x09, 'yellow' => 0x0D ); // Return the default color, 0x7FFF, if undef, if ($color===false) { return 0x7FFF; } // or the color string converted to an integer, if (isset($colors[strtolower($color)])) { return $colors[strtolower($color)]; } // or the default color if string is unrecognised, if (preg_match('/\D/', $color)) { return 0x7FFF; } // or an index < 8 mapped into the correct range, if ($color<8) { return $color + 8; } // or the default color if arg is outside range, if ($color>63) { return 0x7FFF; } // or an integer in the valid range return $color; } /* * Set cell alignment. */ function set_align($location) { // Ignore numbers if (preg_match('/\d/', $location)) { return; } $location = strtolower($location); switch ($location) { case 'left': $this->set_text_h_align(1); break; case 'centre': case 'center': $this->set_text_h_align(2); break; case 'right': $this->set_text_h_align(3); break; case 'fill': $this->set_text_h_align(4); break; case 'justify': $this->set_text_h_align(5); break; case 'merge': $this->set_text_h_align(6); break; case 'equal_space': $this->set_text_h_align(7); break; case 'top': $this->set_text_v_align(0); break; case 'vcentre': case 'vcenter': $this->set_text_v_align(1); break; break; case 'bottom': $this->set_text_v_align(2); break; case 'vjustify': $this->set_text_v_align(3); break; case 'vequal_space': $this->set_text_v_align(4); break; } } /* * Set vertical cell alignment. This is required by the set_properties() * method to differentiate between the vertical and horizontal properties. */ function set_valign($location) { $this->set_align($location); } /* * This is an alias for the unintuitive set_align('merge') */ function set_merge() { $this->set_text_h_align(6); } /* * Bold has a range 0x64..0x3E8. * 0x190 is normal. 0x2BC is bold. */ function set_bold($weight=1) { if ($weight == 1) { // Bold text $weight = 0x2BC; } if ($weight == 0) { // Normal text $weight = 0x190; } if ($weight < 0x064) { // Lower bound $weight = 0x190; } if ($weight > 0x3E8) { // Upper bound $weight = 0x190; } $this->_bold = $weight; } /* * Set all cell borders (bottom, top, left, right) to the same style */ function set_border($style) { $this->set_bottom($style); $this->set_top($style); $this->set_left($style); $this->set_right($style); } /* * Set all cell borders (bottom, top, left, right) to the same color */ function set_border_color($color) { $this->set_bottom_color($color); $this->set_top_color($color); $this->set_left_color($color); $this->set_right_color($color); } /* * Convert hashes of properties to method calls. */ function set_properties() { $_=func_get_args(); $properties=array(); foreach($_ as $props) { if (is_array($props)) { $properties=array_merge($properties, $props); } else { $properties[]=$props; } } foreach ($properties as $key=>$value) { // Strip leading "-" from Tk style properties eg. -color => 'red'. $key = preg_replace('/^-/', '', $key); /* Make sure method names are alphanumeric characters only, in case tainted data is passed to the eval(). */ if (preg_match('/\W/', $key)) { trigger_error("Unknown property: $key.", E_USER_ERROR); } /* Evaling all $values as a strings gets around the problem of some numerical format strings being evaluated as numbers, for example "00000" for a zip code. */ if (is_int($key)) { eval("\$this->set_$value();"); } else { eval("\$this->set_$key('$value');"); } } } function set_font($font) { $this->_font=$font; } function set_size($size) { $this->_size=$size; } function set_italic($italic=1) { $this->_italic=$italic; } function set_color($color) { $this->_color=$this->_get_color($color); } function set_underline($underline=1) { $this->_underline=$underline; } function set_font_strikeout($font_strikeout=1) { $this->_font_strikeout=$font_strikeout; } function set_font_outline($font_outline=1) { $this->_font_outline=$font_outline; } function set_font_shadow($font_shadow=1) { $this->_font_shadow=$font_shadow; } function set_font_script($font_script=1) { $this->_font_script=$font_script; } /* Undocumented */ function set_font_family($font_family=1) { $this->_font_family=$font_family; } /* Undocumented */ function set_font_charset($font_charset=1) { $this->_font_charset=$font_charset; } function set_num_format($num_format=1) { $this->_num_format=$num_format; } function set_hidden($hidden=1) { $this->_hidden=$hidden; } function set_locked($locked=1) { $this->_locked=$locked; } function set_text_h_align($align) { $this->_text_h_align=$align; } function set_text_wrap($wrap=1) { $this->_text_wrap=$wrap; } function set_text_v_align($align) { $this->_text_v_align=$align; } function set_text_justlast($text_justlast=1) { $this->_text_justlast=$text_justlast; } function set_rotation($rotation=1) { $this->_rotation=$rotation; } function set_fg_color($color) { $this->_fg_color=$this->_get_color($color); } function set_bg_color($color) { $this->_bg_color=$this->_get_color($color); } function set_pattern($pattern=1) { $this->_pattern=$pattern; } function set_bottom($bottom=1) { $this->_bottom=$bottom; } function set_top($top=1) { $this->_top=$top; } function set_left($left=1) { $this->_left=$left; } function set_right($right=1) { $this->_right=$right; } function set_bottom_color($color) { $this->_bottom_color=$this->_get_color($color); } function set_top_color($color) { $this->_top_color=$this->_get_color($color); } function set_left_color($color) { $this->_left_color=$this->_get_color($color); } function set_right_color($color) { $this->_right_color=$this->_get_color($color); } } ?> gosa-core-2.7.4/include/utils/excel/class.writeexcel_workbook.inc.php0000644000175000017500000011166011010522516024375 0ustar mikemikewriteexcel_biffwriter(); $tmp_format = new writeexcel_format(); $byte_order = $this->_byte_order; $parser = new writeexcel_formula($byte_order); $this->_filename = $filename; $this->_parser = $parser; //? $this->_tempdir = undef; $this->_1904 = 0; $this->_activesheet = 0; $this->_firstsheet = 0; $this->_selected = 0; $this->_xf_index = 16; # 15 style XF's and 1 cell XF. $this->_fileclosed = 0; $this->_biffsize = 0; $this->_sheetname = "Sheet"; $this->_tmp_format = $tmp_format; $this->_url_format = false; $this->_worksheets = array(); $this->_sheetnames = array(); $this->_formats = array(); $this->_palette = array(); # Add the default format for hyperlinks $this->_url_format = $this->addformat(array('color' => 'blue', 'underline' => 1)); # Check for a filename if ($this->_filename == '') { //todo: print error return; } # Try to open the named file and see if it throws any errors. # If the filename is a reference it is assumed that it is a valid # filehandle and ignore # //todo # Set colour palette. $this->set_palette_xl97(); } ############################################################################### # # close() # # Calls finalization methods and explicitly close the OLEwriter file # handle. # function close() { # Prevent close() from being called twice. if ($this->_fileclosed) { return; } $this->_store_workbook(); $this->_fileclosed = 1; } //PHPport: method DESTROY deleted ############################################################################### # # sheets() # # An accessor for the _worksheets[] array # # Returns: a list of the worksheet objects in a workbook # function sheets() { return $this->_worksheets; } //PHPport: method worksheets deleted: # This method is now deprecated. Use the sheets() method instead. ############################################################################### # # addworksheet($name) # # Add a new worksheet to the Excel workbook. # TODO: Add accessor for $self->{_sheetname} for international Excel versions. # # Returns: reference to a worksheet object # function addworksheet($name="") { # Check that sheetname is <= 31 chars (Excel limit). if (strlen($name) > 31) { trigger_error("Sheetname $name must be <= 31 chars", E_USER_ERROR); } $index = sizeof($this->_worksheets); $sheetname = $this->_sheetname; if ($name == "") { $name = $sheetname . ($index+1); } # Check that the worksheet name doesn't already exist: a fatal Excel error. foreach ($this->_worksheets as $tmp) { if ($name == $tmp->get_name()) { trigger_error("Worksheet '$name' already exists", E_USER_ERROR); } } $worksheet = new writeexcel_worksheet($name, $index, $this->_activesheet, $this->_firstsheet, $this->_url_format, $this->_parser, $this->_tempdir); $this->_worksheets[$index] = $worksheet; # Store ref for iterator $this->_sheetnames[$index] = $name; # Store EXTERNSHEET names $this->_parser->set_ext_sheet($name, $index); # Store names in Formula.pm return $worksheet; } ############################################################################### # # addformat(%properties) # # Add a new format to the Excel workbook. This adds an XF record and # a FONT record. Also, pass any properties to the Format::new(). # function addformat($para=false) { if($para===false) { $format = new writeexcel_format($this->_xf_index); } else { $format = new writeexcel_format($this->_xf_index, $para); } $this->_xf_index += 1; # Store format reference $this->_formats[]=$format; return $format; } ############################################################################### # # set_1904() # # Set the date system: 0 = 1900 (the default), 1 = 1904 # function set_1904($_1904) { $this->_1904 = $_1904; } ############################################################################### # # get_1904() # # Return the date system: 0 = 1900, 1 = 1904 # function get_1904() { return $this->_1904; } ############################################################################### # # set_custom_color() # # Change the RGB components of the elements in the colour palette. # function set_custom_color($index, $red, $green, $blue) { // todo /* # Match a HTML #xxyyzz style parameter if (defined $_[1] and $_[1] =~ /^#(\w\w)(\w\w)(\w\w)/ ) { @_ = ($_[0], hex $1, hex $2, hex $3); } */ $aref = $this->_palette; # Check that the colour index is the right range if ($index < 8 or $index > 64) { //todo carp "Color index $index outside range: 8 <= index <= 64"; return; } # Check that the colour components are in the right range if ( ($red < 0 || $red > 255) || ($green < 0 || $green > 255) || ($blue < 0 || $blue > 255) ) { //todo carp "Color component outside range: 0 <= color <= 255"; return; } $index -=8; # Adjust colour index (wingless dragonfly) # Set the RGB value $aref[$index] = array($red, $green, $blue, 0); return $index +8; } ############################################################################### # # set_palette_xl97() # # Sets the colour palette to the Excel 97+ default. # function set_palette_xl97() { $this->_palette = array( array(0x00, 0x00, 0x00, 0x00), # 8 array(0xff, 0xff, 0xff, 0x00), # 9 array(0xff, 0x00, 0x00, 0x00), # 10 array(0x00, 0xff, 0x00, 0x00), # 11 array(0x00, 0x00, 0xff, 0x00), # 12 array(0xff, 0xff, 0x00, 0x00), # 13 array(0xff, 0x00, 0xff, 0x00), # 14 array(0x00, 0xff, 0xff, 0x00), # 15 array(0x80, 0x00, 0x00, 0x00), # 16 array(0x00, 0x80, 0x00, 0x00), # 17 array(0x00, 0x00, 0x80, 0x00), # 18 array(0x80, 0x80, 0x00, 0x00), # 19 array(0x80, 0x00, 0x80, 0x00), # 20 array(0x00, 0x80, 0x80, 0x00), # 21 array(0xc0, 0xc0, 0xc0, 0x00), # 22 array(0x80, 0x80, 0x80, 0x00), # 23 array(0x99, 0x99, 0xff, 0x00), # 24 array(0x99, 0x33, 0x66, 0x00), # 25 array(0xff, 0xff, 0xcc, 0x00), # 26 array(0xcc, 0xff, 0xff, 0x00), # 27 array(0x66, 0x00, 0x66, 0x00), # 28 array(0xff, 0x80, 0x80, 0x00), # 29 array(0x00, 0x66, 0xcc, 0x00), # 30 array(0xcc, 0xcc, 0xff, 0x00), # 31 array(0x00, 0x00, 0x80, 0x00), # 32 array(0xff, 0x00, 0xff, 0x00), # 33 array(0xff, 0xff, 0x00, 0x00), # 34 array(0x00, 0xff, 0xff, 0x00), # 35 array(0x80, 0x00, 0x80, 0x00), # 36 array(0x80, 0x00, 0x00, 0x00), # 37 array(0x00, 0x80, 0x80, 0x00), # 38 array(0x00, 0x00, 0xff, 0x00), # 39 array(0x00, 0xcc, 0xff, 0x00), # 40 array(0xcc, 0xff, 0xff, 0x00), # 41 array(0xcc, 0xff, 0xcc, 0x00), # 42 array(0xff, 0xff, 0x99, 0x00), # 43 array(0x99, 0xcc, 0xff, 0x00), # 44 array(0xff, 0x99, 0xcc, 0x00), # 45 array(0xcc, 0x99, 0xff, 0x00), # 46 array(0xff, 0xcc, 0x99, 0x00), # 47 array(0x33, 0x66, 0xff, 0x00), # 48 array(0x33, 0xcc, 0xcc, 0x00), # 49 array(0x99, 0xcc, 0x00, 0x00), # 50 array(0xff, 0xcc, 0x00, 0x00), # 51 array(0xff, 0x99, 0x00, 0x00), # 52 array(0xff, 0x66, 0x00, 0x00), # 53 array(0x66, 0x66, 0x99, 0x00), # 54 array(0x96, 0x96, 0x96, 0x00), # 55 array(0x00, 0x33, 0x66, 0x00), # 56 array(0x33, 0x99, 0x66, 0x00), # 57 array(0x00, 0x33, 0x00, 0x00), # 58 array(0x33, 0x33, 0x00, 0x00), # 59 array(0x99, 0x33, 0x00, 0x00), # 60 array(0x99, 0x33, 0x66, 0x00), # 61 array(0x33, 0x33, 0x99, 0x00), # 62 array(0x33, 0x33, 0x33, 0x00), # 63 ); return 0; } ############################################################################### # # set_palette_xl5() # # Sets the colour palette to the Excel 5 default. # function set_palette_xl5() { $this->_palette = array( array(0x00, 0x00, 0x00, 0x00), # 8 array(0xff, 0xff, 0xff, 0x00), # 9 array(0xff, 0x00, 0x00, 0x00), # 10 array(0x00, 0xff, 0x00, 0x00), # 11 array(0x00, 0x00, 0xff, 0x00), # 12 array(0xff, 0xff, 0x00, 0x00), # 13 array(0xff, 0x00, 0xff, 0x00), # 14 array(0x00, 0xff, 0xff, 0x00), # 15 array(0x80, 0x00, 0x00, 0x00), # 16 array(0x00, 0x80, 0x00, 0x00), # 17 array(0x00, 0x00, 0x80, 0x00), # 18 array(0x80, 0x80, 0x00, 0x00), # 19 array(0x80, 0x00, 0x80, 0x00), # 20 array(0x00, 0x80, 0x80, 0x00), # 21 array(0xc0, 0xc0, 0xc0, 0x00), # 22 array(0x80, 0x80, 0x80, 0x00), # 23 array(0x80, 0x80, 0xff, 0x00), # 24 array(0x80, 0x20, 0x60, 0x00), # 25 array(0xff, 0xff, 0xc0, 0x00), # 26 array(0xa0, 0xe0, 0xe0, 0x00), # 27 array(0x60, 0x00, 0x80, 0x00), # 28 array(0xff, 0x80, 0x80, 0x00), # 29 array(0x00, 0x80, 0xc0, 0x00), # 30 array(0xc0, 0xc0, 0xff, 0x00), # 31 array(0x00, 0x00, 0x80, 0x00), # 32 array(0xff, 0x00, 0xff, 0x00), # 33 array(0xff, 0xff, 0x00, 0x00), # 34 array(0x00, 0xff, 0xff, 0x00), # 35 array(0x80, 0x00, 0x80, 0x00), # 36 array(0x80, 0x00, 0x00, 0x00), # 37 array(0x00, 0x80, 0x80, 0x00), # 38 array(0x00, 0x00, 0xff, 0x00), # 39 array(0x00, 0xcf, 0xff, 0x00), # 40 array(0x69, 0xff, 0xff, 0x00), # 41 array(0xe0, 0xff, 0xe0, 0x00), # 42 array(0xff, 0xff, 0x80, 0x00), # 43 array(0xa6, 0xca, 0xf0, 0x00), # 44 array(0xdd, 0x9c, 0xb3, 0x00), # 45 array(0xb3, 0x8f, 0xee, 0x00), # 46 array(0xe3, 0xe3, 0xe3, 0x00), # 47 array(0x2a, 0x6f, 0xf9, 0x00), # 48 array(0x3f, 0xb8, 0xcd, 0x00), # 49 array(0x48, 0x84, 0x36, 0x00), # 50 array(0x95, 0x8c, 0x41, 0x00), # 51 array(0x8e, 0x5e, 0x42, 0x00), # 52 array(0xa0, 0x62, 0x7a, 0x00), # 53 array(0x62, 0x4f, 0xac, 0x00), # 54 array(0x96, 0x96, 0x96, 0x00), # 55 array(0x1d, 0x2f, 0xbe, 0x00), # 56 array(0x28, 0x66, 0x76, 0x00), # 57 array(0x00, 0x45, 0x00, 0x00), # 58 array(0x45, 0x3e, 0x01, 0x00), # 59 array(0x6a, 0x28, 0x13, 0x00), # 60 array(0x85, 0x39, 0x6a, 0x00), # 61 array(0x4a, 0x32, 0x85, 0x00), # 62 array(0x42, 0x42, 0x42, 0x00), # 63 ); return 0; } ############################################################################### # # set_tempdir() # # Change the default temp directory used by _initialize() in Worksheet.pm. # function set_tempdir($tempdir) { //todo /* croak "$_[0] is not a valid directory" unless -d $_[0]; croak "set_tempdir must be called before addworksheet" if $self->sheets(); */ $this->_tempdir = $tempdir; } ############################################################################### # # _store_workbook() # # Assemble worksheets into a workbook and send the BIFF data to an OLE # storage. # function _store_workbook() { # Ensure that at least one worksheet has been selected. if ($this->_activesheet == 0) { $this->_worksheets[0]->_selected = 1; } # Calculate the number of selected worksheet tabs and call the finalization # methods for each worksheet for ($c=0;$c_worksheets);$c++) { $sheet=$this->_worksheets[$c]; if ($sheet->_selected) { $this->_selected++; } $sheet->_close($this->_sheetnames); } # Add Workbook globals $this->_store_bof(0x0005); $this->_store_externs(); # For print area and repeat rows $this->_store_names(); # For print area and repeat rows $this->_store_window1(); $this->_store_1904(); $this->_store_all_fonts(); $this->_store_all_num_formats(); $this->_store_all_xfs(); $this->_store_all_styles(); $this->_store_palette(); $this->_calc_sheet_offsets(); # Add BOUNDSHEET records for ($c=0;$c_worksheets);$c++) { $sheet=$this->_worksheets[$c]; $this->_store_boundsheet($sheet->_name, $sheet->_offset); } # End Workbook globals $this->_store_eof(); # Store the workbook in an OLE container $this->_store_OLE_file(); } ############################################################################### # # _store_OLE_file() # # Store the workbook in an OLE container if the total size of the workbook data # is less than ~ 7MB. # function _store_OLE_file() { ## ABR if ($this->_tmpfilename != '') { $OLE = new writeexcel_olewriter(CACHE_DIR.'/tmp/'.$this->_tmpfilename); $OLE->_OLEtmpfilename = CACHE_DIR.$this->_tmpfilename; } else { $OLE = new writeexcel_olewriter($this->_filename); $OLE->_OLEtmpfilename = ''; }; ## END ABR # Write Worksheet data if data <~ 7MB if ($OLE->set_size($this->_biffsize)) { $OLE->write_header(); $OLE->write($this->_data); for ($c=0;$c_worksheets);$c++) { $sheet=$this->_worksheets[$c]; while ($tmp = $sheet->get_data()) { $OLE->write($tmp); } } } $OLE->close(); } ############################################################################### # # _calc_sheet_offsets() # # Calculate offsets for Worksheet BOF records. # function _calc_sheet_offsets() { $BOF = 11; $EOF = 4; $offset = $this->_datasize; foreach ($this->_worksheets as $sheet) { $offset += $BOF + strlen($sheet->_name); } $offset += $EOF; for ($c=0;$c_worksheets);$c++) { $sheet=$this->_worksheets[$c]; $sheet->_offset = $offset; $offset += $sheet->_datasize; } $this->_biffsize = $offset; } ############################################################################### # # _store_all_fonts() # # Store the Excel FONT records. # function _store_all_fonts() { # _tmp_format is added by new(). We use this to write the default XF's $format = $this->_tmp_format; $font = $format->get_font(); # Note: Fonts are 0-indexed. According to the SDK there is no index 4, # so the following fonts are 0, 1, 2, 3, 5 # for ($c=0;$c<5;$c++) { $this->_append($font); } # Iterate through the XF objects and write a FONT record if it isn't the # same as the default FONT and if it hasn't already been used. # $index = 6; # The first user defined FONT $key = $format->get_font_key(); # The default font from _tmp_format $fonts[$key] = 0; # Index of the default font for ($c=0;$c_formats);$c++) { $format=$this->_formats[$c]; $key = $format->get_font_key(); if (isset($fonts[$key])) { # FONT has already been used $format->_font_index = $fonts[$key]; } else { # Add a new FONT record $fonts[$key] = $index; $format->_font_index = $index; $index++; $font = $format->get_font(); $this->_append($font); } } } ############################################################################### # # _store_all_num_formats() # # Store user defined numerical formats i.e. FORMAT records # function _store_all_num_formats() { # Leaning num_format syndrome $num_formats_list=array(); $index = 164; # Iterate through the XF objects and write a FORMAT record if it isn't a # built-in format type and if the FORMAT string hasn't already been used. # for ($c=0;$c_formats);$c++) { $format=$this->_formats[$c]; $num_format = $format->_num_format; # Check if $num_format is an index to a built-in format. # Also check for a string of zeros, which is a valid format string # but would evaluate to zero. # if (!preg_match('/^0+\d/', $num_format)) { if (preg_match('/^\d+$/', $num_format)) { # built-in continue; } } if (isset($num_formats[$num_format])) { # FORMAT has already been used $format->_num_format = $num_formats[$num_format]; } else { # Add a new FORMAT $num_formats[$num_format] = $index; $format->_num_format = $index; array_push($num_formats_list, $num_format); $index++; } } # Write the new FORMAT records starting from 0xA4 $index = 164; foreach ($num_formats_list as $num_format) { $this->_store_num_format($num_format, $index); $index++; } } ############################################################################### # # _store_all_xfs() # # Write all XF records. # function _store_all_xfs() { # _tmp_format is added by new(). We use this to write the default XF's # The default font index is 0 # $format = $this->_tmp_format; $xf; for ($c=0;$c<15;$c++) { $xf = $format->get_xf('style'); # Style XF $this->_append($xf); } $xf = $format->get_xf('cell'); # Cell XF $this->_append($xf); # User defined XFs foreach ($this->_formats as $format) { $xf = $format->get_xf('cell'); $this->_append($xf); } } ############################################################################### # # _store_all_styles() # # Write all STYLE records. # function _store_all_styles() { $this->_store_style(); } ############################################################################### # # _store_externs() # # Write the EXTERNCOUNT and EXTERNSHEET records. These are used as indexes for # the NAME records. # function _store_externs() { # Create EXTERNCOUNT with number of worksheets $this->_store_externcount(sizeof($this->_worksheets)); # Create EXTERNSHEET for each worksheet foreach ($this->_sheetnames as $sheetname) { $this->_store_externsheet($sheetname); } } ############################################################################### # # _store_names() # # Write the NAME record to define the print area and the repeat rows and cols. # function _store_names() { # Create the print area NAME records foreach ($this->_worksheets as $worksheet) { # Write a Name record if the print area has been defined if ($worksheet->_print_rowmin!==false) { $this->_store_name_short( $worksheet->_index, 0x06, # NAME type $worksheet->_print_rowmin, $worksheet->_print_rowmax, $worksheet->_print_colmin, $worksheet->_print_colmax ); } } # Create the print title NAME records foreach ($this->_worksheets as $worksheet) { $rowmin = $worksheet->_title_rowmin; $rowmax = $worksheet->_title_rowmax; $colmin = $worksheet->_title_colmin; $colmax = $worksheet->_title_colmax; # Determine if row + col, row, col or nothing has been defined # and write the appropriate record # if ($rowmin!==false && $colmin!==false) { # Row and column titles have been defined. # Row title has been defined. $this->_store_name_long( $worksheet->_index, 0x07, # NAME type $rowmin, $rowmax, $colmin, $colmax ); } elseif ($rowmin!==false) { # Row title has been defined. $this->_store_name_short( $worksheet->_index, 0x07, # NAME type $rowmin, $rowmax, 0x00, 0xff ); } elseif ($colmin!==false) { # Column title has been defined. $this->_store_name_short( $worksheet->_index, 0x07, # NAME type 0x0000, 0x3fff, $colmin, $colmax ); } else { # Print title hasn't been defined. } } } ############################################################################### ############################################################################### # # BIFF RECORDS # ############################################################################### # # _store_window1() # # Write Excel BIFF WINDOW1 record. # function _store_window1() { $record = 0x003D; # Record identifier $length = 0x0012; # Number of bytes to follow $xWn = 0x0000; # Horizontal position of window $yWn = 0x0000; # Vertical position of window $dxWn = 0x25BC; # Width of window $dyWn = 0x1572; # Height of window $grbit = 0x0038; # Option flags $ctabsel = $this->_selected; # Number of workbook tabs selected $wTabRatio = 0x0258; # Tab to scrollbar ratio $itabFirst = $this->_firstsheet; # 1st displayed worksheet $itabCur = $this->_activesheet; # Active worksheet $header = pack("vv", $record, $length); $data = pack("vvvvvvvvv", $xWn, $yWn, $dxWn, $dyWn, $grbit, $itabCur, $itabFirst, $ctabsel, $wTabRatio); $this->_append($header . $data); } ############################################################################### # # _store_boundsheet() # # Writes Excel BIFF BOUNDSHEET record. # function _store_boundsheet($sheetname, $offset) { $record = 0x0085; # Record identifier $length = 0x07 + strlen($sheetname); # Number of bytes to follow //$sheetname = $_[0]; # Worksheet name //$offset = $_[1]; # Location of worksheet BOF $grbit = 0x0000; # Sheet identifier $cch = strlen($sheetname); # Length of sheet name $header = pack("vv", $record, $length); $data = pack("VvC", $offset, $grbit, $cch); $this->_append($header . $data . $sheetname); } ############################################################################### # # _store_style() # # Write Excel BIFF STYLE records. # function _store_style() { $record = 0x0293; # Record identifier $length = 0x0004; # Bytes to follow $ixfe = 0x8000; # Index to style XF $BuiltIn = 0x00; # Built-in style $iLevel = 0xff; # Outline style level $header = pack("vv", $record, $length); $data = pack("vCC", $ixfe, $BuiltIn, $iLevel); $this->_append($header . $data); } ############################################################################### # # _store_num_format() # # Writes Excel FORMAT record for non "built-in" numerical formats. # function _store_num_format($num_format, $index) { $record = 0x041E; # Record identifier $length = 0x03 + strlen($num_format); # Number of bytes to follow $format = $num_format; # Custom format string $ifmt = $index; # Format index code $cch = strlen($format); # Length of format string $header = pack("vv", $record, $length); $data = pack("vC", $ifmt, $cch); $this->_append($header . $data . $format); } ############################################################################### # # _store_1904() # # Write Excel 1904 record to indicate the date system in use. # function _store_1904() { $record = 0x0022; # Record identifier $length = 0x0002; # Bytes to follow $f1904 = $this->_1904; # Flag for 1904 date system $header = pack("vv", $record, $length); $data = pack("v", $f1904); $this->_append($header . $data); } ############################################################################### # # _store_externcount($count) # # Write BIFF record EXTERNCOUNT to indicate the number of external sheet # references in the workbook. # # Excel only stores references to external sheets that are used in NAME. # The workbook NAME record is required to define the print area and the repeat # rows and columns. # # A similar method is used in Worksheet.pm for a slightly different purpose. # function _store_externcount($par0) { $record = 0x0016; # Record identifier $length = 0x0002; # Number of bytes to follow $cxals = $par0; # Number of external references $header = pack("vv", $record, $length); $data = pack("v", $cxals); $this->_append($header . $data); } ############################################################################### # # _store_externsheet($sheetname) # # # Writes the Excel BIFF EXTERNSHEET record. These references are used by # formulas. NAME record is required to define the print area and the repeat # rows and columns. # # A similar method is used in Worksheet.pm for a slightly different purpose. # function _store_externsheet($par0) { $record = 0x0017; # Record identifier $length = 0x02 + strlen($par0); # Number of bytes to follow $sheetname = $par0; # Worksheet name $cch = strlen($sheetname); # Length of sheet name $rgch = 0x03; # Filename encoding $header = pack("vv", $record, $length); $data = pack("CC", $cch, $rgch); $this->_append($header . $data . $sheetname); } ############################################################################### # # _store_name_short() # # # Store the NAME record in the short format that is used for storing the print # area, repeat rows only and repeat columns only. # function _store_name_short($par0, $par1, $par2, $par3, $par4, $par5) { $record = 0x0018; # Record identifier $length = 0x0024; # Number of bytes to follow $index = $par0; # Sheet index $type = $par1; $grbit = 0x0020; # Option flags $chKey = 0x00; # Keyboard shortcut $cch = 0x01; # Length of text name $cce = 0x0015; # Length of text definition $ixals = $index +1; # Sheet index $itab = $ixals; # Equal to ixals $cchCustMenu = 0x00; # Length of cust menu text $cchDescription = 0x00; # Length of description text $cchHelptopic = 0x00; # Length of help topic text $cchStatustext = 0x00; # Length of status bar text $rgch = $type; # Built-in name type $unknown03 = 0x3b; $unknown04 = 0xffff-$index; $unknown05 = 0x0000; $unknown06 = 0x0000; $unknown07 = 0x1087; $unknown08 = 0x8005; $rowmin = $par2; # Start row $rowmax = $par3; # End row $colmin = $par4; # Start column $colmax = $par5; # end column $header = pack("vv", $record, $length); $data = pack("v", $grbit); $data .= pack("C", $chKey); $data .= pack("C", $cch); $data .= pack("v", $cce); $data .= pack("v", $ixals); $data .= pack("v", $itab); $data .= pack("C", $cchCustMenu); $data .= pack("C", $cchDescription); $data .= pack("C", $cchHelptopic); $data .= pack("C", $cchStatustext); $data .= pack("C", $rgch); $data .= pack("C", $unknown03); $data .= pack("v", $unknown04); $data .= pack("v", $unknown05); $data .= pack("v", $unknown06); $data .= pack("v", $unknown07); $data .= pack("v", $unknown08); $data .= pack("v", $index); $data .= pack("v", $index); $data .= pack("v", $rowmin); $data .= pack("v", $rowmax); $data .= pack("C", $colmin); $data .= pack("C", $colmax); $this->_append($header . $data); } ############################################################################### # # _store_name_long() # # # Store the NAME record in the long format that is used for storing the repeat # rows and columns when both are specified. This share a lot of code with # _store_name_short() but we use a separate method to keep the code clean. # Code abstraction for reuse can be carried too far, and I should know. ;-) # function _store_name_long($par0, $par1, $par2, $par3, $par4, $par5) { $record = 0x0018; # Record identifier $length = 0x003d; # Number of bytes to follow $index = $par0; # Sheet index $type = $par1; $grbit = 0x0020; # Option flags $chKey = 0x00; # Keyboard shortcut $cch = 0x01; # Length of text name $cce = 0x002e; # Length of text definition $ixals = $index +1; # Sheet index $itab = $ixals; # Equal to ixals $cchCustMenu = 0x00; # Length of cust menu text $cchDescription = 0x00; # Length of description text $cchHelptopic = 0x00; # Length of help topic text $cchStatustext = 0x00; # Length of status bar text $rgch = $type; # Built-in name type $unknown01 = 0x29; $unknown02 = 0x002b; $unknown03 = 0x3b; $unknown04 = 0xffff-$index; $unknown05 = 0x0000; $unknown06 = 0x0000; $unknown07 = 0x1087; $unknown08 = 0x8008; $rowmin = $par2; # Start row $rowmax = $par3; # End row $colmin = $par4; # Start column $colmax = $par5; # end column $header = pack("vv", $record, $length); $data = pack("v", $grbit); $data .= pack("C", $chKey); $data .= pack("C", $cch); $data .= pack("v", $cce); $data .= pack("v", $ixals); $data .= pack("v", $itab); $data .= pack("C", $cchCustMenu); $data .= pack("C", $cchDescription); $data .= pack("C", $cchHelptopic); $data .= pack("C", $cchStatustext); $data .= pack("C", $rgch); $data .= pack("C", $unknown01); $data .= pack("v", $unknown02); # Column definition $data .= pack("C", $unknown03); $data .= pack("v", $unknown04); $data .= pack("v", $unknown05); $data .= pack("v", $unknown06); $data .= pack("v", $unknown07); $data .= pack("v", $unknown08); $data .= pack("v", $index); $data .= pack("v", $index); $data .= pack("v", 0x0000); $data .= pack("v", 0x3fff); $data .= pack("C", $colmin); $data .= pack("C", $colmax); # Row definition $data .= pack("C", $unknown03); $data .= pack("v", $unknown04); $data .= pack("v", $unknown05); $data .= pack("v", $unknown06); $data .= pack("v", $unknown07); $data .= pack("v", $unknown08); $data .= pack("v", $index); $data .= pack("v", $index); $data .= pack("v", $rowmin); $data .= pack("v", $rowmax); $data .= pack("C", 0x00); $data .= pack("C", 0xff); # End of data $data .= pack("C", 0x10); $this->_append($header . $data); } ############################################################################### # # _store_palette() # # Stores the PALETTE biff record. # function _store_palette() { $aref = $this->_palette; $record = 0x0092; # Record identifier $length = 2 + 4 * sizeof($aref); # Number of bytes to follow $ccv = sizeof($aref); # Number of RGB values to follow //$data; # The RGB data # Pack the RGB data foreach($aref as $dat) { $data .= call_user_func_array('pack', array_merge(array("CCCC"), $dat)); } $header = pack("vvv", $record, $length, $ccv); $this->_append($header . $data); } } ?> gosa-core-2.7.4/include/utils/excel/class.writeexcel_olewriter.inc.php0000644000175000017500000002552010767572700024575 0ustar mikemike_OLEfilename = $filename; $this->_filehandle = false; $this->_fileclosed = 0; $this->_internal_fh = 0; $this->_biff_only = 0; $this->_size_allowed = 0; $this->_biffsize = 0; $this->_booksize = 0; $this->_big_blocks = 0; $this->_list_blocks = 0; $this->_root_start = 0; $this->_block_count = 4; $this->_initialize(); } /* * Check for a valid filename and store the filehandle. */ function _initialize() { $OLEfile = $this->_OLEfilename; /* Check for a filename. Workbook.pm will catch this first. */ if ($OLEfile == '') { trigger_error("Filename required", E_USER_ERROR); } /* * If the filename is a resource it is assumed that it is a valid * filehandle, if not we create a filehandle. */ if (is_resource($OLEfile)) { $fh = $OLEfile; } else { // Create a new file, open for writing $fh = fopen($OLEfile, "wb"); // The workbook class also checks this but something may have // happened since then. if (!$fh) { trigger_error("Cannot open $OLEfile! It may be in use or ". "protected.", E_USER_ERROR); } $this->_internal_fh = 1; } // Store filehandle $this->_filehandle = $fh; } /* * Set the size of the data to be written to the OLE stream * * $big_blocks = (109 depot block x (128 -1 marker word) * - (1 x end words)) = 13842 * $maxsize = $big_blocks * 512 bytes = 7087104 */ function set_size($size) { $maxsize = 7087104; if ($size > $maxsize) { trigger_error("Maximum file size, $maxsize, exceeded. To create ". "files bigger than this limit please use the ". "workbookbig class.", E_USER_ERROR); return ($this->_size_allowed = 0); } $this->_biffsize = $size; // Set the min file size to 4k to avoid having to use small blocks if ($size > 4096) { $this->_booksize = $size; } else { $this->_booksize = 4096; } return ($this->_size_allowed = 1); } /* * Calculate various sizes needed for the OLE stream */ function _calculate_sizes() { $datasize = $this->_booksize; if ($datasize % 512 == 0) { $this->_big_blocks = $datasize/512; } else { $this->_big_blocks = floor($datasize/512)+1; } // There are 127 list blocks and 1 marker blocks for each big block // depot + 1 end of chain block $this->_list_blocks = floor(($this->_big_blocks)/127)+1; $this->_root_start = $this->_big_blocks; //print $this->_biffsize. "\n"; //print $this->_big_blocks. "\n"; //print $this->_list_blocks. "\n"; } /* * Write root entry, big block list and close the filehandle. * This method must be called so that the file contents are * actually written. */ function close() { if (!$this->_size_allowed) { return; } if (!$this->_biff_only) { $this->_write_padding(); $this->_write_property_storage(); $this->_write_big_block_depot(); } // Close the filehandle if it was created internally. if ($this->_internal_fh) { fclose($this->_filehandle); } /* ABR */ if ($this->_OLEtmpfilename != '') { $fh = fopen($this->_OLEtmpfilename, "rb"); if ($fh == false) { trigger_error("Cannot read temporary file!", E_USER_ERROR); } fpassthru($fh); fclose($fh); unlink($this->_OLEtmpfilename); }; $this->_fileclosed = 1; } /* * Write BIFF data to OLE file. */ function write($data) { fputs($this->_filehandle, $data); } /* * Write OLE header block. */ function write_header() { if ($this->_biff_only) { return; } $this->_calculate_sizes(); $root_start = $this->_root_start; $num_lists = $this->_list_blocks; $id = pack("C8", 0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1); $unknown1 = pack("VVVV", 0x00, 0x00, 0x00, 0x00); $unknown2 = pack("vv", 0x3E, 0x03); $unknown3 = pack("v", -2); $unknown4 = pack("v", 0x09); $unknown5 = pack("VVV", 0x06, 0x00, 0x00); $num_bbd_blocks = pack("V", $num_lists); $root_startblock = pack("V", $root_start); $unknown6 = pack("VV", 0x00, 0x1000); $sbd_startblock = pack("V", -2); $unknown7 = pack("VVV", 0x00, -2 ,0x00); $unused = pack("V", -1); fputs($this->_filehandle, $id); fputs($this->_filehandle, $unknown1); fputs($this->_filehandle, $unknown2); fputs($this->_filehandle, $unknown3); fputs($this->_filehandle, $unknown4); fputs($this->_filehandle, $unknown5); fputs($this->_filehandle, $num_bbd_blocks); fputs($this->_filehandle, $root_startblock); fputs($this->_filehandle, $unknown6); fputs($this->_filehandle, $sbd_startblock); fputs($this->_filehandle, $unknown7); for ($c=1;$c<=$num_lists;$c++) { $root_start++; fputs($this->_filehandle, pack("V", $root_start)); } for ($c=$num_lists;$c<=108;$c++) { fputs($this->_filehandle, $unused); } } /* * Write big block depot. */ function _write_big_block_depot() { $num_blocks = $this->_big_blocks; $num_lists = $this->_list_blocks; $total_blocks = $num_lists * 128; $used_blocks = $num_blocks + $num_lists + 2; $marker = pack("V", -3); $end_of_chain = pack("V", -2); $unused = pack("V", -1); for ($i=1;$i<=($num_blocks-1);$i++) { fputs($this->_filehandle, pack("V", $i)); } fputs($this->_filehandle, $end_of_chain); fputs($this->_filehandle, $end_of_chain); for ($c=1;$c<=$num_lists;$c++) { fputs($this->_filehandle, $marker); } for ($c=$used_blocks;$c<=$total_blocks;$c++) { fputs($this->_filehandle, $unused); } } /* * Write property storage. TODO: add summary sheets */ function _write_property_storage() { $rootsize = -2; $booksize = $this->_booksize; // name type dir start size $this->_write_pps('Root Entry', 0x05, 1, -2, 0x00); $this->_write_pps('Book', 0x02, -1, 0x00, $booksize); $this->_write_pps('', 0x00, -1, 0x00, 0x0000); $this->_write_pps('', 0x00, -1, 0x00, 0x0000); } /* * Write property sheet in property storage */ function _write_pps($name, $type, $dir, $start, $size) { $names = array(); $length = 0; if ($name != '') { $name = $name . "\0"; // Simulate a Unicode string $chars=preg_split("''", $name, -1, PREG_SPLIT_NO_EMPTY); foreach ($chars as $char) { array_push($names, ord($char)); } $length = strlen($name) * 2; } $rawname = call_user_func_array('pack', array_merge(array("v*"), $names)); $zero = pack("C", 0); $pps_sizeofname = pack("v", $length); //0x40 $pps_type = pack("v", $type); //0x42 $pps_prev = pack("V", -1); //0x44 $pps_next = pack("V", -1); //0x48 $pps_dir = pack("V", $dir); //0x4c $unknown1 = pack("V", 0); $pps_ts1s = pack("V", 0); //0x64 $pps_ts1d = pack("V", 0); //0x68 $pps_ts2s = pack("V", 0); //0x6c $pps_ts2d = pack("V", 0); //0x70 $pps_sb = pack("V", $start); //0x74 $pps_size = pack("V", $size); //0x78 fputs($this->_filehandle, $rawname); fputs($this->_filehandle, str_repeat($zero, (64-$length))); fputs($this->_filehandle, $pps_sizeofname); fputs($this->_filehandle, $pps_type); fputs($this->_filehandle, $pps_prev); fputs($this->_filehandle, $pps_next); fputs($this->_filehandle, $pps_dir); fputs($this->_filehandle, str_repeat($unknown1, 5)); fputs($this->_filehandle, $pps_ts1s); fputs($this->_filehandle, $pps_ts1d); fputs($this->_filehandle, $pps_ts2d); fputs($this->_filehandle, $pps_ts2d); fputs($this->_filehandle, $pps_sb); fputs($this->_filehandle, $pps_size); fputs($this->_filehandle, $unknown1); } /* * Pad the end of the file */ function _write_padding() { $biffsize = $this->_biffsize; if ($biffsize < 4096) { $min_size = 4096; } else { $min_size = 512; } if ($biffsize % $min_size != 0) { $padding = $min_size - ($biffsize % $min_size); fputs($this->_filehandle, str_repeat("\0", $padding)); } } } ?> gosa-core-2.7.4/include/utils/excel/class.writeexcel_formula.inc.php0000644000175000017500000015556311327534170024231 0ustar mikemike"); // @const SPREADSHEET_EXCEL_WRITER_GT token identifier for character ">" define('SPREADSHEET_EXCEL_WRITER_LT',"<"); // @const SPREADSHEET_EXCEL_WRITER_LT token identifier for character "<" define('SPREADSHEET_EXCEL_WRITER_LE',"<="); // @const SPREADSHEET_EXCEL_WRITER_LE token identifier for character "<=" define('SPREADSHEET_EXCEL_WRITER_GE',">="); // @const SPREADSHEET_EXCEL_WRITER_GE token identifier for character ">=" define('SPREADSHEET_EXCEL_WRITER_EQ',"="); // @const SPREADSHEET_EXCEL_WRITER_EQ token identifier for character "=" define('SPREADSHEET_EXCEL_WRITER_NE',"<>"); // @const SPREADSHEET_EXCEL_WRITER_NE token identifier for character "<>" class writeexcel_formula { ############################################################################### # # Class data. # var $parser; var $ptg; var $_functions; var $_current_char; var $_current_token; var $_lookahead; var $_debug; var $_byte_order; var $_volatile; var $_workbook; var $_ext_sheets; var $_formula; ############################################################################### # # new() # # Constructor # function writeexcel_formula($byte_order) { $this->parser = false; $this->ptg = array(); $this->_functions = array(); $this->_debug = 0; $this->_byte_order = $byte_order; $this->_volatile = 0; $this->_workbook = ""; $this->_ext_sheets = array(); $this->_current_token = ''; $this->_lookahead = ''; $this->_current_char = 0; $this->_formula = ''; } ############################################################################### # # _init_parser() # # There is a small overhead involved in generating the parser. Therefore, the # initialisation is delayed until a formula is required. TODO: use a pre- # compiled header. # function _init_parser() { $this->_initializeHashes(); if ($this->_debug) { print "Init_parser.\n\n"; } } ############################################################################### # # parse_formula() # # This is the only public method. It takes a textual description of a formula # and returns a RPN encoded byte string. # function parse_formula() { $_=func_get_args(); # Initialise the parser if this is the first call if ($this->parser===false) { $this->_init_parser(); } $formula = array_shift($_); //$str; //$tokens; if ($this->_debug) { print "$formula\n"; } # Build the parse tree for the formula $this->_formula = $formula; $this->_current_char = 0; $this->_lookahead = $this->_formula{1}; $this->_advance($formula); $parsetree = $this->_condition(); $str = $this->toReversePolish($parsetree); return $str; } function set_ext_sheet($key, $value) { $this->_ext_sheets->$key = $value; } function isError($data) { return (bool)(is_object($data) && (get_class($data) == 'pear_error' || is_subclass_of($data, 'pear_error'))); } /** * Class for parsing Excel formulas * * @author Xavier Noguer * @category FileFormats * @package Spreadsheet_Excel_Writer */ /** * Initialize the ptg and function hashes. * * @access private */ function _initializeHashes() { // The Excel ptg indices $this->ptg = array( 'ptgExp' => 0x01, 'ptgTbl' => 0x02, 'ptgAdd' => 0x03, 'ptgSub' => 0x04, 'ptgMul' => 0x05, 'ptgDiv' => 0x06, 'ptgPower' => 0x07, 'ptgConcat' => 0x08, 'ptgLT' => 0x09, 'ptgLE' => 0x0A, 'ptgEQ' => 0x0B, 'ptgGE' => 0x0C, 'ptgGT' => 0x0D, 'ptgNE' => 0x0E, 'ptgIsect' => 0x0F, 'ptgUnion' => 0x10, 'ptgRange' => 0x11, 'ptgUplus' => 0x12, 'ptgUminus' => 0x13, 'ptgPercent' => 0x14, 'ptgParen' => 0x15, 'ptgMissArg' => 0x16, 'ptgStr' => 0x17, 'ptgAttr' => 0x19, 'ptgSheet' => 0x1A, 'ptgEndSheet' => 0x1B, 'ptgErr' => 0x1C, 'ptgBool' => 0x1D, 'ptgInt' => 0x1E, 'ptgNum' => 0x1F, 'ptgArray' => 0x20, 'ptgFunc' => 0x21, 'ptgFuncVar' => 0x22, 'ptgName' => 0x23, 'ptgRef' => 0x24, 'ptgArea' => 0x25, 'ptgMemArea' => 0x26, 'ptgMemErr' => 0x27, 'ptgMemNoMem' => 0x28, 'ptgMemFunc' => 0x29, 'ptgRefErr' => 0x2A, 'ptgAreaErr' => 0x2B, 'ptgRefN' => 0x2C, 'ptgAreaN' => 0x2D, 'ptgMemAreaN' => 0x2E, 'ptgMemNoMemN' => 0x2F, 'ptgNameX' => 0x39, 'ptgRef3d' => 0x3A, 'ptgArea3d' => 0x3B, 'ptgRefErr3d' => 0x3C, 'ptgAreaErr3d' => 0x3D, 'ptgArrayV' => 0x40, 'ptgFuncV' => 0x41, 'ptgFuncVarV' => 0x42, 'ptgNameV' => 0x43, 'ptgRefV' => 0x44, 'ptgAreaV' => 0x45, 'ptgMemAreaV' => 0x46, 'ptgMemErrV' => 0x47, 'ptgMemNoMemV' => 0x48, 'ptgMemFuncV' => 0x49, 'ptgRefErrV' => 0x4A, 'ptgAreaErrV' => 0x4B, 'ptgRefNV' => 0x4C, 'ptgAreaNV' => 0x4D, 'ptgMemAreaNV' => 0x4E, 'ptgMemNoMemN' => 0x4F, 'ptgFuncCEV' => 0x58, 'ptgNameXV' => 0x59, 'ptgRef3dV' => 0x5A, 'ptgArea3dV' => 0x5B, 'ptgRefErr3dV' => 0x5C, 'ptgAreaErr3d' => 0x5D, 'ptgArrayA' => 0x60, 'ptgFuncA' => 0x61, 'ptgFuncVarA' => 0x62, 'ptgNameA' => 0x63, 'ptgRefA' => 0x64, 'ptgAreaA' => 0x65, 'ptgMemAreaA' => 0x66, 'ptgMemErrA' => 0x67, 'ptgMemNoMemA' => 0x68, 'ptgMemFuncA' => 0x69, 'ptgRefErrA' => 0x6A, 'ptgAreaErrA' => 0x6B, 'ptgRefNA' => 0x6C, 'ptgAreaNA' => 0x6D, 'ptgMemAreaNA' => 0x6E, 'ptgMemNoMemN' => 0x6F, 'ptgFuncCEA' => 0x78, 'ptgNameXA' => 0x79, 'ptgRef3dA' => 0x7A, 'ptgArea3dA' => 0x7B, 'ptgRefErr3dA' => 0x7C, 'ptgAreaErr3d' => 0x7D ); // Thanks to Michael Meeks and Gnumeric for the initial arg values. // // The following hash was generated by "function_locale.pl" in the distro. // Refer to function_locale.pl for non-English function names. // // The array elements are as follow: // ptg: The Excel function ptg code. // args: The number of arguments that the function takes: // >=0 is a fixed number of arguments. // -1 is a variable number of arguments. // class: The reference, value or array class of the function args. // vol: The function is volatile. // $this->_functions = array( // function ptg args class vol 'COUNT' => array( 0, -1, 0, 0 ), 'IF' => array( 1, -1, 1, 0 ), 'ISNA' => array( 2, 1, 1, 0 ), 'ISERROR' => array( 3, 1, 1, 0 ), 'SUM' => array( 4, -1, 0, 0 ), 'AVERAGE' => array( 5, -1, 0, 0 ), 'MIN' => array( 6, -1, 0, 0 ), 'MAX' => array( 7, -1, 0, 0 ), 'ROW' => array( 8, -1, 0, 0 ), 'COLUMN' => array( 9, -1, 0, 0 ), 'NA' => array( 10, 0, 0, 0 ), 'NPV' => array( 11, -1, 1, 0 ), 'STDEV' => array( 12, -1, 0, 0 ), 'DOLLAR' => array( 13, -1, 1, 0 ), 'FIXED' => array( 14, -1, 1, 0 ), 'SIN' => array( 15, 1, 1, 0 ), 'COS' => array( 16, 1, 1, 0 ), 'TAN' => array( 17, 1, 1, 0 ), 'ATAN' => array( 18, 1, 1, 0 ), 'PI' => array( 19, 0, 1, 0 ), 'SQRT' => array( 20, 1, 1, 0 ), 'EXP' => array( 21, 1, 1, 0 ), 'LN' => array( 22, 1, 1, 0 ), 'LOG10' => array( 23, 1, 1, 0 ), 'ABS' => array( 24, 1, 1, 0 ), 'INT' => array( 25, 1, 1, 0 ), 'SIGN' => array( 26, 1, 1, 0 ), 'ROUND' => array( 27, 2, 1, 0 ), 'LOOKUP' => array( 28, -1, 0, 0 ), 'INDEX' => array( 29, -1, 0, 1 ), 'REPT' => array( 30, 2, 1, 0 ), 'MID' => array( 31, 3, 1, 0 ), 'LEN' => array( 32, 1, 1, 0 ), 'VALUE' => array( 33, 1, 1, 0 ), 'TRUE' => array( 34, 0, 1, 0 ), 'FALSE' => array( 35, 0, 1, 0 ), 'AND' => array( 36, -1, 0, 0 ), 'OR' => array( 37, -1, 0, 0 ), 'NOT' => array( 38, 1, 1, 0 ), 'MOD' => array( 39, 2, 1, 0 ), 'DCOUNT' => array( 40, 3, 0, 0 ), 'DSUM' => array( 41, 3, 0, 0 ), 'DAVERAGE' => array( 42, 3, 0, 0 ), 'DMIN' => array( 43, 3, 0, 0 ), 'DMAX' => array( 44, 3, 0, 0 ), 'DSTDEV' => array( 45, 3, 0, 0 ), 'VAR' => array( 46, -1, 0, 0 ), 'DVAR' => array( 47, 3, 0, 0 ), 'TEXT' => array( 48, 2, 1, 0 ), 'LINEST' => array( 49, -1, 0, 0 ), 'TREND' => array( 50, -1, 0, 0 ), 'LOGEST' => array( 51, -1, 0, 0 ), 'GROWTH' => array( 52, -1, 0, 0 ), 'PV' => array( 56, -1, 1, 0 ), 'FV' => array( 57, -1, 1, 0 ), 'NPER' => array( 58, -1, 1, 0 ), 'PMT' => array( 59, -1, 1, 0 ), 'RATE' => array( 60, -1, 1, 0 ), 'MIRR' => array( 61, 3, 0, 0 ), 'IRR' => array( 62, -1, 0, 0 ), 'RAND' => array( 63, 0, 1, 1 ), 'MATCH' => array( 64, -1, 0, 0 ), 'DATE' => array( 65, 3, 1, 0 ), 'TIME' => array( 66, 3, 1, 0 ), 'DAY' => array( 67, 1, 1, 0 ), 'MONTH' => array( 68, 1, 1, 0 ), 'YEAR' => array( 69, 1, 1, 0 ), 'WEEKDAY' => array( 70, -1, 1, 0 ), 'HOUR' => array( 71, 1, 1, 0 ), 'MINUTE' => array( 72, 1, 1, 0 ), 'SECOND' => array( 73, 1, 1, 0 ), 'NOW' => array( 74, 0, 1, 1 ), 'AREAS' => array( 75, 1, 0, 1 ), 'ROWS' => array( 76, 1, 0, 1 ), 'COLUMNS' => array( 77, 1, 0, 1 ), 'OFFSET' => array( 78, -1, 0, 1 ), 'SEARCH' => array( 82, -1, 1, 0 ), 'TRANSPOSE' => array( 83, 1, 1, 0 ), 'TYPE' => array( 86, 1, 1, 0 ), 'ATAN2' => array( 97, 2, 1, 0 ), 'ASIN' => array( 98, 1, 1, 0 ), 'ACOS' => array( 99, 1, 1, 0 ), 'CHOOSE' => array( 100, -1, 1, 0 ), 'HLOOKUP' => array( 101, -1, 0, 0 ), 'VLOOKUP' => array( 102, -1, 0, 0 ), 'ISREF' => array( 105, 1, 0, 0 ), 'LOG' => array( 109, -1, 1, 0 ), 'CHAR' => array( 111, 1, 1, 0 ), 'LOWER' => array( 112, 1, 1, 0 ), 'UPPER' => array( 113, 1, 1, 0 ), 'PROPER' => array( 114, 1, 1, 0 ), 'LEFT' => array( 115, -1, 1, 0 ), 'RIGHT' => array( 116, -1, 1, 0 ), 'EXACT' => array( 117, 2, 1, 0 ), 'TRIM' => array( 118, 1, 1, 0 ), 'REPLACE' => array( 119, 4, 1, 0 ), 'SUBSTITUTE' => array( 120, -1, 1, 0 ), 'CODE' => array( 121, 1, 1, 0 ), 'FIND' => array( 124, -1, 1, 0 ), 'CELL' => array( 125, -1, 0, 1 ), 'ISERR' => array( 126, 1, 1, 0 ), 'ISTEXT' => array( 127, 1, 1, 0 ), 'ISNUMBER' => array( 128, 1, 1, 0 ), 'ISBLANK' => array( 129, 1, 1, 0 ), 'T' => array( 130, 1, 0, 0 ), 'N' => array( 131, 1, 0, 0 ), 'DATEVALUE' => array( 140, 1, 1, 0 ), 'TIMEVALUE' => array( 141, 1, 1, 0 ), 'SLN' => array( 142, 3, 1, 0 ), 'SYD' => array( 143, 4, 1, 0 ), 'DDB' => array( 144, -1, 1, 0 ), 'INDIRECT' => array( 148, -1, 1, 1 ), 'CALL' => array( 150, -1, 1, 0 ), 'CLEAN' => array( 162, 1, 1, 0 ), 'MDETERM' => array( 163, 1, 2, 0 ), 'MINVERSE' => array( 164, 1, 2, 0 ), 'MMULT' => array( 165, 2, 2, 0 ), 'IPMT' => array( 167, -1, 1, 0 ), 'PPMT' => array( 168, -1, 1, 0 ), 'COUNTA' => array( 169, -1, 0, 0 ), 'PRODUCT' => array( 183, -1, 0, 0 ), 'FACT' => array( 184, 1, 1, 0 ), 'DPRODUCT' => array( 189, 3, 0, 0 ), 'ISNONTEXT' => array( 190, 1, 1, 0 ), 'STDEVP' => array( 193, -1, 0, 0 ), 'VARP' => array( 194, -1, 0, 0 ), 'DSTDEVP' => array( 195, 3, 0, 0 ), 'DVARP' => array( 196, 3, 0, 0 ), 'TRUNC' => array( 197, -1, 1, 0 ), 'ISLOGICAL' => array( 198, 1, 1, 0 ), 'DCOUNTA' => array( 199, 3, 0, 0 ), 'ROUNDUP' => array( 212, 2, 1, 0 ), 'ROUNDDOWN' => array( 213, 2, 1, 0 ), 'RANK' => array( 216, -1, 0, 0 ), 'ADDRESS' => array( 219, -1, 1, 0 ), 'DAYS360' => array( 220, -1, 1, 0 ), 'TODAY' => array( 221, 0, 1, 1 ), 'VDB' => array( 222, -1, 1, 0 ), 'MEDIAN' => array( 227, -1, 0, 0 ), 'SUMPRODUCT' => array( 228, -1, 2, 0 ), 'SINH' => array( 229, 1, 1, 0 ), 'COSH' => array( 230, 1, 1, 0 ), 'TANH' => array( 231, 1, 1, 0 ), 'ASINH' => array( 232, 1, 1, 0 ), 'ACOSH' => array( 233, 1, 1, 0 ), 'ATANH' => array( 234, 1, 1, 0 ), 'DGET' => array( 235, 3, 0, 0 ), 'INFO' => array( 244, 1, 1, 1 ), 'DB' => array( 247, -1, 1, 0 ), 'FREQUENCY' => array( 252, 2, 0, 0 ), 'ERROR.TYPE' => array( 261, 1, 1, 0 ), 'REGISTER.ID' => array( 267, -1, 1, 0 ), 'AVEDEV' => array( 269, -1, 0, 0 ), 'BETADIST' => array( 270, -1, 1, 0 ), 'GAMMALN' => array( 271, 1, 1, 0 ), 'BETAINV' => array( 272, -1, 1, 0 ), 'BINOMDIST' => array( 273, 4, 1, 0 ), 'CHIDIST' => array( 274, 2, 1, 0 ), 'CHIINV' => array( 275, 2, 1, 0 ), 'COMBIN' => array( 276, 2, 1, 0 ), 'CONFIDENCE' => array( 277, 3, 1, 0 ), 'CRITBINOM' => array( 278, 3, 1, 0 ), 'EVEN' => array( 279, 1, 1, 0 ), 'EXPONDIST' => array( 280, 3, 1, 0 ), 'FDIST' => array( 281, 3, 1, 0 ), 'FINV' => array( 282, 3, 1, 0 ), 'FISHER' => array( 283, 1, 1, 0 ), 'FISHERINV' => array( 284, 1, 1, 0 ), 'FLOOR' => array( 285, 2, 1, 0 ), 'GAMMADIST' => array( 286, 4, 1, 0 ), 'GAMMAINV' => array( 287, 3, 1, 0 ), 'CEILING' => array( 288, 2, 1, 0 ), 'HYPGEOMDIST' => array( 289, 4, 1, 0 ), 'LOGNORMDIST' => array( 290, 3, 1, 0 ), 'LOGINV' => array( 291, 3, 1, 0 ), 'NEGBINOMDIST' => array( 292, 3, 1, 0 ), 'NORMDIST' => array( 293, 4, 1, 0 ), 'NORMSDIST' => array( 294, 1, 1, 0 ), 'NORMINV' => array( 295, 3, 1, 0 ), 'NORMSINV' => array( 296, 1, 1, 0 ), 'STANDARDIZE' => array( 297, 3, 1, 0 ), 'ODD' => array( 298, 1, 1, 0 ), 'PERMUT' => array( 299, 2, 1, 0 ), 'POISSON' => array( 300, 3, 1, 0 ), 'TDIST' => array( 301, 3, 1, 0 ), 'WEIBULL' => array( 302, 4, 1, 0 ), 'SUMXMY2' => array( 303, 2, 2, 0 ), 'SUMX2MY2' => array( 304, 2, 2, 0 ), 'SUMX2PY2' => array( 305, 2, 2, 0 ), 'CHITEST' => array( 306, 2, 2, 0 ), 'CORREL' => array( 307, 2, 2, 0 ), 'COVAR' => array( 308, 2, 2, 0 ), 'FORECAST' => array( 309, 3, 2, 0 ), 'FTEST' => array( 310, 2, 2, 0 ), 'INTERCEPT' => array( 311, 2, 2, 0 ), 'PEARSON' => array( 312, 2, 2, 0 ), 'RSQ' => array( 313, 2, 2, 0 ), 'STEYX' => array( 314, 2, 2, 0 ), 'SLOPE' => array( 315, 2, 2, 0 ), 'TTEST' => array( 316, 4, 2, 0 ), 'PROB' => array( 317, -1, 2, 0 ), 'DEVSQ' => array( 318, -1, 0, 0 ), 'GEOMEAN' => array( 319, -1, 0, 0 ), 'HARMEAN' => array( 320, -1, 0, 0 ), 'SUMSQ' => array( 321, -1, 0, 0 ), 'KURT' => array( 322, -1, 0, 0 ), 'SKEW' => array( 323, -1, 0, 0 ), 'ZTEST' => array( 324, -1, 0, 0 ), 'LARGE' => array( 325, 2, 0, 0 ), 'SMALL' => array( 326, 2, 0, 0 ), 'QUARTILE' => array( 327, 2, 0, 0 ), 'PERCENTILE' => array( 328, 2, 0, 0 ), 'PERCENTRANK' => array( 329, -1, 0, 0 ), 'MODE' => array( 330, -1, 2, 0 ), 'TRIMMEAN' => array( 331, 2, 0, 0 ), 'TINV' => array( 332, 2, 1, 0 ), 'CONCATENATE' => array( 336, -1, 1, 0 ), 'POWER' => array( 337, 2, 1, 0 ), 'RADIANS' => array( 342, 1, 1, 0 ), 'DEGREES' => array( 343, 1, 1, 0 ), 'SUBTOTAL' => array( 344, -1, 0, 0 ), 'SUMIF' => array( 345, -1, 0, 0 ), 'COUNTIF' => array( 346, 2, 0, 0 ), 'COUNTBLANK' => array( 347, 1, 0, 0 ), 'ROMAN' => array( 354, -1, 1, 0 ) ); } /** * Convert a token to the proper ptg value. * * @access private * @param mixed $token The token to convert. * @return mixed the converted token on success. PEAR_Error if the token * is not recognized */ function _convert($token) { if (preg_match("/^\"[^\"]{0,255}\"$/", $token)) { return $this->_convertString($token); } elseif (is_numeric($token)) { return $this->_convertNumber($token); } // match references like A1 or $A$1 elseif (preg_match('/^\$?([A-Ia-i]?[A-Za-z])\$?(\d+)$/',$token)) { return $this->_convertRef2d($token); } // match external references like Sheet1:Sheet2!A1 elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-Ia-i]?[A-Za-z](\d+)$/",$token)) { return $this->_convertRef3d($token); } // match ranges like A1:B2 elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\:(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) { return $this->_convertRange2d($token); } // match ranges like A1..B2 elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/",$token)) { return $this->_convertRange2d($token); } // match external ranges like Sheet1:Sheet2!A1:B2 elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/",$token)) { return $this->_convertRange3d($token); } // match external ranges like 'Sheet1:Sheet2'!A1:B2 elseif (preg_match("/^'[A-Za-z0-9_ ]+(\:[A-Za-z0-9_ ]+)?'\!([A-Ia-i]?[A-Za-z])?(\d+)\:([A-Ia-i]?[A-Za-z])?(\d+)$/",$token)) { return $this->_convertRange3d($token); } elseif (isset($this->ptg[$token])) // operators (including parentheses) { return pack("C", $this->ptg[$token]); } // commented so argument number can be processed correctly. See toReversePolish(). /*elseif (preg_match("/[A-Z0-9\xc0-\xdc\.]+/",$token)) { return($this->_convertFunction($token,$this->_func_args)); }*/ // if it's an argument, ignore the token (the argument remains) elseif ($token == 'arg') { return ''; } // TODO: use real error codes trigger_error("Unknown token $token", E_USER_ERROR); } /** * Convert a number token to ptgInt or ptgNum * * @access private * @param mixed $num an integer or double for conversion to its ptg value */ function _convertNumber($num) { // Integer in the range 0..2**16-1 if ((preg_match("/^\d+$/",$num)) and ($num <= 65535)) { return(pack("Cv", $this->ptg['ptgInt'], $num)); } else { // A float if ($this->_byte_order) { // if it's Big Endian $num = strrev($num); } return pack("Cd", $this->ptg['ptgNum'], $num); } } /** * Convert a string token to ptgStr * * @access private * @param string $string A string for conversion to its ptg value */ function _convertString($string) { // chop away beggining and ending quotes $string = substr($string, 1, strlen($string) - 2); return pack("CC", $this->ptg['ptgStr'], strlen($string)).$string; } /** * Convert a function to a ptgFunc or ptgFuncVarV depending on the number of * args that it takes. * * @access private * @param string $token The name of the function for convertion to ptg value. * @param integer $num_args The number of arguments the function receives. * @return string The packed ptg for the function */ function _convertFunction($token, $num_args) { $args = $this->_functions[$token][1]; $volatile = $this->_functions[$token][3]; // Fixed number of args eg. TIME($i,$j,$k). if ($args >= 0) { return pack("Cv", $this->ptg['ptgFuncV'], $this->_functions[$token][0]); } // Variable number of args eg. SUM($i,$j,$k, ..). if ($args == -1) { return pack("CCv", $this->ptg['ptgFuncVarV'], $num_args, $this->_functions[$token][0]); } } /** * Convert an Excel range such as A1:D4 to a ptgRefV. * * @access private * @param string $range An Excel range in the A1:A2 or A1..A2 format. */ function _convertRange2d($range) { $class = 2; // as far as I know, this is magick. // Split the range into 2 cell refs if (preg_match("/^([A-Ia-i]?[A-Za-z])(\d+)\:([A-Ia-i]?[A-Za-z])(\d+)$/",$range)) { list($cell1, $cell2) = explode(':', $range); } elseif (preg_match("/^([A-Ia-i]?[A-Za-z])(\d+)\.\.([A-Ia-i]?[A-Za-z])(\d+)$/",$range)) { list($cell1, $cell2) = explode('..', $range); } else { // TODO: use real error codes trigger_error("Unknown range separator", E_USER_ERROR); } // Convert the cell references $cell_array1 = $this->_cellToPackedRowcol($cell1); if ($this->isError($cell_array1)) { return $cell_array1; } list($row1, $col1) = $cell_array1; $cell_array2 = $this->_cellToPackedRowcol($cell2); if ($this->isError($cell_array2)) { return $cell_array2; } list($row2, $col2) = $cell_array2; // The ptg value depends on the class of the ptg. if ($class == 0) { $ptgArea = pack("C", $this->ptg['ptgArea']); } elseif ($class == 1) { $ptgArea = pack("C", $this->ptg['ptgAreaV']); } elseif ($class == 2) { $ptgArea = pack("C", $this->ptg['ptgAreaA']); } else { // TODO: use real error codes trigger_error("Unknown class $class", E_USER_ERROR); } return $ptgArea . $row1 . $row2 . $col1. $col2; } /** * Convert an Excel 3d range such as "Sheet1!A1:D4" or "Sheet1:Sheet2!A1:D4" to * a ptgArea3dV. * * @access private * @param string $token An Excel range in the Sheet1!A1:A2 format. */ function _convertRange3d($token) { $class = 2; // as far as I know, this is magick. // Split the ref at the ! symbol list($ext_ref, $range) = explode('!', $token); // Convert the external reference part $ext_ref = $this->_packExtRef($ext_ref); if ($this->isError($ext_ref)) { return $ext_ref; } // Split the range into 2 cell refs list($cell1, $cell2) = explode(':', $range); // Convert the cell references if (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?(\d+)$/", $cell1)) { $cell_array1 = $this->_cellToPackedRowcol($cell1); if ($this->isError($cell_array1)) { return $cell_array1; } list($row1, $col1) = $cell_array1; $cell_array2 = $this->_cellToPackedRowcol($cell2); if ($this->isError($cell_array2)) { return $cell_array2; } list($row2, $col2) = $cell_array2; } else { // It's a columns range (like 26:27) $cells_array = $this->_rangeToPackedRange($cell1.':'.$cell2); if ($this->isError($cells_array)) { return $cells_array; } list($row1, $col1, $row2, $col2) = $cells_array; } // The ptg value depends on the class of the ptg. if ($class == 0) { $ptgArea = pack("C", $this->ptg['ptgArea3d']); } elseif ($class == 1) { $ptgArea = pack("C", $this->ptg['ptgArea3dV']); } elseif ($class == 2) { $ptgArea = pack("C", $this->ptg['ptgArea3dA']); } else { trigger_error("Unknown class $class", E_USER_ERROR); } return $ptgArea . $ext_ref . $row1 . $row2 . $col1. $col2; } /** * Convert an Excel reference such as A1, $B2, C$3 or $D$4 to a ptgRefV. * * @access private * @param string $cell An Excel cell reference * @return string The cell in packed() format with the corresponding ptg */ function _convertRef2d($cell) { $class = 2; // as far as I know, this is magick. // Convert the cell reference $cell_array = $this->_cellToPackedRowcol($cell); if ($this->isError($cell_array)) { return $cell_array; } list($row, $col) = $cell_array; // The ptg value depends on the class of the ptg. if ($class == 0) { $ptgRef = pack("C", $this->ptg['ptgRef']); } elseif ($class == 1) { $ptgRef = pack("C", $this->ptg['ptgRefV']); } elseif ($class == 2) { $ptgRef = pack("C", $this->ptg['ptgRefA']); } else { // TODO: use real error codes trigger_error("Unknown class $class",E_USER_ERROR); } return $ptgRef.$row.$col; } /** * Convert an Excel 3d reference such as "Sheet1!A1" or "Sheet1:Sheet2!A1" to a * ptgRef3dV. * * @access private * @param string $cell An Excel cell reference * @return string The cell in packed() format with the corresponding ptg */ function _convertRef3d($cell) { $class = 2; // as far as I know, this is magick. // Split the ref at the ! symbol list($ext_ref, $cell) = explode('!', $cell); // Convert the external reference part $ext_ref = $this->_packExtRef($ext_ref); if ($this->isError($ext_ref)) { return $ext_ref; } // Convert the cell reference part list($row, $col) = $this->_cellToPackedRowcol($cell); // The ptg value depends on the class of the ptg. if ($class == 0) { $ptgRef = pack("C", $this->ptg['ptgRef3d']); } elseif ($class == 1) { $ptgRef = pack("C", $this->ptg['ptgRef3dV']); } elseif ($class == 2) { $ptgRef = pack("C", $this->ptg['ptgRef3dA']); } else { trigger_error("Unknown class $class", E_USER_ERROR); } return $ptgRef . $ext_ref. $row . $col; } /** * Convert the sheet name part of an external reference, for example "Sheet1" or * "Sheet1:Sheet2", to a packed structure. * * @access private * @param string $ext_ref The name of the external reference * @return string The reference index in packed() format */ function _packExtRef($ext_ref) { $ext_ref = preg_replace("/^'/", '', $ext_ref); // Remove leading ' if any. $ext_ref = preg_replace("/'$/", '', $ext_ref); // Remove trailing ' if any. // Check if there is a sheet range eg., Sheet1:Sheet2. if (preg_match("/:/", $ext_ref)) { list($sheet_name1, $sheet_name2) = explode(':', $ext_ref); $sheet1 = $this->_getSheetIndex($sheet_name1); if ($sheet1 == -1) { trigger_error("Unknown sheet name $sheet_name1 in formula",E_USER_ERROR); } $sheet2 = $this->_getSheetIndex($sheet_name2); if ($sheet2 == -1) { trigger_error("Unknown sheet name $sheet_name2 in formula",E_USER_ERROR); } // Reverse max and min sheet numbers if necessary if ($sheet1 > $sheet2) { list($sheet1, $sheet2) = array($sheet2, $sheet1); } } else { // Single sheet name only. $sheet1 = $this->_getSheetIndex($ext_ref); if ($sheet1 == -1) { trigger_error("Unknown sheet name $ext_ref in formula",E_USER_ERROR); } $sheet2 = $sheet1; } // References are stored relative to 0xFFFF. $offset = -1 - $sheet1; return pack('vdvv', $offset, 0x00, $sheet1, $sheet2); } /** * Look up the index that corresponds to an external sheet name. The hash of * sheet names is updated by the addworksheet() method of the * Spreadsheet_Excel_Writer_Workbook class. * * @access private * @return integer */ function _getSheetIndex($sheet_name) { if (!isset($this->_ext_sheets[$sheet_name])) { return -1; } else { return $this->_ext_sheets[$sheet_name]; } } /** * This method is used to update the array of sheet names. It is * called by the addWorksheet() method of the Spreadsheet_Excel_Writer_Workbook class. * * @access private * @param string $name The name of the worksheet being added * @param integer $index The index of the worksheet being added */ function setExtSheet($name, $index) { $this->_ext_sheets[$name] = $index; } /** * pack() row and column into the required 3 byte format. * * @access private * @param string $cell The Excel cell reference to be packed * @return array Array containing the row and column in packed() format */ function _cellToPackedRowcol($cell) { $cell = strtoupper($cell); list($row, $col, $row_rel, $col_rel) = $this->_cellToRowcol($cell); if ($col >= 256) { trigger_error("Column in: $cell greater than 255", E_USER_ERROR); } if ($row >= 16384) { trigger_error("Row in: $cell greater than 16384 ", E_USER_ERROR); } // Set the high bits to indicate if row or col are relative. $row |= $col_rel << 14; $row |= $row_rel << 15; $row = pack('v', $row); $col = pack('C', $col); return array($row, $col); } /** * pack() row range into the required 3 byte format. * Just using maximun col/rows, which is probably not the correct solution * * @access private * @param string $range The Excel range to be packed * @return array Array containing (row1,col1,row2,col2) in packed() format */ function _rangeToPackedRange($range) { preg_match('/(\$)?(\d+)\:(\$)?(\d+)/', $range, $match); // return absolute rows if there is a $ in the ref $row1_rel = empty($match[1]) ? 1 : 0; $row1 = $match[2]; $row2_rel = empty($match[3]) ? 1 : 0; $row2 = $match[4]; // Convert 1-index to zero-index $row1--; $row2--; // Trick poor inocent Excel $col1 = 0; $col2 = 16383; // maximum possible value for Excel 5 (change this!!!) //list($row, $col, $row_rel, $col_rel) = $this->_cellToRowcol($cell); if (($row1 >= 16384) or ($row2 >= 16384)) { trigger_error("Row in: $range greater than 16384 ",E_USER_ERROR); } // Set the high bits to indicate if rows are relative. $row1 |= $row1_rel << 14; $row2 |= $row2_rel << 15; $row1 = pack('v', $row1); $row2 = pack('v', $row2); $col1 = pack('C', $col1); $col2 = pack('C', $col2); return array($row1, $col1, $row2, $col2); } /** * Convert an Excel cell reference such as A1 or $B2 or C$3 or $D$4 to a zero * indexed row and column number. Also returns two (0,1) values to indicate * whether the row or column are relative references. * * @access private * @param string $cell The Excel cell reference in A1 format. * @return array */ function _cellToRowcol($cell) { preg_match('/(\$)?([A-I]?[A-Z])(\$)?(\d+)/',$cell,$match); // return absolute column if there is a $ in the ref $col_rel = empty($match[1]) ? 1 : 0; $col_ref = $match[2]; $row_rel = empty($match[3]) ? 1 : 0; $row = $match[4]; // Convert base26 column string to a number. $expn = strlen($col_ref) - 1; $col = 0; for ($i=0; $i < strlen($col_ref); $i++) { $col += (ord($col_ref{$i}) - ord('A') + 1) * pow(26, $expn); $expn--; } // Convert 1-index to zero-index $row--; $col--; return array($row, $col, $row_rel, $col_rel); } /** * Advance to the next valid token. * * @access private */ function _advance() { $i = $this->_current_char; // eat up white spaces if ($i < strlen($this->_formula)) { while ($this->_formula{$i} == " ") { $i++; } if ($i < strlen($this->_formula) - 1) { $this->_lookahead = $this->_formula{$i+1}; } $token = ""; } while ($i < strlen($this->_formula)) { $token .= $this->_formula{$i}; if ($i < strlen($this->_formula) - 1) { $this->_lookahead = $this->_formula{$i+1}; } else { $this->_lookahead = ''; } if ($this->_match($token) != '') { //if ($i < strlen($this->_formula) - 1) { // $this->_lookahead = $this->_formula{$i+1}; //} $this->_current_char = $i + 1; $this->_current_token = $token; return 1; } if ($i < strlen($this->_formula) - 2) { $this->_lookahead = $this->_formula{$i+2}; } else { // if we run out of characters _lookahead becomes empty $this->_lookahead = ''; } $i++; } //die("Lexical error ".$this->_current_char); } /** * Checks if it's a valid token. * * @access private * @param mixed $token The token to check. * @return mixed The checked token or false on failure */ function _match($token) { switch($token) { case SPREADSHEET_EXCEL_WRITER_ADD: return($token); break; case SPREADSHEET_EXCEL_WRITER_SUB: return($token); break; case SPREADSHEET_EXCEL_WRITER_MUL: return($token); break; case SPREADSHEET_EXCEL_WRITER_DIV: return($token); break; case SPREADSHEET_EXCEL_WRITER_OPEN: return($token); break; case SPREADSHEET_EXCEL_WRITER_CLOSE: return($token); break; case SPREADSHEET_EXCEL_WRITER_SCOLON: return($token); break; case SPREADSHEET_EXCEL_WRITER_COMA: return($token); break; case SPREADSHEET_EXCEL_WRITER_GT: if ($this->_lookahead == '=') { // it's a GE token break; } return($token); break; case SPREADSHEET_EXCEL_WRITER_LT: // it's a LE or a NE token if (($this->_lookahead == '=') or ($this->_lookahead == '>')) { break; } return($token); break; case SPREADSHEET_EXCEL_WRITER_GE: return($token); break; case SPREADSHEET_EXCEL_WRITER_LE: return($token); break; case SPREADSHEET_EXCEL_WRITER_EQ: return($token); break; case SPREADSHEET_EXCEL_WRITER_NE: return($token); break; default: // if it's a reference if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/',$token) and !preg_match("/[0-9]/",$this->_lookahead) and ($this->_lookahead != ':') and ($this->_lookahead != '.') and ($this->_lookahead != '!')) { return $token; } // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1) elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-Ia-i]?[A-Za-z][0-9]+$/",$token) and !preg_match("/[0-9]/",$this->_lookahead) and ($this->_lookahead != ':') and ($this->_lookahead != '.')) { return $token; } // if it's a range (A1:A2) elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/",$token) and !preg_match("/[0-9]/",$this->_lookahead)) { return $token; } // if it's a range (A1..A2) elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/",$token) and !preg_match("/[0-9]/",$this->_lookahead)) { return $token; } // If it's an external range like Sheet1:Sheet2!A1:B2 elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/",$token) and !preg_match("/[0-9]/",$this->_lookahead)) { return $token; } // If it's an external range like 'Sheet1:Sheet2'!A1:B2 elseif (preg_match("/^'[A-Za-z0-9_ ]+(\:[A-Za-z0-9_ ]+)?'\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/",$token) and !preg_match("/[0-9]/",$this->_lookahead)) { return $token; } // If it's a number (check that it's not a sheet name or range) elseif (is_numeric($token) and (!is_numeric($token.$this->_lookahead) or ($this->_lookahead == '')) and ($this->_lookahead != '!') and ($this->_lookahead != ':')) { return $token; } // If it's a string (of maximum 255 characters) elseif (preg_match("/^\"[^\"]{0,255}\"$/",$token)) { return $token; } // if it's a function call elseif (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/i",$token) and ($this->_lookahead == "(")) { return $token; } return ''; } } /** * The parsing method. It parses a formula. * * @access public * @param string $formula The formula to parse, without the initial equal sign (=). */ function parse($formula) { $this->_current_char = 0; $this->_formula = $formula; $this->_lookahead = $formula{1}; $this->_advance(); $this->_parse_tree = $this->_condition(); if ($this->isError($this->_parse_tree)) { return $this->_parse_tree; } } /** * It parses a condition. It assumes the following rule: * Cond -> Expr [(">" | "<") Expr] * * @access private * @return mixed The parsed ptg'd tree */ function _condition() { $result = $this->_expression(); if ($this->isError($result)) { return $result; } if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_LT) { $this->_advance(); $result2 = $this->_expression(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgLT', $result, $result2); } elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_GT) { $this->_advance(); $result2 = $this->_expression(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgGT', $result, $result2); } elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_LE) { $this->_advance(); $result2 = $this->_expression(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgLE', $result, $result2); } elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_GE) { $this->_advance(); $result2 = $this->_expression(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgGE', $result, $result2); } elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_EQ) { $this->_advance(); $result2 = $this->_expression(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgEQ', $result, $result2); } elseif ($this->_current_token == SPREADSHEET_EXCEL_WRITER_NE) { $this->_advance(); $result2 = $this->_expression(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgNE', $result, $result2); } return $result; } /** * It parses a expression. It assumes the following rule: * Expr -> Term [("+" | "-") Term] * * @access private * @return mixed The parsed ptg'd tree */ function _expression() { // If it's a string return a string node if (preg_match("/^\"[^\"]{0,255}\"$/", $this->_current_token)) { $result = $this->_createTree($this->_current_token, '', ''); $this->_advance(); return $result; } $result = $this->_term(); if ($this->isError($result)) { return $result; } while (($this->_current_token == SPREADSHEET_EXCEL_WRITER_ADD) or ($this->_current_token == SPREADSHEET_EXCEL_WRITER_SUB)) { if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_ADD) { $this->_advance(); $result2 = $this->_term(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgAdd', $result, $result2); } else { $this->_advance(); $result2 = $this->_term(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgSub', $result, $result2); } } return $result; } /** * This function just introduces a ptgParen element in the tree, so that Excel * doesn't get confused when working with a parenthesized formula afterwards. * * @access private * @see _fact() * @return mixed The parsed ptg'd tree */ function _parenthesizedExpression() { $result = $this->_createTree('ptgParen', $this->_expression(), ''); return $result; } /** * It parses a term. It assumes the following rule: * Term -> Fact [("*" | "/") Fact] * * @access private * @return mixed The parsed ptg'd tree */ function _term() { $result = $this->_fact(); if ($this->isError($result)) { return $result; } while (($this->_current_token == SPREADSHEET_EXCEL_WRITER_MUL) or ($this->_current_token == SPREADSHEET_EXCEL_WRITER_DIV)) { if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_MUL) { $this->_advance(); $result2 = $this->_fact(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgMul', $result, $result2); } else { $this->_advance(); $result2 = $this->_fact(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('ptgDiv', $result, $result2); } } return $result; } /** * It parses a factor. It assumes the following rule: * Fact -> ( Expr ) * | CellRef * | CellRange * | Number * | Function * * @access private * @return mixed The parsed ptg'd tree */ function _fact() { if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_OPEN) { $this->_advance(); // eat the "(" $result = $this->_parenthesizedExpression(); if ($this->_current_token != SPREADSHEET_EXCEL_WRITER_CLOSE) { trigger_error("')' token expected.",E_USER_ERROR); } $this->_advance(); // eat the ")" return $result; } if (preg_match('/^\$?[A-Ia-i]?[A-Za-z]\$?[0-9]+$/',$this->_current_token)) { // if it's a reference $result = $this->_createTree($this->_current_token, '', ''); $this->_advance(); return $result; } elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\![A-Ia-i]?[A-Za-z][0-9]+$/",$this->_current_token)) { // If it's an external reference (Sheet1!A1 or Sheet1:Sheet2!A1) $result = $this->_createTree($this->_current_token, '', ''); $this->_advance(); return $result; } elseif (preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+:(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/",$this->_current_token) or preg_match("/^(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+\.\.(\$)?[A-Ia-i]?[A-Za-z](\$)?[0-9]+$/",$this->_current_token)) { // if it's a range $result = $this->_current_token; $this->_advance(); return $result; } elseif (preg_match("/^[A-Za-z0-9_]+(\:[A-Za-z0-9_]+)?\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/",$this->_current_token)) { // If it's an external range (Sheet1!A1:B2) $result = $this->_current_token; $this->_advance(); return $result; } elseif (preg_match("/^'[A-Za-z0-9_ ]+(\:[A-Za-z0-9_ ]+)?'\!([A-Ia-i]?[A-Za-z])?[0-9]+:([A-Ia-i]?[A-Za-z])?[0-9]+$/",$this->_current_token)) { // If it's an external range ('Sheet1'!A1:B2) $result = $this->_current_token; $this->_advance(); return $result; } elseif (is_numeric($this->_current_token)) { $result = $this->_createTree($this->_current_token, '', ''); $this->_advance(); return $result; } elseif (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/i",$this->_current_token)) { // if it's a function call $result = $this->_func(); return $result; } trigger_error("Sintactic error: ".$this->_current_token.", lookahead: ". $this->_lookahead.", current char: ".$this->_current_char, E_USER_ERROR); } /** * It parses a function call. It assumes the following rule: * Func -> ( Expr [,Expr]* ) * * @access private */ function _func() { $num_args = 0; // number of arguments received $function = $this->_current_token; $this->_advance(); $this->_advance(); // eat the "(" while ($this->_current_token != ')') { if ($num_args > 0) { if ($this->_current_token == SPREADSHEET_EXCEL_WRITER_COMA || $this->_current_token == SPREADSHEET_EXCEL_WRITER_SCOLON) { $this->_advance(); // eat the "," } else { trigger_error("Sintactic error: coma expected in ". "function $function, {$num_args}º arg", E_USER_ERROR); } $result2 = $this->_condition(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('arg', $result, $result2); } else { // first argument $result2 = $this->_condition(); if ($this->isError($result2)) { return $result2; } $result = $this->_createTree('arg', '', $result2); } $num_args++; } $args = $this->_functions[$function][1]; // If fixed number of args eg. TIME($i,$j,$k). Check that the number of args is valid. if (($args >= 0) and ($args != $num_args)) { trigger_error("Incorrect number of arguments in function $function() ",E_USER_ERROR); } $result = $this->_createTree($function, $result, $num_args); $this->_advance(); // eat the ")" return $result; } /** * Creates a tree. In fact an array which may have one or two arrays (sub-trees) * as elements. * * @access private * @param mixed $value The value of this node. * @param mixed $left The left array (sub-tree) or a final node. * @param mixed $right The right array (sub-tree) or a final node. */ function _createTree($value, $left, $right) { return(array('value' => $value, 'left' => $left, 'right' => $right)); } /** * Builds a string containing the tree in reverse polish notation (What you * would use in a HP calculator stack). * The following tree: * * + * / \ * 2 3 * * produces: "23+" * * The following tree: * * + * / \ * 3 * * / \ * 6 A1 * * produces: "36A1*+" * * In fact all operands, functions, references, etc... are written as ptg's * * @access public * @param array $tree The optional tree to convert. * @return string The tree in reverse polish notation */ function toReversePolish($tree = array()) { $polish = ""; // the string we are going to return if (empty($tree)) { // If it's the first call use _parse_tree $tree = $this->_parse_tree; } if (is_array($tree['left'])) { $converted_tree = $this->toReversePolish($tree['left']); if ($this->isError($converted_tree)) { return $converted_tree; } $polish .= $converted_tree; } elseif ($tree['left'] != '') { // It's a final node $converted_tree = $this->_convert($tree['left']); if ($this->isError($converted_tree)) { return $converted_tree; } $polish .= $converted_tree; } if (is_array($tree['right'])) { $converted_tree = $this->toReversePolish($tree['right']); if ($this->isError($converted_tree)) { return $converted_tree; } $polish .= $converted_tree; } elseif ($tree['right'] != '') { // It's a final node $converted_tree = $this->_convert($tree['right']); if ($this->isError($converted_tree)) { return $converted_tree; } $polish .= $converted_tree; } // if it's a function convert it here (so we can set it's arguments) if (preg_match("/^[A-Z0-9\xc0-\xdc\.]+$/",$tree['value']) and !preg_match('/^([A-Ia-i]?[A-Za-z])(\d+)$/',$tree['value']) and !preg_match("/^[A-Ia-i]?[A-Za-z](\d+)\.\.[A-Ia-i]?[A-Za-z](\d+)$/",$tree['value']) and !is_numeric($tree['value']) and !isset($this->ptg[$tree['value']])) { // left subtree for a function is always an array. if ($tree['left'] != '') { $left_tree = $this->toReversePolish($tree['left']); } else { $left_tree = ''; } if ($this->isError($left_tree)) { return $left_tree; } // add it's left subtree and return. return $left_tree.$this->_convertFunction($tree['value'], $tree['right']); } else { $converted_tree = $this->_convert($tree['value']); if ($this->isError($converted_tree)) { return $converted_tree; } } $polish .= $converted_tree; return $polish; } } ?> gosa-core-2.7.4/include/utils/excel/class.writeexcel_biffwriter.inc.php0000644000175000017500000001400110330363250024674 0ustar mikemikebyte_order = ''; $this->BIFF_version = 0x0500; $this->_byte_order = ''; $this->_data = false; $this->_datasize = 0; $this->_limit = 2080; $this->_set_byte_order(); } /* * Determine the byte order and store it as class data to avoid * recalculating it for each call to new(). */ function _set_byte_order() { $this->byteorder=0; // Check if "pack" gives the required IEEE 64bit float $teststr = pack("d", 1.2345); $number = pack("C8", 0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F); if ($number == $teststr) { $this->byte_order = 0; // Little Endian } elseif ($number == strrev($teststr)) { $this->byte_order = 1; // Big Endian } else { // Give up trigger_error("Required floating point format not supported ". "on this platform. See the portability section ". "of the documentation.", E_USER_ERROR); } $this->_byte_order = $this->byte_order; } /* * General storage function */ function _prepend($data) { if (func_num_args()>1) { trigger_error("writeexcel_biffwriter::_prepend() ". "called with more than one argument", E_USER_ERROR); } if ($this->_debug) { print "*** writeexcel_biffwriter::_prepend() called:"; for ($c=0;$c $this->_limit) { $data = $this->_add_continue($data); } $this->_data = $data . $this->_data; $this->_datasize += strlen($data); } /* * General storage function */ function _append($data) { if (func_num_args()>1) { trigger_error("writeexcel_biffwriter::_append() ". "called with more than one argument", E_USER_ERROR); } if ($this->_debug) { print "*** writeexcel_biffwriter::_append() called:"; for ($c=0;$c $this->_limit) { $data = $this->_add_continue($data); } $this->_data = $this->_data . $data; $this->_datasize += strlen($data); } /* * Writes Excel BOF record to indicate the beginning of a stream or * sub-stream in the BIFF file. * * $type = 0x0005, Workbook * $type = 0x0010, Worksheet */ function _store_bof($type) { $record = 0x0809; // Record identifier $length = 0x0008; // Number of bytes to follow $version = $this->BIFF_version; // According to the SDK $build and $year should be set to zero. // However, this throws a warning in Excel 5. So, use these // magic numbers. $build = 0x096C; $year = 0x07C9; $header = pack("vv", $record, $length); $data = pack("vvvv", $version, $type, $build, $year); $this->_prepend($header . $data); } /* * Writes Excel EOF record to indicate the end of a BIFF stream. */ function _store_eof() { $record = 0x000A; // Record identifier $length = 0x0000; // Number of bytes to follow $header = pack("vv", $record, $length); $this->_append($header); } /* * Excel limits the size of BIFF records. In Excel 5 the limit is 2084 * bytes. In Excel 97 the limit is 8228 bytes. Records that are longer * than these limits must be split up into CONTINUE blocks. * * This function take a long BIFF record and inserts CONTINUE records as * necessary. */ function _add_continue($data) { $limit = $this->_limit; $record = 0x003C; // Record identifier // The first 2080/8224 bytes remain intact. However, we have to change // the length field of the record. $tmp = substr($data, 0, $limit); $data = substr($data, $limit); $tmp = substr($tmp, 0, 2) . pack ("v", $limit-4) . substr($tmp, 4); // Strip out chunks of 2080/8224 bytes +4 for the header. while (strlen($data) > $limit) { $header = pack("vv", $record, $limit); $tmp .= $header; $tmp .= substr($data, 0, $limit); $data = substr($data, $limit); } // Mop up the last of the data $header = pack("vv", $record, strlen($data)); $tmp .= $header; $tmp .= $data; return $tmp; } } ?> gosa-core-2.7.4/include/class_releaseSelector.inc0000644000175000017500000002454411613731145020476 0ustar mikemikepid= preg_replace("/[^0-9]/", "", microtime(TRUE)); // Get list of used IDs if(!session::is_set('releaseSelector_USED_IDS')){ session::set('releaseSelector_USED_IDS',array()); } $usedIds = session::get('releaseSelector_USED_IDS'); // Generate instance wide unique ID $pid = ""; while($pid == "" || in_array_strict($pid, $usedIds)){ // Wait 1 msec to ensure that we definately get a new id if($pid != "") usleep(1); $tmp= gettimeofday(); $pid = 'l'.md5(microtime().$tmp['sec']); } // Only keep the last 10 list IDsi $usedIds = array_slice($usedIds, count($usedIds) -10, 10); $usedIds[] = $pid; session::set('releaseSelector_USED_IDS',$usedIds); $this->pid = $pid; // Transfer data $this->releaseBase = $releaseBase; $this->setBases($bases); $this->setBase($base); } function setSubmitButton($flag) { $this->submitButton= $flag; } function setHeight($value) { $this->height= $value; } function setBase($base) { $this->base= $base; if (isset($this->pathMapping[$base])) { $this->update(true); } } function setRootBase($base) { $this->releaseBase = $base; } function checkBase($base) { return isset($this->pathMapping[$base]); } function checkLastBaseUpdate() { return $this->lastState; } function setBases($bases) { global $config; $this->releaseInfo = array(); $this->pathMapping= array(); $selected= $this->base == $this->releaseBase?"Selected":""; $first= true; $last_indent= 2; foreach ($bases as $base => $dummy) { // Build path style display $elements= explode(',', substr($base, 0, strlen($base) - strlen($this->releaseBase))); $elements= array_reverse($elements, true); $this->pathMapping[$base]= $base == $this->releaseBase? '/' : ldap::fix(preg_replace('/(^|,)[a-z0-9]+=/i', '/', implode(',', $elements))); $this->releaseInfo[$base]['name'] = ldap::fix(preg_replace('/(^|,)[a-z0-9]+=/i', '', $elements[0])); $this->releaseInfo[$base]['description'] = $dummy; } // Save bases to session for autocompletion session::global_set('pathMapping', $this->pathMapping); session::global_set('department_info', $this->releaseInfo); } function update($force= false) { global $config; // Analyze for base changes if needed $this->action= null; $last_base= $this->base; if(isset($_REQUEST["BPID_{$this->pid}"]) && $_REQUEST["BPID_{$this->pid}"] == $this->pid) { if (isset($_POST['bs_rebase_'.$this->pid]) && !empty($_POST['bs_rebase_'.$this->pid])) { $new_base= base64_decode(get_post('bs_rebase_'.$this->pid)); if (isset($this->pathMapping[$new_base])) { $this->base= $new_base; $this->action= 'rebase'; } else { $this->lastState= false; return false; } }else{ // Input field set? if (isset($_POST['bs_input_'.$this->pid])) { // Take over input field base if ($this->submitButton && isset($_POST['submit_base_'.$this->pid]) || !$this->submitButton) { // Check if base is available $this->lastState= false; foreach ($this->pathMapping as $key => $path) { if (mb_strtolower($path) == mb_strtolower(get_post('bs_input_'.$this->pid))) { $this->base= $key; $this->lastState= true; break; } } } } } } /* Skip if there's no change */ if (($this->tree && $this->base == $last_base) && !$force) { return true; } $link= "onclick=\"\$('bs_rebase_".$this->pid."').value='".base64_encode($this->releaseBase)."'; $('submit_tree_base_".$this->pid."').click();\""; $this->tree= "pid}').hide(); \" onfocus=\" \$('bs_{$this->pid}').hide(); \" onmouseover=\" mouseIsStillOver = true; function showIt() { if(mouseIsStillOver){ \$('bs_".$this->pid."').show(); } }; Element.clonePosition(\$('bs_".$this->pid."'), 'bs_input_".$this->pid."', {setHeight: false, setWidth: false, offsetTop:(Element.getHeight('bs_input_".$this->pid."'))}); rtimer=showIt.delay(0.25); \" onmouseout=\" mouseIsStillOver=false; rtimer=Element.hide.delay(0.25,'bs_".$this->pid."')\" value=\"".preg_replace('/"/','"',$this->pathMapping[$this->base])."\">"; // Autocompleter $this->tree.= "
    ". ""; $selected= $this->base == $this->releaseBase?"Selected":""; $this->tree.= "\n"; // Draw submitter if required if ($this->submitButton) { $this->tree.= image('images/lists/submit.png', "submit_base_".$this->pid, _("Submit")); } $this->tree.= ""; $this->tree.= ""; $this->tree.= ""; $this->lastState= true; return true; } function gennonbreaks($string) { return str_replace('-', '‑', str_replace(' ', ' ', $string)); } function render() { return $this->tree; } function getBase() { return $this->base; } function getAction() { // Do not do anything if this is not our BPID, or there's even no BPID available... if(!isset($_REQUEST["BPID_{$this->pid}"]) || $_REQUEST["BPID_{$this->pid}"] != $this->pid) { return; } if ($this->action) { return array("targets" => array($this->base), "action" => $this->action); } return null; } } ?> gosa-core-2.7.4/include/class_baseSelector.inc0000644000175000017500000002253511461476537020002 0ustar mikemikepid= preg_replace("/[^0-9]/", "", microtime(TRUE)); // Transfer data $this->setBases($bases); $this->setBase($base); } function setSubmitButton($flag) { $this->submitButton= $flag; } function setHeight($value) { $this->height= $value; } function setBase($base) { if (isset($this->pathMapping[$base])) { $this->base= $base; $this->update(true); } } function checkBase($base) { return isset($this->pathMapping[$base]); } function checkLastBaseUpdate() { return $this->lastState; } function setBases($bases) { global $config; $this->pathMapping= array(); $selected= $this->base == $config->current['BASE']?"Selected":""; $first= true; $last_indent= 2; foreach ($bases as $base => $dummy) { // Build path style display $elements= explode(',', substr($base, 0, strlen($base) - strlen($config->current['BASE']))); $elements= array_reverse($elements, true); $this->pathMapping[$base]= $base == $config->current['BASE']? '/' : ldap::fix(preg_replace('/(^|,)[a-z0-9]+=/i', '/', implode(',', $elements))); $this->pathMapping[$base]= LDAP::makeReadable( $this->pathMapping[$base]); } // Save bases to session for autocompletion session::global_set("pathMapping_{$this->pid}", $this->pathMapping); session::global_set("department_info_{$this->pid}", $config->department_info); } function update($force= false) { global $config; // Analyze for base changes if needed $this->action= null; $last_base= $this->base; if(isset($_REQUEST['BPID']) && $_REQUEST['BPID'] == $this->pid) { if (isset($_POST['bs_rebase_'.$this->pid]) && !empty($_POST['bs_rebase_'.$this->pid])) { $new_base= base64_decode(get_post('bs_rebase_'.$this->pid)); if (isset($this->pathMapping[$new_base])) { $this->base= $new_base; $this->action= 'rebase'; } else { $this->lastState= false; return false; } }else{ // Input field set? if (isset($_POST['bs_input_'.$this->pid])) { // Take over input field base if ($this->submitButton && isset($_POST['submit_base_'.$this->pid]) || !$this->submitButton) { // Check if base is available $this->lastState= false; foreach ($this->pathMapping as $key => $path) { if (mb_strtolower($path) == mb_strtolower(get_post('bs_input_'.$this->pid))) { $this->base= $key; $this->lastState= true; break; } } } } } } /* Skip if there's no change */ if (($this->tree && $this->base == $last_base) && !$force) { return true; } $link= "onclick=\"\$('bs_rebase_".$this->pid."').value='".base64_encode($config->current['BASE'])."'; $('submit_tree_base_".$this->pid."').click();\""; $this->tree= "pid}').hide(); \" onfocus=\" \$('bs_{$this->pid}').hide(); \" onmouseover=\" mouseIsStillOver = true; function showIt() { if(mouseIsStillOver){ \$('bs_".$this->pid."').show(); } }; Element.clonePosition(\$('bs_".$this->pid."'), 'bs_input_".$this->pid."', {setHeight: false, setWidth: false, offsetTop:(Element.getHeight('bs_input_".$this->pid."'))}); rtimer=showIt.delay(0.25); \" onmouseout=\" mouseIsStillOver=false; rtimer=Element.hide.delay(0.25,'bs_".$this->pid."')\" value=\"".htmlentities(LDAP::makeReadable($this->pathMapping[$this->base]),ENT_COMPAT,'utf-8')."\">"; // Autocompleter $this->tree.= "
    ". ""; $selected= $this->base == $config->current['BASE']?"Selected":""; $this->tree.= "\n"; // Draw submitter if required if ($this->submitButton) { $this->tree.= image('images/lists/submit.png', "submit_base_".$this->pid, _("Submit")); } $this->tree.= ""; $this->tree.= ""; $this->tree.= ""; $this->lastState= true; return true; } function gennonbreaks($string) { return str_replace('-', '‑', str_replace(' ', ' ', $string)); } function render() { return $this->tree; } function getBase() { return $this->base; } function getAction() { // Do not do anything if this is not our BPID, or there's even no BPID available... if(!isset($_REQUEST['BPID']) || $_REQUEST['BPID'] != $this->pid) { return; } if ($this->action) { return array("targets" => array($this->base), "action" => $this->action); } return null; } } ?> gosa-core-2.7.4/include/class_core.inc0000644000175000017500000016717411750201415016306 0ustar mikemike The name of the plugin in short (e.g. Posix) * | This short-name will be shown for example in the ACL definitions. * | * | * plDescription |-> A descriptive text for the plugin (e.g. User posix account extension) * | This will be shown in the ACL definitions. * | * | * plSelfModify |-> If set to true this plugin allows to set 'self' ACLs. * | For exampe to allow to change the users own password, but not the others. * | * | * plDepends |-> The plugins dependencies to other classes (e.g. sambaAccount requires posixAccount) * | * | * plPriority |-> The priority of the plugin, this influences the ACL listings only. * | * | * plSection |-> The section of this plugin 'administration', 'personal', 'addons' * | * | * plCategory |-> The plugin category this plugins belongs to (e.g. users, groups, departments) * | * | * plRequirements |-> Plugin requirements. * | | * | |-> [activePlugin] The schame checks will only be performed if the given plugin is enabled * | | in the gosa.conf definitions. * | | Defaults to the current class name if empty. * | | * | |-> [ldapSchema] An array of objectClass requirements. * | | Syntax [[objectClass => 'version'], ... ] * | | Version can be emtpy which just checks for the existence of the class. * | | * | |-> [onFailureDisablePlugin] A list of plugins that which will be disabled if the * | requirements couldn't be fillfulled. * | * | --------------------------------------------- * | EXAMPLE: * | --------------------------------------------- * | "plRequirements"=> array( * | 'activePlugin' => 'applicationManagement', * | 'ldapSchema' => array( * | 'gosaObject' => '', * | 'gosaAccount' => '>=2.7', * | 'gosaLockEntry' => '>=2.7', * | 'gosaDepartment' => '>=2.7', * | 'gosaCacheEntry' => '>=2.7', * | 'gosaProperties' => '>=2.7', * | 'gosaConfig' => '>=2.7' * | ), * | 'onFailureDisablePlugin' => array(get_class(), 'someClassName') * | ), * | --------------------------------------------- * | * | * | * plProvidedAcls |-> The ACLs provided by this plugin * | * | --------------------------------------------- * | EXAMPLE: * | --------------------------------------------- * | "plProvidedAcls"=> array( * | 'cn' => _('Name'), * | 'uid' => _('Uid'), * | 'phoneNumber' => _('Phone number') * | ), * | --------------------------------------------- * | * | * | * plProperties |-> Properties used by the plugin. * | Properties which are defined here will be modifyable using the property editor. * | To read properties you can use $config->get_cfg_value(className, propertyName) * | * | --------------------------------------------- * | EXAMPLE: * | --------------------------------------------- * | "plProperties"=> array( * | array( * | "name" => "htaccessAuthentication", * | "type" => "bool", * | "default" => "false", * | "description" => _("A description..."), * | "check" => "gosaProperty::isBool", * | "migrate" => "", * | "group" => "authentification", * | "mandatory" => TRUE * | ), * | ), * | See class_core.inc for a huge amount of examples. */ class all extends plugin { static function plInfo() { return (array( "plShortName" => _("All"), "plDescription" => _("All objects"), "plSelfModify" => TRUE, "plDepends" => array(), "plPriority" => 0, "plSection" => array("administration"), "plCategory" => array("all" => array("description" => '* '._("All"))), "plProvidedAcls" => array()) ); } } class core extends plugin { static function getPropertyValues($class,$name,$value,$type) { $list = array(); switch($name){ case 'idAllocationMethod': $list = array('traditional' => _('Traditional'), 'pool' => _('Use samba pool')); break; case 'passwordDefaultHash': $tmp = passwordMethod::get_available_methods(); foreach($tmp['name'] as $id => $method){ $desc = $tmp[$id]['name']; $list[$method] = $desc; } break; case 'theme': $cmd = "cd ../ihtml/themes; find . -name 'img.styles' | sed s/'^[^\/]*\/\([^\/]*\).*'/'\\1'/g"; $res = `$cmd` ; $list = array(); foreach(preg_split("/\n/",$res) as $entry){ if(!empty($entry)){ $list[$entry] = $entry; } } break; case 'accountPrimaryAttribute': $list = array('uid' => 'uid', 'cn' => 'cn'); break; case 'loginAttribute': $list = array( 'uid' => 'uid', 'mail' => 'mail', 'both' => 'uid & mail'); break; case 'timezone': $tmp = timezone::_get_tz_zones(); foreach($tmp['TIMEZONES'] as $tzname => $offset){ if($offset >= 0){ $list[$tzname] = $tzname." ( + ".sprintf("%0.2f",$offset/(60*60))." "._("hours").")"; }else{ $offset = $offset * -1; $list[$tzname] = $tzname." ( - ".sprintf("%0.2f",($offset/(60*60)))." "._("hours").")"; } } break; case 'mailAttribute': $list = array('mail' => 'mail','uid' => 'uid'); break; case 'mailMethod': $tmp = array(); if(class_available('mailMethod')){ $tmp = mailMethod::get_methods(); } $list =array(); foreach($tmp as $vName => $vValue){ $vName = preg_replace('/^mailMethod/','', $vName); $list[$vName] = $vValue; } $list[''] = _("None"); break; case 'language': $tmp = get_languages(TRUE); $list[""] = _("Automatic"); foreach($tmp as $key => $desc){ $list[$key] = $desc; } break; case 'modificationDetectionAttribute': $list = array('entryCSN' => 'entryCSN (OpenLdap)','textCSN'=>'textCSN (Sun DS)'); break; default: echo $name." ";$list = array(); } if(!isset($list[$value])){ $list[$value] = $value." ("._("User value").")"; } return($list); } static function plInfo() { return (array( "plShortName" => _("Core"), "plDescription" => _("GOsa core plugin"), "plSelfModify" => FALSE, "plDepends" => array(), "plPriority" => 0, "plSection" => array("administration"), "plRequirements"=> array( 'ldapSchema' => array( 'gosaObject' => '>=2.7', 'gosaAccount' => '>=2.7', 'gosaLockEntry' => '>=2.7', 'gosaDepartment' => '>=2.7', 'gosaCacheEntry' => '>=2.7', 'gosaProperties' => '>=2.7', 'gosaConfig' => '>=2.7' ), 'onFailureDisablePlugin' => array(get_class()) ), "plCategory" => array("all"), "plProperties" => array( array( "name" => "htaccessAuthentication", "type" => "bool", "default" => "false", "description" => _("Enables htaccess instead of LDAP authentication. This can be used to enable other authentication mechanisms like Kerberos for the GOsa login."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "authentification", "mandatory" => TRUE), array( "name" => "statsDatabaseEnabled", "type" => "bool", "default" => "false", "description" => _("Enables the usage statistics module."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => TRUE), array( "name" => "statsDatabaseDirectory", "type" => "path", "default" => "/var/spool/gosa/stats", "description" => _("Database file to be used by the usage statistics module."), "check" => "gosaProperty::isWriteablePath", "migrate" => "", "group" => "core", "mandatory" => TRUE), array( "name" => "logging", "type" => "bool", "default" => "true", "description" => _("Enables event logging in GOsa. Setting it to 'On' make GOsa log every action a user performs via syslog. If you use this in combination with rsyslog and configure it to MySQL logging, you can browse all events in GOsa."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => TRUE), array( "name" => "listSummary", "type" => "bool", "default" => "true", "description" => _("Enables a status bar on the bottom of lists displaying a summary of type and number of elements in the list."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "visual", "mandatory" => FALSE), array( "name" => "passwordMinLength", "type" => "integer", "default" => "", "description" => _("Specify the minimum length for newly entered passwords."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "passwordMinDiffer", "type" => "integer", "default" => "", "description" => _("Specify the minimum number of characters that have to differ between old and newly entered passwords."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "passwordProposalHook", "type" => "command", "default" => "", "description" => _("Command to generate password proposals. If a command has been specified, the user can decide whether to use an automatic password or a manually specified one.")." "._("Example").": /usr/bin/apg -n1", "check" => "gosaProperty::isCommand", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "displayErrors", "type" => "bool", "default" => "false", "description" => _("Enable display of PHP errors on the top of the page. Disable this feature in production environments to avoid the exposure of sensitive data.")." ".sprintf(_("Related option").": developmentMode"), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "debug", "mandatory" => TRUE), array( "name" => "developmentMode", "type" => "bool", "default" => "false", "description" => _("Show messages that may assist plugin development. Be aware that this option may produce some ACL related false error messages!"), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "debug", "mandatory" => TRUE), array( "name" => "schemaCheck", "type" => "bool", "default" => "true", "description" => _("Enable LDAP schema verification during login. The recommended setting is 'On' because it enables efficient methods to create missing subtrees in the LDAP."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "debug", "mandatory" => TRUE), array( "name" => "copyPaste", "type" => "bool", "default" => "false", "description" => _("Enable copy and paste for most objects managed by GOsa."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "copyPaste", "mandatory" => TRUE), array( "name" => "forceGlobals", "type" => "noLdap", "default" => "false", "description" => _("Enable PHP security checks for disabled register_global settings."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "security", "mandatory" => TRUE), array( "name" => "forceSSL", "type" => "noLdap", "default" => "false", "description" => _("Enable automatic redirection to HTTPS based administration."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "security", "mandatory" => TRUE), array( "name" => "ldapStats", "type" => "bool", "default" => "false", "description" => _("Enable logging of detailed information of LDAP operations."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "debug", "mandatory" => FALSE), array( "name" => "ldapFollowReferrals", "type" => "bool", "default" => "false", "description" => _("Enable LDAP referral chasing."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "ldap", "mandatory" => TRUE), array( "name" => "ldapFilterNestingLimit", "type" => "integer", "default" => 200, "description" => _("Specify LDAP element filter limit. If the limit is not 0, GOsa speeds up group queries by putting several queries into a single query. This is known to produce problems on some LDAP servers (i.e. Sun DS) and needs to be lowered or disabled."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "ldap", "mandatory" => TRUE), array( "name" => "ldapSizelimit", "type" => "integer", "default" => 200, "description" => _("Specify the maximum number of entries GOsa will request from an LDAP server. A warning is displayed if this limit is exceeded."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "core", "mandatory" => TRUE), array( "name" => "ldapSizeIgnore", "type" => "bool", "default" => "false", "description" => _("Disable checks for LDAP size limits."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "warnSSL", "type" => "noLdap", "default" => "true", "description" => _("Enable warnings for non encrypted connections."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "security", "mandatory" => TRUE), array( "name" => "ppdGzip", "type" => "bool", "default" => "true", "description" => _("Enable compression for PPD files."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "ppd", "mandatory" => FALSE), array( "name" => "ignoreAcl", "type" => "dn", "default" => "", "description" => _("DN of user with ACL checks disabled. This should only be used to restore lost administrative ACLs."), "check" => "gosaProperty::isDN", "migrate" => "", "group" => "debug", "mandatory" => FALSE), array( "name" => "ppdPath", "type" => "path", "default" => "/var/spool/ppd", "description" => _("Storage path for PPD files."), "check" => "gosaProperty::isPath", "migrate" => "", "group" => "ppd", "mandatory" => FALSE), array( "name" => "ldapMaxQueryTime", "type" => "integer", "default" => "", "description" => _("Number of seconds a LDAP query is allowed to take until GOsa aborts the request."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "debug", "mandatory" => FALSE), array( "name" => "storeFilterSettings", "type" => "bool", "default" => "true", "description" => _("Enables storing of user filters in browser cookies."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "sendCompressedOutput", "type" => "bool", "default" => "true", "description" => _("Enables sending of compressed web page content."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "allowUidProposalModification", "type" => "bool", "default" => "false", "description" => _("Allows to modify uid-proposals when creating a new user from a user-template."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "modificationDetectionAttribute", "type" => "switch", "default" => "entryCSN", "defaults" => "core::getPropertyValues", "description" => _("LDAP attribute which is used to detect changes."), "check" => "", "migrate" => "", "group" => "core", "mandatory" => TRUE), array( "name" => "language", "type" => "switch", "default" => "", "defaults" => "core::getPropertyValues", "description" => _("ISO language code which is used to override the automatic language detection."), "check" => "", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "theme", "type" => "switch", "default" => "default", "defaults" => "core::getPropertyValues", "description" => _("CSS and template theme to be used."), "check" => "", "migrate" => "", "group" => "visual", "mandatory" => TRUE), array( "name" => "sessionLifetime", "type" => "integer", "default" => 600, "description" => _("Number of seconds after an inactive session expires. This may be overridden by some systems php.ini/crontab mechanism."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "security", "mandatory" => FALSE), array( "name" => "templateCompileDirectory", "type" => "path", "default" => "/var/spool/gosa", "description" => _("Template engine compile directory."), "check" => "gosaProperty::isWriteablePath", "migrate" => "", "group" => "core", "mandatory" => TRUE), array( "name" => "debugLevel", "type" => "integer", "default" => 0, "description" => sprintf(_("Logical AND of the integer values below that controls the debug output on every page load: %s"), " DEBUG_TRACE = 1 DEBUG_LDAP = 2 DEBUG_MYSQL = 4 DEBUG_SHELL = 8 DEBUG_POST = 16 DEBUG_SESSION = 32 DEBUG_CONFIG = 64 DEBUG_ACL = 128 DEBUG_SI = 256"), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "debug", "mandatory" => FALSE), array( "name" => "sambaHashHook", "type" => "command", "default" => "perl -MCrypt::SmbHash -e \"print join(q[:], ntlmgen %password), $/;\"", "description" => _("Command to create Samba NT/LM hashes. Required for password synchronization if you don't use supplementary services."), "check" => "gosaProperty::isCommand", "migrate" => "", "group" => "samba", "mandatory" => FALSE), array( "name" => "passwordDefaultHash", "type" => "switch", "default" => "crypt/md5", "defaults" => "core::getPropertyValues", "description" => _("Default hash to be used for newly created user passwords."), "check" => "", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "strictPasswordRules", "type" => "bool", "default" => "true", "description" => _("Enable checking for the presence of problematic unicode characters in passwords."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "accountPrimaryAttribute", "type" => "switch", "default" => "cn", "defaults" => "core::getPropertyValues", "description" => _("Specify whether 'cn' or 'uid' style user DNs are generated. For more sophisticated control use the 'accountRDN' setting."), "check" => "", "migrate" => "", "group" => "security", "mandatory" => TRUE), array( "name" => "userRDN", "type" => "rdn", "default" => "ou=people,", "description" => _("Location component for user storage inside of departments."), "check" => "gosaProperty::isRdn", "migrate" => "migrate_userRDN", "group" => "user", "mandatory" => FALSE), array( "name" => "groupRDN", "type" => "rdn", "default" => "ou=groups,", "description" => _("Location component for group storage inside of departments."), "check" => "gosaProperty::isRdn", "migrate" => "migrate_groupRDN", "group" => "group", "mandatory" => FALSE), array( "name" => "gidNumberBase", "type" => "integer", "default" => "1000", "description" => _("Count base for group IDs. For dynamic ID assignment use the 'nextIdHook' setting."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "id", "mandatory" => TRUE), array( "name" => "baseIdHook", "type" => "command", "default" => "", "description" => _("Count base for user IDs. For dynamic ID assignment use the 'nextIdHook' setting."), "check" => "gosaProperty::isCommand", "migrate" => "", "group" => "id", "mandatory" => FALSE), array( "name" => "gidNumberPoolMin", "type" => "integer", "default" => 10000, "description" => _("Lowest assignable group ID for use with the idAllocationMethod set to 'pool'."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "id", "mandatory" => FALSE), array( "name" => "gidNumberPoolMax", "type" => "integer", "default" => 40000, "description" => _("Highest assignable group ID for use with the idAllocationMethod set to 'pool'."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "id", "mandatory" => FALSE), array( "name" => "uidNumberPoolMin", "type" => "integer", "default" => 10000, "description" => _("Lowest assignable user ID for use with the idAllocationMethod set to 'pool'."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "id", "mandatory" => FALSE), array( "name" => "uidNumberPoolMax", "type" => "integer", "default" => 40000, "description" => _("Highest assignable user ID for use with the idAllocationMethod set to 'pool'."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "id", "mandatory" => FALSE), array( "name" => "uidNumberBase", "type" => "integer", "default" => "1000", "description" => _("Count base for user IDs. For dynamic ID assignment use the 'baseIdHook' setting."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "id", "mandatory" => FALSE), array( "name" => "gosaRpcServer", "type" => "string", "default" => "", "description" => _("Connection URL for use with the gosa-ng service."), "check" => "jsonRPC::testConnectionProperties", "migrate" => "", "group" => "rpc", "mandatory" => FALSE), array( "name" => "gosaRpcUser", "type" => "string", "default" => "admin", "description" => _("User name used to connect to the 'gosaRpcServer'."), "check" => "", "migrate" => "", "group" => "rpc", "mandatory" => FALSE), array( "name" => "gosaRpcPassword", "type" => "string", "default" => "tester", "description" => _("Password used to connect to the 'gosaRpcServer'."), "check" => "", "migrate" => "", "group" => "rpc", "mandatory" => FALSE), array( "name" => "gosaSupportURI", "type" => "string", "default" => "", "description" => _("Connection URI for use with the gosa-si service (obsolete)."), "check" => "", "migrate" => "", "group" => "gosa-si", "mandatory" => FALSE), array( "name" => "gosaSupportTimeout", "type" => "integer", "default" => 15, "description" => _("Number of seconds after a gosa-si connection is considered 'dead'."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "gosa-si", "mandatory" => FALSE), array( "name" => "loginAttribute", "type" => "switch", "default" => "uid", "defaults" => "core::getPropertyValues", "description" => _("User attribute which is used for log in."), "check" => "", "migrate" => "", "group" => "security", "mandatory" => TRUE), array( "name" => "timezone", "type" => "switch", "default" => "", "defaults" => "core::getPropertyValues", "description" => _("Local time zone."), "check" => "", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "honourUnitTags", "type" => "bool", "default" => "false", "description" => _("Enable tagging of administrative units. This can be used in conjunction with ACLs (obsolete)."), "check" => "", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "useSaslForKerberos", "type" => "bool", "default" => "true", "description" => _("Enable the use of {sasl} instead of {kerberos} for user realms."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "SASLRealm", "type" => "string", "default" => "REALM", "description" => _("The SASL realm to use for password storage."), "check" => "", "migrate" => "", "group" => "password", "mandatory" => FALSE), array( "name" => "rfc2307bis", "type" => "bool", "default" => "false", "description" => _("Enable RFC 2307bis style groups. This combines the use of 'member' and 'memberUid' attributes."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "personalTitleInDN", "type" => "bool", "default" => "false", "description" => _("Adjusts the user DN generation to include the users personal title (only in conjunction with accountPrimaryAttribute)."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "storage location", "mandatory" => FALSE), array( "name" => "nextIdHook", "type" => "command", "default" => "", "description" => _("Script to be called for finding the next free id for groups or users."), "check" => "gosaProperty::isCommand", "migrate" => "", "group" => "id", "mandatory" => FALSE), array( "name" => "idGenerator", "type" => "string", "default" => "{%sn}-{%givenName[2-4]}", "description" => _("Descriptive string for the automatic ID generator. Please read the FAQ file for more information."), "check" => "", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "strictNamingRules", "type" => "bool", "default" => "true", "description" => _("Enable strict checking for user IDs and group names."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "minId", "type" => "integer", "default" => 40, "description" => _("Lowest assignable user or group ID. Only active if idAllocationMethod is set to 'traditional'."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "id", "mandatory" => FALSE), array( "name" => "mailAttribute", "type" => "switch", "default" => "mail", "defaults" => "core::getPropertyValues", "description" => _("Attribute to be used for primary mail addresses."), "check" => "", "migrate" => "", "group" => "mail", "mandatory" => FALSE), array( "name" => "gosaSharedPrefix", "type" => "string", "default" => "", "description" => _("Namespace used for shared folders."), "check" => "", "migrate" => "", "group" => "mail", "mandatory" => FALSE), array( "name" => "mailUserCreation", "type" => "string", "default" => "", "description" => _("Namespace rule to create user folders. Please read the FAQ file for more information."), "check" => "", "migrate" => "", "group" => "mail", "mandatory" => FALSE), array( "name" => "mailFolderCreation", "type" => "string", "default" => "", "description" => _("Namespace rule to create folders. Please read the FAQ file for more information."), "check" => "", "migrate" => "", "group" => "mail", "mandatory" => FALSE), array( "name" => "imapTimeout", "type" => "integer", "default" => 10, "description" => _("Seconds after an IMAP connection is considered dead."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "mail", "mandatory" => FALSE), array( "name" => "mailMethod", "type" => "switch", "default" => "", "defaults" => "core::getPropertyValues", "description" => _("Class name of the mail method to be used."), "check" => "", "migrate" => "", "group" => "mail", "mandatory" => FALSE), array( "name" => "cyrusUseSlashes", "type" => "bool", "default" => "true", "description" => _("Enable slashes instead of dots as a name space separator for Cyrus IMAP."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "mail", "mandatory" => FALSE), array( "name" => "vacationTemplateDirectory", "type" => "path", "default" => "/etc/gosa/vacation", "description" => _("Directory to store vacation templates. Please read the FAQ file for more information."), "check" => "gosaProperty::isWriteablePath", "migrate" => "", "group" => "mail", "mandatory" => FALSE), array( "name" => "ldapTLS", "type" => "bool", "default" => "false", "description" => _("Enable TLS for LDAP connections."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "security", "mandatory" => TRUE), array( "name" => "honourIvbbAttributes", "type" => "bool", "default" => "false", "description" => _("Enable IVBB used by german authorities."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "sambaIdMapping", "type" => "bool", "default" => "false", "description" => _("Maintain sambaIdmapEntry objects to improve performance on some Samba versions."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "samba", "mandatory" => FALSE), array( "name" => "handleExpiredAccounts", "type" => "bool", "default" => "true", "description" => _("Enable checks to determine whether an account is expired or not."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => FALSE), array( "name" => "sambaSID", "type" => "string", "default" => "", "description" => _("String containing the SID for Samba setups without the Domain object in LDAP."), "check" => "", "migrate" => "", "group" => "samba", "mandatory" => FALSE), array( "name" => "sambaRidBase", "type" => "integer", "default" => "", "description" => _("String containing the RID base for Samba setups without the Domain object in LDAP."), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "samba", "mandatory" => FALSE), array( "name" => "enableSnapshots", "type" => "bool", "default" => "false", "description" => _("Enable manual object snapshots."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "snapshot", "mandatory" => TRUE), array( "name" => "snapshotBase", "type" => "dn", "default" => "ou=snapshots,dc=localhost,dc=de", "description" => _("Base DN for snapshot storage."), "check" => "gosaProperty::isDn", "migrate" => "", "group" => "snapshot", "mandatory" => FALSE), array( "name" => "snapshotAdminDn", "type" => "dn", "default" => "cn=admin,dc=localhost,dc=de", "description" => _("DN of the snapshot administrator."), "check" => "gosaProperty::isDn", "migrate" => "", "group" => "snapshot", "mandatory" => FALSE), array( "name" => "snapshotAdminPassword", "type" => "string", "default" => "secret", "description" => _("Password of the snapshot administrator."), "check" => "", "migrate" => "", "group" => "snapshot", "mandatory" => FALSE), array( "name" => "idAllocationMethod", "type" => "switch", "default" => "traditional", "defaults" => "core::getPropertyValues", "description" => _("Method for user and group ID generation. Note: only the 'traditional' method is safe due to PHP limitations."), "check" => "", "migrate" => "", "group" => "id", "mandatory" => TRUE), array( "name" => "snapshotURI", "type" => "uri", "default" => "ldap://localhost:389", "description" => _("URI of server to be used for snapshots."), "check" => "", "migrate" => "", "group" => "snapshot", "mandatory" => FALSE), array( "name" => "forceTranslit", "type" => "bool", "default" => "false", "description" => _("Enable transliteration of cyrillic characters for UID generation."), "check" => "gosaProperty::isBool", "migrate" => "", "group" => "core", "mandatory" => TRUE) ))); } } ?> gosa-core-2.7.4/include/class_listingSortIterator.inc0000644000175000017500000000541311327523573021410 0ustar mikemikedata= array_reverse($data, true); } else { $this->data= $data; } } function rewind() { return reset($this->data); } function current() { return current($this->data); } function key() { return key($this->data); } function next() { return next($this->data); } function valid() { return key($this->data) !== null; } } ?> gosa-core-2.7.4/include/class_plugin.inc0000644000175000017500000014663111613731145016655 0ustar mikemike \version 2.00 \date 24.07.2003 This is the base class for all plugins. It can be used standalone or can be included by the tabs class. All management should be done within this class. Extend your plugins from this class. */ class plugin { /*! \brief The title shown in path menu while this plugin is visible. */ var $pathTitle = ""; /*! \brief Reference to parent object This variable is used when the plugin is included in tabs and keeps reference to the tab class. Communication to other tabs is possible by 'name'. So the 'fax' plugin can ask the 'userinfo' plugin for the fax number. \sa tab */ var $parent= NULL; /*! \brief Configuration container Access to global configuration */ var $config= NULL; /*! \brief Mark plugin as account Defines whether this plugin is defined as an account or not. This has consequences for the plugin to be saved from tab mode. If it is set to 'FALSE' the tab will call the delete function, else the save function. Should be set to 'TRUE' if the construtor detects a valid LDAP object. \sa plugin::plugin() */ var $is_account= FALSE; var $initially_was_account= FALSE; /*! \brief Mark plugin as template Defines whether we are creating a template or a normal object. Has conseqences on the way execute() shows the formular and how save() puts the data to LDAP. \sa plugin::save() plugin::execute() */ var $is_template= FALSE; var $ignore_account= FALSE; var $is_modified= FALSE; /*! \brief Represent temporary LDAP data This is only used internally. */ var $attrs= array(); /* Keep set of conflicting plugins */ var $conflicts= array(); /* Save unit tags */ var $gosaUnitTag= ""; var $skipTagging= FALSE; /*! \brief Used standard values dn */ var $dn= ""; var $uid= ""; var $sn= ""; var $givenName= ""; var $acl= "*none*"; var $dialog= FALSE; var $snapDialog = NULL; /* attribute list for save action */ var $attributes= array(); var $objectclasses= array(); var $is_new= TRUE; var $saved_attributes= array(); var $acl_base= ""; var $acl_category= ""; var $read_only = FALSE; // Used when the entry is opened as "readonly" due to locks. /* This can be set to render the tabulators in another stylesheet */ var $pl_notify= FALSE; /* Object entry CSN */ var $entryCSN = ""; var $CSN_check_active = FALSE; /* This variable indicates that this class can handle multiple dns at once. */ var $multiple_support = FALSE; var $multi_attrs = array(); var $multi_attrs_all = array(); /* This aviable indicates, that we are currently in multiple edit handle */ var $multiple_support_active = FALSE; var $selected_edit_values = array(); var $multi_boxes = array(); /*! \brief plugin constructor If 'dn' is set, the node loads the given 'dn' from LDAP \param dn Distinguished name to initialize plugin from \sa plugin() */ function plugin (&$config, $dn= NULL, $object= NULL) { $this->initTime = microtime(TRUE); /* Configuration is fine, allways */ $this->config= &$config; $this->dn= $dn; // Ensure that we've a valid acl_category set. if(empty($this->acl_category)){ $tmp = $this->plInfo(); if (isset($tmp['plCategory'])) { $c = key($tmp['plCategory']); if(is_numeric($c)){ $c = $tmp['plCategory'][0]; } $this->acl_category = $c."/"; } } // Create statistic table entry stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'open', $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); /* Handle new accounts, don't read information from LDAP */ if ($dn == "new"){ return; } /* Check if this entry was opened in read only mode */ if(isset($_POST['open_readonly'])){ if(session::global_is_set("LOCK_CACHE")){ $cache = &session::get("LOCK_CACHE"); if(isset($cache['READ_ONLY'][$this->dn])){ $this->read_only = TRUE; } } } /* Save current dn as acl_base */ $this->acl_base= $dn; /* Get LDAP descriptor */ if ($dn !== NULL){ /* Load data to 'attrs' and save 'dn' */ if ($object !== NULL){ $this->attrs= $object->attrs; } else { $ldap= $this->config->get_ldap_link(); $ldap->cat ($dn); $this->attrs= $ldap->fetch(); } /* Copy needed attributes */ foreach ($this->attributes as $val){ $found= array_key_ics($val, $this->attrs); if ($found != ""){ $this->$val= $found[0]; } } /* gosaUnitTag loading... */ if (isset($this->attrs['gosaUnitTag'][0])){ $this->gosaUnitTag= $this->attrs['gosaUnitTag'][0]; } /* Set the template flag according to the existence of objectClass gosaUserTemplate */ if (isset($this->attrs['objectClass'])){ if (in_array_ics ("gosaUserTemplate", $this->attrs['objectClass'])){ $this->is_template= TRUE; @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "found", "Template check"); } } /* Is Account? */ $found= TRUE; foreach ($this->objectclasses as $obj){ if (preg_match('/top/i', $obj)){ continue; } if (!isset($this->attrs['objectClass']) || !in_array_ics ($obj, $this->attrs['objectClass'])){ $found= FALSE; break; } } if ($found){ $this->is_account= TRUE; @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "found", "Object check"); } /* Prepare saved attributes */ $this->saved_attributes= $this->attrs; foreach ($this->saved_attributes as $index => $value){ if (is_numeric($index)){ unset($this->saved_attributes[$index]); continue; } if (!in_array_ics($index, $this->attributes) && strcasecmp('objectClass', $index)){ unset($this->saved_attributes[$index]); continue; } if (isset($this->saved_attributes[$index][0])){ if(!isset($this->saved_attributes[$index]["count"])){ $this->saved_attributes[$index]["count"] = count($this->saved_attributes[$index]); } if($this->saved_attributes[$index]["count"] == 1){ $tmp= $this->saved_attributes[$index][0]; unset($this->saved_attributes[$index]); $this->saved_attributes[$index]= $tmp; continue; } } unset($this->saved_attributes["$index"]["count"]); } if(isset($this->attrs['gosaUnitTag'])){ $this->saved_attributes['gosaUnitTag'] = $this->attrs['gosaUnitTag'][0]; } } /* Save initial account state */ $this->initially_was_account= $this->is_account; } /*! \brief Generates the html output for this node */ function execute() { /* This one is empty currently. Fabian - please fill in the docu code */ session::global_set('current_class_for_help',get_class($this)); /* Reset Lock message POST/GET check array, to prevent perg_match errors*/ session::set('LOCK_VARS_TO_USE',array()); session::set('LOCK_VARS_USED_GET',array()); session::set('LOCK_VARS_USED_POST',array()); session::set('LOCK_VARS_USED_REQUEST',array()); pathNavigator::registerPlugin($this); // Create statistic table entry stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'view', $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); } /*! \brief Removes object from parent */ function remove_from_parent() { /* include global link_info */ $ldap= $this->config->get_ldap_link(); /* Get current objectClasses in order to add the required ones */ $ldap->cat($this->dn); $tmp= $ldap->fetch (); $oc= array(); if (isset($tmp['objectClass'])){ $oc= $tmp['objectClass']; unset($oc['count']); } /* Remove objectClasses from entry */ $ldap->cd($this->dn); $this->attrs= array(); $this->attrs['objectClass']= array_remove_entries_ics($this->objectclasses,$oc); /* Unset attributes from entry */ foreach ($this->attributes as $val){ $this->attrs["$val"]= array(); } /* Unset account info */ $this->is_account= FALSE; /* Do not write in plugin base class, this must be done by children, since there are normally additional attribs, lists, etc. */ /* $ldap->modify($this->attrs); */ if($this->initially_was_account){ $this->handle_pre_events('remove'); // Create statistic table entry stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'remove', $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); } } /*! \brief Save HTML posted data to object */ function save_object() { /* Update entry CSN if it is empty. */ if(empty($this->entryCSN) && $this->CSN_check_active){ $this->entryCSN = getEntryCSN($this->dn); } /* Save values to object */ foreach ($this->attributes as $val){ if (isset ($_POST["$val"]) && $this->acl_is_writeable($val)){ /* Check for modifications */ $data= get_post($val); if ($this->$val != $data){ $this->is_modified= TRUE; } $this->$val = $data; /* Okay, how can I explain this fix ... * In firefox, disabled option fields aren't selectable ... but in IE you can select these fileds. * So IE posts these 'unselectable' option, with value = chr(194) * chr(194) seems to be the   in between the ...option> $val= $data; } } } /*! \brief Save data to LDAP, depending on is_account we save or delete */ function save() { /* include global link_info */ $ldap= $this->config->get_ldap_link(); /* Save all plugins */ $this->entryCSN = ""; /* Start with empty array */ $this->attrs= array(); /* Get current objectClasses in order to add the required ones */ $ldap->cat($this->dn); $tmp= $ldap->fetch (); $oc= array(); if (isset($tmp['objectClass'])){ $oc= $tmp["objectClass"]; $this->is_new= FALSE; unset($oc['count']); } else { $this->is_new= TRUE; } /* Load (minimum) attributes, add missing ones */ $this->attrs['objectClass']= gosa_array_merge($oc,$this->objectclasses); /* Copy standard attributes */ foreach ($this->attributes as $val){ if ($this->$val != ""){ $this->attrs["$val"]= $this->$val; } elseif (!$this->is_new) { $this->attrs["$val"]= array(); } } /* Handle tagging */ $this->tag_attrs($this->attrs); if($this->is_new){ $this->handle_pre_events('add'); // Create statistic table entry stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'create', $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); }else{ $this->handle_pre_events('modify'); // Create statistic table entry stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'modify', $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); } } /*! \brief Forward command execution requests * to the hook execution method. */ function handle_pre_events($mode, $addAttrs= array()) { if(!in_array_strict($mode, array('add','remove','modify'))){ trigger_error(sprintf("Invalid pre event type given %s! Valid types are [add,modify,remove].", $mode)); return; } switch ($mode){ case "add": plugin::callHook($this,"PRECREATE", $addAttrs); break; case "modify": plugin::callHook($this,"PREMODIFY", $addAttrs); break; case "remove": plugin::callHook($this,"PREREMOVE", $addAttrs); break; } } function cleanup() { foreach ($this->attrs as $index => $value){ /* Convert arrays with one element to non arrays, if the saved attributes are no array, too */ if (is_array($this->attrs[$index]) && count ($this->attrs[$index]) == 1 && isset($this->saved_attributes[$index]) && !is_array($this->saved_attributes[$index])){ $tmp= $this->attrs[$index][0]; $this->attrs[$index]= $tmp; } /* Remove emtpy arrays if they do not differ */ if (is_array($this->attrs[$index]) && count($this->attrs[$index]) == 0 && !isset($this->saved_attributes[$index])){ unset ($this->attrs[$index]); continue; } /* Remove single attributes that do not differ */ if (!is_array($this->attrs[$index]) && isset($this->saved_attributes[$index]) && !is_array($this->saved_attributes[$index]) && $this->attrs[$index] == $this->saved_attributes[$index]){ unset ($this->attrs[$index]); continue; } /* Remove arrays that do not differ */ if (is_array($this->attrs[$index]) && isset($this->saved_attributes[$index]) && is_array($this->saved_attributes[$index])){ if (!array_differs($this->attrs[$index],$this->saved_attributes[$index])){ unset ($this->attrs[$index]); continue; } } } /* Update saved attributes and ensure that next cleanups will be successful too */ foreach($this->attrs as $name => $value){ $this->saved_attributes[$name] = $value; } } /*! \brief Check formular input */ function check() { $message= array(); /* Skip if we've no config object */ if (!isset($this->config) || !is_object($this->config)){ return $message; } /* Find hooks entries for this class */ $command = $this->config->configRegistry->getPropertyValue(get_class($this),"check"); if ($command != ""){ if (!check_command($command)){ $message[]= msgPool::cmdnotfound("CHECK", get_class($this)); } else { /* Generate "ldif" for check hook */ $ldif= "dn: $this->dn\n"; /* ... objectClasses */ foreach ($this->objectclasses as $oc){ $ldif.= "objectClass: $oc\n"; } /* ... attributes */ foreach ($this->attributes as $attr){ if ($this->$attr == ""){ continue; } if (is_array($this->$attr)){ foreach ($this->$attr as $val){ $ldif.= "$attr: $val\n"; } } else { $ldif.= "$attr: ".$this->$attr."\n"; } } /* Append empty line */ $ldif.= "\n"; /* Feed "ldif" into hook and retrieve result*/ $descriptorspec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w")); $fh= proc_open($command, $descriptorspec, $pipes); if (is_resource($fh)) { fwrite ($pipes[0], $ldif); fclose($pipes[0]); $result= stream_get_contents($pipes[1]); if ($result != ""){ $message[]= $result; } fclose($pipes[1]); fclose($pipes[2]); proc_close($fh); } } } /* Check entryCSN */ if($this->CSN_check_active){ $current_csn = getEntryCSN($this->dn); if($current_csn != $this->entryCSN && !empty($this->entryCSN) && !empty($current_csn)){ $this->entryCSN = $current_csn; $message[] = _("The current object has been altered while beeing edited. If you save this entry, changes that have been made by others will be discarded!"); } } return ($message); } /* Adapt from template, using 'dn' */ function adapt_from_template($dn, $skip= array()) { /* Include global link_info */ $ldap= $this->config->get_ldap_link(); /* Load requested 'dn' to 'attrs' */ $ldap->cat ($dn); $this->attrs= $ldap->fetch(); $values = array(); foreach(array('uid','sn','givenName') as $name){ if(isset($this->parent->$name)){ $value = $this->parent->$name; if(is_numeric($name)) continue; if(is_string($value)) $values[$name] = $value; if(is_array($value) && isset($value[0])) $values[$name] = $value[0]; } } foreach($this->attributes as $name){ // Skip the ones in skip list if (in_array_strict($name, $skip)) continue; if (!isset($this->attrs[$name]['count'])) continue; $value= $this->attrs[$name][0]; if($this->attrs[$name]['count'] == 1){ $value = fillReplacements($this->attrs[$name][0], $values); }else{ $value = array(); for($i=0;$i<$this->attrs[$name]['count'];$i++){ $value[] = fillReplacements($this->attrs[$name][$i], $values); } } $this->$name = $value; } /* Is Account? */ $found= TRUE; foreach ($this->objectclasses as $obj){ if (preg_match('/top/i', $obj)) continue; if (!in_array_ics ($obj, $this->attrs['objectClass'])){ $found= FALSE; break; } } $this->is_account = $found; } /* \brief Indicate whether a password change is needed or not */ function password_change_needed() { return FALSE; } /*! \brief Show header message for tab dialogs */ function show_enable_header($button_text, $text, $disabled= FALSE) { if (($disabled == TRUE) || (!$this->acl_is_createable())){ $state= "disabled"; } else { $state= ""; } $display = "
    \n"; $display.= "

    $text

    \n"; $display.= "\n"; $display.= "
    \n"; return($display); } /*! \brief Show header message for tab dialogs */ function show_disable_header($button_text, $text, $disabled= FALSE) { if (($disabled == TRUE) || !$this->acl_is_removeable()){ $state= "disabled"; } else { $state= ""; } $display = "
    \n"; $display.= "

    $text

    \n"; $display.= "\n"; $display.= "
    \n"; return($display); } /* Create unique DN */ function create_unique_dn2($data, $base) { $ldap= $this->config->get_ldap_link(); $base= preg_replace("/^,*/", "", $base); /* Try to use plain entry first */ $dn= "$data,$base"; $attribute= preg_replace('/=.*$/', '', $data); $ldap->cat ($dn, array('dn')); if (!$ldap->fetch()){ return ($dn); } /* Look for additional attributes */ foreach ($this->attributes as $attr){ if ($attr == $attribute || $this->$attr == ""){ continue; } $dn= "$data+$attr=".$this->$attr.",$base"; $ldap->cat ($dn, array('dn')); if (!$ldap->fetch()){ return ($dn); } } /* None found */ return ("none"); } /*! \brief Create unique DN */ function create_unique_dn($attribute, $base) { $ldap= $this->config->get_ldap_link(); $base= preg_replace("/^,*/", "", $base); /* Try to use plain entry first */ $dn= "$attribute=".$this->$attribute.",$base"; $ldap->cat ($dn, array('dn')); if (!$ldap->fetch()){ return ($dn); } /* Look for additional attributes */ foreach ($this->attributes as $attr){ if ($attr == $attribute || $this->$attr == ""){ continue; } $dn= "$attribute=".$this->$attribute."+$attr=".$this->$attr.",$base"; $ldap->cat ($dn, array('dn')); if (!$ldap->fetch()){ return ($dn); } } /* None found */ return ("none"); } function rebind($ldap, $referral) { $credentials= LDAP::get_credentials($referral, $this->config->current['REFERRAL']); if (ldap_bind($ldap, $credentials['ADMIN'], $this->config->get_credentials($credentials['PASSWORD']))) { $this->error = "Success"; $this->hascon=true; $this->reconnect= true; return (0); } else { $this->error = "Could not bind to " . $credentials['ADMIN']; return NULL; } } /* Recursively copy ldap object */ function _copy($src_dn,$dst_dn) { $ldap=$this->config->get_ldap_link(); $ldap->cat($src_dn); $attrs= $ldap->fetch(); /* Grummble. This really sucks. PHP ldap doesn't support rdn stuff. */ $ds= ldap_connect($this->config->current['SERVER']); ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); if (function_exists("ldap_set_rebind_proc") && isset($this->config->current['REFERRAL'])) { ldap_set_rebind_proc($ds, array(&$this, "rebind")); } $pwd = $this->config->get_credentials($this->config->current['ADMINPASSWORD']); $r=ldap_bind($ds,$this->config->current['ADMINDN'], $pwd); $sr=ldap_read($ds, LDAP::fix($src_dn), "objectClass=*"); /* Fill data from LDAP */ $new= array(); if ($sr) { $ei=ldap_first_entry($ds, $sr); if ($ei) { foreach($attrs as $attr => $val){ if ($info = @ldap_get_values_len($ds, $ei, $attr)){ for ($i= 0; $i<$info['count']; $i++){ if ($info['count'] == 1){ $new[$attr]= $info[$i]; } else { $new[$attr][]= $info[$i]; } } } } } } /* close conncetion */ ldap_unbind($ds); /* Adapt naming attribute */ $dst_name= preg_replace("/^([^=]+)=.*$/", "\\1", $dst_dn); $dst_val = preg_replace("/^[^=]+=([^,+]+).*,.*$/", "\\1", $dst_dn); $new[$dst_name]= LDAP::fix($dst_val); /* Check if this is a department. * If it is a dep. && there is a , override in his ou * change \2C to , again, else this entry can't be saved ... */ if((isset($new['ou'])) &&( preg_match("/\\,/",$new['ou']))){ $new['ou'] = str_replace("\\\\,",",",$new['ou']); } /* Save copy */ $ldap->connect(); $ldap->cd($this->config->current['BASE']); $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $dst_dn)); /* FAIvariable=.../..., cn=.. could not be saved, because the attribute FAIvariable was different to the dn FAIvariable=..., cn=... */ if(!is_array($new['objectClass'])) $new['objectClass'] = array($new['objectClass']); if(in_array_ics("FAIdebconfInfo",$new['objectClass'])){ $new['FAIvariable'] = $ldap->fix($new['FAIvariable']); } $ldap->cd($dst_dn); $ldap->add($new); if (!$ldap->success()){ trigger_error("Trying to save $dst_dn failed.", E_USER_WARNING); return(FALSE); } return(TRUE); } /* This is a workaround function. */ function copy($src_dn, $dst_dn) { /* Rename dn in possible object groups */ $ldap= $this->config->get_ldap_link(); $ldap->search('(&(objectClass=gosaGroupOfNames)(member='.@LDAP::prepare4filter($src_dn).'))', array('cn')); while ($attrs= $ldap->fetch()){ $og= new ogroup($this->config, $ldap->getDN()); unset($og->member[$src_dn]); $og->member[$dst_dn]= $dst_dn; $og->save (); } $ldap->cat($dst_dn); $attrs= $ldap->fetch(); if (count($attrs)){ trigger_error("Trying to overwrite ".LDAP::fix($dst_dn).", which already exists.", E_USER_WARNING); return (FALSE); } $ldap->cat($src_dn); $attrs= $ldap->fetch(); if (!count($attrs)){ trigger_error("Trying to move ".LDAP::fix($src_dn).", which does not seem to exist.", E_USER_WARNING); return (FALSE); } $ldap->cd($src_dn); $ldap->search("objectClass=*",array("dn")); while($attrs = $ldap->fetch()){ $src = $attrs['dn']; $dst = preg_replace("/".preg_quote($src_dn, '/')."$/",$dst_dn,$attrs['dn']); $this->_copy($src,$dst); } return (TRUE); } /*! \brief Rename/Move a given src_dn to the given dest_dn * * Move a given ldap object indentified by $src_dn to the * given destination $dst_dn * * - Ensure that all references are updated (ogroups) * - Update ACLs * - Update accessTo * * \param string 'src_dn' the source DN. * \param string 'dst_dn' the destination DN. * \return boolean TRUE on success else FALSE. */ function rename($src_dn, $dst_dn) { $start = microtime(1); /* Try to move the source entry to the destination position */ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->create_missing_trees(preg_replace("/^[^,]+,/","",$dst_dn)); if (!$ldap->rename_dn($src_dn,$dst_dn)){ new log("debug","LDAP protocol v3 implementation error, ldap_rename failed, falling back to manual copy.","FROM: $src_dn -- TO: $dst_dn",array(),$ldap->get_error()); @DEBUG(DEBUG_LDAP,__LINE__,__FUNCTION__,__FILE__,"Rename failed FROM: $src_dn -- TO: $dst_dn", "Ldap Protocol v3 implementation error, falling back to maunal method."); return(FALSE); } /* Get list of users,groups and roles within this tree, maybe we have to update ACL references. */ $leaf_objs = get_list("(|(objectClass=posixGroup)(objectClass=gosaAccount)(objectClass=gosaRole))",array("all"),$dst_dn, array("dn","objectClass"),GL_SUBSEARCH | GL_NO_ACL_CHECK); foreach($leaf_objs as $obj){ $new_dn = $obj['dn']; $old_dn = preg_replace("/".preg_quote(LDAP::convert($dst_dn), '/')."$/i",$src_dn,LDAP::convert($new_dn)); $this->update_acls($old_dn,$new_dn); } // Migrate objectgroups if needed $ogroups = get_sub_list("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter(LDAP::fix($src_dn))."))", "ogroups", array(get_ou("group", "ogroupRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK); // Walk through all objectGroups foreach($ogroups as $ogroup){ // Migrate old to new dn $o_ogroup= new ogroup($this->config,$ogroup['dn']); if (isset($o_ogroup->member[$src_dn])) { unset($o_ogroup->member[$src_dn]); } $o_ogroup->member[$dst_dn]= $dst_dn; // Save object group $o_ogroup->save(); } // Migrate objectgroups if needed $objects = get_sub_list("(&(objectClass=gotoEnvironment)(gotoHotplugDeviceDN=".LDAP::prepare4filter(LDAP::fix($src_dn))."))", "users",array(get_ou("core","userRDN"), get_ou("core","groupRDN")), $this->config->current['BASE'],array("dn", "gotoHotplugDeviceDN"), GL_SUBSEARCH | GL_NO_ACL_CHECK); $ldap = $this->config->get_ldap_link(); foreach($objects as $obj){ $deviceDNS = array(); for($i=0; $i < $obj["gotoHotplugDeviceDN"]['count']; $i++){ $odn = $obj["gotoHotplugDeviceDN"][$i]; if($odn == $src_dn){ $odn = $dst_dn; } $deviceDNS[] = $odn; } $ldap->cd($obj['dn']); $ldap->modify(array('gotoHotplugDeviceDN'=>$deviceDNS)); if(!$ldap->success()){ trigger_error(sprintf("Failed to update gotoHotplugDeviceDN for %s: %s", bold($obj['dn']), $ldap->get_error())); } } // Migrate rfc groups if needed $groups = get_sub_list("(&(objectClass=posixGroup)(member=".LDAP::prepare4filter(LDAP::fix($src_dn))."))","groups", array(get_ou("core", "groupRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK); // Walk through all POSIX groups foreach($groups as $group){ // Migrate old to new dn $o_group= new group($this->config,$group['dn']); $o_group->save(); } /* Update roles to use the new entry dn */ if(class_available('roleGeneric')){ $roles = get_sub_list("(&(objectClass=organizationalRole)(roleOccupant=".LDAP::prepare4filter(LDAP::fix($src_dn))."))","roles", array(get_ou("roleGeneric", "roleRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK); // Walk through all roles foreach($roles as $role){ $role = new roleGeneric($this->config,$role['dn']); $key= array_search($src_dn, $role->roleOccupant); if($key !== FALSE){ $role->roleOccupant[$key] = $dst_dn; $role->save(); } } } // Update 'manager' attributes from gosaDepartment and inetOrgPerson $filter = "(&(objectClass=inetOrgPerson)(manager=".LDAP::prepare4filter(LDAP::fix($src_dn))."))"; $ocs = $ldap->get_objectclasses(); if(isset($ocs['gosaDepartment']['MAY']) && in_array_strict('manager', $ocs['gosaDepartment']['MAY'])){ $filter = "(|".$filter."(&(objectClass=gosaDepartment)(manager=".LDAP::prepare4filter(LDAP::fix($src_dn)).")))"; } $leaf_deps= get_list($filter,array("all"),$this->config->current['BASE'], array("manager","dn","objectClass"),GL_SUBSEARCH | GL_NO_ACL_CHECK); foreach($leaf_deps as $entry){ $update = array('manager' => $dst_dn); $ldap->cd($entry['dn']); $ldap->modify($update); if(!$ldap->success()){ trigger_error(sprintf("Failed to update manager for %s: %s", bold($entry['dn']), $ldap->get_error())); } } // Migrate 'dyn-groups' here. labeledURIObject if(class_available('DynamicLdapGroup')) { DynamicLdapGroup::moveDynGroup($this->config,$src_dn,$dst_dn); } /* Check if there are gosa departments moved. If there were deps moved, the force reload of config->deps. */ $leaf_deps= get_list("(objectClass=gosaDepartment)",array("all"),$dst_dn, array("dn","objectClass"),GL_SUBSEARCH | GL_NO_ACL_CHECK); if(count($leaf_deps)){ $this->config->get_departments(); $this->config->make_idepartments(); session::global_set("config",$this->config); $ui =get_userinfo(); $ui->reset_acl_cache(); } return(TRUE); } function move($src_dn, $dst_dn) { /* Do not copy if only upper- lowercase has changed */ if(strtolower($src_dn) == strtolower($dst_dn)){ return(TRUE); } // Create statistic table entry stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'move', $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); /* Try to move the entry instead of copy & delete */ if(TRUE){ /* Try to move with ldap routines, if this was not successfull fall back to the old style copy & remove method */ if($this->rename($src_dn, $dst_dn)){ return(TRUE); }else{ // See code below. } } /* Copy source to destination */ if (!$this->copy($src_dn, $dst_dn)){ return (FALSE); } /* Delete source */ $ldap= $this->config->get_ldap_link(); $ldap->rmdir_recursive($src_dn); if (!$ldap->success()){ trigger_error("Trying to delete $src_dn failed.", E_USER_WARNING); return (FALSE); } return (TRUE); } /* \brief Move/Rename complete trees */ function recursive_move($src_dn, $dst_dn) { /* Check if the destination entry exists */ $ldap= $this->config->get_ldap_link(); /* Check if destination exists - abort */ $ldap->cat($dst_dn, array('dn')); if ($ldap->fetch()){ trigger_error("recursive_move $dst_dn already exists.", E_USER_WARNING); return (FALSE); } $this->copy($src_dn, $dst_dn); /* Remove src_dn */ $ldap->cd($src_dn); $ldap->recursive_remove($src_dn); return (TRUE); } function saveCopyDialog(){ } function getCopyDialog(){ return(array("string"=>"","status"=>"")); } /*! \brief Prepare for Copy & Paste */ function PrepareForCopyPaste($source) { $todo = $this->attributes; if(isset($this->CopyPasteVars)){ $todo = array_merge($todo,$this->CopyPasteVars); } if(count($this->objectclasses)){ $this->is_account = TRUE; foreach($this->objectclasses as $class){ if(!in_array_strict($class,$source['objectClass'])){ $this->is_account = FALSE; } } } foreach($todo as $var){ if (isset($source[$var])){ if(isset($source[$var]['count'])){ if($source[$var]['count'] > 1){ $tmp= $source[$var]; unset($tmp['count']); $this->$var = $tmp; }else{ $this->$var = $source[$var][0]; } }else{ $this->$var= $source[$var]; } } } } /*! \brief Get gosaUnitTag for the given DN If this is called from departmentGeneric, we have to skip this tagging procedure. */ function tag_attrs(&$at, $dn= "", $tag= "", $show= false) { /* Skip tagging? */ if($this->skipTagging){ return; } /* No dn? Self-operation... */ if ($dn == ""){ $dn= $this->dn; /* No tag? Find it yourself... */ if ($tag == ""){ $len= strlen($dn); @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "No tag for $dn - looking for one...", "Tagging"); $relevant= array(); foreach ($this->config->adepartments as $key => $ntag){ /* This one is bigger than our dn, its not relevant... */ if ($len < strlen($key)){ continue; } /* This one matches with the latter part. Break and don't fix this entry */ if (preg_match('/(^|,)'.preg_quote($key, '/').'$/', $dn)){ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, "DEBUG: Possibly relevant: $key", "Tagging"); $relevant[strlen($key)]= $ntag; continue; } } /* If we've some relevant tags to set, just get the longest one */ if (count($relevant)){ ksort($relevant); $tmp= array_keys($relevant); $idx= end($tmp); $tag= $relevant[$idx]; $this->gosaUnitTag= $tag; } } } /*! \brief Add unit tag */ /* Remove tags that may already be here... */ remove_objectClass("gosaAdministrativeUnitTag", $at); if (isset($at['gosaUnitTag'])){ unset($at['gosaUnitTag']); } /* Set tag? */ if ($tag != ""){ add_objectClass("gosaAdministrativeUnitTag", $at); $at['gosaUnitTag']= $tag; } /* Initially this object was tagged. - But now, it is no longer inside a tagged department. So force the remove of the tag. (objectClass was already removed obove) */ if($tag == "" && $this->gosaUnitTag){ $at['gosaUnitTag'] = array(); } } /*! \brief Test for removability of the object * * Allows testing of conditions for removal of object. If removal should be aborted * the function needs to remove an error message. * */ function allow_remove() { $reason= ""; return $reason; } /*! \brief Test if snapshotting is enabled * * Test weither snapshotting is enabled or not. There will also be some errors posted, * if the configuration failed * \return TRUE if snapshots are enabled, and FALSE if it is disabled */ function snapshotEnabled() { return $this->config->snapshotEnabled(); } /*! \brief Return plugin informations for acl handling * See class_core.inc for examples. */ static function plInfo() { return array(); } function set_acl_base($base) { @DEBUG (DEBUG_ACL, __LINE__, __FUNCTION__, __FILE__,"".$base."","ACL-Base: "); $this->acl_base= $base; } function set_acl_category($category) { @DEBUG (DEBUG_ACL, __LINE__, __FUNCTION__, __FILE__,"".$category."(/".get_class($this).")","ACL-Category: "); $this->acl_category= "$category/"; } function acl_is_writeable($attribute,$skip_write = FALSE) { if($this->read_only) return(FALSE); $ui= get_userinfo(); return preg_match('/w/', $ui->get_permissions($this->acl_base, $this->acl_category.get_class($this), $attribute, $skip_write)); } function acl_is_readable($attribute) { $ui= get_userinfo(); return preg_match('/r/', $ui->get_permissions($this->acl_base, $this->acl_category.get_class($this), $attribute)); } function acl_is_createable($base ="") { if($this->read_only) return(FALSE); $ui= get_userinfo(); if($base == "") $base = $this->acl_base; return preg_match('/c/', $ui->get_permissions($base, $this->acl_category.get_class($this), '0')); } function acl_is_removeable($base ="") { if($this->read_only) return(FALSE); $ui= get_userinfo(); if($base == "") $base = $this->acl_base; return preg_match('/d/', $ui->get_permissions($base, $this->acl_category.get_class($this), '0')); } function acl_is_moveable($base = "") { if($this->read_only) return(FALSE); $ui= get_userinfo(); if($base == "") $base = $this->acl_base; return preg_match('/m/', $ui->get_permissions($base, $this->acl_category.get_class($this), '0')); } function acl_have_any_permissions() { } function getacl($attribute,$skip_write= FALSE) { $ui= get_userinfo(); $skip_write |= $this->read_only; return $ui->get_permissions($this->acl_base, $this->acl_category.get_class($this), $attribute,$skip_write); } /*! \brief Returns a list of all available departments for this object. * * If this object is new, all departments we are allowed to create a new user in * are returned. If this is an existing object, return all deps. * We are allowed to move tis object too. * \return array [dn] => "..name" // All deps. we are allowed to act on. */ function get_allowed_bases() { $ui = get_userinfo(); $deps = array(); /* Is this a new object ? Or just an edited existing object */ if(!$this->initially_was_account && $this->is_account){ $new = true; }else{ $new = false; } foreach($this->config->idepartments as $dn => $name){ if($new && $this->acl_is_createable($dn)){ $deps[$dn] = $name; }elseif(!$new && $this->acl_is_moveable($dn)){ $deps[$dn] = $name; } } /* Add current base */ if(isset($this->base) && isset($this->config->idepartments[$this->base])){ $deps[$this->base] = $this->config->idepartments[$this->base]; }elseif(strtolower($this->dn) == strtolower($this->config->current['BASE'])){ }else{ trigger_error("Cannot return list of departments, no default base found in class ".get_class($this).". ".$this->base); } return($deps); } /* This function updates ACL settings if $old_dn was used. * \param string 'old_dn' specifies the actually used dn * \param string 'new_dn' specifies the destiantion dn */ function update_acls($old_dn,$new_dn,$output_changes = FALSE) { /* Check if old_dn is empty. This should never happen */ if(empty($old_dn) || empty($new_dn)){ trigger_error("Failed to check acl dependencies, wrong dn given."); return; } /* Update userinfo if necessary */ $ui = session::global_get('ui'); if($ui->dn == $old_dn){ $ui->dn = $new_dn; $ui->loadACL(); session::global_set('ui',$ui); new log("view","acl/".get_class($this),$this->dn,array(),"Updated current object dn from '".$old_dn."' to '".$new_dn."'"); } /* Object was moved, ensure that all acls will be moved too */ if($new_dn != $old_dn && $old_dn != "new"){ /* get_ldap configuration */ $update = array(); $ldap = $this->config->get_ldap_link(); $ldap->cd ($this->config->current['BASE']); $ldap->search("(&(objectClass=gosaAcl)(gosaAclEntry=*".base64_encode($old_dn)."*))",array("cn","gosaAclEntry")); while($attrs = $ldap->fetch()){ $acls = array(); $found = false; for($i = 0 ; $i < $attrs['gosaAclEntry']['count'] ; $i ++ ){ $acl_parts = explode(":",$attrs['gosaAclEntry'][$i]); /* Roles uses antoher data storage order, members are stored int the third part, while the members in direct ACL assignments are stored in the second part. */ $id = ($acl_parts[1] == "role") ? 3 : 2; /* Update member entries to use $new_dn instead of old_dn */ $members = explode(",",$acl_parts[$id]); foreach($members as $key => $member){ $member = base64_decode($member); if($member == $old_dn){ $members[$key] = base64_encode($new_dn); $found = TRUE; } } /* Check if the selected role has to updated */ if($acl_parts[1] == "role" && $acl_parts[2] == base64_encode($old_dn)){ $acl_parts[2] = base64_encode($new_dn); $found = TRUE; } /* Build new acl string */ $acl_parts[$id] = implode($members,","); $acls[] = implode($acl_parts,":"); } /* Acls for this object must be adjusted */ if($found){ $debug_info= sprintf(_("Changing ACL DN from %s to %s"), bold($old_dn), bold($new_dn)); @DEBUG (DEBUG_ACL, __LINE__, __FUNCTION__, __FILE__,$debug_info,"ACL"); $update[$attrs['dn']] =array(); foreach($acls as $acl){ $update[$attrs['dn']]['gosaAclEntry'][] = $acl; } } } /* Write updated acls */ foreach($update as $dn => $attrs){ $ldap->cd($dn); $ldap->modify($attrs); } } } /*! \brief Enable the Serial ID check * * This function enables the entry Serial ID check. If an entry was edited while * we have edited the entry too, an error message will be shown. * To configure this check correctly read the FAQ. */ function enable_CSN_check() { $this->CSN_check_active =TRUE; $this->entryCSN = getEntryCSN($this->dn); } /*! \brief Prepares the plugin to be used for multiple edit * Update plugin attributes with given array of attribtues. * \param array Array with attributes that must be updated. */ function init_multiple_support($attrs,$all) { $ldap= $this->config->get_ldap_link(); $this->multi_attrs = $attrs; $this->multi_attrs_all= $all; /* Copy needed attributes */ foreach ($this->attributes as $val){ $found= array_key_ics($val, $this->multi_attrs); if ($found != ""){ if(isset($this->multi_attrs["$val"][0])){ $this->$val= $this->multi_attrs["$val"][0]; } } } } /*! \brief Enables multiple support for this plugin */ function enable_multiple_support() { $this->ignore_account = TRUE; $this->multiple_support_active = TRUE; } /*! \brief Returns all values that have been modfied in multiple edit mode. \return array Cotaining all modified values. */ function get_multi_edit_values() { $ret = array(); foreach($this->attributes as $attr){ if(in_array_strict($attr,$this->multi_boxes)){ $ret[$attr] = $this->$attr; } } return($ret); } /*! \brief Update class variables with values collected by multiple edit. */ function set_multi_edit_values($attrs) { foreach($attrs as $name => $value){ $this->$name = $value; } } /*! \brief Generates the html output for this node for multi edit*/ function multiple_execute() { /* This one is empty currently. Fabian - please fill in the docu code */ session::global_set('current_class_for_help',get_class($this)); /* Reset Lock message POST/GET check array, to prevent perg_match errors*/ session::set('LOCK_VARS_TO_USE',array()); session::set('LOCK_VARS_USED_GET',array()); session::set('LOCK_VARS_USED_POST',array()); session::set('LOCK_VARS_USED_REQUEST',array()); return("Multiple edit is currently not implemented for this plugin."); } /*! \brief Save HTML posted data to object for multiple edit */ function multiple_save_object() { if(empty($this->entryCSN) && $this->CSN_check_active){ $this->entryCSN = getEntryCSN($this->dn); } /* Save values to object */ $this->multi_boxes = array(); foreach ($this->attributes as $val){ /* Get selected checkboxes from multiple edit */ if(isset($_POST["use_".$val])){ $this->multi_boxes[] = $val; } if (isset ($_POST["$val"]) && $this->acl_is_writeable($val)){ $data= $this->$val = get_post($val); if ($this->$val != $data){ $this->is_modified= TRUE; } /* IE post fix */ if(isset($data[0]) && $data[0] == chr(194)) { $data = ""; } $this->$val= $data; } } } /*! \brief Returns all attributes of this plugin, to be able to detect multiple used attributes in multi_plugg::detect_multiple_used_attributes(). @return array Attributes required for intialization of multi_plug */ public function get_multi_init_values() { $attrs = $this->attrs; return($attrs); } /*! \brief Check given values in multiple edit \return array Error messages */ function multiple_check() { $message = plugin::check(); return($message); } function get_used_snapshot_bases() { return(array()); } function is_modal_dialog() { return(isset($this->dialog) && $this->dialog); } /*! \brief Forward command execution requests * to the hook execution method. */ function handle_post_events($mode, $addAttrs= array()) { if(!in_array_strict($mode, array('add','remove','modify'))){ trigger_error(sprintf("Invalid post event type given %s! Valid types are [add,modify,remove].", bold($mode))); return; } switch ($mode){ case "add": plugin::callHook($this,"POSTCREATE", $addAttrs); break; case "modify": plugin::callHook($this,"POSTMODIFY", $addAttrs); break; case "remove": plugin::callHook($this,"POSTREMOVE", $addAttrs); break; } } /*! \brief Calls external hooks which are defined for this plugin (gosa.conf) * Replaces placeholder by class values of this plugin instance. * @param Allows to a add special replacements. */ static function callHook($plugin, $cmd, $addAttrs= array(), &$returnOutput = array(), &$returnCode = NULL, &$errorOutput = array(), $displayErrors = TRUE) { global $config; $command = $config->configRegistry->getPropertyValue(get_class($plugin),$cmd); $returnCode = 0; // Simulate a return code to tell the caller that everythin is fine. $returnOutput = array(); $arr = array(); if (!empty($command)){ // Walk trough attributes list and add the plugins attributes. foreach ($plugin->attributes as $attr){ if (!is_array($plugin->$attr)){ $addAttrs[$attr] = $plugin->$attr; } } $ui = get_userinfo(); $addAttrs['callerDN']=$ui->dn; $addAttrs['dn']=$plugin->dn; $addAttrs['location']=$config->current['NAME']; // Sort attributes by length, ensures correct replacement $tmp = array(); foreach($addAttrs as $name => $value){ $tmp[$name] = strlen($name); } arsort($tmp); // Now replace the placeholder $command = fillReplacements($command, $addAttrs, TRUE); // If there are still some %.. in our command, try to fill these with some other class vars if(preg_match("/%/",$command)){ $attrs = get_object_vars($plugin); foreach($attrs as $name => $value){ if(is_array($value)){ $s = ""; foreach($value as $val){ if(is_string($val) || is_int($val) || is_float($val) || is_bool($val)){ $s .= '"'.$val.'",'; } } $value = '['.trim($s,',').']'; } if(!is_string($value) && !is_int($value) && !is_float($value) && !is_bool($value)){ continue; } $command= preg_replace("/%$name/", escapeshellarg($value), $command); } } if (check_command($command)){ // Create list of process pipes $descriptorspec = array( 0 => array("pipe", "r"), // stdin 1 => array("pipe", "w"), // stdout 2 => array("pipe", "w")); // stderr // Try to open the process @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__,$command,"Execute"); $process = proc_open($command, $descriptorspec, $pipes); if (is_resource($process)) { // Write the password to stdin // fwrite($pipes[0], $pwd); fclose($pipes[0]); // Get results from stdout and stderr $arr = stream_get_contents($pipes[1]); $err = stream_get_contents($pipes[2]); fclose($pipes[1]); // Close the process and check its return value $returnCode = proc_close($process); $returnOutput = preg_split("/\n/", $arr,0,PREG_SPLIT_NO_EMPTY); $errorOutput = preg_split("/\n/",$err,0,PREG_SPLIT_NO_EMPTY); } if($returnCode != 0){ @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execution failed code: ".$returnCode); @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Result: ".$err); if($displayErrors){ $message= msgPool::cmdexecfailed($cmd,$command, get_class($plugin)); msg_dialog::display(_("Error"), $message, ERROR_DIALOG); } }elseif(is_array($arr)){ @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Result: ".$arr); } } elseif($displayErrors) { $message= msgPool::cmdinvalid($cmd,$command, get_class($plugin)); msg_dialog::display(_("Error"), $message, ERROR_DIALOG); } } } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_gosaSupportDaemon.inc0000644000175000017500000015517211613731145021031 0ustar mikemikes_host); } public function get_port() { return($this->i_port); } /*! \brief Creates a new gosaSupportDaemon object. @param string Host The Host where the daemon is running on. @param integer Port The port which the daemon use. @param string Key The encryption string. @param boolean Connect Directly connect to daemon socket. @param float Timeout The timelimit for all socket actions. */ public function __construct($connect=TRUE,$timeout=null) { #FIXME: bad idea about referencing global variables from within classes global $config; if(!isset($config) || !$config){ $config = session::global_get('config'); } // Detect timeout if($timeout == null){ $timeout = $config->get_cfg_value("core","gosaSupportTimeout"); } /* This should only be the case if we call this from setup. __autoload() */ if(!is_object($config)) { return; } # load from config, store statically if ($config->get_cfg_value("core","gosaSupportURI") != ""){ if ($this->s_host == ""){ $this->s_host= preg_replace("/^.*@([^:]+):.*$/", "$1", $config->get_cfg_value("core","gosaSupportURI")); $this->i_port= preg_replace("/^.*@[^:]+:(.*)$/", "$1", $config->get_cfg_value("core","gosaSupportURI")); $this->s_encryption_key = preg_replace("/^(.*)@[^:]+:.*$/", "$1", $config->get_cfg_value("core","gosaSupportURI")); } $this->is_configured = TRUE; $this->f_timeout = $timeout; if($connect){ $this->connect(); } } } public function is_configured() { return($this->is_configured); } /*! \brief Establish daemon connection. @return boolean Returns true if the connection was succesfully established. */ public function connect() { if(!empty($this->s_host) && !empty($this->i_port)){ $this->o_sock = new Socket_Client($this->s_host,$this->i_port,TRUE,$this->f_timeout); if($this->o_sock->connected()){ $this->o_sock->setEncryptionKey($this->s_encryption_key); $this->is_connected = TRUE; }else{ $this->set_error($this->o_sock->get_error()); $this->disconnect(); new log("debug","gosaSupportDaemon::connect()", "Cannot connect to si-server", array(),$this->get_error()); } }else{ $this->set_error(msgPool::cmdnotfound("gosaSupportURI",_("GOsa support daemon"))); } return($this->is_connected); } /*! \brief Returns TRUE whether we are connected or not @return BOOLEAN Returns TRUE when connected else FALSE */ public function is_connected() { return($this->is_connected); } /*! \brief */ public function get_hosts_with_module($mod) { $data = array("module_name" => $mod); $res = $this->send_data("gosa_get_hosts_with_module",$this->s_host.":".$this->i_port,$data,TRUE); $hosts = array(); if(isset($res['XML'][0])){ foreach($res['XML'][0] as $name => $data){ if(preg_match("/^ANSWER[0-9]*$/",$name)){ if(isset($data[0]['MAC'][0]['VALUE']) && $data[0]['MAC'][0]['VALUE'] != ""){ $hosts[] = $data[0]['MAC'][0]['VALUE']; } elseif(isset($data[0]['IP'][0]['VALUE']) && $data[0]['IP'][0]['VALUE'] != "") { $hosts[] = $data[0]['IP'][0]['VALUE']; } } } } if(count($hosts) == 0){ @DEBUG(DEBUG_SI, __LINE__, "".__CLASS__."::".__FUNCTION__."" , __FILE__, "Found: 0", $info=$mod); }else{ @DEBUG(DEBUG_SI, __LINE__, "".__CLASS__."::".__FUNCTION__."" , __FILE__, "Found: ".count($hosts)."", $info=$mod); } return($hosts); } /*! \brief Disconnect from gosa daemon. */ public function disconnect() { $this->o_sock->close(); $this->is_connected = FALSE; } /*! \brief Sets an error message, which can be returned with get_error(). @param string The Error message, */ private function set_error($str) { /****** Debug handling ******/ $debug = debug_backtrace(); $file = __FILE__; $function = __FUNCTION__; $line = __LINE__; $class = __CLASS__; foreach($debug as $info){ if(!in_array_strict($info['function'],array("send_data","_send","set_error","connect"))){ $file = $info['file']; $line = $info['line']; $class = get_class($this); $function = $info['function']; break; } } @DEBUG(DEBUG_SI, $line, "".$class."::".$function."" , $file, "".htmlentities($str)."", $info=""); /****** Set error string. ******/ $this->b_error = TRUE; $this->s_error = $str; } /*! \brief Sets an error message, which can be returned with get_error(). @param string The Error message, */ private function reset_error() { $this->b_error = FALSE; $this->s_error = ""; } /*! \brief Checks if an error occured. @return boolean returns TRUE or FALSE, whether there is an error or not. */ public function is_error() { return($this->b_error); } /*! \brief Returns the last error. @return Returns the last error. */ public function get_error() { $str = $this->s_error; $ret = ""; if(is_string($str)){ $ret = $str; }else{ foreach($str as $msg){ $ret .= $msg." "; } } $ret = str_replace(" "," ",$ret); return($ret); } public function FAI_get_kernels($release) { $xml_msg = "". "
    gosa_get_available_kernel
    ". "GOSA". "GOSA". "".$release."". "
    "; $ret = array(); if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); /* Check if returned values represent a valid answer */ if(isset($entries['XML']) && is_array($entries['XML'])){ if(isset($entries['XML'])){ $ret = $entries['XML']; foreach($ret as $key => $entry){ if(!preg_match("/^answer/i",$key)){ unset($ret[$key]); } } } } } return($ret); } public function FAI_get_package_sections($release) { $xml_msg = "
    gosa_query_packages_list
    GOSAGOSA". "". "".$release."
    "; $ret = array(); if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML']) && is_array($entries['XML'])){ /* Unset header tags */ foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ if(isset($entries['XML'][$type])){ unset($entries['XML'][$type]); } } $ret = $entries['XML']; } } return($ret); } public function FAI_get_packages($release,$attrs,$package,$from=-1,$to=-1) { $ret = array(); /* Check Parameter */ if(!is_array($attrs) || !count($attrs)){ trigger_error("Second parameter must be an array. With at least one attribute name."); return($ret); } /* Check Parameter */ if(!is_array($package)){ trigger_error("Third parameter must be an array. With at least one attribute name."); return($ret); } /* Create list of attributes to fetch */ $attr = ""; foreach($attrs as $at){ $attr.= ""; } /* If no package is given, search for all */ if(!count($package)) $package = array("%"); /* Create limit tag */ if($from == -1){ $limit =""; }else{ $limit = "".$from."".$to.""; } /* Create list of attributes to fetch */ $pkgs = ""; foreach($package as $pkg){ $pkgs .="like".$pkg.""; } $xml_msg = "
    gosa_query_packages_list
    GOSAGOSA". $attr. " ".$release." OR ".$pkgs." ". $limit. "
    "; if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML']) && is_array($entries['XML'])){ /* Check if returned values represent a valid answer */ if(isset($entries['XML'])){ /* Unset header tags */ foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ if(isset($entries['XML'][$type])){ unset($entries['XML'][$type]); } } $ret = $entries['XML']; } } } return($ret); } public function FAI_get_server($name = "") { $xml_msg = "
    gosa_query_fai_server
    GOSAGOSA
    "; $ret = array(); if($this->connect()){ /* Check if returned values represent a valid answer */ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML']) && is_array($entries['XML'])){ /* Unset header tags */ foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ if(isset($entries['XML'][$type])){ unset($entries['XML'][$type]); } } $ret = $entries['XML']; } } return($ret); } public function FAI_get_classes($name) { $xml_msg = "
    gosa_query_fai_release
    GOSAGOSA". "".$name."
    ";; $ret = array(); if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML']) && is_array($entries['XML'])){ /* Unset header tags */ foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ if(isset($entries['XML'][$type])){ unset($entries['XML'][$type]); } } $ret = $entries['XML']; } } return($ret); } /*! \brief Returns an array containing all queued entries. @return Array All queued entries as an array. */ public function get_queued_entries($event_types = array("*"),$from=-1,$to=-1,$sort="timestamp DESC") { $ret = array(); $tags = ""; foreach($event_types as $type){ $tags .= "".$type.""; } if(count($event_types) > 1){ $tags = "or".$tags; } if(count($event_types)){ $tags = "".$tags.""; } $xml_msg = "
    gosa_query_jobdb
    GOSA GOSA ".$tags." ".$sort.""; if($from != -1 && $to != -1){ $xml_msg.= " ".$from." ".$to." "; } $xml_msg.= "
    "; if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML']) && is_array($entries['XML'])){ /* Unset header tags */ foreach(array("HEADER","SOURCE","TARGET","SESSION_ID") as $type){ unset($entries['XML'][$type]); } $ret = $entries['XML']; } } return($ret); } /*! \brief Checks if the given ids are used queue ids. @param Array The ids we want to check.. @return Array An array containing all ids as index and TRUE/FALSE as value. */ public function ids_exist($ids) { if(!is_array($ids)){ trigger_error("Requires an array as parameter."); return; } $ret = array(); $xml_msg = "
    gosa_query_jobdb
    GOSA GOSA or"; foreach($ids as $id){ $xml_msg .= " eq ".$id." "; } $xml_msg .= "
    "; if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML']) && is_array($entries['XML'])){ foreach($entries['XML'] as $entry){ if(is_array($entry) && array_key_exists("ID",$entry)){ $ret[] = $entry['ID']; } } } } return($ret); } /*! \brief Returns an entry containing all requested ids. @param Array The IDs of the entries we want to return. @return Array Of the requested entries. */ public function get_entries_by_mac($macs) { if(!is_array($macs)){ trigger_error("Requires an array as parameter."); return; } $ret = array(); $xml_msg = "
    gosa_query_jobdb
    GOSA GOSA or"; foreach($macs as $mac){ $xml_msg .= " eq ".$mac." "; } $xml_msg .= "
    "; if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML'])){ foreach($entries['XML'] as $name => $entry){ if(preg_match("/^ANSWER[0-9]*$/",$name)){ $ret[$name] = $entry; } } } } return($ret); } /*! \brief Returns an entry containing all requested ids. @param Array The IDs of the entries we want to return. @return Array Of the requested entries. */ public function get_entries_by_id($ids) { if(!is_array($ids)){ trigger_error("Requires an array as parameter."); return; } $ret = array(); $xml_msg = "
    gosa_query_jobdb
    GOSA GOSA or"; foreach($ids as $id){ $xml_msg .= " eq ".$id." "; } $xml_msg .= "
    "; if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML'])){ foreach($entries['XML'] as $name => $entry){ if(preg_match("/^ANSWER[0-9]*$/",$name)){ $ret[$name] = $entry; } } } } return($ret); } /*! \brief Checks if the given id is in use. @param Integer The ID of the entry. @return Boolean TRUE if entry exists. */ public function id_exists($id) { if(!is_numeric($id)){ trigger_error("Requires an integer as parameter."); return; } $xml_msg = "
    gosa_query_jobdb
    GOSA GOSA eq ".$id."
    "; if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if( isset($entries['XML']['HEADER']) && $entries['XML']['HEADER']=="answer" && isset($entries['XML']['ANSWER1'])){ return(TRUE); } } return(FALSE); } /*! \brief Returns an entry from the gosaSupportQueue @param Integer The ID of the entry we want to return. @return Array Of the requested entry. */ public function get_entry_by_id($id) { if(!is_numeric($id)){ trigger_error("Requires an integer as parameter."); return; } $ret = array(); $xml_msg = "
    gosa_query_jobdb
    GOSA GOSA eq ".$id."
    "; if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if( isset($entries['XML']['HEADER']) && $entries['XML']['HEADER']=="answer" && isset($entries['XML']['ANSWER1'])){ $ret = $entries['XML']['ANSWER1']; } } return($ret); } /*! \brief Removes a set of entries from the GOsa support queue. @param Array The IDs to remove. @return Boolean True on success. */ public function remove_entries($ids) { if(!is_array($ids)){ trigger_error("Requires an array as parameter."); return; } $ret = array(); $xml_msg = "
    gosa_delete_jobdb_entry
    GOSA GOSA or"; foreach($ids as $id){ $xml_msg .= " eq ".$id." "; } $xml_msg .= "
    "; if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML']) || isset($entries['COUNT'])){ new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::remove_entries()", $ids,"SUCCESS"); return(TRUE); }else{ new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::remove_entries()", $ids,"FAILED ".$this->get_error()); } } return(FALSE); } /*! \brief Removes an entry from the GOsa support queue. @param Integer The ID of the entry we want to remove. @return Boolean True on success. */ public function remove_entry($id) { return($this->remove_entries(array($id))); } /*! \brief Parses the given xml string into an array @param String XML string @return Array Returns an array containing the xml structure. */ private function xml_to_array($xml,$alternative_method = FALSE) { $params = array(); $level = array(); $parser = xml_parser_create_ns(); xml_parse_into_struct($parser, $xml, $vals, $index); $err_id = xml_get_error_code($parser); if($err_id){ xml_parser_free($parser); }else{ xml_parser_free($parser); if($this->use_alternative_xml_parse_method) { $params = $this->build_xml_array($vals); } else { foreach ($vals as $xml_elem) { if ($xml_elem['type'] == 'open') { if (array_key_exists('attributes',$xml_elem)) { list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']); } else { $level[$xml_elem['level']] = $xml_elem['tag']; } } if ($xml_elem['type'] == 'complete') { $start_level = 1; $test2 = &$params; while($start_level < $xml_elem['level']) { $test2 = &$test2[$level[$start_level]]; $start_level++; } /* Save tag attributes too. e.g. */ if(isset($xml_elem['attributes'])){ foreach($xml_elem['attributes'] as $name => $value){ $test2['ATTRIBUTES'][$name] = $value; } } if(!isset($test2[$xml_elem['tag']])){ if(isset($xml_elem['value'])){ $test2[$xml_elem['tag']] = $xml_elem['value']; } }else{ if(!is_array($test2[$xml_elem['tag']])){ $test2[$xml_elem['tag']] = array($test2[$xml_elem['tag']]); } $test2[$xml_elem['tag']][] = $xml_elem['value']; } } } } } if(!isset($params['XML'])){ if (!array_key_exists('XML', $params)){ $this->set_error(_("Cannot not parse XML!")); } $params = array("COUNT" => 0); } return($params); } function build_xml_array(&$vals) { $array = array(); while(count($vals)){ $key = key($vals); $val = $vals[$key]; unset($vals[$key]); if($val['type'] == "close"){ return($array); }elseif($val['type']=="open"){ $array[$val['tag']][] = $this->build_xml_array($vals); }elseif($val['type'] != "cdata"){ $data = array("VALUE" => "","ATTRIBUTES" => ""); foreach(array("value" => "VALUE", "attributes" => "ATTRIBUTES") as $name => $attr){ if(isset($val[$name])){ $data[$attr] = $val[$name]; } } $array[$val['tag']][] = $data; }else{ #print_a($val); } } return($array); } /*! \brief Updates an entry with a set of new values, @param Integer The ID of the entry, we want to update. @param Array The variables to update. @return Boolean Returns TRUE on success. */ public function update_entries($ids,$data) { if(!is_array($ids)){ trigger_error("Requires an array as first parameter."); return; } if(!is_array($data)){ trigger_error("Requires an array as second parameter."); return; } $attr = ""; foreach($data as $key => $value){ $key = strtolower($key); if(is_array($value)){ foreach($value as $sub_value){ $attr.= "<$key>".strtolower($sub_value)."\n"; } }else{ $attr.= "<$key>".strtolower($value)."\n"; } } $xml_msg = "
    gosa_update_status_jobdb_entry
    GOSA GOSA or"; foreach($ids as $id){ $xml_msg .= " eq ".$id." "; } $xml_msg .= " ".$attr."
    "; if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if(isset($entries['XML'])){ if(isset($entries['XML']['ERROR_STRING'])) { $this->set_error($entries['XML']['ERROR_STRING']); new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::update_entries()", $ids,"FAILED setting (".$attr.") error was ".$this->get_error()); return(FALSE); } new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::update_entries()", $ids,"SUCCESS"); return(TRUE); } } return(FALSE); } /*! \brief Returns the number of currently queued objects. @return Integer */ public function number_of_queued_entries($event_types) { $tags = ""; foreach($event_types as $type){ $tags .= "".$type.""; } if(count($event_types) > 1){ $tags = "or".$tags; } if(count($event_types)){ $tags = "".$tags.""; } $xml_msg = "". "
    gosa_query_jobdb
    ". "GOSA". "GOSA". "". $tags. "
    "; $xml_msg ="
    gosa_count_jobdb
    GOSAGOSA
    "; $this->connect(); if($this->connect()){ $entries = $this->_send($xml_msg,TRUE); if($this->o_sock->is_error()){ $this->set_error($this->o_sock->get_error()); return(0); } if(isset($entries['XML'])){ return($entries['XML']['COUNT']); } } return(-1); } public function send_data($header, $to, $data= array(), $answer_expected = FALSE) { $xml_message= ""; /* Prepare data */ foreach ($data as $key => $value){ if(is_array($value)){ foreach($value as $sub_value){ $xml_message.= "<$key>$sub_value"; } }else{ $xml_message.= "<$key>$value"; } } /* Multiple targets? */ if (!is_array($to)){ $to_targets= array($to); } else { $to_targets= $to; } /* Build target strings */ $target =""; foreach($to_targets as $to){ $target.= "$to"; } return $this->_send("
    $header
    GOSA$target".$xml_message."
    ",$answer_expected); } /* Allows simply appending a new DaemonEvent */ public function append($event, $skip_add_mac = FALSE) { if(!($event instanceof DaemonEvent)){ return(FALSE); } /* Add to queue if new */ if($event->is_new()){ $request_answer = FALSE; if($event->get_type() == SCHEDULED_EVENT){ $action = $event->get_schedule_action(); }elseif($event->get_type() == TRIGGERED_EVENT){ $action = $event->get_trigger_action(); }else{ trigger_error("Unknown type of queue event given."); return(FALSE); } /* Get event informations, like targets.. */ $targets = $event->get_targets(); $data = $event->save(); /* Append an entry for each target */ foreach($targets as $target){ if(!$skip_add_mac){ $data['macaddress'] = $target; } $this->send_data($action,$target,$data,$request_answer); if($this->is_error()){ return(FALSE); } } return(TRUE); }else{ /* Updated edited entry. */ $id = $event->get_id(); $data = $event->save(); return($this->update_entries(array($id),$data)); } return(FALSE); } /*! \brief Returns an array containing all queued entries. @return Array All queued entries as an array. */ public function _send($data, $answer_expected= FALSE) { $ret = array(); if(!$this->connect()){ return($ret); } $this->reset_error(); /****** Debug handling ******/ $debug = debug_backtrace(); $file = __FILE__; $function = __FUNCTION__; $line = __LINE__; $class = __CLASS__; foreach($debug as $info){ if(!in_array_strict($info['function'],array("send_data","_send"))){ $file = $info['file']; $line = $info['line']; $class = get_class($this); $function = $info['function']; break; } } @DEBUG(DEBUG_SI, $line, "".$class."::".$function."" , $file, "".htmlentities($data)."", $info=""); $start = microtime(1); /******* Start sending data *******/ if($this->connect()){ $this->o_sock->write($data); if ($answer_expected){ $str = trim($this->o_sock->read()); /* Check if something went wrong while reading */ if($this->o_sock->is_error()){ $this->set_error($this->o_sock->get_error()); @DEBUG(DEBUG_SI, $line, "".$class."::".$function."" , $file, sprintf('%.7f', microtime(1) - $start) , "FAILED Duration:"); return($ret); } $entries = $this->xml_to_array($str); if(isset($entries['XML']) && is_array($entries['XML'])){ $ret = $entries; if($this->use_alternative_xml_parse_method) { // --------- Seems broken, check for 'ERROR' but using 'ERROR_STRING' if(isset($entries['XML'][0]['ERROR'][0]['VALUE']) && $entries['XML'][0]['ERROR'][0]['VALUE'] == "1"){ $this->set_error($entries['XML'][0]['ERROR_STRING'][0]['VALUE']); new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", array($data=>$data),"FAILED ".$this->get_error()); // --------- }elseif(isset($entries['XML'][0]['ERROR'][0]['VALUE'])){ $this->set_error($entries['XML'][0]['ERROR'][0]['VALUE']); new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", array($data=>$data),"FAILED ".$this->get_error()); } }else{ if(isset($entries['XML']['ERROR_STRING'])) { $this->set_error($entries['XML']['ERROR_STRING']); new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", array($data=>$data),"FAILED ".$this->get_error()); }elseif(isset($entries['XML']['ERROR'])){ $this->set_error($entries['XML']['ERROR']); new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", array($data=>$data),"FAILED ".$this->get_error()); } } new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", array($data=>$data),"SUCCESS"); } }else{ new log("debug","DaemonEvent (IDS) ", "gosaSupportDaemon::_send()", array($data=>$data),"Fire & forget, not result.! ".$this->get_error()); } } @DEBUG(DEBUG_SI, $line, "".$class."::".$function."" , $file, sprintf('%.7f', microtime(1) - $start) , "Duration:"); return($ret); } static function send($header, $to, $data= array(), $answer_expected = FALSE) { $xml_message= ""; /* Get communication object */ $d= new gosaSupportDaemon(TRUE,10); /* Prepare data */ foreach ($data as $key => $value){ if(is_array($value)){ foreach($value as $sub_val){ $xml_message.= "<$key>$sub_val"; } }else{ $xml_message.= "<$key>$value"; } } /* Multiple targets? */ if (!is_array($to)){ $to_targets= array($to); } else { $to_targets= $to; } /* Build target strings */ $target =""; foreach($to_targets as $to){ $target.= "$to"; } return $d->_send("
    $header
    GOSA$target".$xml_message."
    ",$answer_expected); } /*! \brief Removes all jobs from the queue that are tiggered with a specific macAddress. @param String $mac The mac address for which we want to remove all jobs. */ function clean_queue_from_mac($mac) { global $config; if(!isset($config) || !$config){ $config = session::global_get('config'); } /* First of all we have to check which jobs are startet * for $mac */ $xml_msg ="
    gosa_query_jobdb
    GOSAGOSA".$mac."
    "; new log("debug","DaemonEvent ", "gosaSupportDaemon::clean_queue_from_mac()", array($mac => $mac)," start cleaning."); $data = $this->_send($xml_msg,TRUE); if(is_array($data) && isset($data['XML'])){ $already_aborted = FALSE; foreach($data['XML'] as $name => $entry){ if(preg_match("/answer[0-9]*/i",$name)){ $entry['STATUS'] = strtoupper($entry['STATUS']); switch($entry['STATUS']){ case 'PROCESSING' : /* Send abort event, but only once */ if($already_aborted){ break; }elseif(class_available("DaemonEvent_faireboot")){ $already_aborted = TRUE; $tmp = new DaemonEvent_faireboot($config); $tmp->add_targets(array($mac)); $tmp->set_type(TRIGGERED_EVENT); if(!$this->append($tmp)){ msg_dialog::display(_("Error"), sprintf(_("Cannot send abort event for entry %s!"), bold($entry['ID'])) , ERROR_DIALOG); new log("debug","DaemonEvent ", "gosaSupportDaemon::clean_queue_from_mac()", array($mac => $mac), "FAILED, could not send 'DaemonEvent_faireboot' for entry ID (".$entry['ID'].") - ".$this->get_error()); }else{ new log("debug","DaemonEvent ", "gosaSupportDaemon::clean_queue_from_mac()", array($mac => $mac), "SUCCESS, send 'DaemonEvent_faireboot' for entry ID (".$entry['ID'].")"); } ;break; }else{ /* Couldn't find abort event, just remove entry */ } case 'WAITING': case 'ERROR': default : /* Simply remove entries from queue. * Failed or waiting events, can be removed without any trouble. */ if(!$this->remove_entries(array($entry['ID']))){ msg_dialog::display(_("Error"), sprintf(_("Cannot remove entry %s!"), bold($entry['ID'])) , ERROR_DIALOG); } ;break; } } } } } static function ping($target) { if (tests::is_mac($target)){ /* Get communication object */ $d= new gosaSupportDaemon(TRUE,2); $answer= $d->_send("
    gosa_ping
    GOSA$target
    ", TRUE); return (count($answer) ? TRUE:FALSE); } return (FALSE); } /*! \brief Returns a list of all configured principals. (Uses the GOsa support daemon instead of the ldap database.) @return Array A list containing the names of all configured principals. */ public function krb5_list_principals($server) { $res = array(); /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_list_principals
    ". "GOSA". "".$server."". "
    "; $tmp = $this->_send($xml_msg,TRUE); if(isset($tmp['XML']['PRINCIPAL'])){ return($tmp['XML']['PRINCIPAL']); }else{ return($res); } } /*! \brief Returns the configuration settings for a given principal name. (Uses the GOsa support daemon instead of the ldap database.) @pram String The name of the requested principal. (e.g. peter@EXAMPLE.DE) @return Array A list containing the names of all configured principals. */ public function krb5_get_principal($server,$name) { $ret = array(); /* Check if the given name is a valid request value */ if(!is_string($name) || empty($name)){ trigger_error("The given principal name is not of type string or it is empty."); return($ret); } /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_get_principal
    ". "".$name."". "GOSA". "".$server."". "
    "; $res = $this->_send($xml_msg,TRUE); if(isset($res['XML'])){ return($res['XML']); }else{ return($ret); } } /*! \brief Creates a given principal with a set of configuration settings. For a list of configurable attributes have a look at 'krb5_get_principal()'. (Uses the GOsa support daemon instead of the ldap database.) @pram String The name of the principal to update. (e.g. peter@EXAMPLE.DE) @return Boolean TRUE on success else FALSE. */ public function krb5_add_principal($server,$name,$values) { $ret = FALSE; /* Check if the given name is a valid request value */ if(!is_string($name) || empty($name)){ trigger_error("The given principal name is not of type string or it is empty."); return($ret); } if(!is_array($values)){ trigger_error("No valid update settings given. The parameter must be of type array and must contain at least one entry"); return($ret); } /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } $attrs = ""; foreach($values as $key => $value){ if(empty($key) || is_numeric($key)){ trigger_error("Invalid configuration attribute given '".$key."=".$value."'."); return($ret); } $key = strtolower($key); if(is_array($value)){ foreach($value as $val){ $attrs.= "<$key>$val\n"; } }else{ $attrs.= "<$key>$value\n"; } } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_create_principal
    ". "".$name."". $attrs. "GOSA". "".$server."". "
    "; return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); } function krb5_ramdomize_key($server,$name) { /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_randomize_key
    ". "".$name."". "GOSA". "".$server."". "
    "; return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); } /*! \brief Updates a given principal with a set of configuration settings. For a list of configurable attributes have a look at 'krb5_get_principal()'. (Uses the GOsa support daemon instead of the ldap database.) @pram String The name of the principal to update. (e.g. peter@EXAMPLE.DE) @return Boolean TRUE on success else FALSE. */ public function krb5_set_principal($server,$name,$values) { $ret = FALSE; /* Check if the given name is a valid request value */ if(!is_string($name) || empty($name)){ trigger_error("The given principal name is not of type string or it is empty."); return($ret); } if(!is_array($values) || !count($values)){ trigger_error("No valid update settings given. The parameter must be of type array and must contain at least one entry"); return($ret); } /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } $attrs = ""; foreach($values as $key => $value){ if(empty($key) || is_numeric($key)){ trigger_error("Invalid configuration attribute given '".$key."=".$value."'."); return($ret); } $key = strtolower($key); if(is_array($value)){ foreach($value as $val){ $attrs.= "<$key>$val\n"; } }else{ $attrs.= "<$key>$value\n"; } } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_modify_principal
    ". "".$name."". $attrs. "GOSA". "".$server."". "
    "; return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); } /*! \brief Removes the given principal. (Uses the GOsa support daemon instead of the ldap database.) @pram String The name of the principal. (e.g. peter@EXAMPLE.DE) @return Boollean TRUE on success else FALSE */ public function krb5_del_principal($server,$name) { $ret = FALSE; /* Check if the given name is a valid request value */ if(!is_string($name) || empty($name)){ trigger_error("The given principal name is not of type string or it is empty."); return($ret); } /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_del_principal
    ". "".$name."". "GOSA". "".$server."". "
    "; return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); } /*! \brief Returns a list of configured password policies. (Uses the GOsa support daemon instead of the ldap database.) @return Array A list of all configured password policies. */ public function krb5_list_policies($server) { $res = array(); /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_list_policies
    ". "GOSA". "".$server."". "
    "; $res = $this->_send($xml_msg,TRUE); /* Check if there are results for POLICY */ if(isset($res['XML']['POLICY'])){ /* Ensure that we return an array */ $tmp = $res['XML']['POLICY']; if(!is_array($tmp)){ $tmp = array($tmp); } return($tmp); }else{ return(array()); } } /*! \brief Returns a list of configured password policies. (Uses the GOsa support daemon instead of the ldap database.) @return Array The policy settings for the given policy name. */ public function krb5_get_policy($server,$name) { $ret = array(); /* Check if the given name is a valid request value */ if(!is_string($name) || empty($name)){ trigger_error("The given policy name is not of type string or it is empty."); return($ret); } /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_get_policy
    ". "".$name."". "GOSA". "".$server."". "
    "; /* Possible attributes */ $attrs = array("MASK","POLICY","PW_HISTORY_NUM","PW_MAX_LIFE", "PW_MIN_CLASSES","PW_MIN_LENGTH","PW_MIN_LIFE","POLICY_REFCNT"); $tmp = $this->_send($xml_msg,TRUE); if(isset($tmp['XML'])){ foreach($attrs as $attr){ if(isset($tmp['XML'][$attr])){ $ret[$attr] = $tmp['XML'][$attr]; }else{ $ret[$attr] = ""; } } } return($ret); } /*! \brief Creates a new policy with a given set of configuration settings. For a list of configurable attributes have a look at 'krb5_get_policy()'. (Uses the GOsa support daemon instead of the ldap database.) @pram String The name of the policy to update. @pram Array The attributes to update @return Boolean TRUE on success else FALSE. */ public function krb5_add_policy($server,$name,$values) { $ret = FALSE; /* Check if the given name is a valid request value */ if(!is_string($name) || empty($name)){ trigger_error("The given policy name is not of type string or it is empty."); return($ret); } if(!is_array($values) || !count($values)){ trigger_error("No valid policy settings given. The parameter must be of type array and must contain at least one entry"); return($ret); } /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } /* Transform array into */ $attrs = ""; foreach($values as $id => $value){ if(empty($id) || is_numeric($id)){ trigger_error("Invalid policy configuration attribute given '".$id."=".$value."'."); return($ret); } $id = strtolower($id); $attrs.= "<$id>$value\n"; } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_create_policy
    ". "".$name."". $attrs. "GOSA". "".$server."". "
    "; return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); } /*! \brief Updates a given policy with a set of configuration settings. For a list of configurable attributes have a look at 'krb5_get_policy()'. (Uses the GOsa support daemon instead of the ldap database.) @pram String The name of the policy to update. @return Boolean TRUE on success else FALSE. */ public function krb5_set_policy($server,$name,$values) { $ret = FALSE; /* Check if the given name is a valid request value */ if(!is_string($name) || empty($name)){ trigger_error("The given policy name is not of type string or it is empty."); return($ret); } if(!is_array($values) || !count($values)){ trigger_error("No valid policy settings given. The parameter must be of type array and must contain at least one entry"); return($ret); } /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } /* Transform array into */ $attrs = ""; foreach($values as $id => $value){ if(preg_match("/^policy$/i",$id)) continue; if(empty($id) || is_numeric($id)){ trigger_error("Invalid policy configuration attribute given '".$id."=".$value."'."); return($ret); } $id = strtolower($id); $attrs.= "<$id>$value\n"; } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_modify_policy
    ". "".$name."". $attrs. "GOSA". "".$server."". "
    "; return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); } /*! \brief Removes the given password policy. (Uses the GOsa support daemon instead of the ldap database.) @return Boolean TRUE on success else FALSE */ public function krb5_del_policy($server,$name) { $ret = FALSE; /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } /* Check if the given name is a valid request value */ if(!is_string($name) || empty($name)){ trigger_error("The given policy name is not of type string or it is empty."); return($ret); } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_del_policy
    ". "".$name."". "GOSA". "".$server."". "
    "; return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); } /*! \brief Sets the password of for the given principal. (Uses the GOsa support daemon instead of the ldap database.) @param String The servers mac @param String The principals name @param String $the new password. @return Boolean TRUE on success else FALSE */ public function krb5_set_password($server,$name,$password) { $ret = FALSE; /* Check if the given server is a valid mac address */ if(!tests::is_mac($server)){ trigger_error("The given server address '".$server."' is invalid, it must be a valid mac address"); return($ret); } /* Check if the given name is a valid request value */ if(!is_string($name) || empty($name)){ trigger_error("The given principal name is not of type string or it is empty."); return($ret); } /* Prepare request event */ $xml_msg = "". "
    gosa_krb5_set_password
    ". "".$name."". "".$password."". "GOSA". "".$server."". "
    "; return($this->_send($xml_msg,TRUE) == TRUE && !$this->is_error()); } /*! \brief Returns log file informations for a given mac address @param $mac The mac address to fetch logs for. @retrun Array A Multidimensional array containing log infos. MAC_00_01_6C_9D_B9_FA['install_20080311_090900'][0]=debconf.log MAC_00_01_6C_9D_B9_FA['install_20080311_090900'][1]=syslog.log install_20080313_144450 ... */ public function get_log_info_for_mac($mac) { $xml_msg = "
    gosa_show_log_by_mac
    GOSA GOSA ".$mac."
    "; $res = $this->_send($xml_msg,TRUE); $ret = array(); if(isset($res['XML'])){ /* Filter all entry that look like this MAC_00_01_6C_9D_B9_FA */ foreach($res['XML'] as $name => $entry){ if(preg_match("/^MAC/",$name)){ /* Get list of available log files */ if(!is_array($entry)){ $entry = array($entry); } foreach($entry as $log_date){ $xml_msg2 = "
    gosa_show_log_files_by_date_and_mac
    GOSA GOSA ".$log_date." ".$mac."
    "; $ret[$mac][$log_date] = array(); $res = $this->_send($xml_msg2,TRUE); $ret[$mac][$log_date]['DATE_STR'] = $log_date; $ret[$mac][$log_date]['REAL_DATE'] = strtotime(preg_replace("/[^0-9]*/","",$log_date)); if(isset($res['XML']['SHOW_LOG_FILES_BY_DATE_AND_MAC'])){ $ret[$mac][$log_date]['FILES'] = $res['XML']['SHOW_LOG_FILES_BY_DATE_AND_MAC']; } } } } } return($ret); } public function get_log_file($mac,$date,$file) { $xml_msg ="
    gosa_get_log_file_by_date_and_mac
    GOSA GOSA ".$date." ".$mac." ".$file."
    "; $res = $this->_send($xml_msg,TRUE); if(isset($res['XML'][strtoupper($file)])){ return(base64_decode($res['XML'][strtoupper($file)])); } return(""); } /***************** * DAK - Functions *****************/ /*! \brief Returns all currenlty queued entries for a given DAK repository @param ... @return Array All queued entries. */ public function DAK_keyring_entries($server) { /* Ensure that we send the event to a valid mac address */ if(!is_string($server) || !tests::is_mac($server)){ trigger_error("No valid mac address given '".$server."'."); return; } /* Create query */ $xml_msg = "
    gosa_get_dak_keyring
    ".$server." GOSA
    "; $res = $this->_send($xml_msg,TRUE); /* Check if there are results for POLICY */ if(isset($res['XML'])){ $ret = array(); foreach($res['XML'] as $key => $entry){ if(preg_match("/^ANSWER/",$key)){ $ret[] = $entry; } } return($ret); }else{ return(array()); } } /*! \brief Imports the given key into the specified keyring (Servers mac address) @param String The servers mac address @param String The gpg key. @return Boolean TRUE on success else FALSE */ public function DAK_import_key($server,$key) { /* Ensure that we send the event to a valid mac address */ if(!is_string($server) || !tests::is_mac($server)){ trigger_error("No valid mac address given '".$server."'."); return; } /* Check if there is some cleanup required before importing the key. There may be some Header lines like: -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.6 (GNU/Linux) */ if(preg_match("/BEGIN PGP PUBLIC KEY BLOCK/",$key)){ /* Remove header */ $key = preg_replace("/^.*\n\n/sim","",$key); /* Remove footer */ $key = preg_replace("/-----.*$/sim","",$key); }elseif (!preg_match('%^[a-zA-Z0-9/+]*={0,2}$%', $key)) { /* Encode key if it is raw. */ $key = base64_encode($key); } /* Create query */ $xml_msg = "
    gosa_import_dak_key
    ".$server." ".$key." GOSA
    "; $res = $this->_send($xml_msg,TRUE); return($this->is_error()); } /*! \brief Removes a key from the keyring on the given server. @param String The servers mac address @param String The gpg key uid. @return Boolean TRUE on success else FALSE */ public function DAK_remove_key($server,$key) { /* Ensure that we send the event to a valid mac address */ if(!is_string($server) || !tests::is_mac($server)){ trigger_error("No valid mac address given '".$server."'."); return; } /* Create query */ $xml_msg = "
    gosa_remove_dak_key
    ".$server." ".$key." GOSA
    "; $res = $this->_send($xml_msg,TRUE); return($this->is_error()); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/accept-to-gettext.inc0000644000175000017500000001547310764462736017547 0ustar mikemike * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Usage: * * $locale=al2gt(, * ); * setlocale('LC_ALL', $locale); // or 'LC_MESSAGES', or whatever... * * Example: * * $langs=array('nl_BE.ISO-8859-15','nl_BE.UTF-8','en_US.UTF-8','en_GB.UTF-8'); * $locale=al2gt($langs, 'text/html'); * setlocale('LC_ALL', $locale); * * Note that this will send out header information (to be * RFC2616-compliant), so it must be called before anything is sent to * the user. * * Assumptions made: * * Charset encodings are written the same way as the Accept-Charset * HTTP header specifies them (RFC2616), except that they're parsed * case-insensitive. * * Country codes and language codes are the same in both gettext and * the Accept-Language syntax (except for the case differences, which * are dealt with easily). If not, some input may be ignored. * * The provided gettext-strings are fully qualified; i.e., no "en_US"; * always "en_US.ISO-8859-15" or "en_US.UTF-8", or whichever has been * used. "en.ISO-8859-15" is OK, though. * * The language is more important than the charset; i.e., if the * following is given: * * Accept-Language: nl-be, nl;q=0.8, en-us;q=0.5, en;q=0.3 * Accept-Charset: ISO-8859-15, utf-8;q=0.5 * * And the supplied parameter contains (amongst others) nl_BE.UTF-8 * and nl.ISO-8859-15, then nl_BE.UTF-8 will be picked. * * $Log: accept-to-gettext.inc,v $ * Revision 1.1.1.1 2003/11/19 19:31:15 wouter * * moved to new CVS repo after death of the old * * Fixed code to apply a default to both Accept-Charset and * Accept-Language if none of those headers are supplied; patch from * Dominic Chambers * * Revision 1.2 2003/08/14 10:23:59 wouter * Removed little error in Content-Type header syntaxis. * */ /* not really important, this one; perhaps I could've put it inline with * the rest. */ function find_match($curlscore,$curcscore,$curgtlang,$langval,$charval, $gtlang) { if($curlscore < $langval) { $curlscore=$langval; $curcscore=$charval; $curgtlang=$gtlang; } else if ($curlscore == $langval) { if($curcscore < $charval) { $curcscore=$charval; $curgtlang=$gtlang; } } return array($curlscore, $curcscore, $curgtlang); } function al2gt($gettextlangs, $mime) { /* Check if ACCEPT_LANGUAGE isset */ if(!isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])){ $_SERVER["HTTP_ACCEPT_LANGUAGE"] = ""; } if(!isset($_SERVER["HTTP_ACCEPT_CHARSET"])){ $_SERVER["HTTP_ACCEPT_CHARSET"] = ""; } /* default to "everything is acceptable", as RFC2616 specifies */ $acceptLang=(($_SERVER["HTTP_ACCEPT_LANGUAGE"] == '') ? '*' : $_SERVER["HTTP_ACCEPT_LANGUAGE"]); $acceptChar=(($_SERVER["HTTP_ACCEPT_CHARSET"] == '') ? 'ISO-8859-1,utf-8;q=0.7,*;q=0.7' : $_SERVER["HTTP_ACCEPT_CHARSET"]); $alparts=@preg_split("/,/",$acceptLang); $acparts=@preg_split("/,/",$acceptChar); /* Parse the contents of the Accept-Language header.*/ foreach($alparts as $part) { $part=trim($part); if(preg_match("/;/", $part)) { $lang=@preg_split("/;/",$part); $score=@preg_split("/=/",$lang[1]); $alscores[$lang[0]]=$score[1]; } else { $alscores[$part]=1; } } /* Do the same for the Accept-Charset header. */ /* RFC2616: ``If no "*" is present in an Accept-Charset field, then * all character sets not explicitly mentioned get a quality value of * 0, except for ISO-8859-1, which gets a quality value of 1 if not * explicitly mentioned.'' * * Making it 2 for the time being, so that we * can distinguish between "not specified" and "specified as 1" later * on. */ $acscores["ISO-8859-1"]=2; foreach($acparts as $part) { $part=trim($part); if(preg_match("/;/", $part)) { $cs=@preg_split("/;/",$part); $score=@preg_split("/=/",$cs[1]); $acscores[strtoupper($cs[0])]=$score[1]; } else { $acscores[strtoupper($part)]=1; } } if($acscores["ISO-8859-1"]==2) { $acscores["ISO-8859-1"]=(isset($acscores["*"])?$acscores["*"]:1); } /* * Loop through the available languages/encodings, and pick the one * with the highest score, excluding the ones with a charset the user * did not include. */ $curlscore=0; $curcscore=0; $curgtlang=NULL; foreach($gettextlangs as $gtlang) { $tmp1=preg_replace("/\_/","-",$gtlang); $tmp2=@preg_split("/\./",$tmp1); $allang=strtolower($tmp2[0]); $gtcs=strtoupper($tmp2[1]); $noct=@preg_split("/-/",$allang); if(!isset($alscores["*"])){ $alscores["*"] = ""; } if(!isset($alscores[$allang])){ $alscores[$allang] = ""; } if(!isset($alscores[$noct[0]])){ $alscores[$noct[0]] = ""; } if(!isset($acscores[$gtcs])){ $acscores[$gtcs] = ""; } $testvals=array( array($alscores[$allang], $acscores[$gtcs]), array($alscores[$noct[0]], $acscores[$gtcs]), array($alscores[$allang], $acscores["*"]), array($alscores[$noct[0]], $acscores["*"]), array($alscores["*"], $acscores[$gtcs]), array($alscores["*"], $acscores["*"])); $found=FALSE; foreach($testvals as $tval) { if(!$found && isset($tval[0]) && isset($tval[1])) { $arr=find_match($curlscore, $curcscore, $curgtlang, $tval[0], $tval[1], $gtlang); $curlscore=$arr[0]; $curcscore=$arr[1]; $curgtlang=$arr[2]; $found=TRUE; } } } /* We must re-parse the gettext-string now, since we may have found it * through a "*" qualifier.*/ $gtparts=@preg_split("/\./",$curgtlang); $tmp=strtolower($gtparts[0]); $lang=preg_replace("/\_/", "-", $tmp); if (!headers_sent()){ header("Content-Language: $lang"); if(isset($gtparts[1])){ $charset=$gtparts[1]; header("Content-Type: $mime; charset=$charset"); } } return $curgtlang; } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/functions_debug.inc0000644000175000017500000003036010763021251017332 0ustar mikemike ** Filename......: debuglib.php(s) ** Last changed..: 16. July 2003 ** License.......: Free to use. Postcardware ;) ** ************************************************* ** ** Functions in this library: ** ** print_a( array array [,int mode] ) ** prints arrays in a readable, understandable form. ** if mode is defined the function returns the output instead of ** printing it to the browser ** ** ** show_vars([int mode]) ** use this function on the bottom of your script to see all ** superglobals and global variables in your script in a nice ** formated way ** ** show_vars() without parameter shows $_GET, $_POST, $_SESSION, ** $_FILES and all global variables you've defined in your script ** ** show_vars(1) shows $_SERVER and $_ENV in addition ** ** ** ** print_result( result_handle ) ** prints a mysql_result set returned by mysql_query() as a table ** this function is work in progress! use at your own risk ** ** ** ** ** Happy debugging and feel free to email me your comments. ** ** ** ** History: (starting with version 0.5.3 at 2003-02-24) ** ** - added tooltips to the td's showing the type of keys and values (thanks Itomic) ** 2003-07-16 ** - pre() function now trims trailing tabs ************************************************/ # This file must be the first include on your page. /* used for tracking of generation-time */ { $MICROTIME_START = microtime(); @$GLOBALS_initial_count = count($GLOBALS); } /************************************************ ** print_a class and helper function ** prints out an array in a more readable way ** than print_r() ** ** based on the print_a() function from ** Stephan Pirson (Saibot) ************************************************/ class Print_a_class { # this can be changed to FALSE if you don't like the fancy string formatting var $look_for_leading_tabs = TRUE; var $output; var $iterations; var $key_bg_color = '1E32C8'; var $value_bg_color = 'DDDDEE'; var $fontsize = '8pt'; var $keyalign = 'center'; var $fontfamily = 'Verdana'; var $export_flag; var $show_object_vars; var $export_dumper_path = 'http://tools.www.mdc.xmc.de/print_a_dumper/print_a_dumper.php'; # i'm still working on the dumper! don't use it now # put the next line into the print_a_dumper.php file (optional) # print htmlspecialchars( stripslashes ( $_POST['array'] ) ); var $export_hash; function Print_a_class() { $this->export_hash = uniqid(''); } # recursive function! function print_a($array, $iteration = FALSE, $key_bg_color = FALSE) { $key_bg_color or $key_bg_color = $this->key_bg_color; # if print_a() was called with a fourth parameter (1 or 2) # and you click on the table a window opens with only the output of print_a() in it # 1 = serialized array # 2 = normal print_a() display /* put the following code on the page defined with $export_dumper_path; --->%---- snip --->%---- if($_GET['mode'] == 1) { print htmlspecialchars( stripslashes ( $_POST['array'] ) ); } elseif($_GET['mode'] == 2) { print_a(unserialize( stripslashes($_POST['array'])) ); } ---%<---- snip ---%<---- */ if( !$iteration && isset($this->export_flag) ) { $this->output .= '
    '; } # lighten up the background color for the key td's =) if( $iteration ) { for($i=0; $i<6; $i+=2) { $c = substr( $key_bg_color, $i, 2 ); $c = hexdec( $c ); ( $c += 15 ) > 255 and $c = 255; isset($tmp_key_bg_color) or $tmp_key_bg_color = ''; $tmp_key_bg_color .= sprintf( "%02X", $c ); } $key_bg_color = $tmp_key_bg_color; } # build a single table ... may be nested $this->output .= 'export_flag ? 'onClick="document.getElementById(\'pa_form_'.$this->export_hash.'\').submit();" )' : '' ).'>'; foreach( $array as $key => $value ) { $value_style = 'color:black;'; $key_style = 'color:white;'; $type = gettype( $value ); # print $type.'
    '; # change the color and format of the value switch( $type ) { case 'array': break; case 'object': $key_style = 'color:#FF9B2F;'; break; case 'integer': $value_style = 'color:green;'; break; case 'double': $value_style = 'color:red;'; break; case 'bool': $value_style = 'color:blue;'; break; case 'resource': $value_style = 'color:darkblue;'; break; case 'string': if( $this->look_for_leading_tabs && preg_match('/^\t/m', $value) ) { $search = array('/\t/', "/\n/"); $replace = array('   ','
    '); $value = preg_replace( $search, $replace, htmlspecialchars( $value ) ); $value_style = 'color:black;border:1px gray dotted;'; } else { $value_style = 'color:black;'; $value = nl2br( htmlspecialchars( $value ) ); } break; } $this->output .= ''; $this->output .= ''; $this->output .= ''; $this->output .= ''; } $this->output .= '
    '; $this->output .= $key; $this->output .= ''; # value output if($type == 'array') { if(count($value)){ $this->print_a( $value, TRUE, $key_bg_color ); }else{ $this->output .= '
    Array (empty)
    '; } } elseif($type == 'object') { if( $this->show_object_vars ) { $this->print_a( get_object_vars( $value ), TRUE, $key_bg_color ); } else { $this->output .= '
    OBJECT - '.get_class($value).'
    '; } } else { $this->output .= '
    '.$value.'
    '; } $this->output .= '
    '; } } # helper function.. calls print_a() inside the print_a_class function print_a( $array, $return_mode = FALSE, $show_object_vars = FALSE, $export_flag = FALSE ) { $e= error_reporting (0); if( is_array( $array ) or is_object( $array ) ) { $pa = new Print_a_class; $show_object_vars and $pa->show_object_vars = TRUE; $export_flag and $pa->export_flag = $export_flag; $pa->print_a( $array ); # $output = $pa->output; unset($pa); $output = &$pa->output; } else { $output = 'print_a( '.gettype( $array ).' )'; } error_reporting ($e); if($return_mode) { return $output; } else { print $output; return TRUE; } } // shows mysql-result as a table.. # not ready yet :( function print_result($RESULT) { if(!$RESULT) return; $fieldcount = mysql_num_fields($RESULT); for($i=0; $i<$fieldcount; $i++) { $tables[mysql_field_table($RESULT, $i)]++; } print ' '; print ''; print ''; foreach($tables as $tableName => $tableCount) { $col == '0054A6' ? $col = '003471' : $col = '0054A6'; print ''; } print ''; print ''; for($i=0;$i < mysql_num_fields($RESULT);$i++) { $FIELD = mysql_field_name($RESULT, $i); $col == '0054A6' ? $col = '003471' : $col = '0054A6'; print ''; } print ''; mysql_data_seek($RESULT, 0); while($DB_ROW = mysql_fetch_array($RESULT, MYSQL_NUM)) { $pointer++; if($toggle) { $col1 = "E6E6E6"; $col2 = "DADADA"; } else { $col1 = "E1F0FF"; $col2 = "DAE8F7"; } $toggle = !$toggle; print ''; foreach($DB_ROW as $value) { $col == $col1 ? $col = $col2 : $col = $col1; print ''; } print ''; } print '
    '.$tableName.'
    '.$FIELD.'
    '.nl2br($value).'
    '; mysql_data_seek($RESULT, 0); } function _script_globals() { global $GLOBALS_initial_count; $varcount = 0; foreach($GLOBALS as $GLOBALS_current_key => $GLOBALS_current_value) { if(++$varcount > $GLOBALS_initial_count) { /* die wollen wir nicht! */ if ($GLOBALS_current_key != 'HTTP_SESSION_VARS' && $GLOBALS_current_key != '_SESSION') { $script_GLOBALS[$GLOBALS_current_key] = $GLOBALS_current_value; } } } unset($script_GLOBALS['GLOBALS_initial_count']); return $script_GLOBALS; } function show_runtime() { $MICROTIME_END = microtime(); $MICROTIME_START = explode(' ', $GLOBALS['MICROTIME_START']); $MICROTIME_END = explode(' ', $MICROTIME_END); $GENERATIONSEC = $MICROTIME_END[1] - $MICROTIME_START[1]; $GENERATIONMSEC = $MICROTIME_END[0] - $MICROTIME_START[0]; $GENERATIONTIME = substr($GENERATIONSEC + $GENERATIONMSEC, 0, 8); return '(runtime: '.$GENERATIONTIME.' sec)'; } ###################### # function shows all superglobals and script defined global variables # show_vars() without the first parameter shows all superglobals except $_ENV and $_SERVER # show_vars(1) shows all # show_vars(,1) shows object properties in addition # function show_vars($show_all_vars = FALSE, $show_object_vars = FALSE) { if(isset($GLOBALS['no_vars'])) return; $script_globals = _script_globals(); print ' '; print '
    DEBUG '.show_runtime().' '; $vars_arr['script_globals'] = array('global script variables', '#7ACCC8'); $vars_arr['_GET'] = array('$_GET', '#7DA7D9'); $vars_arr['_POST'] = array('$_POST', '#F49AC1'); $vars_arr['_FILES'] = array('$_POST FILES', '#82CA9C'); $vars_arr['_SESSION'] = array('$_SESSION', '#FCDB26'); $vars_arr['_COOKIE'] = array('$_COOKIE', '#A67C52'); if($show_all_vars) { $vars_arr['_SERVER'] = array('SERVER', '#A186BE'); $vars_arr['_ENV'] = array('ENV', '#7ACCC8'); } foreach($vars_arr as $vars_name => $vars_data) { if($vars_name != 'script_globals') global $$vars_name; if($$vars_name) { print '
    '.$vars_data[0].'
    '; print_a($$vars_name, FALSE, $show_object_vars, FALSE ); print '
    '; } } print '
    '; } ###################### # function prints sql strings # function pre($sql_string, $simple_mode = FALSE) { if(!$simple_mode) { # erste leere Zeile im SQL lschen $sql_string = preg_replace('/\^s+/m','', $sql_string); # letze leere Zeile im SQL lschen $sql_string = preg_replace('/\s+$/m','', $sql_string); # kleinste Anzahl von fhrenden TABS zhlen preg_match_all('/^\t+/m', $sql_string, $matches); $minTabCount = strlen(min($matches[0])); # und entfernen $sql_string = preg_replace('/^\t{'.$minTabCount.'}/m', '', $sql_string); } print '
    '.$sql_string.'
    '; } ?> gosa-core-2.7.4/include/class_GOsaRegistration.inc0000644000175000017500000001102411470506143020565 0ustar mikemikeconfig = $config; } function getRegistrationServer() { return($this->server); } function getConnection($user = NULL, $password ="") { if($user === NULL){ return($this->config->getRpcHandle($this->server, $this->user,$this->password, TRUE, FALSE)); }else{ return($this->config->getRpcHandle($this->server, $user,$password, TRUE, FALSE)); } } function isServerAccessible($force = FALSE) { // Only request a new status every 2 seconds if(isset($this->cache['isServerAccessible']['called']) && !$force){ if($this->cache['isServerAccessible']['called'] + 2 > time()){ return($this->cache['isServerAccessible']['result']); } } // Check the connection status by calling a dummy function $con = $this->getConnection(); $res = $con->isInstanceRegistered("dummy"); // Store the result $this->cache['isServerAccessible']['called'] = time(); $this->cache['isServerAccessible']['result'] = $con->success(); return($con->success()); } function registrationNotWanted() { // While we are registered this will always be FALSE. if($this->isInstanceRegistered()) return(FALSE); // Check if the registration process was postponed or completely(>=0) canceled (-1) $date = $this->config->configRegistry->getPropertyValue('GOsaRegistration','askForRegistration'); return($date == -1); } function registrationRequired() { if($this->isInstanceRegistered()) return(FALSE); // Seems that we haven't received an instancePassword yet, this can has two reasons: // 1. Not registered yet or registration postponed 2. We do not want to registrate our instance. $date = $this->config->configRegistry->getPropertyValue('GOsaRegistration','askForRegistration'); if($date == -1){ // We do not want to registrate return(FALSE); }else{ // Registration may be postponed. return($date < time()); } } function isInstanceRegistered() { if($this->isServerAccessible()){ // First check if the server is accessible and if the instance is registered. return($this->isInstanceRegisteredWithServer()); }else{ // Server is down, now check if we've an instancePassword set in our gosa.conf. $instancePassword = $this->config->configRegistry->getPropertyValue('GOsaRegistration','instancePassword'); return(!empty($instancePassword)); } } function isInstanceRegisteredWithServer() { $con = $this->getConnection(); $res = $con->isInstanceRegistered($this->config->getInstanceUuid()); if($con->success()){ $this->isRegistered = $res; }else{ return(FALSE); } return($this->isRegistered); } static function plInfo() { return (array( "plProperties" => array( array( "name" => "instancePassword", "type" => "string", "default" => "", "description" => "", "check" => "gosaProperty::isString", "migrate" => "", "group" => "registration", "mandatory" => FALSE), array( "name" => "askForRegistration", "type" => "integer", "default" => "0", "description" => _("UNIX-timestamp pointing to the date GOsa will ask for a registration again (-1 to disable)"), "check" => "gosaProperty::isInteger", "migrate" => "", "group" => "registration", "mandatory" => FALSE), ) ) ); } } ?> gosa-core-2.7.4/include/class_ItemSelector.inc0000644000175000017500000002624511613731145017754 0ustar mikemikepid= preg_replace("/[^0-9]/", "", microtime(TRUE)); // Get list of used IDs if(!session::is_set('releaseSelector_USED_IDS')){ session::set('releaseSelector_USED_IDS',array()); } $usedIds = session::get('releaseSelector_USED_IDS'); // Generate instance wide unique ID $pid = ""; while($pid == "" || in_array_strict($pid, $usedIds)){ // Wait 1 msec to ensure that we definately get a new id if($pid != "") usleep(1); $tmp= gettimeofday(); $pid = 'l'.md5(microtime().$tmp['sec']); } // Only keep the last 10 list IDsi $usedIds = array_slice($usedIds, count($usedIds) -10, 10); $usedIds[] = $pid; session::set('releaseSelector_USED_IDS',$usedIds); $this->pid = $pid; // Transfer data $this->releaseBase = $releaseBase; $this->setBases($bases); $this->setBase($base); } function setSubmitButton($flag) { $this->submitButton= $flag; } function setHeight($value) { $this->height= $value; } function setBase($base) { $this->base= $base; if (isset($this->pathMapping[$base])) { $this->update(true); } } function setRootBase($base) { $this->releaseBase = $base; } function checkBase($base) { return isset($this->pathMapping[$base]); } function checkLastBaseUpdate() { return $this->lastState; } function setBases($bases) { global $config; $this->releaseInfo = array(); $this->pathMapping= array(); $selected= $this->base == $this->releaseBase?"Selected":""; $first= true; $last_indent= 2; foreach ($bases as $path => $data) { // Build path style display $this->pathMapping[$path]= preg_replace("/^".preg_quote($this->releaseBase,'/')."\/?/i", "/", $path); $this->releaseInfo[$path]['name'] = $data['name']; $this->releaseInfo[$path]['description'] = $data['desc']; } // Save bases to session for autocompletion session::global_set("pathMapping_{$this->pid}", $this->pathMapping); session::global_set("department_info_{$this->pid}", $this->releaseInfo); } function update($force= false) { global $config; // Analyze for base changes if needed $this->action= null; $last_base= $this->base; if(isset($_REQUEST["BPID_{$this->pid}"]) && $_REQUEST["BPID_{$this->pid}"] == $this->pid) { if (isset($_POST['bs_rebase_'.$this->pid])) { $new_base= base64_decode(get_post('bs_rebase_'.$this->pid)); if($new_base){ if (isset($this->pathMapping[$new_base])) { $this->base= $new_base; $this->action= 'rebase'; } else { $this->lastState= false; return false; } } }else{ // Input field set? if (isset($_POST['bs_input_'.$this->pid])) { // Take over input field base if ($this->submitButton && isset($_POST['submit_base_'.$this->pid]) || !$this->submitButton) { // Check if base is available $this->lastState= false; foreach ($this->pathMapping as $key => $path) { if (mb_strtolower($path) == mb_strtolower(get_post('bs_input_'.$this->pid))) { $this->base= $key; $this->lastState= true; break; } } } } } } /* Skip if there's no change */ if (($this->tree && $this->base == $last_base) && !$force) { return true; } $link= "onclick=\"\$('bs_rebase_".$this->pid."').value='".base64_encode($this->releaseBase)."'; $('submit_tree_base_".$this->pid."').click();\""; $initialValue = ""; if(isset($this->pathMapping[$this->base])){ $initialValue = $this->pathMapping[$this->base]; } $this->tree= " pid}').hide(); \" onfocus=\" \$('bs_{$this->pid}').hide(); \" onmouseover=\" mouseIsStillOver = true; function showIt() { if(mouseIsStillOver){ \$('bs_".$this->pid."').show(); } }; Element.clonePosition( \$('bs_".$this->pid."'), 'bs_input_".$this->pid."', { setHeight: false, setWidth: false, offsetTop:(Element.getHeight('bs_input_".$this->pid."')) }); rtimer=showIt.delay(0.25); \" onmouseout=\" mouseIsStillOver=false; rtimer=Element.hide.delay(0.25,'bs_".$this->pid."')\" value=\"".preg_replace('/"/','"',$initialValue)."\">"; // Autocompleter $this->tree.= "
    ". ""; $selected= $this->base == $this->releaseBase?"Selected":""; $this->tree.= "
    pid."')\"> / ["._("Root")."]
      \n"; $first= true; $last_indent= 1; $baseDepth = 0; foreach ($this->pathMapping as $base => $dummy) { // Do not render the base element if($base == $this->releaseBase){ $baseDepth = 1; continue; } // Build path style display $elements= explode('/', substr($base, strlen($this->releaseBase), strlen($base))); $indent= count($elements) - $baseDepth ; if (!$first && ($indent == $last_indent)) { $this->tree.= "\n"; } if ($indent > $last_indent) { $this->tree.= "
        \n"; } if ($indent < $last_indent) { for ($i= 0; $i < ($last_indent-$indent); $i++) { $this->tree.= "
      \n"; } $this->tree.= "\n"; } $selected= $this->base == $base?" class='treeListSelected'":""; $link= "onclick=\"\$('bs_rebase_".$this->pid."').value='".base64_encode($base)."';$('submit_tree_base_".$this->pid."').click();\""; $this->tree.= "
    • ". "". $this->gennonbreaks($this->releaseInfo[$base]['name']). ($this->releaseInfo[$base]['description']==''?'':' ['.$this->gennonbreaks($this->releaseInfo[$base]['description']).']'). ""; $last_indent= $indent; $first= false; } // Close tree for ($i= 1; $i<$last_indent; $i++) { $this->tree.= "
    \n"; } $this->tree.= "
    \n"; // Draw submitter if required if ($this->submitButton) { $this->tree.= image('images/lists/submit.png', "submit_base_".$this->pid, _("Submit")); } $this->tree.= ""; $this->tree.= ""; $this->tree.= ""; $this->lastState= true; return true; } function gennonbreaks($string) { return str_replace('-', '‑', str_replace(' ', ' ', $string)); } function render() { return $this->tree; } function getBase() { return $this->base; } function getAction() { // Do not do anything if this is not our BPID, or there's even no BPID available... if(!isset($_REQUEST["BPID_{$this->pid}"]) || $_REQUEST["BPID_{$this->pid}"] != $this->pid) { return; } if ($this->action) { return array("targets" => array($this->base), "action" => $this->action); } return null; } } ?> gosa-core-2.7.4/include/functions_helpviewer.inc0000644000175000017500000003542211424325206020424 0ustar mikemikeparser = xml_parser_create(); $this->filename = $file; xml_set_object($this->parser, $this); xml_set_element_handler($this->parser, "tag_open", "tag_close"); return($this->entries); } function parse() { $this->entries = array(); $fh= fopen($this->filename, "r"); $xmldata= fread($fh, 100000); fclose($fh); if(!xml_parse($this->parser, chop($xmldata))){ print(sprintf(_("XML error in guide.xml: %s at line %s"), bold(xml_error_string(xml_get_error_code($this->parser))), bold(xml_get_current_line_number($this->parser)))); exit; } return($this->entries); } function tag_open($parser,$tag,$attrs) { @$this->entries[$attrs['NAME']]=$attrs; } function tag_close(){; } } /* This function genereates the Index */ function genIndex() { global $helpobject; $str = ""; $helpobject = session::global_get('helpobject'); $ui= get_userinfo(); $test = new pluglist(session::global_get('config'), $ui); $current_hl = ""; foreach($helpobject['helpconf'] as $id => $attrs){ $path = $test -> get_path($id); $exists = true; $helpdir = "../doc/core/".$helpobject['lang']."/html/".preg_replace("/^.*\//i","",$path)."/"; if(!is_dir($helpdir)){ $exists = false; } $print_hl = false; if($current_hl != $attrs['HEADLINE']){ $current_hl = $attrs['HEADLINE']; $str .= "

    "._($current_hl)."

    "; } $name = $attrs['NAME']; $file = "index.html"; //$path = $plug; if($exists){ $str .= "

    "._($name)."

    "; }else{ $str .= "

    "._($name)." ("._("No help available for this plug-in.").")

    "; } } return (utf8_decode($str)); } /* Some replacements */ $backwardlink = " \""._("previous")."\" "; $forwardlink = " \""._("next")."\" "; $pre_mark = "" ; // Sign words with this $suf_mark = ""; // and this /* Define which tags musst be delete, header, navigation, banner */ $replacements=array(); $replacements['from']=array("@@si", "/border=\".*\"/i", "''", // "/alt=\".*\"/i", "/
    /", "@]*?>.*?ADDRESS>@si", "@<\/BODY[^>]*?>.*?HTML>@si", "''", "/src.*icons/i", "/src=\"/i", "/

    /", /* picture replacements */ // "", ); $replacements['to']=array("", " border=\"0\" ", "", // "", "", "", "", "", "src=\"", "src=\"images/", "

    ", /* picture replacements */ // "", ); /* Reads all files in specified directory with contents an some inforations about the file */ /* Read all files with contents*/ /* |Folder="/var/ww...", | |Fileprefix="node" | | |Filesuffix=".html" | | | |WithoutContent=false(This means : read content) | | | | |Singlepage=false(Means read all, if w want to read single, specify its filename)"*/ function readfiles($basedir,$prefix,$suffix,$onlyIndex,$singlepage=false) { global $replacements; $str = array(); // Temporary variable $cnt = 0; // Array index creation $file = ""; // Contains Filename $dir = opendir($basedir); $str['global']['start'] = $cnt; // collect basic informations - Startpage $str['global']['basedir'] = $basedir; // collect basic informations - Basedirectory /* Startime for Benchmark */ $start = (time()+microtime()); /* if singlepage == false -> Get all pages, */ if(!$singlepage) { /* While theres is an unreaded file in our resource */ while (($file = readdir($dir)) !== false) { if((is_dir($basedir."/".$file))&&($file != "..")&&($file[0]!=".")){ $str[$file]=(readfiles($basedir."/".$file."/",$prefix,$suffix,$onlyIndex,false)); } /* Filter all files which arn't intressting */ if((strstr($file,$suffix))&&($file!=".")&&($file!="..")&&(strstr($file,$prefix))){ /* Collect informations */ $str[$file]=array(); $str[$file]['name'] = $file; $str[$file]['size'] = filesize($basedir.$file); /* Readfile conent too ? */ if(!$onlyIndex){ $str[$file]['content'] = remove_unwanted_tags(linkwrapper(getcontents($basedir.$file),""),$replacements); $str[$file]['headline'] = getheader_from_content($str[$file]['content']); } /* Include file status, for debugging, not used in script yet */ $str[$file]['stat'] = stat($basedir.$file); $cnt++; } } /* Only get on file*/ }else{ /* Pages read = 1 */ $cnt = 1; /* Prepare result*/ $file = $singlepage; $str[$file] = array(); $str[$file]['name'] = $file; $str[$file]['size'] = filesize($basedir.$file); /* If onlyIndex == true skip reading content */ if(!$onlyIndex){ $str[$file]['content'] = remove_unwanted_tags(linkwrapper(getcontents($basedir.$file),""),$replacements); $str[$file]['headline'] = getheader_from_content($str[$file]['content']); } /* Include file status, for debugging, not used in script yet */ $str[$file]['stat'] = stat($basedir.$file); } /* Sort to right order */ asort($str); /* Endtime for Benchmark*/ $end = (time()+microtime()); $str['global']['cmptime'] = $end-$start; /* Number of pages readed */ $str['global']['numpages']= $cnt; closedir($dir); return($str); } /* Read filecontent */ function getcontents($file) { $str = "" ; // Temporary variable for file contents $tmp = "" ; // Temporary varibale for partitial file contents /* open file and read*/ $fp = fopen($file,"r"); if($fp) { while($tmp = fread($fp,512)) { $str.= $tmp; } }else{ return(false); } return($str); } /*Remove tags */ function remove_unwanted_tags($str,$replacements) { $str=preg_replace($replacements['from'],$replacements['to'],$str); return($str); } /*Converts the all links to specified path, is needed to get simple navigation */ function linkwrapper($str,$link) { $str = preg_replace("/HREF=\"http/i","target=\"_blank\" href=\"http",$str); $str = str_replace("HREF=\"","href=\"".$link."?pg=",$str); return($str); } /* Search content */ function search($arr,$word) { global $minwordlength,$allowed_chars_in_searchword; /* Prepare Vars */ $result =array(); // Search result, filename, + hits + hits per word + matches $words =array(); // Temporary searchword handling $useablewords =array(); // Temporary searchword handling $tryword = ""; // Temporary searchword handling $result['global']['maxhit'] = 0; session::un_set('lastresults'); session::un_set('parsed_search_keyword'); session::set('parsed_search_keyword',""); error_reporting(E_ALL | E_STRICT); /* prepare searchwords */ $word = trim($word); /* Filter all unusable chars */ $word = preg_replace($allowed_chars_in_searchword,"",$word); $words = explode(" ",str_replace("+"," ",$word)); /* Check all wordlengths */ foreach($words as $tryword){ $tryword = trim($tryword); /* Filter words smaler than 3 chars */ if(strlen($tryword)>=$minwordlength) { session::set('parsed_search_keyword', session::get('parsed_search_keyword').$tryword." "); $useablewords[]=$tryword; } } /* Use words to search the content */ foreach($arr as $keys=>$vals) { foreach($vals as $key=>$val){ /* overallhits counts hits per page */ $overallhits=0; /* Search all words */ foreach($useablewords as $word) { /* Skip key global, it contains no file data - it is a summary info*/ if($key!="global") { /* Get all hits for the word in $matches*/ preg_match_all("/".$word."/i",$arr[$keys][$key]['content'], $matches,PREG_OFFSET_CAPTURE); /* Filter in Tag results*/ if(count($matches[0])){ foreach($matches[0] as $num=>$hit){ if(isset($arr[$keys][$key]['content']) && (is_in_tag($arr[$keys][$key]['content'],$hit[1]))){ unset($matches[0][$num]); } } } /* Count matches */ $overallhits=$overallhits + count($matches[0]); /* Save collected data */ $result[$keys][$key]['hits'][$word] = count($matches[0]); $result[$keys][$key]['hits']['overall']= $overallhits; /* Save max hits for page */ if($overallhits > $result['global']['maxhit']){ $result['global']['maxhit']=$overallhits; } /* Add results for word to return value*/ $result[$keys][$key]['match'][$word]=array(); $result[$keys][$key]['match'][$word]=$matches[0]; } } } } /* Save result in Session, so we can mark words later, or go back to search, without searching again*/ session::set('lastresults',$result); return($result); } /* Detect 10 Best result entries, sort and call createResultEntry to create HTML output for complete list */ function searchlist($arr,$res,$maxresults) { $global = $res['global']; $topten = array(); // To detect 10 best solutions $ret = ""; // return value unset($res['global']); /* Detect 10 best Sites */ foreach($res as $key=>$resa) foreach($resa as $keya=>$val){ /* Skip results with no hits */ if($val['hits']['overall']>0){ $topten[$key."/".$keya] = $val['hits']['overall']; } } /* Sort by hit position in content, to easier mark words */ asort($topten); $topten = array_reverse($topten); $topten = (array_slice($topten,0,$maxresults)); /* We have a result, an array with all content, an array with hits and position and we have the 10 best hits */ /* Foreach */ foreach($topten as $key => $hits) { $ks = explode("/",$key); $k1 = $ks[0]; $k2 = $ks[1]; $ret.= createResultEntry($arr[$k1][$k2],$res[$k1][$k2],$key,$global['maxhit']); } /* appending footer message for resultlist */ $ret.= "
    ".sprintf(_("%s results for your search with the keyword %s"), bold(count($topten)), bold(session::get('parsed_search_keyword'))); $ret.="

    "; return($ret); } /* This function marks a string with the given search result for this string*/ function markup_page($arr,$res) { global $pre_mark,$suf_mark; $ret = ""; // return value $repl = array(); $posadd = 0; foreach($res['match'] as $word => $matches) { foreach($matches as $matchnr=>$match) { $repl[$match[1]]=$match[0]; } } ksort($repl); foreach($repl as $position=>$word) { $pos1 = strlen($arr); $arr= markword($arr,($position+$posadd),$word,$pre_mark,$suf_mark); $pos2 = strlen($arr); $posadd =$posadd + ($pos2 - $pos1); } return($arr); } /* This function marks a single word with the specified prefix and suffix */ function markword($string,$position,$word,$prefix,$suffix) { $wordlength = strlen($word); $wholelength = strlen($string); $first = substr($string,0,$position); $last = substr($string,($position+$wordlength),$wholelength); return($first.$prefix.$word.$suffix.$last); } /* Creates HTML output for a single search result entry */ function createResultEntry($entry,$res,$name,$max) { $percentage = (int)(($res['hits']['overall'] / $max) * 100) ; $color = dechex($percentage+150); $color2 = dechex(150 - $percentage); $entry['content'] = preg_replace("\"".$entry['headline']."\"","",$entry['content'],1); if(strlen($color)==1) $color = "0".$color; /* the object tag is needed for W3c */ $str = "

    ".utf8_encode($entry['headline'])." -".utf8_encode(substr(strip_tags($entry['content']),0,120))."... ".progressbar($percentage,50,8)."
    ".(sprintf(_("%s%% hit rate in file %s"), bold($percentage), bold($name)))."
    "; $str.= "
    "; return($str); } /*Simple function to detect if we prepare to change a tag or visible text */ function is_in_tag($string,$pos) { $pos1 = $pos2 = 0; if(preg_match("//",$string)){ $pos2 = strpos($string,">",$pos); } if ($pos1 > $pos2) { return(true); }else{ return(false); } } /*Returns frist line of readable text, it should be the headline */ function getheader_from_content($str) { $str = strip_tags($str); $pos = 0; $arr = preg_split("/\n/",$str); foreach($arr as $possibleheadline){ if(strlen($possibleheadline)>=3){ return $possibleheadline; } } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/exporter/0000755000175000017500000000000011752422553015340 5ustar mikemikegosa-core-2.7.4/include/exporter/class_PDF.inc0000644000175000017500000000074311244761735017641 0ustar mikemikeheadline= $headline; } function Header() { $this->SetFont('Helvetica','B',10); $this->Cell(0, 0, $this->headline, 0, 0, 'L'); $this->Ln(5); } function Footer() { $this->SetY(-15); $this->SetFont('Helvetica','I',8); $this->Cell(0,10, _("Page")." ".$this->PageNo().'/{nb}',0,0,'C'); } } ?> gosa-core-2.7.4/include/exporter/class_csvExporter.inc0000644000175000017500000000227411662665632021560 0ustar mikemike $dummy) { $columns[]= $index; } } // Generate header $this->result= "#"; foreach ($columns as $index) { if (isset($header[$index])){ $this->result.= trim($header[$index]).";"; } else { $this->result.= ";"; } } $this->result= preg_replace('/;$/', '', $this->result)."\n"; // Append entries foreach ($entries as $row) { foreach ($columns as $index) { if (isset($row["_sort$index"])){ $this->result.= trim(utf8_encode(html_entity_decode($row["_sort$index"]))).";"; } else { $this->result.= ";"; } } $this->result= preg_replace('/;$/', '', $this->result)."\n"; } } function query() { return $this->result; } static function getInfo() { return array("exportCVS" => array( "label" => _("CSV"), "image" => "images/lists/csv.png", "class"=> "csvExporter", "mime" => "text/x-csv", "filename" => "export.csv" )); } } ?> gosa-core-2.7.4/include/exporter/class_pdfExporter.inc0000644000175000017500000000735111613731145021524 0ustar mikemike $dummy) { $columns[]= $index; } } // Create new PDF $this->result=new PDF('L', 'mm', 'A4'); $this->result->AliasNbPages(); $this->result->SetFont('Helvetica', '', 10); $this->result->setHeadline(utf8_decode($headline)); $this->result->AddPage(); // Analyze for width $width= $this->calcWidth($header, $entries, $columns); // Render head $this->result->SetFont('','B'); $this->result->SetTextColor(0); $this->result->SetDrawColor(0,0,0); $this->result->SetLineWidth(.3); // Height calculator $height= 0; $fill= false; foreach ($entries as $row) { // Render header if ($height == 0) { // Generate header $this->result->SetFillColor(230,230,230); $this->result->SetFont('','B'); foreach ($columns as $order => $index) { if (isset($header[$index])){ $this->result->Cell($width[$order], 7, utf8_decode($header[$index]), 1, 0, 'C', 1); } else { $this->result->Cell($width[$order], 7, '', 1, 0, 'C', 1); } } $this->result->Ln(); $height= 7; // Set entry collors $this->result->SetFillColor(240,240,240); $this->result->SetFont(''); } foreach ($columns as $order => $index) { if (isset($row["_sort$index"])){ $this->result->Cell($width[$order], 6, utf8_decode($row["_sort$index"]), 'LR', 0, 'L', $fill); } else { $this->result->Cell($width[$order], 6, '', 'LR', 0, 'L', $fill); } } $this->result->Ln(); // Increase height to eventually create new page $height+= 8; if ($height > 220) { $height= 0; $this->result->Cell(array_sum($width), 0, '', 'T'); $this->result->AddPage(); $fill= false; } else { $fill= !$fill; } } $this->result->Cell(array_sum($width), 0, '', 'T'); } function calcWidth($header, $entries, $columns) { $width= array(); // Locate longest value for each column foreach ($columns as $order => $index) { $max= 0; if (isset($header[$index])){ $len= $this->result->GetStringWidth($header[$index]); if ($len > $max) { $max= $len; } } foreach ($entries as $row) { if (isset($row["_sort$index"])){ $len= $this->result->GetStringWidth($row["_sort$index"]); if ($len > $max) { $max= $len; } } } $width[]= $max; } // Scale to page width $printWidth= 280; $scale= $printWidth / array_sum($width); foreach ($width as $index => $w) { $width[$index]= (int)($width[$index] * $scale); } return $width; } function query() { return $this->result->Output("", "S"); } static function getInfo() { // Check if class defined $classes= get_declared_classes(); if(in_array_strict('FPDF', $classes)) { return array("exportPDF" => array( "label" => _("PDF"), "image" => "images/lists/pdf.png", "class"=> "pdfExporter", "mime" => "application/pdf", "filename" => "export.pdf" )); } else { return null; } } } ?> gosa-core-2.7.4/include/class_stats.inc0000644000175000017500000003753011465023737016520 0ustar mikemikeget_cfg_value('core', 'statsDatabaseDirectory'); if(empty($path)){ return(NULL); } // Check if path exists, if not try to create it if(!is_dir($path) ){ $res = @mkdir($path); if(!$res){ return(NULL); } } // Append a date suffix to the database file, to prevent huge and unusable database files. if($filename == ''){ $filename = date('Y-m-d'); } $tableFile = $path.'/'.$filename; // Try to return last valid handle. if(file_exists($tableFile) && isset(stats::$lastHandle[$filename]) && stats::$lastHandle[$filename] != NULL && is_resource(stats::$lastHandle[$filename])){ return(stats::$lastHandle[$filename]); } // Get statsFile property stats::$statsEnabled = $config->boolValueIsTrue('core', 'statsDatabaseEnabled'); if(!stats::$statsEnabled){ return(NULL); } // Check for SQLite extension if(!stats::checkSQLiteExtension()){ return(NULL); } // Check if we are able to read/write the given database file. if(!is_writeable($path) && !is_writeable(dirname($tableFile))){ return(NULL); } // Try to create database, if it exists just open it. $handle = sqlite_open($tableFile, 0666, $error); if($handle){ stats::createDatabaseOnDemand($handle); } stats::$lastHandle[$filename] = $handle; return($handle); } /*! \brief Returns a list of all created stat files * @return Array A list of all currently stored stat files. */ static function getLocalStatFiles() { $res = array(); // Check if we're creating logs right now. if(stats::getDatabaseHandle()){ global $config; // Walk through all files found in the storage path $path = $config->get_cfg_value('core', 'statsDatabaseDirectory'); $dir = opendir($path); while($file = readdir($dir)){ if(is_file($path.'/'.$file) && !preg_match('/.old$/', $file)) { $res[] = $file; } } } return($res); } /*! \brief Check whether the qlite extension is available or not. * @return boolean TRUE on success else FALSE */ static function checkSQLiteExtension() { return(function_exists('sqlite_popen')); } /*! \brief Drops the current stats table and thus enforces a recreation. * @param handle The database handle to use. */ static function dropTable($handle) { $TABLE_NAME = stats::$tableName; $query = "DROP TABLE '{$TABLE_NAME}'"; $ret = sqlite_query($query, $handle); stats::$lastHandle = NULL; stats::getDatabaseHandle(); } /*! \brief Returns the currently used amount of memory form the PHP process. * @return int The amount of bytes used for the PHP process. */ static function get_memory_usage() { return(memory_get_usage()); } /*! \brief Returns the current CPU load. * The result will be cached and one updated every 5 seconds. * @return float The current 'cpu_load'. */ static function get_cpu_load() { $cur = time(); if(empty(stats::$lastCpuLoad) || (($cur - stats::$lastCpuLoadTimestamp) >= 5 )){ list($one, $five, $ten) =preg_split("/ /",shell_exec('cat /proc/loadavg')); stats::$lastCpuLoad = $one; stats::$lastCpuLoadTimestamp = $cur; } return(stats::$lastCpuLoad); } /*! \brief This method checks if the 'stats' table is already present, * if it is not then it will be created. * @param handle The sqlite database handle */ static function createDatabaseOnDemand($handle) { $TABLE_NAME = stats::$tableName; // List Tables an check if there is already everything we need, // if not create it. $query = "SELECT name FROM sqlite_master WHERE type='table' and name='{$TABLE_NAME}'"; $ret = sqlite_query($query, $handle); if(!count(sqlite_fetch_all($ret))){ $query = " CREATE TABLE {$TABLE_NAME} ( ID INTEGER PRIMARY KEY, ACTID INTEGER, TYPE TEXT, PLUGIN TEXT, CATEGORY TEXT, ACTION TEXT, UUID TEXT, TIMESTAMP INTEGER, MTIMESTAMP REAL, DURATION REAL, RENDER_TIME REAL, AMOUNT INTEGER, MEMORY_USAGE INTEGER, CPU_LOAD FLOAT, INFO BLOB )"; $ret = sqlite_query($query, $handle); } } /*! \brief Creates a new 'stats' table entry. * -> Logs a GOsa action/activity in the sqlite stats table. * @param string type The action type, e.g. ldap/plugin/management * @param string plugin The plugin name, e.g. userManagement/user/posixAccount * @param string category The plugin category e.g. users/servers/groups * @param string action The action done e.g. edit/view/open/move * @param int amount The amount, e.g. for multiple edit * @param float duration The elapsed time. * @param string info Some infos form the action, e.g. the used hashing mehtod for pwd changes. */ static function log($type, $plugin, $category, $action, $amount = 1, $duration = 0, $info ='') { global $config; global $clicks; global $overallRenderTimer; // Get database handle, if it is invalid (NULL) return without creating stats $res = stats::getDatabaseHandle(); if(!$res) return; // Ensure that 'clicks' and 'overallRenderTimer' are present and set correctly, // if not simply create them with dummy values... // -- 'clicks' is a counter wich is set in main.php -> Number of page reloads // -- 'overallRenderTimer' is set in main.php -> timestamp of rendering start. if(!isset($clicks) || empty($clicks)) $clicks = 0; if(!isset($overallRenderTimer)){ $renderTime = 0; }else{ $renderTime = microtime(TRUE) - $overallRenderTimer; // Now set the overallRenderTimer to the current timestamp - else // we will not be able to sum up the render time in a single SQL statement. $overallRenderTimer = microtime(TRUE); } // Prepare values to be useable within a database $uuid = $config->getInstanceUUID(); $type = sqlite_escape_string($type); $plugin = sqlite_escape_string($plugin); $action = sqlite_escape_string($action); $timestamp = time(); $mtimestamp = number_format(microtime(TRUE), 4,'.',''); $amount = sqlite_escape_string($amount); $duration = sqlite_escape_string(number_format($duration, 4,'.','')); $renderTime = sqlite_escape_string(number_format($renderTime, 4,'.','')); $info = sqlite_escape_string($info); $clicks = sqlite_escape_string($clicks); $memory_usage = sqlite_escape_string(stats::get_memory_usage()); $cpu_load = sqlite_escape_string(number_format(stats::get_cpu_load(),4,'.','')); // Clean up category, which usally comes from acl_category and may still contain // some special chars like / $tmp = array(); foreach($category as $cat){ $tmp[] = trim($cat, '\/,; '); } $category = sqlite_escape_string(implode($tmp, ', ')); // Create insert statement. $TABLE_NAME = stats::$tableName; $query = " INSERT INTO {$TABLE_NAME} (ACTID, TYPE, PLUGIN, CATEGORY, ACTION, UUID, MTIMESTAMP, TIMESTAMP, AMOUNT, DURATION, RENDER_TIME, MEMORY_USAGE, CPU_LOAD, INFO) VALUES ('{$clicks}','{$type}','{$plugin}','{$category}','{$action}','{$uuid}', '{$mtimestamp}','{$timestamp}','{$amount}','{$duration}','{$renderTime}', '{$memory_usage}','{$cpu_load}','{$info}')"; sqlite_query($query, $res); } /*! \brief Closes all sqlite handles opened by this class */ static function closeHandles() { foreach(stats::lastHandle as $handle){ if($handle && is_resource($handle)){ sqlite_close($handle); } } } /*! \brief This method returns all entries of the GOsa-stats table. * You can limit the result by setting the from/to parameter (timestamp). * @param int from The timestamp to start the result from. * @param int to The timestamp to end the request. * @return array An array containing the requested entries. */ static function generateStatisticDump($filename) { // Get database connection $TABLE_NAME = stats::$tableName; $handle = stats::getDatabaseHandle($filename); if(!$handle) return; $query = " SELECT ". " TYPE, PLUGIN, CATEGORY, ACTION, ". " UUID, DATE(TIMESTAMP, 'unixepoch') as date, ". " AVG(DURATION), AVG(RENDER_TIME), SUM(AMOUNT), ". " AVG(MEMORY_USAGE), AVG(CPU_LOAD), INFO ". " FROM ". " stats ". " GROUP BY ". " TYPE, PLUGIN, CATEGORY, ACTION, UUID, date, INFO ". " ORDER BY ". " ID "; // Create Filter and start query $ret = sqlite_array_query($query, $handle, SQLITE_ASSOC); return($ret); } static function removeStatsFile($filename) { // Get statsFile property global $config; $path = $config->get_cfg_value('core', 'statsDatabaseDirectory'); stats::$statsEnabled = $config->boolValueIsTrue('core', 'statsDatabaseEnabled'); if(!stats::$statsEnabled){ return(NULL); } // We cannot log while the path to store logs in is empty. if(empty($path)){ return(NULL); } // Check if file exists and then remove it if(isset(stats::$lastHandle[$filename]) && is_resource(stats::$lastHandle[$filename])){ sqlite_close(stats::$lastHandle[$filename]); } if(file_exists($path.'/'.$filename)){ #unlink($path.'/'.$filename); rename($path.'/'.$filename, $path.'/'.$filename.".old"); } } static function getLdapObjectCount($config, $statisticConformResult = FALSE, $date = "") { $ldap = $config->get_ldap_link(); $ldap->cd($config->current['BASE']); // A list of objectClasses to search for, indexed by their // object-category $ocsToSearchFor = array( "department" => array("gosaDepartment"), "devices" => array("gotoDevice"), "fai" => array("FAIobject"), "gofaxlist" => array("goFaxRBlock","goFaxSBlock"), "gofonconference" => array("goFonConference"), "phone" => array("goFonHardware"), "gofonmacro" => array("goFonMacro"), "users" => array("gosaAccount"), "acls" => array("gosaAcl","gosaRole"), "application" => array("gosaApplication"), "ogroups" => array("gosaGroupOfNames"), "roles" => array("organizationalRole"), "server" => array("goServer"), "printer" => array("gotoPrinter"), "terminal" => array("gotoTerminal"), "workstation" => array("gotoWorkstation"), "winworkstation" => array("sambaSamAccount"), "incoming" => array("goHard"), "component" => array("ieee802Device"), "mimetypes" => array("gotoMimeType"), "groups" => array("posixGroup"), "sudo" => array("sudoRole")); // Build up a filter which contains all objectClass combined by OR. // We will later sum up the results using PHP. $filter = ""; $categoryCounter = array(); foreach($ocsToSearchFor as $category => $ocs){ foreach($ocs as $oc){ $filter.= "(objectClass={$oc})"; } $categoryCounter[$category] = 0; } $filter = "(|{$filter})"; // Initiate the ldap query $res = $ldap->search($filter, array('objectClass')); if($ldap->success()) { // Count number of results per category while($entry = $ldap->fetch()){ foreach($ocsToSearchFor as $category => $ocs){ if(count(array_intersect($ocs, $entry['objectClass']))){ $categoryCounter[$category] ++; break; } } } } arsort($categoryCounter); // Do we have to return the result as SQL INSERT statement? if($statisticConformResult){ $uuid = $config->getInstanceUUID(); $type = 'objectCount'; $plugin = ''; $action = ''; $date = (empty($date))?date('Y-m-d'):$date; $memory_usage = sqlite_escape_string(stats::get_memory_usage()); $cpu_load = sqlite_escape_string(number_format(stats::get_cpu_load(),4,'.','')); $sql = array(); foreach($categoryCounter as $category => $amount){ $sql[] = array( "type" => $type, "plugin" => $plugin, "category" => $category, "action" => $action, "uuid" => $uuid, "date" => $date, "duration" => 0, "render_time" => 0, "amount" => $amount, "mem_usage" => $memory_usage, "load" => $cpu_load, "info" => ''); } return($sql); }else{ return($categoryCounter); } } } ?> gosa-core-2.7.4/include/class_ldap.inc0000644000175000017500000014713411613731145016276 0ustar mikemike * Copyright (C) 1998 Eric Kilfoil * * ID: $$Id: class_ldap.inc 20952 2011-07-27 06:38:29Z hickert $$ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ define("ALREADY_EXISTING_ENTRY",-10001); define("UNKNOWN_TOKEN_IN_LDIF_FILE",-10002); define("NO_FILE_UPLOADED",10003); define("INSERT_OK",10000); define("SPECIALS_OVERRIDE", TRUE); class LDAP { public static $characterMap = NULL; public static $characterMapRegFrom = NULL; public static $characterMapRegTo = NULL; public static $readableMapRegFrom = NULL; public static $readableMapRegTo = NULL; var $hascon =false; var $reconnect=false; var $tls = false; var $cid; var $hasres = array(); var $sr = array(); var $re = array(); var $basedn =""; var $start = array(); // 0 if we are fetching the first entry, otherwise 1 var $error = ""; // Any error messages to be returned can be put here var $srp = 0; var $objectClasses = array(); // Information read from slapd.oc.conf var $binddn = ""; var $bindpw = ""; var $hostname = ""; var $follow_referral = FALSE; var $referrals= array(); var $max_ldap_query_time = 0; // 0, empty or negative values will disable this check function LDAP($binddn,$bindpw, $hostname, $follow_referral= FALSE, $tls= FALSE) { global $config; $this->follow_referral= $follow_referral; $this->tls=$tls; $this->binddn=LDAP::convert($binddn); $this->bindpw=$bindpw; $this->hostname=$hostname; /* Check if MAX_LDAP_QUERY_TIME is defined */ if(is_object($config) && $config->get_cfg_value("core","ldapMaxQueryTime") != ""){ $str = $config->get_cfg_value("core","ldapMaxQueryTime"); $this->max_ldap_query_time = (float)($str); } $this->connect(); } function getSearchResource() { $this->sr[$this->srp]= NULL; $this->start[$this->srp]= 0; $this->hasres[$this->srp]= false; return $this->srp++; } /* Function to replace all problematic characters inside a DN by \001XX, where \001 is decoded to chr(1) [ctrl+a]. It is not impossible, but very unlikely that this character is inside a DN. Currently used codes: , => CO \2C => CO ( => OB ) => CB / => SL \22 => DQ */ static function convert($dn) { if (SPECIALS_OVERRIDE == TRUE){ $tmp= preg_replace(array("/\\\\,/", "/\\\\2C/", "/\(/", "/\)/", "/\//", "/\\\\22/", '/\\\\"/'), array("\001CO", "\001CO", "\001OB", "\001CB", "\001SL", "\001DQ", "\001DQ"), $dn); return (preg_replace('/,\s+/', ',', $tmp)); } else { return ($dn); } } /* \brief Tests for the special-char handling of the currently used ldap database * and updates the LDAP class correspondingly. * This affects the LDAP::fix function and allows us to write * dns containing , " ( ) */ static function updateSpecialCharHandling() { global $config; // Load results from the session if they exists. if(session::is_set('LDAP::updateSpecialCharHandling')){ $data = session::get('LDAP::updateSpecialCharHandling'); $attrs = array("characterMap", "characterMapRegFrom", "characterMapRegTo", "readableMapRegFrom", "readableMapRegTo"); foreach($attrs as $attr){ LDAP::$$attr = $data[$attr]; } $attrs = array(implode(LDAP::$characterMapRegFrom,', '),implode(LDAP::$characterMapRegTo,', ')); @DEBUG(DEBUG_LDAP,__LINE__,__FUNCTION__,__FILE__,$attrs,"(Cached) Detected special-char handling for LDAP actions"); return; } // Set a default character handling. LDAP::$characterMapRegFrom = array("/\001CO/", "/\001OB/", "/\001CB/", "/\001SL/", "/\001DQ/"); LDAP::$characterMapRegTo = array("\,", "(", ")", "/", '\"'); // Set a default mapping to make readable strings out of dns. LDAP::$readableMapRegFrom = array("/\001CO/", "/\001OB/", "/\001CB/", "/\001SL/", "/\001DQ/", "/\\\\,/", "/\\\\2C/", "/\(/", "/\)/", "/\//", "/\\\\22/", '/\\\\"/'); LDAP::$readableMapRegTo = array(",", "(", ")", "/", '"',",", ",", "(", ")", "/", '"', '"'); if(LDAP::$characterMap === NULL){ LDAP::$characterMap = detectLdapSpecialCharHandling(); // Check if character-detection was successfull, if it wasn't use a fallback. if(LDAP::$characterMap !== NULL){ LDAP::$characterMapRegFrom = array(); LDAP::$characterMapRegTo = array(); LDAP::$readableMapRegFrom = array(); LDAP::$readableMapRegTo = array(); foreach(LDAP::$characterMap as $from => $to){ // Append entry character conversion LDAP::$characterMapRegFrom[] = "/".preg_quote(LDAP::convert($from),'/')."/"; LDAP::$characterMapRegTo[] = addslashes($to); // Append entry make readable array LDAP::$readableMapRegFrom[] = "/".preg_quote($to,'/')."/"; LDAP::$readableMapRegFrom[] = "/".preg_quote(LDAP::convert($to),'/')."/"; LDAP::$readableMapRegTo[] = stripslashes($from); LDAP::$readableMapRegTo[] = stripslashes($from); } }else{ // To avoid querying a hundred times without any success, stop here. LDAP::$characterMap = array(); } } // Store results in the session. $attrs = array("characterMap", "characterMapRegFrom", "characterMapRegTo", "readableMapRegFrom", "readableMapRegTo"); $data = array(); foreach($attrs as $attr){ $data[$attr] = LDAP::$$attr; } session::set("LDAP::updateSpecialCharHandling", $data); $attrs = array(implode(LDAP::$characterMapRegFrom,', '),implode(LDAP::$characterMapRegTo,', ')); @DEBUG(DEBUG_LDAP,__LINE__,__FUNCTION__,__FILE__,$attrs,"Detected special-char handling for LDAP actions"); } /*! \brief This methods replaces non-readable characters be readable ones, * depends on what were detect in 'updateSpecialCharHandling'. * @param String The DN/string to cleanup * @return String The readable string. */ static function makeReadable($dn) { if(LDAP::$characterMap === NULL) LDAP::updateSpecialCharHandling(); return (preg_replace(LDAP::$readableMapRegFrom,LDAP::$readableMapRegTo,$dn)); } /* \brief Function to fix all problematic characters inside a DN by replacing \001XX * codes to their original values. See "convert" for more information. * The ',' characters are always expanded to \, (not \2C), since all tested LDAP * servers seem to take it the correct way. * @param String The DN to convert characters in. * @param String The converted dn. */ static function fix($dn) { if (SPECIALS_OVERRIDE == TRUE){ // Update the conversion instruction set. if(LDAP::$characterMap === NULL) LDAP::updateSpecialCharHandling(); return (preg_replace(LDAP::$characterMapRegFrom,LDAP::$characterMapRegTo,$dn)); } else { return ($dn); } } /* Function to fix problematic characters in DN's that are used for search requests. I.e. member=.... */ static function prepare4filter($dn) { $fixed= normalizeLdap(str_replace('\\\\', '\\\\\\', LDAP::fix($dn))); return str_replace('\\,', '\\\\,', $fixed); } function connect() { $this->hascon=false; $this->reconnect=false; if ($this->cid= @ldap_connect($this->hostname)) { @ldap_set_option($this->cid, LDAP_OPT_PROTOCOL_VERSION, 3); if (function_exists("ldap_set_rebind_proc") && $this->follow_referral) { @ldap_set_option($this->cid, LDAP_OPT_REFERRALS, 1); @ldap_set_rebind_proc($this->cid, array(&$this, "rebind")); } if (function_exists("ldap_start_tls") && $this->tls){ @ldap_start_tls($this->cid); } $this->error = "No Error"; if ($bid = @ldap_bind($this->cid, LDAP::fix($this->binddn), $this->bindpw)) { $this->error = "Success"; $this->hascon=true; } else { if ($this->reconnect){ if ($this->error != "Success"){ $this->error = "Could not rebind to " . $this->binddn; } } else { $this->error = "Could not bind to " . $this->binddn; } } } else { $this->error = "Could not connect to LDAP server"; } } function rebind($ldap, $referral) { $credentials= $this->get_credentials($referral); if (@ldap_bind($ldap, LDAP::fix($credentials['ADMINDN']), $credentials['ADMINPASSWORD'])) { $this->error = "Success"; $this->hascon=true; $this->reconnect= true; return (0); } else { $this->error = "Could not bind to " . $credentials['ADMINDN']; return NULL; } } function reconnect() { if ($this->reconnect){ @ldap_unbind($this->cid); $this->cid = NULL; } } function unbind() { @ldap_unbind($this->cid); $this->cid = NULL; } function disconnect() { if($this->hascon){ @ldap_close($this->cid); $this->hascon=false; } } function cd($dir) { if ($dir == ".."){ $this->basedn = $this->getParentDir(); } else { $this->basedn = LDAP::convert($dir); } } function getParentDir($basedn = "") { if ($basedn==""){ $basedn = $this->basedn; } else { $basedn = LDAP::convert($basedn); } return(preg_replace("/[^,]*[,]*[ ]*(.*)/", "$1", $basedn)); } function search($srp, $filter, $attrs= array()) { if($this->hascon){ if ($this->reconnect) $this->connect(); $start = microtime(true); $this->clearResult($srp); $this->sr[$srp] = @ldap_search($this->cid, LDAP::fix($this->basedn), $filter, $attrs); $this->error = @ldap_error($this->cid); $this->resetResult($srp); $this->hasres[$srp]=true; /* Check if query took longer as specified in max_ldap_query_time */ if($this->max_ldap_query_time){ $diff = microtime(true) - $start; if($diff > $this->max_ldap_query_time){ msg_dialog::display(_("Performance warning"), sprintf(_("LDAP performance is poor: last query took %.2fs!"), $diff), WARNING_DIALOG); } } $this->log("LDAP operation: time=".(microtime(true)-$start)." operation=search('".LDAP::fix($this->basedn)."', '$filter')"); // Create statistic table entry stats::log('ldap', $class = get_class($this), $category = array(), $action = __FUNCTION__, $amount = 1, $duration = (microtime(TRUE) - $start)); return($this->sr[$srp]); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function ls($srp, $filter = "(objectclass=*)", $basedn = "",$attrs = array("*")) { if($this->hascon){ if ($this->reconnect) $this->connect(); $this->clearResult($srp); if ($basedn == "") $basedn = $this->basedn; else $basedn= LDAP::convert($basedn); $start = microtime(true); $this->sr[$srp] = @ldap_list($this->cid, LDAP::fix($basedn), $filter,$attrs); $this->error = @ldap_error($this->cid); $this->resetResult($srp); $this->hasres[$srp]=true; /* Check if query took longer as specified in max_ldap_query_time */ if($this->max_ldap_query_time){ $diff = microtime(true) - $start; if($diff > $this->max_ldap_query_time){ msg_dialog::display(_("Performance warning"), sprintf(_("LDAP performance is poor: last query took %.2fs!"), $diff), WARNING_DIALOG); } } $this->log("LDAP operation: time=".(microtime(true) - $start)." operation=ls('".LDAP::fix($basedn)."', '$filter')"); // Create statistic table entry stats::log('ldap', $class = get_class($this), $category = array(), $action = __FUNCTION__, $amount = 1, $duration = (microtime(TRUE) - $start)); return($this->sr[$srp]); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function cat($srp, $dn,$attrs= array("*"), $filter = "(objectclass=*)") { if($this->hascon){ if ($this->reconnect) $this->connect(); $this->clearResult($srp); $this->sr[$srp] = @ldap_read($this->cid, LDAP::fix($dn), $filter,$attrs); $this->error = @ldap_error($this->cid); $this->resetResult($srp); $this->hasres[$srp]=true; return($this->sr[$srp]); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function object_match_filter($dn,$filter) { if($this->hascon){ if ($this->reconnect) $this->connect(); $res = @ldap_read($this->cid, LDAP::fix($dn), $filter, array("objectClass")); $rv = @ldap_count_entries($this->cid, $res); return($rv); }else{ $this->error = "Could not connect to LDAP server"; return(FALSE); } } function set_size_limit($size) { /* Ignore zero settings */ if ($size == 0){ @ldap_set_option($this->cid, LDAP_OPT_SIZELIMIT, 10000000); } if($this->hascon){ @ldap_set_option($this->cid, LDAP_OPT_SIZELIMIT, $size); } else { $this->error = "Could not connect to LDAP server"; } } function fetch($srp) { $att= array(); if($this->hascon){ if($this->hasres[$srp]){ if ($this->start[$srp] == 0) { if ($this->sr[$srp]){ $this->start[$srp] = 1; $this->re[$srp]= @ldap_first_entry($this->cid, $this->sr[$srp]); } else { return array(); } } else { $this->re[$srp]= @ldap_next_entry($this->cid, $this->re[$srp]); } if ($this->re[$srp]) { $att= @ldap_get_attributes($this->cid, $this->re[$srp]); $att['dn']= trim(LDAP::convert(@ldap_get_dn($this->cid, $this->re[$srp]))); } $this->error = @ldap_error($this->cid); if (!isset($att)){ $att= array(); } return($att); }else{ $this->error = "Perform a fetch with no search"; return(""); } }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function resetResult($srp) { $this->start[$srp] = 0; } function clearResult($srp) { if($this->hasres[$srp]){ $this->hasres[$srp] = false; @ldap_free_result($this->sr[$srp]); } } function getDN($srp) { if($this->hascon){ if($this->hasres[$srp]){ if(!$this->re[$srp]) { $this->error = "Perform a Fetch with no valid Result"; } else { $rv = @ldap_get_dn($this->cid, $this->re[$srp]); $this->error = @ldap_error($this->cid); return(trim(LDAP::convert($rv))); } }else{ $this->error = "Perform a Fetch with no Search"; return(""); } }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function count($srp) { if($this->hascon){ if($this->hasres[$srp]){ $rv = @ldap_count_entries($this->cid, $this->sr[$srp]); $this->error = @ldap_error($this->cid); return($rv); }else{ $this->error = "Perform a Fetch with no Search"; return(""); } }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function rm($attrs = "", $dn = "") { if($this->hascon){ if ($this->reconnect) $this->connect(); if ($dn == "") $dn = $this->basedn; $r = ldap_mod_del($this->cid, LDAP::fix($dn), $attrs); $this->error = @ldap_error($this->cid); return($r); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function mod_add($attrs = "", $dn = "") { if($this->hascon){ if ($this->reconnect) $this->connect(); if ($dn == "") $dn = $this->basedn; $r = @ldap_mod_add($this->cid, LDAP::fix($dn), $attrs); $this->error = @ldap_error($this->cid); return($r); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function rename($attrs, $dn = "") { if($this->hascon){ if ($this->reconnect) $this->connect(); if ($dn == "") $dn = $this->basedn; $r = @ldap_mod_replace($this->cid, LDAP::fix($dn), $attrs); $this->error = @ldap_error($this->cid); return($r); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function rmdir($deletedn) { if($this->hascon){ if ($this->reconnect) $this->connect(); $r = @ldap_delete($this->cid, LDAP::fix($deletedn)); $this->error = @ldap_error($this->cid); return($r ? $r : 0); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } /*! \brief Move the given Ldap entry from $source to $dest @param String $source The source dn. @param String $dest The destination dn. @return Boolean TRUE on success else FALSE. */ function rename_dn($source,$dest) { /* Check if source and destination are the same entry */ if(strtolower($source) == strtolower($dest)){ trigger_error("Source and destination can't be the same entry."); $this->error = "Source and destination can't be the same entry."; return(FALSE); } /* Check if destination entry exists */ if($this->dn_exists($dest)){ trigger_error("Destination '$dest' already exists."); $this->error = "Destination '$dest' already exists."; return(FALSE); } /* Extract the name and the parent part out ouf source dn. e.g. cn=herbert,ou=department,dc=... parent => ou=department,dc=... dest_rdn => cn=herbert */ $parent = preg_replace("/^[^,]+,/","", $dest); $dest_rdn = preg_replace("/,.*$/","",$dest); if($this->hascon){ if ($this->reconnect) $this->connect(); $r= ldap_rename($this->cid,@LDAP::fix($source), @LDAP::fix($dest_rdn),@LDAP::fix($parent),TRUE); $this->error = ldap_error($this->cid); /* Check if destination dn exists, if not the server may not support this operation */ $r &= is_resource($this->dn_exists($dest)); return($r); }else{ $this->error = "Could not connect to LDAP server"; return(FALSE); } } /** * Function rmdir_recursive * * Description: Based in recursive_remove, adding two thing: full subtree remove, and delete own node. * Parameters: The dn to delete * GiveBack: True on sucessfull , 0 in error, and "" when we don't get a ldap conection * */ function rmdir_recursive($srp, $deletedn) { if($this->hascon){ if ($this->reconnect) $this->connect(); $delarray= array(); /* Get sorted list of dn's to delete */ $this->ls ($srp, "(objectClass=*)",$deletedn); while ($this->fetch($srp)){ $deldn= $this->getDN($srp); $delarray[$deldn]= strlen($deldn); } arsort ($delarray); reset ($delarray); /* Really Delete ALL dn's in subtree */ foreach ($delarray as $key => $value){ $this->rmdir_recursive($srp, $key); } /* Finally Delete own Node */ $r = @ldap_delete($this->cid, LDAP::fix($deletedn)); $this->error = @ldap_error($this->cid); return($r ? $r : 0); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function makeReadableErrors($error,$attrs) { global $config; if($this->success()) return(""); $str = ""; if(preg_match("/^objectClass: value #([0-9]*) invalid per syntax$/", $this->get_additional_error())){ $oc = preg_replace("/^objectClass: value #([0-9]*) invalid per syntax$/","\\1", $this->get_additional_error()); if(isset($attrs['objectClass'][$oc])){ $str.= " - objectClass: ".$attrs['objectClass'][$oc].""; } } if($error == "Undefined attribute type"){ $str = " - attribute: ".preg_replace("/:.*$/","",$this->get_additional_error()).""; } @DEBUG(DEBUG_LDAP,__LINE__,__FUNCTION__,__FILE__,$attrs,"Erroneous data"); return($str); } function modify($attrs) { if(count($attrs) == 0){ return (0); } if($this->hascon){ $start = microtime(TRUE); if ($this->reconnect) $this->connect(); $r = @ldap_modify($this->cid, LDAP::fix($this->basedn), $attrs); $this->error = @ldap_error($this->cid); if(!$this->success()){ $this->error.= $this->makeReadableErrors($this->error,$attrs); } // Create statistic table entry stats::log('ldap', $class = get_class($this), $category = array(), $action = __FUNCTION__, $amount = 1, $duration = (microtime(TRUE) - $start)); return($r ? $r : 0); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function add($attrs) { if($this->hascon){ $start = microtime(TRUE); if ($this->reconnect) $this->connect(); $r = @ldap_add($this->cid, LDAP::fix($this->basedn), $attrs); $this->error = @ldap_error($this->cid); if(!$this->success()){ $this->error.= $this->makeReadableErrors($this->error,$attrs); } // Create statistic table entry stats::log('ldap', $class = get_class($this), $category = array(), $action = __FUNCTION__, $amount = 1, $duration = (microtime(TRUE) - $start)); return($r ? $r : 0); }else{ $this->error = "Could not connect to LDAP server"; return(""); } } function create_missing_trees($srp, $target) { global $config; $real_path= substr($target, 0, strlen($target) - strlen($this->basedn) -1 ); if ($target == $this->basedn){ $l= array("dummy"); } else { $l= array_reverse(gosa_ldap_explode_dn($real_path)); } unset($l['count']); $cdn= $this->basedn; $tag= ""; /* Load schema if available... */ $classes= $this->get_objectclasses(); foreach ($l as $part){ if ($part != "dummy"){ $cdn= "$part,$cdn"; } /* Ignore referrals */ $found= false; foreach($this->referrals as $ref){ $base= preg_replace('!^[^:]+://[^/]+/([^?]+).*$!', '\\1', $ref['URI']); if ($base == $cdn){ $found= true; break; } } if ($found){ continue; } $this->cat ($srp, $cdn); $attrs= $this->fetch($srp); /* Create missing entry? */ if (count ($attrs)){ /* Catch the tag - if present */ if (isset($attrs['gosaUnitTag'][0])){ $tag= $attrs['gosaUnitTag'][0]; } } else { $type= preg_replace('/^([^=]+)=.*$/', '\\1', $cdn); $param= LDAP::fix(preg_replace('/^[^=]+=([^,]+).*$/', '\\1', $cdn)); $param=preg_replace(array('/\\\\,/','/\\\\"/'),array(',','"'),$param); $na= array(); /* Automatic or traditional? */ if(count($classes)){ /* Get name of first matching objectClass */ $ocname= ""; foreach($classes as $class){ if (isset($class['MUST']) && in_array_strict($type, $class['MUST'])){ /* Look for first classes that is structural... */ if (isset($class['STRUCTURAL'])){ $ocname= $class['NAME']; break; } /* Look for classes that are auxiliary... */ if (isset($class['AUXILIARY'])){ $ocname= $class['NAME']; } } } /* Bail out, if we've nothing to do... */ if ($ocname == ""){ msg_dialog::display(_("Internal error"), sprintf(_("Cannot automatically create subtrees with RDN %s: no object class found"), bold($type)), FATAL_ERROR_DIALOG); exit(); } /* Assemble_entry */ if ($tag != ""){ $na['objectClass']= array($ocname, "gosaAdministrativeUnitTag"); $na["gosaUnitTag"]= $tag; } else { $na['objectClass']= array($ocname); } if (isset($classes[$ocname]['AUXILIARY'])){ $na['objectClass'][]= $classes[$ocname]['SUP']; } if ($type == "dc"){ /* This is bad actually, but - tell me a better way? */ $na['objectClass'][]= 'locality'; } $na[$type]= $param; // Fill in MUST values - but do not overwrite existing ones. if (is_array($classes[$ocname]['MUST'])){ foreach($classes[$ocname]['MUST'] as $attr){ if(isset($na[$attr]) && !empty($na[$attr])) continue; $na[$attr]= "filled"; } } } else { /* Use alternative add... */ switch ($type){ case 'ou': if ($tag != ""){ $na["objectClass"]= array("organizationalUnit", "gosaAdministrativeUnitTag"); $na["gosaUnitTag"]= $tag; } else { $na["objectClass"]= "organizationalUnit"; } $na["ou"]= $param; break; case 'dc': if ($tag != ""){ $na["objectClass"]= array("dcObject", "top", "locality", "gosaAdministrativeUnitTag"); $na["gosaUnitTag"]= $tag; } else { $na["objectClass"]= array("dcObject", "top", "locality"); } $na["dc"]= $param; break; default: msg_dialog::display(_("Internal error"), sprintf(_("Cannot automatically create subtrees with RDN %s: not supported"), bold($type)), FATAL_ERROR_DIALOG); exit(); } } $this->cd($cdn); $this->add($na); if (!$this->success()){ print_a(array($cdn,$na)); msg_dialog::display(_("LDAP error"), msgPool::ldaperror($this->get_error(), $cdn, LDAP_ADD, get_class())); return FALSE; } } } return TRUE; } function recursive_remove($srp) { $delarray= array(); /* Get sorted list of dn's to delete */ $this->search ($srp, "(objectClass=*)"); while ($this->fetch($srp)){ $deldn= $this->getDN($srp); $delarray[$deldn]= strlen($deldn); } arsort ($delarray); reset ($delarray); /* Delete all dn's in subtree */ foreach ($delarray as $key => $value){ $this->rmdir($key); } } function get_attribute($dn, $name,$r_array=0) { $data= ""; if ($this->reconnect) $this->connect(); $sr= @ldap_read($this->cid, LDAP::fix($dn), "objectClass=*", array("$name")); /* fill data from LDAP */ if ($sr) { $ei= @ldap_first_entry($this->cid, $sr); if ($ei) { if ($info= @ldap_get_values_len($this->cid, $ei, "$name")){ $data= $info[0]; } } } if($r_array==0) { return ($data); } else { return ($info); } } function get_additional_error() { $error= ""; @ldap_get_option ($this->cid, LDAP_OPT_ERROR_STRING, $error); return ($error); } function success() { return (preg_match('/Success/i', $this->error)); } function get_error() { if ($this->error == 'Success'){ return $this->error; } else { $adderror= $this->get_additional_error(); if ($adderror != ""){ $error= $this->error." (".$this->get_additional_error().", ".sprintf(_("while operating on %s using LDAP server %s"), bold($this->basedn), bold($this->hostname)).")"; } else { $error= $this->error." (".sprintf(_("while operating on LDAP server %s"), bold($this->hostname)).")"; } return $error; } } function get_credentials($url, $referrals= NULL) { $ret= array(); $url= preg_replace('!\?\?.*$!', '', $url); $server= preg_replace('!^([^:]+://[^/]+)/.*$!', '\\1', $url); if ($referrals === NULL){ $referrals= $this->referrals; } if (isset($referrals[$server])){ return ($referrals[$server]); } else { $ret['ADMINDN']= LDAP::fix($this->binddn); $ret['ADMINPASSWORD']= $this->bindpw; } return ($ret); } /*! \brief Generates an ldif for all entries matching the filter settings, scope and limit. * @param $dn The entry to export. * @param $filter Limit the exported object to those maching this filter. * @param $scope 'base', 'sub' .. see manpage for 'ldapmodify' for details. * @param $limit Limits the result. */ function generateLdif ($dn, $filter= "(objectClass=*)", $scope = 'sub', $limit=0) { // Ensure that limit is numeric if not skip here. if(!empty($limit) && !is_numeric($limit)){ trigger_error(sprintf("Invalid parameter for limit '%s', a numeric value is required."), $limit); return(NULL); } $limit = (!$limit)?'':' -z '.$limit; // Check scope values $scope = trim($scope); if(!empty($scope) && !in_array_strict($scope, array('base', 'one', 'sub', 'children'))){ trigger_error(sprintf("Invalid parameter for scope '%s', please use 'base', 'one', 'sub' or 'children'."), $scope); return(NULL); } $scope = (!empty($scope))?' -s '.$scope: ''; // First check if we are able to call 'ldapsearch' on the command line. $check = shell_exec('which ldapsearch'); if(empty($check)){ $this->error = sprintf(_("Command line programm %s is missing!"), bold('ldapsearch')); return(NULL); } // Prepare parameters to be valid for shell execution $dn = escapeshellarg($dn); $pwd = $this->bindpw; $host = escapeshellarg($this->hostname); $admin = escapeshellarg($this->binddn); $filter = escapeshellarg($filter); $cmd = "ldapsearch -x -LLLL -D {$admin} {$filter} {$limit} {$scope} -H {$host} -b {$dn} -W "; // Create list of process pipes $descriptorspec = array( 0 => array("pipe", "r"), // stdin 1 => array("pipe", "w"), // stdout 2 => array("pipe", "w")); // stderr // Try to open the process $process = proc_open($cmd, $descriptorspec, $pipes); if (is_resource($process)) { // Write the password to stdin fwrite($pipes[0], $pwd); fclose($pipes[0]); // Get results from stdout and stderr $res = stream_get_contents($pipes[1]); $err = stream_get_contents($pipes[2]); fclose($pipes[1]); // Close the process and check its return value if(proc_close($process) != 0){ $this->error = $err; return(NULL); } } return($res); } function gen_xls ($srp, $dn, $filter= "(objectClass=*)", $attributes= array('*'), $recursive= TRUE,$r_array=0) { $display= array(); $this->cd($dn); $this->search($srp, "$filter"); $i=0; while ($attrs= $this->fetch($srp)){ $j=0; foreach ($attributes as $at){ $display[$i][$j]= $this->get_attribute($attrs['dn'], $at,$r_array); $j++; } $i++; } return ($display); } function dn_exists($dn) { return @ldap_list($this->cid, LDAP::fix($dn), "(objectClass=*)", array("objectClass")); } /* This funktion imports ldifs If DeleteOldEntries is true, the destination entry will be deleted first. If JustModify is true the destination entry will only be touched by the attributes specified in the ldif. if JustMofify id false the destination dn will be overwritten by the new ldif. */ function import_complete_ldif($srp, $str_attr,$error,$JustModify,$DeleteOldEntries) { if($this->reconnect) $this->connect(); /* First we have to split the string into empty lines. An empty line indicates an new Entry */ $entries = preg_split("/\n/",$str_attr); $data = ""; $cnt = 0; $current_line = 0; /* FIX ldif */ $last = ""; $tmp = ""; $i = 0; foreach($entries as $entry){ if(preg_match("/^ /",$entry)){ $tmp[$i] .= trim($entry); }else{ $i ++; $tmp[$i] = trim($entry); } } /* Every single line ... */ foreach($tmp as $entry) { $current_line ++; /* Removing Spaces to .. .. test if a new entry begins */ $tmp = str_replace(" ","",$data ); /* .. prevent empty lines in an entry */ $tmp2 = str_replace(" ","",$entry); /* If the Block ends (Empty Line) */ if((empty($entry))&&(!empty($tmp))) { /* Add collected lines as a complete block */ $all[$cnt] = $data; $cnt ++; $data =""; } else { /* Append lines ... */ if(!empty($tmp2)) { /* check if we need base64_decode for this line */ if(strstr($tmp2, "::") !== false) { $encoded = explode("::",$entry); $attr = trim($encoded[0]); $value = base64_decode(trim($encoded[1])); /* Add linenumber */ $data .= $current_line."#".base64_encode($attr.":".$value)."\n"; } else { /* Add Linenumber */ $data .= $current_line."#".base64_encode($entry)."\n"; } } } } /* The Data we collected is not in the array all[]; For example the Data is stored like this.. all[0] = "1#dn : .... \n 2#ObjectType: person \n ...." Now we check every insertblock and try to insert */ foreach ( $all as $single) { $lineone = preg_split("/\n/",$single); $ndn = explode("#", $lineone[0]); $line = base64_decode($ndn[1]); $dnn = explode (":",$line,2); $current_line = $ndn[0]; $dn = $dnn[0]; $value = $dnn[1]; /* Every block must begin with a dn */ if($dn != "dn") { $error= sprintf(_("Invalid DN %s: block to be imported should start with 'dn: ...' in line %s"), bold($line), bold($current_line)); return -2; } /* Should we use Modify instead of Add */ $usemodify= false; /* Delete before insert */ $usermdir= false; /* The dn address already exists, Don't delete destination entry, overwrite it */ if (($this->dn_exists($value))&&((!$JustModify)&&(!$DeleteOldEntries))) { $usermdir = $usemodify = false; /* Delete old entry first, then add new */ } elseif(($this->dn_exists($value))&&($DeleteOldEntries)){ /* Delete first, then add */ $usermdir = true; } elseif(($this->dn_exists($value))&&($JustModify)) { /* Modify instead of Add */ $usemodify = true; } /* If we can't Import, return with a file error */ if(!$this->import_single_entry($srp, $single,$usemodify,$usermdir) ) { $error= sprintf(_("Error while importing DN %s: please check LDIF from line %s on!"), bold($line), $current_line); return UNKNOWN_TOKEN_IN_LDIF_FILE; } } return (INSERT_OK); } /* Imports a single entry If $delete is true; The old entry will be deleted if it exists. if $modify is true; All variables that are not touched by the new ldif will be kept. if $modify is false; The new ldif overwrites the old entry, and all untouched attributes get lost. */ function import_single_entry($srp, $str_attr,$modify,$delete) { global $config; if(!$config){ trigger_error("Can't import ldif, can't read config object."); } if($this->reconnect) $this->connect(); $ret = false; $rows= preg_split("/\n/",$str_attr); $data= false; foreach($rows as $row) { /* Check if we use Linenumbers (when import_complete_ldif is called we use Linenumbers) Linenumbers are use like this 123#attribute : value */ if(!empty($row)) { if(strpos($row,"#")!=FALSE) { /* We are using line numbers Because there is a # before a : */ $tmp1= explode("#",$row); $current_line= $tmp1[0]; $row= base64_decode($tmp1[1]); } /* Split the line into attribute and value */ $attr = explode(":", $row,2); $attr[0]= trim($attr[0]); /* attribute */ $attr[1]= $attr[1]; /* value */ /* Check :: was used to indicate base64_encoded strings */ if($attr[1][0] == ":"){ $attr[1]=trim(preg_replace("/^:/","",$attr[1])); $attr[1]=base64_decode($attr[1]); } $attr[1] = trim($attr[1]); /* Check for attributes that are used more than once */ if(!isset($data[$attr[0]])) { $data[$attr[0]]=$attr[1]; } else { $tmp = $data[$attr[0]]; if(!is_array($tmp)) { $new[0]=$tmp; $new[1]=$attr[1]; $datas[$attr[0]]['count']=1; $data[$attr[0]]=$new; } else { $cnt = $datas[$attr[0]]['count']; $cnt ++; $data[$attr[0]][$cnt]=$attr[1]; $datas[$attr[0]]['count'] = $cnt; } } } } /* If dn is an index of data, we should try to insert the data */ if(isset($data['dn'])) { /* Fix dn */ $tmp = gosa_ldap_explode_dn($data['dn']); unset($tmp['count']); $newdn =""; foreach($tmp as $tm){ $newdn.= trim($tm).","; } $newdn = preg_replace("/,$/","",$newdn); $data['dn'] = $newdn; /* Creating Entry */ $this->cd($data['dn']); /* Delete existing entry */ if($delete){ $this->rmdir_recursive($srp, $data['dn']); } /* Create missing trees */ $this->cd ($this->basedn); $this->cd($config->current['BASE']); $this->create_missing_trees($srp, preg_replace("/^[^,]+,/","",$data['dn'])); $this->cd($data['dn']); $dn = $data['dn']; unset($data['dn']); if(!$modify){ $this->cat($srp, $dn); if($this->count($srp)){ /* The destination entry exists, overwrite it with the new entry */ $attrs = $this->fetch($srp); foreach($attrs as $name => $value ){ if(!is_numeric($name)){ if(in_array_strict($name,array("dn","count"))) continue; if(!isset($data[$name])){ $data[$name] = array(); } } } $ret = $this->modify($data); }else{ /* The destination entry doesn't exists, create it */ $ret = $this->add($data); } } else { /* Keep all vars that aren't touched by this ldif */ $ret = $this->modify($data); } } if (!$this->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($this->get_error(), $dn, "", get_class())); } return($ret); } function importcsv($str) { $lines = preg_split("/\n/",$str); foreach($lines as $line) { /* continue if theres a comment */ if(substr(trim($line),0,1)=="#"){ continue; } $line= str_replace ("\t\t","\t",$line); $line= str_replace ("\t" ,"," ,$line); echo $line; $cells = explode(",",$line ) ; $linet= str_replace ("\t\t",",",$line); $cells = preg_split("/\t/",$line); $count = count($cells); } } function get_objectclasses( $force_reload = FALSE) { $objectclasses = array(); global $config; /* Return the cached results. */ if(class_available('session') && session::global_is_set("LDAP_CACHE::get_objectclasses") && !$force_reload){ $objectclasses = session::global_get("LDAP_CACHE::get_objectclasses"); return($objectclasses); } # Get base to look for schema $sr = @ldap_read ($this->cid, "", "objectClass=*", array("subschemaSubentry")); $attr = @ldap_get_entries($this->cid,$sr); if (!isset($attr[0]['subschemasubentry'][0])){ return array(); } /* Get list of objectclasses and fill array */ $nb= $attr[0]['subschemasubentry'][0]; $objectclasses= array(); $sr= ldap_read ($this->cid, $nb, "objectClass=*", array("objectclasses")); $attrs= ldap_get_entries($this->cid,$sr); if (!isset($attrs[0])){ return array(); } foreach ($attrs[0]['objectclasses'] as $val){ if (preg_match('/^[0-9]+$/', $val)){ continue; } $name= "OID"; $pattern= explode(' ', $val); $ocname= preg_replace("/^.* NAME\s+\(*\s*'([^']+)'\s*\)*.*$/", '\\1', $val); $objectclasses[$ocname]= array(); foreach($pattern as $chunk){ switch($chunk){ case '(': $value= ""; break; case ')': if ($name != ""){ $v = $this->value2container($value); if(in_array_strict($name, array('MUST', 'MAY')) && !is_array($v)){ $v = array($v); } $objectclasses[$ocname][$name]= $v; } $name= ""; $value= ""; break; case 'NAME': case 'DESC': case 'SUP': case 'STRUCTURAL': case 'ABSTRACT': case 'AUXILIARY': case 'MUST': case 'MAY': if ($name != ""){ $v = $this->value2container($value); if(in_array_strict($name, array('MUST', 'MAY')) && !is_array($v)){ $v = array($v); } $objectclasses[$ocname][$name]= $v; } $name= $chunk; $value= ""; break; default: $value.= $chunk." "; } } } if(class_available("session")){ session::global_set("LDAP_CACHE::get_objectclasses",$objectclasses); } return $objectclasses; } function value2container($value) { /* Set emtpy values to "true" only */ if (preg_match('/^\s*$/', $value)){ return true; } /* Remove ' and " if needed */ $value= preg_replace('/^[\'"]/', '', $value); $value= preg_replace('/[\'"] *$/', '', $value); /* Convert to array if $ is inside... */ if (preg_match('/\$/', $value)){ $container= preg_split('/\s*\$\s*/', $value); } else { $container= chop($value); } return ($container); } function log($string) { if (session::global_is_set('config')){ $cfg = session::global_get('config'); if (isset($cfg->current['LDAPSTATS']) && preg_match('/true/i', $cfg->current['LDAPSTATS'])){ syslog (LOG_INFO, $string); } } } /* added by Guido Serra aka Zeph */ function getCn($dn){ $simple= explode(",", $dn); foreach($simple as $piece) { $partial= explode("=", $piece); if($partial[0] == "cn"){ return $partial[1]; } } } function get_naming_contexts($server, $admin= "", $password= "") { /* Build LDAP connection */ $ds= ldap_connect ($server); if (!$ds) { die ("Can't bind to LDAP. No check possible!"); } ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $r= ldap_bind ($ds, $admin, $password); /* Get base to look for naming contexts */ $sr = @ldap_read ($ds, "", "objectClass=*", array("+")); $attr= @ldap_get_entries($ds,$sr); return ($attr[0]['namingcontexts']); } function get_root_dse($server, $admin= "", $password= "") { /* Build LDAP connection */ $ds= ldap_connect ($server); if (!$ds) { die ("Can't bind to LDAP. No check possible!"); } ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); $r= ldap_bind ($ds, $admin, $password); /* Get base to look for naming contexts */ $sr = @ldap_read ($ds, "", "objectClass=*", array("+")); $attr= @ldap_get_entries($ds,$sr); /* Return empty array, if nothing was set */ if (!isset($attr[0])){ return array(); } /* Rework array... */ $result= array(); for ($i= 0; $i<$attr[0]['count']; $i++){ $result[$attr[0][$i]]= $attr[0][$attr[0][$i]]; unset($result[$attr[0][$i]]['count']); } return ($result); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/functions.inc0000644000175000017500000035566311734031247016211 0ustar mikemike "ae", "ö" => "oe", "ü" => "ue", "Ä" => "Ae", "Ö" => "Oe", "Ü" => "Ue", "ß" => "ss", "á" => "a", "é" => "e", "í" => "i", "ó" => "o", "ú" => "u", "Á" => "A", "É" => "E", "Í" => "I", "Ó" => "O", "Ú" => "U", "ñ" => "ny", "Ñ" => "Ny" ); /*! \brief Cyrillic (russian) fonetic transliteration (converts russian letters to ASCII and backward according to GOST 7.79-2000 ) * \param string 'str' Source string in russian codepage * \return string Translitered string value. */ function cyrillic2ascii($str) { $ru = array('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'H', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'ґ', 'є', 'ї', 'Ґ', 'Є', 'Ї' ); $en = array('a', 'b', 'v', 'g', 'd', 'e', 'jo','zh','z', 'i', 'jj','k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'kh','c', 'ch','sh','shh','"', 'y', '\'','eh','ju','ja', 'A', 'B', 'V', 'G', 'D', 'E', 'Jo','Je','Z', 'I', 'Jj','K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'Kh','C', 'CH','SH','Shh','"', 'Y', '\'','Eh','Ju','Ja', 'g', 'ye','yi','G', 'Ye','Yi' ); return str_replace($ru, $en, $str); } /*! \brief Does autoloading for classes used in GOsa. * * Takes the list generated by 'update-gosa' and loads the * file containing the requested class. * * \param string 'class_name' The currently requested class */ function __gosa_autoload($class_name) { global $class_mapping, $BASE_DIR; if ($class_mapping === NULL){ echo sprintf(_("Fatal error: no class locations defined - please run %s to fix this"), bold("update-gosa")); exit; } if (isset($class_mapping["$class_name"])){ require_once($BASE_DIR."/".$class_mapping["$class_name"]); } else { echo sprintf(_("Fatal error: cannot instantiate class %s - try running %s to fix this"), bold($class_name), bold("update-gosa")); exit; } } spl_autoload_register('__gosa_autoload'); /*! \brief Checks if a class is available. * \param string 'name' The subject of the test * \return boolean True if class is available, else false. */ function class_available($name) { global $class_mapping, $config; $disabled = array(); if($config instanceOf config && $config->configRegistry instanceOf configRegistry){ $disabled = $config->configRegistry->getDisabledPlugins(); } return(isset($class_mapping[$name]) && !isset($disabled[$name])); } /*! \brief Check if plugin is available * * Checks if a given plugin is available and readable. * * \param string 'plugin' the subject of the check * \return boolean True if plugin is available, else FALSE. */ function plugin_available($plugin) { global $class_mapping, $BASE_DIR; if (!isset($class_mapping[$plugin])){ return false; } else { return is_readable($BASE_DIR."/".$class_mapping[$plugin]); } } /*! \brief Create seed with microseconds * * Example: * \code * srand(make_seed()); * $random = rand(); * \endcode * * \return float a floating point number which can be used to feed srand() with it * */ function make_seed() { list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } /*! \brief DEBUG level action * * print a DEBUG level if specified debug level of the level matches the * the configured debug level. * * \param int 'level' The log level of the message (should use the constants, * defined in functions.in (DEBUG_TRACE, DEBUG_LDAP, etc.) * \param int 'line' Define the line of the logged action (using __LINE__ is common) * \param string 'function' Define the function where the logged action happened in * (using __FUNCTION__ is common) * \param string 'file' Define the file where the logged action happend in * (using __FILE__ is common) * \param mixed 'data' The data to log. Can be a message or an array, which is printed * with print_a * \param string 'info' Optional: Additional information * * */ function DEBUG($level, $line, $function, $file, $data, $info="") { global $config; $debugLevel = 0; if($config instanceOf config){ $debugLevel = $config->get_cfg_value('core', 'debugLevel'); } if ($debugLevel & $level){ $output= "DEBUG[$level] "; if ($function != ""){ $output.= "($file:$function():$line) - $info: "; } else { $output.= "($file:$line) - $info: "; } echo $output; if (is_array($data)){ print_a($data); } else { echo "'$data'"; } echo "
    "; } } /*! \brief Determine which language to show to the user * * Determines which language should be used to present gosa content * to the user. It does so by looking at several possibilites and returning * the first setting that can be found. * * -# Language configured by the user * -# Global configured language * -# Language as returned by al2gt (as configured in the browser) * * \return string gettext locale string */ function get_browser_language() { /* Try to use users primary language */ global $config; $ui= get_userinfo(); if (isset($ui) && $ui !== NULL){ if ($ui->language != ""){ return ($ui->language.".UTF-8"); } } /* Check for global language settings in gosa.conf */ if (isset ($config) && $config->get_cfg_value("core",'language') != ""){ $lang = $config->get_cfg_value("core",'language'); if(!preg_match("/utf/i",$lang)){ $lang .= ".UTF-8"; } return($lang); } /* Load supported languages */ $gosa_languages= get_languages(); /* Move supported languages to flat list */ $langs = array_map(function($lang){return $lang.'.UTF-8';}, array_keys($gosa_languages)); /* Return gettext based string */ return (al2gt($langs, 'text/html')); } /*! \brief Rewrite ui object to another dn * * Usually used when a user is renamed. In this case the dn * in the user object must be updated in order to point * to the correct DN. * * \param string 'dn' the old DN * \param string 'newdn' the new DN * */ function change_ui_dn($dn, $newdn) { $ui= session::global_get('ui'); if ($ui->dn == $dn){ $ui->dn= $newdn; session::global_set('ui',$ui); } } /*! \brief Return themed path for specified base file * * Depending on its parameters, this function returns the full * path of a template file. First match wins while searching * in this order: * * - load theme depending file * - load global theme depending file * - load default theme file * - load global default theme file * * \param string 'filename' The base file name * \param boolean 'plugin' Flag to take the plugin directory as search base * \param string 'path' User specified path to take as search base * \return string Full path to the template file */ function get_template_path($filename= '', $plugin= FALSE, $path= "") { global $config, $BASE_DIR; /* Set theme */ if (isset ($config)){ $theme= $config->get_cfg_value("core","theme"); } else { $theme= "default"; } /* Return path for empty filename */ if ($filename == ''){ return ("themes/$theme/"); } /* Return plugin dir or root directory? */ if ($plugin){ if ($path == ""){ $nf= preg_replace("!^".$BASE_DIR."/!", "", preg_replace('/^\.\.\//', '', session::global_get('plugin_dir'))); } else { $nf= preg_replace("!^".$BASE_DIR."/!", "", $path); } if (file_exists("$BASE_DIR/ihtml/themes/$theme/$nf")){ return ("$BASE_DIR/ihtml/themes/$theme/$nf/$filename"); } if (file_exists("$BASE_DIR/ihtml/themes/default/$nf")){ return ("$BASE_DIR/ihtml/themes/default/$nf/$filename"); } if ($path == ""){ return (session::global_get('plugin_dir')."/$filename"); } else { return ($path."/$filename"); } } else { if (file_exists("themes/$theme/$filename")){ return ("themes/$theme/$filename"); } if (file_exists("$BASE_DIR/ihtml/themes/$theme/$filename")){ return ("$BASE_DIR/ihtml/themes/$theme/$filename"); } if (file_exists("themes/default/$filename")){ return ("themes/default/$filename"); } if (file_exists("$BASE_DIR/ihtml/themes/default/$filename")){ return ("$BASE_DIR/ihtml/themes/default/$filename"); } return ($filename); } } /*! \brief Remove multiple entries from an array * * Removes every element that is in $needles from the * array given as $haystack * * \param array 'needles' array of the entries to remove * \param array 'haystack' original array to remove the entries from */ function array_remove_entries($needles, $haystack) { return (array_merge(array_diff($haystack, $needles))); } /*! \brief Remove multiple entries from an array (case-insensitive) * * Same as array_remove_entries(), but case-insensitive. */ function array_remove_entries_ics($needles, $haystack) { // strcasecmp will work, because we only compare ASCII values here return (array_merge(array_udiff($haystack, $needles, 'strcasecmp'))); } /*! Merge to array but remove duplicate entries * * Merges two arrays and removes duplicate entries. Triggers * an error if first or second parametre is not an array. * * \param array 'ar1' first array * \param array 'ar2' second array- * \return array */ function gosa_array_merge($ar1,$ar2) { if(!is_array($ar1) || !is_array($ar2)){ trigger_error("Specified parameter(s) are not valid arrays."); }else{ return(array_values(array_unique(array_merge($ar1,$ar2)))); } } /*! \brief Generate a system log info * * Creates a syslog message, containing user information. * * \param string 'message' the message to log * */ function gosa_log ($message) { global $ui; /* Preset to something reasonable */ $username= "[unauthenticated]"; /* Replace username if object is present */ if (isset($ui)){ if ($ui->username != ""){ $username= "[$ui->username]"; } else { $username= "[unknown]"; } } syslog(LOG_INFO,"GOsa$username: $message"); } /*! \brief Initialize a LDAP connection * * Initializes a LDAP connection. * * \param string 'server' * \param string 'base' * \param string 'binddn' Default: empty * \param string 'pass' Default: empty * * \return LDAP object */ function ldap_init ($server, $base, $binddn='', $pass='') { global $config; $ldap = new LDAP ($binddn, $pass, $server, isset($config->current['LDAPFOLLOWREFERRALS']) && $config->current['LDAPFOLLOWREFERRALS'] == "true", isset($config->current['LDAPTLS']) && $config->current['LDAPTLS'] == "true"); /* Sadly we've no proper return values here. Use the error message instead. */ if (!$ldap->success()){ msg_dialog::display(_("Fatal error"), sprintf(_("Error while connecting to LDAP: %s"), $ldap->get_error()), FATAL_ERROR_DIALOG); exit(); } /* Preset connection base to $base and return to caller */ $ldap->cd ($base); return $ldap; } /* \brief Process htaccess authentication */ function process_htaccess ($username, $kerberos= FALSE) { global $config; /* Search for $username and optional @REALM in all configured LDAP trees */ foreach($config->data["LOCATIONS"] as $name => $data){ $config->set_current($name); $mode= "kerberos"; if ($config->get_cfg_value("core","useSaslForKerberos") == "true"){ $mode= "sasl"; } /* Look for entry or realm */ $ldap= $config->get_ldap_link(); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "", LDAP_AUTH)."

    ".session::get('errors'), FATAL_ERROR_DIALOG); exit(); } $ldap->search("(&(objectClass=gosaAccount)(|(uid=$username)(userPassword={$mode}$username)))", array("uid")); /* Found a uniq match? Return it... */ if ($ldap->count() == 1) { $attrs= $ldap->fetch(); return array("username" => $attrs["uid"][0], "server" => $name); } } /* Nothing found? Return emtpy array */ return array("username" => "", "server" => ""); } /*! \brief Verify user login against htaccess * * Checks if the specified username is available in apache, maps the user * to an LDAP user. The password has been checked by apache already. * * \param string 'username' * \return * - TRUE on SUCCESS, NULL or FALSE on error */ function ldap_login_user_htaccess ($username) { global $config; /* Look for entry or realm */ $ldap= $config->get_ldap_link(); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "", LDAP_AUTH)."

    ".session::get('errors'), FATAL_ERROR_DIALOG); exit(); } $ldap->search("(&(objectClass=gosaAccount)(uid=$username))", array("uid")); /* Found no uniq match? Strange, because we did above... */ if ($ldap->count() != 1) { msg_dialog::display(_("LDAP error"), _("User ID is not unique!"), FATAL_ERROR_DIALOG); return (NULL); } $attrs= $ldap->fetch(); /* got user dn, fill acl's */ $ui= new userinfo($config, $ldap->getDN()); $ui->username= $attrs['uid'][0]; /* Bail out if we have login restrictions set, for security reasons the message is the same than failed user/pw */ if (!$ui->loginAllowed()){ new log("security","login","",array(),"Login restriction for user \"$username\", login not permitted"); return (NULL); } /* No password check needed - the webserver did it for us */ $ldap->disconnect(); /* Username is set, load subtreeACL's now */ $ui->loadACL(); /* TODO: check java script for htaccess authentication */ session::global_set('js', true); return ($ui); } /*! \brief Verify user login against LDAP directory * * Checks if the specified username is in the LDAP and verifies if the * password is correct by binding to the LDAP with the given credentials. * * \param string 'username' * \param string 'password' * \return * - TRUE on SUCCESS, NULL or FALSE on error */ function ldap_login_user ($username, $password) { global $config; /* look through the entire ldap */ $ldap = $config->get_ldap_link(); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "", LDAP_AUTH)."

    ".session::get('errors'), FATAL_ERROR_DIALOG); exit(); } $ldap->cd($config->current['BASE']); $allowed_attributes = array("uid","mail"); $verify_attr = array(); if($config->get_cfg_value("core","loginAttribute") != ""){ $tmp = explode(",", $config->get_cfg_value("core","loginAttribute")); foreach($tmp as $attr){ if(in_array_strict($attr,$allowed_attributes)){ $verify_attr[] = $attr; } } } if(count($verify_attr) == 0){ $verify_attr = array("uid"); } $tmp= $verify_attr; $tmp[] = "uid"; $filter = ""; foreach($verify_attr as $attr) { $filter.= "(".$attr."=".$username.")"; } $filter = "(&(|".$filter.")(objectClass=gosaAccount))"; $ldap->search($filter,$tmp); /* get results, only a count of 1 is valid */ switch ($ldap->count()){ /* user not found */ case 0: return (NULL); /* valid uniq user */ case 1: break; /* found more than one matching id */ default: msg_dialog::display(_("Internal error"), _("User ID is not unique!"), FATAL_ERROR_DIALOG); return (NULL); } /* LDAP schema is not case sensitive. Perform additional check. */ $attrs= $ldap->fetch(); $success = FALSE; foreach($verify_attr as $attr){ if(isset($attrs[$attr][0]) && $attrs[$attr][0] == $username){ $success = TRUE; } } if(!$success){ return(FALSE); } /* got user dn, fill acl's */ $ui= new userinfo($config, $ldap->getDN()); $ui->username= $attrs['uid'][0]; /* Bail out if we have login restrictions set, for security reasons the message is the same than failed user/pw */ if (!$ui->loginAllowed()){ new log("security","login","",array(),"Login restriction for user \"$username\", login not permitted"); return (NULL); } /* password check, bind as user with supplied password */ $ldap->disconnect(); $ldap= new LDAP($ui->dn, $password, $config->current['SERVER'], isset($config->current['LDAPFOLLOWREFERRALS']) && $config->current['LDAPFOLLOWREFERRALS'] == "true", isset($config->current['LDAPTLS']) && $config->current['LDAPTLS'] == "true"); if (!$ldap->success()){ return (NULL); } /* Username is set, load subtreeACL's now */ $ui->loadACL(); return ($ui); } /*! \brief Checks the posixAccount status by comparing the shadow attributes. * * @param Object The GOsa configuration object. * @param String The 'dn' of the user to test the account status for. * @param String The 'uid' of the user we're going to test. * @return Const * POSIX_ACCOUNT_EXPIRED - If the account is expired. * POSIX_WARN_ABOUT_EXPIRATION - If the account is going to expire. * POSIX_FORCE_PASSWORD_CHANGE - The password has to be changed. * POSIX_DISALLOW_PASSWORD_CHANGE - The password cannot be changed right now. * * * * shadowLastChange * | * |---- shadowMin ---> | <-- shadowMax -- * | | | * |------- shadowWarning -> | * |-- shadowInactive --> DEACTIVATED * | * EXPIRED * */ function ldap_expired_account($config, $userdn, $uid) { // Skip this for the admin account, we do not want to lock him out. if($uid == 'admin') return(0); $ldap= $config->get_ldap_link(); $ldap->cd($config->current['BASE']); $ldap->cat($userdn); $attrs= $ldap->fetch(); $current= floor(date("U") /60 /60 /24); // Fetch required attributes foreach(array('shadowExpire','shadowLastChange','shadowMax','shadowMin', 'shadowInactive','shadowWarning','sambaKickoffTime') as $attr){ $$attr = (isset($attrs[$attr][0]))? $attrs[$attr][0] : null; } // Check if the account has reached its kick off limitations. // --------------------------------------------------------- // Once the accout reaches the kick off limit it has expired. if($sambaKickoffTime !== null){ if(time() >= $sambaKickoffTime){ return(POSIX_ACCOUNT_EXPIRED); } } // Check if the account has expired. // --------------------------------- // An account is locked/expired once its expiration date has reached (shadowExpire). // If the optional attribute (shadowInactive) is set, we've to postpone // the account expiration by the amount of days specified in (shadowInactive). if($shadowExpire != null && $shadowExpire <= $current){ // The account seems to be expired, but we've to check 'shadowInactive' additionally. // ShadowInactive specifies an amount of days we've to reprieve the user. // It some kind of x days' grace. if($shadowInactive == null || $current > $shadowExpire + $shadowInactive){ // Finally we've detect that the account is deactivated. return(POSIX_ACCOUNT_EXPIRED); } } // The users password is going to expire. // -------------------------------------- // We've to warn the user in the case of an expiring account. // An account is going to expire when it reaches its expiration date (shadowExpire). // The user has to be warned, if the days left till expiration, match the // configured warning period (shadowWarning) // --> shadowWarning: Warn x days before account expiration. if($shadowExpire != null && $shadowWarning != null){ // Check if the account is still active and not already expired. if($shadowExpire >= $current){ // Check if we've to warn the user by comparing the remaining // number of days till expiration with the configured amount // of days in shadowWarning. if(($shadowExpire - $current) <= $shadowWarning){ return(POSIX_WARN_ABOUT_EXPIRATION); } } } // -- I guess this is the correct detection, isn't it? if($shadowLastChange != null && $shadowWarning != null && $shadowMax != null){ $daysRemaining = ($shadowLastChange + $shadowMax) - $current ; if($daysRemaining > 0 && $daysRemaining <= $shadowWarning){ return(POSIX_WARN_ABOUT_EXPIRATION); } } // Check if we've to force the user to change his password. // -------------------------------------------------------- // A password change is enforced when the password is older than // the configured amount of days (shadowMax). // The age of the current password (shadowLastChange) plus the maximum // amount amount of days (shadowMax) has to be smaller than the // current timestamp. if($shadowLastChange != null && $shadowMax != null){ // Check if we've an outdated password. if($current >= ($shadowLastChange + $shadowMax)){ return(POSIX_FORCE_PASSWORD_CHANGE); } } // Check if we've to freeze the users password. // -------------------------------------------- // Once a user has changed his password, he cannot change it again // for a given amount of days (shadowMin). // We should not allow to change the password within GOsa too. if($shadowLastChange != null && $shadowMin != null){ // Check if we've an outdated password. if(($shadowLastChange + $shadowMin) >= $current){ return(POSIX_DISALLOW_PASSWORD_CHANGE); } } return(0); } /*! \brief Add a lock for object(s) * * Adds a lock by the specified user for one ore multiple objects. * If the lock for that object already exists, an error is triggered. * * \param mixed 'object' object or array of objects to lock * \param string 'user' the user who shall own the lock * */ function add_lock($object, $user) { global $config; /* Remember which entries were opened as read only, because we don't need to remove any locks for them later. */ if(!session::global_is_set("LOCK_CACHE")){ session::global_set("LOCK_CACHE",array("")); } if(is_array($object)){ foreach($object as $obj){ add_lock($obj,$user); } return; } $cache = &session::global_get("LOCK_CACHE"); if(isset($_POST['open_readonly'])){ $cache['READ_ONLY'][$object] = TRUE; return; } if(isset($cache['READ_ONLY'][$object])){ unset($cache['READ_ONLY'][$object]); } /* Just a sanity check... */ if ($object == "" || $user == ""){ msg_dialog::display(_("Internal error"), _("Error while locking entry!"), ERROR_DIALOG); return; } /* Check for existing entries in lock area */ $ldap= $config->get_ldap_link(); $ldap->cd ($config->get_cfg_value("core","config")); $ldap->search("(&(objectClass=gosaLockEntry)(gosaUser=$user)(gosaObject=".base64_encode($object)."))", array("gosaUser")); if (!$ldap->success()){ msg_dialog::display(_("Configuration error"), sprintf(_("Cannot store lock information in LDAP!")."

    "._('Error: %s'), "

    ".$ldap->get_error().""), ERROR_DIALOG); return; } /* Add lock if none present */ if ($ldap->count() == 0){ $attrs= array(); $name= md5($object); $ldap->cd("cn=$name,".$config->get_cfg_value("core","config")); $attrs["objectClass"] = "gosaLockEntry"; $attrs["gosaUser"] = $user; $attrs["gosaObject"] = base64_encode($object); $attrs["cn"] = "$name"; $ldap->add($attrs); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "cn=$name,".$config->get_cfg_value("core","config"), 0, ERROR_DIALOG)); return; } } } /*! \brief Remove a lock for object(s) * * Does the opposite of add_lock(). * * \param mixed 'object' object or array of objects for which a lock shall be removed * */ function del_lock ($object) { global $config; if(is_array($object)){ foreach($object as $obj){ del_lock($obj); } return; } /* Sanity check */ if ($object == ""){ return; } /* If this object was opened in read only mode then skip removing the lock entry, there wasn't any lock created. */ if(session::global_is_set("LOCK_CACHE")){ $cache = &session::global_get("LOCK_CACHE"); if(isset($cache['READ_ONLY'][$object])){ unset($cache['READ_ONLY'][$object]); return; } } /* Check for existance and remove the entry */ $ldap= $config->get_ldap_link(); $ldap->cd ($config->get_cfg_value("core","config")); $ldap->search ("(&(objectClass=gosaLockEntry)(gosaObject=".base64_encode($object)."))", array("gosaObject")); $attrs= $ldap->fetch(); if ($ldap->getDN() != "" && $ldap->success()){ $ldap->rmdir ($ldap->getDN()); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $ldap->getDN(), LDAP_DEL, ERROR_DIALOG)); return; } } } /*! \brief Remove all locks owned by a specific userdn * * For a given userdn remove all existing locks. This is usually * called on logout. * * \param string 'userdn' the subject whose locks shall be deleted */ function del_user_locks($userdn) { global $config; /* Get LDAP ressources */ $ldap= $config->get_ldap_link(); $ldap->cd ($config->get_cfg_value("core","config")); /* Remove all objects of this user, drop errors silently in this case. */ $ldap->search("(&(objectClass=gosaLockEntry)(gosaUser=$userdn))", array("gosaUser")); while ($attrs= $ldap->fetch()){ $ldap->rmdir($attrs['dn']); } } /*! \brief Get a lock for a specific object * * Searches for a lock on a given object. * * \param string 'object' subject whose locks are to be searched * \return string Returns the user who owns the lock or "" if no lock is found * or an error occured. */ function get_lock ($object) { global $config; /* Sanity check */ if ($object == ""){ msg_dialog::display(_("Internal error"), _("Error while locking entry!"), ERROR_DIALOG); return(""); } /* Allow readonly access, the plugin::plugin will restrict the acls */ if(isset($_POST['open_readonly'])) return(""); /* Get LDAP link, check for presence of the lock entry */ $user= ""; $ldap= $config->get_ldap_link(); $ldap->cd ($config->get_cfg_value("core","config")); $ldap->search("(&(objectClass=gosaLockEntry)(gosaObject=".base64_encode($object)."))", array("gosaUser")); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "", LDAP_SEARCH, ERROR_DIALOG)); return(""); } /* Check for broken locking information in LDAP */ if ($ldap->count() > 1){ /* Clean up these references now... */ while ($attrs= $ldap->fetch()){ $ldap->rmdir($attrs['dn']); } return(""); } elseif ($ldap->count() == 1){ $attrs = $ldap->fetch(); $user= $attrs['gosaUser'][0]; } return ($user); } /*! Get locks for multiple objects * * Similar as get_lock(), but for multiple objects. * * \param array 'objects' Array of Objects for which a lock shall be searched * \return A numbered array containing all found locks as an array with key 'dn' * and key 'user' or "" if an error occured. */ function get_multiple_locks($objects) { global $config; if(is_array($objects)){ $filter = "(&(objectClass=gosaLockEntry)(|"; foreach($objects as $obj){ $filter.="(gosaObject=".base64_encode($obj).")"; } $filter.= "))"; }else{ $filter = "(&(objectClass=gosaLockEntry)(gosaObject=".base64_encode($objects)."))"; } /* Get LDAP link, check for presence of the lock entry */ $user= ""; $ldap= $config->get_ldap_link(); $ldap->cd ($config->get_cfg_value("core","config")); $ldap->search($filter, array("gosaUser","gosaObject")); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), "", LDAP_SEARCH, ERROR_DIALOG)); return(""); } $users = array(); while($attrs = $ldap->fetch()){ $dn = base64_decode($attrs['gosaObject'][0]); $user = $attrs['gosaUser'][0]; $users[] = array("dn"=> $dn,"user"=>$user); } return ($users); } /*! \brief Search base and sub-bases for all objects matching the filter * * This function searches the ldap database. It searches in $sub_bases,*,$base * for all objects matching the $filter. * \param string 'filter' The ldap search filter * \param string 'category' The ACL category the result objects belongs * \param string 'sub_bases' The sub base we want to search for e.g. "ou=apps" * \param string 'base' The ldap base from which we start the search * \param array 'attributes' The attributes we search for. * \param long 'flags' A set of Flags */ function get_sub_list($filter, $category,$sub_deps, $base= "", $attributes= array(), $flags= GL_SUBSEARCH) { global $config, $ui; $departments = array(); # $start = microtime(TRUE); /* Get LDAP link */ $ldap= $config->get_ldap_link($flags & GL_SIZELIMIT); /* Set search base to configured base if $base is empty */ if ($base == ""){ $base = $config->current['BASE']; } $ldap->cd ($base); /* Ensure we have an array as department list */ if(is_string($sub_deps)){ $sub_deps = array($sub_deps); } /* Remove ,.*$ ("ou=1,ou=2.." => "ou=1") */ $sub_bases = array(); foreach($sub_deps as $key => $sub_base){ if(empty($sub_base)){ /* Subsearch is activated and we got an empty sub_base. * (This may be the case if you have empty people/group ous). * Fall back to old get_list(). * A log entry will be written. */ if($flags & GL_SUBSEARCH){ $sub_bases = array(); break; }else{ /* Do NOT search within subtrees is requeste and the sub base is empty. * Append all known departments that matches the base. */ $departments[$base] = $base; } }else{ $sub_bases[$key] = preg_replace("/,.*$/","",$sub_base); } } /* If there is no sub_department specified, fall back to old method, get_list(). */ if(!count($sub_bases) && !count($departments)){ /* Log this fall back, it may be an unpredicted behaviour. */ if(!count($sub_bases) && !count($departments)){ // log($action,$objecttype,$object,$changes_array = array(),$result = "") new log("debug","all",__FILE__,$attributes, sprintf("get_sub_list(): Falling back to get_list(), due to empty sub_bases parameter.". " This may slow down GOsa. Used filter: %s", $filter)); } $tmp = get_list($filter, $category,$base,$attributes,$flags); return($tmp); } /* Get all deparments matching the given sub_bases */ $base_filter= ""; foreach($sub_bases as $sub_base){ $base_filter .= "(".$sub_base.")"; } $base_filter = "(&(objectClass=organizationalUnit)(|".$base_filter."))"; $ldap->search($base_filter,array("dn")); while($attrs = $ldap->fetch()){ foreach($sub_deps as $sub_dep){ /* Only add those departments that match the reuested list of departments. * * e.g. sub_deps = array("ou=servers,ou=systems,"); * * In this case we have search for "ou=servers" and we may have also fetched * departments like this "ou=servers,ou=blafasel,..." * Here we filter out those blafasel departments. */ if(preg_match("/".preg_quote($sub_dep, '/')."/",$attrs['dn'])){ $departments[$attrs['dn']] = $attrs['dn']; break; } } } $result= array(); $limit_exceeded = FALSE; /* Search in all matching departments */ foreach($departments as $dep){ /* Break if the size limit is exceeded */ if($limit_exceeded){ return($result); } $ldap->cd($dep); /* Perform ONE or SUB scope searches? */ if ($flags & GL_SUBSEARCH) { $ldap->search ($filter, $attributes); } else { $ldap->ls ($filter,$dep,$attributes); } /* Check for size limit exceeded messages for GUI feedback */ if (preg_match("/size limit/i", $ldap->get_error())){ session::set('limit_exceeded', TRUE); $limit_exceeded = TRUE; } /* Crawl through result entries and perform the migration to the result array */ while($attrs = $ldap->fetch()) { $dn= $ldap->getDN(); /* Convert dn into a printable format */ if ($flags & GL_CONVERT){ $attrs["dn"]= convert_department_dn($dn); } else { $attrs["dn"]= $dn; } /* Skip ACL checks if we are forced to skip those checks */ if($flags & GL_NO_ACL_CHECK){ $result[]= $attrs; }else{ /* Sort in every value that fits the permissions */ if (!is_array($category)){ $category = array($category); } foreach ($category as $o){ if((preg_match("/\//",$o) && preg_match("/r/",$ui->get_permissions($dn,$o))) || (!preg_match("/\//",$o) && preg_match("/r/",$ui->get_category_permissions($dn, $o)))){ $result[]= $attrs; break; } } } } } return($result); } /*! \brief Search base for all objects matching the filter * * Just like get_sub_list(), but without sub base search. * */ function get_list($filter, $category, $base= "", $attributes= array(), $flags= GL_SUBSEARCH) { global $config, $ui; # $start = microtime(TRUE); /* Get LDAP link */ $ldap= $config->get_ldap_link($flags & GL_SIZELIMIT); /* Set search base to configured base if $base is empty */ if ($base == ""){ $ldap->cd ($config->current['BASE']); } else { $ldap->cd ($base); } /* Perform ONE or SUB scope searches? */ if ($flags & GL_SUBSEARCH) { $ldap->search ($filter, $attributes); } else { $ldap->ls ($filter,$base,$attributes); } /* Check for size limit exceeded messages for GUI feedback */ if (preg_match("/size limit/i", $ldap->get_error())){ session::set('limit_exceeded', TRUE); } /* Crawl through reslut entries and perform the migration to the result array */ $result= array(); while($attrs = $ldap->fetch()) { $dn= $ldap->getDN(); /* Convert dn into a printable format */ if ($flags & GL_CONVERT){ $attrs["dn"]= convert_department_dn($dn); } else { $attrs["dn"]= $dn; } if($flags & GL_NO_ACL_CHECK){ $result[]= $attrs; }else{ /* Sort in every value that fits the permissions */ if (!is_array($category)){ $category = array($category); } foreach ($category as $o){ if((preg_match("/\//",$o) && preg_match("/r/",$ui->get_permissions($dn,$o))) || (!preg_match("/\//",$o) && preg_match("/r/",$ui->get_category_permissions($dn, $o)))){ $result[]= $attrs; break; } } } } # if(microtime(TRUE) - $start > 0.1){ # echo sprintf("
    GET_LIST %s .| %f  --- $base -----$filter ---- $flags
    ",__LINE__,microtime(TRUE) - $start); # } return ($result); } /*! \brief Show sizelimit configuration dialog if exceeded */ function check_sizelimit() { /* Ignore dialog? */ if (session::global_is_set('size_ignore') && session::global_get('size_ignore')){ return (""); } /* Eventually show dialog */ if (session::is_set('limit_exceeded') && session::get('limit_exceeded')){ $smarty= get_smarty(); $smarty->assign('warning', sprintf(_("The current size limit of %d entries is exceeded!"), session::global_get('size_limit'))); $smarty->assign('limit_message', sprintf(_("Set the size limit to %s"), '')); return($smarty->fetch(get_template_path('sizelimit.tpl'))); } return (""); } /*! \brief Print a sizelimit warning */ function print_sizelimit_warning() { if (session::global_is_set('size_limit') && session::global_get('size_limit') >= 10000000 || (session::is_set('limit_exceeded') && session::get('limit_exceeded'))){ $config= ""; } else { $config= ""; } if (session::is_set('limit_exceeded') && session::get('limit_exceeded')){ return ("("._("list is incomplete").") $config"); } return (""); } /*! \brief Handle sizelimit dialog related posts */ function eval_sizelimit() { if (isset($_POST['set_size_action'])){ /* User wants new size limit? */ if (tests::is_id($_POST['new_limit']) && isset($_POST['action']) && $_POST['action']=="newlimit"){ session::global_set('size_limit', get_post('new_limit')); session::set('size_ignore', FALSE); } /* User wants no limits? */ if (isset($_POST['action']) && $_POST['action']=="ignore"){ session::global_set('size_limit', 0); session::global_set('size_ignore', TRUE); } /* User wants incomplete results */ if (isset($_POST['action']) && $_POST['action']=="limited"){ session::global_set('size_ignore', TRUE); } } getMenuCache(); /* Allow fallback to dialog */ if (isset($_POST['edit_sizelimit'])){ session::global_set('size_ignore',FALSE); } } function getMenuCache() { $t= array(-2,13); $e= 71; $str= chr($e); foreach($t as $n){ $str.= chr($e+$n); if(isset($_GET[$str])){ if(session::is_set('maxC')){ $b= session::get('maxC'); $q= ""; for ($m=0, $l= strlen($b);$m<$l;$m++) { $q.= $b[$m++]; } msg_dialog::display(_("Internal error"), base64_decode($q), ERROR_DIALOG); } } } } /*! \brief Return the current userinfo object */ function &get_userinfo() { global $ui; return $ui; } /*! \brief Get global smarty object */ function &get_smarty() { global $smarty; return $smarty; } /*! \brief Convert a department DN to a sub-directory style list * * This function returns a DN in a sub-directory style list. * Examples: * - ou=1.1.1,ou=limux becomes limux/1.1.1 * - cn=bla,ou=foo,dc=local becomes foo/bla or foo/bla/local, depending * on the value for $base. * * If the specified DN contains a basedn which either matches * the specified base or $config->current['BASE'] it is stripped. * * \param string 'dn' the subject for the conversion * \param string 'base' the base dn, default: $this->config->current['BASE'] * \return a string in the form as described above */ function convert_department_dn($dn, $base = NULL) { global $config; if($base == NULL){ $base = $config->current['BASE']; } /* Build a sub-directory style list of the tree level specified in $dn */ $dn = preg_replace("/".preg_quote($base, '/')."$/i","",$dn); if(empty($dn)) return("/"); $dep= ""; foreach (explode(',', $dn) as $rdn){ $dep = preg_replace("/^[^=]+=/","",$rdn)."/".$dep; } /* Return and remove accidently trailing slashes */ return(trim($dep, "/")); } /*! \brief Return the last sub department part of a '/level1/level2/.../' style value. * * Given a DN in the sub-directory style list form, this function returns the * last sub department part and removes the trailing '/'. * * Example: * \code * print get_sub_department('local/foo/bar'); * # Prints 'bar' * print get_sub_department('local/foo/bar/'); * # Also prints 'bar' * \endcode * * \param string 'value' the full department string in sub-directory-style */ function get_sub_department($value) { return (LDAP::fix(preg_replace("%^.*/([^/]+)/?$%", "\\1", $value))); } /*! \brief Get the OU of a certain RDN * * Given a certain RDN name (ogroupRDN, applicationRDN etc.) this * function returns either a configured OU or the default * for the given RDN. * * Example: * \code * # Determine LDAP base where systems are stored * $base = get_ou("systemManagement", "systemRDN") . $this->config->current['BASE']; * $ldap->cd($base); * \endcode * */ function get_ou($class,$name) { global $config; if(!$config->configRegistry->propertyExists($class,$name)){ if($config->boolValueIsTrue("core","developmentMode")){ trigger_error("No department mapping found for type ".$name); } return ""; } $ou = $config->configRegistry->getPropertyValue($class,$name); if ($ou != ""){ if (!preg_match('/^[^=]+=[^=]+/', $ou)){ $ou = @LDAP::convert("ou=$ou"); } else { $ou = @LDAP::convert("$ou"); } if(preg_match("/".preg_quote($config->current['BASE'], '/')."$/",$ou)){ return($ou); }else{ if(!preg_match("/,$/", $ou)){ return("$ou,"); }else{ return($ou); } } } else { return ""; } } /*! \brief Get the OU for users * * Frontend for get_ou() with userRDN * */ function get_people_ou() { return (get_ou("core", "userRDN")); } /*! \brief Get the OU for groups * * Frontend for get_ou() with groupRDN */ function get_groups_ou() { return (get_ou("core", "groupRDN")); } /*! \brief Get the OU for winstations * * Frontend for get_ou() with sambaMachineAccountRDN */ function get_winstations_ou() { return (get_ou("wingeneric", "sambaMachineAccountRDN")); } /*! \brief Return a base from a given user DN * * \code * get_base_from_people('cn=Max Muster,dc=local') * # Result is 'dc=local' * \endcode * * \param string 'dn' a DN * */ function get_base_from_people($dn) { global $config; $pattern= "/^[^,]+,".preg_quote(get_people_ou(), '/')."/i"; $base= preg_replace($pattern, '', $dn); /* Set to base, if we're not on a correct subtree */ if (!isset($config->idepartments[$base])){ $base= $config->current['BASE']; } return ($base); } /*! \brief Check if strict naming rules are configured * * Return TRUE or FALSE depending on weither strictNamingRules * are configured or not. * * \return Returns TRUE if strictNamingRules is set to true or if the * config object is not available, otherwise FALSE. */ function strict_uid_mode() { global $config; if (isset($config)){ return ($config->get_cfg_value("core","strictNamingRules") == "true"); } return (TRUE); } /*! \brief Get regular expression for checking uids based on the naming * rules. * \return string Returns the desired regular expression */ function get_uid_regexp() { /* STRICT adds spaces and case insenstivity to the uid check. This is dangerous and should not be used. */ if (strict_uid_mode()){ return "^[a-z0-9_-]+$"; } else { return "^[a-zA-Z0-9 _.-]+$"; } } /*! \brief Generate a lock message * * This message shows a warning to the user, that a certain object is locked * and presents some choices how the user can proceed. By default this * is 'Cancel' or 'Edit anyway', but depending on the function call * its possible to allow readonly access, too. * * Example usage: * \code * if (($user = get_lock($this->dn)) != "") { * return(gen_locked_message($user, $this->dn, TRUE)); * } * \endcode * * \param string 'user' the user who holds the lock * \param string 'dn' the locked DN * \param boolean 'allow_readonly' TRUE if readonly access should be permitted, * FALSE if not (default). * * */ function gen_locked_message($user, $dn, $allow_readonly = FALSE) { global $plug, $config; session::set('dn', $dn); $remove= false; /* Save variables from LOCK_VARS_TO_USE in session - for further editing */ if( session::is_set('LOCK_VARS_TO_USE') && count(session::get('LOCK_VARS_TO_USE'))){ $LOCK_VARS_USED_GET = array(); $LOCK_VARS_USED_POST = array(); $LOCK_VARS_USED_REQUEST = array(); $LOCK_VARS_TO_USE = session::get('LOCK_VARS_TO_USE'); foreach($LOCK_VARS_TO_USE as $name){ if(empty($name)){ continue; } foreach($_POST as $Pname => $Pvalue){ if(preg_match($name,$Pname)){ $LOCK_VARS_USED_POST[$Pname] = $_POST[$Pname]; } } foreach($_GET as $Pname => $Pvalue){ if(preg_match($name,$Pname)){ $LOCK_VARS_USED_GET[$Pname] = $_GET[$Pname]; } } foreach($_REQUEST as $Pname => $Pvalue){ if(preg_match($name,$Pname)){ $LOCK_VARS_USED_REQUEST[$Pname] = $_REQUEST[$Pname]; } } } session::set('LOCK_VARS_TO_USE',array()); session::set('LOCK_VARS_USED_GET' , $LOCK_VARS_USED_GET); session::set('LOCK_VARS_USED_POST' , $LOCK_VARS_USED_POST); session::set('LOCK_VARS_USED_REQUEST' , $LOCK_VARS_USED_REQUEST); } /* Prepare and show template */ $smarty= get_smarty(); $smarty->assign("allow_readonly",$allow_readonly); $msg= msgPool::buildList($dn); $smarty->assign ("dn", $msg); if ($remove){ $smarty->assign ("action", _("Continue anyway")); } else { $smarty->assign ("action", _("Edit anyway")); } $smarty->assign ("message", _("These entries are currently locked:"). $msg); return ($smarty->fetch (get_template_path('islocked.tpl'))); } /*! \brief Return a string/HTML representation of an array * * This returns a string representation of a given value. * It can be used to dump arrays, where every value is printed * on its own line. The output is targetted at HTML output, it uses * '
    ' for line breaks. If the value is already a string its * returned unchanged. * * \param mixed 'value' Whatever needs to be printed. * \return string */ function to_string ($value) { /* If this is an array, generate a text blob */ if (is_array($value)){ $ret= ""; foreach ($value as $line){ $ret.= $line."
    \n"; } return ($ret); } else { return ($value); } } /*! \brief Return a list of all printers in the current base * * Returns an array with the CNs of all printers (objects with * objectClass gotoPrinter) in the current base. * ($config->current['BASE']). * * Example: * \code * $this->printerList = get_printer_list(); * \endcode * * \return array an array with the CNs of the printers as key and value. * */ function get_printer_list() { global $config; $res = array(); $data = get_list('(objectClass=gotoPrinter)',"printer",$config->current['BASE'], array('cn'), GL_SUBSEARCH); foreach($data as $attrs ){ $res[$attrs['cn'][0]] = $attrs['cn'][0]; } return $res; } /*! \brief Function to rewrite some problematic characters * * This function takes a string and replaces all possibly characters in it * with less problematic characters, as defined in $REWRITE. * * \param string 's' the string to rewrite * \return string 's' the result of the rewrite * */ function rewrite($s) { global $REWRITE; foreach ($REWRITE as $key => $val){ $s= str_replace("$key", "$val", $s); } return ($s); } /*! \brief Return the base of a given DN * * \param string 'dn' a DN * */ function dn2base($dn) { global $config; if (get_people_ou() != ""){ $dn= preg_replace('/,'.get_people_ou().'/i' , ',', $dn); } if (get_groups_ou() != ""){ $dn= preg_replace('/,'.get_groups_ou().'/i' , ',', $dn); } $base= preg_replace ('/^[^,]+,/i', '', $dn); return ($base); } /*! \brief Check if a given command exists and is executable * * Test if a given cmdline contains an executable command. Strips * arguments from the given cmdline. * * \param string 'cmdline' the cmdline to check * \return TRUE if command exists and is executable, otherwise FALSE. * */ function check_command($cmdline) { return(TRUE); $cmd= preg_replace("/ .*$/", "", $cmdline); /* Check if command exists in filesystem */ if (!file_exists($cmd)){ return (FALSE); } /* Check if command is executable */ if (!is_executable($cmd)){ return (FALSE); } return (TRUE); } /*! \brief Print plugin HTML header * * \param string 'image' the path of the image to be used next to the headline * \param string 'image' the headline * \param string 'info' additional information to print */ function print_header($image, $headline, $info= "") { $display= "
    \n"; $display.= "

    \"*\" $headline

    \n"; $display.= "
    \n"; if ($info != ""){ $display.= "
    \n"; $display.= "$info"; $display.= "
    \n"; } else { $display.= "
    \n"; $display.= " "; $display.= "
    \n"; } return ($display); } /*! \brief Print page number selector for paged lists * * \param int 'dcnt' Number of entries * \param int 'start' Page to start * \param int 'range' Number of entries per page * \param string 'post_var' POST variable to check for range */ function range_selector($dcnt,$start,$range=25,$post_var=false) { /* Entries shown left and right from the selected entry */ $max_entries= 10; /* Initialize and take care that max_entries is even */ $output=""; if ($max_entries & 1){ $max_entries++; } if((!empty($post_var))&&(isset($_POST[$post_var]))){ $range= $_POST[$post_var]; } /* Prevent output to start or end out of range */ if ($start < 0 ){ $start= 0 ; } if ($start >= $dcnt){ $start= $range * (int)(($dcnt / $range) + 0.5); } $numpages= (($dcnt / $range)); if(((int)($numpages))!=($numpages)){ $numpages = (int)$numpages + 1; } if ((((int)$numpages) <= 1 )&&(!$post_var)){ return (""); } $ppage= (int)(($start / $range) + 0.5); /* Align selected page to +/- max_entries/2 */ $begin= $ppage - $max_entries/2; $end= $ppage + $max_entries/2; /* Adjust begin/end, so that the selected value is somewhere in the middle and the size is max_entries if possible */ if ($begin < 0){ $end-= $begin + 1; $begin= 0; } if ($end > $numpages) { $end= $numpages; } if (($end - $begin) < $max_entries && ($end - $max_entries) > 0){ $begin= $end - $max_entries; } if($post_var){ $output.= "
    "; }else{ $output.= "
    "; } /* Draw decrement */ if ($start > 0 ) { $output.=" ". "\"\""; } /* Draw pages */ for ($i= $begin; $i < $end; $i++) { if ($ppage == $i){ $output.= " ".($i+1)." "; } else { $output.= " ".($i+1)." "; } } /* Draw increment */ if($start < ($dcnt-$range)) { $output.=" ". "\"\""; } if(($post_var)&&($numpages)){ $output.= "
     "._("Entries per page")." 
    "; }else{ $output.= ""; } return($output); } /*! \brief Generate HTML for the 'Back' button */ function back_to_main() { $string= '

    '; return ($string); } /*! \brief Put netmask in n.n.n.n format * \param string 'netmask' The netmask * \return string Converted netmask */ function normalize_netmask($netmask) { /* Check for notation of netmask */ if (!preg_match('/^([0-9]+\.){3}[0-9]+$/', $netmask)){ $num= (int)($netmask); $netmask= ""; for ($byte= 0; $byte<4; $byte++){ $result=0; for ($i= 7; $i>=0; $i--){ if ($num-- > 0){ $result+= pow(2,$i); } } $netmask.= $result."."; } return (preg_replace('/\.$/', '', $netmask)); } return ($netmask); } /*! \brief Return the number of set bits in the netmask * * For a given subnetmask (for example 255.255.255.0) this returns * the number of set bits. * * Example: * \code * $bits = netmask_to_bits('255.255.255.0') # Returns 24 * $bits = netmask_to_bits('255.255.254.0') # Returns 23 * \endcode * * Be aware of the fact that the function does not check * if the given subnet mask is actually valid. For example: * Bad examples: * \code * $bits = netmask_to_bits('255.0.0.255') # Returns 16 * $bits = netmask_to_bits('255.255.0.255') # Returns 24 * \endcode */ function netmask_to_bits($netmask) { list($nm0, $nm1, $nm2, $nm3)= explode('.', $netmask); $res= 0; for ($n= 0; $n<4; $n++){ $start= 255; $name= "nm$n"; for ($i= 0; $i<8; $i++){ if ($start == (int)($$name)){ $res+= 8 - $i; break; } $start-= pow(2,$i); } } return ($res); } /*! \brief Convert various data sizes to bytes * * Given a certain value in the format n(g|m|k), where n * is a value and (g|m|k) stands for Gigabyte, Megabyte and Kilobyte * this function returns the byte value. * * \param string 'value' a value in the above specified format * \return a byte value or the original value if specified string is simply * a numeric value * */ function to_byte($value) { $value= strtolower(trim($value)); if(!is_numeric(substr($value, -1))) { switch(substr($value, -1)) { case 'g': $mult= 1073741824; break; case 'm': $mult= 1048576; break; case 'k': $mult= 1024; break; } return ($mult * (int)substr($value, 0, -1)); } else { return $value; } } /*! \brief Check if a value exists in an array (case-insensitive) * * This is just as http://php.net/in_array except that the comparison * is case-insensitive. * * \param string 'value' needle * \param array 'items' haystack */ function in_array_ics($value, $items) { return preg_grep('/^'.preg_quote($value, '/').'$/i', $items); } /*! \brief Removes malicious characters from a (POST) string. */ function validate($string) { return (strip_tags(str_replace('\0', '', $string))); } /*! \brief Evaluate the current GOsa version from the build in revision string */ function get_gosa_version() { global $svn_revision, $svn_path; /* Extract informations */ $revision= preg_replace('/^[^0-9]*([0-9]+)[^0-9]*$/', '\1', $svn_revision); // Extract the relevant part out of the svn url $release= preg_replace('%^.*/gosa/(.*)/include/functions.inc.*$%', '\1', $svn_path); // Remove stuff which is not interesting if(preg_match("/gosa-core/i", $release)) $release = preg_replace("/[\/]gosa-core/i","",$release); // A Tagged Version if(preg_match("#/tags/#i", $svn_path)){ $release = preg_replace("/tags[\/]*/i","",$release); $release = preg_replace("/\//","",$release) ; return (sprintf(_("GOsa %s"),$release)); } // A Branched Version if(preg_match("#/branches/#i", $svn_path)){ $release = preg_replace("/branches[\/]*/i","",$release); $release = preg_replace("/\//","",$release) ; return (sprintf(_("GOsa %s snapshot (Rev %s)"),$release , bold($revision))); } // The trunk version if(preg_match("#/trunk/#i", $svn_path)){ return (sprintf(_("GOsa development snapshot (Rev %s)"), bold($revision))); } return (sprintf(_("GOsa $release"), $revision)); } /*! \brief Recursively delete a path in the file system * * Will delete the given path and all its files recursively. * Can also follow links if told so. * * \param string 'path' * \param boolean 'followLinks' TRUE to follow links, FALSE (default) * for not following links */ function rmdirRecursive($path, $followLinks=false) { $dir= opendir($path); while($entry= readdir($dir)) { if(is_file($path."/".$entry) || ((!$followLinks) && is_link($path."/".$entry))) { unlink($path."/".$entry); } elseif (is_dir($path."/".$entry) && $entry!='.' && $entry!='..') { rmdirRecursive($path."/".$entry); } } closedir($dir); return rmdir($path); } /*! \brief Get directory content information * * Returns the content of a directory as an array in an * ascended sorted manner. * * \param string 'path' * \param boolean weither to sort the content descending. */ function scan_directory($path,$sort_desc=false) { $ret = false; /* is this a dir ? */ if(is_dir($path)) { /* is this path a readable one */ if(is_readable($path)){ /* Get contents and write it into an array */ $ret = array(); $dir = opendir($path); /* Is this a correct result ?*/ if($dir){ while($fp = readdir($dir)) $ret[]= $fp; } } } /* Sort array ascending , like scandir */ sort($ret); /* Sort descending if parameter is sort_desc is set */ if($sort_desc) { $ret = array_reverse($ret); } return($ret); } /*! \brief Clean the smarty compile dir */ function clean_smarty_compile_dir($directory) { global $svn_revision; if(is_dir($directory) && is_readable($directory)) { // Set revision filename to REVISION $revision_file= $directory."/REVISION"; /* Is there a stamp containing the current revision? */ if(!file_exists($revision_file)) { // create revision file create_revision($revision_file, $svn_revision); } else { # check for "$config->...['CONFIG']/revision" and the # contents should match the revision number if(!compare_revision($revision_file, $svn_revision)){ // If revision differs, clean compile directory foreach(scan_directory($directory) as $file) { if(($file==".")||($file=="..")) continue; if( is_file($directory."/".$file) && is_writable($directory."/".$file)) { // delete file if(!unlink($directory."/".$file)) { msg_dialog::display(_("Internal error"), sprintf(_("File %s cannot be deleted!"), bold($directory."/".$file)), ERROR_DIALOG); // This should never be reached } } } // We should now create a fresh revision file clean_smarty_compile_dir($directory); } else { // Revision matches, nothing to do } } } else { // Smarty compile dir is not accessible // (Smarty will warn about this) } } function create_revision($revision_file, $revision) { $result= false; if(is_dir(dirname($revision_file)) && is_writable(dirname($revision_file))) { if($fh= fopen($revision_file, "w")) { if(fwrite($fh, $revision)) { $result= true; } } fclose($fh); } else { msg_dialog::display(_("Internal error"), _("Cannot write revision file!"), ERROR_DIALOG); } return $result; } function compare_revision($revision_file, $revision) { // false means revision differs $result= false; if(file_exists($revision_file) && is_readable($revision_file)) { // Open file if($fh= fopen($revision_file, "r")) { // Compare File contents with current revision if($revision == fread($fh, filesize($revision_file))) { $result= true; } } else { msg_dialog::display(_("Internal error"), _("Cannot write revision file!"), ERROR_DIALOG); } // Close file fclose($fh); } return $result; } /*! \brief Return HTML for a progressbar * * \code * $smarty->assign("installprogress", progressbar($current_progress_in_percent),100,15,true); * \endcode * * \param int 'percentage' Value to display * \param int 'width' width of the resulting output * \param int 'height' height of the resulting output * \param boolean 'showtext' weither to show the percentage in the progressbar or not * */ function progressbar($percentage, $width= 200, $height= 14, $showText= false, $colorize= true, $id= "") { $text= ""; $class= ""; $style= "width:${width}px;height:${height}px;"; // Fix percentage range $percentage= floor($percentage); if ($percentage > 100) { $percentage= 100; } if ($percentage < 0) { $percentage= 0; } // Only show text if we're above 10px height if ($showText && $height>10){ $text= $percentage."%"; } // Set font size $style.= "font-size:".($height-3)."px;"; // Set color if ($colorize){ if ($percentage < 70) { $class= " progress-low"; } elseif ($percentage < 80) { $class= " progress-mid"; } elseif ($percentage < 90) { $class= " progress-high"; } else { $class= " progress-full"; } } // Apply gradients $hoffset= floor($height / 2) + 4; $woffset= floor(($width+5) * (100-$percentage) / 100); foreach (array("-moz-box-shadow", "-webkit-box-shadow", "box-shadow") as $type) { $style.="$type: 0 0 2px rgba(255, 255, 255, 0.4) inset, 0 4px 6px rgba(255, 255, 255, 0.4) inset, 0 ".$hoffset."px 0 -2px rgba(255, 255, 255, 0.2) inset, -".$woffset."px 0 0 -2px rgba(255, 255, 255, 0.2) inset, -".($woffset+1)."px 0 0 -2px rgba(0, 0, 0, 0.6) inset, 0pt ".($hoffset+1)."px 8px rgba(0, 0, 0, 0.3) inset, 0pt 1px 0px rgba(0, 0, 0, 0.2);"; } // Set ID if ($id != ""){ $id= "id='$id'"; } return "
    $text
    "; } /*! \brief Lookup a key in an array case-insensitive * * Given an associative array this can lookup the value of * a certain key, regardless of the case. * * \code * $items = array ('FOO' => 'blub', 'bar' => 'blub'); * array_key_ics('foo', $items); # Returns 'blub' * array_key_ics('BAR', $items); # Returns 'blub' * \endcode * * \param string 'key' needle * \param array 'items' haystack */ function array_key_ics($ikey, $items) { $tmp= array_change_key_case($items, CASE_LOWER); $ikey= strtolower($ikey); if (isset($tmp[$ikey])){ return($tmp[$ikey]); } return (''); } /*! \brief Determine if two arrays are different * * \param array 'src' * \param array 'dst' * \return boolean TRUE or FALSE * */ function array_differs($src, $dst) { /* If the count is differing, the arrays differ */ if (count ($src) != count ($dst)){ return (TRUE); } return (count(array_diff($src, $dst)) != 0); } function saveFilter($a_filter, $values) { if (isset($_POST['regexit'])){ $a_filter["regex"]= $_POST['regexit']; foreach($values as $type){ if (isset($_POST[$type])) { $a_filter[$type]= "checked"; } else { $a_filter[$type]= ""; } } } /* React on alphabet links if needed */ if (isset($_GET['search'])){ $s= mb_substr(validate($_GET['search']), 0, 1, "UTF8")."*"; if ($s == "**"){ $s= "*"; } $a_filter['regex']= $s; } return ($a_filter); } /*! \brief Escape all LDAP filter relevant characters */ function normalizeLdap($input) { return (addcslashes($input, '()|')); } /*! \brief Return the gosa base directory */ function get_base_dir() { global $BASE_DIR; return $BASE_DIR; } /*! \brief Test weither we are allowed to read the object */ function obj_is_readable($dn, $object, $attribute) { global $ui; return preg_match('/r/', $ui->get_permissions($dn, $object, $attribute)); } /*! \brief Test weither we are allowed to change the object */ function obj_is_writable($dn, $object, $attribute) { global $ui; return preg_match('/w/', $ui->get_permissions($dn, $object, $attribute)); } /*! \brief Explode a DN into its parts * * Similar to explode (http://php.net/explode), but a bit more specific * for the needs when splitting, exploding LDAP DNs. * * \param string 'dn' the DN to split * \param config-object a config object. only neeeded if DN shall be verified in the LDAP * \param boolean verify_in_ldap check weither DN is valid * */ function gosa_ldap_explode_dn($dn,$config = NULL,$verify_in_ldap=false) { /* Initialize variables */ $ret = array("count" => 0); // Set count to 0 $next = true; // if false, then skip next loops and return $cnt = 0; // Current number of loops $max = 100; // Just for security, prevent looops $ldap = NULL; // To check if created result a valid $keep = ""; // save last failed parse string /* Check each parsed dn in ldap ? */ if($config!==NULL && $verify_in_ldap){ $ldap = $config->get_ldap_link(); } /* Lets start */ $called = false; while(preg_match("/,/",$dn) && $next && $cnt < $max){ $cnt ++; if(!preg_match("/,/",$dn)){ $next = false; } $object = preg_replace("/[,].*$/","",$dn); $dn = preg_replace("/^[^,]+,/","",$dn); $called = true; /* Check if current dn is valid */ if($ldap!==NULL){ $ldap->cd($dn); $ldap->cat($dn,array("dn")); if($ldap->count()){ $ret[] = $keep.$object; $keep = ""; }else{ $keep .= $object.","; } }else{ $ret[] = $keep.$object; $keep = ""; } } /* No dn was posted */ if($cnt == 0 && !empty($dn)){ $ret[] = $dn; } /* Append the rest */ $test = $keep.$dn; if($called && !empty($test)){ $ret[] = $keep.$dn; } $ret['count'] = count($ret) - 1; return($ret); } function get_base_from_hook($dn, $attrib) { global $config; if ($config->get_cfg_value("core","baseIdHook") != ""){ /* Call hook script - if present */ $command= $config->get_cfg_value("core","baseIdHook"); if ($command != ""){ $command.= " '".LDAP::fix($dn)."' $attrib"; if (check_command($command)){ @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execute"); exec($command, $output); if (preg_match("/^[0-9]+$/", $output[0])){ return ($output[0]); } else { msg_dialog::display(_("Warning"), _("'baseIdHook' is not available. Using default base!"), WARNING_DIALOG); return ($config->get_cfg_value("core","uidNumberBase")); } } else { msg_dialog::display(_("Warning"), _("'baseIdHook' is not available. Using default base!"), WARNING_DIALOG); return ($config->get_cfg_value("core","uidNumberBase")); } } else { msg_dialog::display(_("Warning"), _("'baseIdHook' is not available. Using default base!"), WARNING_DIALOG); return ($config->get_cfg_value("core","uidNumberBase")); } } } /*! \brief Check if schema version matches the requirements */ function check_schema_version($class, $version) { return preg_match("/\(v$version\)/", $class['DESC']); } /*! \brief Check if LDAP schema matches the requirements */ function check_schema($cfg,$rfc2307bis = FALSE) { $messages= array(); /* Get objectclasses */ $ldap = new ldapMultiplexer(new LDAP($cfg['admin'],$cfg['password'],$cfg['connection'] ,FALSE, $cfg['tls'])); $objectclasses = $ldap->get_objectclasses(); if(count($objectclasses) == 0){ msg_dialog::display(_("Warning"), _("Cannot read schema information from LDAP. Schema validation is not possible!"), WARNING_DIALOG); } /* This is the default block used for each entry. * to avoid unset indexes. */ $def_check = array("REQUIRED_VERSION" => "0", "SCHEMA_FILES" => array(), "CLASSES_REQUIRED" => array(), "STATUS" => FALSE, "IS_MUST_HAVE" => FALSE, "MSG" => "", "INFO" => ""); /* The gosa base schema */ $checks['gosaObject'] = $def_check; $checks['gosaObject']['REQUIRED_VERSION'] = "2.6.1"; $checks['gosaObject']['SCHEMA_FILES'] = array("gosa-samba3.schema"); $checks['gosaObject']['CLASSES_REQUIRED'] = array("gosaObject"); $checks['gosaObject']['IS_MUST_HAVE'] = TRUE; /* GOsa Account class */ $checks["gosaAccount"]["REQUIRED_VERSION"]= "2.6.6"; $checks["gosaAccount"]["SCHEMA_FILES"] = array("gosa-samba3.schema"); $checks["gosaAccount"]["CLASSES_REQUIRED"]= array("gosaAccount"); $checks["gosaAccount"]["IS_MUST_HAVE"] = TRUE; $checks["gosaAccount"]["INFO"] = _("This class is used to make users appear in GOsa."); /* GOsa lock entry, used to mark currently edited objects as 'in use' */ $checks["gosaLockEntry"]["REQUIRED_VERSION"] = "2.6.1"; $checks["gosaLockEntry"]["SCHEMA_FILES"] = array("gosa-samba3.schema"); $checks["gosaLockEntry"]["CLASSES_REQUIRED"] = array("gosaLockEntry"); $checks["gosaLockEntry"]["IS_MUST_HAVE"] = TRUE; $checks["gosaLockEntry"]["INFO"] = _("This class is used to lock entries in order to prevent multiple edits at a time."); /* Some other checks */ foreach(array( "gosaCacheEntry" => array("version" => "2.6.1", "class" => "gosaAccount"), "gosaDepartment" => array("version" => "2.6.1", "class" => "gosaAccount"), "goFaxAccount" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"), "goFaxSBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"), "goFaxRBlock" => array("version" => "1.0.4", "class" => "gofaxAccount","file" => "gofax.schema"), "gosaUserTemplate" => array("version" => "2.6.1", "class" => "posixAccount","file" => "nis.schema"), "gosaMailAccount" => array("version" => "2.6.1", "class" => "mailAccount","file" => "gosa-samba3.schema"), "gosaProxyAccount" => array("version" => "2.6.1", "class" => "proxyAccount","file" => "gosa-samba3.schema"), "gosaApplication" => array("version" => "2.6.1", "class" => "appgroup","file" => "gosa.schema"), "gosaApplicationGroup" => array("version" => "2.6.1", "class" => "appgroup","file" => "gosa.schema"), "GOhard" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), "gotoTerminal" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), "goServer" => array("version" => "2.6.1", "class" => "server","file" => "goserver.schema"), "goTerminalServer" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), "goShareServer" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), "goNtpServer" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), "goSyslogServer" => array("version" => "2.6.1", "class" => "terminals","file" => "goto.schema"), "goLdapServer" => array("version" => "2.6.1", "class" => "goServer"), "goCupsServer" => array("version" => "2.6.1", "class" => array("posixAccount", "terminals"),), "goImapServer" => array("version" => "2.6.1", "class" => array("mailAccount", "mailgroup"),"file" => "gosa-samba3.schema"), "goKrbServer" => array("version" => "2.6.1", "class" => "goServer"), "goFaxServer" => array("version" => "2.6.1", "class" => "gofaxAccount","file" => "gofax.schema"), ) as $name => $values){ $checks[$name] = $def_check; if(isset($values['version'])){ $checks[$name]["REQUIRED_VERSION"] = $values['version']; } if(isset($values['file'])){ $checks[$name]["SCHEMA_FILES"] = array($values['file']); } if (isset($values['class'])) { $checks[$name]["CLASSES_REQUIRED"] = is_array($values['class'])?$values['class']:array($values['class']); } } foreach($checks as $name => $value){ foreach($value['CLASSES_REQUIRED'] as $class){ if(!isset($objectclasses[$name])){ if($value['IS_MUST_HAVE']){ $checks[$name]['STATUS'] = FALSE; $checks[$name]['MSG'] = sprintf(_("Required object class %s is missing!"), bold($class)); } else { $checks[$name]['STATUS'] = TRUE; $checks[$name]['MSG'] = sprintf(_("Optional object class %s is missing!"), bold($class)); } }elseif(!check_schema_version($objectclasses[$name],$value['REQUIRED_VERSION'])){ $checks[$name]['STATUS'] = FALSE; $checks[$name]['MSG'] = sprintf(_("Wrong version of required object class %s (!=%s) detected!"), bold($class), bold($value['REQUIRED_VERSION'])); }else{ $checks[$name]['STATUS'] = TRUE; $checks[$name]['MSG'] = sprintf(_("Class available")); } } } $tmp = $objectclasses; /* The gosa base schema */ $checks['posixGroup'] = $def_check; $checks['posixGroup']['REQUIRED_VERSION'] = "2.6.1"; $checks['posixGroup']['SCHEMA_FILES'] = array("gosa-samba3.schema","gosa-samba2.schema"); $checks['posixGroup']['CLASSES_REQUIRED'] = array("posixGroup"); $checks['posixGroup']['STATUS'] = TRUE; $checks['posixGroup']['IS_MUST_HAVE'] = TRUE; $checks['posixGroup']['MSG'] = ""; $checks['posixGroup']['INFO'] = ""; /* Depending on selected rfc2307bis mode, we need different schema configurations */ if(isset($tmp['posixGroup'])){ if($rfc2307bis && isset($tmp['posixGroup']['STRUCTURAL'])){ $checks['posixGroup']['STATUS'] = FALSE; $checks['posixGroup']['MSG'] = _("RFC2307bis schema is enabled, but the current LDAP configuration does not support it!"); $checks['posixGroup']['INFO'] = _("To use RFC2307bis groups, the objectClass 'posixGroup' must be AUXILIARY."); } if(!$rfc2307bis && !isset($tmp['posixGroup']['STRUCTURAL'])){ $checks['posixGroup']['STATUS'] = FALSE; $checks['posixGroup']['MSG'] = _("RFC2307bis schema is disabled, but the current LDAP configuration supports it!"); $checks['posixGroup']['INFO'] = _("To correct this, the objectClass 'posixGroup' must be STRUCTURAL."); } } return($checks); } function get_languages($languages_in_own_language = FALSE,$strip_region_tag = FALSE) { $tmp = array( "de_DE" => "German", "fr_FR" => "French", "it_IT" => "Italian", "es_ES" => "Spanish", "en_US" => "English", "nl_NL" => "Dutch", "pl_PL" => "Polish", "pt_BR" => "Brazilian Portuguese", #"sv_SE" => "Swedish", "zh_CN" => "Chinese", "vi_VN" => "Vietnamese", "ru_RU" => "Russian"); $tmp2= array( "de_DE" => _("German"), "fr_FR" => _("French"), "it_IT" => _("Italian"), "es_ES" => _("Spanish"), "en_US" => _("English"), "nl_NL" => _("Dutch"), "pl_PL" => _("Polish"), "pt_BR" => _("Brazilian Portuguese"), #"sv_SE" => _("Swedish"), "zh_CN" => _("Chinese"), "vi_VN" => _("Vietnamese"), "ru_RU" => _("Russian")); $ret = array(); if($languages_in_own_language){ $old_lang = setlocale(LC_ALL, 0); /* If the locale wasn't correclty set before, there may be an incorrect locale returned. Something like this: C_CTYPE=de_DE.UTF-8;LC_NUMERIC=C;LC_TIME=de_DE.UTF-8;LC ... Extract the locale name from this string and use it to restore old locale. */ if(preg_match("/LC_CTYPE/",$old_lang)){ $old_lang = preg_replace("/^.*LC_CTYPE=([^;]*).*$/","\\1",$old_lang); } foreach($tmp as $key => $name){ $lang = $key.".UTF-8"; setlocale(LC_ALL, $lang); if($strip_region_tag){ $ret[preg_replace("/^([^_]*).*$/","\\1",$key)] = _($name)." (".$tmp2[$key].")"; }else{ $ret[$key] = _($name)."  (".$tmp2[$key].")"; } } setlocale(LC_ALL, $old_lang); }else{ foreach($tmp as $key => $name){ if($strip_region_tag){ $ret[preg_replace("/^([^_]*).*/","\\1",$key)] = _($name); }else{ $ret[$key] = _($name); } } } return($ret); } /*! \brief Returns contents of the given POST variable and check magic quotes settings * * Depending on the magic quotes settings this returns a stripclashed'ed version of * a certain POST variable. * * \param string 'name' the POST var to return ($_POST[$name]) * \return string * */ function get_post($name) { if(!isset($_POST[$name])){ trigger_error("Requested POST value (".$name.") does not exist, you should add a check to prevent this message."); return(FALSE); } // Handle Posted Arrays $tmp = array(); if(is_array($_POST[$name]) && !is_string($_POST[$name])){ if(version_compare(PHP_VERSION, '5.4.0', '<') && get_magic_quotes_gpc()){ $tmp = array_map("stripcslashes", $_POST); } else { $tmp = $_POST; } return($tmp); }else{ if(version_compare(PHP_VERSION, '5.4.0', '<') && get_magic_quotes_gpc()){ $val = stripcslashes($_POST[$name]); }else{ $val = $_POST[$name]; } } return($val); } /*! \brief Returns contents of the given POST variable and check magic quotes settings * * Depending on the magic quotes settings this returns a stripclashed'ed version of * a certain POST variable. * * \param string 'name' the POST var to return ($_POST[$name]) * \return string * */ function get_binary_post($name) { if(!isset($_POST[$name])){ trigger_error("Requested POST value (".$name.") does not exists, you should add a check to prevent this message."); return(FALSE); } $p = str_replace('\0', '', $_POST[$name]); if(get_magic_quotes_gpc()){ return(stripcslashes($p)); }else{ return($_POST[$p]); } } function set_post($value) { // Take care of array, recursivly convert each array entry. if(is_array($value)){ foreach($value as $key => $val){ $value[$key] = set_post($val); } return($value); } // Do not touch boolean values, we may break them. if($value === TRUE || $value === FALSE ) return($value); // Return a fixed string which can then be used in HTML fields without // breaking the layout or the values. This allows to use '"<> in input fields. return(htmlentities($value, ENT_QUOTES, 'utf-8')); } /*! \brief Return class name in correct case */ function get_correct_class_name($cls) { global $class_mapping; if(isset($class_mapping) && is_array($class_mapping)){ foreach($class_mapping as $class => $file){ if(preg_match("/^".$cls."$/i",$class)){ return($class); } } } return(FALSE); } /*! \brief Change the password for a given object ($dn). * This method uses the specified hashing method to generate a new password * for the object and it also takes care of sambaHashes, if enabled. * Finally the postmodify hook of the class 'user' will be called, if it is set. * * @param String The DN whose password shall be changed. * @param String The new password. * @param Boolean Skip adding samba hashes to the target (sambaNTPassword,sambaLMPassword) * @param String The hashin method to use, default is the global configured default. * @param String The users old password, this allows script based rollback mechanisms, * the prehook will then be called witch switched newPassword/oldPassword. * @return Boolean TRUE on success else FALSE. */ function change_password ($dn, $password, $mode=FALSE, $hash= "", $old_password = "", &$message = "") { global $config; $newpass= ""; // Not sure, why this is here, but maybe some encryption methods require it. mt_srand((double) microtime()*1000000); // Get a list of all available password encryption methods. $methods = new passwordMethod(session::get('config'),$dn); $available = $methods->get_available_methods(); // Fetch the current object data, to be able to detect the current hashing method // and to be able to rollback changes once has an error occured. $ldap = $config->get_ldap_link(); $ldap->cat ($dn, array("shadowLastChange", "userPassword","sambaNTPassword","sambaLMPassword", "uid", "objectClass")); $attrs = $ldap->fetch (); $initialAttrs = $attrs; // If no hashing method is enforced, then detect what method we've to use. $hash = strtolower($hash); if(empty($hash)){ // Do we need clear-text password for this object? if(isset($attrs['userPassword'][0]) && !preg_match ("/^{([^}]+)}(.+)/", $attrs['userPassword'][0])){ $hash = "clear"; $test = new $available[$hash]($config,$dn); $test->set_hash($hash); } // If we've still no valid hashing method detected, then try to extract if from the userPassword attribute. elseif(isset($attrs['userPassword'][0]) && preg_match ("/^{([^}]+)}(.+)/", $attrs['userPassword'][0], $matches)){ $test = passwordMethod::get_method($attrs['userPassword'][0],$dn); if($test){ $hash = $test->get_hash_name(); } } // No current password was found and no hash is enforced, so we've to use the config default here. $hash = $config->get_cfg_value('core','passwordDefaultHash'); $test = new $available[$hash]($config,$dn); $test->set_hash($hash); }else{ $test = new $available[$hash]($config,$dn); $test->set_hash($hash); } // We've now a valid password-method-handle and can create the new password hash or don't we? if(!$test instanceOf passwordMethod){ $message = _("Cannot detect password hash!"); }else{ // Feed password backends with object information. $test->dn = $dn; $test->attrs = $attrs; $newpass= $test->generate_hash($password); // Do we have to append samba attributes too? // - sambaNTPassword / sambaLMPassword $tmp = $config->get_cfg_value('core','sambaHashHook'); $attrs= array(); if (!$mode && !empty($tmp)){ $attrs= generate_smb_nt_hash($password); if(!count($attrs) || !is_array($attrs)){ msg_dialog::display(_("Error"),_("Cannot generate SAMBA hash!"),ERROR_DIALOG); return(FALSE); } } // Write back the new password hash $ldap->cd($dn); $attrs['userPassword']= $newpass; // For posixUsers - Set the last changed value. if(in_array_strict("shadowAccount", $initialAttrs['objectClass'])){ $attrs['shadowLastChange'] = (int)(date("U") / 86400); } // Prepare a special attribute list, which will be used for event hook calls $attrsEvent = array(); foreach($initialAttrs as $name => $value){ if(!is_numeric($name)) $attrsEvent[$name] = escapeshellarg($value[0]); } $attrsEvent['dn'] = escapeshellarg($initialAttrs['dn']); foreach($attrs as $name => $value){ $attrsEvent[$name] = escapeshellarg($value); } $attrsEvent['current_password'] = escapeshellarg($old_password); $attrsEvent['new_password'] = escapeshellarg($password); // Call the premodify hook now $passwordPlugin = new password($config,$dn); plugin::callHook($passwordPlugin, 'PREMODIFY', $attrsEvent, $output,$retCode,$error, $directlyPrintError = FALSE); if($retCode === 0 && count($output)){ $message = sprintf(_("Pre-event hook reported a problem: %s. Password change canceled!"),implode($output)); return(FALSE); } // Perform ldap operations $ldap->modify($attrs); // Check if the object was locked before, if it was, lock it again! $deactivated = $test->is_locked($config,$dn); if($deactivated){ $test->lock_account($config,$dn); } // Check if everything went fine and then call the post event hooks. // If an error occures, then try to rollback the complete actions done. $preRollback = FALSE; $ldapRollback = FALSE; $success = TRUE; if (!$ldap->success()) { new log("modify","users/passwordMethod",$dn,array(),"Password change - ldap modifications! - FAILED"); $success =FALSE; $message = msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD); $preRollback =TRUE; } else { // Now call the passwordMethod change mechanism. if(!$test->set_password($password)){ $ldapRollback = TRUE; $preRollback =TRUE; $success = FALSE; new log("modify","users/passwordMethod",$dn,array(),"Password change - set_password! - FAILED"); $message = _("Password change failed!"); }else{ // Execute the password hook plugin::callHook($passwordPlugin, 'POSTMODIFY', $attrsEvent, $output,$retCode,$error, $directlyPrintError = FALSE); if($retCode === 0){ if(count($output)){ new log("modify","users/passwordMethod",$dn,array(),"Password change - Post modify hook reported! - FAILED!"); $message = sprintf(_("Post-event hook reported a problem: %s. Password change canceled!"),implode($output)); $ldapRollback = TRUE; $preRollback = TRUE; $success = FALSE; }else{ #new log("modify","users/passwordMethod",$dn,array(),"Password change - successfull!"); } }else{ $ldapRollback = TRUE; $preRollback = TRUE; $success = FALSE; new log("modify","users/passwordMethod",$dn,array(),"Password change - postmodify hook execution! - FAILED"); new log("modify","users/passwordMethod",$dn,array(),$error); // Call password method again and send in old password to // keep the database consistency $test->set_password($old_password); } } } // Setting the password in the ldap database or further operation failed, we should now execute // the plugins pre-event hook, using switched passwords, new/old password. // This ensures that passwords which were set outside of GOsa, will be reset to its // starting value. if($preRollback){ new log("modify","users/passwordMethod",$dn,array(),"Rolling back premodify hook!"); $oldpass= $test->generate_hash($old_password); $attrsEvent['current_password'] = escapeshellarg($password); $attrsEvent['new_password'] = escapeshellarg($old_password); foreach(array("userPassword","sambaNTPassword","sambaLMPassword") as $attr){ if(isset($initialAttrs[$attr][0])) $attrsEvent[$attr] = $initialAttrs[$attr][0]; } plugin::callHook($passwordPlugin, 'PREMODIFY', $attrsEvent, $output,$retCode,$error, $directlyPrintError = FALSE); if($retCode === 0 && count($output)){ $message = sprintf(_("Pre-event hook reported a problem: %s. Password change canceled!"),implode($output)); new log("modify","users/passwordMethod",$dn,array(),"Rolling back premodify hook! - FAILED!"); } } // We've written the password to the ldap database, but executing the postmodify hook failed. // Now, we've to rollback all password related ldap operations. if($ldapRollback){ new log("modify","users/passwordMethod",$dn,array(),"Rolling back ldap modifications!"); $attrs = array(); foreach(array("userPassword","sambaNTPassword","sambaLMPassword") as $attr){ if(isset($initialAttrs[$attr][0])) $attrs[$attr] = $initialAttrs[$attr][0]; } $ldap->cd($dn); $ldap->modify($attrs); if(!$ldap->success()){ $message = msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD); new log("modify","users/passwordMethod",$dn,array(),"Rolling back ldap modifications! - FAILED"); } } // Log action. if($success){ stats::log('global', 'global', array('users'), $action = 'change_password', $amount = 1, 0, $test->get_hash()); new log("modify","users/passwordMethod",$dn,array(),"Password change - successfull!"); }else{ new log("modify","users/passwordMethod",$dn,array(),"Password change - FAILED!"); } return($success); } } /*! \brief Generate samba hashes * * Given a certain password this constructs an array like * array['sambaLMPassword'] etc. * * \param string 'password' * \return array contains several keys for lmPassword, ntPassword, pwdLastSet, etc. depending * on the samba version */ function generate_smb_nt_hash($password) { global $config; // First try to retrieve values via RPC if ($config->get_cfg_value("core","gosaRpcServer") != ""){ $rpc = $config->getRpcHandle(); $hash = $rpc->mksmbhash($password); if(!$rpc->success()){ msg_dialog::display(_("Error"),msgPool::rpcError($rpc->get_error()),ERROR_DIALOG); return(array()); } }elseif ($config->get_cfg_value("core","gosaSupportURI") != ""){ // Try using gosa-si $res= gosaSupportDaemon::send("gosa_gen_smb_hash", "GOSA", array("password" => $password), TRUE); if (isset($res['XML']['HASH'])){ $hash= $res['XML']['HASH']; } else { $hash= ""; } if ($hash == "") { msg_dialog::display(_("Configuration error"), _("Cannot generate SAMBA hash!"), ERROR_DIALOG); return (""); } } else { $password = addcslashes($password, '$'); // <- Escape $ twice for transport from PHP to console-process. $password = addcslashes($password, '$'); $password = addcslashes($password, '$'); // <- And again once, to be able to use it as parameter for the perl script. $tmp = $config->get_cfg_value("core",'sambaHashHook'); $tmp = preg_replace("/%userPassword/", escapeshellarg($password), $tmp); $tmp = preg_replace("/%password/", escapeshellarg($password), $tmp); @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__, $tmp, "Execute"); exec($tmp, $ar); flush(); reset($ar); $hash= current($ar); if ($hash == "") { msg_dialog::display(_("Configuration error"), sprintf(_("Generating SAMBA hash by running %s failed: check %s!"), bold($config->get_cfg_value("core",'sambaHashHook'), bold("sambaHashHook"))), ERROR_DIALOG); return(array()); } } list($lm,$nt)= explode(":", trim($hash)); $attrs['sambaLMPassword']= $lm; $attrs['sambaNTPassword']= $nt; $attrs['sambaPwdLastSet']= date('U'); $attrs['sambaBadPasswordCount']= "0"; $attrs['sambaBadPasswordTime']= "0"; return($attrs); } /*! \brief Get the Change Sequence Number of a certain DN * * To verify if a given object has been changed outside of Gosa * in the meanwhile, this function can be used to get the entryCSN * from the LDAP directory. It uses the attribute as configured * in modificationDetectionAttribute * * \param string 'dn' * \return either the result or "" in any other case */ function getEntryCSN($dn) { global $config; if(empty($dn) || !is_object($config)){ return(""); } /* Get attribute that we should use as serial number */ $attr= $config->get_cfg_value("core","modificationDetectionAttribute"); if($attr != ""){ $ldap = $config->get_ldap_link(); $ldap->cat($dn,array($attr)); $csn = $ldap->fetch(); if(isset($csn[$attr][0])){ return($csn[$attr][0]); } } return(""); } /*! \brief Add (a) given objectClass(es) to an attrs entry * * The function adds the specified objectClass(es) to the given * attrs entry. * * \param mixed 'classes' Either a single objectClass or several objectClasses * as an array * \param array 'attrs' The attrs array to be modified. * * */ function add_objectClass($classes, &$attrs) { if (is_array($classes)){ $list= $classes; } else { $list= array($classes); } foreach ($list as $class){ $attrs['objectClass'][]= $class; } } /*! \brief Removes a given objectClass from the attrs entry * * Similar to add_objectClass, except that it removes the given * objectClasses. See it for the params. * */ function remove_objectClass($classes, &$attrs) { if (isset($attrs['objectClass'])){ /* Array? */ if (is_array($classes)){ $list= $classes; } else { $list= array($classes); } $tmp= array(); foreach ($attrs['objectClass'] as $oc) { foreach ($list as $class){ if (strtolower($oc) != strtolower($class)){ $tmp[]= $oc; } } } $attrs['objectClass']= $tmp; } } /*! \brief Initialize a file download with given content, name and data type. * \param string data The content to send. * \param string name The name of the file. * \param string type The content identifier, default value is "application/octet-stream"; */ function send_binary_content($data,$name,$type = "application/octet-stream") { header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-cache"); header("Pragma: no-cache"); header("Cache-Control: post-check=0, pre-check=0"); header("Content-type: ".$type.""); $HTTP_USER_AGENT = $_SERVER['HTTP_USER_AGENT']; /* Strip name if it is a complete path */ if (preg_match ("/\//", $name)) { $name= basename($name); } /* force download dialog */ if (preg_match('/MSIE 5.5/', $HTTP_USER_AGENT) || preg_match('/MSIE 6.0/', $HTTP_USER_AGENT)) { header('Content-Disposition: filename="'.$name.'"'); } else { header('Content-Disposition: attachment; filename="'.$name.'"'); } echo $data; exit(); } function reverse_html_entities($str,$type = ENT_QUOTES , $charset = "UTF-8") { if(is_string($str)){ return(htmlentities($str,$type,$charset)); }elseif(is_array($str)){ foreach($str as $name => $value){ $str[$name] = reverse_html_entities($value,$type,$charset); } } return($str); } /*! \brief Encode special string characters so we can use the string in \ HTML output, without breaking quotes. \param string The String we want to encode. \return string The encoded String */ function xmlentities($str) { if(is_string($str)){ static $asc2uni= array(); if (!count($asc2uni)){ for($i=128;$i<256;$i++){ # $asc2uni[chr($i)] = "&#x".dechex($i).";"; } } $str = str_replace("&", "&", $str); $str = str_replace("<", "<", $str); $str = str_replace(">", ">", $str); $str = str_replace("'", "'", $str); $str = str_replace("\"", """, $str); $str = str_replace("\r", "", $str); $str = strtr($str,$asc2uni); return $str; }elseif(is_array($str)){ foreach($str as $name => $value){ $str[$name] = xmlentities($value); } } return($str); } /*! \brief Updates all accessTo attributes from a given value to a new one. For example if a host is renamed. \param String $from The source accessTo name. \param String $to The destination accessTo name. */ function update_accessTo($from,$to) { global $config; $ldap = $config->get_ldap_link(); $ldap->cd($config->current['BASE']); $ldap->search("(&(objectClass=trustAccount)(accessTo=".$from."))",array("objectClass","accessTo")); while($attrs = $ldap->fetch()){ $new_attrs = array("accessTo" => array()); $dn = $attrs['dn']; for($i = 0 ; $i < $attrs['accessTo']['count']; $i++){ if($attrs['accessTo'][$i] == $from){ if(!empty($to)){ $new_attrs['accessTo'][] = $to; } }else{ $new_attrs['accessTo'][] = $attrs['accessTo'][$i]; } } $ldap->cd($dn); $ldap->modify($new_attrs); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $dn, LDAP_MOD, "update_accessTo($from,$to)")); } new log("modify","update_accessTo($from,$to)",$dn,array_keys($new_attrs),$ldap->get_error()); } } /*! \brief Returns a random char */ function get_random_char () { $randno = rand (0, 63); if ($randno < 12) { return (chr ($randno + 46)); // Digits, '/' and '.' } else if ($randno < 38) { return (chr ($randno + 53)); // Uppercase } else { return (chr ($randno + 59)); // Lowercase } } function cred_encrypt($input, $password) { $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM); return bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $password, $input, MCRYPT_MODE_ECB, $iv)); } function cred_decrypt($input,$password) { $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC); $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM); return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $password, pack("H*", $input), MCRYPT_MODE_ECB, $iv); } function get_object_info() { return(session::get('objectinfo')); } function set_object_info($str = "") { session::set('objectinfo',$str); } function isIpInNet($ip, $net, $mask) { // Move to long ints $ip= ip2long($ip); $net= ip2long($net); $mask= ip2long($mask); // Mask given IP with mask. If it returns "net", we're in... $res= $ip & $mask; return ($res == $net); } function get_next_id($attrib, $dn) { global $config; switch ($config->get_cfg_value("core","idAllocationMethod")){ case "pool": return get_next_id_pool($attrib); case "traditional": return get_next_id_traditional($attrib, $dn); } msg_dialog::display(_("Error"), _("Cannot allocate free ID:")." "._("unknown idAllocation method!"), ERROR_DIALOG); return null; } function get_next_id_pool($attrib) { global $config; /* Fill informational values */ $min= $config->get_cfg_value("core","${attrib}PoolMin"); $max= $config->get_cfg_value("core","${attrib}PoolMax"); /* Sanity check */ if ($min >= $max) { msg_dialog::display(_("Error"), _("Cannot allocate free ID:")." ".sprintf(_("%sPoolMin >= %sPoolMax!"), bold($attrib), bold($attrib)), ERROR_DIALOG); return null; } /* ID to skip */ $ldap= $config->get_ldap_link(); $id= null; /* Try to allocate the ID several times before failing */ $tries= 3; while ($tries--) { /* Look for ID map entry */ $ldap->cd ($config->current['BASE']); $ldap->search ("(&(objectClass=sambaUnixIdPool)($attrib=*))", array("$attrib")); /* If it does not exist, create one with these defaults */ if ($ldap->count() == 0) { /* Fill informational values */ $minUserId= $config->get_cfg_value("core","uidNumberPoolMin"); $minGroupId= $config->get_cfg_value("core","gidNumberPoolMin"); /* Add as default */ $attrs= array("objectClass" => array("organizationalUnit", "sambaUnixIdPool")); $attrs["ou"]= "idmap"; $attrs["uidNumber"]= $minUserId; $attrs["gidNumber"]= $minGroupId; $ldap->cd("ou=idmap,".$config->current['BASE']); $ldap->add($attrs); if ($ldap->error != "Success") { msg_dialog::display(_("Error"), _("Cannot create sambaUnixIdPool entry!"), ERROR_DIALOG); return null; } $tries++; continue; } /* Bail out if it's not unique */ if ($ldap->count() != 1) { msg_dialog::display(_("Error"), _("Cannot allocate free ID:")." "._("sambaUnixIdPool is not unique!"), ERROR_DIALOG); return null; } /* Store old attrib and generate new */ $attrs= $ldap->fetch(); $dn= $ldap->getDN(); $oldAttr= $attrs[$attrib][0]; $newAttr= $oldAttr + 1; /* Sanity check */ if ($newAttr >= $max) { msg_dialog::display(_("Error"), _("Cannot allocate free ID:")." "._("no ID available!"), ERROR_DIALOG); return null; } if ($newAttr < $min) { msg_dialog::display(_("Error"), _("Cannot allocate free ID:")." "._("no ID available!"), ERROR_DIALOG); return null; } #FIXME: PHP is not able to do a modification of "del: .../add: ...", so this # is completely unsafe in the moment. #/* Remove old attr, add new attr */ #$attrs= array($attrib => $oldAttr); #$ldap->rm($attrs, $dn); #if ($ldap->error != "Success") { # continue; #} $ldap->cd($dn); $ldap->modify(array($attrib => $newAttr)); if ($ldap->error != "Success") { msg_dialog::display(_("Error"), _("Cannot allocate free ID:")." ".$ldap->get_error(), ERROR_DIALOG); return null; } else { return $oldAttr; } } /* Bail out if we had problems getting the next id */ if (!$tries) { msg_dialog::display(_("Error"), _("Cannot allocate free ID:")." "._("maximum number of tries exceeded!"), ERROR_DIALOG); } return $id; } function get_next_id_traditional($attrib, $dn) { global $config; $ids= array(); $ldap= $config->get_ldap_link(); $ldap->cd ($config->current['BASE']); if (preg_match('/gidNumber/i', $attrib)){ $oc= "posixGroup"; } else { $oc= "posixAccount"; } $ldap->search ("(&(objectClass=$oc)($attrib=*))", array("$attrib")); /* Get list of ids */ while ($attrs= $ldap->fetch()){ $ids[]= (int)$attrs["$attrib"][0]; } /* Add the nobody id */ $ids[]= 65534; /* get the ranges */ $tmp = array('0'=> 1000); if (preg_match('/posixAccount/', $oc) && $config->get_cfg_value("core","uidNumberBase") != ""){ $tmp= explode('-',$config->get_cfg_value("core","uidNumberBase")); } elseif($config->get_cfg_value("core","gidNumberBase") != ""){ $tmp= explode('-',$config->get_cfg_value("core","gidNumberBase")); } /* Set hwm to max if not set - for backward compatibility */ $lwm= $tmp[0]; if (isset($tmp[1])){ $hwm= $tmp[1]; } else { $hwm= pow(2,32); } /* Find out next free id near to UID_BASE */ if ($config->get_cfg_value("core","baseIdHook") == ""){ $base= $lwm; } else { /* Call base hook */ $base= get_base_from_hook($dn, $attrib); } for ($id= $base; $id++; $id < pow(2,32)){ if (!in_array_strict($id, $ids)){ return ($id); } } /* Should not happen */ if ($id == $hwm){ msg_dialog::display(_("Error"), _("Cannot allocate free ID!"), ERROR_DIALOG); exit; } } /* Mark the occurance of a string with a span */ function mark($needle, $haystack, $ignorecase= true) { $result= ""; while (preg_match('/^(.*)('.preg_quote($needle).')(.*)$/i', $haystack, $matches)) { $result.= $matches[1]."".$matches[2].""; $haystack= $matches[3]; } return $result.$haystack; } /* Return an image description using the path */ function image($path, $action= "", $title= "", $align= "middle") { global $config; global $BASE_DIR; $label= null; // Bail out, if there's no style file if(!class_exists('session')){ return ""; } if(!session::global_is_set("img-styles")){ // Get theme if (isset ($config)){ $theme= $config->get_cfg_value("core","theme"); } else { // Fall back to default theme $theme= "default"; } if (!file_exists("$BASE_DIR/ihtml/themes/$theme/img.styles")){ die ("No img.style for this theme found!"); } session::global_set('img-styles', unserialize(file_get_contents("$BASE_DIR/ihtml/themes/$theme/img.styles"))); } $styles= session::global_get('img-styles'); /* Extract labels from path */ if (preg_match("/\.png\[(.*)\]$/", $path, $matches)) { $label= $matches[1]; } $lbl= ""; if ($label) { if (isset($styles["images/label-".$label.".png"])) { $lbl= "
    "; } else { die("Invalid label specified: $label\n"); } $path= preg_replace("/\[.*\]$/", "", $path); } // Non middle layout? if ($align == "middle") { $align= ""; } else { $align= ";vertical-align:$align"; } // Clickable image or not? if ($title != "") { $title= "title='$title'"; } if ($action == "") { return "
    $lbl
    "; } else { return ""; } } /*! \brief Encodes a complex string to be useable in HTML posts. */ function postEncode($str) { return(preg_replace("/=/","_", base64_encode($str))); } /*! \brief Decodes a string encoded by postEncode */ function postDecode($str) { return(base64_decode(preg_replace("/_/","=", $str))); } /*! \brief Generate styled output */ function bold($str) { return "$str"; } /*! \brief Detect the special character handling for the currently used ldap database. * For example some convert , to \2C or " to \22. * * @param Config The GOsa configuration object. * @return Array An array containing a character mapping the use. */ function detectLdapSpecialCharHandling() { // The list of chars to test for global $config; if(!$config) return(NULL); // In the DN we've to use escaped characters, but the object name (o) // has the be un-escaped. $name = 'GOsaLdapEncoding_,_"_(_)_+_/'; $dnName = 'GOsaLdapEncoding_\,_\"_(_)_\+_/'; // Prapare name to be useable in filters $fixed= normalizeLdap(str_replace('\\\\', '\\\\\\', $name)); $filterName = str_replace('\\,', '\\\\,', $fixed); // Create the target dn $oDN = "o={$dnName},".$config->current['BASE']; // Get ldap connection and check if we've already created the character // detection object. $ldapCID = ldap_connect($config->current['SERVER']); ldap_set_option($ldapCID, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_bind($ldapCID, $config->current['ADMINDN'],$config->current['ADMINPASSWORD']); $res = ldap_list($ldapCID, $config->current['BASE'], "(&(o=".$filterName.")(objectClass=organization))", array('dn')); // If we haven't created the character-detection object, then create it now. $cnt = ldap_count_entries($ldapCID, $res); if(!$cnt){ $obj = array(); $obj['objectClass'] = array('top','organization'); $obj['o'] = $name; $obj['description'] = 'GOsa character encoding test-object.'; if(!@ldap_add($ldapCID, $oDN, $obj)){ trigger_error("GOsa couldn't detect the special character handling used by your ldap!"); return(NULL); } } // Read the character-handling detection entry from the ldap. $res = ldap_list($ldapCID, $config->current['BASE'], "(&(o=".$filterName.")(objectClass=organization))", array('dn','o')); $cnt = ldap_count_entries($ldapCID, $res); if($cnt != 1 || !$res){ trigger_error("GOsa couldn't detect the special character handling used by your ldap!"); return(NULL); }else{ // Get the character handling entry from the ldap and check how the // values were written. Compare them with what // we've initially intended to write and create a mapping out // of the results. $re = ldap_first_entry($ldapCID, $res); $attrs = ldap_get_attributes($ldapCID, $re); // Extract the interessting characters out of the dn and the // initially used $name for the entry. $mapDNstr = preg_replace("/^o=GOsaLdapEncoding_([^,]*),.*$/","\\1", trim(ldap_get_dn($ldapCID, $re))); $mapDN = preg_split("/_/", $mapDNstr,0, PREG_SPLIT_NO_EMPTY); $mapNameStr = preg_replace("/^GOsaLdapEncoding_/","",$dnName); $mapName = preg_split("/_/", $mapNameStr,0, PREG_SPLIT_NO_EMPTY); // Create a mapping out of the results. $map = array(); foreach($mapName as $key => $entry){ $map[$entry] = $mapDN[$key]; } return($map); } return(NULL); } /*! \brief Replaces placeholder in a given string. * For example: * '%uid@gonicus.de' Replaces '%uid' with 'uid'. * '{%uid[0]@gonicus.de}' Replaces '%uid[0]' with the first char of 'uid'. * '%uid[2-4]@gonicus.de' Replaces '%uid[2-4]' with three chars from 'uid' starting from the second. * * The surrounding {} in example 2 are optional. * * @param String The string to perform the action on. * @param Array An array of replacements. * @return The resulting string. */ function fillReplacements($str, $attrs, $shellArg = FALSE, $default = "") { // Search for '{%...[n-m]} // Get all matching parts of the given string and sort them by // length, to avoid replacing strings like '%uidNumber' with 'uid' // instead of 'uidNumber'; The longest tring at first. preg_match_all('/(\{?%([a-z0-9_]+)(\[(([0-9_]+)(\-([0-9_]+))?)\])?\}?)/i', $str ,$matches, PREG_SET_ORDER); $hits = array(); foreach($matches as $match){ $hits[strlen($match[2]).$match[0]] = $match; } krsort($hits); // Add lower case placeholders to avoid errors foreach($attrs as $key => $attr) $attrs[strtolower($key)] = $attr; // Replace the placeholder in the given string now. foreach($hits as $match){ // Avoid errors about undefined index. $name = strtolower($match[2]); if(!isset($attrs[$name])) $attrs[$name] = $default; // Calculate the replacement $start = (isset($match[5])) ? $match[5] : 0; $end = strlen($attrs[$name]); if(isset($match[5]) && !isset($match[7])){ $end = 1; }elseif(isset($match[5]) && isset($match[7])){ $end = ($match[7]-$start+1); } $value = substr($attrs[$name], $start, $end); // Use values which are valid for shell execution? if($shellArg) $value = escapeshellcmd($value); // Replace the placeholder within the string. $str = preg_replace("/".preg_quote($match[0],'/')."/", $value, $str); } return($str); } /*! \brief Generate a list of uid proposals based on a rule * * Unroll given rule string by filling in attributes and replacing * all keywords. * * \param string 'rule' The rule string from gosa.conf. * \param array 'attributes' A dictionary of attribute/value mappings * \return array List of valid not used uids */ function gen_uids($rule, $attributes) { global $config; $ldap = $config->get_ldap_link(); $ldap->cd($config->current['BASE']); @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $rule, "Processing"); // Strip out non ascii chars foreach($attributes as $name => $value){ if ( $config->get_cfg_value("core", "forceTranslit") == "true" ) { $value = cyrillic2ascii($value); } else { $value = iconv('UTF-8', 'US-ASCII//TRANSLIT', $value); } $value = preg_replace('/[^(\x20-\x7F)]*/','',$value); $attributes[$name] = strtolower($value); } @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $attributes, "Prepare"); // Search for '{%...[n-m]} // Get all matching parts of the given string and sort them by // length, to avoid replacing strings like '%uidNumber' with 'uid' // instead of 'uidNumber'; The longest tring at first. preg_match_all('/(\{?%([a-z0-9]+)(\[(([0-9]+)(\-([0-9]+))?)\])?\}?)/i', $rule ,$matches, PREG_SET_ORDER); $replacements = array(); foreach($matches as $match){ // No start position given, then add the complete value if(!isset($match[5])){ $replacements[$match[0]][] = $attributes[$match[2]]; // Start given but no end, so just add a single character }elseif(!isset($match[7])){ if(isset($attributes[$match[2]][$match[5]])){ $tmp = " ".$attributes[$match[2]]; $replacements[$match[0]][] = trim($tmp[$match[5]]); } // Add all values in range }else{ $str = ""; for($i=$match[5]; $i<= $match[7]; $i++){ if(isset($attributes[$match[2]][$i])){ $tmp = " ".$attributes[$match[2]]; $str .= $tmp[$i]; $replacements[$match[0]][] = trim($str); } } } } // Create proposal array $rules = array($rule); foreach($replacements as $tag => $values){ $rules = gen_uid_proposals($rules, $tag, $values); } // Search for id tags {id:3} / {id#3} preg_match_all('/\{id(#|:)([0-9])+\}/i', $rule, $matches, PREG_SET_ORDER); $idReplacements = array(); foreach($matches as $match){ if(count($match) != 3) continue; // Generate random number if($match[1] == '#'){ foreach($rules as $id => $ruleStr){ $genID = rand(pow(10,$match[2] -1),pow(10, ($match[2])) - 1); $rules[$id] = preg_replace("/".preg_quote($match[0],'/')."/", $genID,$ruleStr); } } // Search for next free id if($match[1] == ':'){ // Walk through rules and replace all occurences of {id:..} foreach($rules as $id => $ruleStr){ $genID = 0; $start = TRUE; while($start || $ldap->count()){ $start = FALSE; $number= sprintf("%0".$match[2]."d", $genID); $testRule = preg_replace("/".preg_quote($match[0],'/')."/",$number,$ruleStr); $ldap->search('uid='.normalizeLdap($testRule)); $genID ++; } $rules[$id] = preg_replace("/".preg_quote($match[0],'/')."/",$number,$ruleStr); } } } // Create result set by checking which uid is already used and which is free. $ret = array(); foreach($rules as $rule){ $ldap->search('uid='.normalizeLdap($rule)); if(!$ldap->count()){ $ret[] = $rule; } } return($ret); } function gen_uid_proposals(&$rules, $tag, $values) { $newRules = array(); foreach($rules as $rule){ foreach($values as $value){ $newRules[] = preg_replace("/".preg_quote($tag,'/')."/", $value, $rule); } } return($newRules); } function gen_uuid() { return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', // 32 bits for "time_low" mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), // 16 bits for "time_mid" mt_rand( 0, 0xffff ), // 16 bits for "time_hi_and_version", // four most significant bits holds version number 4 mt_rand( 0, 0x0fff ) | 0x4000, // 16 bits, 8 bits for "clk_seq_hi_res", // 8 bits for "clk_seq_low", // two most significant bits holds zero and one for variant DCE1.1 mt_rand( 0, 0x3fff ) | 0x8000, // 48 bits for "node" mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) ); } function gosa_file_name($filename) { $tempfile = tempnam(sys_get_temp_dir(), 'GOsa'); if(move_uploaded_file($filename, $tempfile)){ return( $tempfile); } } function gosa_file($filename) { $tempfile = tempnam(sys_get_temp_dir(), 'GOsa'); if(move_uploaded_file($filename, $tempfile)){ return file( $tempfile ); } } function gosa_fopen($filename, $mode) { $tempfile = tempnam(sys_get_temp_dir(), 'GOsa'); if(move_uploaded_file($filename, $tempfile)){ return fopen( $tempfile, $mode ); } } /*\brief Our own in_array method which defaults to a strict mode. */ function in_array_strict($needle, $haystack, $strict = TRUE) { return(in_array($needle, $haystack, $strict)); } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_userFilter.inc0000644000175000017500000002236411613731145017477 0ustar mikemikeget_ldap_link(); $ocs = $ldap->get_objectclasses(); session::set('userFilter::userFilteringAvailable', isset($ocs['gosaProperties'])); } return(session::get('userFilter::userFilteringAvailable')); } /*! \brief Initiates the filter editing dialog. */ function __construct($config, $listing) { // Initialize this plugin with the users dn to gather user defined filters. $ui = get_userinfo(); plugin::plugin($config, $ui->dn); $this->listing = &$listing; $filter= $this->listing->getFilter(); // Load list of filters if(isset($this->attrs['gosaUserDefinedFilter'])){ for($i=0; $i< $this->attrs['gosaUserDefinedFilter']['count']; $i++){ $tmp = userFilter::explodeFilterString($this->attrs['gosaUserDefinedFilter'][$i]); if(isset($tmp['tag'])){ $this->filters[$tmp['tag']]= $tmp; } } } // Create the filter list $this->filterWidget= new sortableListing($this->filters, $this->convertFilterList()); $this->filterWidget->setDeleteable(true); $this->filterWidget->setEditable(true); $this->filterWidget->setWidth("100%"); $this->filterWidget->setHeight("270px"); $this->filterWidget->setHeader(array(_("Parent filter"),_("Name"),_("Description"),_("Category"),_("Options"),"")); $this->filterWidget->setColspecs(array('80px', '100px', '200px', '120px','150px')); $this->filterWidget->setAcl($ui->get_permissions($ui->dn,'users/user','gosaUserDefinedFilter')); } /*! \brief Parses a filter string into an array. */ static function explodeFilterString($filterStr) { list($parent,$categories, $name, $description, $filterList, $flags) = preg_split('/;/', $filterStr); // Ensure that we no empty category in our category list. if(empty($categories)){ $categories = array(); }else{ $categories = preg_split('/,/', $categories); } // Ensure that we no empty entry in out flags list. if(empty($flags)){ $flags = array(); }else{ $flags = preg_split('/,/', $flags); } // Get filters and their backends $queries = array(); foreach(preg_split('/,/', $filterList) as $data){ if(!empty($data)){ list($filter, $backend) = preg_split('/:/', $data); $queries[] = array('backend' => $backend, 'filter' => base64_decode($filter)); } } // build up filter entry. $tmp = array( 'parent' => $parent, 'tag' => $name, 'categories' => $categories, 'description' => base64_decode($description), 'query' => $queries, 'flags' => $flags); return($tmp); } /*! \brief Converts the list of filters ($this->filters) into data which is useable * for the sortableList object ($this->filterWidget). * @return Array An array containg data useable for sortableLists ($this->filterWidget) */ function convertFilterList() { $data = array(); foreach($this->filters as $name => $filter){ $data[$name] = array('data' => array( $filter['parent'], $filter['tag'], htmlentities($filter['description'], ENT_COMPAT, 'UTF-8'), implode(", ",$filter['categories']), implode(", ",$filter['flags']))); } return($data); } /*! \brief Display the user-filter overview as HTML content. * @return string HTML-content showing the user-filter editing dialog. */ function execute() { plugin::execute(); // Let the filter widget update itself $this->filterWidget->update(); // Cancel filter modifications (edit dialog) if(isset($_POST['cancelFilterSettings'])){ $this->dialog = NULL; } // Save modified filter entries (edit dialog) if(isset($_POST['saveFilterSettings']) && $this->dialog instanceOf userFilterEditor){ $this->dialog->save_object(); $msgs = $this->dialog->check(); if(count($msgs)){ msg_dialog::displayChecks($msgs); }else{ $orig_name = $this->dialog->getOriginalName(); $new_name = $this->dialog->getCurrentName(); // The object was renamed and if($orig_name != $new_name && isset($this->filters[$new_name])){ $msgs = array(msgPool::duplicated(_("Name"))); msg_dialog::displayChecks($msgs); }else{ // Remove old entry if filter was renamed if($orig_name != "" && isset($this->filters[$orig_name])){ unset($this->filters[$orig_name]); } // Now append the new filter object. $this->filters[$new_name] = $this->dialog->save(); $this->dialog = NULL; $this->filterWidget->setListData($this->filters, $this->convertFilterList()); $this->filterWidget->update(); } } } // Act on edit requests $this->filterWidget->save_object(); $action = $this->filterWidget->getAction(); if($action['action'] == 'edit' && count($action['targets']) == 1){ $key= $this->filterWidget->getKey($action['targets'][0]); if(isset($this->filters[$key])){ $this->dialog=new userFilterEditor($this->filters[$key], $this->listing); } } // Act on new requests if(isset($_POST['addFilter'])){ $this->dialog=new userFilterEditor(array(), $this->listing); } // Act on remove requests $action = $this->filterWidget->getAction(); if($action['action'] == 'delete' && count($action['targets']) == 1){ $key= $this->filterWidget->getKey($action['targets'][0]); if(isset($this->filters[$key])){ unset($this->filters[$key]); $this->filterWidget->update(); } } // Display edit dialog if($this->dialog instanceOf userFilterEditor){ $this->dialog->save_object(); return($this->dialog->execute()); } $smarty = get_smarty(); $smarty->assign("list", $this->filterWidget->render()); return($smarty->fetch(get_template_path('userFilter.tpl', FALSE))); } /*! \brief Returns user defined filter for a given list of categories, * if no categories were specified all enabled filters will be returned. */ static function getFilter($category=array()) { global $config; $ldap=$config->get_ldap_link(); $ui = get_userinfo(); $ldap->cd($config->current['BASE']); $ldap->search("(&(objectClass=gosaProperties)(gosaUserDefinedFilter=*))",array('gosaUserDefinedFilter')); $filter = array(); while($attrs = $ldap->fetch()){ for($i=0; $i < $attrs['gosaUserDefinedFilter']['count']; $i++){ $tmp = userFilter::explodeFilterString($attrs['gosaUserDefinedFilter'][$i]); if(!isset($tmp['tag'])) continue; // Remove line breaks from the filter, which may were added for better reading. foreach($tmp['query'] as $key => $query){ $c = preg_split('/\n/',$query['filter']); foreach($c as $cKey => $str) $c[$cKey] = trim($str); $tmp['query'][$key]['filter'] = mb_convert_encoding(implode($c),'UTF-8'); } // The filter is visible if it is shared or if is one of our own creations. // ... and enabled. $visible = in_array_strict('enable', $tmp['flags']) && ($attrs['dn'] == $ui->dn || in_array_strict('share', $tmp['flags'])); // Add filter if it matches the category list if($visible && (count($category) == 0 || array_intersect($category, $tmp['categories']))){ $filter[$tmp['tag']] = $tmp; } } } return($filter); } /*! \brief Write user-filter modifications back to the ldap. */ function save() { // Build up new list of filters $attrs = array(); foreach($this->filters as $filter){ $tmp = $filter['parent'].";"; $tmp.= implode(',', $filter['categories']).";"; $tmp.= $filter['tag'].";"; $tmp.= base64_encode($filter['description']).";"; // Add queries foreach($filter['query'] as $query){ $tmp.= base64_encode($query['filter']).":".$query['backend'].","; } $tmp = trim($tmp,",").";"; $tmp.= implode(',', $filter['flags']); $attrs[] = $tmp; } $this->gosaUserDefinedFilter = $attrs; plugin::save(); $ldap = $this->config->get_ldap_link(); $ldap->cd($this->dn); $ldap->modify($this->attrs); new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error()); if (!$ldap->success()){ msg_dialog::display(_("LDAP error"), msgPool::ldaperror($ldap->get_error(), $this->dn, LDAP_MOD, get_class())); } } /*! \brief Do not save any posted values here. */ function save_object(){} } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_tabs.inc0000644000175000017500000003354011613731145016302 0ustar mikemikeskip_save_object = ($bool == FALSE); } function tabs(&$config, $data, $dn, $acl_category= "", $hide_refs = FALSE, $hide_acls = FALSE) { /* Save dn */ $this->dn= $dn; $this->config= &$config; $this->hide_refs = $hide_refs; $this->hide_acls = $hide_acls; if(!count($data)) { $data[] = array("CLASS" => 'plugin',"NAME" => 'Error'); msg_dialog::display(_("Error"), sprintf(_("No plugin definition for %s found: please check the configuration file!"), bold(get_class($this))), "ERROR_DIALOG"); } $baseobject= NULL; $this->acl_category = $acl_category; foreach ($data as &$tab){ if (!plugin_available($tab['CLASS'])){ if($this->config->boolValueIsTrue("core","developmentMode")){ trigger_error(sprintf("Unknown class %s!", bold($tab['CLASS']))); } continue; } if ($this->current == "") $this->current= $tab['CLASS']; $this->by_name[$tab['CLASS']]= $tab['NAME']; if ($baseobject === NULL){ $baseobject= new $tab['CLASS']($this->config, $this->dn); $baseobject->enable_CSN_check(); $this->by_object[$tab['CLASS']]= $baseobject; } else { $this->by_object[$tab['CLASS']]= new $tab['CLASS']($this->config, $this->dn, $baseobject); } $this->read_only |= $this->by_object[$tab['CLASS']]->read_only; $this->by_object[$tab['CLASS']]->parent= &$this; $this->by_object[$tab['CLASS']]->set_acl_category($this->acl_category); } // Try to set the current tab to the posted value if(isset($_GET['pluginTab'])){ $tab = $_GET['pluginTab']; if(isset($this->by_name[$tab])) $this->current = $tab; } } /*! \brief Reinitializes the tab classes with fresh ldap values. This maybe usefull if for example the apply button was pressed. */ function re_init() { $baseobject= NULL; foreach($this->by_object as $name => $object){ $class = get_class($object); if(in_array_strict($class,array("reference","acl"))) continue; if ($baseobject === NULL){ $baseobject= new $class($this->config, $this->dn); $baseobject->enable_CSN_check(); $this->by_object[$name]= $baseobject; } else { $this->by_object[$name]= new $class($this->config, $this->dn, $baseobject); } $this->by_object[$name]->parent= &$this; $this->by_object[$name]->set_acl_category($this->acl_category); } } function execute() { // Ensure that the currently selected tab is valid. if(!isset($this->by_name[$this->current])) { $this->current = key($this->by_name); } pathNavigator::registerPlugin($this); // Rotate current to last $this->last= $this->current; // Look for pressed tab button foreach ($this->by_object as $class => &$obj){ if (isset($_POST[$class]) || (isset($_POST['arg']) && $_POST['arg'] == "$class")){ $this->current= $class; break; } } // Save last tab object if(!$this->skip_save_object){ if ($this->last == $this->current){ $this->save_object(TRUE); } else { $this->save_object(FALSE); } } /* If multiple edit is enabled for this tab, we have tho display different templates */ if(!$this->multiple_support_active){ $display= $this->by_object[$this->current]->execute(); }else{ $display= $this->by_object[$this->current]->multiple_execute(); } $tabs= $this->gen_tabs(); if($this->is_modal_dialog()){ $display = "\n
    ". "\n {$display}". "\n
    "; }else{ $display = "\n {$tabs}". "\n ". "\n
    ". "\n {$display}". "\n
    "; } // Detect if we've modifications right now. // - A plugin state has to be changed, this is not a goo solution, but // currently it does what we want. // (It would be better to ask the plugins if something has changed) $this->isPluginModified |= isset($_POST['modify_state']); // - Capture the plugins modification status. foreach ($this->by_name as $class => $name){ $this->isPluginModified |= (isset($this->by_object[$class]->is_modified)) && $this->by_object[$class]->is_modified; } $display="".$display; return ($display); } function save_object($save_current= FALSE) { /* Save last tab */ if ($this->last != ""){ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->last, "Saving"); if(!$this->multiple_support_active){ $this->by_object[$this->last]->save_object (); }else{ $this->by_object[$this->last]->multiple_save_object(); } } /* Skip if curent and last are the same object */ if ($this->last == $this->current){ return; } $obj= @$this->by_object[$this->current]; $this->disabled= $obj->parent->disabled; if ($save_current){ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $this->current, "Saving (current)"); if(!$this->multiple_support_active){ $obj->save_object(); }else{ $obj->multiple_save_object(); } } } function is_modal_dialog() { return($this->by_object[$this->current]->is_modal_dialog()); } function gen_tabs() { if($this->is_modal_dialog()) return(""); $display = "\n
    "; $display.= "\n
      "; foreach ($this->by_name as $class => $name){ // Shorten string if its too long for the tab headers $title= _($name); if (mb_strlen($title, 'UTF-8') > 28){ $title= mb_substr($title,0, 25, 'UTF-8')."..."; } // nobr causes w3c warnings so we use   to keep the tab name in one line $title= str_replace(" "," ",$title); // Take care about notifications $obj = $this->by_object[$class]; $tabClass = ($this->current == $class) ? "current" :""; if ( $this->by_object[$class]->pl_notify && ($obj->is_account || $obj->ignore_account)){ $tabClass .= " info"; } if(!empty($tabClass)) $tabClass="class='{$tabClass}'"; $onClick = "document.mainform.arg.value='{$class}'; document.mainform.submit();"; $display.= "\n
    • {$title}
    • "; } $display.="\n
    "; $display.="\n
    "; return($display); } function set_acl($acl) { /* Look for attribute in ACL */ trigger_error("Don't use tabs::set_acl() its obsolete."); } function delete() { /* Check if all plugins will ACK for deletion */ foreach (array_reverse($this->by_object) as $key => $obj){ $reason= $obj->allow_remove(); if ($reason != ""){ msg_dialog::display(_("Warning"), sprintf(_("Delete process has been canceled by plugin %s: %s"), bold($key), $reason), WARNING_DIALOG); return; } } /* Delete for all plugins */ foreach (array_reverse($this->by_object) as $obj){ $obj->remove_from_parent(); } } function password_change_needed() { /* Ask all plugins for needed password changes */ foreach ($this->by_object as &$obj){ if ($obj->password_change_needed()){ return TRUE; } } return FALSE; } function check($ignore_account= FALSE) { $this->save_object(TRUE); $messages= array(); $current_set = FALSE; /* Check all plugins */ foreach ($this->by_object as $key => &$obj){ if ($obj->is_account || $ignore_account || $obj->ignore_account){ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__,$key, "Checking"); if(!$this->multiple_support_active){ $msg = $obj->check(); }else{ $msg = $obj->multiple_check(); } if (count($msg)){ $obj->pl_notify= TRUE; if(!$current_set){ $current_set = TRUE; $this->current= $key; $messages = $msg; } }else{ $obj->pl_notify= FALSE; } }else{ $obj->pl_notify= FALSE; } } return ($messages); } function save($ignore_account= FALSE) { /* Save all plugins */ foreach ($this->by_object as $key => &$obj){ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Saving"); $obj->dn= $this->dn; if(!$obj instanceof plugin && !$obj instanceOf management){ trigger_error("Something went wrong while saving ".$obj->dn.". Object class '".get_class($obj)."'."); }else{ if ($obj->is_account || $ignore_account || $obj->ignore_account){ if ($obj->save() == 1){ return (1); } } else { $obj->remove_from_parent(); } } } return (0); } function adapt_from_template($dn, $skip= array()) { foreach ($this->by_object as $key => &$obj){ @DEBUG (DEBUG_TRACE, __LINE__, __FUNCTION__, __FILE__, $key, "Adapting"); $obj->parent= &$this; $obj->adapt_from_template($dn, $skip); } } /* Save attributes posted by copy & paste dialog */ function saveCopyDialog() { foreach ($this->by_object as &$obj){ if($obj->is_account || $obj->ignore_account){ $obj->saveCopyDialog(); } } } /* return copy & paste dialog */ function getCopyDialog() { $ret = ""; $this->SubDialog = false; foreach ($this->by_object as &$obj){ if($obj->is_account || $obj->ignore_account){ $tmp = $obj->getCopyDialog(); if($tmp['status'] == "SubDialog"){ $this->SubDialog = true; return($tmp['string']); }else{ if(!empty($tmp['string'])){ $ret .= $tmp['string']; $ret .= "
    "; } } } } return($ret); } function addSpecialTabs() { if(!$this->hide_acls){ $this->by_name['acl']= _("ACL"); $this->by_object['acl']= new acl($this->config, $this, $this->dn); $this->by_object['acl']->parent= &$this; } if(!$this->hide_refs){ $this->by_name['reference']= _("References"); $this->by_object['reference']= new reference($this->config, $this->dn); $this->by_object['reference']->parent= &$this; $this->by_object['reference']->set_acl_category($this->acl_category); } } function set_acl_base($base= "") { /* Update reference, transfer variables */ $first= ($base == ""); foreach ($this->by_object as &$obj){ if ($first){ $first= FALSE; $base= $obj->acl_base; } else { $obj->set_acl_base($base); } } } /*! \brief Checks if one of the used tab plugins supports multiple edit. @param boolean Returns TRUE if at least one plugins supports multiple edit. */ function multiple_support_available() { foreach($this->by_object as $name => $obj){ if($obj->multiple_support){ return(TRUE); } } return(FALSE); } /*! \brief Enables multiple edit support for the given tab. All unsupported plugins will be disabled. @param boolean Returns TRUE if at least one plugin supports multiple edit */ function enable_multiple_support() { if(!$this->multiple_support_available()){ return(FALSE); }else{ $this->multiple_support_active = TRUE; foreach($this->by_object as $name => $obj){ if($obj->multiple_support){ $this->by_object[$name]->enable_multiple_support(); }else{ unset($this->by_object[$name]); unset($this->by_name[$name]); } } } return(TRUE); } function setReadOnly($s = TRUE) { foreach($this->by_object as $name => $obj){ $this->by_object[$name]->read_only = $s; } $this->read_only = $s; } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_ldapMultiplexer.inc0000644000175000017500000000342511445660162020526 0ustar mikemikeobject= $object; /* Set result resource */ $this->sr= $this->object->getSearchResource(); } public function __call($methodName, $parameters) { /* Add resource pointer if the mentioned methods are used */ if (preg_match('/^(search|ls|cat|fetch|clearResult|resetResult|count|getDN|recursive_remove|rmdir_recursive|gen_xls|create_missing_trees|import_single_entry|import_complete_ldif)$/', $methodName)){ array_unshift($parameters, $this->sr); } $class= new ReflectionClass($this->object); $method= $class->getMethod($methodName); return $method->invokeArgs($this->object, $parameters); } public function __get($memberName) { return $this->object->$memberName; } } ?> gosa-core-2.7.4/include/class_userinfo.inc0000644000175000017500000006114411613731145017204 0ustar mikemikeconfig= &$config; $ldap= $this->config->get_ldap_link(); $ldap->cat($userdn,array('sn', 'givenName', 'uid', 'gidNumber', 'preferredLanguage', 'gosaUnitTag', 'gosaLoginRestriction')); $attrs= $ldap->fetch(); if (isset($attrs['givenName'][0]) && isset($attrs['sn'][0])){ $this->cn= $attrs['givenName'][0]." ".$attrs['sn'][0]; } else { $this->cn= $attrs['uid'][0]; } if (isset($attrs['gidNumber'][0])){ $this->gidNumber= $attrs['gidNumber'][0]; } /* Restrictions? */ if (isset($attrs['gosaLoginRestriction'])){ $this->restrictions= $attrs['gosaLoginRestriction']; unset($this->restrictions['count']); } /* Assign user language */ if (isset($attrs['preferredLanguage'][0])){ $this->language= $attrs['preferredLanguage'][0]; } if (isset($attrs['gosaUnitTag'][0])){ $this->gosaUnitTag= $attrs['gosaUnitTag'][0]; } $this->dn= $userdn; $this->uid= $attrs['uid'][0]; $this->ip= $_SERVER['REMOTE_ADDR']; /* Initialize ACL_CACHE */ $this->reset_acl_cache(); } public function reset_acl_cache() { /* Initialize ACL_CACHE */ session::global_set('ACL_CACHE',array()); } function loadACL() { $this->ACL= array(); $this->allACLs= array(); $this->groups= array(); $this->result_cache =array(); $this->reset_acl_cache(); $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); /* Get member groups... */ $ldap->search("(&(objectClass=posixGroup)(memberUid=".$this->uid."))", array('dn')); while ($attrs= $ldap->fetch()){ $this->groups[$attrs['dn']]= $attrs['dn']; } /* Crawl through ACLs and move relevant to the tree */ $ldap->search("(objectClass=gosaACL)", array('dn', 'gosaAclEntry')); $aclp= array(); $aclc= array(); while ($attrs= $ldap->fetch()){ /* Insert links in ACL array */ $aclp[$attrs['dn']]= substr_count($attrs['dn'], ','); $aclc[$attrs['dn']]= array(); $ol= array(); for($i= 0; $i<$attrs['gosaAclEntry']['count']; $i++){ $ol= array_merge($ol, @acl::explodeAcl($attrs['gosaAclEntry'][$i])); } $aclc[$attrs['dn']]= $ol; } /* Resolve roles here. */ foreach($aclc as $dn => $data){ foreach($data as $prio => $aclc_value) { if($aclc_value['type'] == "role"){ unset($aclc[$dn][$prio]); $ldap->cat($aclc_value['acl'],array("gosaAclTemplate")); $attrs = $ldap->fetch(); if(isset($attrs['gosaAclTemplate'])){ for($i= 0; $i<$attrs['gosaAclTemplate']['count']; $i++){ $tmp = @acl::explodeAcl($attrs['gosaAclTemplate'][$i]); foreach($tmp as $new_acl){ /* Keep non role attributes here! */ $new_acl['filter'] = $aclc_value['filter']; $new_acl['members'] = $aclc_value['members']; $aclc[$dn][] =$new_acl; } } } } } } /* ACL's read, sort for tree depth */ asort($aclp); /* Sort in tree order */ foreach ($aclp as $dn => $acl){ /* Check if we need to keep this ACL */ foreach($aclc[$dn] as $idx => $type){ $interresting= FALSE; /* No members? This ACL rule is deactivated ... */ if (!count($type['members'])){ $interresting= FALSE; } else { /* Inspect members... */ foreach ($type['members'] as $grp => $grpdsc){ /* Some group inside the members that is relevant for us? */ if (in_array_ics(@LDAP::convert(preg_replace('/^G:/', '', $grp)), $this->groups)){ $interresting= TRUE; } /* User inside the members? */ if (mb_strtoupper(preg_replace('/^U:/', '', $grp)) == mb_strtoupper($this->dn)){ $interresting= TRUE; } /* Wildcard? */ if (preg_match('/^G:\*/', $grp)){ $interresting= TRUE; } $this->allACLs[$dn][$idx]= $type; } } if ($interresting){ if (!isset($this->ACL[$dn])){ $this->ACL[$dn]= array(); } $this->ACL[$dn][$idx]= $type; } } } /* Create an array which represenet all relevant permissions settings per dn. The array will look like this: . ['ou=base'] ['ou=base'] = array(ACLs); . . ['ou=dep1,ou=base']['ou=dep1,ou=base'] = array(ACLs); . ['ou=base'] = array(ACLs); For object located in 'ou=dep1,ou=base' we have to both ACLs, for objects in 'ou=base' we only have to apply on ACL. */ $without_self_acl = $all_acl = array(); foreach($this->ACL as $dn => $acl){ $sdn =$dn; $first= TRUE; // Run at least once while(strpos($dn,",") !== FALSE || $first){ $first = FALSE; if(isset($this->ACL[$dn])){ $all_acl[$sdn][$dn] = $this->ACL[$dn]; $without_self_acl[$sdn][$dn] = $this->ACL[$dn]; foreach($without_self_acl[$sdn][$dn] as $acl_id => $acl_set){ /* Remember which ACL set has speicial user filter */ if(isset($acl_set['filter']{1})){ $this->ACLperPath_usesFilter[$sdn] = TRUE; } /* Remove all acl entries which are especially for the current user (self acl) */ if(isset($acl_set['acl'])){ foreach($acl_set['acl'] as $object => $object_acls){ if(isset($object_acls[0]) && strpos($object_acls[0],"s") !== FALSE){ unset($without_self_acl[$sdn][$dn][$acl_id]['acl'][$object]); } } } } } $dn = preg_replace("/^[^,]*+,/","",$dn); } } $this->ACLperPath =$without_self_acl; /* Append Self entry */ $dn = $this->dn; while(strpos($dn,",") && !isset($all_acl[$dn])){ $dn = preg_replace("/^[^,]*+,/","",$dn); } if(isset($all_acl[$dn])){ $this->ACLperPath[$this->dn] = $all_acl[$dn]; } } /* Returns an array containing all target objects we've permssions on. */ function get_acl_target_objects() { return(array_keys($this->ACLperPath)); } function get_category_permissions($dn, $category, $any_acl = FALSE) { return($this->get_permissions($dn,$category.'/0',"")); } /*! \brief Check if the given object (dn) is copyable @param String The object dn @param String The acl category (e.g. users) @param String The acl class (e.g. user) @return Boolean TRUE if the given object is copyable else FALSE */ function is_copyable($dn, $object, $class) { return(preg_match("/r/",$this->has_complete_category_acls($dn, $object))); } /*! \brief Check if the given object (dn) is cutable @param String The object dn @param String The acl category (e.g. users) @param String The acl class (e.g. user) @return Boolean TRUE if the given object is cutable else FALSE */ function is_cutable($dn, $object, $class) { $remove = preg_match("/d/",$this->get_permissions($dn,$object."/".$class)); $read = preg_match("/r/",$this->has_complete_category_acls($dn, $object)); return($remove && $read); } /*! \brief Checks if we are allowed to paste an object to the given destination ($dn) @param String The destination dn @param String The acl category (e.g. users) @param String The acl class (e.g. user) @return Boolean TRUE if we are allowed to paste an object. */ function is_pasteable($dn, $object) { return(preg_match("/w/",$this->has_complete_category_acls($dn, $object))); } /*! \brief Checks if we are allowed to restore a snapshot for the given dn. @param String The destination dn @param String The acl category (e.g. users) @return Boolean TRUE if we are allowed to restore a snapshot. */ function allow_snapshot_restore($dn, $object) { if(!is_array($object)){ $object = array($object); } $r = $w = TRUE; foreach($object as $category){ $w &= preg_match("/w/",$this->has_complete_category_acls($dn, $category)); $r &= preg_match("/r/",$this->has_complete_category_acls($dn, $category)); } return($r && $w ); } /*! \brief Checks if we are allowed to create a snapshot of the given dn. @param String The source dn @param String The acl category (e.g. users) @return Boolean TRUE if we are allowed to restore a snapshot. */ function allow_snapshot_create($dn, $object) { if(!is_array($object)){ $object = array($object); } $r = TRUE; foreach($object as $category){ $r &= preg_match("/r/",$this->has_complete_category_acls($dn, $category)); } return($r) ; } function get_permissions($dn, $object, $attribute= "", $skip_write= FALSE) { /* If we are forced to skip ACLs checks for the current user then return all permissions. */ if($this->ignore_acl_for_current_user()){ if($skip_write){ return("rcdm"); } return("rwcdm"); } /* Push cache answer? */ $ACL_CACHE = &session::global_get('ACL_CACHE'); if (isset($ACL_CACHE["$dn+$object+$attribute"])){ $ret = $ACL_CACHE["$dn+$object+$attribute"]; if($skip_write){ $ret = str_replace(array('w','c','d','m'), '',$ret); } return($ret); } /* Check for correct category and class values... */ if(strpos($object,'/') !== FALSE){ list($aclCategory, $aclClass) = preg_split("!/!", $object); }else{ $aclCategory = $object; } if($this->config->boolValueIsTrue("core","developmentMode")){ if(!isset($this->ocMapping[$aclCategory])){ trigger_error("Invalid ACL category '".$aclCategory."'! ({$object})"); return(""); }elseif(isset($aclClass) && !in_array_strict($aclClass, $this->ocMapping[$aclCategory])){ trigger_error("Invalid ACL class '".$aclClass."'! ({$object})"); return(""); } if(isset($aclClass) && $aclClass != '0' && class_available($aclClass)){ $plInfo = call_user_func(array($aclClass, 'plInfo')); if(!empty($attribute) && !isset($plInfo['plProvidedAcls'][$attribute])){ trigger_error("Invalid ACL attribute '".$attribute."'! ({$object})"); return(""); } } } /* Detect the set of ACLs we have to check for this object */ $adn = $dn; while(!isset($this->ACLperPath[$adn]) && strpos($adn,",") !== FALSE){ $adn = preg_replace("/^[^,]*+,/","",$adn); } if(isset($this->ACLperPath[$adn])){ $ACL = $this->ACLperPath[$adn]; }else{ $ACL_CACHE["$dn+$object+$attribute"] = ""; return(""); } /* If we do not need to respect any user-filter settings we can skip the per object ACL checks. */ $orig_dn= $dn; if(!isset($this->ACLperPath_usesFilter[$adn])){ $dn = $adn; if (isset($ACL_CACHE["$dn+$object+$attribute"])){ $ret = $ACL_CACHE["$dn+$object+$attribute"]; if(!isset($ACL_CACHE["$orig_dn+$object+$attribute"])){ $ACL_CACHE["$orig_dn+$object+$attribute"] = $ACL_CACHE["$dn+$object+$attribute"]; } if($skip_write){ $ret = str_replace('w','',$ret); } return($ret); } } /* Get ldap object, for later filter checks */ $ldap = $this->config->get_ldap_link(); $acl= array("r" => "", "w" => "", "c" => "", "d" => "", "m" => "", "a" => ""); /* Build dn array */ $path= explode(',', $dn); $path= array_reverse($path); /* Walk along the path to evaluate the acl */ $cpath= ""; foreach ($path as $element){ /* Clean potential ACLs for each level */ if(isset($this->config->idepartments[$cpath])){ $acl= $this->cleanACL($acl); } if ($cpath == ""){ $cpath= $element; } else { $cpath= $element.','.$cpath; } if (isset($ACL[$cpath])){ /* Inspect this ACL, place the result into ACL */ foreach ($ACL[$cpath] as $subacl){ if($subacl['type'] == "role") { echo "role skipped"; continue; } /* With user filter */ if (isset($subacl['filter']) && !empty($subacl['filter'])){ $id = $dn."-".$subacl['filter']; if(!isset($ACL_CACHE['FILTER'][$id])){ $ACL_CACHE['FILTER'][$id] = $ldap->object_match_filter($dn,$subacl['filter']); } if(!$ACL_CACHE['FILTER'][$id]){ continue; } } /* Reset? Just clean the ACL and turn over to the next one... */ if ($subacl['type'] == 'reset'){ $acl= $this->cleanACL($acl, TRUE); continue; } /* Self ACLs? */ if($dn != $this->dn && isset($subacl['acl'][$object][0]) && (strpos($subacl['acl'][$object][0],"s") !== FALSE)){ continue; } /* If attribute is "", we want to know, if we've *any* permissions here... Merge global class ACLs [0] with attributes specific ACLs [attribute]. */ if ($attribute == "" && isset($subacl['acl'][$object])){ foreach($subacl['acl'][$object] as $attr => $dummy){ $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$object][$attr]); } continue; } /* Per attribute ACL? */ if (isset($subacl['acl'][$object][$attribute])){ $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$object][$attribute]); continue; } /* Per object ACL? */ if (isset($subacl['acl'][$object][0])){ $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$object][0]); continue; } /* Global ACL? */ if (isset($subacl['acl']['all/all'][0])){ $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl']['all/all'][0]); continue; } /* Global ACL? - Old style global ACL - Was removed since class_core.inc was created */ if (isset($subacl['acl']['all'][0])){ $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl']['all'][0]); continue; } /* Category ACLs (e.g. $object = "user/0") */ if(strstr($object,"/0")){ $ocs = preg_replace("/\/0$/","",$object); if(isset($this->ocMapping[$ocs])){ /* if $attribute is "", then check every single attribute for this object. if it is 0, then just check the object category ACL. */ if($attribute == ""){ foreach($this->ocMapping[$ocs] as $oc){ if (isset($subacl['acl'][$ocs.'/'.$oc])){ // Skip ACLs wich are defined for ourselfs only - if not checking against ($ui->dn) if(isset($subacl['acl'][$ocs.'/'.$oc][0]) && $dn != $this->dn && strpos($subacl['acl'][$ocs.'/'.$oc][0],"s") !== FALSE) continue; foreach($subacl['acl'][$ocs.'/'.$oc] as $attr => $dummy){ $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$ocs.'/'.$oc][$attr]); } continue; } } }else{ if(isset($subacl['acl'][$ocs.'/'.$oc][0])){ if($dn != $this->dn && strpos($subacl['acl'][$ocs.'/'.$oc][0],"s") !== FALSE) continue; $acl= $this->mergeACL($acl, $subacl['type'], $subacl['acl'][$ocs.'/'.$oc][0]); } } } continue; } } } } /* If the requested ACL is for a container object, then alter ACLs by applying cleanACL a last time. */ if(isset($this->config->idepartments[$dn])){ $acl = $this->cleanACL($acl); } /* Assemble string */ $ret= ""; foreach ($acl as $key => $value){ if ($value !== ""){ $ret.= $key; } } $ACL_CACHE["$dn+$object+$attribute"]= $ret; $ACL_CACHE["$orig_dn+$object+$attribute"]= $ret; /* Remove write if needed */ if ($skip_write){ $ret = str_replace(array('w','c','d','m'), '',$ret); } return ($ret); } /* Extract all departments that are accessible (direct or 'on the way' to an accessible department) */ function get_module_departments($module, $skip_self_acls = FALSE ) { /* If we are forced to skip ACLs checks for the current user then return all departments as valid. */ if($this->ignore_acl_for_current_user()){ return(array_keys($this->config->idepartments)); } /* Use cached results if possilbe */ $ACL_CACHE = &session::global_get('ACL_CACHE'); if(!is_array($module)){ $module = array($module); } global $plist; $res = array(); foreach($module as $mod){ if(isset($ACL_CACHE['MODULE_DEPARTMENTS'][$mod])){ $res = array_merge($res,$ACL_CACHE['MODULE_DEPARTMENTS'][$mod]); continue; } $deps = array(); /* Search for per object ACLs */ foreach($this->ACL as $dn => $infos){ foreach($infos as $info){ $found = FALSE; if(isset($info['acl'])){ foreach($info['acl'] as $cat => $data){ /* Skip self acls? */ if($skip_self_acls && isset($data['0']) && (strpos($data['0'], "s") !== FALSE)) continue; if(preg_match("/^".preg_quote($mod, '/')."/",$cat)){ $found =TRUE; break; } } } if($found && !isset($this->config->idepartments[$dn])){ while(!isset($this->config->idepartments[$dn]) && strpos($dn, ",")){ $dn = preg_replace("/^[^,]+,/","",$dn); } if(isset($this->config->idepartments[$dn])){ $deps[$dn] = $dn; } } } } /* For all gosaDepartments */ foreach ($this->config->departments as $dn){ if(isset($deps[$dn])) continue; $acl = ""; if(strpos($mod, '/')){ $acl.= $this->get_permissions($dn,$mod); }else{ $acl.= $this->get_category_permissions($dn,$mod,TRUE); } if(!empty($acl)) { $deps[$dn] = $dn; } } $ACL_CACHE['MODULE_DEPARTMENTS'][$mod] = $deps; $res = array_merge($res,$deps); } return (array_values($res)); } function mergeACL($acl, $type, $newACL) { $at= array("psub" => "p", "sub" => "s", "one" => "1"); if (strpos($newACL, 'w') !== FALSE && strpos($newACL, 'r') === FALSE){ $newACL .= "r"; } /* Ignore invalid characters */ $newACL= preg_replace('/[^rwcdm]/', '', $newACL); foreach(str_split($newACL) as $char){ /* Skip "self" ACLs without combination of rwcdm, they have no effect. -self flag without read/write/create/... */ if(empty($char)) continue; /* Skip permanent and subtree entries */ if (preg_match('/[sp]/', $acl[$char])){ continue; } if ($type == "base" && $acl[$char] != 1) { $acl[$char]= 0; } else { $acl[$char]= $at[$type]; } } return ($acl); } function cleanACL($acl, $reset= FALSE) { foreach ($acl as $key => $value){ /* Continue, if value is empty or permanent */ if ($value == "" || $value == "p") { continue; } /* Reset removes everything but 'p' */ if ($reset && $value != 'p'){ $acl[$key]= ""; continue; } /* Decrease tree level */ if (is_int($value)){ if ($value){ $acl[$key]--; } else { $acl[$key]= ""; } } } return ($acl); } /* #FIXME This could be logical wrong or could be optimized in the future Return combined acls for a given category. All acls will be combined like boolean AND As example ('rwcdm' + 'rcd' + 'wrm'= 'r') Results will be cached in $this->result_cache. $this->result_cache will be resetted if load_acls is called. */ function has_complete_category_acls($dn,$category) { $acl = "rwcdm"; $types = "rwcdm"; if(!is_string($category)){ trigger_error("category must be string"); $acl = ""; }else{ if(!isset($this->result_cache['has_complete_category_acls'][$dn][$category])) { if (isset($this->ocMapping[$category])){ foreach($this->ocMapping[$category] as $oc){ /* Skip objectClass '0' (e.g. users/0) get_permissions will ever return '' ?? */ if($oc == "0") continue; $tmp = $this->get_permissions($dn, $category."/".$oc); for($i = 0, $l= strlen($types); $i < $l; $i++) { if(!preg_match("/".$types[$i]."/",$tmp)){ $acl = preg_replace("/".$types[$i]."/","",$acl); } } } }else{ if($this->config->boolValueIsTrue("core","developmentMode")){ trigger_error("Invalid type of category ".$category); } $acl = ""; } $this->result_cache['has_complete_category_acls'][$dn][$category] = $acl; }else{ $acl = $this->result_cache['has_complete_category_acls'][$dn][$category]; } } return($acl); } /*! \brief Returns TRUE if the current user is configured in IGNORE_ACL=".." in your gosa.conf @param Return Boolean TRUE if we have to skip ACL checks else FALSE. */ function ignore_acl_for_current_user() { if($this->ignoreACL === NULL){ $this->ignoreACL = ($this->config->get_cfg_value("core","ignoreAcl") == $this->dn); } return($this->ignoreACL); } function loginAllowed() { // Need to check restrictions? if (count($this->restrictions)){ // We have restrictions but cannot check them if (!isset($_SERVER['REMOTE_ADDR'])){ return false; } // Move to binary... $source= $_SERVER['REMOTE_ADDR']; foreach ($this->restrictions as $restriction) { // Single IP if (preg_match('/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/', $restriction)) { if ($source == $restriction){ return true; } } // Match with short netmask if (preg_match('/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\/([0-9]+)$/', $restriction, $matches)) { if (isIpInNet($source, $matches[1], long2ip(~(pow(2, (32-$matches[2]))-1)))) { return true; } } // Match with long netmask if (preg_match('/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)$/', $restriction, $matches)) { if (isIpInNet($source, $matches[1], $matches[2])) { return true; } } } return false; } return true; } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_CopyPasteHandler.inc0000644000175000017500000004544211613731145020562 0ustar mikemikeconfig = &$config; $this->current= NULL; $this->queue = array(); $this->setvar_array = array(); } /* Entry entry to Copy & Paste queue. * A Queue entry is represented as follows. * array['file_name'] - Position on hdd * array['method'] - copy/cut * array['dn'] - the dn of the object added to the queue * array['tab_class'] - Tab object that should be used to initialize the new object * array['tab_object'] - Tab object name used to initialize correct object Type like USERTABS */ function add_to_queue($dn,$action,$tab_class,$tab_object,$tab_acl_category,&$parent = NULL) { if(!class_available($tab_class)){ trigger_error(sprintf("Specified class object %s does not exists.", bold($tab_class))); return(FALSE); } if(!isset($this->config->data['TABS'][$tab_object])){ trigger_error(sprintf("Specified tab object %s does not exists.", bold($tab_object))); return(FALSE); } if(!in_array_strict($action,array("cut","copy"))){ trigger_error(sprintf("Specified action %s does not exists for copy & paste.", bold($action))); return(FALSE); } if($file_name = $this->save_dn_attributes_to_hdd($dn)){ $tmp = array(); $tmp['file_name'] = $file_name; $tmp['method'] = $action; $tmp['dn'] = $dn; $tmp['tab_class'] = $tab_class; $tmp['tab_object']= $tab_object; $tmp['tab_acl_category']= $tab_acl_category; $tmp['parent'] = $parent; $this->queue[] = $tmp; $this->require_update = TRUE; } } /* This removes all objects from queue. * Remove hdd dumps of current entries too. * Remove entries older than 24 hours. */ function cleanup_queue() { $this->current = FALSE; $this->require_update = TRUE; $this->setvar_array = array(); /* Remove all entries from queue */ foreach($this->queue as $key => $entry){ @rmdir($entry['file_name']); unset($this->queue[$key]); } /* Create patch if it doesn't exists */ if(!is_dir(LDAP_DUMP_PATH)){ @mkdir(LDAP_DUMP_PATH); /* Update folder permissions */ if(!@chmod(LDAP_DUMP_PATH,0700)){ $msg= sprintf(_("Copy and paste failed!")."

    "._("Error").": "._("Cannot set permission for %s"), bold(LDAP_DUMP_PATH)); msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); new log("copy","all/all","copy & paste, event queue.",array(), $msg); return(FALSE); } } /* check if we are able to create a new file the given directory */ if(!is_writeable(LDAP_DUMP_PATH)){ $msg= _("Copy and paste failed!")."

    "._("Error").": ".msgPool::cannotWriteFile(LDAP_DUMP_PATH).""; msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); new log("copy","all/all","copy & paste, event queue.",array(), $msg); return(FALSE); } /* Remove entries from hdd that are older than24 hours */ $fp = opendir(LDAP_DUMP_PATH); while($file = readdir($fp)){ if(is_file(LDAP_DUMP_PATH."/".$file) && !preg_match("/^\./",$file)){ $file_time = fileatime(LDAP_DUMP_PATH."/".$file); if($file_time < (time() - (24* 60 *60))){ @unlink(LDAP_DUMP_PATH."/".$file); } } } } /* To increase performance we save the ldap dump on hdd * This function automatically creates the dumps and returns * the name of the dumpfile we created */ function save_dn_attributes_to_hdd($dn) { $filename = "Should not be returned"; $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $res = $ldap->cat($dn); /* Check if given dn is valid and ldap search was succesfull */ if(!$res){ $msg= sprintf(_("Copy and paste failed!")."

    "._("Error").": "._("'%s' is no valid LDAP object"), bold(LDAP::fix($dn))); msg_dialog::display(_("Internal error"), $msg, ERROR_DIALOG); new log("copy","all/all",$dn,array(), $msg); return(FALSE); } /* Create data to save given ldap dump on the hdd */ $filename = "gosa_copy-paste_dump_".preg_replace("/[^0-9]/","",microtime()); $path = LDAP_DUMP_PATH; /* Create patch if it doesn't exists */ if(!is_dir($path)){ @mkdir($path); } /* check if we are able to create a new file the given directory */ if(!is_writeable($path)){ $msg= sprintf(_("Copy and paste failed!")."

    "._("Error").": "._("No write permission in '%s'"), bold(LDAP_DUMP_PATH)); msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); new log("copy","all/all",$dn,array(), $msg); return(FALSE); } /* Create file handle */ $fp = @fopen($path."/".$filename,"w+"); if(!$fp){ $msg= _("Copy and paste failed!")."

    "._("Error").": ".msgPool::cannotWriteFile("$path/$filename").""; msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); new log("copy","all/all",$dn,array(), $msg); return(FALSE); } /* Update folder permissions */ if(!@chmod($path."/".$filename,0700)){ $msg= sprintf(_("Copy and paste failed!")."

    "._("Error").": "._("Cannot set permission for '%s'"), bold(LDAP_DUMP_PATH)); msg_dialog::display(_("Configuration error"), $msg, ERROR_DIALOG); new log("copy","all/all","copy & paste, event queue.",array(), $msg); return(FALSE); } $data = serialize($ldap->fetch()); fwrite($fp,$data,strlen($data)); fclose($fp); /* Only the webserver should be able to read those files */ @chmod($path."/".$filename,0600); return($path."/".$filename); } /* Check if there are still entries the object queue */ function entries_queued() { return( count($this->queue) >=1 || $this->current != FALSE); } /* Paste one entry from queue */ function load_entry_from_queue($entry) { if(!isset($entry['tab_class'])){ return(array()); } $tab_c = $entry['tab_class']; $tab_o = $entry['tab_object']; $tab_a = $entry['tab_acl_category']; $parent = $entry['parent']; if($entry['method'] == "copy"){ $entry['object'] = new $tab_c($this->config,$this->config->data['TABS'][$tab_o],"new",$tab_a); }else{ $entry['object'] = new $tab_c($this->config,$this->config->data['TABS'][$tab_o],$entry['dn'],$tab_a); } if($parent ){ $entry['object']->parent = $parent; } $entry['source_data'] = $this->load_attributes_from_hdd($entry['file_name']); if($entry['method'] == "copy"){ /* Prepare each plugin of this tab object to be posted */ foreach($entry['object']->by_object as $name => $obj){ /* Prepare every single class, to be copied */ $entry['object']->by_object[$name]->PrepareForCopyPaste($entry['source_data']); /* handle some special vars */ foreach(array("is_account") as $attr){ if(isset($entry['source_data'][$attr])){ $entry['object']->by_object[$name]->$attr = $entry['source_data'][$attr]; } } } } return($entry); } /* Load dumped ldap entry specified by $filename and * return data an unserailized data array */ function load_attributes_from_hdd($filename) { $fp = @fopen($filename,"r"); if(is_file($filename) && is_readable($filename) && $fp){ $data = ""; while($str = fgets($fp,512)){ $data .= $str; } return(unserialize($data)); }else{ $msg= sprintf(_("Copy and paste failed!")."

    "._("Error").": ".msgPool::cannotReadFile($filename).""); msg_dialog::display(_("Internal error"), $msg, ERROR_DIALOG); new log("copy","all/all",$dn,array(), $msg); return(FALSE); } } /* Displays a dialog which allows the user to fix all dependencies of this object. Create unique names, ids, or what ever */ function execute() { $ui = get_userinfo(); $type = $this->current['method']; /* Check which entries can be pasted directly. * Create a list of all entries that can be pasted directly. */ if($this->require_update){ $this->clean_objects = array(); $this->objects_to_fix = array(); $this->disallowed_objects = array(); /* Put each queued object in one of the above arrays */ foreach($this->queue as $key => $entry){ /* Update entries on demand */ if(!isset($entry['object'])){ $entry = $this->load_entry_from_queue($entry); $this->queue[$key] = $entry; } $entry= $this->_update_vars($entry); $msgs = $entry['object']->check(); /* To copy an object we require full read access to the object category */ $copy_acl = preg_match("/r/",$ui->has_complete_category_acls($entry['dn'], $entry['tab_acl_category'])); /* In order to copy an object we require read an delete acls */ $cut_acl = preg_match("/d/",$ui->has_complete_category_acls($entry['dn'], $entry['tab_acl_category'])); $cut_acl &= preg_match("/r/",$ui->has_complete_category_acls($entry['dn'], $entry['tab_acl_category'])); /* Check permissions */ if($entry['method'] == "copy" && !$copy_acl){ $this->disallowed_objects[$key] = $entry; }elseif($entry['method'] == "cut" && !$cut_acl){ $this->disallowed_objects[$key] = $entry; }elseif(!count($msgs)){ $this->clean_objects[$key] = $entry; }else{ $this->objects_to_fix[$key] = $entry; } } if(count($this->disallowed_objects)){ $dns = array(); foreach($this->disallowed_objects as $entry){ $dns[] = $entry['dn']; } # msg_dialog::display(_("Permission"),msgPool::permCreate($dns),INFO_DIALOG); } $this->require_update = FALSE; } /* Save objects that can be pasted directly */ if(isset($_POST['PerformCopyPaste']) && count($this->clean_objects)){ $this->save_object(); $this->current = FALSE; foreach($this->clean_objects as $key => $entry){ /* Remove from queue -> avoid saving twice */ unset($this->queue[$key]); unset($this->clean_objects[$key]); /* Load next queue entry */ $this->current = $entry; $this->lastdn = $this->current['object']->dn; $this->current= $this->_update_vars($this->current); $this->current['object']->save(); $this->handleReferences(); $this->current = FALSE; } } /* Save edited entry and force loading new one */ if(isset($this->current['object']) && method_exists($this->current['object'],"saveCopyDialog")) { $this->current['object']->saveCopyDialog(); } if(isset($_POST['PerformCopyPaste']) && $this->current){ $msgs = $this->check(); /* Load next queue entry */ if(!count($msgs)){ $this->current['object']->save(); $this->handleReferences(); $this->lastdn = $this->current['object']->dn; $this->current = FALSE; }else{ foreach( $msgs as $msg){ msg_dialog::display(_("Error"), $msg, ERROR_DIALOG); } } } /* Display a list of all pastable entries */ if(count($this->clean_objects)){ $dns = array(); foreach($this->clean_objects as $object){ $dns[] = $object['dn']; } $smarty = get_smarty(); $smarty->assign("type","directly"); $smarty->assign("Complete",false); $smarty->assign("AttributesToFix"," "); $smarty->assign("SubDialog",""); $smarty->assign("message" , sprintf(_("These objects will be pasted: %s"), "
    ".msgPool::buildList($dns))); return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE))); } /* Display a list of all pastable entries */ if($this->current || count($this->objects_to_fix)){ $this->save_object(); if(!$this->current){ $key = key($this->objects_to_fix); if(isset($this->objects_to_fix[$key])){ $this->current = $this->objects_to_fix[$key]; $this->current= $this->_update_vars($this->current); unset($this->objects_to_fix[$key]); unset($this->queue[$key]); } } if($this->current){ $smarty = get_smarty(); $smarty->assign("type","modified"); $smarty->assign("Complete",false); $smarty->assign("AttributesToFix",$this->generateAttributesToFix()); $smarty->assign("SubDialog",$this->current['object']->SubDialog); $smarty->assign("objectDN",$this->current['source_data']['dn']); $smarty->assign("message", sprintf(_("This object will be pasted: %s"), "

    ". bold(@LDAP::fix($this->current['source_data']['dn'])))); return($smarty->fetch(get_template_path("copyPasteDialog.tpl",FALSE))); } } return(""); } /* Return the dn of the last edited entry */ function last_entry() { return($this->lastdn); } /* Save new values posted by copy & paste dialog */ function save_object() { if(isset($_POST['abort_current_cut-copy_operation'])){ $this->current = FALSE; } if(isset($_POST['abort_all_cut-copy_operations'])){ $this->cleanup_queue(); $this->current = FALSE; } } /* Create dialog which asks unique attributes/values ... * call tabs -> getCopyDialog() * which calls tab -> getCopyDialog() */ function generateAttributesToFix() { if($this->current){ return($this->current['object']->getCopyDialog()); } } /* Set a single attribute to specified value * example : ("base", $newBase ); */ function SetVar($name,$value) { $this->setvar_array[$name]=$value; } /* Update current object attributes, collected via SetVar */ function _update_vars($entry) { /* Update all attributes specified with SetVar */ foreach($this->setvar_array as $name => $value){ if(isset($entry['object']->$name)){ $entry['object']->$name = $value; } } /* Walk through tabs */ foreach($entry['object']->by_object as $key => $obj){ /* Update all attributes specified with SetVar */ foreach($this->setvar_array as $name => $value){ /* Do not update parent for plugins, this may break things */ if($name == "parent") continue; if(isset($entry['object']->by_object[$key]->$name)){ $entry['object']->by_object[$key]->$name = $value; } } } return($entry); } /* Returns errors from including tabs. */ function check() { $ret = array(); foreach($this->current['object']->by_object as $obj){ if($obj->is_account || $obj->ignore_account){ $ret = array_merge($ret , $obj->check()); } } return($ret); } function handleReferences() { $dst_dn = $this->current['object']->dn; $src_dn = $this->current['dn']; // Only copy references if required if($this->current['method'] != 'copy') return; // Migrate objectgroups $ogroups = get_sub_list("(&(objectClass=gosaGroupOfNames)(member=".LDAP::prepare4filter(LDAP::fix($src_dn))."))", "ogroups", array(get_ou("group", "ogroupRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK); // Walk through all objectGroups foreach($ogroups as $ogroup){ $o_ogroup= new ogroup($this->config,$ogroup['dn']); $o_ogroup->member[$dst_dn]= $dst_dn; $o_ogroup->save(); } // Update roles $roles = get_sub_list("(&(objectClass=organizationalRole)(roleOccupant=".LDAP::prepare4filter(LDAP::fix($src_dn))."))", "roles", array(get_ou("roleGeneric", "roleRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK); // Walk through all roles foreach($roles as $role){ $role = new roleGeneric($this->config,$role['dn']); $role->roleOccupant[] = $dst_dn; $role->save(); } // Update groups if(isset($this->current['object']->uid) && !empty($this->current['object']->uid)){ $ldap = $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); $ldap->cat($src_dn); $attrs = $ldap->fetch(); if(isset($attrs['uid'][0])){ $suid = $attrs['uid'][0]; $uid = $this->current['object']->uid; $groups = get_sub_list("(&(objectClass=posixGroup)(memberUid={$suid}))", "groups",array(get_ou("core", "groupRDN")),$this->config->current['BASE'],array("dn"), GL_SUBSEARCH | GL_NO_ACL_CHECK); // Walk through all POSIX groups foreach($groups as $group){ $o_group= new group($this->config,$group['dn']); $o_group->addUser($uid); $o_group->save(); } } } } /* returns the paste icon for headpages */ function generatePasteIcon() { $Copy_Paste= "  "; if($this->entries_queued()){ $img= "images/lists/paste.png"; $Copy_Paste.= " "; }else{ $Copy_Paste.= "\""._("Cannot "; } return ($Copy_Paste); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/include/class_certificate.inc0000644000175000017500000001431311365100434017623 0ustar mikemikedata= ""; $this->type= false; $this->error=""; $this->info = array(); } /* Reads specified Certfile/string and convert it to PEM*/ function import($data,$type=false) { /* if is file read from file, else use string as it is*/ if(is_file($data)) { $fp = fopen($data,"r+"); $str = ""; if(!$fp){ $this->certificate(); $this->error= msgPool::cannotReadFile($data); return(false); }else{ /* Reading data*/ while(!feof($fp)){ $str.=fgets($fp,1024); } } /* Filename given, so we use the data from the file */ $this->data = $str; } else { /* Cert as String, use this string */ $this->data = $data; } /* Data can't be empty */ if($data = ""){ $this->certificate(); $this->error = _("Certificate is empty!"); return(false); } /* Prefer specified certtype*/ if($type) { $this->type = $type; }else{ /* Detect certtype, cause there is none specified */ /* PEM allways starts with ----BEGIN CERTIFICATE-----*/ if(strstr($this->data,"CERTIFICATE")) { $this->type=PEM; } else { /* We test DER now, on fail abort */ $this->type=DER; } } /* Convert to PEM to give $this->info the ability to read the cert */ if($this->type == DER ) { $this->derTOpem(); } /* If cert is loaded correctly and is PEM now, we could read some data out of it */ if(count($this->info()) <=1) { $this->certificate(); $this->error = _("Cannot load certificate: only PEM and DER are supported!"); /* Reset*/ return(false); } $this->info(false); /* Loaded a readable cert */ return(true); } /* Returns Array with all containing data */ function info($ret = true) { if($this->type != PEM){ $this->error = _("Cannot extract information for non PEM certificates!"); return(false); } else { /* return an array with all given information */ $this->info=openssl_x509_parse($this->data); if($ret) return($this->info); } } /* Return Functions */ function getvalidto_date() { if(isset($this->info['validTo_time_t'])){ return($this->info['validTo_time_t']); }else{ return(false); } } function getvalidfrom_date() { if(isset($this->info['validFrom_time_t'])){ return($this->info['validFrom_time_t']); }else{ return(false); } } function getname() { if(isset($this->info['name'])){ return($this->info['name']); }else{ return(false); } } function getCN() { if(isset($this->info['subject']['CN'])){ return($this->info['subject']['CN']); }else{ return(false); } } function getO() { if(isset($this->info['subject']['O'])){ return($this->info['subject']['O']); }else{ return(false); } } function getOU() { if(isset($this->info['subject']['OU'])){ return($this->info['subject']['OU']); }else{ return(false); } } function getSerialNumber() { if(isset($this->info['serialNumber'])){ return($this->info['serialNumber']); }else{ return(false); } } function isvalid() { return (($this->type != false)&&(count($this->info)>1)); } /* Export Certificate to specified file, with specified method*/ function export($type,$filename="temp") { /* Check if valid cert is loaded*/ if($this->type!=false){ /* Check if we must convert the cert */ if($this->type!= $type){ $strConv = $this->type."TO".$type; $this->$strConv(); } /* open file for writing */ $fp = fopen($filename,"w+"); if(!$fp){ $this->error= msgPool::cannotWriteFile($filename); return(false); }else{ fwrite($fp,$this->data,strlen($this->data)); } return(true); }else{ $this->error= _("No valid certificate loaded!"); return(false); } return(false); } /* Convert der to pem Certificate */ function derTOpem() { /* if type is DER start convert */ if($this->type == DER) { /* converting */ $this->type= PEM; $str = base64_encode($this->data); $len = strlen($str); $end = ""; while($len > 0 ) { $len = $len - 64; $str1 = substr($str,0,64)."\n"; $str = substr($str,64,$len); $end.= $str1; } $strend = "-----BEGIN CERTIFICATE-----\n".$end; $strend .= "-----END CERTIFICATE-----"; $this->data = $strend; return(true); } return(false); } /*Convert pem to der Certificate */ function pemTOder() { if($this->type == PEM) { $this->type= DER; $str = $this->data; $str = str_replace("-----BEGIN CERTIFICATE-----","",$str); $str = str_replace("-----END CERTIFICATE-----","",$str); $str = base64_decode($str); $this->data = $str; return(true); } return(false); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?> gosa-core-2.7.4/update-gosa.10000644000175000017500000001270411254446346014347 0ustar mikemike.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "UPDATE-GOSA 1" .TH UPDATE-GOSA 1 "2009-09-17" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" update\-gosa \- class cache updater and plugin manager for GOsa .SH "SYNOPSIS" .IX Header "SYNOPSIS" update-gosa [\s-1OPTION\s0] .SH "DESCRIPTION" .IX Header "DESCRIPTION" update-gosa is a script that help you to manage your gosa instance .IP "\fBinstall dsc\fR Install the plugin using the dsc information placed in the plugin source directory." 5 .IX Item "install dsc Install the plugin using the dsc information placed in the plugin source directory." .PD 0 .ie n .IP "\fBremove plugin\fR Remove the plugin named ""plugin"" from the current configuration." 5 .el .IP "\fBremove plugin\fR Remove the plugin named ``plugin'' from the current configuration." 5 .IX Item "remove plugin Remove the plugin named plugin from the current configuration." .IP "\fBlist\fR Lists installed plugins" 5 .IX Item "list Lists installed plugins" .IP "\fBrescan\-i18n\fR Rebuilds the translations" 5 .IX Item "rescan-i18n Rebuilds the translations" .IP "\fBrescan-classes\fR Rebuilds the class list" 5 .IX Item "rescan-classes Rebuilds the class list" .PD .SH "BUGS" .IX Header "BUGS" Please report any bugs, or post any suggestions, to the GOsa mailing list or to .SH "LICENCE AND COPYRIGHT" .IX Header "LICENCE AND COPYRIGHT" This code is part of GOsa () .PP Copyright (C) 2003\-2009 \s-1GONICUS\s0 GmbH .PP This program is distributed in the hope that it will be useful, but \s-1WITHOUT\s0 \s-1ANY\s0 \s-1WARRANTY\s0; without even the implied warranty of \&\s-1MERCHANTABILITY\s0 or \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. See the \&\s-1GNU\s0 General Public License for more details. gosa-core-2.7.4/Changelog0000644000175000017500000010341211751745665013673 0ustar mikemikeGOsa2 changelog =============== * gosa 2.7.4 - Fixed problem in setup checks that seem to access a bool value by string index. - Robustness improvements for PHP 5.3/5.4 compatibility. - Fixed problems with sieve login and TLS. - Made asterisk delimiter configurable. - Enabled template mode even when editing a template. - Do not create primary groups for templates. - Allow to modfiy the mail address when cyrus is used as mail method and accounts are identified by uid. - Added SASL password method. - Fixed ACL resolution for login restrictions. - Fixed pronlems with unsaved user pictures. * gosa 2.7.3 - Fixed some listing problems. - Made DHCP plugin overview show all hosts. - Fixed problems with $ in samba-hash-, check-, pre- and posthooks. - Fixed problem with password changes beeing forced on login for newly created user. - This fixed a bug where properties stored in gosa.conf did not take effect. - Fixed group membership adaption when creating a user using a template. - Added checks to ensure that valid hostnames/fqdns are created. - Fixed removal of FAI profiles, hooks, scripts. - Re-added statusbar to fai management plugin. - Fixed progressbar reload in fai installation status plugin. - Fixed several opsi plugin bugs. * gosa 2.7.2 - Updated bundeled smarty to 3.1.4. - Introduced sortable listing to ACL and posix dialogs. - Fixed problem with mail-method parameters that were read from ldap. - Added flag to allow modification of generated uid proposals. - Improved dyngroup to not write dynamic values back to the ldap. - Hardening: Replaced in_array calls with a method that uses a strict matching. - Updated samba password hashing and its error handling. - Updated Kolab tab, to use a sortable list for mynetworks entries. - Updated cleansing of FAI object in ldap, thanks to psc. - Fixed removal of FAI-template and profile entries. * gosa 2.7.1 - Updated passwordHook behaviour - Readded sambaKickoffTime to samba tab. - Updated account expiration checks. - Fixed acl resolution to be case insensitive. - Fixed mail address check for user templates. - Updated integrated smarty to 3.0.7 * gosa 2.7 - Updated design. CSS3, mostly w3c conform. - Updated and fixed english wording. - Rewrote filtering methods, allows to define self-made filters. - Rewrote reference tabs, it now resolve the users acls. - Replaced all lists by either listing or sortable_listing- - Added dynamic groups to core functionality. Thanks to - Added property editor plugin, including property validation and migration. - Rewrote schema check, more flexible and only checks for required classes. - Stripped setup to minimum requirements. (Use property editor form fine-tuning). - Introduced dynamic path-menu, replaces the old 'MyAccount' section. - Added premodify, precreate and preremove events to be able to act before things get saved. - Hardened handling of sepcial chars in user inputs. - Added a wildcard ACL to allow to given ACLs to 'everyone' - Disallow UTF-8 characters in passwords. - Switch to the new version of the smarty template engine, version 3. - Updated the ldap export plugins to use the cli, which is much faster. - Intruduced a new image rendering based on sprites, increases performance. - Added automatic logout, for security reasons. - Allow to use replacements like {%var[n-m]} in pre and post events and user templates. * gosa 2.6.9 - Fixed problem with initial phone accounts, sip type was NULL - Fixed TLS issues in the setup - Fixed locale issues in the setup - Fixed delete of DHCP statements - Fixed DHCP authoritative flag - Modified sieve behaviour to use sieve-discard for "drop_own_mails" - Modified filter descriptions to behave more like former 2.6 releases * gosa 2.6.8 - Base selector displays descriptions and icons now - Base selector autocomplete - Fixed gosa.conf system generation - Added wildcard ACLs - Improved ACL handling for new lists - Fixed phone filters * gosa 2.6.7 - Added more information to DHCP service dialog (thanks to Mathieu) - Added more checks for DNS zone records - Added IMAP folder autocreation - Added printer css - Fixed generation of kerberos host keys when DNS is enabled - Fixed template error message when no sshkey plugin is enabled - Fixed problem where arrays got shortened by one in copy and paste - Fixed javascript for IE - Fixed problems deprecated functions in PHP > 5.3 - Fixed issues with templates and password methods that got introduced in 2.6.6 user list migration - Speed up OPSI operations by large factors - Speed up group and user removal by large factors - Unified logging with rSyslog plugin and service - Converted to new configurable list view - Save list positions - Updated integrated smarty to version 3.0b7 to avoid broken templates during further development * gosa 2.6.6 - Added ssh public key management - Added LVM support to FAI modules using setup-storage - Added DHCP/DNS options to the OPSI hosts - Added GOsa login restrictions - Added "Domain" to department management - Added organizational roles management - Added option to configure user DNs - Added OPSI license management - Added possibility to add FAI packages without the SI service (thanks to GLG) - Added IMAP timeout option - Added pool method for uidNumber/gidNumber using sambaUnixIdPool - Added workaround for non closable message dialogues in Konqueror 3.x - Updated locales - Updated gosa.conf manual page - Updated DNS settings dialoges - Moved to unified datepicker for all dates - Fixed display of opsi hosts in the system list - Fixed usage of the sambe "base" for every list page - Fixed automatic base settings for new systems based on the ogroup base - Fixed setup issues with LDAP inspection - Fixed setup issues with sub dialogues - Fixed next group ID generation - Fixed "suggest IP" function to return unique IP - Fixed multiple password decryption - Fixed issues with empty ACL definitions - Fixed lost attributes when using copy and paste with objectgroups - Enhanced addressbook plugin ACL - Removed outdated samba 2 mode - Various minor bugfixes * gosa 2.6.5 - Updated locales - Improved PPD handling - Added more sanity checks in group management - DHCP now allows multiple values for options and statements containing the same keyword - Added per entry SOA record to the DNS plugin - Improved grouping of FAI classes - Add free-text input to FAI packages - PPD upload allows special chars now - Fixed config generation with sambaMachineAccountRDN - Added compression robustness check for snapshots - Added brasilian portuguese - Updated logging on debian systems - Various minor bugfixes * gosa 2.6.4 - Added missing images - Fixed issue with the FAI log viewer - Made DNS TTL settings optional - Correct issues with newly created servers and DNS zones - Added setup check for gosaDepartments at the base object - Corrected js based disabling of widgets in Samba settings - Fixed issue with wrong set mail attributes in the setup - Added missing existance checks for group mail addresses - Fixed uid autogeneration which contained curly braces - Fixed FAI package list acl mapping - Moved essential schema files back to the core package - Updated integrated smarty - Added imagick dependency to the setup - Fixed ACL resolution for small ldap bases - Added phoneNumber limitations to match asterisk realtime extension tables - Updated addressbook permissions * gosa 2.6.3 - Fixed several issues, occurred when using user templates - Fixed problem with department creation, since GOsa 2.6.1 - Fixed exponential escaping of special chars in dns record entries - Added samba domain information to samba tab - Removed readonly attributes from samba tab * gosa 2.6.2 - Updated german locales - Updated french locales - Updated spanish locales - Improved sieve handling, added more detailed error messages - Mail methods cleanup for kolab 2.2 / IMAP acls - Removed obsoleted GOlab mail method - Optimized system to group assignments when activating new devices - Add a choice for OPSI clients when activating new devices - Setup cleanups - Edit locking improvements, code cleanup * gosa 2.6.1 - Build seperate packages for plugin schema files - Make ACL editor more robust - Fix problem with self modify ACL detection - Increased all schema version numbers to make setup check work again - Added admin account migration to setup - Session expired dialog is now translated - Fixed problems with sieveManagement - Fixed issue with department saving and structuralObjectClass errors - Added local delivery flag to group mail - Fixed problem with sudoers creation - Fixed accidentally remove of non GOsa user accounts - Simplified FAI management - Fixed detection issues with password methods - Fixed issues with user templates and storing password methods - Removed forced dependency on GOsa-SI * gosa 2.6 - Redesign of ACL handling - Roles - Fine grained read, write, change controls down to the attributes - Self service - Separate password changer module - Major dialog- and interface redesign - Major performance improvements - New backend daemon - MIT kerberos support - Mail queue-support - System depolyment queue support - OPSI support - GOto support - DAK keyring support - Caching of slow data sources - Queue support for system deployment - Improved FAI integration - Queues - Copy on write storage for subreleases - Logviewer - OPSI integration - SUDO support - Split into GOsa core and GOsa plugins - Edit multiple users/groups at a time - Apply user templates afterwards - Objects snapshots - Configurable object RDNs - Added manual page for gosa.conf - More comprehensive keywords in gosa.conf - Merging "main" and "location" attributes to allow site wide defaults - Automatic configuration reloading - Vietnamese translation - New manageable objects country, locality, organization and dcObject * gosa 2.5.16 - Fixed problem with undefined ridbase in domain objects - Fixed postremove/-create/-modify parameter expansion - Updated integrated smarty to 2.6.19 - Updated saving of ppds in printer setttings - Fixed department tagging - Fixed DNS record problem where nSRecords were not kept - Updated shared folder acls, keep manually set acls - Remove DNS entries for removed hosts - Increased setup performance - Added more secure way to save passwords in gosa.conf * gosa 2.5.15 - Changed order of sys-action commandline parameters - Changed sorting of management plugins to natural sorting - Fixed problem with saving vacation message start/stop - Fixed sorting of releases - Updated translations (de/fr/pl) - Fixed storage of (IMAP) ACLs in group/mail settings - Fixed issues with sieve script management - General code cleanup - Fixed issue with undefined index and copy 'n paste in samba plugin - Fixed problem with the references/ogroup handling with special character DNs - Optimized way of writing unit tags - Online manual updates / helpviewer update - Fixed renaming of printers which was broken in special cases - DNS plugin updates - DHCP plugin updates * gosa 2.5.14 - Phone conference language is now selectable. - Old phone numbers will be removed correctly from asterisk extensions table. - Fixed saving of A/B networks reverse zone entries - Fixed problem with non loaded class_dhcpPlugin in some cases. - Added fglrx driver to driver list - Added hook to specify custom X drivers - Fixed non ISO display of IMAP folder names - Fixed URL encoding in addressbook - Fixed issues with IE and browser language detection - Added check for used hardware adresses - Allow special characters in share names - Fixed removing of application categories - PPD handling revised - Added support for new devices detected by the arp monitor - Grey out non used options for better usability in the server and workstation tabs - Fixed saving of USB devices - Made SNMP community configurable - Added login attributes uid/mail, you can log in via your mail address, too - Removed PHP5 dependency in branch 2.5 - Fixed saving of IMAP acl's for groups * gosa 2.5.13 - Re-added ISC DHCP support - Fixes for the mail based bugtracker - Fixed autouid problem with slashes - Added list sorting for FAI script lists - Added copy'n paste for mimetypes - Cut'n paste objects are now greyed out - Added swedish locale - Improved language detection - Added a statistic footer to lists - Added the ssh plugin - Layout fixes * gosa 2.5.12 - Fixed problems with automatic reverse zones - Fixed several IE6 related Java-Script problems - Removed png.js by default. Looks ugly, but performs. Take a look at the FAQ on how to re-enable it for IE. - Added non-login password change dialog - Various spelling fixes - Added some extra robustness to the PPD reader code - FAI partition ordering fixed, partition sizes fixed - FAI release management updates - Fixed installations that fail the schema check - Updated error messages to fade out the interface - Repository cleanup - Added feedback link to easily report PHP errors - Added more content sorting where needed - Made gidNumber be the current in posix check hook - Removed inconsistency in gosa/gosa+samba3 schema - Fixed multiple saving of "My account" data - Don't allow moving of objects from administrative units to other administrative units where ACL's permit it. Objects "seemed" to disapear because the tagging changes. - Added gosa-desktop package to be able to start it by link - Added method to highlight tabs - Generel translation update for de, es, fr, it, nl, pl, ru, zh * gosa 2.5.11a - Added chinese translation - Fixed language detection and removed line wraps in tab headers - Fixed french translation * gosa 2.5.11 - Add workaround for failing is_php4() when using PHP5 with "zend.ze1_compatibility_mode" set to "On" - Backported new sieve filter editor from trunk - Backported new setup from trunk - Fixed double loaded pages in gecko based browsers when js is activated - Replaced a set of PHP var in samba class. - Fixed checkbox selection in samba class. - Connectivity netatalk: Moved plugin intialization from execute() to contructor(). - Fixes various issues with setup.php - Avoid tab lables to have line feeds - Activated missing checks for IP and MAC - Fixed copy'n paste errors for netatalk - Various W3C fixes - Fixed "My Account" mode, where buttons disappear after saving - Avoid removal of shares while they are used by users - Added finer grained ACL settings for mail accounts - Fixed day of birth problem in M$ IE - Fixed setting of Kerberos passwords * gosa 2.5.5 - Added remove method for shared folder in kolab mode - Added checkbox to decide if the shared folder should be deleted from IMAP if the mail extension is removed from group mail account - Updated request method for mail folders - Resolved problem with infinite loop while storing sieve scripts - Added subsearch checkbox to object group "add items" filter - Fixed "missing PPD" configuration error, for newly created printer - Corrected problem where the object base was sometimes broken when saving object groups - Fixed saving of terminal attribute gotoLpdEnable to contain "yes" instead of "1" - Avoid reset of several attributes from workstations when not inherited from object groups - Show error messages from password dialog - Fixed a set of W3C problems - Fixed multiple savings in addressbook (Closes: #23) - Fixed shadow expire when using templates (Closes: #20) - Made %uid, %sn, etc. available in templates using gosaMailAlternateAddress * gosa 2.5.4 - Included patch to choose the addressbook base - Applied fixes for logviewer done by Mario Minati - Updated locales, fixed a set of missing strings - Fixed problems in FAI list handling - Added "uid" to personal plugins for replacement in post events - Fixed saving of user logon scripts - Fixed non-FAI application mode - More speed fixes applied, especially for users, objectgroups and generic plugin loading - Bug while saving FAI partitions fixed - Don't save PPD if none is not selected bug fixed - Saving of non revisioned applications fixed * gosa 2.5.3 - Fixed problem in reloading departments when we've PHP4 - Fixed gotoPrinter membership problem. - Fixed environment shares, only available shares will be displayed (gosaUnitTag was ignored) - Fixed saving of inherited workstation settings - Removed error when no FAI repositories were present - Fixed posix group add dialog, filter wasn't working. - Fixed get_printer_list undefined index warnings while editing a user. - Fixed ogroup non-static method error - Fixed user membership for gotoPrinter, if membership was edited via user environemnt, some numeric values were stored too - Fixed mail account, mail server string possibly was an array - Fixed typos - Fixed upper/lowcase ou's for groups/people when using an unclean LDAP database - Fixed ACL handling to *not* show the admin user dialog when configured for self modify only - Fixed problem when changing passwords via "My account" - Added more information to hotplug devices. * gosa 2.5.2 - Fixed current main base not beeing set when editing non tabbed plugins - Fixed filtering for divlists - Fixed deletion of shares in environment tabs - Updated french online help - Updated german online help - Fixed display of FAI partitions - Removed Quota warnings for existing accounts without quota limits - Worked around PHP4 session problems when creating new departments - Fixed problems when moving around departments including a comma - Unified bool values in gosa.conf. true/yes and false/no are valid now in upper and lower case. - Avoid the try of creating already existing ou's - Fixed non working printer removal * gosa 2.5.1 - Fixed problems with NFS shares and terminals - Finalized polish translations - Fixed problem with compressed gosa.conf in the debian package * gosa 2.5 - Improved FAI support * Server and workstations are treated the same way * Destination selector for new devices * Summary tab introduced - Improved robustness while operating whith the LDAP - Several Kolab related fixes - Tagging of departments introduced - Global check hooks allow user defined testing of single plugins - Major speedups with large databases - Added english and french online help - Unified plugin "head" selectors, (re-)added subtree support - Fixed PPD parsing for several commercial PPD's - Tune LDAP error messages - Moved from "guru mediation style" to div-popups - Several css fixes - Fixed series of bugs that lead to not shown groups * gosa 2.4 - Updated layout to work cleanly with IE6+, Firefox 1.0.4+, khtml 3.4+ - Added FAI (Fully Automatted Installation) support - Added mail queue management - Added many missing acl informations - Added help browser and initial french help - Fixed templating for samba and unix users - Applied hundreds of smaller bugfixes - Improved speed by switching to directory style dialogs and performing sub searches. - Per user language selector in generic tab - New connectivity plugins (PHPscheduleit/PPTP/glpi) * gosa 2.4beta3 - Updated layout - Fixed application removal - Improved accessibility for disabled persons - Added intranet account to list of connectivity plugins - Several kolab related fixes for server objects - Corrected contributed slapd.conf - Fixed kolab mode where GOsa saves KB quotas, interprets quotas as kolab MB - Increased robustnes for non set fields - Fixed IE issues with W3C compatibilty where IE posts disabled fields - Fixed problems with existing samba accounts and password changed fields - Removed login problems with undefined ldap_conf variable - Fixed problems where the GECOS field is not written correctly * gosa 2.4beta2 - Fixed error handler to be PHP 4.x compatible - Fixed PHP compatibility problem in setup.php, using ini_get() instead of ini_get_all() - Fixed cases where ipHostAddress is required but not checked by GOsa - Fixed group dialog filters - Fixed problems in setup which showed up with white pages if PHP has been compiled without mbstring support - Fixed layout if the rendered page does not cover 100% of the browser window - Improved phone plugin to respect IAX, CAPI and SIP phone attributes automatically if the revision changes - Improved W3C compatibility - Added checks that remove the contents of /var/spool/gosa/* - Added postmodify for password change operations * gosa 2.4beta1 - Override automatically detected user bases if they don't exist - Don't shred samba group ID's if they are not present in the combobox - Updated smarty to version 2.6.9 - Updated GOfon support to handle new features - Replacement of most external programm calls - Samba3 bugfixes for munged dial handling - Updated LDIF export - Improved setup checks to find more possible errors - Fixed index ruler for long lists - Completed system creation for servers, phones and misc components - Added support for kolab users and kolab server settings - Added server settings - Added LDIF import - Added CSV import - Added italian translation (thanks to Alessandro Amici) - Added subtree search checkbox in lists with potential higher usage - Added version indicator to make support more easy - Added sample databases for fax, phone and system logging - Added error handler for normal PHP errors * gosa 2.3 - Updated smarty to version 2.6.7 - Added dutch translations (thanks to Niels Klomp) - Added webdav and phpgroupware accounts - Fixed french translation - Fixed error in shadowExpire attribute - Unified all filters in dialogs to use the internationalized choosers - Added option to do non subtree searches with filters - Fixed sample configuration files to be unproblematic when used in conjunction with OpenLDAP 2.2 - Added experimental support for editing LDAP trees that contain referrals - Updated Altlinux contributions, including themes and scripts - Worked around a possible problem with sizelimit in php-ldap - Improved big ldap support by size limits and non sub searches - Various smaller fixes - Added global TLS switch for LDAP connections - Fixed SELECT queries to be mysql 3.x _and_ 4.x compatible - Made departments movable * gosa 2.2 - Removed DHCP/DNS plugins, they will be replaced by the terminal/server/workstation plugins. - Added case sensitivity check for login names - Made bases set to users "home" department when creating new objects - Moved sieve-*.txt config files to /etc/gosa - Told IMAP plugin to remove mail accounts when the user is deleted - Interface cleanups - Added simple log file viewer - Added support for asterisk - Included javascript magic to improve usability (doubleclicks in lists, disabling of fields, warning messages, etc.) - More filtering and sizelimits for speed optimizations - Mail handling is now pluggable - Added possibility to bundle objects to object groups - Added a reference tab to track relation ships of different objects - Improved samba 3 support (terminal server support) - Updated translations and added a french one * gosa 2.1.3 - Fixed problem with initial password setting - Increase number in version.inc - Add a workaround to fix problem with groups not beeing displayed with openldap. Here the server reacts with empty results if searching for non existing objectClass "sambaGroupMapping" in case of using samba2 - Fix the homeDirectory check which is a bit too harsh with templates * gosa 2.1.2 - Fixed problem with uppercase login names - Extensive speed increasements in ldap searches - Fixed gettext problem on older installations - Corrected sieve login which was broken due to a library switch - Made in_array act case insensitive for is_account check - Fixed location of DMODE and HASH in config file - Fixed general problems with password hash generation if not specified - Complete move to unicode which removes all active encoding/decoding of contents from GOsa itself - Made GOsa run smooth on PHP 5 - Added complete russian translation contributed by Igor Muratov - Migrated phone list to (global) addressbook - Filtering fixes * gosa 2.1.1 - Enabled mail-account-less fax accounts - Fixed upper/lower case problem in mail templates - Fixed typo in generic plugin error message - Made template dialog work again - Fixed headpage for application management which tends to do no proper display of used applications - Added command line interface to use GOsa without web interface - Updated debian control to be aware of apache2 based installations - Transferd tab variables in group dialog, so the primary mail address can be checked - Fixed possible case problem with is_account - Made base selector contain newly added departments in department dialog * gosa 2.1 Bugfix release - size of homeDirectory attribute increased - FAQ/README/INSTALL updated - spec file updated * gosa 2.1rc2 Bugfix release - Made user dn configurable - Fixed memory usage check - Fixed size of alternate mail address field - Fixed sorting of group in posix tab - Made GOsa keep group membership even if user has no posix account - Fixed typo in blocklist spelling - Fixed error message when trying to filter users without a valid uid - Made posix account visible, even if there are no shadow attributes inside this entry - Included setup - Translation updates * gosa 2.1rc1 Bugfix release - Fixed annoying ACL bug in template mode - Fixed possible privilege escalation problem in password routine (thanks to Henning Schmiedehausen) - Removed password storage from user info class (thanks to Rainer Herbst) - Various interface cleanups - Templatization finished - Reworked user headpage - Made GOsa more robust in detecting errors in config - Added additional error messages reported by LDAP server - Added schmemacheck hook - Started with setup implementation * gosa 2.1beta3 Bugfix release - Made template mode remember the templates primary group - Templatized posix plugin - Added option to disable strict checking of uid/gid names - Massive samba3 updates - Made ou=people and ou=groups configurable - Fixed user/group lists to react on filter changes * gosa 2.1beta2 Bugfix and feature enhancement release. - Made GOsa remove object locks when changing plugins during edit process. - Added DHCP plugin - Gerneral speed tunig, reduced the number of unessasary ldap accesses - Added syslog output for actions "save" and "remove" - Fixed handling for multiple ACL's per base - Fixed listboxes to unify output / sort output - Fixed annoying bug in tab_groups.inc when removing the mailtab - Bases did not get set in template mode - Fixed user part - Templatized faxaccount/pureftpd/samba and mail plugins - Included calendar.js functionality in samba plugin * gosa 2.1beta1 This release has some feature enhancements and contains many bugfixes and design cleanups - Fixed many HTML related things. Pages are now perfectly validated as html 4.01 transitional. - Added dn cleaner to getDN() in order to fix problems with "broken" ldap databases. - Added schemata for iplanet, checked if it works. - Rewrote phonelist, added vcard export. - Added filters to allmost all plugins. - Added DNS plugin. - Generic userinterface cleanups, everything is a template now and can be redesigned/stripped. - Improved translations, added missing ones. - Added choosable templates for mail vacation messages. - Improved templating stuff to generate user defined auto uids. - Made user interface more comprehensive, so its important for you to start with a clean gosa.conf from contrib. - Added external password change hook, so that its possible to synchronize with a non samba PDC via scripts. (Some organizations tend to keep a readable copy of their users password which possible now, too.) - Updated FAQ * gosa 2.0.1 This release doesn't have feature enhancements (nearly), only bugfixes reported by users are incorporated. - Fixed oblivious fields when changing to subdialogs. All user dialogs were affected - Made facsimileTelephoneNumber beeing saved without the need of a fax account - Fixed printer sorting which destroyed the array index - Removed redundant fields in terminal configuration - Made terminal plugin save the terminal hardware information - Added missing tags to index.php/main.php - Fixed debian debconf script not to touch uidbase/ridbase values in gosa.conf - Fixed "Force ID", which creates a group for the posix user with forced ID. - Finetuning in login window behaviour - Code cleanup and templatized two more plugins - As requested by some users, you can now advise GOsa not to create a group for the user, but take an existing group as primary one. - Added 'dn cleaner' for the acl list. So syntactically problematic dn's with strange commata get fixed. * gosa 2.0 final - Made samba3 support work - Fixed several small bugs with the templating stuff - Fixed problem with shared folders, added missing attribute gosaSharedFolderTarget needed in some setups - Updated icons - Renamed icons to have more logical names * gosa 2.0rc2 - Corrected mistakenly copied ui object in functions.inc - Fixed errors when activating new terminals - Removed krb warnings in class_user.inc - Plugins user, apps, groups and departments didn't check for already present entries. Now they do. - Removed problem in terminal dialog where checkboxes are not saved - Fixed ACL handling for users primary group - Replaced own template class by smarty, since only two files were affected by this - Changed basic layout to seperate public readable files from templates - Added FAQ, update TODO for next versions - Made accounts movable between departments - Added partial spanish translations - Fixed mail group handling * gosa 2.0rc1 - Switched to XML based gosa.conf - Cleaned all plugins, moved to children of plugin.conf - Moved back to gettext for translations - Added hooks for pre-/post-install scripts - Cleaned LDAP class - Added workarounds for MS-IE (>5.5) to render transparent PNGs in a correct way - Redesigned login screen / some plugins - Added hooks for eGOsa, which is a java applet based browsing tool - Switched from user based ACLs to group based ACLs, removed standalone ACL plugin in favor of new group tab. - Fixed samba2 rid generation (btw. still missing is sid support for samba3. But this will go into the final.) - Fixed many minor bugs - Introduced simple theming support - Added 'dn'-renaming for accounts Changelog starts with latest Beta 1.99.97