Compare commits
2 Commits
RELEASE-0.
...
RELEASE-0.
Author | SHA1 | Date | |
---|---|---|---|
|
e126518f60 | ||
|
7ff3528665 |
4
INSTALL
4
INSTALL
@@ -28,10 +28,10 @@ in the "doc" directory.
|
||||
# mkdir /var/www/tmp, and then
|
||||
# chown root:daemon /var/www/tmp
|
||||
# chmod 1755 /var/www/tmp
|
||||
Where tmp is the $config->custom->tmpdir['jpeg'] configured in config.php
|
||||
Where tmp is the $jpeg_temp_dir configured in config.php
|
||||
|
||||
* Windows
|
||||
|
||||
For jpeg photos to work properly, be sure to change $config->custom->tmpdir['jpeg']
|
||||
For jpeg photos to work properly, be sure to change $jpeg_temp_dir
|
||||
from "/tmp" to "c:\\temp" or similar.
|
||||
|
||||
|
@@ -1,25 +1,26 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_attr.php,v 1.15.2.4 2005/10/22 14:22:47 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_attr.php,v 1.12 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* Adds an attribute/value pair to an object
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - dn
|
||||
* - server_id
|
||||
* - attr
|
||||
* - val
|
||||
* - binary
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
* @todo: For boolean attributes, convert the response to TRUE/FALSE.
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require TMPLDIR.'template_config.php';
|
||||
require 'templates/template_config.php';
|
||||
|
||||
$server_id = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
@@ -45,7 +46,7 @@ if( ! $is_binary_val && $val == "" ) {
|
||||
|
||||
// Check to see if this is a unique Attribute
|
||||
if( $badattr = checkUniqueAttr( $ldapserver, $dn, $attr, array($val) ) ) {
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',$ldapserver->server_id,$attr,$badattr);
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',$server_id,$attr,$badattr);
|
||||
pla_error(sprintf( $lang['unique_attr_failed'],$attr,$badattr,$dn,$search_href ) );
|
||||
}
|
||||
|
||||
@@ -94,49 +95,47 @@ if( $is_binary_val ) {
|
||||
|
||||
$val = $binary_data;
|
||||
|
||||
if( is_binary_option_required( $ldapserver, $attr ) )
|
||||
if( is_binary_option_required( $server_id, $attr ) )
|
||||
$attr .= ";binary";
|
||||
}
|
||||
|
||||
/* Automagically hash new userPassword attributes according to the
|
||||
chosen in config.php. */
|
||||
// Automagically hash new userPassword attributes according to the
|
||||
// chosen in config.php.
|
||||
if( 0 == strcasecmp( $attr, 'userpassword' ) ) {
|
||||
if (trim($ldapserver->default_hash) != '' ) {
|
||||
$enc_type = $ldapserver->default_hash;
|
||||
|
||||
if( isset( $servers[$server_id]['default_hash'] ) &&
|
||||
$servers[$server_id]['default_hash'] != '' ) {
|
||||
|
||||
$enc_type = $servers[$server_id]['default_hash'];
|
||||
$val = password_hash( $val, $enc_type );
|
||||
}
|
||||
}
|
||||
|
||||
elseif (strcasecmp($attr,'sambaNTPassword') == 0) {
|
||||
$sambapassword = new smbHash;
|
||||
$val = $sambapassword->nthash($val);
|
||||
}
|
||||
|
||||
elseif (strcasecmp($attr,'sambaLMPassword') == 0) {
|
||||
$sambapassword = new smbHash;
|
||||
$val = $sambapassword->lmhash($val);
|
||||
elseif( in_array( $attr,array('sambantpassword','sambalmpassword') ) ){
|
||||
$mkntPassword = new MkntPasswdUtil();
|
||||
$mkntPassword->createSambaPasswords( $val );
|
||||
$val = $mkntPassword->valueOf($attr);
|
||||
}
|
||||
|
||||
$new_entry = array( $attr => $val );
|
||||
$result = @ldap_mod_add( $ldapserver->connect(), $dn, $new_entry );
|
||||
|
||||
if ($result)
|
||||
header(sprintf('Location: edit.php?server_id=%s&dn=%s&modified_attrs[]=%s',
|
||||
$ldapserver->server_id,$encoded_dn,$encoded_attr));
|
||||
if( $result )
|
||||
header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=$encoded_attr" );
|
||||
|
||||
else
|
||||
pla_error( $lang['failed_to_add_attr'],$ldapserver->error(),$ldapserver->errno() );
|
||||
pla_error( $lang['failed_to_add_attr'],ldap_error($ldapserver->connect()),ldap_errno($ldapserver->connect()) );
|
||||
|
||||
/**
|
||||
* Check if we need to append the ;binary option to the name
|
||||
* of some binary attribute
|
||||
*
|
||||
* @param object $ldapserver Server Object that the attribute is in.
|
||||
* @param int $server_id Server ID that the attribute is in.
|
||||
* @param attr $attr Attribute to test to see if it requires ;binary added to it.
|
||||
* @return bool
|
||||
*/
|
||||
|
||||
function is_binary_option_required( $ldapserver, $attr ) {
|
||||
function is_binary_option_required( $server_id, $attr ) {
|
||||
|
||||
// list of the binary attributes which need the ";binary" option
|
||||
$binary_attributes_with_options = array(
|
||||
@@ -155,7 +154,7 @@ function is_binary_option_required( $ldapserver, $attr ) {
|
||||
//if( 0 == strcasecmp( $attr, $name ) )
|
||||
//return true;
|
||||
|
||||
$schema_attr = $ldapserver->getSchemaAttribute($attr);
|
||||
$schema_attr = get_schema_attribute( $ldapserver, $attr );
|
||||
if( ! $schema_attr )
|
||||
return false;
|
||||
|
@@ -1,13 +1,12 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_attr_form.php,v 1.12.2.1 2005/10/16 20:19:16 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_attr_form.php,v 1.11 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* Displays a form for adding an attribute/value to an LDAP entry.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
@@ -16,6 +15,9 @@
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id = (isset($_GET['server_id']) ? $_GET['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
@@ -42,9 +44,9 @@ if( ! is_array( $oclasses ) )
|
||||
|
||||
$avail_attrs = array();
|
||||
|
||||
$schema_oclasses = $ldapserver->SchemaObjectClasses($dn);
|
||||
$schema_oclasses = get_schema_objectclasses( $ldapserver, $dn );
|
||||
foreach( $oclasses as $oclass ) {
|
||||
$schema_oclass = $ldapserver->getSchemaObjectClass($oclass,$dn);
|
||||
$schema_oclass = get_schema_objectclass( $ldapserver, $oclass, $dn );
|
||||
|
||||
if( $schema_oclass && 0 == strcasecmp( 'objectclass', get_class( $schema_oclass ) ) )
|
||||
$avail_attrs = array_merge( $schema_oclass->getMustAttrNames( $schema_oclasses ),
|
||||
@@ -78,7 +80,7 @@ if( is_array( $avail_attrs ) && count( $avail_attrs ) > 0 ) { ?>
|
||||
<br />
|
||||
|
||||
<form action="add_attr.php" method="post">
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo htmlspecialchars($dn); ?>" />
|
||||
|
||||
<select name="attr">
|
||||
@@ -122,7 +124,7 @@ if( count( $avail_binary_attrs ) > 0 ) { ?>
|
||||
|
||||
<!-- Form to add a new BINARY attribute to this entry -->
|
||||
<form action="add_attr.php" method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="binary" value="true" />
|
||||
<br />
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_oclass.php,v 1.16.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_oclass.php,v 1.14 2005/03/20 04:43:36 wurley Exp $
|
||||
|
||||
/**
|
||||
* Adds an objectClass to the specified dn.
|
||||
@@ -7,10 +7,9 @@
|
||||
* Note, this does not do any schema violation checking. That is
|
||||
* performed in add_oclass_form.php.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
* - new_oclass
|
||||
* - new_attrs (array, if any)
|
||||
*
|
||||
@@ -21,13 +20,16 @@
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = rawurldecode( $_POST['dn'] );
|
||||
$new_oclass = unserialize( rawurldecode( $_POST['new_oclass'] ) );
|
||||
$new_oclass = $_POST['new_oclass'];
|
||||
$new_attrs = $_POST['new_attrs'];
|
||||
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
@@ -46,19 +48,23 @@ if( is_array( $new_attrs ) && count( $new_attrs ) > 0 )
|
||||
|
||||
// Check to see if this is a unique Attribute
|
||||
if( $badattr = checkUniqueAttr( $ldapserver, $dn, $attr, array($val) ) ) {
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',
|
||||
$ldapserver->server_id,$attr,$badattr);
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',$server_id,$attr,$badattr);
|
||||
pla_error(sprintf( $lang['unique_attr_failed'],$attr,$badattr,$dn,$search_href ) );
|
||||
}
|
||||
|
||||
$new_entry[ $attr ] = $val;
|
||||
}
|
||||
|
||||
//echo "<pre>";
|
||||
//print_r( $new_entry );
|
||||
//exit;
|
||||
|
||||
$add_res = @ldap_mod_add( $ldapserver->connect(), $dn, $new_entry );
|
||||
|
||||
if (! $add_res)
|
||||
pla_error($lang['could_not_perform_ldap_mod_add'],$ldapserver->error(),$ldapserver->errno());
|
||||
if( ! $add_res ) {
|
||||
pla_error( $lang['could_not_perform_ldap_mod_add'],ldap_error($ldapserver->connect()),ldap_errno($ldapserver->connect()) );
|
||||
|
||||
else
|
||||
header(sprintf('Location: edit.php?server_id=%s&dn=%s&modified_attrs[]=objectclass',$ldapserver->server_id,$encoded_dn));
|
||||
} else {
|
||||
header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=objectclass" );
|
||||
}
|
||||
?>
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_oclass_form.php,v 1.20.2.3 2005/10/22 11:55:31 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_oclass_form.php,v 1.18 2005/03/12 14:03:36 wurley Exp $
|
||||
|
||||
/**
|
||||
* This page may simply add the objectClass and take you back to the edit page,
|
||||
@@ -9,27 +9,25 @@
|
||||
* attributes with 1 or more not defined by the object. In that case, we will
|
||||
* present a form for the user to add those attributes to the object.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as REQUEST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
* - new_oclass
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
* @todo If an attribute expects a DN, show the dn browser.
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
require './common.php';
|
||||
|
||||
$server_id = (isset($_REQUEST['server_id']) ? $_REQUEST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
if (! isset($_POST['new_oclass']))
|
||||
pla_error( $lang['no_objectclasses_selected']);
|
||||
|
||||
$new_oclass = $_REQUEST['new_oclass'];
|
||||
$dn = rawurldecode( $_REQUEST['dn'] );
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
@@ -45,14 +43,12 @@ foreach( $entry as $attr => $junk )
|
||||
$current_attrs[] = strtolower($attr);
|
||||
|
||||
// grab the required attributes for the new objectClass
|
||||
$schema_oclasses = $ldapserver->SchemaObjectClasses();
|
||||
$must_attrs = array();
|
||||
foreach( $new_oclass as $oclass_name ) {
|
||||
$oclass = $ldapserver->getSchemaObjectClass($oclass_name);
|
||||
if( $oclass )
|
||||
$must_attrs = array_merge( $must_attrs, $oclass->getMustAttrNames( $schema_oclasses ) );
|
||||
}
|
||||
$must_attrs = array_unique( $must_attrs );
|
||||
$oclass = get_schema_objectclass( $ldapserver, $new_oclass );
|
||||
if( $oclass )
|
||||
$must_attrs = $oclass->getMustAttrs();
|
||||
|
||||
else
|
||||
$must_attrs = array();
|
||||
|
||||
// We don't want any of the attr meta-data, just the string
|
||||
//foreach( $must_attrs as $i => $attr )
|
||||
@@ -62,7 +58,7 @@ $must_attrs = array_unique( $must_attrs );
|
||||
// but that the object does not currently contain
|
||||
$needed_attrs = array();
|
||||
foreach( $must_attrs as $attr ) {
|
||||
$attr = $ldapserver->getSchemaAttribute($attr);
|
||||
$attr = get_schema_attribute( $ldapserver, $attr->getName() );
|
||||
|
||||
//echo "<pre>"; var_dump( $attr ); echo "</pre>";
|
||||
|
||||
@@ -101,9 +97,9 @@ if( count( $needed_attrs ) > 0 ) {
|
||||
<br />
|
||||
|
||||
<form action="add_oclass.php" method="post">
|
||||
<input type="hidden" name="new_oclass" value="<?php echo rawurlencode( serialize( $new_oclass ) ); ?>" />
|
||||
<input type="hidden" name="new_oclass" value="<?php echo htmlspecialchars( $new_oclass ); ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $encoded_dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
|
||||
<table class="edit_dn" cellspacing="0">
|
||||
<tr><th colspan="2"><?php echo $lang['new_required_attrs']; ?></th></tr>
|
||||
@@ -126,12 +122,11 @@ if( count( $needed_attrs ) > 0 ) {
|
||||
<?php } else {
|
||||
|
||||
$add_res = @ldap_mod_add( $ldapserver->connect(), $dn, array( 'objectClass' => $new_oclass ) );
|
||||
if (! $add_res)
|
||||
pla_error("Could not perform ldap_mod_add operation.",
|
||||
$ldapserver->error(),$ldapserver->errno());
|
||||
if( ! $add_res )
|
||||
pla_error( "Could not perform ldap_mod_add operation.",
|
||||
ldap_error( $ldapserver->connect() ),ldap_errno( $ldapserver->connect() ) );
|
||||
else
|
||||
header(sprintf('Location: edit.php?server_id=%s&dn=%s&modified_attrs[]=objectClass',
|
||||
$ldapserver->server_id,$encoded_dn));
|
||||
header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=objectClass" );
|
||||
|
||||
}
|
||||
?>
|
@@ -1,14 +1,13 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_value.php,v 1.18.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_value.php,v 1.17 2005/03/12 10:42:27 wurley Exp $
|
||||
|
||||
/**
|
||||
* Adds a value to an attribute for a given dn.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - attr (rawurlencoded) the attribute to which we are adding a value
|
||||
* - server_id
|
||||
* - new_value (form element)
|
||||
* - binary
|
||||
*
|
||||
@@ -21,6 +20,9 @@
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
@@ -53,22 +55,21 @@ $new_entry = array( $attr => $new_value );
|
||||
|
||||
// Check to see if this is a unique Attribute
|
||||
if( $badattr = checkUniqueAttr( $ldapserver, $dn, $attr, $new_entry ) ) {
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',$ldapserver->server_id,$attr,$badattr);
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',$server_id,$attr,$badattr);
|
||||
pla_error(sprintf( $lang['unique_attr_failed'],$attr,$badattr,$dn,$search_href ) );
|
||||
}
|
||||
|
||||
// Call the custom callback for each attribute modification
|
||||
// and verify that it should be modified.
|
||||
if( run_hook ( 'pre_attr_add', array ( 'server_id' => $ldapserver->server_id, 'dn' => $dn, 'attr_name' => $attr,
|
||||
if( run_hook ( 'pre_attr_add', array ( 'server_id' => $server_id, 'dn' => $dn, 'attr_name' => $attr,
|
||||
'new_value' => $new_entry ) ) ) {
|
||||
|
||||
$add_result = @ldap_mod_add( $ldapserver->connect(), $dn, $new_entry );
|
||||
$add_result = @ldap_mod_add( $ldapserver->connect(), $dn, $new_entry );
|
||||
|
||||
if (! $add_result)
|
||||
pla_error($lang['could_not_perform_ldap_mod_add'],
|
||||
$ldapserver->error(),$ldapserver->errno());
|
||||
if( ! $add_result )
|
||||
pla_error( $lang['could_not_perform_ldap_mod_add'], ldap_error( $ldapserver->connect() ), ldap_errno( $ldapserver->connect() ) );
|
||||
}
|
||||
|
||||
header(sprintf('Location: edit.php?server_id=%s&dn=%s&modified_attrs[]=%s',
|
||||
$ldapserver->server_id,$encoded_dn,$encoded_attr));
|
||||
header( "Location: edit.php?server_id=$server_id&dn=$encoded_dn&modified_attrs[]=$encoded_attr" );
|
||||
|
||||
?>
|
@@ -1,15 +1,14 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/add_value_form.php,v 1.32.2.2 2005/10/16 20:19:16 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/add_value_form.php,v 1.29 2005/03/12 14:03:36 wurley Exp $
|
||||
|
||||
/**
|
||||
* Displays a form to allow the user to enter a new value to add
|
||||
* to the existing list of values for a multi-valued attribute.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - attr (rawurlencoded) the attribute to which we are adding a value
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
@@ -18,6 +17,9 @@
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id = (isset($_GET['server_id']) ? $_GET['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
@@ -28,11 +30,12 @@ $dn = isset( $_GET['dn'] ) ? $_GET['dn'] : null;
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$encoded_attr = rawurlencode( $attr );
|
||||
|
||||
if (! is_null($dn))
|
||||
if( null != $dn ) {
|
||||
$rdn = get_rdn( $dn );
|
||||
|
||||
else
|
||||
} else {
|
||||
$rdn = null;
|
||||
}
|
||||
|
||||
$current_values = get_object_attr( $ldapserver, $dn, $attr );
|
||||
$num_current_values = ( is_array($current_values) ? count($current_values) : 0 );
|
||||
@@ -41,13 +44,13 @@ $is_jpeg_photo = is_jpeg_photo( $ldapserver, $attr ); //( 0 == strcasecmp( $attr
|
||||
|
||||
if( $is_object_class ) {
|
||||
// fetch all available objectClasses and remove those from the list that are already defined in the entry
|
||||
$schema_oclasses = $ldapserver->SchemaObjectClasses();
|
||||
$schema_oclasses = get_schema_objectclasses( $ldapserver );
|
||||
|
||||
foreach( $current_values as $oclass )
|
||||
unset( $schema_oclasses[ strtolower( $oclass ) ] );
|
||||
|
||||
} else {
|
||||
$schema_attr = $ldapserver->getSchemaAttribute($attr);
|
||||
$schema_attr = get_schema_attribute( $ldapserver, $attr );
|
||||
}
|
||||
|
||||
include './header.php'; ?>
|
||||
@@ -89,13 +92,13 @@ include './header.php'; ?>
|
||||
for( $i=1; $i<=count($vals); $i++ ) {
|
||||
|
||||
$href = sprintf('download_binary_attr.php?server_id=%s&dn=%s&attr=%s&value_num=%s',
|
||||
$ldapserver->server_id,$encoded_dn,$attr,$i-1); ?>
|
||||
$server_id,$encoded_dn,$attr,$i-1); ?>
|
||||
|
||||
<li><a href="<?php echo $href; ?>"><img src="images/save.png" /> <?php echo $lang['download_value'] . ' ' . $i; ?>)</a></li>
|
||||
<?php }
|
||||
|
||||
} else {
|
||||
$href = sprintf('download_binary_attr.php?server_id=%s&dn=%s&attr=%s',$ldapserver->server_id,$encoded_dn,$attr); ?>
|
||||
$href = sprintf('download_binary_attr.php?server_id=%s&dn=%s&attr=%s',$server_id,$encoded_dn,$attr); ?>
|
||||
<li><a href="<?php echo $href; ?>"><img src="images/save.png" /> <?php echo $lang['download_value']; ?></a></li>
|
||||
<?php } ?>
|
||||
|
||||
@@ -135,25 +138,24 @@ include './header.php'; ?>
|
||||
<?php if( $is_object_class ) { ?>
|
||||
|
||||
<form action="add_oclass_form.php" method="post" class="new_value">
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $encoded_dn; ?>" />
|
||||
<select name="new_oclass[]" multiple="true" size="15">
|
||||
<select name="new_oclass">
|
||||
|
||||
<?php foreach( $schema_oclasses as $name => $oclass ) {
|
||||
|
||||
// exclude any structural ones, as they'll only generate an LDAP_OBJECT_CLASS_VIOLATION
|
||||
if ($oclass->getType() == "structural") continue; ?>
|
||||
if ($oclass->type == "structural") continue; ?>
|
||||
|
||||
<option value="<?php echo $oclass->getName(); ?>"><?php echo $oclass->getName(); ?></option>
|
||||
|
||||
<?php } ?>
|
||||
|
||||
</select>
|
||||
<br />
|
||||
<input type="submit" value="<?php echo $lang['add_new_objectclass']; ?>" />
|
||||
|
||||
<br />
|
||||
<?php if ($config->GetValue('appearance','show_hints')) { ?>
|
||||
<?php if( show_hints() ) { ?>
|
||||
<small>
|
||||
<br />
|
||||
<img src="images/light.png" /><span class="hint"><?php echo $lang['new_required_attrs_note']; ?></span>
|
||||
@@ -165,7 +167,7 @@ include './header.php'; ?>
|
||||
<form action="add_value.php" method="post" class="new_value" name="new_value_form"<?php
|
||||
if( is_attr_binary( $ldapserver, $attr ) ) echo "enctype=\"multipart/form-data\""; ?>>
|
||||
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="hidden" name="dn" value="<?php echo $encoded_dn; ?>" />
|
||||
<input type="hidden" name="attr" value="<?php echo $encoded_attr; ?>" />
|
||||
|
||||
@@ -174,7 +176,7 @@ include './header.php'; ?>
|
||||
<input type="hidden" name="binary" value="true" />
|
||||
|
||||
<?php } else {
|
||||
if( is_multi_line_attr( $attr, $ldapserver->server_id ) ) { ?>
|
||||
if( is_multi_line_attr( $attr, $server_id ) ) { ?>
|
||||
|
||||
<textarea name="new_value" rows="3" cols="30"></textarea>
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/blowfish.php,v 1.3 2005/02/25 13:44:05 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/blowfish.php,v 1.3 2005/02/25 13:44:05 wurley Exp $
|
||||
|
||||
/**
|
||||
* The Cipher_blowfish:: class implements the Cipher interface enryption data
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/tools/check_lang_files.php,v 1.11.2.1 2005/10/09 06:36:36 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/check_lang_files.php,v 1.11 2005/02/25 13:44:05 wurley Exp $
|
||||
|
||||
/**
|
||||
* Test script to check that $lang variables in each language file.
|
||||
@@ -11,10 +11,10 @@
|
||||
echo "<html><head><title>phpldapadmin - check of translation</title></head><body>";
|
||||
$CHECKLANG=$_REQUEST['CHECKLANG'];
|
||||
|
||||
require realpath( '../lang/en.php' );
|
||||
include realpath( './lang/en.php' );
|
||||
$english_lang = $lang;
|
||||
unset( $lang );
|
||||
$lang_dir = realpath( '../lang/recoded' );
|
||||
$lang_dir = realpath( './lang/recoded' );
|
||||
$dir = opendir( $lang_dir );
|
||||
|
||||
// First, detect any unused strings from the english language:
|
||||
@@ -31,7 +31,7 @@ $ignore_keys['contains'] = 1;
|
||||
foreach( $english_lang as $key => $string ) {
|
||||
if( isset( $ignore_keys[$key] ) )
|
||||
continue;
|
||||
$grep_cmd = "grep -r \"lang\[['\\\"]$key\" ../*.php ../htdocs/ ../templates/ ../lib/";
|
||||
$grep_cmd = "grep -r \"lang\[['\\\"]$key\" *.php templates/";
|
||||
$used = `$grep_cmd`;
|
||||
if( ! $used ) {
|
||||
$unused_keys = true;
|
47
collapse.php
Normal file
47
collapse.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/collapse.php,v 1.12 2005/02/25 13:44:05 wurley Exp $
|
||||
|
||||
/**
|
||||
* This script alters the session variable 'tree', collapsing it
|
||||
* at the dn specified in the query string.
|
||||
*
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*
|
||||
* Note: this script is equal and opposite to expand.php
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id = (isset($_GET['server_id']) ? $_GET['server_id'] : '');
|
||||
//$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
//if( ! $ldapserver->haveAuthInfo())
|
||||
// pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
|
||||
initialize_session_tree();
|
||||
|
||||
if( array_key_exists( $dn, $_SESSION['tree'][$server_id] ) )
|
||||
unset( $_SESSION['tree'][$server_id][$dn] );
|
||||
|
||||
// This is for Opera. By putting "random junk" in the query string, it thinks
|
||||
// that it does not have a cached version of the page, and will thus
|
||||
// fetch the page rather than display the cached version
|
||||
$time = gettimeofday();
|
||||
$random_junk = md5( strtotime( 'now' ) . $time['usec'] );
|
||||
|
||||
// If cookies were disabled, build the url parameter for the session id.
|
||||
// It will be append to the url to be redirect
|
||||
$id_session_param = "";
|
||||
if (SID != "")
|
||||
$id_session_param = "&".session_name()."=".session_id();
|
||||
|
||||
header( "Location:tree.php?foo=$random_junk#{$server_id}_{$encoded_dn}$id_session_param" );
|
||||
?>
|
180
common.php
Normal file
180
common.php
Normal file
@@ -0,0 +1,180 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/common.php,v 1.59 2005/03/16 11:20:23 wurley Exp $
|
||||
|
||||
/**
|
||||
* Contains code to be executed at the top of each phpLDAPadmin page.
|
||||
* include this file at the top of every PHP file.
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
|
||||
// Work-around to get PLA to work in PHP5
|
||||
if( phpversion() >= "5" )
|
||||
ini_set( "zend.ze1_compatibility_mode", 1 );
|
||||
|
||||
// Turn on all notices and warnings. This helps us write cleaner code (we hope at least)
|
||||
if( phpversion() >= "5" )
|
||||
// E_DEBUG is PHP5 specific and prevents warnings about using 'var' to declar class members
|
||||
error_reporting( 'E_DEBUG' );
|
||||
else
|
||||
// For PHP4
|
||||
error_reporting( E_ALL );
|
||||
|
||||
/**
|
||||
* For PHP5 backward/forward compatibility
|
||||
*/
|
||||
if( ! defined( 'E_STRICT' ) ) {
|
||||
define( 'E_STRICT', 2048 );
|
||||
}
|
||||
|
||||
/** The minimum version of PHP required to run phpLDAPadmin. */
|
||||
@define( 'REQUIRED_PHP_VERSION', '4.1.0' );
|
||||
/** The default setting for $search_deref if unspecified or misconfigured by user. */
|
||||
@define( 'DEFAULT_SEARCH_DEREF_SETTING', LDAP_DEREF_ALWAYS );
|
||||
/** The default setting for $tree_deref if unspecified or misconfigured by user. */
|
||||
@define( 'DEFAULT_TREE_DEREF_SETTING', LDAP_DEREF_NEVER );
|
||||
/** The default setting for $export_deref if unspecified or misconfigured by user. */
|
||||
@define( 'DEFAULT_EXPORT_DEREF_SETTING', LDAP_DEREF_NEVER );
|
||||
/** The default setting for $view_deref if unspecified or misconfigured by user. */
|
||||
@define( 'DEFAULT_VIEW_DEREF_SETTING', LDAP_DEREF_NEVER );
|
||||
|
||||
// General functions needed to proceed (pla_ldap_search(), pla_error(), get_object_attrs(), etc.)
|
||||
ob_start();
|
||||
if( ! file_exists( realpath( './functions.php' ) ) ) {
|
||||
ob_end_clean();
|
||||
die( "Fatal error: Required file 'functions.php' does not exist." );
|
||||
}
|
||||
if( ! is_readable( realpath( './functions.php' ) ) ) {
|
||||
ob_end_clean();
|
||||
die( "Cannot read the file 'functions.php' its permissions are too strict." );
|
||||
}
|
||||
require_once realpath( './functions.php' );
|
||||
ob_end_clean();
|
||||
|
||||
// Our custom error handler receives all error notices that pass the error_reporting()
|
||||
// level set above.
|
||||
set_error_handler( 'pla_error_handler' );
|
||||
|
||||
// Creates the language array which will be populated with localized strings
|
||||
// based on the user-configured language.
|
||||
$lang = array();
|
||||
|
||||
// config.php might not exist (if the user hasn't configured PLA yet)
|
||||
// Only include it if it does exist.
|
||||
if( file_exists( realpath( './config.php' ) ) ) {
|
||||
ob_start();
|
||||
is_readable( realpath( './config.php' ) ) or pla_error( "Could not read config.php, its permissions are too strict." );
|
||||
include realpath( './config.php' );
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
$required_files = array(
|
||||
// The base English language strings
|
||||
'./lang/recoded/en.php',
|
||||
// Functions for talking to LDAP servers.
|
||||
'./server_functions.php',
|
||||
// Functions for managing the session (pla_session_start(), etc.)
|
||||
'./session_functions.php',
|
||||
// Functions for reading the server schema (get_schema_object_classes(), etc.)
|
||||
'./schema_functions.php',
|
||||
// Functions that can be defined by the user (preEntryDelete(), postEntryDelete(), etc.)
|
||||
'./custom_functions.php',
|
||||
// Functions for hashing passwords with OpenSSL binary (only if mhash not present)
|
||||
'./emuhash_functions.php',
|
||||
// Functions for sending syslog messages
|
||||
'./syslog.php',
|
||||
// Functions for running various hooks
|
||||
'./hooks.php',
|
||||
// Functions for timeout and automatic logout feature
|
||||
'./timeout_functions.php' );
|
||||
|
||||
// Include each required file and check for sanity.
|
||||
foreach( $required_files as $file_name ) {
|
||||
file_exists( realpath( $file_name ) )
|
||||
or pla_error( "Fatal error: Required file '$file_name' does not exist." );
|
||||
is_readable( realpath( $file_name ) )
|
||||
or pla_error( "Fatal error: Cannot read the file '$file_name', its permissions are too strict." );
|
||||
ob_start();
|
||||
require_once realpath( $file_name );
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
if( pla_session_start() )
|
||||
run_hook ( 'post_session_init', array () );
|
||||
|
||||
// Language configuration. Auto or specified?
|
||||
// Shall we attempt to auto-determine the language?
|
||||
if( isset( $language ) ) {
|
||||
if( 0 == strcasecmp( $language, "auto" ) ) {
|
||||
|
||||
// Make sure their browser correctly reports language. If not, skip this.
|
||||
if( isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ) {
|
||||
|
||||
// get the languages which are spetcified in the HTTP header
|
||||
$HTTP_LANGS1 = preg_split ("/[;,]+/", $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
|
||||
$HTTP_LANGS2 = preg_split ("/[;,]+/", $_SERVER['HTTP_ACCEPT_LANGUAGE'] );
|
||||
foreach( $HTTP_LANGS2 as $key => $value ) {
|
||||
$value=preg_split ("/[-]+/", $value );
|
||||
$HTTP_LANGS2[$key]=$value[0];
|
||||
}
|
||||
|
||||
$HTTP_LANGS = array_merge ($HTTP_LANGS1, $HTTP_LANGS2);
|
||||
foreach( $HTTP_LANGS as $HTTP_LANG) {
|
||||
// try to grab one after the other the language file
|
||||
if( file_exists( realpath( "lang/recoded/$HTTP_LANG.php" ) ) &&
|
||||
is_readable( realpath( "lang/recoded/$HTTP_LANG.php" ) ) ) {
|
||||
ob_start();
|
||||
include realpath( "lang/recoded/$HTTP_LANG.php" );
|
||||
ob_end_clean();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
// grab the language file configured in config.php
|
||||
if( $language != null ) {
|
||||
if( 0 == strcmp( $language, 'english' ) )
|
||||
$language = 'en';
|
||||
if( file_exists( realpath( "lang/recoded/$language.php" ) ) &&
|
||||
is_readable( realpath( "lang/recoded/$language.php" ) ) ) {
|
||||
ob_start();
|
||||
include realpath( "lang/recoded/$language.php" );
|
||||
ob_end_clean();
|
||||
} else {
|
||||
pla_error( "Could not read language file 'lang/recoded/$language.php'. Either the file
|
||||
does not exist, or its permissions do not allow phpLDAPadmin to read it." );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If config.php doesn't create the templates array, create it here.
|
||||
if( ! isset( $templates ) || ! is_array( $templates ) )
|
||||
$templates = array();
|
||||
|
||||
// Always including the 'custom' template (the most generic and flexible)
|
||||
$templates['custom'] =
|
||||
array( 'desc' => 'Custom',
|
||||
'icon' => 'images/object.png',
|
||||
'handler' => 'custom.php' );
|
||||
|
||||
// Strip slashes from GET, POST, and COOKIE variables if this
|
||||
// PHP install is configured to automatically addslashes()
|
||||
if ( get_magic_quotes_gpc() && ( ! isset( $slashes_stripped ) || ! $slashes_stripped ) ) {
|
||||
array_stripslashes($_REQUEST);
|
||||
array_stripslashes($_GET);
|
||||
array_stripslashes($_POST);
|
||||
array_stripslashes($_COOKIE);
|
||||
array_stripslashes($_FILES);
|
||||
$slashes_stripped = true;
|
||||
}
|
||||
|
||||
// Update $_SESSION[ 'activity' ]
|
||||
// for timeout and automatic logout feature
|
||||
if ( isset($_REQUEST['server_id']) ) {
|
||||
$ldapserver = new LDAPServer($_REQUEST['server_id']);
|
||||
if ( $ldapserver->haveAuthInfo() )
|
||||
set_lastactivity( $ldapserver );
|
||||
}
|
||||
?>
|
@@ -1,39 +1,42 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/compare.php,v 1.10.2.3 2005/10/16 20:19:16 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/compare.php,v 1.4 2005/03/18 07:24:30 wurley Exp $
|
||||
|
||||
/**
|
||||
* Compare two DNs - the destination DN is editable.
|
||||
* @package phpLDAPadmin
|
||||
*
|
||||
* Variables that come in as POST vars:
|
||||
*/
|
||||
/**
|
||||
* @todo Dont allow adding values if the objectclass doesnt exist.
|
||||
* @todo Show what objectclass needs to be added to add a value.
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require realpath( 'common.php' );
|
||||
|
||||
$dn_src = isset($_POST['dn_src']) ? $_POST['dn_src'] : null;
|
||||
$dn_dst = isset($_POST['dn_dst']) ? $_POST['dn_dst'] : null;
|
||||
$dn_src = isset( $_POST['dn_src'] ) ? $_POST['dn_src'] : null;
|
||||
$dn_dst = isset( $_POST['dn_dst'] ) ? $_POST['dn_dst'] : null;
|
||||
|
||||
$encoded_dn_src = rawurlencode($dn_src);
|
||||
$encoded_dn_dst = rawurlencode($dn_dst);
|
||||
$encoded_dn_src = rawurlencode( $dn_src );
|
||||
$encoded_dn_dst = rawurlencode( $dn_dst );
|
||||
|
||||
$server_id_src = (isset($_POST['server_id_src']) ? $_POST['server_id_src'] : '');
|
||||
$server_id_dst = (isset($_POST['server_id_dst']) ? $_POST['server_id_dst'] : '');
|
||||
|
||||
$ldapserver_src = $ldapservers->Instance($server_id_src);
|
||||
if ( ! $ldapserver_src->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
$ldapserver_src = new LDAPServer($server_id_src);
|
||||
if( ! $ldapserver_src->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$ldapserver_dst = $ldapservers->Instance($server_id_dst);
|
||||
if ( ! $ldapserver_src->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
$ldapserver_dst = new LDAPServer($server_id_dst);
|
||||
if( ! $ldapserver_src->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
dn_exists($ldapserver_src,$dn_src) or pla_error(sprintf($lang['no_such_entry'],pretty_print_dn($dn_src)));
|
||||
dn_exists($ldapserver_dst,$dn_dst) or pla_error(sprintf($lang['no_such_entry'],pretty_print_dn($dn_dst)));
|
||||
dn_exists( $ldapserver_src, $dn_src ) or pla_error( sprintf( $lang['no_such_entry'], pretty_print_dn( $dn_src ) ) );
|
||||
dn_exists( $ldapserver_dst, $dn_dst ) or pla_error( sprintf( $lang['no_such_entry'], pretty_print_dn( $dn_dst ) ) );
|
||||
|
||||
$friendly_attrs = process_friendly_attr_table();
|
||||
|
||||
$attrs_src = get_object_attrs($ldapserver_src,$dn_src,false,$config->GetValue('deref','view'));
|
||||
$attrs_dst = get_object_attrs($ldapserver_dst,$dn_dst,false,$config->GetValue('deref','view'));
|
||||
$attrs_src = get_object_attrs( $ldapserver_src, $dn_src, false, get_view_deref_setting() );
|
||||
$attrs_dst = get_object_attrs( $ldapserver_dst, $dn_dst, false, get_view_deref_setting() );
|
||||
|
||||
# Get a list of all attributes.
|
||||
$attrs_all = array_keys($attrs_src);
|
||||
@@ -41,29 +44,24 @@ foreach ($attrs_dst as $key => $val)
|
||||
if (! in_array($key,$attrs_all))
|
||||
$attrs_all[] = $key;
|
||||
|
||||
include './header.php';
|
||||
?>
|
||||
|
||||
include './header.php'; ?>
|
||||
<body>
|
||||
|
||||
<table class="comp_dn" border=0>
|
||||
<tr><td colspan=6>
|
||||
<tr><td colspan=4>
|
||||
<h3 class="title"><?php echo $lang['comparing']; ?></h3>
|
||||
</td></tr>
|
||||
|
||||
<tr>
|
||||
<td colspan=2 width=20%>
|
||||
<h3 class="subtitle"><?php echo $lang['attribute']; ?><br /> </h3>
|
||||
<td colspan=2>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver_src->name; ?></b> <?php echo $lang['distinguished_name'];?>: <b><?php echo htmlspecialchars( ( $dn_src ) ); ?></b></h3>
|
||||
</td>
|
||||
<td colspan=2 width=40%>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver_src->name; ?></b><br /><?php echo $lang['distinguished_name'];?>: <b><?php echo htmlspecialchars(($dn_src)); ?></b></h3>
|
||||
</td>
|
||||
<td colspan=2 width=40%>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver_dst->name; ?></b><br /><?php echo $lang['distinguished_name'];?>: <b><?php echo htmlspecialchars(($dn_dst)); ?></b></h3>
|
||||
<td colspan=2>
|
||||
<h3 class="subtitle"><?php echo $lang['server']; ?>: <b><?php echo $ldapserver_dst->name; ?></b> <?php echo $lang['distinguished_name'];?>: <b><?php echo htmlspecialchars( ( $dn_dst ) ); ?></b></h3>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan=6 align=right>
|
||||
<td colspan=3><td align=right>
|
||||
<form action="compare.php" method="post" name="compare_form">
|
||||
<input type="hidden" name="server_id_src" value="<?php echo $ldapserver_dst->server_id; ?>" />
|
||||
<input type="hidden" name="server_id_dst" value="<?php echo $ldapserver_src->server_id; ?>" />
|
||||
@@ -74,28 +72,26 @@ include './header.php';
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
if(! $attrs_all || ! is_array($attrs_all)) {
|
||||
printf('<tr><td colspan="2">(%s)</td></tr>',$lang['no_attributes']);
|
||||
print '</table>';
|
||||
print '</html>';
|
||||
<?php if( ! $attrs_all || ! is_array( $attrs_all ) ) {
|
||||
echo "<tr><td colspan=\"2\">(" . $lang['no_attributes'] . ")</td></tr>\n";
|
||||
echo "</table>";
|
||||
echo "</html>";
|
||||
die();
|
||||
}
|
||||
|
||||
sort($attrs_all);
|
||||
sort( $attrs_all );
|
||||
|
||||
# Work through each of the attributes.
|
||||
foreach ($attrs_all as $attr) {
|
||||
// Work through each of the attributes.
|
||||
foreach( $attrs_all as $attr ) {
|
||||
flush();
|
||||
|
||||
# If this is the DN, get the next attribute.
|
||||
if (! strcasecmp($attr,'dn'))
|
||||
if( ! strcasecmp( $attr, 'dn' ) )
|
||||
continue;
|
||||
|
||||
# Has the config.php specified that this attribute is to be hidden or shown?
|
||||
if (is_attr_hidden($ldapserver_src,$attr) || is_attr_hidden($ldapserver_dst,$attr))
|
||||
continue;
|
||||
?>
|
||||
// Has the config.php specified that this attribute is to be hidden or shown?
|
||||
if( is_attr_hidden( $ldapserver_src, $attr) || is_attr_hidden( $ldapserver_dst, $attr))
|
||||
continue; ?>
|
||||
|
||||
<!-- Begin Attribute -->
|
||||
<tr>
|
||||
@@ -103,7 +99,7 @@ foreach ($attrs_all as $attr) {
|
||||
<?php foreach (array('src','dst') as $side) { ?>
|
||||
|
||||
<?php
|
||||
if ($side == 'dst' && ! $ldapserver_dst->isReadOnly()) { ?>
|
||||
if( $side == 'dst' && ! $ldapserver_dst->isReadOnly() ) { ?>
|
||||
|
||||
<form action="update_confirm.php" method="post" name="edit_form">
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver_dst->server_id; ?>" />
|
||||
@@ -111,74 +107,65 @@ foreach ($attrs_all as $attr) {
|
||||
|
||||
<?php }
|
||||
|
||||
$schema_attr_src = $ldapserver_src->getSchemaAttribute($attr,$dn_src);
|
||||
$schema_attr_dst = $ldapserver_dst->getSchemaAttribute($attr,$dn_dst);
|
||||
$schema_attr_src = get_schema_attribute( $ldapserver_src, $attr, $dn_src );
|
||||
$schema_attr_dst = get_schema_attribute( $ldapserver_dst, $attr, $dn_dst );
|
||||
|
||||
# Setup the $attr_note, which will be displayed to the right of the attr name (if any)
|
||||
// Setup the $attr_note, which will be displayed to the right of the attr name (if any)
|
||||
$attr_note = '';
|
||||
$required_note = '';
|
||||
|
||||
# is there a user-friendly translation available for this attribute?
|
||||
if (isset($friendly_attrs[strtolower($attr)])) {
|
||||
$attr_display = $friendly_attrs[strtolower($attr)];
|
||||
$attr_note = sprintf('<acronym title="%s">alias</acronym>',sprintf($lang['alias_for'],$attr_display,$attr));
|
||||
|
||||
// is there a user-friendly translation available for this attribute?
|
||||
if( isset( $friendly_attrs[ strtolower( $attr ) ] ) ) {
|
||||
$attr_display = $friendly_attrs[ strtolower( $attr ) ];
|
||||
$attr_note = "<acronym title=\"" . sprintf( $lang['alias_for'], $attr_display, $attr ) . "\">alias</acronym>";
|
||||
} else {
|
||||
$attr_note = '';
|
||||
$attr_note = "";
|
||||
$attr_display = $attr;
|
||||
}
|
||||
|
||||
# is this attribute required by an objectClass?
|
||||
// is this attribute required by an objectClass?
|
||||
$required_by = '';
|
||||
switch ($side) {
|
||||
case 'src':
|
||||
$ldapserver = $ldapserver_src;
|
||||
if ($schema_attr_src)
|
||||
foreach ($schema_attr_src->getRequiredByObjectClasses() as $required)
|
||||
if (isset($attrs_src['objectClass']) && in_array(strtolower($required),arrayLower($attrs_src['objectClass'])))
|
||||
if( $schema_attr_src )
|
||||
foreach( $schema_attr_src->getRequiredByObjectClasses() as $required )
|
||||
if( isset($attrs_src['objectClass']) && in_array( strtolower( $required ), arrayLower( $attrs_src['objectClass'] ) ) )
|
||||
$required_by .= $required . ' ';
|
||||
|
||||
# It seems that some LDAP servers (Domino) returns attributes in lower case?
|
||||
elseif( isset($attrs_src['objectclass']) && in_array(strtolower($required),arrayLower($attrs_src['objectclass'])))
|
||||
// It seems that some LDAP servers (Domino) returns attributes in lower case?
|
||||
elseif( isset($attrs_src['objectclass']) && in_array( strtolower( $required ), arrayLower( $attrs_src['objectclass'] ) ) )
|
||||
$required_by .= $required . ' ';
|
||||
|
||||
break;
|
||||
|
||||
case 'dst':
|
||||
$ldapserver = $ldapserver_dst;
|
||||
if ($schema_attr_dst)
|
||||
foreach ($schema_attr_dst->getRequiredByObjectClasses() as $required)
|
||||
if (isset($attrs_dst['objectClass']) && in_array(strtolower($required),arrayLower($attrs_dst['objectClass'])))
|
||||
if( $schema_attr_dst )
|
||||
foreach( $schema_attr_dst->getRequiredByObjectClasses() as $required )
|
||||
if( isset($attrs_dst['objectClass']) && in_array( strtolower( $required ), arrayLower( $attrs_dst['objectClass'] ) ) )
|
||||
$required_by .= $required . ' ';
|
||||
|
||||
# It seems that some LDAP servers (Domino) returns attributes in lower case?
|
||||
elseif (isset($attrs_dst['objectclass']) && in_array(strtolower($required),arrayLower($attrs_dst['objectclass'])))
|
||||
// It seems that some LDAP servers (Domino) returns attributes in lower case?
|
||||
elseif( isset($attrs_dst['objectclass']) && in_array( strtolower( $required ), arrayLower( $attrs_dst['objectclass'] ) ) )
|
||||
$required_by .= $required . ' ';
|
||||
break;
|
||||
}
|
||||
|
||||
if ($side == 'src') { ?>
|
||||
if( $required_by ) {
|
||||
if( trim( $attr_note ) )
|
||||
$attr_note .= ', ';
|
||||
$attr_note .= "<acronym title=\"" . sprintf( $lang['required_for'], $required_by ) . "\">" . $lang['required'] . "</acronym> ";
|
||||
} ?>
|
||||
|
||||
<td class="attr">
|
||||
<?php $schema_href="schema.php?server_id=$server_id_src&view=attributes&viewvalue=".real_attr_name($attr); ?>
|
||||
<b><a title="<?php echo sprintf($lang['attr_name_tooltip'],$attr) ?>" href="<?php echo $schema_href; ?>"><?php echo $attr_display; ?></a></b>
|
||||
<?php $schema_href="schema.php?server_id=$server_id_src&view=attributes&viewvalue=" . real_attr_name($attr); ?>
|
||||
<b><a title="<?php echo sprintf( $lang['attr_name_tooltip'], $attr ) ?>" href="<?php echo $schema_href; ?>"><?php echo $attr_display; ?></a></b>
|
||||
</td>
|
||||
|
||||
<td class="attr_note">
|
||||
<sup><small><?php echo $attr_note; ?></small></sup>
|
||||
</td>
|
||||
<?php }
|
||||
|
||||
if ($required_by) {
|
||||
$required_note .= sprintf('<acronym title="%s">%s</acronym>',sprintf($lang['required_for'],$required_by),$lang['required']);
|
||||
?>
|
||||
<td colspan=2 class="attr_note">
|
||||
<sup><small><?php echo $required_note; ?></small></sup>
|
||||
</td>
|
||||
<?php } else { ?>
|
||||
<td colspan=2 class="attr_note"> </td>
|
||||
<?php } ?>
|
||||
|
||||
<?php if (is_attr_read_only($ldapserver,$attr)) { ?>
|
||||
<?php if( is_attr_read_only( $ldapserver, $attr ) ) { ?>
|
||||
<small>(<acronym title="<?php echo $lang['read_only_tooltip']; ?>"><?php echo $lang['read_only']; ?></acronym>)</small>
|
||||
<?php } ?>
|
||||
</td>
|
||||
@@ -195,14 +182,12 @@ foreach ($attrs_all as $attr) {
|
||||
foreach (array('src','dst') as $side) {
|
||||
$vals = null; ?>
|
||||
|
||||
<td> </td><td class="val">
|
||||
|
||||
<?php
|
||||
# If this attribute isnt set, then show a blank.
|
||||
<?php // If this attribute isnt set, then show a blank.
|
||||
$toJump = 0;
|
||||
switch ($side) {
|
||||
case 'src':
|
||||
print '<td colspan=2> </td><td class="attr">';
|
||||
|
||||
if (! isset($attrs_src[$attr])) {
|
||||
echo "<small><". $lang['no_value']."></small></td>";
|
||||
$toJump = 1;
|
||||
@@ -212,10 +197,7 @@ foreach ($attrs_all as $attr) {
|
||||
|
||||
$ldapserver = $ldapserver_src;
|
||||
break;
|
||||
|
||||
case 'dst':
|
||||
print '<td colspan=2> </td><td class="val">';
|
||||
|
||||
if (! isset($attrs_dst[$attr])) {
|
||||
echo "<small><". $lang['no_value']."></small></td>";
|
||||
$toJump = 1;
|
||||
@@ -226,13 +208,12 @@ foreach ($attrs_all as $attr) {
|
||||
$ldapserver = $ldapserver_dst;
|
||||
break;
|
||||
}
|
||||
|
||||
if ($toJump) continue;
|
||||
|
||||
/*
|
||||
* Is this attribute a jpegPhoto?
|
||||
*/
|
||||
if (is_jpeg_photo($ldapserver,$attr)) {
|
||||
if( is_jpeg_photo( $ldapserver, $attr ) ) {
|
||||
|
||||
switch ($side) {
|
||||
case 'src':
|
||||
@@ -310,7 +291,7 @@ foreach ($attrs_all as $attr) {
|
||||
if( trim( $val ) == "" )
|
||||
echo "<span style=\"color:red\">[" . $lang['empty'] . "]</span><br />\n";
|
||||
|
||||
elseif( 0 == strcasecmp( $attr, 'userPassword' ) && $config->GetValue('appearance','obfuscate_password_display'))
|
||||
elseif( 0 == strcasecmp( $attr, 'userPassword' ) && obfuscate_password_display() )
|
||||
echo preg_replace( '/./', '*', $val ) . "<br />";
|
||||
|
||||
else
|
||||
@@ -318,7 +299,7 @@ foreach ($attrs_all as $attr) {
|
||||
}
|
||||
|
||||
} else {
|
||||
if( 0 == strcasecmp( $attr, 'userPassword' ) && $config->GetValue('appearance','obfuscate_password_display'))
|
||||
if( 0 == strcasecmp( $attr, 'userPassword' ) && obfuscate_password_display() )
|
||||
echo preg_replace( '/./', '*', $vals ) . "<br />";
|
||||
else
|
||||
echo $vals . "<br />";
|
||||
@@ -348,7 +329,7 @@ foreach ($attrs_all as $attr) {
|
||||
|
||||
<?php }
|
||||
|
||||
if( obfuscate_password_display( $enc_type ) ) {
|
||||
if( obfuscate_password_display() || is_null( $enc_type ) ) {
|
||||
echo htmlspecialchars( preg_replace( "/./", "*", $user_password ) );
|
||||
} else {
|
||||
echo htmlspecialchars( $user_password );
|
||||
@@ -430,9 +411,9 @@ foreach ($attrs_all as $attr) {
|
||||
|
||||
<a title="<?php echo $lang['view_schema_for_oclass']; ?>" href="schema.php?server_id=<?php echo $ldapserver->server_id; ?>&view=objectClasses&viewvalue=<?php echo htmlspecialchars( $val ); ?>"><img src="images/info.png" /></a>
|
||||
|
||||
<?php $schema_object = $ldapserver->getSchemaObjectClass($val);
|
||||
<?php $schema_object = get_schema_objectclass( $ldapserver, $val);
|
||||
|
||||
if ($schema_object->getType() == 'structural') {
|
||||
if ($schema_object->type == 'structural') {
|
||||
echo "$val <small>(<acronym title=\"" . sprintf( $lang['structural_object_class_cannot_remove'] ) . "\">" . $lang['structural'] . "</acronym>)</small><br />";
|
||||
|
||||
if ($side == 'dst') {?>
|
||||
@@ -500,7 +481,7 @@ foreach ($attrs_all as $attr) {
|
||||
// First check if the required objectClass is in this DN
|
||||
$isOK = 0;
|
||||
$src_oclass = array();
|
||||
$attr_object = $ldapserver_dst->getSchemaAttribute($attr,$dn_dst);
|
||||
$attr_object = get_schema_attribute( $ldapserver_dst, $attr, $dn_dst );
|
||||
foreach ($attr_object->used_in_object_classes as $oclass) {
|
||||
if (in_array(strtolower($oclass),arrayLower($attrs_dst['objectClass']))) {
|
||||
$isOK = 1;
|
||||
@@ -512,7 +493,7 @@ foreach ($attrs_all as $attr) {
|
||||
}
|
||||
}
|
||||
|
||||
print "<tr><td colspan=2></td><td colspan=2> </td><td> </td><td>";
|
||||
print "<tr><td colspan=2> </td><td> </td><td>";
|
||||
if (! $isOK) {
|
||||
|
||||
if (count($src_oclass) == 1) {
|
||||
@@ -531,8 +512,7 @@ foreach ($attrs_all as $attr) {
|
||||
|
||||
$add_href = "add_value_form.php?server_id=$ldapserver_dst->server_id&dn=$encoded_dn_dst&attr=" . rawurlencode( $attr );
|
||||
|
||||
printf('<div class="add_value">(<a href="%s" title="%s">%s</a>)</div>',
|
||||
$add_href,sprintf($lang['add_value_tooltip'],$attr),$lang['add_value']);
|
||||
echo "<div class=\"add_value\">(<a href=\"$add_href\" title=\"" . sprintf( $lang['add_value_tooltip'], $attr ) . "\">" . $lang['add_value'] . "</a>)</div>\n";
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/compare_form.php,v 1.2 2005/07/22 05:47:43 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/compare_form.php,v 1.1 2005/03/12 14:03:36 wurley Exp $
|
||||
|
||||
/**
|
||||
* Compares to DN entries side by side.
|
||||
@@ -14,6 +14,9 @@
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id = (isset($_GET['server_id']) ? $_GET['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
@@ -24,7 +27,7 @@ $rdn = get_rdn( $dn );
|
||||
$container = get_container( $dn );
|
||||
|
||||
$attrs = get_object_attrs( $ldapserver, $dn );
|
||||
$select_server_html = server_select_list($ldapserver->server_id,true,'server_id_dst');
|
||||
$select_server_html = server_select_list($server_id,true,'server_id_dst');
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
@@ -42,7 +45,7 @@ include './header.php'; ?>
|
||||
<br />
|
||||
|
||||
<form action="compare.php" method="post" name="compare_form">
|
||||
<input type="hidden" name="server_id_src" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id_src" value="<?php echo $server_id; ?>" />
|
||||
|
||||
<table style="border-spacing: 10px">
|
||||
<tr>
|
432
config.php.example
Normal file
432
config.php.example
Normal file
@@ -0,0 +1,432 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* The phpLDAPadmin config file
|
||||
*
|
||||
* This is where you customize phpLDAPadmin. The most important
|
||||
* part is immediately below: The "LDAP Servers" section.
|
||||
* You must specify at least one LDAP server there. You may add
|
||||
* as many as you like. You can also specify your language, and
|
||||
* many other options.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* phpLDAPadmin can encrypt the content of sensitive cookies if you set this
|
||||
* to a big random string.
|
||||
*/
|
||||
$blowfish_secret = '';
|
||||
|
||||
// Your LDAP servers
|
||||
$i=0;
|
||||
$servers = array();
|
||||
$servers[$i]['name'] = 'My LDAP Server'; /* A convenient name that will appear in
|
||||
the tree viewer and throughout phpLDAPadmin to
|
||||
identify this LDAP server to users. */
|
||||
$servers[$i]['host'] = 'ldap.example.com'; /* Examples:
|
||||
'ldap.example.com',
|
||||
'ldaps://ldap.example.com/',
|
||||
'ldapi://%2fusr%local%2fvar%2frun%2fldapi'
|
||||
(Unix socket at /usr/local/var/run/ldap)
|
||||
Note: Leave 'host' blank to make phpLDAPadmin
|
||||
ignore this server. */
|
||||
$servers[$i]['base'] = 'dc=example,dc=com'; /* The base DN of your LDAP server. Leave this
|
||||
blank to have phpLDAPadmin auto-detect it for you. */
|
||||
$servers[$i]['port'] = 389; /* The port your LDAP server listens on
|
||||
(no quotes). 389 is standard. */
|
||||
$servers[$i]['auth_type'] = 'config'; /* Three options for auth_type:
|
||||
1. 'cookie': you will login via a web form,
|
||||
and a client-side cookie will store your
|
||||
login dn and password.
|
||||
2. 'session': same as cookie but your login dn
|
||||
and password are stored on the web server in
|
||||
a persistent session variable.
|
||||
3. 'config': specify your login dn and password
|
||||
here in this config file. No login will be
|
||||
required to use phpLDAPadmin for this server.
|
||||
Choose wisely to protect your authentication
|
||||
information appropriately for your situation. If
|
||||
you choose 'cookie', your cookie contents will be
|
||||
encrypted using blowfish and the secret your specify
|
||||
above as $blowfish_secret. */
|
||||
$servers[$i]['login_dn'] = 'cn=Manager,dc=example,dc=com';
|
||||
/* The DN of the user for phpLDAPadmin to bind with.
|
||||
For anonymous binds or 'cookie' or 'session' auth_types,
|
||||
leave the login_dn and login_pass blank. If you specify a
|
||||
login_attr in conjunction with a cookie or session auth_type,
|
||||
then you can also specify the login_dn/login_pass here for
|
||||
searching the directory for users (ie, if your LDAP server
|
||||
does not allow anonymous binds. */
|
||||
$servers[$i]['login_pass'] = 'secret'; /* Your LDAP password. If you specified an empty login_dn above, this
|
||||
MUST also be blank. */
|
||||
$servers[$i]['tls'] = false; /* Use TLS (Transport Layer Security) to connect to the LDAP
|
||||
server. */
|
||||
$servers[$i]['low_bandwidth'] = false; /* If the link between your web server and this LDAP server is
|
||||
slow, it is recommended that you set 'low_bandwidth' to true.
|
||||
This will cause phpLDAPadmin to forego some "fancy" features
|
||||
to conserve bandwidth. */
|
||||
$servers[$i]['default_hash'] = 'crypt'; /* Default password hashing algorithm.
|
||||
One of md5, ssha, sha, md5crpyt, smd5, blowfish, crypt or
|
||||
leave blank for now default algorithm. */
|
||||
$servers[$i]['login_attr'] = 'dn'; /* If you specified 'cookie' or 'session' as the auth_type above,
|
||||
you can optionally specify here an attribute
|
||||
to use when logging in. If you enter 'uid'
|
||||
and login as 'dsmith', phpLDAPadmin will
|
||||
search for (uid=dsmith) and log in as that user. Leave
|
||||
blank or specify 'dn' to use full DN for
|
||||
logging in. Note also that if your LDAP server requires
|
||||
you to login to perform searches, you can enter
|
||||
the DN to use when searching in 'login_dn' and
|
||||
'login_pass' above. You may also specify 'string', in which case
|
||||
you can provide a string to use for logging users
|
||||
in. See 'login_string' directly below. */
|
||||
$servers[$i]['login_string'] = 'uid=<username>,ou=People,dc=example,dc=com';
|
||||
/* If you specified 'cookie' or 'session' as the auth_type above,
|
||||
and you specified 'string' for 'login_attr' above, you must provide
|
||||
a string here for logging users in. If, for example, I
|
||||
I have a lot of user entries with DNs like
|
||||
"uid=dsmith,ou=People,dc=example,dc=com", then I can specify a string
|
||||
"uid=<username>,ou=People,dc=example,dc=com" and my users can login with
|
||||
their user names alone, i.e., "dsmith" in this case. */
|
||||
$servers[$i]['login_class'] = ''; /* If 'login_attr' is used above such that phpLDAPadmin will
|
||||
search for your DN at login, you may restrict the search to
|
||||
a specific objectClass. E.g., set this to 'posixAccount' or
|
||||
'inetOrgPerson', depending upon your setup. */
|
||||
$servers[$i]['read_only'] = false; /* Specify true If you want phpLDAPadmin to not
|
||||
display or permit any modification to the
|
||||
LDAP server. */
|
||||
$servers[$i]['show_create'] = true; /* Specify false if you do not want phpLDAPadmin to
|
||||
draw the 'Create new' links in the tree viewer. */
|
||||
$servers[$i]['enable_auto_uid_numbers'] = false;
|
||||
/* This feature allows phpLDAPadmin to
|
||||
automatically determine the next
|
||||
available uidNumber for a new entry. */
|
||||
$servers[$i]['auto_uid_number_mechanism'] = 'search';
|
||||
/* The mechanism to use when finding the next available uidNumber.
|
||||
Two possible values: 'uidpool' or 'search'. The 'uidpool'
|
||||
mechanism uses an existing uidPool entry in your LDAP server
|
||||
to blindly lookup the next available uidNumber. The 'search'
|
||||
mechanism searches for entries with a uidNumber value and finds
|
||||
the first available uidNumber (slower). */
|
||||
$servers[$i]['auto_uid_number_search_base'] = 'ou=People,dc=example,dc=com';
|
||||
/* The DN of the search base when the 'search'
|
||||
mechanism is used above. */
|
||||
$servers[$i]['auto_uid_number_min'] = 1000;
|
||||
/* The minimum number to use when searching for the next
|
||||
available UID number (only when 'search' is used for
|
||||
auto_uid_number_mechanism' */
|
||||
$servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com';
|
||||
/* The DN of the uidPool entry when 'uidpool'
|
||||
mechanism is used above. */
|
||||
$servers[$i]['auto_uid_number_search_dn'] = '';
|
||||
/* If you set this, then phpldapadmin will bind to LDAP with this user
|
||||
ID when searching for the uidnumber. The idea is, this user id would
|
||||
have full (readonly) access to uidnumber in your ldap directory (the
|
||||
logged in user may not), so that you can be guaranteed to get a unique
|
||||
uidnumber for your directory. */
|
||||
$servers[$i]['auto_uid_number_search_dn_pass'] = '';
|
||||
/* The password for the dn above. */
|
||||
$servers[$i]['disable_anon_bind'] = false;
|
||||
/* Disable the anonymous login. */
|
||||
$servers[$i]['custom_pages_prefix'] = 'custom_';
|
||||
/* Use customized page with prefix when available. */
|
||||
|
||||
$servers[$i]['unique_attrs_dn'] = '';
|
||||
/* If you set this, then phpldapadmin will bind to LDAP with this user
|
||||
when testing for unique attributes (as set in unique_attrs array). If you
|
||||
want to enforce unique attributes, than this id should have full (readonly)
|
||||
access to the attributes in question (the logged in user may not have
|
||||
enough access) */
|
||||
$servers[$i]['unique_attrs_dn_pass'] = '';
|
||||
/* The password for the dn above */
|
||||
|
||||
// $servers[$i]['only_login_allowed_dns'] = array( 'uid=stran,ou=People,dc=example,dc=com',
|
||||
// '(&(gidNumber=811)(objectClass=groupOfNames))',
|
||||
// '(|(uidNumber=200)(uidNumber=201))',
|
||||
// 'cn=callcenter,ou=Group,dc=example,dc=com' );
|
||||
/* If you set this, then only these DNs are allowed to log in.
|
||||
This array can contain individual users, groups or ldap search filter(s).
|
||||
Keep in mind that the user has not authenticated yet, so this will be an
|
||||
anonymous search to the LDAP server, so make your ACLs allow these searches
|
||||
to return results! */
|
||||
// $servers[$i]['visible'] = false;
|
||||
/* Set this if you dont want this LDAP server to show in the tree */
|
||||
// $servers[$i]['session_timeout'] = 5;
|
||||
/* This is the time out value in minutes for the server.
|
||||
After as many minutes of inactivity you will be automatically logged out.
|
||||
If not set, the default value will be ( session_cache_expire()-1 ) */
|
||||
|
||||
// If you want to configure additional LDAP servers, do so below.
|
||||
$i++;
|
||||
$servers[$i]['name'] = 'Another server';
|
||||
$servers[$i]['host'] = '';
|
||||
$servers[$i]['base'] = 'dc=example,dc=com';
|
||||
$servers[$i]['port'] = 389;
|
||||
$servers[$i]['auth_type'] = 'config';
|
||||
$servers[$i]['login_dn'] = '';
|
||||
$servers[$i]['login_pass'] = '';
|
||||
$servers[$i]['tls'] = false;
|
||||
$servers[$i]['low_bandwidth'] = false;
|
||||
$servers[$i]['default_hash'] = 'crypt';
|
||||
$servers[$i]['login_attr'] = 'dn';
|
||||
$servers[$i]['login_class'] = '';
|
||||
$servers[$i]['read_only'] = false;
|
||||
$servers[$i]['show_create'] = true;
|
||||
$servers[$i]['enable_auto_uid_numbers'] = false;
|
||||
$servers[$i]['auto_uid_number_mechanism'] = 'search';
|
||||
$servers[$i]['auto_uid_number_search_base'] = 'ou=People,dc=example,dc=com';
|
||||
$servers[$i]['auto_uid_number_min'] = 1000;
|
||||
$servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com';
|
||||
$servers[$i]['unique_attrs_dn'] = '';
|
||||
$servers[$i]['unique_attrs_dn_pass'] = '';
|
||||
|
||||
// If you want to configure more LDAP servers, copy and paste the above (including the "$i++;")
|
||||
|
||||
// The temporary storage directory where we will put jpegPhoto data
|
||||
// This directory must be readable and writable by your web server
|
||||
$jpeg_temp_dir = "/tmp"; // Example for Unix systems
|
||||
//$jpeg_temp_dir = "c:\\temp"; // Example for Windows systems
|
||||
|
||||
/** **/
|
||||
/** Appearance and Behavior **/
|
||||
/** **/
|
||||
|
||||
// Whenever we display a date use this format.
|
||||
$date_format = "%A %e %B %Y";
|
||||
|
||||
// Set this to true if you want to hide the Request New Feature and Report bugs.
|
||||
$hide_configuration_management = false;
|
||||
|
||||
|
||||
// A format string used to display enties in the tree viewer (left-hand side)
|
||||
// You can use special tokens to draw the entries as you wish. You can even mix in HTML to format the string
|
||||
// Here are all the tokens you can use:
|
||||
// %rdn - draw the RDN of the entry (ie, "cn=Dave")
|
||||
// %dn - draw the DN of the entry (ie, "cn=Dave,ou=People,dc=example,dc=com"
|
||||
// %rdnValue - draw the value of the RDN (ie, instead of "cn=Dave", just draw "Dave")
|
||||
// %[attrname]- draw the value (or values) of the specified attribute.
|
||||
// examle: %gidNumber
|
||||
$tree_display_format = '%rdn';
|
||||
//
|
||||
// Examples:
|
||||
//
|
||||
// To draw the gidNumber and uidNumber to the right of the RDN in a small, gray font:
|
||||
//$tree_display_format = '%rdn <small style="color:gray">( %gidNumber / %uidNumber )</span>';
|
||||
// To draw the full DN of each entry:
|
||||
//$tree_display_format = '%dn';
|
||||
// To draw the objectClasses to the right in parenthesis:
|
||||
//$tree_display_format = '%rdn <small style="color: gray">( %objectClass )</small>';
|
||||
// To draw the user-friendly RDN value (ie, instead of "cn=Dave", just draw "Dave"):
|
||||
//$tree_display_format = '%rdnValue';
|
||||
|
||||
|
||||
// Aliases and Referrrals
|
||||
//
|
||||
// Similar to ldapsearh's -a option, the following options allow you to configure
|
||||
// how phpLDAPadmin will treat aliases and referrals in the LDAP tree.
|
||||
// For the following four settings, avaialable options include:
|
||||
//
|
||||
// LDAP_DEREF_NEVER - aliases are never dereferenced (eg, the contents of
|
||||
// the alias itself are shown and not the referenced entry).
|
||||
// LDAP_DEREF_SEARCHING - aliases should be dereferenced during the search but
|
||||
// not when locating the base object of the search.
|
||||
// LDAP_DEREF_FINDING - aliases should be dereferenced when locating the base
|
||||
// object but not during the search.
|
||||
// LDAP_DEREF_ALWAYS - aliases should be dereferenced always (eg, the contents
|
||||
// of the referenced entry is shown and not the aliasing entry)
|
||||
|
||||
// How to handle references and aliases in the search form. See above for options.
|
||||
$search_deref = LDAP_DEREF_ALWAYS;
|
||||
|
||||
// How to handle references and aliases in the tree viewer. See above for options.
|
||||
$tree_deref = LDAP_DEREF_NEVER;
|
||||
|
||||
// How to handle references and aliases for exports. See above for options.
|
||||
$export_deref = LDAP_DEREF_NEVER;
|
||||
|
||||
// How to handle references and aliases when viewing entries. See above for options.
|
||||
$view_deref = LDAP_DEREF_NEVER;
|
||||
|
||||
|
||||
// The language setting. If you set this to 'auto', phpLDAPadmin will
|
||||
// attempt to determine your language automatically. Otherwise, available
|
||||
// lanaguages are: 'ct', 'de', 'en', 'es', 'fr', 'it', 'nl', and 'ru'
|
||||
// Localization is not complete yet, but most strings have been translated.
|
||||
// Please help by writing language files. See lang/en.php for an example.
|
||||
$language = 'auto';
|
||||
|
||||
// Set to true if you want to draw a checkbox next to each entry in the tree viewer
|
||||
// to be able to delete multiple entries at once
|
||||
$enable_mass_delete = false;
|
||||
|
||||
// Set to true if you want LDAP data to be displayed read-only (without input fields)
|
||||
// when a user logs in to a server anonymously
|
||||
$anonymous_bind_implies_read_only = true;
|
||||
|
||||
// Set to true if you want phpLDAPadmin to redirect anonymous
|
||||
// users to a search form with no tree viewer on the left after
|
||||
// logging in.
|
||||
$anonymous_bind_redirect_no_tree = false;
|
||||
|
||||
// If you used auth_type 'form' in the servers list, you can adjust how long the cookie will last
|
||||
// (default is 0 seconds, which expires when you close the browser)
|
||||
$cookie_time = 0; // seconds
|
||||
|
||||
// How many pixels wide do you want your left frame view (for the tree browser)
|
||||
$tree_width = 320; // pixels
|
||||
|
||||
// How long to keep jpegPhoto temporary files in the jpeg_temp_dir directory (in seconds)
|
||||
$jpeg_tmp_keep_time = 120; // seconds
|
||||
|
||||
// Would you like to see helpful hint text occacsionally?
|
||||
$show_hints = true; // set to false to disable hints
|
||||
|
||||
// When using the search page, limit result size to this many entries
|
||||
$search_result_size_limit = 50;
|
||||
|
||||
// By default, when searching you may display a list or a table of results.
|
||||
// Set this to 'table' to see table formatted results.
|
||||
// Set this to 'list' to see "Google" style formatted search results.
|
||||
$default_search_display = 'list';
|
||||
|
||||
// If true, display all password hash values as "******". Note that clear-text
|
||||
// passwords will always be displayed as "******", regardless of this setting.
|
||||
$obfuscate_password_display = false;
|
||||
|
||||
/** **/
|
||||
/** Simple Search Form Config **/
|
||||
/** **/
|
||||
|
||||
// Which attributes to include in the drop-down menu of the simple search form (comma-separated)
|
||||
// Change this to suit your needs for convenient searching. Be sure to change the corresponding
|
||||
// list below ($search_attributes_display)
|
||||
$search_attributes = "uid, cn, gidNumber, objectClass, telephoneNumber, mail, street";
|
||||
|
||||
// This list corresponds to the list directly above. If you want to present more readable names
|
||||
// for your search attributes, do so here. Both lists must have the same number of entries.
|
||||
$search_attributes_display = "User Name, Common Name, Group ID, Object Class, Phone Number, Email, Address";
|
||||
|
||||
// The list of attributes to display in each search result entry.
|
||||
// Note that you can add * to the list to display all attributes
|
||||
$search_result_attributes = "cn, sn, uid, postalAddress, telephoneNumber";
|
||||
|
||||
// You can re-arrange the order of the search criteria on the simple search form by modifying this array
|
||||
// You cannot however change the names of the criteria. Criteria names will be translated at run-time.
|
||||
$search_criteria_options = array( "equals", "starts with", "contains", "ends with", "sounds like" );
|
||||
|
||||
// If you want certain attributes to be editable as multi-line, include them in this list
|
||||
// A multi-line textarea will be drawn instead of a single-line text field
|
||||
$multi_line_attributes = array( "postalAddress", "homePostalAddress", "personalSignature" );
|
||||
|
||||
// A list of syntax OIDs which support multi-line attribute values:
|
||||
$multi_line_syntax_oids = array(
|
||||
// octet string syntax OID:
|
||||
"1.3.6.1.4.1.1466.115.121.1.40",
|
||||
// postal address syntax OID:
|
||||
"1.3.6.1.4.1.1466.115.121.1.41" );
|
||||
|
||||
/** **/
|
||||
/** User-friendly attribute translation **/
|
||||
/** **/
|
||||
|
||||
$friendly_attrs = array();
|
||||
|
||||
// Use this array to map attribute names to user friendly names. For example, if you
|
||||
// don't want to see "facsimileTelephoneNumber" but rather "Fax".
|
||||
|
||||
$friendly_attrs[ 'facsimileTelephoneNumber' ] = 'Fax';
|
||||
$friendly_attrs[ 'telephoneNumber' ] = 'Phone';
|
||||
|
||||
/** **/
|
||||
/** support for attrs display order **/
|
||||
/** **/
|
||||
|
||||
// Use this array if you want to have your attributes displayed in a specific order.
|
||||
// You can use default attribute names or their fridenly names.
|
||||
// For example, "sn" will be displayed right after "givenName". All the other attributes
|
||||
// that are not specified in this array will be displayed after in alphabetical order.
|
||||
|
||||
// $attrs_display_order = array(
|
||||
// "givenName",
|
||||
// "sn",
|
||||
// "cn",
|
||||
// "displayName",
|
||||
// "uid",
|
||||
// "uidNumber",
|
||||
// "gidNumber",
|
||||
// "homeDirectory",
|
||||
// "mail",
|
||||
// "userPassword"
|
||||
// );
|
||||
|
||||
/** **/
|
||||
/** Hidden attributes **/
|
||||
/** **/
|
||||
|
||||
// You may want to hide certain attributes from being displayed in the editor screen
|
||||
// Do this by adding the desired attributes to this list (and uncomment it). This
|
||||
// only affects the editor screen. Attributes will still be visible in the schema
|
||||
// browser and elsewhere. An example is provided below:
|
||||
// NOTE: The user must be able to read the hidden_except_dn entry to be excluded.
|
||||
|
||||
//$hidden_attrs = array( 'jpegPhoto', 'objectClass' );
|
||||
//$hidden_except_dn = "cn=PLA UnHide,ou=Groups,c=AU";
|
||||
|
||||
// Hidden attributes in read-only mode. If undefined, it will be equal to $hidden_attrs.
|
||||
//$hidden_attrs_ro = array( 'objectClass','shadowWarning', 'shadowLastChange', 'shadowMax',
|
||||
// 'shadowFlag', 'shadowInactive', 'shadowMin', 'shadowExpire' );
|
||||
|
||||
/** **/
|
||||
/** Read-only attributes **/
|
||||
/** **/
|
||||
|
||||
// You may want to phpLDAPadmin to display certain attributes as read only, meaning
|
||||
// that users will not be presented a form for modifying those attributes, and they
|
||||
// will not be allowed to be modified on the "back-end" either. You may configure
|
||||
// this list here:
|
||||
// NOTE: The user must be able to read the read_only_except_dn entry to be excluded.
|
||||
|
||||
//$read_only_attrs = array( 'objectClass' );
|
||||
//$read_only_except_dn = "cn=PLA ReadWrite,ou=Groups,c=AU";
|
||||
|
||||
// An example of how to specify multiple read-only attributes:
|
||||
// $read_only_attrs = array( 'jpegPhoto', 'objectClass', 'someAttribute' );
|
||||
|
||||
/** **/
|
||||
/** Unique attributes **/
|
||||
/** **/
|
||||
// You may want phpLDAPadmin to enforce some attributes to have unique values (ie:
|
||||
// not belong to other entries in your tree. This (together with "unique_attrs_dn"
|
||||
// and "unique_attrs_dn_pass" option will not let updates to occur with other attributes
|
||||
// have the same value.
|
||||
// NOTE: Currently the unique_attrs is NOT enforced when copying a dn. (Need to present a user with
|
||||
// the option of changing the unique attributes.
|
||||
//$unique_attrs = array('uid','uidNumber','mail');
|
||||
|
||||
/** **/
|
||||
/** Predefined Queries (canned views) **/
|
||||
/** **/
|
||||
|
||||
// To make searching easier, you may setup predefined queries below (activate the lines by removing "//")
|
||||
$q=0;
|
||||
$queries = array();
|
||||
$queries[$q]['name'] = 'Samba Users'; /* The name that will appear in the simple search form */
|
||||
$queries[$q]['server'] = '0'; /* The ldap server to query, must be defined in the $servers list above */
|
||||
$queries[$q]['base'] = 'dc=example,dc=com'; /* The base to search on */
|
||||
$queries[$q]['scope'] = 'sub'; /* The search scope (sub, base, one) */
|
||||
$queries[$q]['filter'] = '(&(|(objectClass=sambaAccount)(objectClass=sambaSamAccount))(objectClass=posixAccount)(!(uid=*$)))';
|
||||
/* The LDAP filter to use */
|
||||
$queries[$q]['attributes'] = 'uid, smbHome, uidNumber';
|
||||
/* The attributes to return */
|
||||
|
||||
// Add more pre-defined queries by copying the text below
|
||||
$q++;
|
||||
$queries[$q]['name'] = 'Samba Computers';
|
||||
$queries[$q]['server'] = '0';
|
||||
$queries[$q]['base'] = 'dc=example,dc=com';
|
||||
$queries[$q]['scope'] = 'sub';
|
||||
$queries[$q]['filter'] = '(&(objectClass=sambaAccount)(uid=*$))';
|
||||
$queries[$q]['attributes'] = 'uid, homeDirectory';
|
||||
|
||||
|
||||
?>
|
@@ -1,354 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The phpLDAPadmin config file
|
||||
*
|
||||
* This is where you can customise some of the phpLDAPadmin defaults
|
||||
* that are defined in config_default.php.
|
||||
*
|
||||
* To override a default, use the $config->custom variable to do so.
|
||||
* For example, the default for defining the language in config_default.php
|
||||
*
|
||||
* $this->default->appearance['lang'] = array(
|
||||
* 'desc'=>'Language',
|
||||
* 'default'=>'auto');
|
||||
*
|
||||
* to override this, use $config->custom->appearance['lang'] = 'en';
|
||||
*
|
||||
* This file is also used to configure your LDAP server connections.
|
||||
*
|
||||
* You must specify at least one LDAP server there. You may add
|
||||
* as many as you like. You can also specify your language, and
|
||||
* many other options.
|
||||
*/
|
||||
|
||||
/** **/
|
||||
/** Miscellaneous Configuration overrides **/
|
||||
/** **/
|
||||
|
||||
/* If you are asked to put pla in debug mode, this is how you do it: */
|
||||
// $config->custom->debug['level'] = 2;
|
||||
// $config->custom->debug['syslog'] = true;
|
||||
|
||||
/* phpLDAPadmin can encrypt the content of sensitive cookies if you set this
|
||||
to a big random string. */
|
||||
$config->custom->session['blowfish'] = '';
|
||||
|
||||
/* The language setting. If you set this to 'auto', phpLDAPadmin will
|
||||
attempt to determine your language automatically. Otherwise, available
|
||||
lanaguages are: 'ct', 'de', 'en', 'es', 'fr', 'it', 'nl', and 'ru'
|
||||
Localization is not complete yet, but most strings have been translated.
|
||||
Please help by writing language files. See lang/en.php for an example. */
|
||||
// $config->custom->appearance['language'] = 'auto';
|
||||
|
||||
/* The temporary storage directory where we will put jpegPhoto data
|
||||
This directory must be readable and writable by your web server. */
|
||||
// $config->custom->jpeg['tmpdir'] = "c:\\temp"; // Example for Windows systems
|
||||
$config->custom->jpeg['tmpdir'] = "/tmp"; // Example for Unix systems
|
||||
|
||||
/** **/
|
||||
/** Your LDAP servers **/
|
||||
/** **/
|
||||
|
||||
$i=0;
|
||||
$ldapservers = new LDAPServers;
|
||||
|
||||
/* A convenient name that will appear in the tree viewer and throughout phpLDAPadmin to
|
||||
identify this LDAP server to users. */
|
||||
$ldapservers->SetValue($i,'server','name','My LDAP Server');
|
||||
|
||||
/* Examples:
|
||||
'ldap.example.com',
|
||||
'ldaps://ldap.example.com/',
|
||||
'ldapi://%2fusr%local%2fvar%2frun%2fldapi' (Unix socket at /usr/local/var/run/ldap) */
|
||||
// $ldapservers->SetValue($i,'server','host','127.0.0.1');
|
||||
|
||||
/* The port your LDAP server listens on (no quotes). 389 is standard. */
|
||||
// $ldapservers->SetValue($i,'server','port','389');
|
||||
|
||||
/* Array of base DNs of your LDAP server. Leave this blank to have phpLDAPadmin auto-detect it for you. */
|
||||
// $ldapservers->SetValue($i,'server','base',array(''));
|
||||
|
||||
/* Three options for auth_type:
|
||||
1. 'cookie': you will login via a web form, and a client-side cookie will store your
|
||||
login dn and password.
|
||||
2. 'session': same as cookie but your login dn and password are stored on the web server in
|
||||
a persistent session variable.
|
||||
3. 'config': specify your login dn and password here in this config file. No login will be
|
||||
required to use phpLDAPadmin for this server.
|
||||
|
||||
Choose wisely to protect your authentication information appropriately for your situation. If
|
||||
you choose 'cookie', your cookie contents will be encrypted using blowfish and the secret your specify
|
||||
above as session['blowfish']. */
|
||||
// $ldapservers->SetValue($i,'server','auth_type','cookie');
|
||||
|
||||
/* The DN of the user for phpLDAPadmin to bind with. For anonymous binds or 'cookie' or 'session' auth_types,
|
||||
leave the login_dn and login_pass blank. If you specify a login_attr in conjunction with a cookie or
|
||||
session auth_type, then you can also specify the login_dn/login_pass here for searching the directory for
|
||||
users (ie, if your LDAP server does not allow anonymous binds. */
|
||||
// $ldapservers->SetValue($i,'login','dn','cn=Manager,dc=example,dc=com');
|
||||
|
||||
/* Your LDAP password. If you specified an empty login_dn above, this MUST also be blank. */
|
||||
// $ldapservers->SetValue($i,'login','pass','secret');
|
||||
|
||||
/* Use TLS (Transport Layer Security) to connect to the LDAP server. */
|
||||
// $ldapservers->SetValue($i,'server','tls',false);
|
||||
|
||||
/* If the link between your web server and this LDAP server is slow, it is recommended that you set
|
||||
'low_bandwidth' to true. This will cause phpLDAPadmin to forego some "fancy" features to conserve bandwidth. */
|
||||
// $ldapservers->SetValue($i,'server','low_bandwidth',false);
|
||||
|
||||
/* Default password hashing algorithm. One of md5, ssha, sha, md5crpyt, smd5, blowfish, crypt or
|
||||
leave blank for now default algorithm. */
|
||||
// $ldapservers->SetValue($i,'appearance','password_hash','md5');
|
||||
|
||||
/* If you specified 'cookie' or 'session' as the auth_type above, you can optionally specify here an attribute
|
||||
to use when logging in. If you enter 'uid' and login as 'dsmith', phpLDAPadmin will search for (uid=dsmith)
|
||||
and log in as that user. Leave blank or specify 'dn' to use full DN for logging in. Note also that if your
|
||||
LDAP server requires you to login to perform searches, you can enter the DN to use when searching in 'login_dn'
|
||||
and 'login_pass' above. You may also specify 'string', in which case you can provide a string to use for
|
||||
logging users in. See 'login_string' directly below. */
|
||||
// $ldapservers->SetValue($i,'login','attr','uid');
|
||||
|
||||
/* If you specified 'cookie' or 'session' as the auth_type above, and you specified 'string' for 'login_attr'
|
||||
above, you must provide a string here for logging users in. If, for example, I have a lot of user entries with
|
||||
DNs like "uid=dsmith,ou=People,dc=example,dc=com", then I can specify a string
|
||||
"uid=<username>,ou=People,dc=example,dc=com" and my users can login with their user names alone, ie: "dsmith"
|
||||
in this case. */
|
||||
// $ldapservers->SetValue($i,'login','string','uid=<username>,ou=People,dc=example,dc=com');
|
||||
|
||||
/* If 'login_attr' is used above such that phpLDAPadmin will search for your DN at login, you may restrict the
|
||||
search to a specific objectClass. E.g., set this to 'posixAccount' or 'inetOrgPerson', depending upon your setup. */
|
||||
// $ldapservers->SetValue($i,'login','class','');
|
||||
|
||||
/* Specify true If you want phpLDAPadmin to not display or permit any modification to the LDAP server. */
|
||||
// $ldapservers->SetValue($i,'server','read_only',false);
|
||||
|
||||
/* Specify false if you do not want phpLDAPadmin to draw the 'Create new' links in the tree viewer. */
|
||||
// $ldapservers->SetValue($i,'appearance','show_create',true);
|
||||
|
||||
/* This feature allows phpLDAPadmin to automatically determine the next available uidNumber for a new entry. */
|
||||
// $ldapservers->SetValue($i,'auto_number','enable',true);
|
||||
|
||||
/* The mechanism to use when finding the next available uidNumber. Two possible values: 'uidpool' or 'search'.
|
||||
The 'uidpool' mechanism uses an existing uidPool entry in your LDAP server to blindly lookup the next available
|
||||
uidNumber. The 'search' mechanism searches for entries with a uidNumber value and finds the first available
|
||||
uidNumber (slower). */
|
||||
// $ldapservers->SetValue($i,'auto_number','mechanism','search');
|
||||
|
||||
/* The DN of the search base when the 'search' mechanism is used above. */
|
||||
// $ldapservers->SetValue($i,'auto_number','search_base','ou=People,dc=example,dc=com');
|
||||
|
||||
/* The minimum number to use when searching for the next available UID number (only when 'search' is used for
|
||||
auto_uid_number_mechanism' */
|
||||
// $ldapservers->SetValue($i,'auto_number','min','1000');
|
||||
|
||||
/* The DN of the uidPool entry when 'uidpool' mechanism is used above. */
|
||||
// $servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com';
|
||||
|
||||
/* If you set this, then phpldapadmin will bind to LDAP with this user ID when searching for the uidnumber. The
|
||||
idea is, this user id would have full (readonly) access to uidnumber in your ldap directory (the logged in user
|
||||
may not), so that you can be guaranteed to get a unique uidnumber for your directory. */
|
||||
// $ldapservers->SetValue($i,'auto_number','dn','');
|
||||
|
||||
/* The password for the dn above. */
|
||||
// $ldapservers->SetValue($i,'auto_number','pass','');
|
||||
|
||||
/* Disable the anonymous login. */
|
||||
// $ldapservers->SetValue($i,'login','anon_bind',true);
|
||||
|
||||
/* Use customized page with prefix when available. */
|
||||
// $ldapservers->SetValue($i,'custom','pages_prefix','custom_');
|
||||
|
||||
/* If you set this, then phpldapadmin will bind to LDAP with this user when testing for unique attributes (as set
|
||||
in unique_attrs array). If you want to enforce unique attributes, than this id should have full (readonly) access
|
||||
to the attributes in question (the logged in user may not have enough access) */
|
||||
// $ldapservers->SetValue($i,'unique_attrs','dn','');
|
||||
|
||||
/* The password for the dn above */
|
||||
// $ldapservers->SetValue($i,'unique_attrs','pass','');
|
||||
|
||||
/* If you set this, then only these DNs are allowed to log in. This array can contain individual users, groups or
|
||||
ldap search filter(s). Keep in mind that the user has not authenticated yet, so this will be an anonymous search
|
||||
to the LDAP server, so make your ACLs allow these searches to return results! */
|
||||
// $ldapservers->SetValue($i,'login','allowed_dns',array(
|
||||
// 'uid=stran,ou=People,dc=example,dc=com',
|
||||
// '(&(gidNumber=811)(objectClass=groupOfNames))',
|
||||
// '(|(uidNumber=200)(uidNumber=201))',
|
||||
// 'cn=callcenter,ou=Group,dc=example,dc=com'));
|
||||
|
||||
/* Set this if you dont want this LDAP server to show in the tree */
|
||||
// $ldapservers->SetValue($i,'appearance','visible',true);
|
||||
|
||||
/* This is the time out value in minutes for the server. After as many minutes of inactivity you will be
|
||||
automatically logged out. If not set, the default value will be ( session_cache_expire()-1 ) */
|
||||
// $ldapservers->SetValue($i,'login','timeout',30);
|
||||
|
||||
/* Set this if you want phpldapadmin to perform rename operation on entry which has children. Certain servers are known
|
||||
to allow it, certain are not */
|
||||
// $ldapservers->SetValue($i,'server','branch_rename',false);
|
||||
|
||||
/* If you want to configure additional LDAP servers, do so below. */
|
||||
|
||||
$i++;
|
||||
$ldapservers->SetValue($i,'server','name','LDAP Server');
|
||||
$ldapservers->SetValue($i,'server','host','127.0.0.1');
|
||||
$ldapservers->SetValue($i,'server','port','389');
|
||||
$ldapservers->SetValue($i,'server','base',array(''));
|
||||
$ldapservers->SetValue($i,'server','auth_type','cookie');
|
||||
$ldapservers->SetValue($i,'login','dn','');
|
||||
$ldapservers->SetValue($i,'login','pass','');
|
||||
$ldapservers->SetValue($i,'server','tls',false);
|
||||
$ldapservers->SetValue($i,'server','low_bandwidth',false);
|
||||
$ldapservers->SetValue($i,'appearance','password_hash','md5');
|
||||
$ldapservers->SetValue($i,'login','attr','uid');
|
||||
$ldapservers->SetValue($i,'login','string','');
|
||||
$ldapservers->SetValue($i,'login','class','');
|
||||
$ldapservers->SetValue($i,'server','read_only',false);
|
||||
$ldapservers->SetValue($i,'appearance','show_create',true);
|
||||
$ldapservers->SetValue($i,'auto_number','enable',true);
|
||||
$ldapservers->SetValue($i,'auto_number','mechanism','search');
|
||||
$ldapservers->SetValue($i,'auto_number','search_base','');
|
||||
$ldapservers->SetValue($i,'auto_number','min','1000');
|
||||
$ldapservers->SetValue($i,'auto_number','dn','');
|
||||
$ldapservers->SetValue($i,'auto_number','pass','');
|
||||
$ldapservers->SetValue($i,'login','anon_bind',true);
|
||||
$ldapservers->SetValue($i,'custom','pages_prefix','custom_');
|
||||
$ldapservers->SetValue($i,'unique_attrs','dn','');
|
||||
$ldapservers->SetValue($i,'unique_attrs','pass','');
|
||||
$ldapservers->SetValue($i,'appearance','visible',false);
|
||||
|
||||
/* If you want to configure more LDAP servers, copy and paste the above (including the "$i++;")
|
||||
Dont forget to change 'visible' to true! */
|
||||
|
||||
/** **/
|
||||
/** User-friendly attribute translation **/
|
||||
/** **/
|
||||
|
||||
/* Use this array to map attribute names to user friendly names. For example, if you
|
||||
don't want to see "facsimileTelephoneNumber" but rather "Fax". */
|
||||
|
||||
$friendly_attrs = array();
|
||||
|
||||
$friendly_attrs[ 'facsimileTelephoneNumber' ] = 'Fax';
|
||||
$friendly_attrs[ 'telephoneNumber' ] = 'Phone';
|
||||
|
||||
/** **/
|
||||
/** Support for attrs display order **/
|
||||
/** **/
|
||||
|
||||
/* Use this array if you want to have your attributes displayed in a specific order.
|
||||
You can use default attribute names or their fridenly names.
|
||||
For example, "sn" will be displayed right after "givenName". All the other attributes
|
||||
that are not specified in this array will be displayed after in alphabetical order. */
|
||||
|
||||
// $attrs_display_order = array(
|
||||
// "givenName",
|
||||
// "sn",
|
||||
// "cn",
|
||||
// "displayName",
|
||||
// "uid",
|
||||
// "uidNumber",
|
||||
// "gidNumber",
|
||||
// "homeDirectory",
|
||||
// "mail",
|
||||
// "userPassword"
|
||||
// );
|
||||
|
||||
/** **/
|
||||
/** Hidden attributes **/
|
||||
/** **/
|
||||
|
||||
/* You may want to hide certain attributes from being displayed in the editor screen
|
||||
Do this by adding the desired attributes to this list (and uncomment it). This
|
||||
only affects the editor screen. Attributes will still be visible in the schema
|
||||
browser and elsewhere. An example is provided below:
|
||||
NOTE: The user must be able to read the hidden_except_dn entry to be excluded. */
|
||||
|
||||
//$hidden_attrs = array( 'jpegPhoto', 'objectClass' );
|
||||
//$hidden_except_dn = "cn=PLA UnHide,ou=Groups,c=AU";
|
||||
|
||||
/* Hidden attributes in read-only mode. If undefined, it will be equal to $hidden_attrs. */
|
||||
// $hidden_attrs_ro = array( 'objectClass','shadowWarning', 'shadowLastChange', 'shadowMax',
|
||||
// 'shadowFlag', 'shadowInactive', 'shadowMin', 'shadowExpire');
|
||||
|
||||
/** **/
|
||||
/** Read-only attributes **/
|
||||
/** **/
|
||||
|
||||
/* You may want to phpLDAPadmin to display certain attributes as read only, meaning
|
||||
that users will not be presented a form for modifying those attributes, and they
|
||||
will not be allowed to be modified on the "back-end" either. You may configure
|
||||
this list here:
|
||||
NOTE: The user must be able to read the read_only_except_dn entry to be excluded. */
|
||||
|
||||
//$read_only_attrs = array( 'objectClass' );
|
||||
//$read_only_except_dn = "cn=PLA ReadWrite,ou=Groups,c=AU";
|
||||
|
||||
/* An example of how to specify multiple read-only attributes: */
|
||||
// $read_only_attrs = array( 'jpegPhoto', 'objectClass', 'someAttribute' );
|
||||
|
||||
/** **/
|
||||
/** Unique attributes **/
|
||||
/** **/
|
||||
|
||||
/* You may want phpLDAPadmin to enforce some attributes to have unique values (ie:
|
||||
not belong to other entries in your tree. This (together with "unique_attrs_dn"
|
||||
and "unique_attrs_dn_pass" option will not let updates to occur with other attributes
|
||||
have the same value.
|
||||
NOTE: Currently the unique_attrs is NOT enforced when copying a dn. (Need to present a user with
|
||||
the option of changing the unique attributes. */
|
||||
//$unique_attrs = array('uid','uidNumber','mail');
|
||||
|
||||
/** **/
|
||||
/** Predefined Queries (canned views) **/
|
||||
/** **/
|
||||
|
||||
/* To make searching easier, you may setup predefined queries below: */
|
||||
$q=0;
|
||||
$queries = array();
|
||||
|
||||
/* The name that will appear in the simple search form */
|
||||
$queries[$q]['name'] = 'User List';
|
||||
|
||||
/* The base to search on */
|
||||
$queries[$q]['base'] = 'dc=example,dc=com';
|
||||
|
||||
/* The search scope (sub, base, one) */
|
||||
$queries[$q]['scope'] = 'sub';
|
||||
|
||||
/* The LDAP filter to use */
|
||||
$queries[$q]['filter'] = '(&(objectClass=posixAccount)(uid=*))';
|
||||
|
||||
/* The attributes to return */
|
||||
$queries[$q]['attributes'] = 'cn, uid, homeDirectory';
|
||||
|
||||
/* If you want to configure more pre-defined queries, copy and paste the above (including the "$q++;") */
|
||||
$q++;
|
||||
$queries[$q]['name'] = 'Samba Users';
|
||||
$queries[$q]['base'] = 'dc=example,dc=com';
|
||||
$queries[$q]['scope'] = 'sub';
|
||||
$queries[$q]['filter'] = '(&(|(objectClass=sambaAccount)(objectClass=sambaSamAccount))(objectClass=posixAccount)(!(uid=*$)))';
|
||||
$queries[$q]['attributes'] = 'uid, smbHome, uidNumber';
|
||||
|
||||
$q++;
|
||||
$queries[$q]['name'] = 'Samba Computers';
|
||||
$queries[$q]['base'] = 'dc=example,dc=com';
|
||||
$queries[$q]['scope'] = 'sub';
|
||||
$queries[$q]['filter'] = '(&(objectClass=sambaAccount)(uid=*$))';
|
||||
$queries[$q]['attributes'] = 'uid, homeDirectory';
|
||||
|
||||
/** **/
|
||||
/** Date type attributes **/
|
||||
/** **/
|
||||
/* If you wish to use the jscalendar popup to select a date graphically,
|
||||
define this array of date type attributes.
|
||||
Modify the file htdocs/js/date_selector.js to set up the calendar format.
|
||||
The default format is:
|
||||
ifFormat : '%m/%e/%Y', // format of the input field
|
||||
showsTime : false, // will display a time selector
|
||||
singleClick : false, // double-click mode
|
||||
align : 'BR', // alignement
|
||||
step : 0 // show all years in drop-down boxes
|
||||
*/
|
||||
?>
|
207
copy.php
Normal file
207
copy.php
Normal file
@@ -0,0 +1,207 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/copy.php,v 1.31 2005/03/14 11:46:24 wurley Exp $
|
||||
|
||||
/**
|
||||
* Copies a given object to create a new one.
|
||||
*
|
||||
* Vars that come in as POST vars
|
||||
* - source_dn (rawurlencoded)
|
||||
* - new_dn (form element)
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require realpath( 'common.php' );
|
||||
|
||||
$source_server_id = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$dest_server_id = (isset($_POST['dest_server_id']) ? $_POST['dest_server_id'] : '');
|
||||
|
||||
$ldapserver_source = new LDAPServer($source_server_id);
|
||||
$ldapserver_dest = new LDAPServer($dest_server_id);
|
||||
|
||||
if( $ldapserver_dest->isReadOnly() )
|
||||
pla_error( $lang['copy_server_read_only'] );
|
||||
|
||||
if( ! $ldapserver_source->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
if( ! $ldapserver_dest->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$source_dn = $_POST['old_dn'];
|
||||
$dest_dn = $_POST['new_dn'];
|
||||
$do_recursive = ( isset( $_POST['recursive'] ) && $_POST['recursive'] == 'on' ) ? true : false;
|
||||
$remove = ( isset( $_POST['remove'] ) && $_POST['remove'] == 'yes' ) ? true : false;
|
||||
$encoded_dn = rawurlencode( $source_dn );
|
||||
|
||||
include './header.php';
|
||||
|
||||
/* Error checking */
|
||||
if( 0 == strlen( trim( $dest_dn ) ) )
|
||||
pla_error( $lang['copy_dest_dn_blank'] );
|
||||
|
||||
if( pla_compare_dns( $source_dn,$dest_dn ) == 0 && $source_server_id == $dest_server_id )
|
||||
pla_error( $lang['copy_source_dest_dn_same'] );
|
||||
|
||||
if( dn_exists( $ldapserver_dest, $dest_dn ) )
|
||||
pla_error( sprintf( $lang['copy_dest_already_exists'], pretty_print_dn( $dest_dn ) ) );
|
||||
|
||||
if( ! dn_exists( $ldapserver_dest, get_container( $dest_dn ) ) )
|
||||
pla_error( sprintf( $lang['copy_dest_container_does_not_exist'], pretty_print_dn( get_container($dest_dn) ) ) );
|
||||
|
||||
if( $do_recursive ) {
|
||||
$filter = isset( $_POST['filter'] ) ? $_POST['filter'] : '(objectClass=*)';
|
||||
|
||||
// build a tree similar to that of the tree browser to give to r_copy_dn
|
||||
$snapshot_tree = array();
|
||||
echo "<body>\n";
|
||||
echo "<h3 class=\"title\">". $lang['copy_copying'] . htmlspecialchars( $source_dn ) . "</h3>\n";
|
||||
echo "<h3 class=\"subtitle\">" . $lang['copy_recursive_copy_progress'] ."</h3>\n";
|
||||
echo "<br /><br />";
|
||||
echo "<small>\n";
|
||||
echo $lang['copy_building_snapshot'];
|
||||
|
||||
flush();
|
||||
|
||||
build_tree( $ldapserver_source, $source_dn, $snapshot_tree, $filter );
|
||||
echo " <span style=\"color:green\">" . $lang['success'] . "</span><br />\n";
|
||||
flush();
|
||||
|
||||
// prevent script from bailing early on a long delete
|
||||
@set_time_limit( 0 );
|
||||
|
||||
$copy_result = r_copy_dn( $ldapserver_source, $ldapserver_dest, $snapshot_tree, $source_dn, $dest_dn );
|
||||
echo "</small>\n";
|
||||
|
||||
} else {
|
||||
$copy_result = copy_dn( $ldapserver_source, $source_dn, $ldapserver_dest, $dest_dn );
|
||||
}
|
||||
|
||||
if( $copy_result ) {
|
||||
$edit_url="edit.php?server_id=$dest_server_id&dn=" . rawurlencode( $dest_dn );
|
||||
$new_rdn = get_rdn( $dest_dn );
|
||||
$container = get_container( $dest_dn );
|
||||
|
||||
if( array_key_exists( 'tree', $_SESSION ) ) {
|
||||
// do we not have a tree and tree icons yet? Build a new ones.
|
||||
initialize_session_tree();
|
||||
$tree = $_SESSION['tree'];
|
||||
$tree_icons = $_SESSION['tree_icons'];
|
||||
|
||||
if( isset( $tree[$dest_server_id][$container] ) ) {
|
||||
$tree[$dest_server_id][$container][] = $dest_dn;
|
||||
sort( $tree[ $dest_server_id ][ $container ] );
|
||||
$tree_icons[$dest_server_id][$dest_dn] = get_icon( $ldapserver_dest, $dest_dn );
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
$_SESSION['tree_icons'] = $tree_icons;
|
||||
session_write_close();
|
||||
}
|
||||
} ?>
|
||||
|
||||
<center>
|
||||
<?php echo $lang['copy_successful_like_to']. "<a href=\"$edit_url\">" . $lang['copy_view_new_entry'] ."</a>"?>
|
||||
</center>
|
||||
<!-- refresh the tree view (with the new DN renamed)
|
||||
and redirect to the edit_dn page -->
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php if ($remove) {
|
||||
sleep(2);
|
||||
$delete_url = "delete_form.php?server_id=$dest_server_id&dn=" .rawurlencode( $source_dn ); ?>
|
||||
|
||||
<!-- redirect to the delete form -->
|
||||
<script language="javascript">
|
||||
parent.right_frame.location="<?php echo $delete_url; ?>"
|
||||
</script>
|
||||
<?php }
|
||||
|
||||
} else {
|
||||
exit;
|
||||
}
|
||||
|
||||
function r_copy_dn( $ldapserver_source, $ldapserver_dest, $tree, $root_dn, $dest_dn ) {
|
||||
global $lang;
|
||||
echo "<nobr>". $lang['copy_copying'] . htmlspecialchars( $root_dn ) . "...";
|
||||
flush();
|
||||
|
||||
$copy_result = copy_dn( $ldapserver_source, $root_dn, $ldapserver_dest, $dest_dn );
|
||||
|
||||
if( ! $copy_result )
|
||||
return false;
|
||||
|
||||
echo "<span style=\"color:green\">".$lang['success']."</span></nobr><br />\n";
|
||||
flush();
|
||||
|
||||
$children = isset( $tree[ $root_dn ] ) ? $tree[ $root_dn ] : null;
|
||||
if( is_array( $children ) && count( $children ) > 0 ) {
|
||||
foreach( $children as $child_dn ) {
|
||||
$child_rdn = get_rdn( $child_dn );
|
||||
$new_dest_dn = $child_rdn . ',' . $dest_dn;
|
||||
r_copy_dn( $ldapserver_source, $ldapserver_dest, $tree, $child_dn, $new_dest_dn );
|
||||
}
|
||||
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function copy_dn( $ldapserver_source, $source_dn, $ldapserver_dest, $dest_dn ) {
|
||||
global $lang;
|
||||
|
||||
$attrs = get_object_attrs( $ldapserver_source, $source_dn );
|
||||
|
||||
$new_entry = $attrs;
|
||||
// modify the prefix-value (ie "bob" in cn=bob) to match the destination DN's value.
|
||||
$rdn_attr = substr( $dest_dn, 0, strpos( $dest_dn, '=' ) );
|
||||
$rdn_value = get_rdn( $dest_dn );
|
||||
$rdn_value = substr( $rdn_value, strpos( $rdn_value, '=' ) + 1 );
|
||||
$new_entry[ $rdn_attr ] = $rdn_value;
|
||||
// don't need a dn attribute in the new entry
|
||||
unset( $new_entry['dn'] );
|
||||
|
||||
// Check the user-defined custom call back first
|
||||
if( true === run_hook ( 'pre_entry_create',
|
||||
array ( 'server_id' => $ldapserver_dest->server_id, 'dn' => $dest_dn, 'attrs' => $new_entry ) ) ) {
|
||||
|
||||
$add_result = @ldap_add( $ldapserver_dest->connect(), $dest_dn, $new_entry );
|
||||
if( ! $add_result ) {
|
||||
run_hook ( 'post_entry_create', array ( 'server_id' => $ldapserver_dest->server_id,
|
||||
'dn' => $dest_dn, 'attrs' => $new_entry ) );
|
||||
|
||||
echo "</small><br /><br />";
|
||||
pla_error( $lang['copy_failed'] . $dest_dn, ldap_error( $ldapserver_dest->connect() ), ldap_errno( $ldapserver_dest->connect() ) );
|
||||
}
|
||||
|
||||
return $add_result;
|
||||
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object $ldapserver
|
||||
* @param dn $root_dn
|
||||
* @param unknown $tree
|
||||
* @param string $filter
|
||||
*/
|
||||
function build_tree( $ldapserver, $root_dn, &$tree, $filter='(objectClass=*)' )
|
||||
{
|
||||
$children = get_container_contents( $ldapserver, $root_dn, 0, $filter );
|
||||
|
||||
if( is_array( $children ) && count( $children ) > 0 ) {
|
||||
$tree[ $root_dn ] = $children;
|
||||
foreach( $children as $child_dn )
|
||||
build_tree( $ldapserver, $child_dn, $tree, $filter );
|
||||
}
|
||||
}
|
||||
?>
|
@@ -1,13 +1,11 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/copy_form.php,v 1.24 2005/07/22 05:47:43 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/copy_form.php,v 1.22 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* Copies a given object to create a new one.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in via GET variables
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
@@ -16,10 +14,13 @@
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
$server_id = (isset($_GET['server_id']) ? $_GET['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = $_GET['dn'] ;
|
||||
|
||||
@@ -28,7 +29,7 @@ $rdn = get_rdn( $dn );
|
||||
$container = get_container( $dn );
|
||||
|
||||
$attrs = get_object_attrs( $ldapserver, $dn );
|
||||
$select_server_html = server_select_list($ldapserver->server_id,true,'dest_server_id');
|
||||
$select_server_html = server_select_list($server_id,true,'dest_server_id');
|
||||
$children = get_container_contents( $ldapserver, $dn );
|
||||
|
||||
include './header.php';
|
||||
@@ -65,7 +66,7 @@ if( is_array( $children ) && count( $children ) > 0 ) { ?>
|
||||
|
||||
<form action="copy.php" method="post" name="copy_form">
|
||||
<input type="hidden" name="old_dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
|
||||
<table style="border-spacing: 10px">
|
||||
<tr>
|
||||
@@ -115,7 +116,7 @@ toggle_disable_filter_field( document.copy_form.recursive );
|
||||
//-->
|
||||
</script>
|
||||
|
||||
<?php if ($config->GetValue('appearance','show_hints')) {?>
|
||||
<?php if( show_hints() ) {?>
|
||||
<small><img src="images/light.png" /><span class="hint"><?php echo $lang['copyf_note']?></span></small>
|
||||
<?php } ?>
|
||||
|
@@ -1,11 +1,9 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/create.php,v 1.43.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/create.php,v 1.32 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* Creates a new object.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - new_dn
|
||||
* - attrs (an array of attributes)
|
||||
@@ -13,21 +11,26 @@
|
||||
* - required_attrs (an array with indices being the attributes,
|
||||
* and the values being their respective values)
|
||||
* - object_classes (rawurlencoded, and serialized array of objectClasses)
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
* @todo: posixgroup with empty memberlist generates an error.
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require realpath( './common.php' );
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
$server_id = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$new_dn = isset( $_POST['new_dn'] ) ? $_POST['new_dn'] : null;
|
||||
$vals = isset( $_POST['vals'] ) ? $_POST['vals'] : array();
|
||||
$attrs = isset( $_POST['attrs'] ) ? $_POST['attrs'] : array();
|
||||
$required_attrs = isset( $_POST['required_attrs'] ) ? $_POST['required_attrs'] : false;
|
||||
$object_classes = unserialize( rawurldecode( $_POST['object_classes'] ) );
|
||||
$redirect = isset( $_POST['redirect'] ) ? $_POST['redirect'] : false;
|
||||
@@ -35,30 +38,6 @@ $redirect = isset( $_POST['redirect'] ) ? $_POST['redirect'] : false;
|
||||
$encoded_dn = rawurlencode( $new_dn );
|
||||
$container = get_container( $new_dn );
|
||||
|
||||
// See if there are any presubmit values to work out.
|
||||
if (isset($_POST['presubmit']) && count($_POST['presubmit']) && isset($_POST['template'])) {
|
||||
$templates = new Templates($ldapserver->server_id);
|
||||
$template = $templates->GetTemplate($_POST['template']);
|
||||
|
||||
foreach ($_POST['presubmit'] as $attr) {
|
||||
$_POST['attrs'][] = $attr;
|
||||
$_POST['form'][$attr] = $templates->EvaluateDefault($ldapserver,$template['attribute'][$attr]['presubmit'],$_POST['container']);
|
||||
$_POST['vals'][] = $_POST['form'][$attr];
|
||||
}
|
||||
|
||||
# @todo: This section needs to be cleaned up, and will be when the old templates are removed. In the mean time...
|
||||
# Rebuild the $_POST['attrs'] & $_POST['vals'], as they can be inconsistent.
|
||||
unset($_POST['attrs']);
|
||||
unset($_POST['vals']);
|
||||
foreach ($_POST['form'] as $attr => $val) {
|
||||
$_POST['attrs'][] = $attr;
|
||||
$_POST['vals'][] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
$vals = isset( $_POST['vals'] ) ? $_POST['vals'] : array();
|
||||
$attrs = isset( $_POST['attrs'] ) ? $_POST['attrs'] : array();
|
||||
|
||||
// build the new entry
|
||||
$new_entry = array();
|
||||
if( isset( $required_attrs ) && is_array( $required_attrs ) ) {
|
||||
@@ -85,20 +64,10 @@ if( isset( $attrs ) && is_array( $attrs ) ) {
|
||||
}
|
||||
|
||||
} else {
|
||||
if (is_array($vals[$i])) {
|
||||
$val = isset( $vals[$i] ) ? $vals[$i] : '';
|
||||
|
||||
# If the array has blank entries, then ignore them.
|
||||
foreach ($vals[$i] as $value) {
|
||||
# $new_entry[$attr] = $vals[$i];
|
||||
if (trim($value))
|
||||
$new_entry[$attr][] = $value;
|
||||
}
|
||||
} else {
|
||||
$val = isset( $vals[$i] ) ? $vals[$i] : '';
|
||||
|
||||
if( '' !== trim($val) )
|
||||
$new_entry[ $attr ][] = $val;
|
||||
}
|
||||
if( '' !== trim($val) )
|
||||
$new_entry[ $attr ][] = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -111,8 +80,7 @@ foreach( $new_entry as $attr => $vals ) {
|
||||
|
||||
// Check to see if this is a unique Attribute
|
||||
if( $badattr = checkUniqueAttr( $ldapserver, $new_dn, $attr, $vals ) ) {
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',
|
||||
$ldapserver->server_id,$attr,$badattr);
|
||||
$search_href = sprintf('search.php?search=true&form=advanced&server_id=%s&filter=%s=%s',$server_id,$attr,$badattr);
|
||||
pla_error(sprintf( $lang['unique_attr_failed'],$attr,$badattr,$new_dn,$search_href ) );
|
||||
}
|
||||
|
||||
@@ -128,7 +96,7 @@ foreach( $new_entry as $attr => $vals ) {
|
||||
//echo "<pre>"; var_dump( $new_dn );print_r( $new_entry ); echo "</pre>";
|
||||
|
||||
// Check the user-defined custom call back first
|
||||
if( true === run_hook ( 'pre_entry_create', array ( 'server_id' => $ldapserver->server_id,'dn' => $new_dn,'attrs' => $new_entry ) ) )
|
||||
if( true === run_hook ( 'pre_entry_create', array ( 'server_id' => $server_id,'dn' => $new_dn,'attrs' => $new_entry ) ) )
|
||||
$add_result = @ldap_add( $ldapserver->connect(), $new_dn, $new_entry );
|
||||
|
||||
else {
|
||||
@@ -137,22 +105,22 @@ else {
|
||||
}
|
||||
|
||||
if( $add_result ) {
|
||||
run_hook ( 'post_entry_create', array ( 'server_id' => $ldapserver->server_id, 'dn' => $new_dn, 'attrs' => $new_entry ) );
|
||||
run_hook ( 'post_entry_create', array ( 'server_id' => $server_id, 'dn' => $new_dn, 'attrs' => $new_entry ) );
|
||||
|
||||
if ($redirect)
|
||||
if( $redirect )
|
||||
$redirect_url = $redirect;
|
||||
|
||||
else
|
||||
$redirect_url = sprintf('edit.php?server_id=%s&dn=%s',$ldapserver->server_id,rawurlencode($new_dn));
|
||||
$redirect_url = "edit.php?server_id=$server_id&dn=" . rawurlencode( $new_dn );
|
||||
|
||||
if( array_key_exists( 'tree', $_SESSION ) ) {
|
||||
$tree = $_SESSION['tree'];
|
||||
$tree_icons = $_SESSION['tree_icons'];
|
||||
|
||||
if( isset( $tree[$ldapserver->server_id][$container] ) ) {
|
||||
$tree[$ldapserver->server_id][$container][] = $new_dn;
|
||||
sort( $tree[$ldapserver->server_id][$container] );
|
||||
$tree_icons[$ldapserver->server_id][$new_dn] = get_icon( $ldapserver, $new_dn );
|
||||
if( isset( $tree[$server_id][$container] ) ) {
|
||||
$tree[$server_id][$container][] = $new_dn;
|
||||
sort( $tree[$server_id][$container] );
|
||||
$tree_icons[$server_id][$new_dn] = get_icon( $ldapserver, $new_dn );
|
||||
}
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
@@ -164,7 +132,7 @@ if( $add_result ) {
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<?php if (isset($tree[$ldapserver->server_id][$container]) || in_array($new_dn,$ldapserver->getBaseDN())) { ?>
|
||||
<?php if( isset( $tree[$server_id][$container] ) || $new_dn == $servers[$server_id]['base'] ) { ?>
|
||||
|
||||
<!-- refresh the tree view (with the new DN renamed)
|
||||
and redirect to the edit_dn page -->
|
||||
@@ -185,6 +153,6 @@ if( $add_result ) {
|
||||
</html>
|
||||
|
||||
<?php } else {
|
||||
pla_error( $lang['create_could_not_add'], $ldapserver->error(), $ldapserver->errno() );
|
||||
pla_error( $lang['create_could_not_add'], ldap_error( $ldapserver->connect() ), ldap_errno( $ldapserver->connect() ) );
|
||||
}
|
||||
?>
|
@@ -1,13 +1,12 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/create_form.php,v 1.30.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/create_form.php,v 1.22 2005/02/25 13:44:05 wurley Exp $
|
||||
|
||||
/**
|
||||
* The menu where the user chooses an RDN, Container, and Template for creating a new entry.
|
||||
* After submitting this form, the user is taken to their chosen Template handler.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars
|
||||
* - server_id (optional)
|
||||
* - container (rawurlencoded) (optional)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
@@ -16,7 +15,10 @@
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require TMPLDIR.'template_config.php';
|
||||
require 'templates/template_config.php';
|
||||
|
||||
$server_id = (isset($_REQUEST['server_id']) ? $_REQUEST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
@@ -26,7 +28,7 @@ if( ! $ldapserver->haveAuthInfo())
|
||||
$step = isset( $_REQUEST['step'] ) ? $_REQUEST['step'] : 1; // defaults to 1
|
||||
$container = $_REQUEST['container'];
|
||||
|
||||
$server_menu_html = server_select_list($ldapserver->server_id,true);
|
||||
$server_menu_html = server_select_list($server_id,true);
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
@@ -53,41 +55,19 @@ include './header.php'; ?>
|
||||
<td>
|
||||
<table class="templates">
|
||||
|
||||
<?php
|
||||
<?php $count = count( $templates );
|
||||
$i = -1;
|
||||
|
||||
if ($config->GetValue('template_engine','enable')) {
|
||||
$template_xml = new Templates($ldapserver->server_id);
|
||||
|
||||
if ($config->GetValue('template_engine','disable_old'))
|
||||
$templates = $template_xml->getTemplates();
|
||||
|
||||
else
|
||||
$templates = array_merge($template_xml->getTemplates(),$templates);
|
||||
}
|
||||
|
||||
# Remove non-visable templates.
|
||||
foreach ($templates as $index => $template)
|
||||
if (isset($template['visible']) && (! $template['visible']))
|
||||
unset ($templates[$index]);
|
||||
|
||||
$templates['custom']['title'] = 'Custom';
|
||||
$templates['custom']['icon'] = 'images/object.png';
|
||||
|
||||
$count = count( $templates );
|
||||
foreach( $templates as $name => $template ) {
|
||||
$i++;
|
||||
|
||||
# If the template doesnt have a title, we'll use the desc field.
|
||||
$template['desc'] = isset($template['title']) ? $template['title'] : $template['desc'];
|
||||
|
||||
# Balance the columns properly
|
||||
// Balance the columns properly
|
||||
if( ( count( $templates ) % 2 == 0 && $i == intval( $count / 2 ) ) ||
|
||||
( count( $templates ) % 2 == 1 && $i == intval( $count / 2 ) + 1 ) )
|
||||
|
||||
echo "</table></td><td><table class=\"templates\">";
|
||||
|
||||
# Check and see if this template should be shown in the list
|
||||
// Check and see if this template should be shown in the list
|
||||
$isValid = false;
|
||||
|
||||
if( isset($template['regexp'] ) ) {
|
||||
@@ -97,38 +77,20 @@ foreach( $templates as $name => $template ) {
|
||||
|
||||
} else {
|
||||
$isValid = true;
|
||||
|
||||
if (isset($template['invalid']) && $template['invalid'])
|
||||
$isValid = false;
|
||||
} ?>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<?php
|
||||
if (isset($template['invalid']) && $template['invalid'] || (isset($template['handler']) && ! file_exists(TMPLDIR.'creation/'.$template['handler']))) {
|
||||
?>
|
||||
<td class="icon">
|
||||
<img src="images/error.png" />
|
||||
</td>
|
||||
<?php
|
||||
} else {
|
||||
?>
|
||||
|
||||
<td>
|
||||
<input type="radio" name="template" value="<?php echo htmlspecialchars($name);?>"
|
||||
id="<?php echo htmlspecialchars($name); ?>"
|
||||
|
||||
<?php
|
||||
if( 0 == strcasecmp( 'Custom', $name ) ) echo ' checked';
|
||||
if( ! $isValid ) echo ' disabled';
|
||||
?> />
|
||||
<?php if( 0 == strcasecmp( 'Custom', $name ) ) echo ' checked';
|
||||
if( ! $isValid ) echo ' disabled'; ?> />
|
||||
|
||||
</td>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<td class="icon">
|
||||
<label for="<?php echo htmlspecialchars($name);?>">
|
||||
@@ -142,10 +104,7 @@ if( 0 == strcasecmp( 'Custom', $name ) ) echo ' checked';
|
||||
<?php if( 0 == strcasecmp( 'Custom', $template['desc'] ) ) echo '<b>';
|
||||
|
||||
if( ! $isValid )
|
||||
if (isset($template['invalid']) && $template['invalid'])
|
||||
printf('<span style="color: gray"><acronym title="%s">',$lang['template_invalid']);
|
||||
else
|
||||
printf('<span style="color: gray"><acronym title="%s">',$lang['template_restricted']);
|
||||
echo "<span style=\"color: gray\"><acronym title=\"This template is not allowed in this container\">";
|
||||
|
||||
echo htmlspecialchars( $template['desc'] );
|
||||
|
68
creation_template.php
Normal file
68
creation_template.php
Normal file
@@ -0,0 +1,68 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/creation_template.php,v 1.22 2005/03/12 00:57:17 wurley Exp $
|
||||
|
||||
/**
|
||||
* This file simply acts as a plugin grabber for the creator templates in
|
||||
* the directory templates/creation/
|
||||
*
|
||||
* Expected POST vars:
|
||||
* server_id
|
||||
* template
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require_once 'common.php';
|
||||
require 'templates/template_config.php';
|
||||
|
||||
$server_id = (isset($_REQUEST['server_id']) ? $_REQUEST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$template = (isset($_REQUEST['template']) ? $_REQUEST['template'] : null);
|
||||
! is_null($template) or pla_error( $lang['ctemplate_no_template'] );
|
||||
|
||||
if( $template == 'custom' ) {
|
||||
foreach( $templates as $id => $template ) {
|
||||
if( $template['handler'] == 'custom.php' ) {
|
||||
$template = $id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
isset( $templates[$template] ) or pla_error( sprintf( $lang['invalid_template'], htmlspecialchars( $template ) ) );
|
||||
$template_id = $template;
|
||||
$template = isset( $templates[$template] ) ? $templates[$template_id] : null;
|
||||
|
||||
if ( ! array_key_exists('no_header', $template ) ) {
|
||||
include './header.php';
|
||||
?>
|
||||
|
||||
<body>
|
||||
<h3 class="title"><?php echo $lang['createf_create_object']?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['ctemplate_on_server']?> '<?php echo htmlspecialchars( $ldapserver->name ); ?>', <?php echo $lang['using_template']?> '<?php echo htmlspecialchars( $template['desc'] ); ?>'</h3>
|
||||
|
||||
<?php }
|
||||
|
||||
$handler = 'templates/creation/' . $template['handler'];
|
||||
$handler = realpath( $handler );
|
||||
|
||||
if( ! file_exists( $handler ) )
|
||||
pla_error( sprintf( $lang['template_does_not_exist'], htmlspecialchars( $template['handler'] ) ) );
|
||||
|
||||
if( ! is_readable( $handler ) )
|
||||
pla_error( sprintf( $lang['template_not_readable'], htmlspecialchars( $template['handler'] ) ) );
|
||||
|
||||
include $handler;
|
||||
|
||||
if ( ! array_key_exists('no_header', $template ) ) {
|
||||
echo "</body>\n</html>";
|
||||
}
|
||||
?>
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/custom_functions.php,v 1.8 2005/03/05 06:27:06 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/custom_functions.php,v 1.8 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* CUSTOM_FUCTIONS has been DEPRECIATED, please use the hooks functions now.
|
84
delete.php
Normal file
84
delete.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/delete.php,v 1.21 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* Deletes a DN and presents a "job's done" message.
|
||||
*
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require realpath( 'common.php' );
|
||||
|
||||
$server_id = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = $_POST['dn'];
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
|
||||
if( $dn === null )
|
||||
pla_error( $lang['you_must_specify_a_dn'] );
|
||||
|
||||
dn_exists( $ldapserver, $dn ) or pla_error( sprintf( $lang['no_such_entry'], '<b>' . pretty_print_dn( $dn ) . '</b>' ) );
|
||||
|
||||
// Check the user-defined custom callback first.
|
||||
if( true === run_hook ( 'pre_entry_delete', array ( 'server_id' => $server_id, 'dn' => $dn ) ) ) {
|
||||
$del_result = @ldap_delete( $ldapserver->connect(), $dn );
|
||||
|
||||
} else {
|
||||
pla_error( sprintf( $lang['could_not_delete_entry'], '<b>' . pretty_print_dn( $dn ) . '</b>' ));
|
||||
}
|
||||
|
||||
if( $del_result ) {
|
||||
|
||||
// Custom callback
|
||||
run_hook ( 'post_entry_delete', array ( 'server_id' => $server_id, 'dn' => $dn ) );
|
||||
|
||||
// kill the DN from the tree browser session variable and
|
||||
// refresh the tree viewer frame (left_frame)
|
||||
|
||||
if( array_key_exists( 'tree', $_SESSION ) ) {
|
||||
$tree = $_SESSION['tree'];
|
||||
|
||||
if( isset( $tree[$server_id] ) && is_array( $tree[$server_id] ) ) {
|
||||
|
||||
// does it have children? (it shouldn't, but hey, you never know)
|
||||
if( isset( $tree[$server_id][$dn] ) )
|
||||
unset( $tree[$server_id][$dn] );
|
||||
|
||||
// search and destroy
|
||||
foreach( $tree[$server_id] as $tree_dn => $subtree )
|
||||
foreach( $subtree as $key => $sub_tree_dn )
|
||||
if( 0 == strcasecmp( $sub_tree_dn, $dn ) )
|
||||
unset( $tree[$server_id][$tree_dn][$key] );
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
}
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
</script>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<center><?php echo sprintf( $lang['entry_deleted_successfully'], '<b>' .pretty_print_dn($dn) . '</b>' ); ?></center>
|
||||
|
||||
<?php } else {
|
||||
pla_error( sprintf( $lang['could_not_delete_entry'], '<b>' . pretty_print_dn( $dn ) . '</b>' ),
|
||||
ldap_error( $ldapserver->connect() ), ldap_errno( $ldapserver->connect() ) );
|
||||
}
|
||||
?>
|
51
delete_attr.php
Normal file
51
delete_attr.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/delete_attr.php,v 1.11 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* Deletes an attribute from an entry with NO confirmation.
|
||||
*
|
||||
* On success, redirect to edit.php
|
||||
* On failure, echo an error.
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = $_POST['dn'] ;
|
||||
$attr = $_POST['attr'];
|
||||
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
|
||||
if( is_attr_read_only( $ldapserver, $attr ) )
|
||||
pla_error( sprintf( $lang['attr_is_read_only'], htmlspecialchars( $attr ) ) );
|
||||
|
||||
if( ! $attr ) pla_error( $lang['no_attr_specified'] );
|
||||
if( ! $dn ) pla_error( $lang['no_dn_specified'] );
|
||||
|
||||
$update_array = array();
|
||||
$update_array[$attr] = array();
|
||||
|
||||
$res = @ldap_modify( $ldapserver->connect(), $dn, $update_array );
|
||||
if( $res ) {
|
||||
$redirect_url = "edit.php?server_id=$server_id&dn=$encoded_dn";
|
||||
|
||||
foreach( $update_array as $attr => $junk )
|
||||
$redirect_url .= "&modified_attrs[]=$attr";
|
||||
|
||||
header( "Location: $redirect_url" );
|
||||
|
||||
} else {
|
||||
pla_error( $lang['could_not_perform_ldap_modify'], ldap_error( $ldapserver->connect() ), ldap_errno( $ldapserver->connect() ) );
|
||||
}
|
||||
?>
|
@@ -1,14 +1,13 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete_form.php,v 1.20 2005/07/22 05:47:44 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/delete_form.php,v 1.19 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* delete_form.php
|
||||
* Displays a last chance confirmation form to delete a dn.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
@@ -17,10 +16,13 @@
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
$server_id = (isset($_GET['server_id']) ? $_GET['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
|
||||
@@ -41,10 +43,9 @@ include './header.php'; ?>
|
||||
|
||||
<center><b><?php echo $lang['permanently_delete_children']; ?></b><br /><br />
|
||||
|
||||
<?php
|
||||
flush();
|
||||
<?php flush(); // so the user can get something on their screen while we figure out how many children this object has
|
||||
|
||||
# get the total number of child objects (whole sub-tree)
|
||||
// get the total number of child objects (whole sub-tree)
|
||||
$s = pla_ldap_search( $ldapserver, 'objectClass=*', $dn, array('dn'), 'sub' );
|
||||
$sub_tree_count = count( $s );
|
||||
?>
|
||||
@@ -54,7 +55,7 @@ include './header.php'; ?>
|
||||
<td>
|
||||
<p>
|
||||
<?php echo sprintf( $lang['entry_is_root_sub_tree'], $sub_tree_count ); ?>
|
||||
<small>(<a href="search.php?search=true&server_id=<?php echo $ldapserver->server_id; ?>&filter=<?php echo rawurlencode('objectClass=*'); ?>&base_dn=<?php echo $encoded_dn; ?>&form=advanced&scope=sub"><?php echo $lang['view_entries']; ?></a>)</small>
|
||||
<small>(<a href="search.php?search=true&server_id=<?php echo $server_id; ?>&filter=<?php echo rawurlencode('objectClass=*'); ?>&base_dn=<?php echo $encoded_dn; ?>&form=advanced&scope=sub"><?php echo $lang['view_entries']; ?></a>)</small>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
@@ -70,7 +71,7 @@ include './header.php'; ?>
|
||||
<center>
|
||||
<form action="rdelete.php" method="post">
|
||||
<input type="hidden" name="dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="submit" class="scary" value="<?php echo sprintf( $lang['delete_all_x_objects'], $sub_tree_count ); ?>" />
|
||||
</form>
|
||||
</center>
|
||||
@@ -80,7 +81,7 @@ include './header.php'; ?>
|
||||
<center>
|
||||
<form action="edit.php" method="get">
|
||||
<input type="hidden" name="dn" value="<?php echo htmlspecialchars($dn); ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['cancel']; ?>" class="cancel" />
|
||||
</form>
|
||||
</center>
|
||||
@@ -125,7 +126,7 @@ include './header.php'; ?>
|
||||
<center>
|
||||
<form action="delete.php" method="post">
|
||||
<input type="hidden" name="dn" value="<?php echo htmlspecialchars($dn); ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['delete']; ?>" class="scary" />
|
||||
</form>
|
||||
</center>
|
||||
@@ -135,7 +136,7 @@ include './header.php'; ?>
|
||||
<center>
|
||||
<form action="edit.php" method="get">
|
||||
<input type="hidden" name="dn" value="<?php echo $dn; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $ldapserver->server_id; ?>" />
|
||||
<input type="hidden" name="server_id" value="<?php echo $server_id; ?>" />
|
||||
<input type="submit" name="submit" value="<?php echo $lang['cancel']; ?>" class="cancel" />
|
||||
</form>
|
||||
</center>
|
@@ -29,10 +29,6 @@
|
||||
- Daniel van Eeden Unicode, CSS fixes
|
||||
- Piotr Tarnowski More locatisation fixes
|
||||
- Tomas Kuliavas Improved password encoding functions
|
||||
- Alessandro De Zorzi Enhancement with the new template engine and others
|
||||
- Matt Harrington Fixes
|
||||
- Jonathan Thurman Add Multiple objectClasses
|
||||
- And many others, whose names are lost in the changelog. Thank you.
|
||||
|
||||
* Translators:
|
||||
|
||||
|
@@ -1,23 +1,3 @@
|
||||
* Version 0.9.7, 2005-09-11
|
||||
|
||||
* Summary:
|
||||
- Now fully supporting PHP5 - this will be the last version developed on PHP4.
|
||||
- Revamped how you configure PLA - now using a config object and some checking,
|
||||
- Revamped how you define LDAP servers - extending the LDAPServer object and adding some checking.
|
||||
- Fixed all functions so that they now use the LDAPServer object.
|
||||
- Introduced the template engine and configuration by XML files. (The old templates are still in this
|
||||
version, unchanged from 0.9.6. They will be removed after this version is released.)
|
||||
- Changed dependancy checking to just index.php, so that common.php executes faster.
|
||||
- Minor improvements to compare.php
|
||||
- Much improved debug logging
|
||||
- Much improved caching
|
||||
- Improved LDAP server info display
|
||||
- Some code readability cleanup
|
||||
|
||||
- Add other fixes as per the ChangeLog (ChangeLogCVS.txt).
|
||||
|
||||
Thank you for everybody who has submitted fixes/enhancements/recommendations and feedback for this version.
|
||||
|
||||
* Version 0.9.6, 2005-04-03
|
||||
|
||||
* Summary:
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/documentation.php,v 1.9 2005/09/25 16:11:44 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/documentation.php,v 1.8 2005/02/25 13:44:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
@@ -7,8 +7,8 @@
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
//include './header.php';
|
||||
include './common.php';
|
||||
include './header.php';
|
||||
|
||||
echo "<body>";
|
||||
|
||||
@@ -18,7 +18,7 @@ switch( $view ) {
|
||||
echo "<h3 class=\"title\">phpLDAPadmin Credits</h3>";
|
||||
echo "<pre>";
|
||||
echo "<small>";
|
||||
include DOCDIR.'CREDITS';
|
||||
include 'doc/CREDITS';
|
||||
echo "</small>";
|
||||
echo "</pre>";
|
||||
echo "</body>";
|
||||
@@ -29,7 +29,7 @@ switch( $view ) {
|
||||
echo "<h3 class=\"title\">phpLDAPadmin ChangeLog</h3>";
|
||||
echo "<pre>";
|
||||
echo "<small>";
|
||||
include DOCDIR.'ChangeLog';
|
||||
include 'doc/ChangeLog';
|
||||
echo "</small>";
|
||||
echo "</pre>";
|
||||
echo "</body>";
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/donate.php,v 1.7 2005/02/26 12:35:05 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/donate.php,v 1.7 2005/02/26 12:35:05 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
45
download_binary_attr.php
Normal file
45
download_binary_attr.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/download_binary_attr.php,v 1.10 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id = (isset($_GET['server_id']) ? $_GET['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( $ldapserver->isReadOnly() )
|
||||
pla_error( $lang['no_updates_in_read_only_mode'] );
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = rawurldecode( $_GET['dn'] );
|
||||
$attr = $_GET['attr'];
|
||||
|
||||
// if there are multiple values in this attribute, which one do you want to see?
|
||||
$value_num = isset( $_GET['value_num'] ) ? $_GET['value_num'] : 0;
|
||||
|
||||
dn_exists( $ldapserver, $dn ) or
|
||||
pla_error( sprintf( $lang['no_such_entry'], pretty_print_dn( $dn ) ) );
|
||||
|
||||
$search = @ldap_read( $ldapserver->connect(),$dn,"(objectClass=*)",array($attr),0,0,0,get_view_deref_setting() );
|
||||
if( ! $search )
|
||||
pla_error( $lang['error_performing_search'],ldap_error($ldapserver->connect()),ldap_errno($ldapserver->connect()) );
|
||||
|
||||
$entry = ldap_first_entry( $ldapserver->connect(),$search );
|
||||
$attrs = ldap_get_attributes( $ldapserver->connect(),$entry );
|
||||
$attr = ldap_first_attribute( $ldapserver->connect(),$entry,$attrs );
|
||||
$values = ldap_get_values_len( $ldapserver->connect(),$entry,$attr );
|
||||
$count = $values['count'];
|
||||
|
||||
// Dump the binary data to the browser
|
||||
header( "Content-type: octet-stream" );
|
||||
header( "Content-disposition: attachment; filename=$attr" );
|
||||
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
|
||||
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
|
||||
echo $values[$value_num];
|
||||
?>
|
60
edit.php
Normal file
60
edit.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/edit.php,v 1.52 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* Displays the specified dn from the specified server for editing
|
||||
* in its template as determined by get_template(). This is a simple
|
||||
* shell for displaying entries. The real work is done by the templates
|
||||
* found in tempaltes/modification/
|
||||
*
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
* - use_default_template (optional) If set, use the default template no matter what
|
||||
* - Other vars may be set and used by the modification templates
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require_once realpath( 'common.php' );
|
||||
require_once realpath( 'templates/template_config.php' );
|
||||
|
||||
$server_id = (isset($_GET['server_id']) ? $_GET['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = isset( $_GET['dn'] ) ? $_GET['dn'] : false;
|
||||
$dn !== false or pla_error( $lang['missing_dn_in_query_string'] );
|
||||
|
||||
$decoded_dn = rawurldecode( $dn );
|
||||
$encoded_dn = rawurlencode( $decoded_dn );
|
||||
|
||||
// Template authors may wish to present the user with a link back to the default, generic
|
||||
// template for editing. They may use this as the target of the href to do so.
|
||||
$default_href = "edit.php?server_id=$server_id&dn=$encoded_dn&use_default_template=true";
|
||||
$use_default_template = isset( $_GET['use_default_template'] ) ? true : false;
|
||||
|
||||
if( $use_default_template ) {
|
||||
require realpath( 'templates/modification/default.php' );
|
||||
|
||||
} else {
|
||||
$template = get_template( $ldapserver, $dn );
|
||||
$template_file = "templates/modification/$template.php";
|
||||
|
||||
if( file_exists( realpath( $template_file ) ) )
|
||||
require realpath( $template_file );
|
||||
|
||||
else {
|
||||
echo "\n\n";
|
||||
echo $lang['missing_template_file'];
|
||||
echo " <b>$template_file</b>. ";
|
||||
echo $lang['using_default'];
|
||||
echo "<br />\n\n";
|
||||
require realpath( 'templates/modification/default.php' );
|
||||
}
|
||||
}
|
||||
?>
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/emuhash_functions.php,v 1.6 2005/03/25 00:59:48 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/emuhash_functions.php,v 1.6 2005/03/25 00:59:48 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package other
|
@@ -1,4 +1,4 @@
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/js/entry_chooser.js,v 1.3 2005/02/10 12:34:26 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/entry_chooser.js,v 1.3 2005/02/10 12:34:26 wurley Exp $
|
||||
function dnChooserPopup(form_element,rdn)
|
||||
{
|
||||
mywindow=open('entry_chooser.php','myname','resizable=no,width=600,height=370,scrollbars=1');
|
115
entry_chooser.php
Normal file
115
entry_chooser.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/entry_chooser.php,v 1.23 2005/03/25 16:30:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Display a selection (popup window) to pick a DN.
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id = isset( $_GET['server_id'] ) ? $_GET['server_id'] : false;
|
||||
$container = isset( $_GET['container'] ) ? rawurldecode( $_GET['container'] ) : false;
|
||||
$return_form_element = isset( $_GET['form_element'] ) ? htmlspecialchars( $_GET['form_element'] ) : null;
|
||||
$rdn = isset( $_GET['rdn'] ) ? htmlspecialchars( $_GET['rdn'] ) : null;
|
||||
|
||||
include "./header.php";
|
||||
|
||||
echo "<h3 class=\"subtitle\">" . $lang['entry_chooser_title'] . "</h3>\n";
|
||||
flush(); ?>
|
||||
|
||||
<script language="javascript">
|
||||
function returnDN( dn ) {
|
||||
opener.document.<?php echo $return_form_element; ?>.value = dn;
|
||||
close();
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php if( $container ) {
|
||||
echo $lang['server_colon_pare'] . "<b>" . htmlspecialchars( $servers[ $server_id ][ 'name' ] ) . "</b><br />\n";
|
||||
echo $lang['look_in'] . "<b>" . htmlspecialchars( $container ) . "</b><br />\n";
|
||||
}
|
||||
|
||||
/* Has the use already begun to descend into a specific server tree? */
|
||||
if( $server_id !== false && $container !== false ) {
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn_list = get_container_contents( $ldapserver, $container, 0, '(objectClass=*)', get_tree_deref_setting() );
|
||||
sort( $dn_list );
|
||||
|
||||
foreach ($ldapserver->getBaseDN() as $base_dn) {
|
||||
debug_log(sprintf('%s: Comparing BaseDN [%s] with container [%s]','entry_chooser.php',$base_dn,$container),9);
|
||||
if( 0 == pla_compare_dns( $container, $base_dn ) ) {
|
||||
$parent_container = false;
|
||||
$up_href = sprintf('entry_chooser.php?form_element=%s&rdn=%s',$return_form_element,$rdn);
|
||||
break;
|
||||
|
||||
} else {
|
||||
$parent_container = get_container( $container );
|
||||
$up_href = sprintf('entry_chooser.php?form_element=%s&rdn=%s&server_id=%s&container=%s',
|
||||
$return_form_element,$rdn,$server_id,rawurlencode( $parent_container ));
|
||||
}
|
||||
}
|
||||
|
||||
echo " <a href=\"$up_href\" style=\"text-decoration:none\">" .
|
||||
"<img src=\"images/up.png\"> ". $lang['back_up_p'] ."</a><br />\n";
|
||||
|
||||
if( count( $dn_list ) == 0 )
|
||||
echo " (". $lang['no_entries'] .")<br />\n";
|
||||
|
||||
else
|
||||
foreach( $dn_list as $dn ) {
|
||||
$href = sprintf("javascript:returnDN( '%s%s' )",($rdn ? "$rdn," : ''),$dn);
|
||||
echo " <a href=\"entry_chooser.php?form_element=$return_form_element&rdn=$rdn".
|
||||
"&server_id=$server_id&container=" .
|
||||
rawurlencode( $dn ) . "\"><img src=\"images/plus.png\" /></a> " .
|
||||
"<a href=\"$href\">" . htmlspecialchars( $dn ) . "</a><br />\n";
|
||||
}
|
||||
|
||||
/* draw the root of the selection tree (ie, list all the servers) */
|
||||
} else {
|
||||
foreach( $servers as $id => $server ) {
|
||||
|
||||
$ldapserver = new LDAPServer($id);
|
||||
|
||||
if( $ldapserver->isVisible() ) {
|
||||
|
||||
if( ! $ldapserver->haveAuthInfo() )
|
||||
continue;
|
||||
|
||||
else {
|
||||
echo "<b>" . htmlspecialchars( $ldapserver->name ) . "</b><br />\n";
|
||||
foreach ($ldapserver->getBaseDN() as $dn) {
|
||||
if( ! $dn ) {
|
||||
echo "<small> (". $lang['could_not_det_base_dn'] .")</small><br />";
|
||||
} else {
|
||||
$href = sprintf("javascript:returnDN( '%s%s' )",($rdn ? "$rdn," : ''),$dn);
|
||||
echo " <a href=\"entry_chooser.php?form_element=" .
|
||||
"$return_form_element&rdn=$rdn&server_id=$id&container=" .
|
||||
rawurlencode( $dn ) . "\"><img src=\"images/plus.png\" /></a> " .
|
||||
"<a href=\"$href\">" . htmlspecialchars( $dn ) . "</a><br />\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// added by PD. 14082003,
|
||||
// adding the element access allows it to work with javascript arrays
|
||||
|
||||
// the name of the form extracted from the first part of the URL variable.
|
||||
$formpart=substr($return_form_element,0,strpos($return_form_element,"."));
|
||||
|
||||
// the name of the element extracted from the last part of the URL variable (after the dot)
|
||||
$elmpart =substr($return_form_element,strpos($return_form_element,".")+1);
|
||||
|
||||
// rebuilt return value
|
||||
$return_form_element = $formpart . ".elements[\"" . $elmpart . "\"]";
|
||||
?>
|
@@ -1,14 +1,13 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/expand.php,v 1.22 2005/07/22 05:47:44 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/expand.php,v 1.20 2005/03/05 06:27:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* This script alters the session variable 'tree', expanding it
|
||||
* at the dn specified in the query string.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - server_id
|
||||
*
|
||||
* Note: this script is equal and opposite to collapse.php
|
||||
* @package phpLDAPadmin
|
||||
@@ -19,34 +18,42 @@
|
||||
|
||||
require './common.php';
|
||||
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
$server_id = (isset($_GET['server_id']) ? $_GET['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
# no expire header stuff
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
// no expire header stuff
|
||||
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-store, no-cache, must-revalidate");
|
||||
header("Cache-Control: post-check=0, pre-check=0", false);
|
||||
header("Pragma: no-cache");
|
||||
|
||||
# This allows us to display large sub-trees without running out of time.
|
||||
// This allows us to display large sub-trees without running out of time.
|
||||
@set_time_limit( 0 );
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
$encoded_dn = rawurlencode( $dn );
|
||||
$server_id = $_GET['server_id'];
|
||||
|
||||
initialize_session_tree();
|
||||
|
||||
$tree = $_SESSION['tree'];
|
||||
$tree_icons = $_SESSION['tree_icons'];
|
||||
|
||||
$contents = get_container_contents( $ldapserver, $dn, 0, '(objectClass=*)', $config->GetValue('deref','tree'));
|
||||
$contents = get_container_contents( $ldapserver, $dn, 0, '(objectClass=*)', get_tree_deref_setting() );
|
||||
|
||||
usort( $contents, 'pla_compare_dns' );
|
||||
$tree[$ldapserver->server_id][$dn] = $contents;
|
||||
$tree[$server_id][$dn] = $contents;
|
||||
|
||||
//echo "<pre>";
|
||||
//var_dump( $contents );
|
||||
//exit;
|
||||
|
||||
foreach( $contents as $dn )
|
||||
$tree_icons[$ldapserver->server_id][$dn] = get_icon( $ldapserver, $dn );
|
||||
$tree_icons[$server_id][$dn] = get_icon( $ldapserver, $dn );
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
$_SESSION['tree_icons'] = $tree_icons;
|
||||
@@ -65,5 +72,5 @@ if( SID != "" )
|
||||
|
||||
session_write_close();
|
||||
|
||||
header(sprintf('Location:tree.php?foo=%s#%s_%s%s',$random_junk,$ldapserver->server_id,$encoded_dn,$id_session_param));
|
||||
header( "Location:tree.php?foo=$random_junk#{$server_id}_{$encoded_dn}$id_session_param" );
|
||||
?>
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/export.php,v 1.15 2005/09/25 16:11:44 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/export.php,v 1.13 2005/03/05 04:26:25 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
@@ -7,14 +7,11 @@
|
||||
/**
|
||||
*/
|
||||
|
||||
# Fix a bug with IE:
|
||||
ini_set('session.cache_limiter','');
|
||||
|
||||
require './common.php';
|
||||
require LIBDIR.'export_functions.php';
|
||||
require 'export_functions.php';
|
||||
|
||||
// get the POST parameters
|
||||
$server_id = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$ldapserver = new LDAPServer($server_id);
|
||||
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
@@ -90,7 +87,6 @@ $exporter->setOutputFormat($br);
|
||||
// prevent script from bailing early for long search
|
||||
@set_time_limit( 0 );
|
||||
|
||||
|
||||
// send the header
|
||||
if( $save_as_file )
|
||||
header( "Content-type: application/download" );
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/export_form.php,v 1.22 2005/09/25 16:11:44 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/export_form.php,v 1.20 2005/02/25 13:44:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* export_form.php
|
||||
@@ -12,8 +12,7 @@
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require LIBDIR.'export_functions.php';
|
||||
require 'export_functions.php';
|
||||
|
||||
$server_id = isset( $_GET['server_id'] ) ? $_GET['server_id']:NULL ;
|
||||
$format = isset( $_GET['format'] ) ? $_GET['format'] : get_line_end_format();
|
||||
@@ -52,7 +51,22 @@ include './header.php'; ?>
|
||||
<table>
|
||||
<tr>
|
||||
<td><?php echo $lang['server']; ?></td>
|
||||
<td><?php print server_select_list(); ?></td>
|
||||
<td>
|
||||
<?php
|
||||
if( count($servers) > 1 ){
|
||||
echo '<select name="server_id">';
|
||||
foreach( $servers as $id => $server )
|
||||
if( $server['host'] )
|
||||
echo "<option value=\"$id\"". ($id==$server_id?" selected":"") .">" . htmlspecialchars($server['name']) . "</option>\n";
|
||||
echo '</select>';
|
||||
} else {
|
||||
$server = reset($servers);
|
||||
if( $server['host'] )
|
||||
echo '<input type="hidden" name="server_id" value="'.key($servers).'" />' .
|
||||
'<b>' . $server['name'] . '</b>';
|
||||
}
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="white-space:nowrap"><?php echo $lang['base_dn']; ?></td>
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/export_functions.php,v 1.30.2.2 2005/10/23 01:19:27 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/export_functions.php,v 1.26 2005/03/21 12:43:17 wurley Exp $
|
||||
|
||||
/**
|
||||
* Fuctions and classes for exporting ldap entries to others formats
|
||||
@@ -58,7 +58,7 @@ $exporters[] = array(
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
|
||||
class LdapExportInfo {
|
||||
class LdapExportInfo extends LDAPServer{
|
||||
|
||||
var $base_dn;
|
||||
var $query_filter;
|
||||
@@ -74,13 +74,13 @@ class LdapExportInfo {
|
||||
*/
|
||||
|
||||
function LdapExportInfo($server_id,$base_dn = NULL,$query_filter = NULL,$scope = NULL){
|
||||
global $ldapservers;
|
||||
// Call our parent to initialise.
|
||||
parent::LDAPServer($server_id);
|
||||
|
||||
$this->ldapserver = $ldapservers->Instance($server_id);
|
||||
|
||||
$this->ldapserver->base_dn = $base_dn;
|
||||
$this->ldapserver->query_filter = $query_filter;
|
||||
$this->ldapserver->scope = $scope;
|
||||
// global $servers;
|
||||
$this->base_dn = $base_dn;
|
||||
$this->query_filter = $query_filter;
|
||||
$this->scope = $scope;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -203,7 +203,7 @@ class PlaExporter extends PlaAbstractExporter{
|
||||
}
|
||||
|
||||
/**
|
||||
* May be called when the processing is finished
|
||||
* May be call when the processing is finished
|
||||
* and to free some ressources.
|
||||
* @return bool false if any errors are encountered,false otherwise
|
||||
*/
|
||||
@@ -267,7 +267,7 @@ class PlaLdapExporter extends PlaAbstractExporter{
|
||||
* @param String $scope the scope for export
|
||||
*/
|
||||
function PlaLdapExporter( $server_id , $queryFilter , $base_dn , $scope, $attributes){
|
||||
global $lang, $config;
|
||||
global $lang;
|
||||
$this->scope = $scope;
|
||||
$this->base_dn = $base_dn;
|
||||
$this->server_id = $server_id;
|
||||
@@ -280,20 +280,20 @@ class PlaLdapExporter extends PlaAbstractExporter{
|
||||
|
||||
$this->attributes = $attributes;
|
||||
// connect to the server
|
||||
$this->ds = $this->ldap_info->ldapserver->connect();
|
||||
$this->ds = $this->ldap_info->connect();
|
||||
// @todo test whether we need to call pla_ldap_connection_is_error here.
|
||||
//pla_ldap_connection_is_error( $this->ds );
|
||||
|
||||
// get the data to be exported
|
||||
if( $this->scope == 'base' )
|
||||
$this->results = @ldap_read( $this->ds, $this->base_dn, $this->queryFilter,$this->attributes,
|
||||
0, 0, 0, $config->GetValue('deref','export'));
|
||||
0, 0, 0, get_export_deref_setting() );
|
||||
elseif( $this->scope == 'one' )
|
||||
$this->results = @ldap_list( $this->ds, $this->base_dn, $this->queryFilter, $this->attributes,
|
||||
0, 0, 0, $config->GetValue('deref','export'));
|
||||
0, 0, 0, get_export_deref_setting() );
|
||||
else // scope == 'sub'
|
||||
$this->results = @ldap_search( $this->ds, $this->base_dn, $this->queryFilter, $this->attributes,
|
||||
0, 0, 0, $config->GetValue('deref','export'));
|
||||
0, 0, 0, get_export_deref_setting() );
|
||||
|
||||
// if no result, there is a something wrong
|
||||
if( ! $this->results )
|
||||
@@ -310,7 +310,7 @@ class PlaLdapExporter extends PlaAbstractExporter{
|
||||
/**
|
||||
* Return the entry as an array
|
||||
* @return array an entry as an array
|
||||
*/
|
||||
*/
|
||||
function pla_fetch_entry_array(){
|
||||
return $this->entry_array;
|
||||
}
|
||||
@@ -328,7 +328,7 @@ class PlaLdapExporter extends PlaAbstractExporter{
|
||||
* @return LdapInfo Object with info from the ldap serveur
|
||||
*/
|
||||
function pla_get_ldap_info(){
|
||||
return $this->ldap_info->ldapserver;
|
||||
return $this->ldap_info;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -355,7 +355,7 @@ class PlaLdapExporter extends PlaAbstractExporter{
|
||||
|
||||
//iterate over the attributes
|
||||
while( $attr ){
|
||||
if( is_attr_binary( $this->ldap_info->ldapserver,$attr ) ){
|
||||
if( is_attr_binary( $this,$attr ) ){
|
||||
$this->entry_array[$attr] = @ldap_get_values_len( $this->ds,$this->entry_id,$attr );
|
||||
}
|
||||
else{
|
||||
@@ -378,7 +378,7 @@ class PlaLdapExporter extends PlaAbstractExporter{
|
||||
}
|
||||
|
||||
/**
|
||||
* May be called when the processing is finished
|
||||
* May be call when the processing is finished
|
||||
* and to free some ressources.
|
||||
* @return bool true or false if any errors is encountered
|
||||
* @todo This could break something, so need to add a method to LDAPServer to close connection and reset $connected.
|
||||
@@ -520,7 +520,7 @@ class PlaDsmlExporter extends PlaExporter{
|
||||
/**
|
||||
* Export the entries to DSML
|
||||
*/
|
||||
function export(){
|
||||
function export(){
|
||||
global $lang;
|
||||
$pla_ldap_info = $this->pla_get_ldap_info();
|
||||
// not very elegant, but do the job for the moment as we have just 4 level
|
||||
@@ -597,18 +597,18 @@ class PlaVcardExporter extends PlaExporter{
|
||||
|
||||
// mappping one to one attribute
|
||||
var $vcardMapping = array('cn' => 'FN',
|
||||
'title' => 'TITLE',
|
||||
'homePhone' => 'TEL;HOME',
|
||||
'mobile' => 'TEL;CELL',
|
||||
'mail' => 'EMAIL;Internet',
|
||||
'labeledURI' =>'URL',
|
||||
'o' => 'ORG',
|
||||
'audio' => 'SOUND',
|
||||
'facsmileTelephoneNumber' =>'TEL;WORK;HOME;VOICE;FAX',
|
||||
'jpegPhoto' => 'PHOTO;ENCODING=BASE64',
|
||||
'businessCategory' => 'ROLE',
|
||||
'description' => 'NOTE'
|
||||
);
|
||||
'title' => 'TITLE',
|
||||
'homePhone' => 'TEL;HOME',
|
||||
'mobile' => 'TEL;CELL',
|
||||
'mail' => 'EMAIL;Internet',
|
||||
'labeledURI' =>'URL',
|
||||
'o' => 'ORG',
|
||||
'audio' => 'SOUND',
|
||||
'facsmileTelephoneNumber' =>'TEL;WORK;HOME;VOICE;FAX',
|
||||
'jpegPhoto' => 'PHOTO;ENCODING=BASE64',
|
||||
'businessCategory' => 'ROLE',
|
||||
'description' => 'NOTE'
|
||||
);
|
||||
|
||||
var $deliveryAddress = array("postOfficeBox",
|
||||
"street",
|
||||
@@ -824,7 +824,7 @@ class PlaCSVExporter extends PlaExporter{
|
||||
|
||||
class MyCustomExporter extends PlaExporter{
|
||||
|
||||
function MyCustomExporter($exporter){
|
||||
function MyCutsomExporter($exporter){
|
||||
$this->exporter = $exporter;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
39
header.php
Normal file
39
header.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/header.php,v 1.15 2005/02/25 13:44:06 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
|
||||
// We want to get $language into scope in case we were included
|
||||
// from within a function
|
||||
global $language;
|
||||
|
||||
// text/xml won't work with MSIE, but is very useful for debugging xhtml code.
|
||||
//@header( "Content-type: text/xml; charset=\"UTF-8\"" );
|
||||
@header( "Content-type: text/html; charset=\"UTF-8\"" );
|
||||
|
||||
// XML version and encoding for well-behaved browsers
|
||||
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
|
||||
?>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $language; ?>" lang="<?php echo $language; ?>" dir="ltr">
|
||||
<head>
|
||||
<title>phpLDAPadmin</title>
|
||||
<link rel="stylesheet" href="style.css" media="screen" />
|
||||
|
||||
<?php if( isset( $server_id ) ) {
|
||||
$custom_file = get_custom_file( $server_id, 'style.css' );
|
||||
|
||||
if( strcmp( $custom_file, 'style.css' ) != 0 ) { ?>
|
||||
<link rel="stylesheet" href="<?php echo $custom_file ?>" media="screen" />
|
||||
<?php }
|
||||
} ?>
|
||||
<script src="entry_chooser.js" type="text/javascript"></script>
|
||||
<script src="ie_png_work_around.js" type="text/javascript"></script>
|
||||
<script src="search_util.js" type="text/javascript"></script>
|
||||
<script src="generic_utils.js" type="text/javascript"></script>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
</head>
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/help.php,v 1.5 2005/02/26 12:35:05 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/help.php,v 1.5 2005/02/26 12:35:05 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/lib/hooks.php,v 1.6 2005/04/15 13:16:59 wurley Exp $
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/hooks.php,v 1.5 2005/04/05 07:34:24 wurley Exp $
|
||||
|
||||
/**
|
||||
* Functions related to hooks management.
|
||||
@@ -58,10 +58,11 @@ function run_hook ( $hook_name, $args ) {
|
||||
global $hooks;
|
||||
|
||||
$debug = 0;
|
||||
syslog_debug ( "Running hook $hook_name." );
|
||||
if ($debug)
|
||||
syslog_msg ( LOG_DEBUG, "Running hook $hook_name." );
|
||||
|
||||
if ( ! array_key_exists ( $hook_name, $hooks ) ) {
|
||||
syslog_notice ( "Hook '$hook_name' not defined !\n" );
|
||||
syslog_msg ( LOG_NOTICE,"Hook '$hook_name' not defined !\n" );
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -74,22 +75,25 @@ function run_hook ( $hook_name, $args ) {
|
||||
* numerical weight. */
|
||||
while ( list ( $key, $hook ) = each ( $hooks[$hook_name] ) ) {
|
||||
array_push ( $rollbacks, $hook['rollback_function'] );
|
||||
syslog_debug ( "Calling " . $hook['hook_function'] . "\n" );
|
||||
if ($debug)
|
||||
syslog_msg ( LOG_DEBUG,"Calling " . $hook['hook_function'] . "\n" );
|
||||
$result = call_user_func_array ( $hook['hook_function'], $args );
|
||||
syslog_notice ( "Called " . $hook['hook_function'] . "\n" );
|
||||
syslog_msg ( "Called " . $hook['hook_function'] . "\n" );
|
||||
|
||||
/** If a procedure fails, its optional rollback is executed with
|
||||
* the same arguments. After that, all rollbacks from
|
||||
* previously executed procedures are executed in the reverse
|
||||
* order. */
|
||||
if ( $result != true ) {
|
||||
syslog_debug ( "Function " . $hook['hook_function'] . " returned $result\n" );
|
||||
if ($debug)
|
||||
syslog_msg ( LOG_DEBUG, "Function " . $hook['hook_function'] . " returned $result\n" );
|
||||
|
||||
while ( $rollbacks ) {
|
||||
$rollback = array_pop ( $rollbacks );
|
||||
|
||||
if ( $rollback != false ) {
|
||||
syslog_debug ( "Executing rollback $rollback\n" );
|
||||
if ($debug)
|
||||
syslog_msg ( LOG_DEBUG,"Executing rollback $rollback\n" );
|
||||
call_user_func_array ( $rollback, $args );
|
||||
}
|
||||
}
|
@@ -1,42 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/collapse.php,v 1.13 2005/07/22 05:55:19 wurley Exp $
|
||||
|
||||
/**
|
||||
* This script alters the session variable 'tree', collapsing it
|
||||
* at the dn specified in the query string.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
*
|
||||
* Note: this script is equal and opposite to expand.php
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$dn = $_GET['dn'];
|
||||
$encoded_dn = rawurlencode($dn);
|
||||
|
||||
initialize_session_tree();
|
||||
|
||||
if (array_key_exists($dn,$_SESSION['tree'][$ldapserver->server_id]))
|
||||
unset($_SESSION['tree'][$ldapserver->server_id][$dn]);
|
||||
|
||||
/* This is for Opera. By putting "random junk" in the query string, it thinks
|
||||
that it does not have a cached version of the page, and will thus
|
||||
fetch the page rather than display the cached version */
|
||||
$time = gettimeofday();
|
||||
$random_junk = md5(strtotime('now') . $time['usec']);
|
||||
|
||||
/* If cookies were disabled, build the url parameter for the session id.
|
||||
It will be append to the url to be redirect */
|
||||
$id_session_param = "";
|
||||
if (SID != "")
|
||||
$id_session_param = "&".session_name()."=".session_id();
|
||||
|
||||
header(sprintf('Location:tree.php?foo=%s#%s_%s%s',$random_junk,$ldapserver->server_id,$encoded_dn,$id_session_param));
|
||||
?>
|
@@ -1,5 +0,0 @@
|
||||
<?php
|
||||
# This is a temporary file
|
||||
@define('LIBDIR',sprintf('%s/',realpath('../lib/')));
|
||||
require LIBDIR.'common.php';
|
||||
?>
|
222
htdocs/copy.php
222
htdocs/copy.php
@@ -1,222 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/copy.php,v 1.35.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Copies a given object to create a new one.
|
||||
*
|
||||
* Vars that come in as POST vars
|
||||
* - source_dn (rawurlencoded)
|
||||
* - new_dn (form element)
|
||||
* - server_id
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$server_id_src = (isset($_POST['server_id']) ? $_POST['server_id'] : '');
|
||||
$server_id_dst = (isset($_POST['dest_server_id']) ? $_POST['dest_server_id'] : '');
|
||||
|
||||
$ldapserver_src = $ldapservers->Instance($server_id_src);
|
||||
$ldapserver_dst = $ldapservers->Instance($server_id_dst);
|
||||
|
||||
if ($ldapserver_dst->isReadOnly())
|
||||
pla_error($lang['copy_server_read_only']);
|
||||
|
||||
if (! $ldapserver_src->haveAuthInfo() || ! $ldapserver_dst->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn_src = $_POST['old_dn'];
|
||||
$dn_dst = $_POST['new_dn'];
|
||||
$do_recursive = (isset($_POST['recursive']) && $_POST['recursive'] == 'on') ? true : false;
|
||||
$do_remove = (isset($_POST['remove']) && $_POST['remove'] == 'yes') ? true : false;
|
||||
$encoded_dn = rawurlencode($dn_src);
|
||||
|
||||
include './header.php';
|
||||
|
||||
# Error checking
|
||||
if (0 == strlen(trim($dn_dst)))
|
||||
pla_error($lang['copy_dest_dn_blank']);
|
||||
|
||||
if (pla_compare_dns($dn_src,$dn_dst) == 0 && $server_id_src == $server_id_dst)
|
||||
pla_error($lang['copy_source_dest_dn_same']);
|
||||
|
||||
if (dn_exists($ldapserver_dst,$dn_dst))
|
||||
pla_error(sprintf($lang['copy_dest_already_exists'],pretty_print_dn($dn_dst)));
|
||||
|
||||
if (! dn_exists($ldapserver_dst,get_container($dn_dst)))
|
||||
pla_error(sprintf($lang['copy_dest_container_does_not_exist'],pretty_print_dn(get_container($dn_dst))));
|
||||
|
||||
if ($do_recursive) {
|
||||
$filter = isset($_POST['filter']) ? $_POST['filter'] : '(objectClass=*)';
|
||||
|
||||
# Build a tree similar to that of the tree browser to give to r_copy_dn
|
||||
$snapshot_tree = array();
|
||||
print '<body>';
|
||||
printf('<h3 class="title">%s%s</h3>',$lang['copy_copying'],htmlspecialchars($dn_src));
|
||||
printf('<h3 class="subtitle">%s</h3>',$lang['copy_recursive_copy_progress']);
|
||||
print '<br /><br />';
|
||||
print '<small>';
|
||||
print $lang['copy_building_snapshot'];
|
||||
|
||||
flush();
|
||||
|
||||
$snapshot_tree = build_tree($ldapserver_src,$dn_src,array(),$filter);
|
||||
printf('<span style="color:green">%s</span><br />',$lang['success']);
|
||||
flush();
|
||||
|
||||
# Prevent script from bailing early on a long delete
|
||||
@set_time_limit(0);
|
||||
|
||||
$copy_result = r_copy_dn($ldapserver_src,$ldapserver_dst,$snapshot_tree,$dn_src,$dn_dst);
|
||||
print '</small>';
|
||||
|
||||
} else {
|
||||
$copy_result = copy_dn($ldapserver_src,$ldapserver_dst,$dn_src,$dn_dst);
|
||||
}
|
||||
|
||||
if ($copy_result) {
|
||||
$edit_url = sprintf('edit.php?server_id=%s&dn=%s',$server_id_dst,rawurlencode($dn_dst));
|
||||
$new_rdn = get_rdn($dn_dst);
|
||||
$container = get_container($dn_dst);
|
||||
|
||||
if (array_key_exists('tree',$_SESSION)) {
|
||||
# do we not have a tree and tree icons yet? Build a new ones.
|
||||
initialize_session_tree();
|
||||
$tree = $_SESSION['tree'];
|
||||
$tree_icons = $_SESSION['tree_icons'];
|
||||
|
||||
if (isset($tree[$server_id_dst][$container])) {
|
||||
$tree[$server_id_dst][$container][] = $dn_dst;
|
||||
sort($tree[$server_id_dst][$container]);
|
||||
$tree_icons[$server_id_dst][$dn_dst] = get_icon($ldapserver_dst,$dn_dst);
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
$_SESSION['tree_icons'] = $tree_icons;
|
||||
session_write_close();
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<center>
|
||||
<?php printf('%s<a href="%s">%s</a>',$lang['copy_successful_like_to'],$edit_url,$lang['copy_view_new_entry']) ?>
|
||||
</center>
|
||||
<!-- refresh the tree view (with the new DN renamed)
|
||||
and redirect to the edit_dn page -->
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
if ($do_remove) {
|
||||
sleep(2);
|
||||
$delete_url = sprintf('delete_form.php?server_id=%s&dn=%s',$server_id_dst,rawurlencode($dn_src));
|
||||
?>
|
||||
|
||||
<!-- redirect to the delete form -->
|
||||
<script language="javascript">
|
||||
parent.right_frame.location="<?php echo $delete_url; ?>"
|
||||
</script>
|
||||
<?php }
|
||||
|
||||
} else {
|
||||
exit;
|
||||
}
|
||||
|
||||
function r_copy_dn($ldapserver_src,$ldapserver_dst,$tree,$root_dn,$dn_dst) {
|
||||
if (DEBUG_ENABLED)
|
||||
debug_log('r_copy_dn: Entered with (%s,%s,%s,%s,%s)',2,
|
||||
$ldapserver_src->server_id,$ldapserver_dst->server_id,serialize($tree),$root_dn,$dn_dst);
|
||||
|
||||
global $lang;
|
||||
|
||||
printf('<nobr>%s %s...',$lang['copy_copying'],htmlspecialchars($root_dn));
|
||||
flush();
|
||||
|
||||
$copy_result = copy_dn($ldapserver_src,$ldapserver_dst,$root_dn,$dn_dst);
|
||||
|
||||
if (! $copy_result)
|
||||
return false;
|
||||
|
||||
printf('<span style="color:green">%s</span></nobr><br />',$lang['success']);
|
||||
flush();
|
||||
|
||||
$children = isset($tree[$root_dn]) ? $tree[$root_dn] : null;
|
||||
if (is_array($children) && count($children) > 0) {
|
||||
foreach($children as $child_dn) {
|
||||
$child_rdn = get_rdn($child_dn);
|
||||
$new_dest_dn = sprintf('%s,%s',$child_rdn,$dn_dst);
|
||||
r_copy_dn($ldapserver_src,$ldapserver_dst,$tree,$child_dn,$new_dest_dn);
|
||||
}
|
||||
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function copy_dn($ldapserver_src,$ldapserver_dst,$dn_src,$dn_dst) {
|
||||
if (DEBUG_ENABLED)
|
||||
debug_log('copy_dn: Entered with (%s,%s,%s,%s)',2,
|
||||
$ldapserver_src->server_id,$ldapserver_dst->server_id,$dn_src,$dn_dst);
|
||||
|
||||
global $lang;
|
||||
|
||||
$new_entry = get_object_attrs($ldapserver_src,$dn_src);
|
||||
|
||||
# modify the prefix-value (ie "bob" in cn=bob) to match the destination DN's value.
|
||||
$rdn_attr = substr($dn_dst,0,strpos($dn_dst,'='));
|
||||
$rdn_value = get_rdn($dn_dst);
|
||||
$rdn_value = substr($rdn_value,strpos($rdn_value,'=') + 1);
|
||||
$new_entry[$rdn_attr] = $rdn_value;
|
||||
|
||||
# don't need a dn attribute in the new entry
|
||||
unset($new_entry['dn']);
|
||||
|
||||
# Check the user-defined custom call back first
|
||||
if (true === run_hook('pre_entry_create',
|
||||
array ('server_id'=>$ldapserver_dst->server_id,'dn'=>$dn_dst,'attrs'=>$new_entry))) {
|
||||
|
||||
$add_result = @ldap_add($ldapserver_dst->connect(),$dn_dst,$new_entry);
|
||||
if (! $add_result) {
|
||||
run_hook('post_entry_create',array('server_id'=>$ldapserver_dst->server_id,
|
||||
'dn'=>$dn_dst,'attrs'=>$new_entry));
|
||||
|
||||
print '</small><br /><br />';
|
||||
pla_error($lang['copy_failed'] . $dn_dst,$ldapserver_dst->error(),$ldapserver_dst->errno());
|
||||
}
|
||||
|
||||
return $add_result;
|
||||
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param object $ldapserver
|
||||
* @param dn $dn
|
||||
* @param array $tree
|
||||
* @param string $filter
|
||||
*/
|
||||
function build_tree($ldapserver,$dn,$tree,$filter='(objectClass=*)') {
|
||||
$children = get_container_contents($ldapserver,$dn,0,$filter);
|
||||
|
||||
if (is_array($children) && count($children) > 0) {
|
||||
$tree[$dn] = $children;
|
||||
foreach ($children as $child_dn)
|
||||
$tree = build_tree($ldapserver,$child_dn,$tree,$filter);
|
||||
}
|
||||
|
||||
if (DEBUG_ENABLED)
|
||||
debug_log('build_tree: Entered with (%s,%s,%s,%s), Returning (%s)',1,
|
||||
$ldapserver->server_id,$dn,serialize($tree),$filter,serialize($tree));
|
||||
|
||||
return $tree;
|
||||
}
|
||||
?>
|
@@ -1,71 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/creation_template.php,v 1.29 2005/09/25 16:11:44 wurley Exp $
|
||||
|
||||
/**
|
||||
* This file simply acts as a plugin grabber for the creator templates in
|
||||
* the directory templates/creation/
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* server_id
|
||||
* Expected POST vars:
|
||||
* template
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
* @deprecated This file is no longer need when the template engine is up and running.
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($config->GetValue('template_engine','enable') && (! is_numeric($_REQUEST['template']))) {
|
||||
require './template_engine.php';
|
||||
die();
|
||||
}
|
||||
|
||||
require TMPLDIR.'template_config.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$template = (isset($_REQUEST['template']) ? $_REQUEST['template'] : null);
|
||||
! is_null($template) or pla_error($lang['ctemplate_no_template']);
|
||||
|
||||
if ($template == 'custom') {
|
||||
foreach ($templates as $id => $template) {
|
||||
if ($template['handler'] == 'custom.php') {
|
||||
$template = $id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
isset($templates[$template]) or pla_error(sprintf($lang['invalid_template'], htmlspecialchars($template)));
|
||||
$template_id = $template;
|
||||
$template = isset($templates[$template]) ? $templates[$template_id] : null;
|
||||
|
||||
if (! array_key_exists('no_header',$template)) {
|
||||
include './header.php';
|
||||
?>
|
||||
|
||||
<body>
|
||||
<h3 class="title"><?php echo $lang['createf_create_object']?></h3>
|
||||
<h3 class="subtitle"><?php echo $lang['ctemplate_on_server']?> '<?php echo htmlspecialchars($ldapserver->name); ?>', <?php echo $lang['using_template']?> '<?php echo htmlspecialchars($template['desc']); ?>'</h3>
|
||||
|
||||
<?php }
|
||||
|
||||
$handler = TMPLDIR.'creation/' . $template['handler'];
|
||||
|
||||
if (! file_exists($handler))
|
||||
pla_error(sprintf($lang['template_does_not_exist'],htmlspecialchars($template['handler'])));
|
||||
|
||||
if (! is_readable($handler))
|
||||
pla_error(sprintf($lang['template_not_readable'],htmlspecialchars($template['handler'])));
|
||||
|
||||
include $handler;
|
||||
|
||||
if (! array_key_exists('no_header',$template))
|
||||
echo "</body>\n</html>";
|
||||
?>
|
@@ -1,81 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete.php,v 1.23.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Deletes a DN and presents a "job's done" message.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as POST vars:
|
||||
* - dn (rawurlencoded)
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn = $_POST['dn'];
|
||||
$encoded_dn = rawurlencode($dn);
|
||||
|
||||
if (is_null($dn))
|
||||
pla_error($lang['you_must_specify_a_dn']);
|
||||
|
||||
dn_exists($ldapserver,$dn) or pla_error(sprintf($lang['no_such_entry'], '<b>' . pretty_print_dn($dn) . '</b>'));
|
||||
|
||||
// Check the user-defined custom callback first.
|
||||
if (run_hook('pre_entry_delete',array('server_id' => $ldapserver->server_id,'dn' => $dn)))
|
||||
$del_result = @ldap_delete($ldapserver->connect(), $dn);
|
||||
|
||||
else
|
||||
pla_error(sprintf($lang['could_not_delete_entry'],'<b>'.pretty_print_dn($dn).'</b>'));
|
||||
|
||||
if ($del_result) {
|
||||
|
||||
# Custom callback
|
||||
run_hook('post_entry_delete',array('server_id' => $ldapserver->server_id,'dn' => $dn));
|
||||
|
||||
# kill the DN from the tree browser session variable and
|
||||
# refresh the tree viewer frame (left_frame)
|
||||
if (array_key_exists('tree', $_SESSION)) {
|
||||
$tree = $_SESSION['tree'];
|
||||
|
||||
if (isset($tree[$ldapserver->server_id]) && is_array($tree[$ldapserver->server_id])) {
|
||||
|
||||
# does it have children? (it shouldn't, but hey, you never know)
|
||||
if (isset($tree[$ldapserver->server_id][$dn]))
|
||||
unset($tree[$ldapserver->server_id][$dn]);
|
||||
|
||||
# search and destroy
|
||||
foreach ($tree[$ldapserver->server_id] as $tree_dn => $subtree)
|
||||
foreach ($subtree as $key => $sub_tree_dn)
|
||||
if (0 == strcasecmp($sub_tree_dn, $dn))
|
||||
unset($tree[$ldapserver->server_id][$tree_dn][$key]);
|
||||
|
||||
$_SESSION['tree'] = $tree;
|
||||
}
|
||||
session_write_close();
|
||||
}
|
||||
|
||||
include './header.php'; ?>
|
||||
|
||||
<script language="javascript">
|
||||
parent.left_frame.location.reload();
|
||||
</script>
|
||||
|
||||
<br />
|
||||
<br />
|
||||
<center><?php echo sprintf($lang['entry_deleted_successfully'],'<b>'.pretty_print_dn($dn).'</b>'); ?></center>
|
||||
|
||||
<?php
|
||||
} else {
|
||||
pla_error(sprintf($lang['could_not_delete_entry'], '<b>' . pretty_print_dn($dn) . '</b>'),
|
||||
$ldapserver->error(), $ldapserver->errno());
|
||||
}
|
||||
?>
|
@@ -1,54 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/delete_attr.php,v 1.13.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Deletes an attribute from an entry with NO confirmation.
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
*
|
||||
* On success, redirect to edit.php
|
||||
* On failure, echo an error.
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn = isset($_POST['dn']) ? $_POST['dn'] : null;
|
||||
$attr = isset($_POST['attr']) ? $_POST['attr'] : null;
|
||||
|
||||
if (! $dn)
|
||||
pla_error($lang['no_dn_specified']);
|
||||
|
||||
if (! $attr)
|
||||
pla_error($lang['no_attr_specified']);
|
||||
|
||||
$encoded_dn = rawurlencode($dn);
|
||||
|
||||
if (is_attr_read_only($ldapserver,$attr))
|
||||
pla_error(sprintf($lang['attr_is_read_only'],htmlspecialchars($attr)));
|
||||
|
||||
$update_array = array();
|
||||
$update_array[$attr] = array();
|
||||
|
||||
$res = @ldap_modify($ldapserver->connect(),$dn,$update_array);
|
||||
if ($res) {
|
||||
$redirect_url = sprintf("edit.php?server_id=%s&dn=%s",$ldapserver->server_id,$encoded_dn);
|
||||
|
||||
foreach($update_array as $attr => $junk)
|
||||
$redirect_url .= "&modified_attrs[]=$attr";
|
||||
|
||||
header("Location: $redirect_url");
|
||||
|
||||
} else {
|
||||
pla_error($lang['could_not_perform_ldap_modify'],$ldapserver->error(),$ldapserver->errno());
|
||||
}
|
||||
?>
|
@@ -1,44 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/download_binary_attr.php,v 1.12.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
if ($ldapserver->isReadOnly())
|
||||
pla_error($lang['no_updates_in_read_only_mode']);
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn = rawurldecode($_GET['dn']);
|
||||
$attr = $_GET['attr'];
|
||||
|
||||
# if there are multiple values in this attribute, which one do you want to see?
|
||||
$value_num = isset($_GET['value_num']) ? $_GET['value_num'] : 0;
|
||||
|
||||
dn_exists($ldapserver,$dn) or
|
||||
pla_error(sprintf($lang['no_such_entry'],pretty_print_dn($dn)));
|
||||
|
||||
$search = @ldap_read($ldapserver->connect(),$dn,"(objectClass=*)",array($attr),0,0,0,$config->GetValue('deref','view'));
|
||||
if (! $search)
|
||||
pla_error($lang['error_performing_search'],$ldapserver->error(),$ldapserver->errno());
|
||||
|
||||
$entry = ldap_first_entry($ldapserver->connect(),$search);
|
||||
$attrs = ldap_get_attributes($ldapserver->connect(),$entry);
|
||||
$attr = ldap_first_attribute($ldapserver->connect(),$entry,$attrs);
|
||||
$values = ldap_get_values_len($ldapserver->connect(),$entry,$attr);
|
||||
$count = $values['count'];
|
||||
|
||||
// Dump the binary data to the browser
|
||||
header("Content-type: octet-stream");
|
||||
header("Content-disposition: attachment; filename=$attr");
|
||||
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
|
||||
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
|
||||
echo $values[$value_num];
|
||||
?>
|
@@ -1,59 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/edit.php,v 1.56 2005/09/25 16:11:44 wurley Exp $
|
||||
|
||||
/**
|
||||
* Displays the specified dn from the specified server for editing
|
||||
* in its template as determined by get_template(). This is a simple
|
||||
* shell for displaying entries. The real work is done by the templates
|
||||
* found in tempaltes/modification/
|
||||
*
|
||||
* Variables that come in via common.php
|
||||
* - server_id
|
||||
* Variables that come in as GET vars:
|
||||
* - dn (rawurlencoded)
|
||||
* - use_default_template (optional) If set, use the default template no matter what
|
||||
* - Other vars may be set and used by the modification templates
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
require TMPLDIR.'template_config.php';
|
||||
|
||||
if( ! $ldapserver->haveAuthInfo())
|
||||
pla_error( $lang['not_enough_login_info'] );
|
||||
|
||||
$dn = isset($_GET['dn']) ? $_GET['dn'] : false;
|
||||
$dn !== false or pla_error($lang['missing_dn_in_query_string']);
|
||||
|
||||
$decoded_dn = rawurldecode($dn);
|
||||
$encoded_dn = rawurlencode($decoded_dn);
|
||||
|
||||
/* Template authors may wish to present the user with a link back to the default, generic
|
||||
template for editing. They may use this as the target of the href to do so.
|
||||
@deprectated
|
||||
*/
|
||||
$default_href = sprintf("edit.php?server_id=%s&dn=%s&use_default_template=true",$ldapserver->server_id,$encoded_dn);
|
||||
$use_default_template = isset( $_GET['use_default_template'] ) || $config->GetValue('template_engine','enable');
|
||||
|
||||
if( $use_default_template ) {
|
||||
if ($config->GetValue('template_engine','enable'))
|
||||
require './template_engine.php';
|
||||
else
|
||||
require TMPLDIR.'modification/default.php';
|
||||
|
||||
} else {
|
||||
$template = get_template($ldapserver,$dn);
|
||||
$template_file = TMPLDIR."modification/$template.php";
|
||||
|
||||
if (file_exists($template_file))
|
||||
require $template_file;
|
||||
|
||||
else {
|
||||
printf('%s <b>%s</b> %s<br />',$lang['missing_template_file'],$template_file,$lang['using_default']);
|
||||
require TMPLDIR.'modification/default.php';
|
||||
}
|
||||
}
|
||||
?>
|
@@ -1,115 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/entry_chooser.php,v 1.26.2.1 2005/10/09 09:07:21 wurley Exp $
|
||||
|
||||
/**
|
||||
* Display a selection (popup window) to pick a DN.
|
||||
*
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
/**
|
||||
*/
|
||||
|
||||
require './common.php';
|
||||
|
||||
$container = isset($_GET['container']) ? rawurldecode($_GET['container']) : false;
|
||||
$return_form_element = isset($_GET['form_element']) ? htmlspecialchars($_GET['form_element']) : null;
|
||||
$rdn = isset($_GET['rdn']) ? htmlspecialchars($_GET['rdn']) : null;
|
||||
|
||||
include "./header.php";
|
||||
|
||||
printf('<h3 class="subtitle">%s</h3>',$lang['entry_chooser_title']);
|
||||
flush();
|
||||
?>
|
||||
|
||||
<script language="javascript">
|
||||
function returnDN( dn ) {
|
||||
opener.document.<?php echo $return_form_element; ?>.value = dn;
|
||||
close();
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php
|
||||
if ($container) {
|
||||
printf('%s<b>%s</b>',$lang['server_colon_pare'],htmlspecialchars($ldapserver->name));
|
||||
print '<br />';
|
||||
printf('%s<b>%s</b>',$lang['look_in'],htmlspecialchars($container));
|
||||
print '<br />';
|
||||
}
|
||||
|
||||
/* Has the use already begun to descend into a specific server tree? */
|
||||
if (isset($ldapserver) && $container !== false) {
|
||||
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
pla_error($lang['not_enough_login_info']);
|
||||
|
||||
$dn_list = get_container_contents($ldapserver,$container,0,'(objectClass=*)',$config->GetValue('deref','tree'));
|
||||
sort($dn_list);
|
||||
|
||||
foreach ($ldapserver->getBaseDN() as $base_dn) {
|
||||
if (DEBUG_ENABLED)
|
||||
debug_log('entry_chooser.php: Comparing BaseDN [%s] with container [%s]',9,$base_dn,$container);
|
||||
|
||||
if (! pla_compare_dns($container,$base_dn)) {
|
||||
$parent_container = false;
|
||||
$up_href = sprintf('entry_chooser.php?form_element=%s&rdn=%s',$return_form_element,$rdn);
|
||||
break;
|
||||
|
||||
} else {
|
||||
$parent_container = get_container($container);
|
||||
$up_href = sprintf('entry_chooser.php?form_element=%s&rdn=%s&server_id=%s&container=%s',
|
||||
$return_form_element,$rdn,$ldapserver->server_id,rawurlencode($parent_container));
|
||||
}
|
||||
}
|
||||
|
||||
print ' ';
|
||||
printf('<a href="%s" style="text-decoration:none"><img src="images/up.png"> %s</a>',$up_href,$lang['back_up_p']);
|
||||
print '<br />';
|
||||
|
||||
if (! count($dn_list))
|
||||
printf(' (%s)<br />',$lang['no_entries']);
|
||||
|
||||
else
|
||||
foreach ($dn_list as $dn) {
|
||||
$href = sprintf("javascript:returnDN('%s%s')",($rdn ? "$rdn," : ''),$dn);
|
||||
print ' ';
|
||||
printf('<a href="entry_chooser.php?server_id=%s&form_element=%s&rdn=%s&container=%s"><img src="images/plus.png" /></a>',
|
||||
$ldapserver->server_id,$return_form_element,$rdn,rawurlencode($dn));
|
||||
|
||||
printf('<a href="%s">%s</a>',$href,htmlspecialchars($dn));
|
||||
print '<br />';
|
||||
}
|
||||
|
||||
/* draw the root of the selection tree (ie, list all the servers) */
|
||||
} else {
|
||||
foreach ($ldapservers->GetServerList() as $id) {
|
||||
|
||||
$ldapserver = $ldapservers->Instance($id);
|
||||
|
||||
if ($ldapserver->isVisible()) {
|
||||
|
||||
if (! $ldapserver->haveAuthInfo())
|
||||
continue;
|
||||
|
||||
else {
|
||||
printf('<b>%s</b>',htmlspecialchars($ldapserver->name));
|
||||
print '<br />';
|
||||
foreach ($ldapserver->getBaseDN() as $dn) {
|
||||
if (! $dn) {
|
||||
printf('<small> (%s)</small><br />',$lang['could_not_det_base_dn']);
|
||||
|
||||
} else {
|
||||
$href = sprintf("javascript:returnDN('%s%s')",($rdn ? "$rdn," : ''),$dn);
|
||||
|
||||
print ' ';
|
||||
printf('<a href="entry_chooser.php?server_id=%s&form_element=%s&rdn=%s&container=%s"><img src="images/plus.png" /></a> ',
|
||||
$ldapserver->server_id,$return_form_element,$rdn,rawurlencode($dn));
|
||||
|
||||
printf('<a href="%s">%s</a>',$href,htmlspecialchars($dn));
|
||||
print '<br />';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
@@ -1,49 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/header.php,v 1.19.2.2 2005/10/25 20:21:15 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
*/
|
||||
|
||||
// We want to get $language into scope in case we were included
|
||||
// from within a function
|
||||
global $config;
|
||||
$language = isset($config) ? $language = $config->GetValue('appearance','language') : 'auto';
|
||||
|
||||
// text/xml won't work with MSIE, but is very useful for debugging xhtml code.
|
||||
//@header( "Content-type: text/xml; charset=\"UTF-8\"" );
|
||||
@header( "Content-type: text/html; charset=\"UTF-8\"" );
|
||||
|
||||
// XML version and encoding for well-behaved browsers
|
||||
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
|
||||
?>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $language; ?>" lang="<?php echo $language; ?>" dir="ltr">
|
||||
<head>
|
||||
<?php if (isset($config) && $pagetitle = $config->GetValue('appearance','page_title')) { ?>
|
||||
<title>phpLDAPadmin - <?php echo $pagetitle; ?></title>
|
||||
<?php } else { ?>
|
||||
<title>phpLDAPadmin</title>
|
||||
<?php } ?>
|
||||
<link rel="stylesheet" href="<?php echo CSSDIR ?>style.css" media="screen" />
|
||||
|
||||
<?php if( isset( $server_id ) ) {
|
||||
$custom_file = get_custom_file( $server_id, 'style.css',CSSDIR );
|
||||
|
||||
if( strcmp( $custom_file, 'style.css' ) != 0 ) { ?>
|
||||
<link rel="stylesheet" href="<?php echo $custom_file ?>" media="screen" />
|
||||
<?php }
|
||||
} ?>
|
||||
<script src="<?php echo JSDIR; ?>entry_chooser.js" type="text/javascript"></script>
|
||||
<script src="<?php echo JSDIR; ?>ie_png_work_around.js" type="text/javascript"></script>
|
||||
<script src="<?php echo JSDIR; ?>search_util.js" type="text/javascript"></script>
|
||||
<script src="<?php echo JSDIR; ?>generic_utils.js" type="text/javascript"></script>
|
||||
<link rel="stylesheet" type="text/css" media="all" href="js/jscalendar/calendar-blue.css" title="blue" />
|
||||
<script type="text/javascript" src="js/jscalendar/calendar.js"></script>
|
||||
<script type="text/javascript" src="js/jscalendar/lang/calendar-en.js"></script>
|
||||
<script type="text/javascript" src="js/jscalendar/calendar-setup.js"></script>
|
||||
<script type="text/javascript" src="<?php echo JSDIR; ?>date_selector.js"></script>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
||||
</head>
|
Binary file not shown.
Before Width: | Height: | Size: 478 B |
Binary file not shown.
Before Width: | Height: | Size: 692 B |
Binary file not shown.
Before Width: | Height: | Size: 3.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 637 B |
251
htdocs/index.php
251
htdocs/index.php
@@ -1,251 +0,0 @@
|
||||
<?php
|
||||
// $Header: /cvsroot/phpldapadmin/phpldapadmin/htdocs/index.php,v 1.39.2.3 2005/10/17 10:03:38 wurley Exp $
|
||||
|
||||
/**
|
||||
* @package phpLDAPadmin
|
||||
* @todo: Move config.php syntax error processing to earlier.
|
||||
*/
|
||||
|
||||
/*******************************************
|
||||
<pre>
|
||||
|
||||
If you are seeing this in your browser,
|
||||
PHP is not installed on your web server!!!
|
||||
|
||||
</pre>
|
||||
*******************************************/
|
||||
|
||||
/**
|
||||
* We will perform some sanity checking here, since this file is normally loaded first when users
|
||||
* first setup PLA.
|
||||
*/
|
||||
define('LIBDIR','../lib/');
|
||||
ini_set('display_errors',1);
|
||||
error_reporting(E_ALL);
|
||||
|
||||
# General functions needed to proceed (pla_ldap_search(), pla_error(), get_object_attrs(), etc.)
|
||||
ob_start();
|
||||
if (! file_exists(LIBDIR.'functions.php')) {
|
||||
ob_end_clean();
|
||||
die("Fatal error: Required file 'functions.php' does not exist.");
|
||||
}
|
||||
|
||||
if (! is_readable(LIBDIR.'functions.php')) {
|
||||
ob_end_clean();
|
||||
die("Cannot read the file 'functions.php' its permissions are too strict.");
|
||||
}
|
||||
require LIBDIR.'functions.php';
|
||||
$config_file = CONFDIR.'config.php';
|
||||
ob_end_clean();
|
||||
|
||||
/* Helper functions.
|
||||
* Our required helper functions are defined in functions.php
|
||||
*/
|
||||
foreach ($pla_function_files as $file_name ) {
|
||||
if (! file_exists($file_name))
|
||||
pla_error("Fatal error: Required file '$file_name' does not exist.");
|
||||
|
||||
if (! is_readable($file_name))
|
||||
pla_error( "Fatal error: Cannot read the file '$file_name', its permissions are too strict." );
|
||||
|
||||
ob_start();
|
||||
require $file_name;
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
# Configuration File check
|
||||
if (! file_exists($config_file)) {
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>phpLDAPadmin - <?php echo pla_version(); ?></title>
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h3 class="title">Configure phpLDAPadmin</h1>
|
||||
<br />
|
||||
<br />
|
||||
|
||||
<center><?php echo $lang['need_to_configure']; ?></center>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php
|
||||
die();
|
||||
|
||||
} elseif (! is_readable($config_file)) {
|
||||
pla_error(sprintf('Fatal error: Cannot read your configuration file "%s", its permissions are too strict.',$config_file));
|
||||
}
|
||||
|
||||
# Now read in config_default.php, which also reads in config.php
|
||||
require LIBDIR.'config_default.php';
|
||||
|
||||
if (check_config()) {
|
||||
print '<?xml version="1.0" encoding="utf-8"?>';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN"
|
||||
"http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="no-NO">
|
||||
|
||||
<?php if ($pagetitle = $config->GetValue('appearance','page_title')) { ?>
|
||||
<head><title>phpLDAPadmin (<?php echo pla_version(); ?>) - <?php echo $pagetitle; ?></title></head>
|
||||
<?php } else { ?>
|
||||
<head><title>phpLDAPadmin - <?php echo pla_version(); ?></title></head>
|
||||
<?php } ?>
|
||||
|
||||
<frameset cols="<?php echo $config->GetValue('appearance','tree_width'); ?>,*">
|
||||
<frame src="tree.php" name="left_frame" id="left_frame" />
|
||||
<frame src="welcome.php" name="right_frame" id="right_frame" />
|
||||
</frameset>
|
||||
|
||||
</html>
|
||||
|
||||
<?php }
|
||||
|
||||
/*
|
||||
* Makes sure that the config file is properly setup and
|
||||
* that your install of PHP can handle LDAP stuff.
|
||||
*/
|
||||
function check_config() {
|
||||
global $lang, $config_file;
|
||||
|
||||
# Make sure their PHP version is current enough
|
||||
if (strcmp(phpversion(),REQUIRED_PHP_VERSION) < 0) {
|
||||
pla_error(sprintf('phpLDAPadmin requires PHP version %s or greater. You are using %s',
|
||||
REQUIRED_PHP_VERSION,phpversion()));
|
||||
}
|
||||
|
||||
# Make sure this PHP install has all our required extensions
|
||||
if (! extension_loaded('ldap')) {
|
||||
pla_error( "Your install of PHP appears to be missing LDAP support. Please install " .
|
||||
"LDAP support before using phpLDAPadmin. (Don't forget to restart your web server afterwards)");
|
||||
return false;
|
||||
}
|
||||
|
||||
# Make sure that we have php-xml loaded.
|
||||
if (! function_exists('xml_parser_create')) {
|
||||
pla_error( "Your install of PHP appears to be missing XML support. Please install " .
|
||||
"XML support before using phpLDAPadmin. (Don't forget to restart your web server afterwards)");
|
||||
return false;
|
||||
}
|
||||
|
||||
# Make sure their session save path is writable, if they are using a file system session module, that is.
|
||||
if ( ! strcasecmp("Files",session_module_name() && ! is_writable(realpath(session_save_path())))) {
|
||||
pla_error( "Your PHP session configuration is incorrect. Please check the value of session.save_path
|
||||
in your php.ini to ensure that the directory specified there exists and is writable.
|
||||
The current setting of \"". session_save_path() . "\" is un-writable by the web server.");
|
||||
return false;
|
||||
}
|
||||
|
||||
/* check for syntax errors in config.php */
|
||||
# capture the result of including the file with output buffering
|
||||
ob_start();
|
||||
include $config_file;
|
||||
$str = ob_get_contents();
|
||||
ob_end_clean();
|
||||
|
||||
if( $str && false !== strpos( $str, 'error' ) ) {
|
||||
$str = strip_tags( $str );
|
||||
$matches = array();
|
||||
preg_match( "/on line (\d+)/", $str, $matches );
|
||||
$line_num = $matches[1];
|
||||
$file = file($config_file);
|
||||
?>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>phpLDAPadmin Config File Error</title>
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h3 class="title">Config file error</h3>
|
||||
<h3 class="subtitle">Syntax error on line <?php echo $line_num; ?></h3>
|
||||
|
||||
<center>
|
||||
Looks like your config file has a syntax error on line <?php echo $line_num; ?>.
|
||||
Here is a snippet around that line
|
||||
<br />
|
||||
<br />
|
||||
<div style="text-align: left; margin-left: 80px; margin-right: 80px; border: 1px solid black; padding: 10px;">
|
||||
<tt>
|
||||
|
||||
<?php for( $i=$line_num-9; $i<$line_num+5; $i++ ) {
|
||||
if( $i+1 == $line_num )
|
||||
echo "<div style=\"color:red;background:#fdd\">";
|
||||
|
||||
if( $i < 0 )
|
||||
continue;
|
||||
echo "<b>" . ($i+1) . "</b>: " . htmlspecialchars($file[ $i ]) . "<br />";
|
||||
|
||||
if( $i+1 == $line_num )
|
||||
echo "</div>";
|
||||
}
|
||||
?>
|
||||
|
||||
</tt>
|
||||
|
||||
</div>
|
||||
<br />
|
||||
Hint: Sometimes these errors are caused by lines <b>preceding</b> the line reported.
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<?php return false;
|
||||
}
|
||||
|
||||
/* check the existence of the servers array */
|
||||
require $config_file;
|
||||
|
||||
if( ! isset($ldapservers) || count($ldapservers->GetServerList()) == 0) {
|
||||
pla_error( "Your config.php is missing Server Definitions
|
||||
Please see the sample file config.php.example ", false );
|
||||
return false;
|
||||
}
|
||||
|
||||
# @todo: Implement this and fix all the tests.
|
||||
/*
|
||||
if ( ! count($ldapservers->GetServerList())) {
|
||||
pla_error( "None of the " . count($servers) . " servers in your \$servers configuration is
|
||||
active in config.php. At least one of your servers must set the 'host' directive.
|
||||
Example: <br><pre>\$servers['host'] = \"ldap.example.com\";<br></pre>
|
||||
phpLDAPadmin cannot proceed util you correct this.", false );
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check that 'base' is present on all serve entries
|
||||
foreach( $servers as $id => $server ) {
|
||||
if( isset( $server['host'] ) && isset( $server['name'] ) )
|
||||
isset( $server['base'] )
|
||||
or pla_error ( "Your configuration has an error. You omitted the 'base' directive
|
||||
on server number $id. Your server entry must have a 'base' directive
|
||||
even if it's empty ('')." );
|
||||
}
|
||||
|
||||
// Check each of the servers in the servers array
|
||||
foreach( $servers as $id => $server ) {
|
||||
if( isset( $server['host'] ) ) {
|
||||
|
||||
// Make sure they specified an auth_type
|
||||
if( ! isset( $server['auth_type'] ) ) {
|
||||
pla_error( "Your configuration has an error. You omitted the 'auth_type' directive on server number $id
|
||||
'auth_type' must be set, and it must be one of 'config', 'cookie', or 'session'.", false );
|
||||
return false;
|
||||
}
|
||||
|
||||
// Make sure they specified a correct auth_type
|
||||
if( ! in_array( $server['auth_type'], array( 'config', 'cookie', 'session' ) ) ) {
|
||||
global $lang;
|
||||
pla_error( sprintf( $lang['error_auth_type_config'], htmlspecialchars( $server['auth_type'] ) ) );
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
return true;
|
||||
}
|
||||
?>
|
@@ -1,69 +0,0 @@
|
||||
function dateSelector(id) {
|
||||
var el = document.getElementById('f_date_'+id);
|
||||
var format = gettype(el.id);
|
||||
var epoch;
|
||||
var parse = false;
|
||||
|
||||
var cal = new Calendar(0, null, onSelect, onClose);
|
||||
cal.showsTime = false;
|
||||
cal.weekNumbers = true;
|
||||
cal.showsOtherMonths = true;
|
||||
cal.create();
|
||||
|
||||
// convert to milliseconds (Epoch is usually expressed in seconds, but Javascript uses Milliseconds)
|
||||
switch (format) {
|
||||
case '%es' : epoch = el.value * 86400 * 1000;
|
||||
format = '%s';
|
||||
parse = true;
|
||||
break;
|
||||
case '%s' : epoch = el.value * 1000;
|
||||
parse = true;
|
||||
break;
|
||||
}
|
||||
|
||||
// Convert the value to the date so that the calendar will display it
|
||||
if (parse) {
|
||||
var dDate = new Date();
|
||||
dDate.setTime(epoch);
|
||||
cal.setDateFormat('%a, %d %b %Y'); // set the specified date format
|
||||
cal.parseDate(dDate.toString()); // try to parse the text in field
|
||||
cal.setDateFormat(format); // set the specified date format
|
||||
} else {
|
||||
cal.setDateFormat(format); // set the specified date format
|
||||
cal.parseDate(el.value); // try to parse the text in field
|
||||
}
|
||||
|
||||
cal.sel = el; // inform it what input field we use
|
||||
cal.showAtElement(el, 'BR'); // show the calendar
|
||||
}
|
||||
|
||||
function onSelect(calendar,date) {
|
||||
switch (gettype(calendar.sel.id)) {
|
||||
case '%es' : date = Math.round(date / 86400);
|
||||
break;
|
||||
}
|
||||
|
||||
calendar.sel.value = date;
|
||||
if (calendar.dateClicked)
|
||||
onClose(calendar);
|
||||
}
|
||||
|
||||
function onClose(calendar,date) {
|
||||
calendar.hide();
|
||||
}
|
||||
|
||||
function gettype(attr) {
|
||||
if (typeof defaults == "undefined") {
|
||||
return '%s';
|
||||
}
|
||||
|
||||
if (typeof defaults[attr] == "undefined") {
|
||||
if (typeof default_date_format == "undefined") {
|
||||
return '%s';
|
||||
} else {
|
||||
return default_date_format;
|
||||
}
|
||||
} else {
|
||||
return defaults[attr];
|
||||
}
|
||||
}
|
@@ -1,33 +0,0 @@
|
||||
The DHTML Calendar
|
||||
-------------------
|
||||
|
||||
Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
http://dynarch.com/mishoo/
|
||||
|
||||
This program is free software published under the
|
||||
terms of the GNU Lesser General Public License.
|
||||
|
||||
For the entire license text please refer to
|
||||
http://www.gnu.org/licenses/lgpl.html
|
||||
|
||||
Contents
|
||||
---------
|
||||
|
||||
calendar.js -- the main program file
|
||||
lang/*.js -- internalization files
|
||||
*.css -- color themes
|
||||
cal.html -- example usage file
|
||||
doc/ -- documentation, in PDF and HTML
|
||||
simple-1.html -- quick setup examples [popup calendars]
|
||||
simple-2.html -- quick setup example for flat calendar
|
||||
calendar.php -- PHP wrapper
|
||||
test.php -- test file for the PHP wrapper
|
||||
|
||||
Homepage
|
||||
---------
|
||||
|
||||
For details and latest versions please refer to calendar
|
||||
homepage, located on my website:
|
||||
|
||||
http://dynarch.com/mishoo/calendar.epl
|
||||
|
@@ -1,232 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #556;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #eef;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #778 url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
color: #000;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
background: #778;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #bdf;
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #556;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #aaf;
|
||||
color: #000;
|
||||
border: 1px solid #04f;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #77c;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
color: #456;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #bbb;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #fbb;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #bdf;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #def;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #eef;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #def;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #cde;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #fff;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #556;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #fff;
|
||||
color: #445;
|
||||
border-top: 1px solid #556;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #aaf;
|
||||
border: 1px solid #04f;
|
||||
color: #000;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #77c;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #655;
|
||||
background: #def;
|
||||
color: #000;
|
||||
font-size: 90%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #acf;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
border-top: 1px solid #46a;
|
||||
border-bottom: 1px solid #46a;
|
||||
background: #eef;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #667;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
@@ -1,236 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #206A9B;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #F1F8FC;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #007ED1 url(menuarrow2.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
background: #000;
|
||||
color: #fff;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.calendar thead tr { /* Row <TR> containing navigation buttons */
|
||||
background: #007ED1;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #C7E1F3;
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #206A9B;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #34ABFA;
|
||||
color: #000;
|
||||
border: 1px solid #016DC5;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #006AA9;
|
||||
border: 1px solid #008AFF;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
color: #456;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #bbb;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #fbb;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #C7E1F3;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #def;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #F1F8FC;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #def;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #8FC4E8;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #cde;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #fff;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
color: #D50000;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #206A9B;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #000;
|
||||
color: #fff;
|
||||
border-top: 1px solid #206A9B;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #B8DAF0;
|
||||
border: 1px solid #178AEB;
|
||||
color: #000;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #006AA9;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #655;
|
||||
background: #def;
|
||||
color: #000;
|
||||
font-size: 90%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #34ABFA;
|
||||
border-top: 1px solid #46a;
|
||||
border-bottom: 1px solid #46a;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
border-top: 1px solid #46a;
|
||||
border-bottom: 1px solid #46a;
|
||||
background: #F1F8FC;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #E3F0F9;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #F1F8FC;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #267DB7;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: red;
|
||||
background-color: #000;
|
||||
color: #A5FF00;
|
||||
}
|
@@ -1,225 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #655;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #ffd;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #edc url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
background: #654;
|
||||
color: #fed;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
background: #edc;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #655;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #faa;
|
||||
color: #000;
|
||||
border: 1px solid #f40;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #c77;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #fed;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #bbb;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #fbb;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #fed;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #ddf;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #efe;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #ffe;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #ddc;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #fea;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { font-weight: bold; }
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #988;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
border-top: 1px solid #655;
|
||||
background: #dcb;
|
||||
color: #840;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #faa;
|
||||
border: 1px solid #f40;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #c77;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #655;
|
||||
background: #ffe;
|
||||
color: #000;
|
||||
font-size: 90%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #fc8;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
border-top: 1px solid #a64;
|
||||
border-bottom: 1px solid #a64;
|
||||
background: #fee;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #a88;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #fed;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #988;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #866;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
@@ -1,229 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #565;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #efe;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
background: #676;
|
||||
color: #fff;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #676 url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
background: #250;
|
||||
color: #efa;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #565;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #afa;
|
||||
color: #000;
|
||||
border: 1px solid #084;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #7c7;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #dfb;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
color: #564;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #bbb;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #fbb;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #8a8;
|
||||
background: #dfb;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #dfd;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #efe;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #efd;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #dec;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #f8fff8;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { font-weight: bold; color: #0a0; }
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #565;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
padding: 2px;
|
||||
background: #250;
|
||||
color: #efa;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #afa;
|
||||
border: 1px solid #084;
|
||||
color: #000;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #7c7;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #565;
|
||||
background: #efd;
|
||||
color: #000;
|
||||
font-size: 90%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #af8;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
border-top: 1px solid #6a4;
|
||||
border-bottom: 1px solid #6a4;
|
||||
background: #efe;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #8a8;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #dfb;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #898;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #686;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
@@ -1,200 +0,0 @@
|
||||
/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/
|
||||
* ---------------------------------------------------------------------------
|
||||
*
|
||||
* The DHTML Calendar
|
||||
*
|
||||
* Details and latest version at:
|
||||
* http://dynarch.com/mishoo/calendar.epl
|
||||
*
|
||||
* This script is distributed under the GNU Lesser General Public License.
|
||||
* Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
|
||||
*
|
||||
* This file defines helper functions for setting up the calendar. They are
|
||||
* intended to help non-programmers get a working calendar on their site
|
||||
* quickly. This script should not be seen as part of the calendar. It just
|
||||
* shows you what one can do with the calendar, while in the same time
|
||||
* providing a quick and simple method for setting it up. If you need
|
||||
* exhaustive customization of the calendar creation process feel free to
|
||||
* modify this code to suit your needs (this is recommended and much better
|
||||
* than modifying calendar.js itself).
|
||||
*/
|
||||
|
||||
// $Id: calendar-setup.js,v 1.1.2.1 2005/10/09 05:45:23 wurley Exp $
|
||||
|
||||
/**
|
||||
* This function "patches" an input field (or other element) to use a calendar
|
||||
* widget for date selection.
|
||||
*
|
||||
* The "params" is a single object that can have the following properties:
|
||||
*
|
||||
* prop. name | description
|
||||
* -------------------------------------------------------------------------------------------------
|
||||
* inputField | the ID of an input field to store the date
|
||||
* displayArea | the ID of a DIV or other element to show the date
|
||||
* button | ID of a button or other element that will trigger the calendar
|
||||
* eventName | event that will trigger the calendar, without the "on" prefix (default: "click")
|
||||
* ifFormat | date format that will be stored in the input field
|
||||
* daFormat | the date format that will be used to display the date in displayArea
|
||||
* singleClick | (true/false) wether the calendar is in single click mode or not (default: true)
|
||||
* firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc.
|
||||
* align | alignment (default: "Br"); if you don't know what's this see the calendar documentation
|
||||
* range | array with 2 elements. Default: [1900, 2999] -- the range of years available
|
||||
* weekNumbers | (true/false) if it's true (default) the calendar will display week numbers
|
||||
* flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID
|
||||
* flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar)
|
||||
* disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar
|
||||
* onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay)
|
||||
* onClose | function that gets called when the calendar is closed. [default]
|
||||
* onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar.
|
||||
* date | the date that the calendar will be initially displayed to
|
||||
* showsTime | default: false; if true the calendar will include a time selector
|
||||
* timeFormat | the time format; can be "12" or "24", default is "12"
|
||||
* electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close
|
||||
* step | configures the step of the years in drop-down boxes; default: 2
|
||||
* position | configures the calendar absolute position; default: null
|
||||
* cache | if "true" (but default: "false") it will reuse the same calendar object, where possible
|
||||
* showOthers | if "true" (but default: "false") it will show days from other months too
|
||||
*
|
||||
* None of them is required, they all have default values. However, if you
|
||||
* pass none of "inputField", "displayArea" or "button" you'll get a warning
|
||||
* saying "nothing to setup".
|
||||
*/
|
||||
Calendar.setup = function (params) {
|
||||
function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
|
||||
|
||||
param_default("inputField", null);
|
||||
param_default("displayArea", null);
|
||||
param_default("button", null);
|
||||
param_default("eventName", "click");
|
||||
param_default("ifFormat", "%Y/%m/%d");
|
||||
param_default("daFormat", "%Y/%m/%d");
|
||||
param_default("singleClick", true);
|
||||
param_default("disableFunc", null);
|
||||
param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined
|
||||
param_default("dateText", null);
|
||||
param_default("firstDay", null);
|
||||
param_default("align", "Br");
|
||||
param_default("range", [1900, 2999]);
|
||||
param_default("weekNumbers", true);
|
||||
param_default("flat", null);
|
||||
param_default("flatCallback", null);
|
||||
param_default("onSelect", null);
|
||||
param_default("onClose", null);
|
||||
param_default("onUpdate", null);
|
||||
param_default("date", null);
|
||||
param_default("showsTime", false);
|
||||
param_default("timeFormat", "24");
|
||||
param_default("electric", true);
|
||||
param_default("step", 2);
|
||||
param_default("position", null);
|
||||
param_default("cache", false);
|
||||
param_default("showOthers", false);
|
||||
param_default("multiple", null);
|
||||
|
||||
var tmp = ["inputField", "displayArea", "button"];
|
||||
for (var i in tmp) {
|
||||
if (typeof params[tmp[i]] == "string") {
|
||||
params[tmp[i]] = document.getElementById(params[tmp[i]]);
|
||||
}
|
||||
}
|
||||
if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
|
||||
alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code");
|
||||
return false;
|
||||
}
|
||||
|
||||
function onSelect(cal) {
|
||||
var p = cal.params;
|
||||
var update = (cal.dateClicked || p.electric);
|
||||
if (update && p.inputField) {
|
||||
p.inputField.value = cal.date.print(p.ifFormat);
|
||||
if (typeof p.inputField.onchange == "function")
|
||||
p.inputField.onchange();
|
||||
}
|
||||
if (update && p.displayArea)
|
||||
p.displayArea.innerHTML = cal.date.print(p.daFormat);
|
||||
if (update && typeof p.onUpdate == "function")
|
||||
p.onUpdate(cal);
|
||||
if (update && p.flat) {
|
||||
if (typeof p.flatCallback == "function")
|
||||
p.flatCallback(cal);
|
||||
}
|
||||
if (update && p.singleClick && cal.dateClicked)
|
||||
cal.callCloseHandler();
|
||||
};
|
||||
|
||||
if (params.flat != null) {
|
||||
if (typeof params.flat == "string")
|
||||
params.flat = document.getElementById(params.flat);
|
||||
if (!params.flat) {
|
||||
alert("Calendar.setup:\n Flat specified but can't find parent.");
|
||||
return false;
|
||||
}
|
||||
var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect);
|
||||
cal.showsOtherMonths = params.showOthers;
|
||||
cal.showsTime = params.showsTime;
|
||||
cal.time24 = (params.timeFormat == "24");
|
||||
cal.params = params;
|
||||
cal.weekNumbers = params.weekNumbers;
|
||||
cal.setRange(params.range[0], params.range[1]);
|
||||
cal.setDateStatusHandler(params.dateStatusFunc);
|
||||
cal.getDateText = params.dateText;
|
||||
if (params.ifFormat) {
|
||||
cal.setDateFormat(params.ifFormat);
|
||||
}
|
||||
if (params.inputField && typeof params.inputField.value == "string") {
|
||||
cal.parseDate(params.inputField.value);
|
||||
}
|
||||
cal.create(params.flat);
|
||||
cal.show();
|
||||
return false;
|
||||
}
|
||||
|
||||
var triggerEl = params.button || params.displayArea || params.inputField;
|
||||
triggerEl["on" + params.eventName] = function() {
|
||||
var dateEl = params.inputField || params.displayArea;
|
||||
var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
|
||||
var mustCreate = false;
|
||||
var cal = window.calendar;
|
||||
if (dateEl)
|
||||
params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
|
||||
if (!(cal && params.cache)) {
|
||||
window.calendar = cal = new Calendar(params.firstDay,
|
||||
params.date,
|
||||
params.onSelect || onSelect,
|
||||
params.onClose || function(cal) { cal.hide(); });
|
||||
cal.showsTime = params.showsTime;
|
||||
cal.time24 = (params.timeFormat == "24");
|
||||
cal.weekNumbers = params.weekNumbers;
|
||||
mustCreate = true;
|
||||
} else {
|
||||
if (params.date)
|
||||
cal.setDate(params.date);
|
||||
cal.hide();
|
||||
}
|
||||
if (params.multiple) {
|
||||
cal.multiple = {};
|
||||
for (var i = params.multiple.length; --i >= 0;) {
|
||||
var d = params.multiple[i];
|
||||
var ds = d.print("%Y%m%d");
|
||||
cal.multiple[ds] = d;
|
||||
}
|
||||
}
|
||||
cal.showsOtherMonths = params.showOthers;
|
||||
cal.yearStep = params.step;
|
||||
cal.setRange(params.range[0], params.range[1]);
|
||||
cal.params = params;
|
||||
cal.setDateStatusHandler(params.dateStatusFunc);
|
||||
cal.getDateText = params.dateText;
|
||||
cal.setDateFormat(dateFmt);
|
||||
if (mustCreate)
|
||||
cal.create();
|
||||
cal.refresh();
|
||||
if (!params.position)
|
||||
cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
|
||||
else
|
||||
cal.showAt(params.position[0], params.position[1]);
|
||||
return false;
|
||||
};
|
||||
|
||||
return cal;
|
||||
};
|
@@ -1,21 +0,0 @@
|
||||
/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/
|
||||
* ---------------------------------------------------------------------------
|
||||
*
|
||||
* The DHTML Calendar
|
||||
*
|
||||
* Details and latest version at:
|
||||
* http://dynarch.com/mishoo/calendar.epl
|
||||
*
|
||||
* This script is distributed under the GNU Lesser General Public License.
|
||||
* Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
|
||||
*
|
||||
* This file defines helper functions for setting up the calendar. They are
|
||||
* intended to help non-programmers get a working calendar on their site
|
||||
* quickly. This script should not be seen as part of the calendar. It just
|
||||
* shows you what one can do with the calendar, while in the same time
|
||||
* providing a quick and simple method for setting it up. If you need
|
||||
* exhaustive customization of the calendar creation process feel free to
|
||||
* modify this code to suit your needs (this is recommended and much better
|
||||
* than modifying calendar.js itself).
|
||||
*/
|
||||
Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def;}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);var tmp=["inputField","displayArea","button"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){params[tmp[i]]=document.getElementById(params[tmp[i]]);}}if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button)){alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code");return false;}function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);if(typeof p.inputField.onchange=="function")p.inputField.onchange();}if(update&&p.displayArea)p.displayArea.innerHTML=cal.date.print(p.daFormat);if(update&&typeof p.onUpdate=="function")p.onUpdate(cal);if(update&&p.flat){if(typeof p.flatCallback=="function")p.flatCallback(cal);}if(update&&p.singleClick&&cal.dateClicked)cal.callCloseHandler();};if(params.flat!=null){if(typeof params.flat=="string")params.flat=document.getElementById(params.flat);if(!params.flat){alert("Calendar.setup:\n Flat specified but can't find parent.");return false;}var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.showsOtherMonths=params.showOthers;cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.params=params;cal.weekNumbers=params.weekNumbers;cal.setRange(params.range[0],params.range[1]);cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat);}if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value);}cal.create(params.flat);cal.show();return false;}var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl)params.date=Date.parseDate(dateEl.value||dateEl.innerHTML,dateFmt);if(!(cal&¶ms.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)cal.setDate(params.date);cal.hide();}if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d;}}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.refresh();if(!params.position)cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);else cal.showAt(params.position[0],params.position[1]);return false;};return cal;};
|
@@ -1,251 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border: 1px solid;
|
||||
border-color: #fff #000 #000 #fff;
|
||||
font-size: 11px;
|
||||
cursor: default;
|
||||
background: Window;
|
||||
color: WindowText;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border: 1px solid;
|
||||
border-color: #fff #000 #000 #fff;
|
||||
font-size: 11px;
|
||||
cursor: default;
|
||||
background: Window;
|
||||
color: WindowText;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border: 1px solid;
|
||||
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
|
||||
background: ButtonFace;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: ButtonFace url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: ActiveCaption;
|
||||
color: CaptionText;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid ButtonShadow;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: ButtonFace;
|
||||
color: ButtonText;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border: 2px solid;
|
||||
padding: 0px;
|
||||
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
border-width: 1px;
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid ButtonShadow;
|
||||
background: ButtonFace;
|
||||
color: ButtonText;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: Highlight;
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border: 1px solid;
|
||||
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
border: 1px solid;
|
||||
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
|
||||
padding: 2px 2px 0px 2px;
|
||||
background: ButtonFace;
|
||||
color: ButtonText;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody td.disabled { color: GrayText; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: ButtonFace;
|
||||
padding: 1px;
|
||||
border: 1px solid;
|
||||
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
|
||||
color: ButtonText;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border: 1px solid;
|
||||
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
|
||||
background: Menu;
|
||||
color: MenuText;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
padding: 0px;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: Highlight;
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid ButtonShadow;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: ButtonFace;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: Menu;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: Highlight;
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
@@ -1,239 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #655;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #ffd;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
color:#363636;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #edc url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
background: #654;
|
||||
color: #363636;
|
||||
padding: 2px;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#dddccc);
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
/*background: #3B86A0;*/
|
||||
color: #363636;
|
||||
font-weight: bold;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#3b86a0);
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #655;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #363636;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #ffcc86;
|
||||
color: #000;
|
||||
border: 1px solid #b59345;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #c77;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #fed;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #fed;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #ddf;
|
||||
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #efe;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #ffe;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #ddc;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #fea;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { font-weight: bold; }
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #988;
|
||||
color: #000;
|
||||
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
border-top: 1px solid #655;
|
||||
background: #dcb;
|
||||
color: #363636;
|
||||
font-weight: bold;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#FFFFFF,EndColorStr=#DDDCCC);
|
||||
}
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #faa;
|
||||
border: 1px solid #f40;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #c77;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #655;
|
||||
background: #ffe;
|
||||
color: #000;
|
||||
font-size: smaller;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.combo .label,
|
||||
.combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.combo .hilite {
|
||||
background: #fc8;
|
||||
}
|
||||
|
||||
.combo .active {
|
||||
border-top: 1px solid #a64;
|
||||
border-bottom: 1px solid #a64;
|
||||
background: #fee;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #a88;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #fed;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #988;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #866;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
@@ -1,271 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #d4d0c8;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #d4d0c8;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #848078;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #000;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
padding: 0px;
|
||||
background-color: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
background-color: #c4c0b8;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #d4d0c8;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
padding: 2px 2px 0px 2px;
|
||||
background: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #f4f0e8;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #848078;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
background: #e4e0d8;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
background: #c4c0b8;
|
||||
padding: 0px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #048;
|
||||
color: #fea;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #766;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
@@ -1,271 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #d4c8d0;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #d4c8d0;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #847880;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #000;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: #f4e8f0;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
padding: 0px;
|
||||
background-color: #e4d8e0;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
background-color: #c4b8c0;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #f4e8f0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #e4d8e0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #d4c8d0;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
padding: 2px 2px 0px 2px;
|
||||
background: #e4d8e0;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #f4e8f0;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #847880;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #e4d8e0;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
background: #e4d8e0;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
background: #d4c8d0;
|
||||
padding: 0px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #408;
|
||||
color: #fea;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #766;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
@@ -1,265 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #c8d0d4;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #c8d0d4;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #788084;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #000;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: #e8f0f4;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
padding: 0px;
|
||||
background-color: #d8e0e4;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
background-color: #b8c0c4;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #e8f4f0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #c8d4d0;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid;
|
||||
border-color: #fff #000 #000 #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border: 1px solid;
|
||||
border-color: #000 #fff #fff #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
padding: 2px 2px 0px 2px;
|
||||
border: 1px solid;
|
||||
border-color: #000 #fff #fff #000;
|
||||
background: #d8e0e4;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #e8f0f4;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #788084;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #d8e0e4;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
background: #d8e0e4;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
background: #c8d0d4;
|
||||
padding: 0px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #048;
|
||||
color: #aef;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #e8f0f4;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #667;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
@@ -1,271 +0,0 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #c8d4d0;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #c8d4d0;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #788480;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #000;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: #e8f4f0;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
padding: 0px;
|
||||
background-color: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
background-color: #b8c4c0;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #e8f4f0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #c8d4d0;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
padding: 2px 2px 0px 2px;
|
||||
background: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #e8f4f0;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #788480;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
background: #d8e4e0;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
background: #c8d4d0;
|
||||
padding: 0px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #048;
|
||||
color: #aef;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #e8f0f4;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #667;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@@ -1,119 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* File: calendar.php | (c) dynarch.com 2004
|
||||
* Distributed as part of "The Coolest DHTML Calendar"
|
||||
* under the same terms.
|
||||
* -----------------------------------------------------------------
|
||||
* This file implements a simple PHP wrapper for the calendar. It
|
||||
* allows you to easily include all the calendar files and setup the
|
||||
* calendar by instantiating and calling a PHP object.
|
||||
*/
|
||||
|
||||
define('NEWLINE', "\n");
|
||||
|
||||
class DHTML_Calendar {
|
||||
var $calendar_lib_path;
|
||||
|
||||
var $calendar_file;
|
||||
var $calendar_lang_file;
|
||||
var $calendar_setup_file;
|
||||
var $calendar_theme_file;
|
||||
var $calendar_options;
|
||||
|
||||
function DHTML_Calendar($calendar_lib_path = '/calendar/',
|
||||
$lang = 'en',
|
||||
$theme = 'calendar-win2k-1',
|
||||
$stripped = true) {
|
||||
if ($stripped) {
|
||||
$this->calendar_file = 'calendar_stripped.js';
|
||||
$this->calendar_setup_file = 'calendar-setup_stripped.js';
|
||||
} else {
|
||||
$this->calendar_file = 'calendar.js';
|
||||
$this->calendar_setup_file = 'calendar-setup.js';
|
||||
}
|
||||
$this->calendar_lang_file = 'lang/calendar-' . $lang . '.js';
|
||||
$this->calendar_theme_file = $theme.'.css';
|
||||
$this->calendar_lib_path = preg_replace('/\/+$/', '/', $calendar_lib_path);
|
||||
$this->calendar_options = array('ifFormat' => '%Y/%m/%d',
|
||||
'daFormat' => '%Y/%m/%d');
|
||||
}
|
||||
|
||||
function set_option($name, $value) {
|
||||
$this->calendar_options[$name] = $value;
|
||||
}
|
||||
|
||||
function load_files() {
|
||||
echo $this->get_load_files_code();
|
||||
}
|
||||
|
||||
function get_load_files_code() {
|
||||
$code = ( '<link rel="stylesheet" type="text/css" media="all" href="' .
|
||||
$this->calendar_lib_path . $this->calendar_theme_file .
|
||||
'" />' . NEWLINE );
|
||||
$code .= ( '<script type="text/javascript" src="' .
|
||||
$this->calendar_lib_path . $this->calendar_file .
|
||||
'"></script>' . NEWLINE );
|
||||
$code .= ( '<script type="text/javascript" src="' .
|
||||
$this->calendar_lib_path . $this->calendar_lang_file .
|
||||
'"></script>' . NEWLINE );
|
||||
$code .= ( '<script type="text/javascript" src="' .
|
||||
$this->calendar_lib_path . $this->calendar_setup_file .
|
||||
'"></script>' );
|
||||
return $code;
|
||||
}
|
||||
|
||||
function _make_calendar($other_options = array()) {
|
||||
$js_options = $this->_make_js_hash(array_merge($this->calendar_options, $other_options));
|
||||
$code = ( '<script type="text/javascript">Calendar.setup({' .
|
||||
$js_options .
|
||||
'});</script>' );
|
||||
return $code;
|
||||
}
|
||||
|
||||
function make_input_field($cal_options = array(), $field_attributes = array()) {
|
||||
$id = $this->_gen_id();
|
||||
$attrstr = $this->_make_html_attr(array_merge($field_attributes,
|
||||
array('id' => $this->_field_id($id),
|
||||
'type' => 'text')));
|
||||
echo '<input ' . $attrstr .'/>';
|
||||
echo '<a href="#" id="'. $this->_trigger_id($id) . '">' .
|
||||
'<img align="middle" border="0" src="' . $this->calendar_lib_path . 'img.gif" alt="" /></a>';
|
||||
|
||||
$options = array_merge($cal_options,
|
||||
array('inputField' => $this->_field_id($id),
|
||||
'button' => $this->_trigger_id($id)));
|
||||
echo $this->_make_calendar($options);
|
||||
}
|
||||
|
||||
/// PRIVATE SECTION
|
||||
|
||||
function _field_id($id) { return 'f-calendar-field-' . $id; }
|
||||
function _trigger_id($id) { return 'f-calendar-trigger-' . $id; }
|
||||
function _gen_id() { static $id = 0; return ++$id; }
|
||||
|
||||
function _make_js_hash($array) {
|
||||
$jstr = '';
|
||||
reset($array);
|
||||
while (list($key, $val) = each($array)) {
|
||||
if (is_bool($val))
|
||||
$val = $val ? 'true' : 'false';
|
||||
else if (!is_numeric($val))
|
||||
$val = '"'.$val.'"';
|
||||
if ($jstr) $jstr .= ',';
|
||||
$jstr .= '"' . $key . '":' . $val;
|
||||
}
|
||||
return $jstr;
|
||||
}
|
||||
|
||||
function _make_html_attr($array) {
|
||||
$attrstr = '';
|
||||
reset($array);
|
||||
while (list($key, $val) = each($array)) {
|
||||
$attrstr .= $key . '="' . $val . '" ';
|
||||
}
|
||||
return $attrstr;
|
||||
}
|
||||
};
|
||||
|
||||
?>
|
File diff suppressed because one or more lines are too long
@@ -1,39 +0,0 @@
|
||||
// ** I18N Afrikaans
|
||||
Calendar._DN = new Array
|
||||
("Sondag",
|
||||
"Maandag",
|
||||
"Dinsdag",
|
||||
"Woensdag",
|
||||
"Donderdag",
|
||||
"Vrydag",
|
||||
"Saterdag",
|
||||
"Sondag");
|
||||
Calendar._MN = new Array
|
||||
("Januarie",
|
||||
"Februarie",
|
||||
"Maart",
|
||||
"April",
|
||||
"Mei",
|
||||
"Junie",
|
||||
"Julie",
|
||||
"Augustus",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"Desember");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["TOGGLE"] = "Verander eerste dag van die week";
|
||||
Calendar._TT["PREV_YEAR"] = "Vorige jaar (hou vir keuselys)";
|
||||
Calendar._TT["PREV_MONTH"] = "Vorige maand (hou vir keuselys)";
|
||||
Calendar._TT["GO_TODAY"] = "Gaan na vandag";
|
||||
Calendar._TT["NEXT_MONTH"] = "Volgende maand (hou vir keuselys)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Volgende jaar (hou vir keuselys)";
|
||||
Calendar._TT["SEL_DATE"] = "Kies datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te skuif";
|
||||
Calendar._TT["PART_TODAY"] = " (vandag)";
|
||||
Calendar._TT["MON_FIRST"] = "Vertoon Maandag eerste";
|
||||
Calendar._TT["SUN_FIRST"] = "Display Sunday first";
|
||||
Calendar._TT["CLOSE"] = "Close";
|
||||
Calendar._TT["TODAY"] = "Today";
|
@@ -1,101 +0,0 @@
|
||||
// Calendar ALBANIAN language
|
||||
//author Rigels Gordani rige@hotmail.com
|
||||
|
||||
// ditet
|
||||
Calendar._DN = new Array
|
||||
("E Diele",
|
||||
"E Hene",
|
||||
"E Marte",
|
||||
"E Merkure",
|
||||
"E Enjte",
|
||||
"E Premte",
|
||||
"E Shtune",
|
||||
"E Diele");
|
||||
|
||||
//ditet shkurt
|
||||
Calendar._SDN = new Array
|
||||
("Die",
|
||||
"Hen",
|
||||
"Mar",
|
||||
"Mer",
|
||||
"Enj",
|
||||
"Pre",
|
||||
"Sht",
|
||||
"Die");
|
||||
|
||||
// muajt
|
||||
Calendar._MN = new Array
|
||||
("Janar",
|
||||
"Shkurt",
|
||||
"Mars",
|
||||
"Prill",
|
||||
"Maj",
|
||||
"Qeshor",
|
||||
"Korrik",
|
||||
"Gusht",
|
||||
"Shtator",
|
||||
"Tetor",
|
||||
"Nentor",
|
||||
"Dhjetor");
|
||||
|
||||
// muajte shkurt
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Shk",
|
||||
"Mar",
|
||||
"Pri",
|
||||
"Maj",
|
||||
"Qes",
|
||||
"Kor",
|
||||
"Gus",
|
||||
"Sht",
|
||||
"Tet",
|
||||
"Nen",
|
||||
"Dhj");
|
||||
|
||||
// ndihmesa
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Per kalendarin";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"Zgjedhes i ores/dates ne DHTML \n" +
|
||||
"\n\n" +"Zgjedhja e Dates:\n" +
|
||||
"- Perdor butonat \xab, \xbb per te zgjedhur vitin\n" +
|
||||
"- Perdor butonat" + String.fromCharCode(0x2039) + ", " +
|
||||
String.fromCharCode(0x203a) +
|
||||
" per te zgjedhur muajin\n" +
|
||||
"- Mbani shtypur butonin e mousit per nje zgjedje me te shpejte.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Zgjedhja e kohes:\n" +
|
||||
"- Kliko tek ndonje nga pjeset e ores per ta rritur ate\n" +
|
||||
"- ose kliko me Shift per ta zvogeluar ate\n" +
|
||||
"- ose cliko dhe terhiq per zgjedhje me te shpejte.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Viti i shkuar (prit per menune)";
|
||||
Calendar._TT["PREV_MONTH"] = "Muaji i shkuar (prit per menune)";
|
||||
Calendar._TT["GO_TODAY"] = "Sot";
|
||||
Calendar._TT["NEXT_MONTH"] = "Muaji i ardhshem (prit per menune)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Viti i ardhshem (prit per menune)";
|
||||
Calendar._TT["SEL_DATE"] = "Zgjidh daten";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Terhiqe per te levizur";
|
||||
Calendar._TT["PART_TODAY"] = " (sot)";
|
||||
|
||||
// "%s" eshte dita e pare e javes
|
||||
// %s do te zevendesohet me emrin e dite
|
||||
Calendar._TT["DAY_FIRST"] = "Trego te %s te paren";
|
||||
|
||||
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Mbyll";
|
||||
Calendar._TT["TODAY"] = "Sot";
|
||||
Calendar._TT["TIME_PART"] = "Kliko me (Shift-)ose terhiqe per te ndryshuar
|
||||
vleren";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "Java";
|
||||
Calendar._TT["TIME"] = "Koha:";
|
||||
|
@@ -1,124 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar BG language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Translator: Valentin Sheiretsky, <valio@valio.eu.org>
|
||||
// Encoding: Windows-1251
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>",
|
||||
"<22><><EFBFBD>");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Date selection:\n" +
|
||||
"- Use the \xab, \xbb buttons to select year\n" +
|
||||
"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
|
||||
"- Hold mouse button on any of the above buttons for faster selection.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Time selection:\n" +
|
||||
"- Click on any of the time parts to increase it\n" +
|
||||
"- or Shift-click to decrease it\n" +
|
||||
"- or click and drag for faster selection.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["PREV_MONTH"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["GO_TODAY"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["NEXT_MONTH"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["NEXT_YEAR"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["SEL_DATE"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["PART_TODAY"] = " (<28><><EFBFBD><EFBFBD>)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "%s <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["TODAY"] = "<22><><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Click <20><><EFBFBD> drag <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%A - %e %B %Y";
|
||||
|
||||
Calendar._TT["WK"] = "<22><><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["TIME"] = "<22><><EFBFBD>:";
|
@@ -1,123 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar big5-utf8 language
|
||||
// Author: Gary Fu, <gary@garyfu.idv.tw>
|
||||
// Encoding: utf8
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("星期日",
|
||||
"星期一",
|
||||
"星期二",
|
||||
"星期三",
|
||||
"星期四",
|
||||
"星期五",
|
||||
"星期六",
|
||||
"星期日");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("日",
|
||||
"一",
|
||||
"二",
|
||||
"三",
|
||||
"四",
|
||||
"五",
|
||||
"六",
|
||||
"日");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "關於";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"日期選擇方法:\n" +
|
||||
"- 使用 \xab, \xbb 按鈕可選擇年份\n" +
|
||||
"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕可選擇月份\n" +
|
||||
"- 按住上面的按鈕可以加快選取";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"時間選擇方法:\n" +
|
||||
"- 點擊任何的時間部份可增加其值\n" +
|
||||
"- 同時按Shift鍵再點擊可減少其值\n" +
|
||||
"- 點擊並拖曳可加快改變的值";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "上一年 (按住選單)";
|
||||
Calendar._TT["PREV_MONTH"] = "下一年 (按住選單)";
|
||||
Calendar._TT["GO_TODAY"] = "到今日";
|
||||
Calendar._TT["NEXT_MONTH"] = "上一月 (按住選單)";
|
||||
Calendar._TT["NEXT_YEAR"] = "下一月 (按住選單)";
|
||||
Calendar._TT["SEL_DATE"] = "選擇日期";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
|
||||
Calendar._TT["PART_TODAY"] = " (今日)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "將 %s 顯示在前";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "關閉";
|
||||
Calendar._TT["TODAY"] = "今日";
|
||||
Calendar._TT["TIME_PART"] = "點擊or拖曳可改變時間(同時按Shift為減)";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "週";
|
||||
Calendar._TT["TIME"] = "Time:";
|
@@ -1,123 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar big5 language
|
||||
// Author: Gary Fu, <gary@garyfu.idv.tw>
|
||||
// Encoding: big5
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("<22>P<EFBFBD><50><EFBFBD><EFBFBD>",
|
||||
"<22>P<EFBFBD><50><EFBFBD>@",
|
||||
"<22>P<EFBFBD><50><EFBFBD>G",
|
||||
"<22>P<EFBFBD><50><EFBFBD>T",
|
||||
"<22>P<EFBFBD><50><EFBFBD>|",
|
||||
"<22>P<EFBFBD><50><EFBFBD><EFBFBD>",
|
||||
"<22>P<EFBFBD><50><EFBFBD><EFBFBD>",
|
||||
"<22>P<EFBFBD><50><EFBFBD><EFBFBD>");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("<22><>",
|
||||
"<22>@",
|
||||
"<22>G",
|
||||
"<22>T",
|
||||
"<22>|",
|
||||
"<22><>",
|
||||
"<22><>",
|
||||
"<22><>");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("<22>@<40><>",
|
||||
"<22>G<EFBFBD><47>",
|
||||
"<22>T<EFBFBD><54>",
|
||||
"<22>|<7C><>",
|
||||
"<22><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD>",
|
||||
"<22>C<EFBFBD><43>",
|
||||
"<22>K<EFBFBD><4B>",
|
||||
"<22>E<EFBFBD><45>",
|
||||
"<22>Q<EFBFBD><51>",
|
||||
"<22>Q<EFBFBD>@<40><>",
|
||||
"<22>Q<EFBFBD>G<EFBFBD><47>");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("<22>@<40><>",
|
||||
"<22>G<EFBFBD><47>",
|
||||
"<22>T<EFBFBD><54>",
|
||||
"<22>|<7C><>",
|
||||
"<22><><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD>",
|
||||
"<22>C<EFBFBD><43>",
|
||||
"<22>K<EFBFBD><4B>",
|
||||
"<22>E<EFBFBD><45>",
|
||||
"<22>Q<EFBFBD><51>",
|
||||
"<22>Q<EFBFBD>@<40><>",
|
||||
"<22>Q<EFBFBD>G<EFBFBD><47>");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "<22><><EFBFBD><EFBFBD>";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܤ<EFBFBD><DCA4>k:\n" +
|
||||
"- <20>ϥ<EFBFBD> \xab, \xbb <20><><EFBFBD>s<EFBFBD>i<EFBFBD><69><EFBFBD>ܦ~<7E><>\n" +
|
||||
"- <20>ϥ<EFBFBD> " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " <20><><EFBFBD>s<EFBFBD>i<EFBFBD><69><EFBFBD>ܤ<EFBFBD><DCA4><EFBFBD>\n" +
|
||||
"- <20><><EFBFBD><EFBFBD><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>i<EFBFBD>H<EFBFBD>[<5B>ֿ<EFBFBD><D6BF><EFBFBD>";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"<22>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ܤ<EFBFBD><DCA4>k:\n" +
|
||||
"- <20>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD>ɶ<F3AABAAE><C9B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>i<EFBFBD>W<EFBFBD>[<5B><><EFBFBD><EFBFBD>\n" +
|
||||
"- <20>P<EFBFBD>ɫ<EFBFBD>Shift<66><74><EFBFBD>A<EFBFBD>I<EFBFBD><49><EFBFBD>i<EFBFBD><69><EFBFBD>֨<EFBFBD><D6A8><EFBFBD>\n" +
|
||||
"- <20>I<EFBFBD><49><EFBFBD>é즲<C3A9>i<EFBFBD>[<5B>֧<EFBFBD><D6A7>ܪ<EFBFBD><DCAA><EFBFBD>";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "<22>W<EFBFBD>@<40>~ (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["PREV_MONTH"] = "<22>U<EFBFBD>@<40>~ (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["GO_TODAY"] = "<22>줵<EFBFBD><ECA4B5>";
|
||||
Calendar._TT["NEXT_MONTH"] = "<22>W<EFBFBD>@<40><> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["NEXT_YEAR"] = "<22>U<EFBFBD>@<40><> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["SEL_DATE"] = "<22><><EFBFBD>ܤ<EFBFBD><DCA4><EFBFBD>";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "<22>즲";
|
||||
Calendar._TT["PART_TODAY"] = " (<28><><EFBFBD><EFBFBD>)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "<22>N %s <20><><EFBFBD>ܦb<DCA6>e";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "<22><><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["TODAY"] = "<22><><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["TIME_PART"] = "<22>I<EFBFBD><49>or<6F>즲<EFBFBD>i<EFBFBD><69><EFBFBD>ܮɶ<DCAE>(<28>P<EFBFBD>ɫ<EFBFBD>Shift<66><74><EFBFBD><EFBFBD>)";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "<22>g";
|
||||
Calendar._TT["TIME"] = "Time:";
|
@@ -1,108 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar pt-BR language
|
||||
// Author: Fernando Dourado, <fernando.dourado@ig.com.br>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Domingo",
|
||||
"Segunda",
|
||||
"Terça",
|
||||
"Quarta",
|
||||
"Quinta",
|
||||
"Sexta",
|
||||
"Sabádo",
|
||||
"Domingo");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
// [No changes using default values]
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Janeiro",
|
||||
"Fevereiro",
|
||||
"Março",
|
||||
"Abril",
|
||||
"Maio",
|
||||
"Junho",
|
||||
"Julho",
|
||||
"Agosto",
|
||||
"Setembro",
|
||||
"Outubro",
|
||||
"Novembro",
|
||||
"Dezembro");
|
||||
|
||||
// short month names
|
||||
// [No changes using default values]
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Sobre o calendário";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Translate to portuguese Brazil (pt-BR) by Fernando Dourado (fernando.dourado@ig.com.br)\n" +
|
||||
"Tradução para o português Brasil (pt-BR) por Fernando Dourado (fernando.dourado@ig.com.br)" +
|
||||
"\n\n" +
|
||||
"Selecionar data:\n" +
|
||||
"- Use as teclas \xab, \xbb para selecionar o ano\n" +
|
||||
"- Use as teclas " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mês\n" +
|
||||
"- Clique e segure com o mouse em qualquer botão para selecionar rapidamente.";
|
||||
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selecionar hora:\n" +
|
||||
"- Clique em qualquer uma das partes da hora para aumentar\n" +
|
||||
"- ou Shift-clique para diminuir\n" +
|
||||
"- ou clique e arraste para selecionar rapidamente.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Ano anterior (clique e segure para menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Mês anterior (clique e segure para menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Ir para a data atual";
|
||||
Calendar._TT["NEXT_MONTH"] = "Próximo mês (clique e segure para menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Próximo ano (clique e segure para menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Selecione uma data";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Clique e segure para mover";
|
||||
Calendar._TT["PART_TODAY"] = " (hoje)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Exibir %s primeiro";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Fechar";
|
||||
Calendar._TT["TODAY"] = "Hoje";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Clique ou arraste para mudar o valor";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%d de %B de %Y";
|
||||
|
||||
Calendar._TT["WK"] = "sem";
|
||||
Calendar._TT["TIME"] = "Hora:";
|
||||
|
@@ -1,123 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar CA language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Diumenge",
|
||||
"Dilluns",
|
||||
"Dimarts",
|
||||
"Dimecres",
|
||||
"Dijous",
|
||||
"Divendres",
|
||||
"Dissabte",
|
||||
"Diumenge");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Diu",
|
||||
"Dil",
|
||||
"Dmt",
|
||||
"Dmc",
|
||||
"Dij",
|
||||
"Div",
|
||||
"Dis",
|
||||
"Diu");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Gener",
|
||||
"Febrer",
|
||||
"Mar<61>",
|
||||
"Abril",
|
||||
"Maig",
|
||||
"Juny",
|
||||
"Juliol",
|
||||
"Agost",
|
||||
"Setembre",
|
||||
"Octubre",
|
||||
"Novembre",
|
||||
"Desembre");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Gen",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Abr",
|
||||
"Mai",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Ago",
|
||||
"Set",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Des");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Sobre el calendari";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Selector de Data/Hora\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Sel.lecci<63> de Dates:\n" +
|
||||
"- Fes servir els botons \xab, \xbb per sel.leccionar l'any\n" +
|
||||
"- Fes servir els botons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per se.lecciconar el mes\n" +
|
||||
"- Mant<6E> el ratol<6F> apretat en qualsevol dels anteriors per sel.lecci<63> r<>pida.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Time selection:\n" +
|
||||
"- claca en qualsevol de les parts de la hora per augmentar-les\n" +
|
||||
"- o Shift-click per decrementar-la\n" +
|
||||
"- or click and arrastra per sel.lecci<63> r<>pida.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Any anterior (Mantenir per menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Mes anterior (Mantenir per menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Anar a avui";
|
||||
Calendar._TT["NEXT_MONTH"] = "Mes seg<65>ent (Mantenir per menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Any seg<65>ent (Mantenir per menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Sel.leccionar data";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar per moure";
|
||||
Calendar._TT["PART_TODAY"] = " (avui)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Mostra %s primer";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Tanca";
|
||||
Calendar._TT["TODAY"] = "Avui";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Click a arrastra per canviar el valor";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "st";
|
||||
Calendar._TT["TIME"] = "Hora:";
|
@@ -1,65 +0,0 @@
|
||||
/*
|
||||
calendar-cs-win.js
|
||||
language: Czech
|
||||
encoding: windows-1250
|
||||
author: Lubos Jerabek (xnet@seznam.cz)
|
||||
Jan Uhlir (espinosa@centrum.cz)
|
||||
*/
|
||||
|
||||
// ** I18N
|
||||
Calendar._DN = new Array('Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota','Neděle');
|
||||
Calendar._SDN = new Array('Ne','Po','Út','St','Čt','Pá','So','Ne');
|
||||
Calendar._MN = new Array('Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec');
|
||||
Calendar._SMN = new Array('Led','Úno','Bře','Dub','Kvě','Črv','Čvc','Srp','Zář','Říj','Lis','Pro');
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "O komponentě kalendář";
|
||||
Calendar._TT["TOGGLE"] = "Změna prvního dne v týdnu";
|
||||
Calendar._TT["PREV_YEAR"] = "Předchozí rok (přidrž pro menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Předchozí měsíc (přidrž pro menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Dnešní datum";
|
||||
Calendar._TT["NEXT_MONTH"] = "Další měsíc (přidrž pro menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Další rok (přidrž pro menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Vyber datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Chyť a táhni, pro přesun";
|
||||
Calendar._TT["PART_TODAY"] = " (dnes)";
|
||||
Calendar._TT["MON_FIRST"] = "Ukaž jako první Pondělí";
|
||||
//Calendar._TT["SUN_FIRST"] = "Ukaž jako první Neděli";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Výběr datumu:\n" +
|
||||
"- Use the \xab, \xbb buttons to select year\n" +
|
||||
"- Použijte tlačítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výběru měsíce\n" +
|
||||
"- Podržte tlačítko myši na jakémkoliv z těch tlačítek pro rychlejší výběr.";
|
||||
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Výběr času:\n" +
|
||||
"- Klikněte na jakoukoliv z částí výběru času pro zvýšení.\n" +
|
||||
"- nebo Shift-click pro snížení\n" +
|
||||
"- nebo klikněte a táhněte pro rychlejší výběr.";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Zavřít";
|
||||
Calendar._TT["TODAY"] = "Dnes";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro změnu hodnoty";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "Čas:";
|
@@ -1,65 +0,0 @@
|
||||
/*
|
||||
calendar-cs-win.js
|
||||
language: Czech
|
||||
encoding: windows-1250
|
||||
author: Lubos Jerabek (xnet@seznam.cz)
|
||||
Jan Uhlir (espinosa@centrum.cz)
|
||||
*/
|
||||
|
||||
// ** I18N
|
||||
Calendar._DN = new Array('Ned<65>le','Pond<6E>l<EFBFBD>','<27>ter<65>','St<53>eda','<27>tvrtek','P<>tek','Sobota','Ned<65>le');
|
||||
Calendar._SDN = new Array('Ne','Po','<27>t','St','<27>t','P<>','So','Ne');
|
||||
Calendar._MN = new Array('Leden','<27>nor','B<>ezen','Duben','Kv<4B>ten','<27>erven','<27>ervenec','Srpen','Z<><5A><EFBFBD>','<27><>jen','Listopad','Prosinec');
|
||||
Calendar._SMN = new Array('Led','<27>no','B<>e','Dub','Kv<4B>','<27>rv','<27>vc','Srp','Z<><5A>','<27><>j','Lis','Pro');
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "O komponent<6E> kalend<6E><64>";
|
||||
Calendar._TT["TOGGLE"] = "Zm<5A>na prvn<76>ho dne v t<>dnu";
|
||||
Calendar._TT["PREV_YEAR"] = "P<>edchoz<6F> rok (p<>idr<64> pro menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "P<>edchoz<6F> m<>s<EFBFBD>c (p<>idr<64> pro menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Dne<6E>n<EFBFBD> datum";
|
||||
Calendar._TT["NEXT_MONTH"] = "Dal<61><6C> m<>s<EFBFBD>c (p<>idr<64> pro menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Dal<61><6C> rok (p<>idr<64> pro menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Vyber datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Chy<68> a t<>hni, pro p<>esun";
|
||||
Calendar._TT["PART_TODAY"] = " (dnes)";
|
||||
Calendar._TT["MON_FIRST"] = "Uka<6B> jako prvn<76> Pond<6E>l<EFBFBD>";
|
||||
//Calendar._TT["SUN_FIRST"] = "Uka<6B> jako prvn<76> Ned<65>li";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"V<>b<EFBFBD>r datumu:\n" +
|
||||
"- Use the \xab, \xbb buttons to select year\n" +
|
||||
"- Pou<6F>ijte tla<6C><61>tka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k v<>b<EFBFBD>ru m<>s<EFBFBD>ce\n" +
|
||||
"- Podr<64>te tla<6C><61>tko my<6D>i na jak<61>mkoliv z t<>ch tla<6C><61>tek pro rychlej<65><6A> v<>b<EFBFBD>r.";
|
||||
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"V<>b<EFBFBD>r <20>asu:\n" +
|
||||
"- Klikn<6B>te na jakoukoliv z <20><>st<73> v<>b<EFBFBD>ru <20>asu pro zv<7A><76>en<65>.\n" +
|
||||
"- nebo Shift-click pro sn<73><6E>en<65>\n" +
|
||||
"- nebo klikn<6B>te a t<>hn<68>te pro rychlej<65><6A> v<>b<EFBFBD>r.";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Zobraz %s prvn<76>";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Zav<61><76>t";
|
||||
Calendar._TT["TODAY"] = "Dnes";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo t<>hni pro zm<7A>nu hodnoty";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "<22>as:";
|
@@ -1,123 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar DA language
|
||||
// Author: Michael Thingmand Henriksen, <michael (a) thingmand dot dk>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Søndag",
|
||||
"Mandag",
|
||||
"Tirsdag",
|
||||
"Onsdag",
|
||||
"Torsdag",
|
||||
"Fredag",
|
||||
"Lørdag",
|
||||
"Søndag");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Søn",
|
||||
"Man",
|
||||
"Tir",
|
||||
"Ons",
|
||||
"Tor",
|
||||
"Fre",
|
||||
"Lør",
|
||||
"Søn");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Januar",
|
||||
"Februar",
|
||||
"Marts",
|
||||
"April",
|
||||
"Maj",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"August",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"December");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"Maj",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Okt",
|
||||
"Nov",
|
||||
"Dec");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Om Kalenderen";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For den seneste version besøg: http://www.dynarch.com/projects/calendar/\n"; +
|
||||
"Distribueret under GNU LGPL. Se http://gnu.org/licenses/lgpl.html for detajler." +
|
||||
"\n\n" +
|
||||
"Valg af dato:\n" +
|
||||
"- Brug \xab, \xbb knapperne for at vælge år\n" +
|
||||
"- Brug " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " knapperne for at vælge måned\n" +
|
||||
"- Hold knappen på musen nede på knapperne ovenfor for hurtigere valg.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Valg af tid:\n" +
|
||||
"- Klik på en vilkårlig del for større værdi\n" +
|
||||
"- eller Shift-klik for for mindre værdi\n" +
|
||||
"- eller klik og træk for hurtigere valg.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Ét år tilbage (hold for menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Én måned tilbage (hold for menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Gå til i dag";
|
||||
Calendar._TT["NEXT_MONTH"] = "Én måned frem (hold for menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Ét år frem (hold for menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Vælg dag";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Træk vinduet";
|
||||
Calendar._TT["PART_TODAY"] = " (i dag)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Vis %s først";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Luk";
|
||||
Calendar._TT["TODAY"] = "I dag";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)klik eller træk for at ændre værdi";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "Uge";
|
||||
Calendar._TT["TIME"] = "Tid:";
|
@@ -1,124 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar DE language
|
||||
// Author: Jack (tR), <jack@jtr.de>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Sonntag",
|
||||
"Montag",
|
||||
"Dienstag",
|
||||
"Mittwoch",
|
||||
"Donnerstag",
|
||||
"Freitag",
|
||||
"Samstag",
|
||||
"Sonntag");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("So",
|
||||
"Mo",
|
||||
"Di",
|
||||
"Mi",
|
||||
"Do",
|
||||
"Fr",
|
||||
"Sa",
|
||||
"So");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Januar",
|
||||
"Februar",
|
||||
"M\u00e4rz",
|
||||
"April",
|
||||
"Mai",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"August",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"Dezember");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Feb",
|
||||
"M\u00e4r",
|
||||
"Apr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Okt",
|
||||
"Nov",
|
||||
"Dez");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "\u00DCber dieses Kalendarmodul";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Datum ausw\u00e4hlen:\n" +
|
||||
"- Benutzen Sie die \xab, \xbb Buttons um das Jahr zu w\u00e4hlen\n" +
|
||||
"- Benutzen Sie die " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " Buttons um den Monat zu w\u00e4hlen\n" +
|
||||
"- F\u00fcr eine Schnellauswahl halten Sie die Maustaste \u00fcber diesen Buttons fest.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Zeit ausw\u00e4hlen:\n" +
|
||||
"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\u00F6hen\n" +
|
||||
"- oder klicken Sie mit festgehaltener Shift-Taste um diese zu verringern\n" +
|
||||
"- oder klicken und festhalten f\u00fcr Schnellauswahl.";
|
||||
|
||||
Calendar._TT["TOGGLE"] = "Ersten Tag der Woche w\u00e4hlen";
|
||||
Calendar._TT["PREV_YEAR"] = "Voriges Jahr (Festhalten f\u00fcr Schnellauswahl)";
|
||||
Calendar._TT["PREV_MONTH"] = "Voriger Monat (Festhalten f\u00fcr Schnellauswahl)";
|
||||
Calendar._TT["GO_TODAY"] = "Heute ausw\u00e4hlen";
|
||||
Calendar._TT["NEXT_MONTH"] = "N\u00e4chst. Monat (Festhalten f\u00fcr Schnellauswahl)";
|
||||
Calendar._TT["NEXT_YEAR"] = "N\u00e4chst. Jahr (Festhalten f\u00fcr Schnellauswahl)";
|
||||
Calendar._TT["SEL_DATE"] = "Datum ausw\u00e4hlen";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen festhalten";
|
||||
Calendar._TT["PART_TODAY"] = " (Heute)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s ";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Schlie\u00dfen";
|
||||
Calendar._TT["TODAY"] = "Heute";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Klick oder Festhalten und Ziehen um den Wert zu \u00e4ndern";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "Zeit:";
|
@@ -1,45 +0,0 @@
|
||||
// ** I18N
|
||||
Calendar._DN = new Array
|
||||
("Zondag",
|
||||
"Maandag",
|
||||
"Dinsdag",
|
||||
"Woensdag",
|
||||
"Donderdag",
|
||||
"Vrijdag",
|
||||
"Zaterdag",
|
||||
"Zondag");
|
||||
Calendar._MN = new Array
|
||||
("Januari",
|
||||
"Februari",
|
||||
"Maart",
|
||||
"April",
|
||||
"Mei",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"Augustus",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"December");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["TOGGLE"] = "Toggle startdag van de week";
|
||||
Calendar._TT["PREV_YEAR"] = "Vorig jaar (indrukken voor menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Vorige month (indrukken voor menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Naar Vandaag";
|
||||
Calendar._TT["NEXT_MONTH"] = "Volgende Maand (indrukken voor menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Volgend jaar (indrukken voor menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Selecteer datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te verplaatsen";
|
||||
Calendar._TT["PART_TODAY"] = " (vandaag)";
|
||||
Calendar._TT["MON_FIRST"] = "Toon Maandag eerst";
|
||||
Calendar._TT["SUN_FIRST"] = "Toon Zondag eerst";
|
||||
Calendar._TT["CLOSE"] = "Sluiten";
|
||||
Calendar._TT["TODAY"] = "Vandaag";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "D, M d";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
@@ -1,89 +0,0 @@
|
||||
// ** I18N
|
||||
Calendar._DN = new Array
|
||||
("Κυριακή",
|
||||
"Δευτέρα",
|
||||
"Τρίτη",
|
||||
"Τετάρτη",
|
||||
"Πέμπτη",
|
||||
"Παρασκευή",
|
||||
"Σάββατο",
|
||||
"Κυριακή");
|
||||
|
||||
Calendar._SDN = new Array
|
||||
("Κυ",
|
||||
"Δε",
|
||||
"Tρ",
|
||||
"Τε",
|
||||
"Πε",
|
||||
"Πα",
|
||||
"Σα",
|
||||
"Κυ");
|
||||
|
||||
Calendar._MN = new Array
|
||||
("Ιανουάριος",
|
||||
"Φεβρουάριος",
|
||||
"Μάρτιος",
|
||||
"Απρίλιος",
|
||||
"Μάϊος",
|
||||
"Ιούνιος",
|
||||
"Ιούλιος",
|
||||
"Αύγουστος",
|
||||
"Σεπτέμβριος",
|
||||
"Οκτώβριος",
|
||||
"Νοέμβριος",
|
||||
"Δεκέμβριος");
|
||||
|
||||
Calendar._SMN = new Array
|
||||
("Ιαν",
|
||||
"Φεβ",
|
||||
"Μαρ",
|
||||
"Απρ",
|
||||
"Μαι",
|
||||
"Ιουν",
|
||||
"Ιουλ",
|
||||
"Αυγ",
|
||||
"Σεπ",
|
||||
"Οκτ",
|
||||
"Νοε",
|
||||
"Δεκ");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Για το ημερολόγιο";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"Επιλογέας ημερομηνίας/ώρας σε DHTML\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Για τελευταία έκδοση: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Επιλογή ημερομηνίας:\n" +
|
||||
"- Χρησιμοποιείστε τα κουμπιά \xab, \xbb για επιλογή έτους\n" +
|
||||
"- Χρησιμοποιείστε τα κουμπιά " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " για επιλογή μήνα\n" +
|
||||
"- Κρατήστε κουμπί ποντικού πατημένο στα παραπάνω κουμπιά για πιο γρήγορη επιλογή.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Επιλογή ώρας:\n" +
|
||||
"- Κάντε κλικ σε ένα από τα μέρη της ώρας για αύξηση\n" +
|
||||
"- ή Shift-κλικ για μείωση\n" +
|
||||
"- ή κλικ και μετακίνηση για πιο γρήγορη επιλογή.";
|
||||
Calendar._TT["TOGGLE"] = "Μπάρα πρώτης ημέρας της εβδομάδας";
|
||||
Calendar._TT["PREV_YEAR"] = "Προηγ. έτος (κρατήστε για το μενού)";
|
||||
Calendar._TT["PREV_MONTH"] = "Προηγ. μήνας (κρατήστε για το μενού)";
|
||||
Calendar._TT["GO_TODAY"] = "Σήμερα";
|
||||
Calendar._TT["NEXT_MONTH"] = "Επόμενος μήνας (κρατήστε για το μενού)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Επόμενο έτος (κρατήστε για το μενού)";
|
||||
Calendar._TT["SEL_DATE"] = "Επιλέξτε ημερομηνία";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Σύρτε για να μετακινήσετε";
|
||||
Calendar._TT["PART_TODAY"] = " (σήμερα)";
|
||||
Calendar._TT["MON_FIRST"] = "Εμφάνιση Δευτέρας πρώτα";
|
||||
Calendar._TT["SUN_FIRST"] = "Εμφάνιση Κυριακής πρώτα";
|
||||
Calendar._TT["CLOSE"] = "Κλείσιμο";
|
||||
Calendar._TT["TODAY"] = "Σήμερα";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)κλικ ή μετακίνηση για αλλαγή";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "D, d M";
|
||||
|
||||
Calendar._TT["WK"] = "εβδ";
|
||||
|
@@ -1,127 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Sunday",
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday",
|
||||
"Sunday");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Sun",
|
||||
"Mon",
|
||||
"Tue",
|
||||
"Wed",
|
||||
"Thu",
|
||||
"Fri",
|
||||
"Sat",
|
||||
"Sun");
|
||||
|
||||
// First day of the week. "0" means display Sunday first, "1" means display
|
||||
// Monday first, etc.
|
||||
Calendar._FD = 0;
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("January",
|
||||
"February",
|
||||
"March",
|
||||
"April",
|
||||
"May",
|
||||
"June",
|
||||
"July",
|
||||
"August",
|
||||
"September",
|
||||
"October",
|
||||
"November",
|
||||
"December");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dec");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "About the calendar";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Date selection:\n" +
|
||||
"- Use the \xab, \xbb buttons to select year\n" +
|
||||
"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
|
||||
"- Hold mouse button on any of the above buttons for faster selection.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Time selection:\n" +
|
||||
"- Click on any of the time parts to increase it\n" +
|
||||
"- or Shift-click to decrease it\n" +
|
||||
"- or click and drag for faster selection.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Go Today";
|
||||
Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Select date";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
|
||||
Calendar._TT["PART_TODAY"] = " (today)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Display %s first";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Close";
|
||||
Calendar._TT["TODAY"] = "Today";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "Time:";
|
@@ -1,129 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar ES (spanish) language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Updater: Servilio Afre Puentes <servilios@yahoo.com>
|
||||
// Updated: 2004-06-03
|
||||
// Encoding: utf-8
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Domingo",
|
||||
"Lunes",
|
||||
"Martes",
|
||||
"Mi<4D>rcoles",
|
||||
"Jueves",
|
||||
"Viernes",
|
||||
"S<>bado",
|
||||
"Domingo");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Dom",
|
||||
"Lun",
|
||||
"Mar",
|
||||
"Mi<4D>",
|
||||
"Jue",
|
||||
"Vie",
|
||||
"S<>b",
|
||||
"Dom");
|
||||
|
||||
// First day of the week. "0" means display Sunday first, "1" means display
|
||||
// Monday first, etc.
|
||||
Calendar._FD = 1;
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Enero",
|
||||
"Febrero",
|
||||
"Marzo",
|
||||
"Abril",
|
||||
"Mayo",
|
||||
"Junio",
|
||||
"Julio",
|
||||
"Agosto",
|
||||
"Septiembre",
|
||||
"Octubre",
|
||||
"Noviembre",
|
||||
"Diciembre");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Ene",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Abr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Ago",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dic");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Acerca del calendario";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"Selector DHTML de Fecha/Hora\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Para conseguir la <20>ltima versi<73>n visite: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distribuido bajo licencia GNU LGPL. Visite http://gnu.org/licenses/lgpl.html para m<>s detalles." +
|
||||
"\n\n" +
|
||||
"Selecci<63>n de fecha:\n" +
|
||||
"- Use los botones \xab, \xbb para seleccionar el a<>o\n" +
|
||||
"- Use los botones " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para seleccionar el mes\n" +
|
||||
"- Mantenga pulsado el rat<61>n en cualquiera de estos botones para una selecci<63>n r<>pida.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selecci<63>n de hora:\n" +
|
||||
"- Pulse en cualquiera de las partes de la hora para incrementarla\n" +
|
||||
"- o pulse las may<61>sculas mientras hace clic para decrementarla\n" +
|
||||
"- o haga clic y arrastre el rat<61>n para una selecci<63>n m<>s r<>pida.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "A<>o anterior (mantener para men<65>)";
|
||||
Calendar._TT["PREV_MONTH"] = "Mes anterior (mantener para men<65>)";
|
||||
Calendar._TT["GO_TODAY"] = "Ir a hoy";
|
||||
Calendar._TT["NEXT_MONTH"] = "Mes siguiente (mantener para men<65>)";
|
||||
Calendar._TT["NEXT_YEAR"] = "A<>o siguiente (mantener para men<65>)";
|
||||
Calendar._TT["SEL_DATE"] = "Seleccionar fecha";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar para mover";
|
||||
Calendar._TT["PART_TODAY"] = " (hoy)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Hacer %s primer d<>a de la semana";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Cerrar";
|
||||
Calendar._TT["TODAY"] = "Hoy";
|
||||
Calendar._TT["TIME_PART"] = "(May<61>scula-)Clic o arrastre para cambiar valor";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%A, %e de %B de %Y";
|
||||
|
||||
Calendar._TT["WK"] = "sem";
|
||||
Calendar._TT["TIME"] = "Hora:";
|
@@ -1,98 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar FI language (Finnish, Suomi)
|
||||
// Author: Jarno Käyhkö, <gambler@phnet.fi>
|
||||
// Encoding: UTF-8
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Sunnuntai",
|
||||
"Maanantai",
|
||||
"Tiistai",
|
||||
"Keskiviikko",
|
||||
"Torstai",
|
||||
"Perjantai",
|
||||
"Lauantai",
|
||||
"Sunnuntai");
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Su",
|
||||
"Ma",
|
||||
"Ti",
|
||||
"Ke",
|
||||
"To",
|
||||
"Pe",
|
||||
"La",
|
||||
"Su");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Tammikuu",
|
||||
"Helmikuu",
|
||||
"Maaliskuu",
|
||||
"Huhtikuu",
|
||||
"Toukokuu",
|
||||
"Kesäkuu",
|
||||
"Heinäkuu",
|
||||
"Elokuu",
|
||||
"Syyskuu",
|
||||
"Lokakuu",
|
||||
"Marraskuu",
|
||||
"Joulukuu");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Tam",
|
||||
"Hel",
|
||||
"Maa",
|
||||
"Huh",
|
||||
"Tou",
|
||||
"Kes",
|
||||
"Hei",
|
||||
"Elo",
|
||||
"Syy",
|
||||
"Lok",
|
||||
"Mar",
|
||||
"Jou");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Tietoja kalenterista";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Uusin versio osoitteessa: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Julkaistu GNU LGPL lisenssin alaisuudessa. Lisätietoja osoitteessa http://gnu.org/licenses/lgpl.html" +
|
||||
"\n\n" +
|
||||
"Päivämäärä valinta:\n" +
|
||||
"- Käytä \xab, \xbb painikkeita valitaksesi vuosi\n" +
|
||||
"- Käytä " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " painikkeita valitaksesi kuukausi\n" +
|
||||
"- Pitämällä hiiren painiketta minkä tahansa yllä olevan painikkeen kohdalla, saat näkyviin valikon nopeampaan siirtymiseen.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Ajan valinta:\n" +
|
||||
"- Klikkaa kellonajan numeroita lisätäksesi aikaa\n" +
|
||||
"- tai pitämällä Shift-näppäintä pohjassa saat aikaa taaksepäin\n" +
|
||||
"- tai klikkaa ja pidä hiiren painike pohjassa sekä liikuta hiirtä muuttaaksesi aikaa nopeasti eteen- ja taaksepäin.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Edell. vuosi (paina hetki, näet valikon)";
|
||||
Calendar._TT["PREV_MONTH"] = "Edell. kuukausi (paina hetki, näet valikon)";
|
||||
Calendar._TT["GO_TODAY"] = "Siirry tähän päivään";
|
||||
Calendar._TT["NEXT_MONTH"] = "Seur. kuukausi (paina hetki, näet valikon)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Seur. vuosi (paina hetki, näet valikon)";
|
||||
Calendar._TT["SEL_DATE"] = "Valitse päivämäärä";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Siirrä kalenterin paikkaa";
|
||||
Calendar._TT["PART_TODAY"] = " (tänään)";
|
||||
Calendar._TT["MON_FIRST"] = "Näytä maanantai ensimmäisenä";
|
||||
Calendar._TT["SUN_FIRST"] = "Näytä sunnuntai ensimmäisenä";
|
||||
Calendar._TT["CLOSE"] = "Sulje";
|
||||
Calendar._TT["TODAY"] = "Tänään";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-) Klikkaa tai liikuta muuttaaksesi aikaa";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%d.%m.%Y";
|
||||
|
||||
Calendar._TT["WK"] = "Vko";
|
@@ -1,125 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// Translator: David Duret, <pilgrim@mala-template.net> from previous french version
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Dimanche",
|
||||
"Lundi",
|
||||
"Mardi",
|
||||
"Mercredi",
|
||||
"Jeudi",
|
||||
"Vendredi",
|
||||
"Samedi",
|
||||
"Dimanche");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Dim",
|
||||
"Lun",
|
||||
"Mar",
|
||||
"Mar",
|
||||
"Jeu",
|
||||
"Ven",
|
||||
"Sam",
|
||||
"Dim");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Janvier",
|
||||
"F<>vrier",
|
||||
"Mars",
|
||||
"Avril",
|
||||
"Mai",
|
||||
"Juin",
|
||||
"Juillet",
|
||||
"Ao<41>t",
|
||||
"Septembre",
|
||||
"Octobre",
|
||||
"Novembre",
|
||||
"D<>cembre");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Fev",
|
||||
"Mar",
|
||||
"Avr",
|
||||
"Mai",
|
||||
"Juin",
|
||||
"Juil",
|
||||
"Aout",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dec");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "A propos du calendrier";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Heure Selecteur\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Pour la derniere version visitez : http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distribu<62> par GNU LGPL. Voir http://gnu.org/licenses/lgpl.html pour les details." +
|
||||
"\n\n" +
|
||||
"Selection de la date :\n" +
|
||||
"- Utiliser les bouttons \xab, \xbb pour selectionner l\'annee\n" +
|
||||
"- Utiliser les bouttons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pour selectionner les mois\n" +
|
||||
"- Garder la souris sur n'importe quels boutons pour une selection plus rapide";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selection de l\'heure :\n" +
|
||||
"- Cliquer sur heures ou minutes pour incrementer\n" +
|
||||
"- ou Maj-clic pour decrementer\n" +
|
||||
"- ou clic et glisser-deplacer pour une selection plus rapide";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Ann<6E>e pr<70>c. (maintenir pour menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Mois pr<70>c. (maintenir pour menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Atteindre la date du jour";
|
||||
Calendar._TT["NEXT_MONTH"] = "Mois suiv. (maintenir pour menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Ann<6E>e suiv. (maintenir pour menu)";
|
||||
Calendar._TT["SEL_DATE"] = "S<>lectionner une date";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "D<>placer";
|
||||
Calendar._TT["PART_TODAY"] = " (Aujourd'hui)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Afficher %s en premier";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Fermer";
|
||||
Calendar._TT["TODAY"] = "Aujourd'hui";
|
||||
Calendar._TT["TIME_PART"] = "(Maj-)Clic ou glisser pour modifier la valeur";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "Sem.";
|
||||
Calendar._TT["TIME"] = "Heure :";
|
@@ -1,123 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Idan Sofer, <idan@idanso.dyndns.org>
|
||||
// Encoding: UTF-8
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("ראשון",
|
||||
"שני",
|
||||
"שלישי",
|
||||
"רביעי",
|
||||
"חמישי",
|
||||
"שישי",
|
||||
"שבת",
|
||||
"ראשון");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("א",
|
||||
"ב",
|
||||
"ג",
|
||||
"ד",
|
||||
"ה",
|
||||
"ו",
|
||||
"ש",
|
||||
"א");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("ינואר",
|
||||
"פברואר",
|
||||
"מרץ",
|
||||
"אפריל",
|
||||
"מאי",
|
||||
"יוני",
|
||||
"יולי",
|
||||
"אוגוסט",
|
||||
"ספטמבר",
|
||||
"אוקטובר",
|
||||
"נובמבר",
|
||||
"דצמבר");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("ינא",
|
||||
"פבר",
|
||||
"מרץ",
|
||||
"אפר",
|
||||
"מאי",
|
||||
"יונ",
|
||||
"יול",
|
||||
"אוג",
|
||||
"ספט",
|
||||
"אוק",
|
||||
"נוב",
|
||||
"דצמ");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "אודות השנתון";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"בחרן תאריך/שעה DHTML\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"הגירסא האחרונה זמינה ב: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"מופץ תחת זיכיון ה GNU LGPL. עיין ב http://gnu.org/licenses/lgpl.html לפרטים נוספים." +
|
||||
"\n\n" +
|
||||
בחירת תאריך:\n" +
|
||||
"- השתמש בכפתורים \xab, \xbb לבחירת שנה\n" +
|
||||
"- השתמש בכפתורים " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " לבחירת חודש\n" +
|
||||
"- החזק העכבר לחוץ מעל הכפתורים המוזכרים לעיל לבחירה מהירה יותר.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"בחירת זמן:\n" +
|
||||
"- לחץ על כל אחד מחלקי הזמן כדי להוסיף\n" +
|
||||
"- או shift בשילוב עם לחיצה כדי להחסיר\n" +
|
||||
"- או לחץ וגרור לפעולה מהירה יותר.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "שנה קודמת - החזק לקבלת תפריט";
|
||||
Calendar._TT["PREV_MONTH"] = "חודש קודם - החזק לקבלת תפריט";
|
||||
Calendar._TT["GO_TODAY"] = "עבור להיום";
|
||||
Calendar._TT["NEXT_MONTH"] = "חודש הבא - החזק לתפריט";
|
||||
Calendar._TT["NEXT_YEAR"] = "שנה הבאה - החזק לתפריט";
|
||||
Calendar._TT["SEL_DATE"] = "בחר תאריך";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "גרור להזזה";
|
||||
Calendar._TT["PART_TODAY"] = " )היום(";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "הצג %s קודם";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "סגור";
|
||||
Calendar._TT["TODAY"] = "היום";
|
||||
Calendar._TT["TIME_PART"] = "(שיפט-)לחץ וגרור כדי לשנות ערך";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "שעה::";
|
@@ -1,49 +0,0 @@
|
||||
/* Croatian language file for the DHTML Calendar version 0.9.2
|
||||
* Author Krunoslav Zubrinic <krunoslav.zubrinic@vip.hr>, June 2003.
|
||||
* Feel free to use this script under the terms of the GNU Lesser General
|
||||
* Public License, as long as you do not remove or alter this notice.
|
||||
*/
|
||||
Calendar._DN = new Array
|
||||
("Nedjelja",
|
||||
"Ponedjeljak",
|
||||
"Utorak",
|
||||
"Srijeda",
|
||||
"Četvrtak",
|
||||
"Petak",
|
||||
"Subota",
|
||||
"Nedjelja");
|
||||
Calendar._MN = new Array
|
||||
("Siječanj",
|
||||
"Veljača",
|
||||
"Ožujak",
|
||||
"Travanj",
|
||||
"Svibanj",
|
||||
"Lipanj",
|
||||
"Srpanj",
|
||||
"Kolovoz",
|
||||
"Rujan",
|
||||
"Listopad",
|
||||
"Studeni",
|
||||
"Prosinac");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["TOGGLE"] = "Promjeni dan s kojim počinje tjedan";
|
||||
Calendar._TT["PREV_YEAR"] = "Prethodna godina (dugi pritisak za meni)";
|
||||
Calendar._TT["PREV_MONTH"] = "Prethodni mjesec (dugi pritisak za meni)";
|
||||
Calendar._TT["GO_TODAY"] = "Idi na tekući dan";
|
||||
Calendar._TT["NEXT_MONTH"] = "Slijedeći mjesec (dugi pritisak za meni)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Slijedeća godina (dugi pritisak za meni)";
|
||||
Calendar._TT["SEL_DATE"] = "Izaberite datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Pritisni i povuci za promjenu pozicije";
|
||||
Calendar._TT["PART_TODAY"] = " (today)";
|
||||
Calendar._TT["MON_FIRST"] = "Prikaži ponedjeljak kao prvi dan";
|
||||
Calendar._TT["SUN_FIRST"] = "Prikaži nedjelju kao prvi dan";
|
||||
Calendar._TT["CLOSE"] = "Zatvori";
|
||||
Calendar._TT["TODAY"] = "Danas";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "DD, dd.mm.y";
|
||||
|
||||
Calendar._TT["WK"] = "Tje";
|
Binary file not shown.
@@ -1,124 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar HU language
|
||||
// Author: ???
|
||||
// Modifier: KARASZI Istvan, <jscalendar@spam.raszi.hu>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Vas<61>rnap",
|
||||
"H<>tf<74>",
|
||||
"Kedd",
|
||||
"Szerda",
|
||||
"Cs<43>t<EFBFBD>rt<72>k",
|
||||
"P<>ntek",
|
||||
"Szombat",
|
||||
"Vas<61>rnap");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("v",
|
||||
"h",
|
||||
"k",
|
||||
"sze",
|
||||
"cs",
|
||||
"p",
|
||||
"szo",
|
||||
"v");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("janu<6E>r",
|
||||
"febru<72>r",
|
||||
"m<>rcius",
|
||||
"<22>prilis",
|
||||
"m<>jus",
|
||||
"j<>nius",
|
||||
"j<>lius",
|
||||
"augusztus",
|
||||
"szeptember",
|
||||
"okt<6B>ber",
|
||||
"november",
|
||||
"december");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("jan",
|
||||
"feb",
|
||||
"m<>r",
|
||||
"<22>pr",
|
||||
"m<>j",
|
||||
"j<>n",
|
||||
"j<>l",
|
||||
"aug",
|
||||
"sze",
|
||||
"okt",
|
||||
"nov",
|
||||
"dec");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "A kalend<6E>riumr<6D>l";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML d<>tum/id<69> kiv<69>laszt<7A>\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"a legfrissebb verzi<7A> megtal<61>lhat<61>: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"GNU LGPL alatt terjesztve. L<>sd a http://gnu.org/licenses/lgpl.html oldalt a r<>szletekhez." +
|
||||
"\n\n" +
|
||||
"D<>tum v<>laszt<7A>s:\n" +
|
||||
"- haszn<7A>lja a \xab, \xbb gombokat az <20>v kiv<69>laszt<7A>s<EFBFBD>hoz\n" +
|
||||
"- haszn<7A>lja a " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " gombokat a h<>nap kiv<69>laszt<7A>s<EFBFBD>hoz\n" +
|
||||
"- tartsa lenyomva az eg<65>rgombot a gyors v<>laszt<7A>shoz.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Id<49> v<>laszt<7A>s:\n" +
|
||||
"- kattintva n<>velheti az id<69>t\n" +
|
||||
"- shift-tel kattintva cs<63>kkentheti\n" +
|
||||
"- lenyomva tartva <20>s h<>zva gyorsabban kiv<69>laszthatja.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "El<45>z<EFBFBD> <20>v (tartsa nyomva a men<65>h<EFBFBD>z)";
|
||||
Calendar._TT["PREV_MONTH"] = "El<45>z<EFBFBD> h<>nap (tartsa nyomva a men<65>h<EFBFBD>z)";
|
||||
Calendar._TT["GO_TODAY"] = "Mai napra ugr<67>s";
|
||||
Calendar._TT["NEXT_MONTH"] = "K<>v. h<>nap (tartsa nyomva a men<65>h<EFBFBD>z)";
|
||||
Calendar._TT["NEXT_YEAR"] = "K<>v. <20>v (tartsa nyomva a men<65>h<EFBFBD>z)";
|
||||
Calendar._TT["SEL_DATE"] = "V<>lasszon d<>tumot";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "H<>zza a mozgat<61>shoz";
|
||||
Calendar._TT["PART_TODAY"] = " (ma)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "%s legyen a h<>t els<6C> napja";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Bez<65>r";
|
||||
Calendar._TT["TODAY"] = "Ma";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Klikk vagy h<>z<EFBFBD>s az <20>rt<72>k v<>ltoztat<61>s<EFBFBD>hoz";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%b %e, %a";
|
||||
|
||||
Calendar._TT["WK"] = "h<>t";
|
||||
Calendar._TT["TIME"] = "id<69>:";
|
@@ -1,124 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Translator: Fabio Di Bernardini, <altraqua@email.it>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Domenica",
|
||||
"Lunedì",
|
||||
"Martedì",
|
||||
"Mercoledì",
|
||||
"Giovedì",
|
||||
"Venerdì",
|
||||
"Sabato",
|
||||
"Domenica");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Dom",
|
||||
"Lun",
|
||||
"Mar",
|
||||
"Mer",
|
||||
"Gio",
|
||||
"Ven",
|
||||
"Sab",
|
||||
"Dom");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Gennaio",
|
||||
"Febbraio",
|
||||
"Marzo",
|
||||
"Aprile",
|
||||
"Maggio",
|
||||
"Giugno",
|
||||
"Luglio",
|
||||
"Augosto",
|
||||
"Settembre",
|
||||
"Ottobre",
|
||||
"Novembre",
|
||||
"Dicembre");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Gen",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"Mag",
|
||||
"Giu",
|
||||
"Lug",
|
||||
"Ago",
|
||||
"Set",
|
||||
"Ott",
|
||||
"Nov",
|
||||
"Dic");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Informazioni sul calendario";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Per gli aggiornamenti: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distribuito sotto licenza GNU LGPL. Vedi http://gnu.org/licenses/lgpl.html per i dettagli." +
|
||||
"\n\n" +
|
||||
"Selezione data:\n" +
|
||||
"- Usa \xab, \xbb per selezionare l'anno\n" +
|
||||
"- Usa " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per i mesi\n" +
|
||||
"- Tieni premuto a lungo il mouse per accedere alle funzioni di selezione veloce.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selezione orario:\n" +
|
||||
"- Clicca sul numero per incrementarlo\n" +
|
||||
"- o Shift+click per decrementarlo\n" +
|
||||
"- o click e sinistra o destra per variarlo.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Anno prec.(clicca a lungo per il menù)";
|
||||
Calendar._TT["PREV_MONTH"] = "Mese prec. (clicca a lungo per il menù)";
|
||||
Calendar._TT["GO_TODAY"] = "Oggi";
|
||||
Calendar._TT["NEXT_MONTH"] = "Pross. mese (clicca a lungo per il menù)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Pross. anno (clicca a lungo per il menù)";
|
||||
Calendar._TT["SEL_DATE"] = "Seleziona data";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostarlo";
|
||||
Calendar._TT["PART_TODAY"] = " (oggi)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Mostra prima %s";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Chiudi";
|
||||
Calendar._TT["TODAY"] = "Oggi";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Click o trascina per cambiare il valore";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a:%b:%e";
|
||||
|
||||
Calendar._TT["WK"] = "set";
|
||||
Calendar._TT["TIME"] = "Ora:";
|
@@ -1,45 +0,0 @@
|
||||
// ** I18N
|
||||
Calendar._DN = new Array
|
||||
("<22><>",
|
||||
"<22><>",
|
||||
"<22><>",
|
||||
"<22><>",
|
||||
"<22><>",
|
||||
"<22><>",
|
||||
"<22>y",
|
||||
"<22><>");
|
||||
Calendar._MN = new Array
|
||||
("1<><31>",
|
||||
"2<><32>",
|
||||
"3<><33>",
|
||||
"4<><34>",
|
||||
"5<><35>",
|
||||
"6<><36>",
|
||||
"7<><37>",
|
||||
"8<><38>",
|
||||
"9<><39>",
|
||||
"10<31><30>",
|
||||
"11<31><31>",
|
||||
"12<31><32>");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["TOGGLE"] = "<22>T<EFBFBD>̍ŏ<CC8D><C58F>̗j<CC97><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D882>ւ<EFBFBD>";
|
||||
Calendar._TT["PREV_YEAR"] = "<22>O<EFBFBD>N";
|
||||
Calendar._TT["PREV_MONTH"] = "<22>O<EFBFBD><4F>";
|
||||
Calendar._TT["GO_TODAY"] = "<22><><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["NEXT_MONTH"] = "<22><><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["NEXT_YEAR"] = "<22><><EFBFBD>N";
|
||||
Calendar._TT["SEL_DATE"] = "<22><><EFBFBD>t<EFBFBD>I<EFBFBD><49>";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "<22>E<EFBFBD>B<EFBFBD><42><EFBFBD>h<EFBFBD>E<EFBFBD>̈ړ<CC88>";
|
||||
Calendar._TT["PART_TODAY"] = " (<28><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["MON_FIRST"] = "<22><><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>擪<EFBFBD><E693AA>";
|
||||
Calendar._TT["SUN_FIRST"] = "<22><><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD><EFBFBD>擪<EFBFBD><E693AA>";
|
||||
Calendar._TT["CLOSE"] = "<22><EFBFBD><C282><EFBFBD>";
|
||||
Calendar._TT["TODAY"] = "<22><><EFBFBD><EFBFBD>";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%m<><6D> %d<><64> (%a)";
|
||||
|
||||
Calendar._TT["WK"] = "<22>T";
|
@@ -1,120 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Translation: Yourim Yi <yyi@yourim.net>
|
||||
// Encoding: EUC-KR
|
||||
// lang : ko
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
|
||||
Calendar._DN = new Array
|
||||
("일요일",
|
||||
"월요일",
|
||||
"화요일",
|
||||
"수요일",
|
||||
"목요일",
|
||||
"금요일",
|
||||
"토요일",
|
||||
"일요일");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("일",
|
||||
"월",
|
||||
"화",
|
||||
"수",
|
||||
"목",
|
||||
"금",
|
||||
"토",
|
||||
"일");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("1월",
|
||||
"2월",
|
||||
"3월",
|
||||
"4월",
|
||||
"5월",
|
||||
"6월",
|
||||
"7월",
|
||||
"8월",
|
||||
"9월",
|
||||
"10월",
|
||||
"11월",
|
||||
"12월");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9",
|
||||
"10",
|
||||
"11",
|
||||
"12");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "calendar 에 대해서";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"\n"+
|
||||
"최신 버전을 받으시려면 http://www.dynarch.com/projects/calendar/ 에 방문하세요\n" +
|
||||
"\n"+
|
||||
"GNU LGPL 라이센스로 배포됩니다. \n"+
|
||||
"라이센스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." +
|
||||
"\n\n" +
|
||||
"날짜 선택:\n" +
|
||||
"- 연도를 선택하려면 \xab, \xbb 버튼을 사용합니다\n" +
|
||||
"- 달을 선택하려면 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 버튼을 누르세요\n" +
|
||||
"- 계속 누르고 있으면 위 값들을 빠르게 선택하실 수 있습니다.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"시간 선택:\n" +
|
||||
"- 마우스로 누르면 시간이 증가합니다\n" +
|
||||
"- Shift 키와 함께 누르면 감소합니다\n" +
|
||||
"- 누른 상태에서 마우스를 움직이면 좀 더 빠르게 값이 변합니다.\n";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "지난 해 (길게 누르면 목록)";
|
||||
Calendar._TT["PREV_MONTH"] = "지난 달 (길게 누르면 목록)";
|
||||
Calendar._TT["GO_TODAY"] = "오늘 날짜로";
|
||||
Calendar._TT["NEXT_MONTH"] = "다음 달 (길게 누르면 목록)";
|
||||
Calendar._TT["NEXT_YEAR"] = "다음 해 (길게 누르면 목록)";
|
||||
Calendar._TT["SEL_DATE"] = "날짜를 선택하세요";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "마우스 드래그로 이동 하세요";
|
||||
Calendar._TT["PART_TODAY"] = " (오늘)";
|
||||
Calendar._TT["MON_FIRST"] = "월요일을 한 주의 시작 요일로";
|
||||
Calendar._TT["SUN_FIRST"] = "일요일을 한 주의 시작 요일로";
|
||||
Calendar._TT["CLOSE"] = "닫기";
|
||||
Calendar._TT["TODAY"] = "오늘";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)클릭 또는 드래그 하세요";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
|
||||
|
||||
Calendar._TT["WK"] = "주";
|
@@ -1,120 +0,0 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Translation: Yourim Yi <yyi@yourim.net>
|
||||
// Encoding: EUC-KR
|
||||
// lang : ko
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
|
||||
Calendar._DN = new Array
|
||||
("<22>Ͽ<EFBFBD><CFBF><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"ȭ<><C8AD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22>ݿ<EFBFBD><DDBF><EFBFBD>",
|
||||
"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
||||
"<22>Ͽ<EFBFBD><CFBF><EFBFBD>");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("<22><>",
|
||||
"<22><>",
|
||||
"ȭ",
|
||||
"<22><>",
|
||||
"<22><>",
|
||||
"<22><>",
|
||||
"<22><>",
|
||||
"<22><>");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("1<><31>",
|
||||
"2<><32>",
|
||||
"3<><33>",
|
||||
"4<><34>",
|
||||
"5<><35>",
|
||||
"6<><36>",
|
||||
"7<><37>",
|
||||
"8<><38>",
|
||||
"9<><39>",
|
||||
"10<31><30>",
|
||||
"11<31><31>",
|
||||
"12<31><32>");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9",
|
||||
"10",
|
||||
"11",
|
||||
"12");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "calendar <20><> <20><><EFBFBD>ؼ<EFBFBD>";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"\n"+
|
||||
"<22>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD> http://www.dynarch.com/projects/calendar/ <20><> <20>湮<EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>\n" +
|
||||
"\n"+
|
||||
"GNU LGPL <20><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>˴ϴ<CBB4>. \n"+
|
||||
"<22><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ڼ<EFBFBD><DABC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> http://gnu.org/licenses/lgpl.html <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>." +
|
||||
"\n\n" +
|
||||
"<22><>¥ <20><><EFBFBD><EFBFBD>:\n" +
|
||||
"- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> \xab, \xbb <20><>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>\n" +
|
||||
"- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD><CFB7><EFBFBD> " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " <20><>ư<EFBFBD><C6B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n" +
|
||||
"- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"<22>ð<EFBFBD> <20><><EFBFBD><EFBFBD>:\n" +
|
||||
"- <20><><EFBFBD>콺<EFBFBD><ECBDBA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>\n" +
|
||||
"- Shift Ű<><C5B0> <20>Բ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>\n" +
|
||||
"- <20><><EFBFBD><EFBFBD> <20><><EFBFBD>¿<EFBFBD><C2BF><EFBFBD> <20><><EFBFBD>콺<EFBFBD><ECBDBA> <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>մϴ<D5B4>.\n";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "<22><><EFBFBD><EFBFBD> <20><> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["PREV_MONTH"] = "<22><><EFBFBD><EFBFBD> <20><> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["GO_TODAY"] = "<22><><EFBFBD><EFBFBD> <20><>¥<EFBFBD><C2A5>";
|
||||
Calendar._TT["NEXT_MONTH"] = "<22><><EFBFBD><EFBFBD> <20><> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["NEXT_YEAR"] = "<22><><EFBFBD><EFBFBD> <20><> (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["SEL_DATE"] = "<22><>¥<EFBFBD><C2A5> <20><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD>";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "<22><><EFBFBD>콺 <20>巡<EFBFBD><EFBFBD> <20>̵<EFBFBD> <20>ϼ<EFBFBD><CFBC><EFBFBD>";
|
||||
Calendar._TT["PART_TODAY"] = " (<28><><EFBFBD><EFBFBD>)";
|
||||
Calendar._TT["MON_FIRST"] = "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ϸ<EFBFBD>";
|
||||
Calendar._TT["SUN_FIRST"] = "<22>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>Ϸ<EFBFBD>";
|
||||
Calendar._TT["CLOSE"] = "<22>ݱ<EFBFBD>";
|
||||
Calendar._TT["TODAY"] = "<22><><EFBFBD><EFBFBD>";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Ŭ<><C5AC> <20>Ǵ<EFBFBD> <20>巡<EFBFBD><E5B7A1> <20>ϼ<EFBFBD><CFBC><EFBFBD>";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
|
||||
|
||||
Calendar._TT["WK"] = "<22><>";
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user