Some changes:

- Inclusion of the following javascript directories:
  * Connector: javascript object to interface xmlhttprequest object. This object allows
      asynchronous posts and support for messages while this post is being done, such as
      "wait, contacting server", etc.
  * JsAPI: general javascript functions and methods
  * jsolait: performs conversion from a xmlrpc message to a javascript object
  * xmlRpcMsgCreator: performs conversion from a javascript object to a xmlrpc message
  * dynapi: cross-browser class to draw layers

- Update in setup version: now is 1.0.1.008; Update your versions. There was made a
  change in phpgw_vfs2_files table in handling of modified files.

- Upgrade of vfs2 classes and PclZip class

- Changes in javascript object and common object to allow the javascript backend to
  applications to work (now just filescenter will use it...)
This commit is contained in:
viniciuscb 2005-06-18 20:43:14 +00:00
parent e66d26d0c1
commit 0a28f3812e
99 changed files with 8711 additions and 3967 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1313,6 +1313,29 @@
{
$java_script = '';
//viniciuscb: in Concisus this condition is inexistent, and in all
//pages the javascript globals are inserted. Today, because
//filescenter needs these javascript globals, this
//include_jsbackend is a must to the javascript globals be
//included.
if ($GLOBALS['egw_info']['flags']['include_jsbackend'])
{
if (!$GLOBALS['egw_info']['flags']['nojsapi'])
{
if(!@is_object($GLOBALS['egw']->js))
{
$GLOBALS['egw']->js =& CreateObject('phpgwapi.javascript');
}
$GLOBALS['egw']->js->validate_jsapi();
}
if(@is_object($GLOBALS['egw']->js))
{
$java_script .= $GLOBALS['egw']->js->get_javascript_globals();
}
}
/* this flag is for all javascript code that has to be put before other jscode.
Think of conf vars etc... (pim@lingewoud.nl) */
if (isset($GLOBALS['egw_info']['flags']['java_script_thirst']))

View File

@ -1,44 +1,51 @@
<?php
/**************************************************************************\
* eGroupWare API - JavaScript *
* Written by Dave Hall skwashd at phpgroupware.org *
* Copyright (C) 2003 Free Software Foundation Inc *
* -------------------------------------------------------------------------*
* This library is part of the eGroupWare API *
* http://www.egroupware.org/api *
* ------------------------------------------------------------------------ *
* This program is Free Software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
/**************************************************************************\
* eGroupWare API - JavaScript *
* Written by Dave Hall skwashd at phpgroupware.org *
* Copyright (C) 2003 Free Software Foundation Inc *
* -------------------------------------------------------------------------*
* This library is part of the eGroupWare API *
* http://www.egroupware.org/api *
* ------------------------------------------------------------------------ *
* This program is Free Software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
/**
* eGroupWare javascript support class
*
* Only instanstiate this class using:
* <code>
* if(!@is_object($GLOBALS['phpgw']->js))
* {
* $GLOBALS['phpgw']->js = CreateObject('phpgwapi.javascript');
* }
* </code>
*
* This way a theme can see if this is a defined object and include the data,
* while the is_object() wrapper prevents whiping out existing data held in
* this instance variables, primarily the $files variable.
*
* Note: The package arguement is the subdirectory of js - all js should live in subdirectories
*
* @package phpgwapi
* @subpackage sessions
* @abstract
* @author Dave Hall
* @copyright &copy; 2003 Free Software Foundation
* @license GPL
* @uses template
*/
// On production sites, remove this lines below! \\
if (file_exists(EGW_INCLUDE_ROOT . '/uncompressed_thyapi')) define(EGW_UNCOMPRESSED_THYAPI, true);
else define(EGW_UNCOMPRESSED_THYAPI, false);
$GLOBALS['concisus_system']['javascript'] = array();
/**
* eGroupWare javascript support class
*
* Only instanstiate this class using:
* <code>
* if(!@is_object($GLOBALS['egw']->js))
* {
* $GLOBALS['egw']->js =& CreateObject('phpgwapi.javascript');
* }
* </code>
*
* This way a theme can see if this is a defined object and include the data,
* while the is_object() wrapper prevents whiping out existing data held in
* this instance variables, primarily the $files variable.
*
* Note: The package argument is the subdirectory of js - all js should live in subdirectories
*
* @package phpgwapi
* @subpackage sessions
* @abstract
* @author Dave Hall
* @copyright &copy; 2003 Free Software Foundation
* @license GPL
* @uses template
*
*/
class javascript
{
/**
@ -56,6 +63,11 @@
*/
var $t;
/**
* @var boolean Load JS API ?
*/
var $js_api;
/**
* Constructor
*
@ -63,8 +75,9 @@
*/
function javascript()
{
//$this->t = CreateObject('phpgwapi.Template', ExecMethod('phpgwapi.phpgw.common.get_tpl_dir','phpgwapi'));
//$this->t =& CreateObject('phpgwapi.Template', ExecMethod('phpgwapi.phpgw.common.get_tpl_dir','phpgwapi'));
//not currently used, but will be soon - I hope :)
$this->included_files =& $GLOBALS['concisus_system']['javascript']['included_files'];
}
@ -76,7 +89,7 @@
*/
function get_alert($msg)
{
return 'return alert("'.lang($msg).'");';
return 'return alert("'.lang($msg).'");';
}
/**
@ -119,9 +132,12 @@
function get_script_links()
{
$links = '';
$links_api = '';
$links_api_main = '';
if(!empty($this->files) && is_array($this->files))
{
$links = "<!--JS Imports from phpGW javascript class -->\n";
$links_head = "<!--JS Imports from phpGW javascript class -->\n";
foreach($this->files as $app => $packages)
{
if(!empty($packages) && is_array($packages))
@ -132,17 +148,58 @@
{
foreach($files as $file => $browser)
{
$links .= '<script type="text/javascript" src="'
. $GLOBALS['phpgw_info']['server']['webserver_url']
. "/$app/js/$pkg/$browser/$file" . '.js">'
. "</script>\n";
if ($app === 'phpgwapi' && $pkg === 'jsapi' && $file === 'jsapi')
{
$links_api_main = '<script type="text/javascript" src="'
. $GLOBALS['egw_info']['server']['webserver_url']
. "/$app/js/$pkg/$browser/$file" . '.js">'
. "</script>\n";
if ($browser !== '.')
{
$links_api_main = '<script type="text/javascript" src="'
. $GLOBALS['egw_info']['server']['webserver_url']
. "/$app/js/$pkg/$file" . '.js">'
. "</script>\n";
}
}
else if ($app === 'phpgwapi')
{
if ($browser !== '.')
{
$links_api .= '<script type="text/javascript" src="'
. $GLOBALS['egw_info']['server']['webserver_url']
. "/$app/js/$pkg/$file" . '.js">'
. "</script>\n";
}
$links_api .= '<script type="text/javascript" src="'
. $GLOBALS['egw_info']['server']['webserver_url']
. "/$app/js/$pkg/$browser/$file" . '.js">'
. "</script>\n";
}
else
{
if ($browser !== '.')
{
$links .= '<script type="text/javascript" src="'
. $GLOBALS['egw_info']['server']['webserver_url']
. "/$app/js/$pkg/$file" . '.js">'
. "</script>\n";
}
$links .= '<script type="text/javascript" src="'
. $GLOBALS['egw_info']['server']['webserver_url']
. "/$app/js/$pkg/$browser/$file" . '.js">'
. "</script>\n";
}
}
}
}
}
}
}
return $links;
return $links_head.$links_api_main.$links_api.$links;
}
/**
@ -204,7 +261,7 @@
* @param string $file file to be included - no ".js" on the end
* @param string $app application directory to search - default = phpgwapi
* @param bool $browser insert specific browser javascript.
*
*
* @discuss The browser specific option loads the file which is in the correct
* browser folder. Supported folder are those supported by class.browser.inc.php
*
@ -221,30 +278,196 @@
$browser_folder = '.';
}
if(is_readable(PHPGW_INCLUDE_ROOT .SEP .$app .SEP .'js' .SEP . $package . SEP . $browser_folder . SEP . $file . '.js'))
if ($this->included_files[$app][$package][$file]) return true;
if(is_readable(EGW_INCLUDE_ROOT .SEP .$app .SEP .'js' .SEP . $package . SEP . $browser_folder . SEP . $file . '.js'))
{
$this->files[$app][$package][$file] = $browser_folder;
$this->included_files[$app][$package][$file] = $browser_folder;
return True;
}
elseif (is_readable(PHPGW_INCLUDE_ROOT .SEP .$app .SEP .'js' .SEP . $package . SEP . $file . '.js'))
elseif (is_readable(EGW_INCLUDE_ROOT .SEP .$app .SEP .'js' .SEP . $package . SEP . $file . '.js'))
{
$this->files[$app][$package][$file] = '.';
$this->included_files[$app][$package][$file] = '.';
return True;
}
elseif($app != 'phpgwapi')
{
if(is_readable(PHPGW_INCLUDE_ROOT .SEP .'phpgwapi' .SEP .'js' .SEP . $package .SEP . $browser_folder . SEP . $file . '.js'))
if(is_readable(EGW_INCLUDE_ROOT .SEP .'phpgwapi' .SEP .'js' .SEP . $package .SEP . $browser_folder . SEP . $file . '.js'))
{
$this->files['phpgwapi'][$package][$file] = $browser_folder;
$this->included_files['phpgwapi'][$package][$file] = $browser_folder;
return True;
}
elseif(is_readable(PHPGW_INCLUDE_ROOT .SEP .'phpgwapi' .SEP .'js' .SEP . $package .SEP . $file . '.js'))
elseif(is_readable(EGW_INCLUDE_ROOT .SEP .'phpgwapi' .SEP .'js' .SEP . $package .SEP . $file . '.js'))
{
$this->files['phpgwapi'][$package][$file] = '.';
$this->included_files['phpgwapi'][$package][$file] = '.';
return True;
}
return False;
}
}
function validate_jsapi()
{
if (EGW_UNCOMPRESSED_THYAPI)
{
$this->validate_file('plugins', 'thyPlugins');
}
/* This was included together with javascript globals to garantee prior load of dynapi. But it doesn't seems
* right to me... maybe on class common, it should load dynapi before everything... */
$this->validate_file('dynapi','dynapi');
// Initialize DynAPI
$GLOBALS['egw_info']['flags']['java_script'] .= '<script language="javascript">'."\n";
$GLOBALS['egw_info']['flags']['java_script'] .= "dynapi.library.setPath(GLOBALS['serverRoot']+'/phpgwapi/js/dynapi/')\n";
$GLOBALS['egw_info']['flags']['java_script'] .= "dynapi.library.include('dynapi.library')\n";
$GLOBALS['egw_info']['flags']['java_script'] .= "dynapi.library.include('dynapi.api')\n";
$GLOBALS['egw_info']['flags']['java_script'] .= "</script>\n";/**/
//FIXME: These files are temporary! They should be included inside DynAPI or substituted by
// other ones
$this->validate_file('jsapi', 'jsapi');
$this->validate_file('wz_dragdrop', 'wz_dragdrop');
$this->validate_file('dJSWin', 'dJSWin');
$this->validate_file('dTabs', 'dTabs');
$this->validate_file('connector', 'connector');
$this->validate_file('xmlrpcMsgCreator','xmlrpc');
$this->validate_file('jsolait','init');
return true;
}
function get_javascript_globals()
{
/* Default Global Messages */
$GLOBALS['egw_info']['flags']['java_script_globals']['messages']['jsapi']['parseError'] = lang('Failed to Contact Server or Invalid Response from Server. Try to relogin. Contact Admin in case of faliure.');
$GLOBALS['egw_info']['flags']['java_script_globals']['messages']['jsapi']['serverTimeout'] = lang('Could not contact server. Operation Timed Out!');
$GLOBALS['egw_info']['flags']['java_script_globals']['messages']['jsapi']['dataSourceStartup'] = lang('Starting Up...');
$GLOBALS['egw_info']['flags']['java_script_globals']['messages']['jsapi']['connector_1'] = lang('Contacting Server...');
$GLOBALS['egw_info']['flags']['java_script_globals']['messages']['jsapi']['connector_2'] = lang('Server Contacted. Waiting for response...');
$GLOBALS['egw_info']['flags']['java_script_globals']['messages']['jsapi']['connector_3'] = lang('Server answered. Processing response...');
$GLOBALS['egw_info']['flags']['java_script_globals']['preferences']['common'] =& $GLOBALS['egw_info']['user']['preferences']['common'];
/* Default Global API Variables */
$browser = strtolower(ExecMethod('phpgwapi.browser.get_agent'));
switch ($browser)
{
case 'ie':
case 'opera':
$thyapi_comp = 'thyapi_comp_'.$browser.'.js';
break;
default:
$thyapi_comp = 'thyapi_comp_gecko.js';
}
$GLOBALS['egw_info']['flags']['java_script_globals']['jsapi']['imgDir'] = $GLOBALS['egw_info']['server']['webserver_url'].'/'.'phpgwapi/images';
if (EGW_UNCOMPRESSED_THYAPI)
{
$jsCode = "<!-- JS Global Variables and ThyAPI Insertion -->\n" .
'<script type="text/javascript" src="'.($GLOBALS['egw_info']['server']['webserver_url'] ? $GLOBALS['egw_info']['server']['webserver_url'].'/' : '/').
'/phpgwapi/js/dynapi/dynapi.js"></script>'."\n".
'<script language="javascript">'."\n".
'var GLOBALS = new Object();'."\n" .
"GLOBALS['serverRoot'] = '".($GLOBALS['egw_info']['server']['webserver_url'] ? $GLOBALS['egw_info']['server']['webserver_url'].'/' : '/')."';\n".
"GLOBALS['appname'] = '".$GLOBALS['egw_info']['flags']['currentapp']."';\n".
"GLOBALS['httpProtocol'] = '".($_SERVER['HTTPS'] ? 'https://' : 'http://')."';\n";
}
else
{
$jsCode = "<!-- JS Global Variables and ThyAPI Insertion -->\n" .
'<script type="text/javascript" src="'.($GLOBALS['egw_info']['server']['webserver_url'] ? $GLOBALS['egw_info']['server']['webserver_url'].'/' : '/').
'/phpgwapi/js/'.$thyapi_comp.'"></script>'."\n".
'<script language="javascript">'."\n".
'var GLOBALS = new Object();'."\n" .
"GLOBALS['serverRoot'] = '".($GLOBALS['egw_info']['server']['webserver_url'] ? $GLOBALS['egw_info']['server']['webserver_url'].'/' : '/')."';\n".
"GLOBALS['appname'] = '".$GLOBALS['egw_info']['flags']['currentapp']."';\n".
"GLOBALS['httpProtocol'] = '".($_SERVER['HTTPS'] ? 'https://' : 'http://')."';\n";
}
if ($GLOBALS['egw_info']['extra_get_vars'])
{
$GLOBALS['egw_info']['flags']['java_script_globals']['extra_get_vars'] = $GLOBALS['egw_info']['extra_get_vars'];
}
$jsCode .= $this->convert_phparray_jsarray("GLOBALS", $GLOBALS['egw_info']['flags']['java_script_globals'], false);
if (EGW_UNCOMPRESSED_THYAPI)
{
$jsCode .= "\ndynapi.library.setPath(GLOBALS['serverRoot']+'/phpgwapi/js/dynapi/');\n".
"dynapi.library.include('dynapi.library');\n".
"dynapi.library.include('dynapi.api');\n\n";
}
// Enable Debug?
$config =& CreateObject('phpgwapi.config', 'phpgwapi');
$config_values = $config->read_repository();
if ($config_values['js_debug'])
{
$jsCode .= "if (dynapi.ua.gecko) dynapi.library.include('dynapi.debug')\n";
}
$jsCode .= '</script>'."\n";
return $jsCode;
}
function convert_phparray_jsarray($name, $array, $new=true)
{
if (!is_array($array))
{
return '';
}
if ($new)
{
$jsCode = "$name = new Object();\n";
}
else
{
$jsCode = '';
}
foreach ($array as $index => $value)
{
if (is_array($value))
{
$jsCode .= $name."['".$index."'] = new Object();\n";
$jsCode .= $this->convert_phparray_jsarray($name."['".$index."']", $value,false);
continue;
}
switch(gettype($value))
{
case 'string':
$value = "'".str_replace(array("\n","\r"),'\n',addslashes($value))."'";
break;
case 'boolean':
if ($value)
{
$value = 'true';
}
else
{
$value = 'false';
}
break;
default:
$value = 'null';
}
$jsCode .= $name."['".$index."'] = ".$value.";\n";
}
return $jsCode;
}
}
?>

View File

@ -67,9 +67,9 @@
'file_id' => 'phpgw_vfs2_files',
'owner_id' => 'phpgw_vfs2_files',
'createdby_id' => 'phpgw_vfs2_files',
'modifiedby_id' => 'phpgw_vfs2_versioning',
'modifiedby_id' => 'phpgw_vfs2_files',
'created' => 'phpgw_vfs2_files',
'modified' => 'phpgw_vfs2_versioning',
'modified' => 'phpgw_vfs2_files',
'size' => 'phpgw_vfs2_files',
'mime_type' => 'phpgw_vfs2_mimetypes',
'comment' => 'phpgw_vfs2_files',
@ -90,6 +90,9 @@
//searching in files for a particular value in a particular property.
var $search_support = 1;
var $compress_support = 1;
var $extract_support = 1;
/*!
@function vfs
@ -1088,12 +1091,6 @@
*/
function mv ($data)
{
//FIXME unknown bug tricky solving (temp)
if (!is_object($this->vfs_versionsystem))
{
$this->vfs_versionsystem =& $GLOBALS['object_keeper']->GetObject('phpgwapi.vfs_versionsystem');
}
if (!is_array ($data))
{
$data = array ();
@ -1251,6 +1248,7 @@
'relatives' => array ($t->mask)
)
);
$query = $GLOBALS['phpgw']->db->query ("UPDATE phpgw_vfs2_files SET size=$size WHERE directory='".
$GLOBALS['phpgw']->db->db_addslashes($t->fake_leading_dirs_clean)."' AND name='".
$GLOBALS['phpgw']->db->db_addslashes($t->fake_name_clean)."'", __LINE__, __FILE__);
@ -1269,7 +1267,7 @@
/* $this->set_attributes(array(
'string' => $t->fake_full_path,
'relatives' => array ($t->mask),
'attributes' => array (
'attributes' => array (
'modifiedby_id' => $account_id,
'modified' => $this->now
)
@ -1284,7 +1282,31 @@
if ($this->file_actions)
{
$rr = rename ($f->real_full_path, $t->real_full_path);
if(file_exists($t->real_full_path))
{
unlink($t->real_full_path);
$ok = rename($f->real_full_path, $t->real_full_path);
}
else
{
$ok = rename($f->real_full_path, $t->real_full_path);
}
if (!$ok)
{
return false;
}
if (is_dir($t->real_full_path) && $f->outside)
{
$this->update_real(array(
'string' => $t->fake_full_path,
'relatives' => array($t->mask)
));
}
//$rr = rename ($f->real_full_path, $t->real_full_path);
}
/*
@ -1295,7 +1317,7 @@
{
$this->rm (array(
'string' => $f->fake_full_path,
'relatives' => $f->mask
'relatives' => array($f->mask)
)
);
}
@ -1578,6 +1600,10 @@
{
if (!@is_dir($p->real_leading_dirs_clean)) // eg. /home or /group does not exist
{
if (!ereg_replace('^/','',$p->fake_leading_dirs))
{
return false;
}
if (!@$this->mkdir(array(
'string' => $p->fake_leading_dirs,
'relatives' => array(RELATIVE_NONE) ))) // ==> create it
@ -1588,7 +1614,9 @@
if (@is_dir($p->real_full_path)) // directory already exists
{
$this->update_real($data,True); // update its contents
//WITH Serious BUG when registrys are in database, but not
//in filesystem. Correct this ASAP.
//$this->update_real($data,True); // update its contents
}
elseif (!@mkdir ($p->real_full_path, 0770))
{
@ -2297,7 +2325,8 @@
'orderby' => 'directory,name',
'backups' => false, /* show or hide backups */
'files_specified' => array(),
'allow_outside' => true
'allow_outside' => true,
'modifiedby_information' => false
);
//check if orderby is a valid field (or is composed by valid fields)
@ -2367,6 +2396,7 @@
$sql .= "directory='".$GLOBALS['phpgw']->db->db_addslashes($p->fake_leading_dirs_clean).
"' AND name='".$GLOBALS['phpgw']->db->db_addslashes($p->fake_name_clean)."'".$sql_backups;
}
// echo " select1: dir=".$p->fake_leading_dirs_clean." name=".$p->fake_name_clean." <br>\n";
$query = $GLOBALS['phpgw']->db->query ($sql, __LINE__, __FILE__);
@ -2382,37 +2412,44 @@
$rarray = array ();
foreach($this->attributes as $attribute)
{
if ($attribute == 'mime_type')
switch ($attribute)
{
if (!is_numeric($record['mime_id']))
{
//no mime type registered for file, must find one and if not exist add one.
$extension = $this->get_file_extension($record['name']);
if (!$res = $this->vfs_mimetypes->get_type(array('extension' => $extension)))
case 'mime_type':
if (!is_numeric($record['mime_id']))
{
$res = $this->vfs_mimetypes->add_filetype(array('extension' => $extension));
//no mime type registered for file, must find one and if not exist add one.
$extension = $this->get_file_extension($record['name']);
if (!$res = $this->vfs_mimetypes->get_type(array('extension' => $extension)))
{
$res = $this->vfs_mimetypes->add_filetype(array('extension' => $extension));
}
if ($res)
{
$this->db->update('phpgw_vfs2_files',
array('mime_id' => $res['mime_id']),
array('directory' => $p->fake_leading_dirs_clean,
'name' => $p->fake_name_clean
),__LINE__,__FILE__);
}
}
else
{
$res = $this->vfs_mimetypes->get_type(array(
'mime_id' => $record['mime_id']
));
}
if ($res)
{
$this->db->update('phpgw_vfs2_files',
array('mime_id' => $res['mime_id']),
array('directory' => $p->fake_leading_dirs_clean,
'name' => $p->fake_name_clean
),__LINE__,__FILE__);
}
}
else
{
$res = $this->vfs_mimetypes->get_type(array(
'mime_id' => $record['mime_id']
));
}
$record['mime_type'] = $res['mime'];
$record['mime_friendly'] = $res['friendly'];
$record['mime_type'] = $res['mime'];
$record['mime_friendly'] = $res['friendly'];
break;
case 'created':
case 'modified':
$record[$attribute] = $this->db->from_timestamp($record[$attribute]);
break;
}
@ -2589,38 +2626,44 @@
foreach($this->attributes as $attribute)
{
if ($attribute == 'mime_type')
switch($attribute)
{
if (!is_numeric($record['mime_id']))
{
$extension = $this->get_file_extension($record['name']);
if(!$res = $this->vfs_mimetypes->get_type(array(
'extension' => $extension)) )
case 'mime_type':
if (!is_numeric($record['mime_id']))
{
$res = $this->vfs_mimetypes->add_filetype(array(
'extension'
));
if ($res)
$extension = $this->get_file_extension($record['name']);
if(!$res = $this->vfs_mimetypes->get_type(array(
'extension' => $extension)) )
{
$this->db->update('phpgw_vfs2_files',
array('mime_id' => $res['mime_id']),
array('directory' => $p->fake_leading_dirs_clean,
'name' => $p->fake_name_clean
),__LINE__,__FILE__);
$res = $this->vfs_mimetypes->add_filetype(array(
'extension'
));
if ($res)
{
$this->db->update('phpgw_vfs2_files',
array('mime_id' => $res['mime_id']),
array('directory' => $p->fake_leading_dirs_clean,
'name' => $p->fake_name_clean
),__LINE__,__FILE__);
}
}
}
}
else
{
$res = $this->vfs_mimetypes->get_type(array(
'mime_id' => $record['mime_id']
));
}
else
{
$res = $this->vfs_mimetypes->get_type(array(
'mime_id' => $record['mime_id']
));
}
$record['mime_type'] = $res['mime'];
$rarray[$i]['mime_friendly'] = $res['friendly'];
$record['mime_type'] = $res['mime'];
$rarray[$i]['mime_friendly'] = $res['friendly'];
break;
case 'created':
case 'modified':
$record[$attribute] = $this->db->from_timestamp($record[$attribute]);
break;
}
$rarray[$i][$attribute] = $record[$attribute];
@ -2650,7 +2693,7 @@
//FIXME this method does not work when there are registrys in
//database, but not in filesystem. It starts corromping the
//database by putting wrong things that are in the partition root.
return false;
//return false;
if (!is_array ($data))
{
$data = array ();
@ -3351,9 +3394,7 @@
foreach ($filelist as $file)
{
$this->mv(array(
$res = $this->mv(array(
'from' => $file['directory'].'/'.$file['name'],
'to' => $dest->fake_full_path.'/'.$file['name'],
'relatives' => array(RELATIVE_NONE|VFS_REAL,$dest->mask)

View File

@ -157,6 +157,13 @@
$res = $this->db->insert('phpgw_vfs2_versioning',$insert_data,null,
__LINE__,__FILE__);
/* $this->db->update('phpgw_vfs2_files',array(
'modified' => $insert_data['modified'],
'modifiedby_id' => $insert_data['modifiedby_id']
),
array('file_id' => $insert_data['file_id']).__LINE__,__FILE__
);*/
if ($res)
@ -188,7 +195,6 @@
*/
function save_snapshot($file_id,$operation,$comment='',$other='')
{
//Prevent recursive reentrant when working in vfs->copy, f.inst
if ($GLOBALS['phpgw']->banish_journal)
{
@ -467,7 +473,11 @@
{
$this->db->update('phpgw_vfs2_files',
array('version' => $this->inc($file_data['insert_data']['version'])),
array(
'version' => $this->inc($file_data['insert_data']['version']),
'modified' => $file_data['insert_data']['modified'],
'modifiedby_id' => $file_data['insert_data']['modifiedby_id']
),
array('file_id' => $file_data['insert_data']['file_id']),
__LINE__, __FILE__
);

View File

@ -10,41 +10,17 @@
* option) any later version. *
\****************************************************************************/
if (!window.__DEFINE_DJSWIN__)
{
__DEFINE_DJSWIN__ = true;
if (document.all)
{
navigator.userAgent.toLowerCase().indexOf('msie 5') != -1 ? is_ie5 = true : is_ie5 = false;
is_ie = true;
is_moz1_6 = false;
is_mozilla = false;
is_ns4 = false;
}
else if (document.getElementById)
{
navigator.userAgent.toLowerCase().match('mozilla.*rv[:]1\.6.*gecko') ? is_moz1_6 = true : is_moz1_6 = false;
is_ie = false;
is_ie5 = false;
is_mozilla = true;
is_ns4 = false;
}
else if (document.layers)
{
is_ie = false;
is_ie5 = false
is_moz1_6 = false;
is_mozilla = false;
is_ns4 = true;
}
if (!window.dd)
{
throw("wz_dragdrop lib must be loaded!");
}
function dJSWin(params)
{
this.init(params);
}
dJSWin.prototype.init = function(params)
{
if (!params || typeof(params) != 'object' || !params.id || !params.width || !params.height || !params.content_id)
{
@ -52,19 +28,22 @@ if (!window.__DEFINE_DJSWIN__)
}
/* Internal Variables */
if (is_ie)
{
this.winContainer = document.createElement('iframe');
}
this.clientArea = document.createElement('div');
this.title = document.createElement('div');
this.title_text = document.createElement('span');
this.buttons = new Array();
this.shadows = new Array();
this.border = new Array();
this.content = _dJSWinElement(params.content_id);
this.content = Element(params.content_id);
this.includedContents = params['include_contents'];
var _this = this;
var style;
style = document.createElement('link');
style.href = GLOBALS['serverRoot'] + "phpgwapi/js/dJSWin/dJSWin.css";
style.rel = "stylesheet";
style.type = "text/css";
document.body.appendChild(style);
if (is_moz1_6)
{
@ -103,36 +82,18 @@ if (!window.__DEFINE_DJSWIN__)
this.title.style.visibility = 'hidden';
this.title.style.width = parseInt(params['width']) + 2 + 'px';
this.title.style.height = params['title_height'] ? params['title_height'] : '18px';
this.title.style.backgroundColor = params['title_color'];
this.title.style.backgroundColor = '#3978d6';
// this.title.className = 'dJSWin_title';
this.title.style.top = '0px';
this.title.style.left = '0px';
this.title.style.zIndex = '1';
this.title_text.style.position = 'relative';
this.title_text.className = params['title_class'];
this.title_text.style.fontWeight = 'bold';
this.title_text.style.color = params['title_text_color'] ? params['title_text_color'] : 'black';
this.title_text.className = 'dJSWin_title_text';
// this.title_text.style.cursor = 'move';
this.title_text.innerHTML = params['title'];
this.title_text.style.zIndex = '1';
if (is_ie)
{
this.winContainer.id = params['id']+'_winContainer';
this.winContainer.style.position = 'absolute';
this.winContainer.style.visibility = 'hidden';
this.winContainer.style.width = params['width'];
//this.winContainer.style.height = parseInt(params['height']) + parseInt(this.title.style.height) + 'px';
this.winContainer.style.height = params['height'];
// this.winContainer.style.top = '0px';
this.winContainer.style.top = this.title.style.height;
this.winContainer.style.left = '0px';
this.winContainer.style.zIndex = '-1';
// this.winContainer.style.backgroundColor = params['bg_color'];
// this.winContainer.className = params['win_class'];
this.winContainer.src = '';
}
this.clientArea.id = params['id']+'_clientArea';
this.clientArea.style.position = 'absolute';
this.clientArea.style.visibility = 'hidden';
@ -140,9 +101,9 @@ if (!window.__DEFINE_DJSWIN__)
this.clientArea.style.height = params['height'];
this.clientArea.style.top = parseInt(this.title.style.height) + 'px';
this.clientArea.style.left = '0px';
this.clientArea.style.backgroundColor = params['bg_color'];
// this.clientArea.style.backgroundColor = params['bg_color'];
// this.clientArea.style.overflow = 'auto';
this.clientArea.className = params['win_class'];
this.clientArea.className = 'dJSWin_main';
this.buttons.xDIV.id = params['id']+'_button';
this.buttons.xDIV.style.position = 'absolute';
@ -191,15 +152,10 @@ if (!window.__DEFINE_DJSWIN__)
this.border.l.style.visibility = 'hidden';
this.border.r.style.visibility = 'hidden';
this.border.t.style.backgroundColor = params['title_color'];
this.border.b.style.backgroundColor = params['title_color'];
this.border.l.style.backgroundColor = params['title_color'];
this.border.r.style.backgroundColor = params['title_color'];
this.border.t.className = params['title_class'];
this.border.b.className = params['title_class'];
this.border.l.className = params['title_class'];
this.border.r.className = params['title_class'];
this.border.t.className = 'dJSWin_title';
this.border.b.className = 'dJSWin_title';
this.border.l.className = 'dJSWin_title';
this.border.r.className = 'dJSWin_title';
this.border.t.style.border = '0px';
this.border.b.style.border = '0px';
@ -213,54 +169,25 @@ if (!window.__DEFINE_DJSWIN__)
this.border.l.style.width = '2px';
this.border.r.style.width = '2px';
if (is_ie)
{
this.border.t.style.height = '0';
this.border.b.style.height = '0';
this.border.l.style.height = parseInt(params['height']) + parseInt(this.title.style.height) + 2 + 'px';
this.border.r.style.height = parseInt(params['height']) + parseInt(this.title.style.height) + 2 + 'px';
this.border.t.style.height = '2px';
this.border.b.style.height = '2px';
this.border.l.style.height = parseInt(params['height']) + parseInt(this.title.style.height) + 4 + 'px';
this.border.r.style.height = parseInt(params['height']) + parseInt(this.title.style.height) + 4 + 'px';
this.border.t.style.top = '0';
this.border.b.style.top = parseInt(params['height']) + parseInt(this.title.style.height) + 'px';
this.border.l.style.top = '0';
this.border.r.style.top = '0';
}
else
{
this.border.t.style.height = '2px';
this.border.b.style.height = '2px';
this.border.l.style.height = parseInt(params['height']) + parseInt(this.title.style.height) + 4 + 'px';
this.border.r.style.height = parseInt(params['height']) + parseInt(this.title.style.height) + 4 + 'px';
this.border.t.style.top = '-2px';
this.border.b.style.top = parseInt(params['height']) + parseInt(this.title.style.height) + 'px';
this.border.l.style.top = '-2px';
this.border.r.style.top = '-2px';
}
this.border.t.style.top = '-2px';
this.border.b.style.top = parseInt(params['height']) + parseInt(this.title.style.height) + 'px';
this.border.l.style.top = '-2px';
this.border.r.style.top = '-2px';
this.border.t.style.left = '-2px';
this.border.b.style.left = '-2px';
this.border.l.style.left = '-2px';
this.border.r.style.left = params['width'];
//this.winContainer.style.width = parseInt(this.winContainer.style.width) + 4 + 'px';
//this.winContainer.style.height = parseInt(this.winContainer.style.height) + 4 + 'px';
//this.clientArea.style.width = parseInt(this.clientArea.style.width) + 4 + 'px';
//this.clientArea.style.height = parseInt(this.clientArea.style.height) + 4 + 'px';
//this.title.style.top = parseInt(this.title.style.top) + 2 + 'px';
//this.clientArea.style.top = parseInt(this.clientArea.style.top) + 2 + 'px';
//this.buttons.xDIV.style.top = parseInt(this.buttons.xDIV.style.top) + 2 + 'px';
this.shadows.b.style.top = parseInt(this.shadows.b.style.top) + 2 + 'px';
this.shadows.r.style.top = parseInt(this.shadows.r.style.top) + 2 + 'px';
//this.content.style.top = parseInt(this.content.style.top) + 2 + 'px';
//this.title.style.left = parseInt(this.title.style.left) + 2 + 'px';
//this.clientArea.style.left = parseInt(this.clientArea.style.left) + 2 + 'px';
//this.buttons.xDIV.style.left = parseInt(this.buttons.xDIV.style.left) + 2 + 'px';
this.shadows.b.style.left = parseInt(this.shadows.b.style.left) + 2 + 'px';
this.shadows.r.style.left = parseInt(this.shadows.r.style.left) + 2 + 'px';
//this.content.style.left = '2px';
}
else
{
@ -274,28 +201,11 @@ if (!window.__DEFINE_DJSWIN__)
{
this.content.parentNode.removeChild(this.content);
}
/*
this.winContainer.appendChild(this.title);
this.winContainer.appendChild(this.buttons.xDIV);
this.winContainer.appendChild(this.border.t);
this.winContainer.appendChild(this.border.b);
this.winContainer.appendChild(this.border.l);
this.winContainer.appendChild(this.border.r);
this.winContainer.appendChild(this.shadows.r);
this.winContainer.appendChild(this.shadows.b);
this.winContainer.appendChild(this.content);
*/
if (is_ie)
{
this.title.appendChild(this.winContainer);
}
else
{
this.title.appendChild(this.border.t);
}
this.title.appendChild(this.title_text);
this.title.appendChild(this.clientArea);
this.title.appendChild(this.buttons.xDIV);
this.title.appendChild(this.border.t);
this.title.appendChild(this.border.b);
this.title.appendChild(this.border.l);
this.title.appendChild(this.border.r);
@ -304,7 +214,7 @@ if (!window.__DEFINE_DJSWIN__)
this.clientArea.appendChild(this.content);
document.body.appendChild(this.title);
this.draw();
}
dJSWin.prototype.close = function()
@ -314,27 +224,8 @@ if (!window.__DEFINE_DJSWIN__)
dJSWin.prototype.open = function()
{
/* if (is_ie)
{
this.moveTo(document.body.offsetWidth/2 - dd.elements[this.title.id].w/2,
document.body.offsetHeight/2 - dd.elements[this.winContainer.id].h/2);
}
else
{
this.moveTo(window.innerWidth/2 - dd.elements[this.title.id].w/2,
window.innerHeight/2 - dd.elements[this.clientArea.id].h/2);
}
*/
if (is_ie)
{
this.moveTo(document.body.offsetWidth/2 + document.body.scrollLeft - dd.elements[this.title.id].w/2,
document.body.offsetHeight/2 + document.body.scrollTop - dd.elements[this.winContainer.id].h/2);
}
else
{
this.moveTo(window.innerWidth/2 + window.pageXOffset - dd.elements[this.title.id].w/2,
window.innerHeight/2 + window.pageYOffset - dd.elements[this.clientArea.id].h/2);
}
this.moveTo(window.innerWidth/2 + window.pageXOffset - dd.elements[this.title.id].w/2,
window.innerHeight/2 + window.pageYOffset - dd.elements[this.clientArea.id].h/2);
dd.elements[this.title.id].maximizeZ();
dd.elements[this.title.id].show();
@ -372,34 +263,25 @@ if (!window.__DEFINE_DJSWIN__)
return;
}
if (is_ie)
if (this.drawn)
{
ADD_DHTML(this.winContainer.id+NO_DRAG);
}
else
{
ADD_DHTML(this.border.t.id+NO_DRAG);
return;
}
this.drawn = true;
ADD_DHTML(this.title.id+CURSOR_MOVE);
ADD_DHTML(this.clientArea.id+NO_DRAG);
ADD_DHTML(this.buttons.xDIV.id+NO_DRAG);
ADD_DHTML(this.content.id+NO_DRAG);
ADD_DHTML(this.shadows.r.id+NO_DRAG);
ADD_DHTML(this.shadows.b.id+NO_DRAG);
ADD_DHTML(this.border.t.id+NO_DRAG);
ADD_DHTML(this.border.b.id+NO_DRAG);
ADD_DHTML(this.border.l.id+NO_DRAG);
ADD_DHTML(this.border.r.id+NO_DRAG);
if (is_ie)
{
dd.elements[this.title.id].addChild(dd.elements[this.winContainer.id]);
}
else
{
dd.elements[this.title.id].addChild(dd.elements[this.border.t.id]);
}
//dd.elements[this.title.id].setZ(dd.elements[this.border.t.id].z+1);
//dd.elements[this.title.id].maximizeZ();
dd.elements[this.title.id].addChild(dd.elements[this.border.t.id]);
dd.elements[this.title.id].addChild(dd.elements[this.clientArea.id]);
dd.elements[this.title.id].addChild(dd.elements[this.buttons.xDIV.id]);
@ -420,36 +302,10 @@ if (!window.__DEFINE_DJSWIN__)
}
}
// dd.elements[this.title.id].setZ('-1');
if (is_ie)
{
dd.elements[this.title.id].moveTo(document.body.offsetWidth/2 - dd.elements[this.winContainer.id].w/2,
document.body.offsetHeight/2 - dd.elements[this.winContainer.id].h/2)
}
else
{
dd.elements[this.title.id].moveTo(window.innerWidth/2 - dd.elements[this.clientArea.id].w/2,
window.innerHeight/2 - dd.elements[this.clientArea.id].h/2);
}
dd.elements[this.title.id].hide();
}
dd.elements[this.title.id].moveTo(window.innerWidth/2 - dd.elements[this.clientArea.id].w/2,
window.innerHeight/2 - dd.elements[this.clientArea.id].h/2);
function _dJSWinElement(id)
{
if (document.getElementById)
{
return document.getElementById(id);
}
else if (document.all)
{
return document.all[id];
}
else
{
throw("Browser Not Supported!");
}
}
if (!dd.elements)
@ -460,4 +316,3 @@ if (!window.__DEFINE_DJSWIN__)
SET_DHTML(div.id);
}
}

View File

@ -22,60 +22,18 @@
* 'unselectedClass': <name of the class to be used when Tab is not selected>});
*/
if (document.all)
{
navigator.userAgent.toLowerCase().indexOf('msie 5') != -1 ? is_ie5 = true : is_ie5 = false;
is_ie = true;
is_moz1_6 = false;
is_mozilla = false;
is_ns4 = false;
}
else if (document.getElementById)
{
navigator.userAgent.toLowerCase().match('mozilla.*rv[:]1\.6.*gecko') ? is_moz1_6 = true : is_moz1_6 = false;
is_ie = false;
is_ie5 = false;
is_mozilla = true;
is_ns4 = false;
}
else if (document.layers)
{
is_ie = false;
is_ie5 = false
is_moz1_6 = false;
is_mozilla = false;
is_ns4 = true;
}
/* The code below is a wrapper to call the dTabs content insertion
* just after the document is loaded in IE... I still don't know why people
* use this crap!
/* Mozilla 1.6 has a bug which impossibilitates it to manage DOM contents that are defined in the
* original document. So we have to workaround it.
*/
var _dTabs_onload;
if (document.all)
{
_dTabs_onload = false;
var _dTabs_onload_f = document.body.onload;
var _dTabs_f = function(e)
{
_dTabs_onload = true;
if (_dTabs_onload_f)
{
_dTabs_onload_f();
}
};
document.body.onload = _dTabs_f;
}
else
{
_dTabs_onload = true;
}
navigator.userAgent.toLowerCase().match('mozilla.*rv[:]1\.6.*gecko') ? is_moz1_6 = true : is_moz1_6 = false;
function dTabsManager(params)
{
this._tabEvents = { show: {}, hide: {}};
this.init(params);
}
dTabsManager.prototype.init = function(params)
{
/* Attributes definition */
this._Tabs = new Array();
@ -91,7 +49,13 @@
/* Create and insert the container */
var table, tbody, tr, td;
var table, tbody, tr, td, style;
style = document.createElement('link');
style.href = GLOBALS['serverRoot'] + "phpgwapi/js/dTabs/dTabs.css";
style.rel = "stylesheet";
style.type = "text/css";
document.body.appendChild(style);
this._Tabs['root'] = document.createElement('div');
this._Tabs['root'].id = params['id'];
@ -106,11 +70,18 @@
table.style.border = '0px solid black';
table.style.width = '100%';
table.style.height = '100%';
table.cellpadding = '10px';
this._Tabs['tabIndexTR'] = document.createElement('tr');
this._Tabs['tabIndexTR'].style.height = '30px';
this._Tabs['tabIndexTR'].className = 'dTabs_tr_index';
//this._Tabs['tabIndexTR'].style.width = '100%';
this._Tabs['emptyTab'] = document.createElement('td');
this._Tabs['emptyTab'].className = 'dTabs_noTabs';
this._Tabs['emptyTab'].innerHTML = '&nbsp;';
this._Tabs['tabIndexTR'].appendChild(this._Tabs['emptyTab']);
tr = document.createElement('tr');
td = document.createElement('td');
@ -131,29 +102,7 @@
this._Tabs['contents'] = new Array();
if (!_dTabs_onload)
{
if (document.getElementById && !document.all)
{
document.body.appendChild(this._Tabs['root']);
}
else
{
var _this = this;
var now = document.body.onload ? document.body.onload : null;
var f = function(e)
{
document.body.appendChild(_this._Tabs['root']);
now ? now() : false;
};
document.body.onload = f;
}
}
else
{
document.body.appendChild(this._Tabs['root']);
}
document.body.appendChild(this._Tabs['root']);
}
/*
@ -167,9 +116,9 @@
return false;
}
if (!params['id'] || !_dtElement(params['id']) ||
_dtElement(params['id']).tagName.toLowerCase() != 'div' ||
_dtElement(params['id']).style.position.toLowerCase() != 'absolute')
if (!params['id'] || !Element(params['id']) ||
Element(params['id']).tagName.toLowerCase() != 'div' ||
Element(params['id']).style.position.toLowerCase() != 'absolute')
{
return false;
}
@ -181,7 +130,7 @@
}
//var contents, tdIndex;
var element = _dtElement(params['id']);
var element = Element(params['id']);
if (is_moz1_6)
{/*
@ -205,23 +154,23 @@
this._Tabs.tabIndexTDs[params['id']] = document.createElement('td');
var _this = this;
this._Tabs.tabIndexTDs[params['id']].innerHTML = '&nbsp;&nbsp;'+(params['name'] ? params['name'] : 'undefined')+'&nbsp;&nbsp;';
this._Tabs.tabIndexTDs[params['id']].selectedClassName = 'dTabs_selected';
this._Tabs.tabIndexTDs[params['id']].unselectedClassName = 'dTabs_unselected';
this._Tabs.tabIndexTDs[params['id']].className = 'dTabs_unselected';
this._Tabs.tabIndexTDs[params['id']].onclick = function() {_this._showTab(params['id']);};
/* Old Version
this._Tabs.tabIndexTDs[params['id']].innerHTML = params['name'] ? params['name'] : 'undefined';
this._Tabs.tabIndexTDs[params['id']].selectedClassName = params['selectedClass'];
this._Tabs.tabIndexTDs[params['id']].unselectedClassName = params['unselectedClass'];
this._Tabs.tabIndexTDs[params['id']].className = params['unselectedClass'];
this._Tabs.tabIndexTDs[params['id']].onclick = function() {_this._showTab(params['id']);};
*/
for (var i in this._Tabs.tabIndexTDs)
{
if (i == 'length')
{
return;
}
this._Tabs.tabIndexTDs[i].style.width = (100/(this._nTabs+1)) + '%';
}
this._Tabs.tabIndexTR.removeChild(this._Tabs['emptyTab']);
this._Tabs.tabIndexTR.appendChild(this._Tabs.tabIndexTDs[params['id']]);
this._Tabs.tabIndexTR.appendChild(this._Tabs['emptyTab']);
if (!is_moz1_6)
{
@ -258,6 +207,25 @@
return this._Tabs.root;
}
dTabsManager.prototype.enableTab = function(id)
{
if (this._Tabs.contents[id])
{
var _this = this;
this._Tabs.tabIndexTDs[id].className = 'dTabs_unselected';
this._Tabs.tabIndexTDs[id].onclick = function() {_this._showTab(id);};
}
}
dTabsManager.prototype.disableTab = function(id)
{
if (this._Tabs.contents[id])
{
this._Tabs.tabIndexTDs[id].className = 'dTabs_disabled';
this._Tabs.tabIndexTDs[id].onclick = false;
}
}
/****************************************************************************\
* Private Methods *
\****************************************************************************/
@ -290,20 +258,25 @@
continue;
}
this._Tabs.contents[i].style.visibility = 'hidden';
this._Tabs.contents[i].style.zIndex = '-1';
//viniciuscb: mystery
if (this._Tabs.contents[i].style != null)
{
this._Tabs.contents[i].style.visibility = 'hidden';
this._Tabs.contents[i].style.display = 'none';
this._Tabs.contents[i].style.zIndex = '-1';
if (this._tabEvents['hide'][i]) this._tabEvents['hide'][i]();
}
}
this._Tabs.contents[id].style.visibility = 'visible';
this._Tabs.contents[id].style.display = '';
this._Tabs.contents[id].style.zIndex = '10';
if (this._tabEvents['show'][id]) this._tabEvents['show'][id]();
if (this._selectedIndex && this._selectedIndex != id)
{
this._Tabs.tabIndexTDs[this._selectedIndex].className = this._Tabs.tabIndexTDs[this._selectedIndex].unselectedClassName;
if (!document.all)
{
this._focus(this._Tabs.contents[id]);
}
this._focus(this._Tabs.contents[id]);
}
this._selectedIndex = id;
@ -327,19 +300,3 @@
}
}
}
function _dtElement(id)
{
if (document.getElementById)
{
return document.getElementById(id);
}
else if (document.all)
{
return document.all[id];
}
else
{
throw('Browser not supported');
}
}

View File

@ -12,6 +12,7 @@
_editor_lang = "en";
</script>
<script type="text/javascript" src="../htmlarea.js"></script>
<script type="text/javascript" src="../htmlarea_css.js"></script>
<style type="text/css">
html, body {

View File

@ -18,11 +18,13 @@
editor.registerPlugin(FullPage);
editor.generate();
}
HTMLArea.onload = initDocument;
</script>
</head>
<body onload="initDocument()">
<body onload="HTMLArea.init()">
<h1>Test of FullPage plugin</h1>
<textarea id="editor" style="height: 30em; width: 100%;">
@ -69,7 +71,7 @@
<hr />
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
<!-- Created: Wed Oct 1 19:55:37 EEST 2003 -->
<!-- hhmts start --> Last modified: Wed Jan 28 11:10:07 EET 2004 <!-- hhmts end -->
<!-- hhmts start --> Last modified: Wed Aug 11 13:59:07 CEST 2004 <!-- hhmts end -->
<!-- doc-lang: English -->
</body>
</html>

View File

@ -28,15 +28,17 @@
// in our case "lang/en.js" loaded above).
// If this lang file is not found the plugin will fail to
// load correctly and nothing will work.
// load correctly and NOTHING WILL WORK.
HTMLArea.loadPlugin("TableOperations");
HTMLArea.loadPlugin("SpellChecker");
HTMLArea.loadPlugin("FullPage");
HTMLArea.loadPlugin("CSS");
HTMLArea.loadPlugin("ContextMenu");
HTMLArea.loadPlugin("HtmlTidy");
//HTMLArea.loadPlugin("HtmlTidy");
HTMLArea.loadPlugin("ListType");
HTMLArea.loadPlugin("CharacterMap");
HTMLArea.loadPlugin("DynamicCSS");
</script>
<style type="text/css">
@ -54,6 +56,7 @@ textarea { background-color: #fff; border: 1px solid 00f; }
<script type="text/javascript">
var editor = null;
function initEditor() {
// create an editor for the "ta" textbox
@ -69,11 +72,14 @@ function initEditor() {
editor.registerPlugin(SpellChecker);
// register the HtmlTidy plugin
editor.registerPlugin(HtmlTidy);
//editor.registerPlugin(HtmlTidy);
// register the ListType plugin
editor.registerPlugin(ListType);
editor.registerPlugin(CharacterMap);
editor.registerPlugin(DynamicCSS);
// register the CSS plugin
editor.registerPlugin(CSS, {
combos : [
@ -112,12 +118,12 @@ function initEditor() {
// load the stylesheet used by our CSS plugin configuration
editor.config.pageStyle = "@import url(custom.css);";
setTimeout(function() {
editor.generate();
}, 500);
editor.generate();
return false;
}
HTMLArea.onload = initEditor;
function insertHTML() {
var html = prompt("Enter some HTML code here");
if (html) {
@ -133,7 +139,7 @@ function highlight() {
<!-- use <body onload="HTMLArea.replaceAll()" if you don't care about
customizing the editor. It's the easiest way! :) -->
<body onload="initEditor()">
<body onload="HTMLArea.init();">
<h1>HTMLArea 3.0</h1>

View File

@ -16,7 +16,7 @@
</ul>
<hr />
<address>mishoo@infoiasi.ro</address>
<address>mihai_bazon@yahoo.com</address>
<!-- hhmts start --> Last modified: Sun Feb 1 13:30:39 EET 2004 <!-- hhmts end -->
</body> </html>

View File

@ -3,7 +3,7 @@
.htmlarea .toolbar {
cursor: default;
background: ButtonFace;
padding: 1px 1px 2px 1px;
padding: 3px;
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
@ -20,11 +20,16 @@
width: 18px;
height: 18px;
}
.htmlarea .toolbar .buttonHover {
.htmlarea .toolbar a.button:hover {
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
}
.htmlarea .toolbar .buttonActive, .htmlarea .toolbar .buttonPressed {
.htmlarea .toolbar a.buttonDisabled:hover {
border-color: ButtonFace;
}
.htmlarea .toolbar .buttonActive,
.htmlarea .toolbar .buttonPressed
{
padding: 2px 0px 0px 2px;
border: 1px solid;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
@ -42,12 +47,12 @@
}
.htmlarea .toolbar .buttonDisabled img {
filter: alpha(opacity = 25);
filter: gray() alpha(opacity = 25);
-moz-opacity: 0.25;
}
.htmlarea .toolbar .separator {
position: relative;
/*position: relative;*/
margin: 3px;
border-left: 1px solid ButtonShadow;
border-right: 1px solid ButtonHighlight;
@ -64,6 +69,11 @@
.htmlarea .toolbar select:hover,
.htmlarea .toolbar select:active { background: FieldFace; color: ButtonText; }
.htmlarea iframe
{
border: none;
}
.htmlarea .statusBar {
border: 1px solid;
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
@ -102,7 +112,8 @@
.dialog table { border-collapse: collapse; }
.dialog .title {
.dialog .title, .dialog h1
{
background: #008;
color: #ff8;
border-bottom: 1px solid #000;
@ -111,7 +122,7 @@
font-weight: bold;
cursor: default;
}
.dialog h1 { margin:0px;}
.dialog .title .button {
float: right;
border: 1px solid #66a;
@ -178,3 +189,46 @@
}
form { margin: 0px; border: none; }
/** Panels **/
.htmlarea .panels.top
{
border-bottom : 1px solid;
border-color: ButtonShadow;
}
.htmlarea .panels.right
{
border-left : 1px solid;
border-color: ButtonShadow;
}
.htmlarea .panels.left
{
border-right : 1px solid;
border-color: ButtonShadow;
}
.htmlarea .panels.bottom
{
border-top : 1px solid;
border-color: ButtonShadow;
}
.htmlarea .panel h1 {
background: ButtonFace;
border: 1px solid;
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
margin: 0px;
padding: 0px;
font-size:100%;
font-weight:bold;
padding: 2px;
}
.htmlarea .panels.left .panel { border-right:none; border-left:none; }
.htmlarea .panels.left h1 { border-right:none; }
.htmlarea .panels.right .panel { border-right:none; border-left:none; }
.htmlarea .panels.left h1 { border-left:none; }
div.htmlarea { border: 1px solid black; }

File diff suppressed because it is too large Load Diff

View File

@ -46,7 +46,7 @@
Please see our About Box for details about who sponsored what plugins.
</p>
<h2>Online demos</h2>
<h2><a href="examples/">Online demos</a></h2>
<ul>
@ -184,7 +184,7 @@ find htmlarea/ -name "*.cgi" -exec chmod 755 {} \;</pre>
</ul>
<p>You can <a href="mailto:mishoo@infoiasi.ro">contact me directly</a>
<p>You can <a href="mailto:mihai_bazon@yahoo.com">contact me directly</a>
<em>only</em> if you want to pay me for implementing custom features to
HTMLArea. If you want to sponsor these features (that is, allow them to
get back into the public HTMLArea distribution) I'll be cheaper. ;-)</p>
@ -192,7 +192,7 @@ find htmlarea/ -name "*.cgi" -exec chmod 755 {} \;</pre>
<hr />
<address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address>
<!-- Created: Sun Aug 3 14:11:26 EEST 2003 -->
<!-- hhmts start --> Last modified: Wed Jan 28 11:54:47 EET 2004 <!-- hhmts end -->
<!-- hhmts start --> Last modified: Wed Jul 14 13:20:53 CEST 2004 <!-- hhmts end -->
<!-- doc-lang: English -->
</body>
</html>

View File

@ -43,7 +43,8 @@ HTMLArea.I18N = {
copy: "Kopieren",
paste: "Einfügen aus der Zwischenablage",
lefttoright: "Textrichtung von Links nach Rechts",
righttoleft: "Textrichtung von Rechts nach Links"
righttoleft: "Textrichtung von Rechts nach Links",
removeformat: "Formatierung entfernen"
},
buttons: {

View File

@ -50,7 +50,10 @@ HTMLArea.I18N = {
copy: "Copy selection",
paste: "Paste from clipboard",
lefttoright: "Direction left to right",
righttoleft: "Direction right to left"
righttoleft: "Direction right to left",
removeformat: "Remove formatting",
print: "Print document",
killword: "Clear MSOffice tags"
},
buttons: {
@ -70,24 +73,74 @@ HTMLArea.I18N = {
"it's very likely that you'll get a 'General Protection Fault' and need to reboot.\n\n" +
"You have been warned. Please press OK if you still want to try the full screen editor.",
"Moz-Clipboard" :
"Unprivileged scripts cannot access Cut/Copy/Paste programatically " +
"for security reasons. Click OK to see a technical note at mozilla.org " +
"which shows you how to allow a script to access the clipboard."
"MOZ-security-clipboard" :
// Translate Here
"The Paste button does not work in Mozilla based web browsers (technical security reasons). Press CTRL-V on your keyboard to paste directly."
},
dialogs: {
"Cancel" : "Cancel",
"Insert/Modify Link" : "Insert/Modify Link",
"New window (_blank)" : "New window (_blank)",
"None (use implicit)" : "None (use implicit)",
// Common
"OK" : "OK",
"Other" : "Other",
"Cancel" : "Cancel",
"Alignment:" : "Alignment:",
"Not set" : "Not set",
"Left" : "Left",
"Right" : "Right",
"Texttop" : "Texttop",
"Absmiddle" : "Absmiddle",
"Baseline" : "Baseline",
"Absbottom" : "Absbottom",
"Bottom" : "Bottom",
"Middle" : "Middle",
"Top" : "Top",
"Layout" : "Layout",
"Spacing" : "Spacing",
"Horizontal:" : "Horizontal:",
"Horizontal padding" : "Horizontal padding",
"Vertical:" : "Vertical:",
"Vertical padding" : "Vertical padding",
"Border thickness:" : "Border thickness:",
"Leave empty for no border" : "Leave empty for no border",
// Insert Link
"Insert/Modify Link" : "Insert/Modify Link",
"None (use implicit)" : "None (use implicit)",
"New window (_blank)" : "New window (_blank)",
"Same frame (_self)" : "Same frame (_self)",
"Top frame (_top)" : "Top frame (_top)",
"Other" : "Other",
"Target:" : "Target:",
"Title (tooltip):" : "Title (tooltip):",
"Top frame (_top)" : "Top frame (_top)",
"URL:" : "URL:",
"You must enter the URL where this link points to" : "You must enter the URL where this link points to"
"You must enter the URL where this link points to" : "You must enter the URL where this link points to",
// Insert Table
"Insert Table" : "Insert Table",
"Rows:" : "Rows:",
"Number of rows" : "Number of rows",
"Cols:" : "Cols:",
"Number of columns" : "Number of columns",
"Width:" : "Width:",
"Width of the table" : "Width of the table",
"Percent" : "Percent",
"Pixels" : "Pixels",
"Em" : "Em",
"Width unit" : "Width unit",
"Positioning of this table" : "Positioning of this table",
"Cell spacing:" : "Cell spacing:",
"Space between adjacent cells" : "Space between adjacent cells",
"Cell padding:" : "Cell padding:",
"Space between content and border in cell" : "Space between content and border in cell",
// Insert Image
"Insert Image" : "Insert Image",
"Image URL:" : "Image URL:",
"Enter the image URL here" : "Enter the image URL here",
"Preview" : "Preview",
"Preview the image in a new window" : "Preview the image in a new window",
"Alternate text:" : "Alternate text:",
"For browsers that don't support images" : "For browsers that don't support images",
"Positioning of this image" : "Positioning of this image",
"Image Preview:" : "Image Preview:"
}
};

View File

@ -2,50 +2,50 @@
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "es",
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "es",
tooltips: {
bold: "Negrita",
italic: "Cursiva",
underline: "Subrayado",
strikethrough: "Tachado",
subscript: "Subíndice",
superscript: "Superíndice",
justifyleft: "Alinear a la Izquierda",
justifycenter: "Centrar",
justifyright: "Alinear a la Derecha",
justifyfull: "Justificar",
orderedlist: "Lista Ordenada",
unorderedlist: "Lista No Ordenada",
outdent: "Aumentar Sangría",
indent: "Disminuir Sangría",
forecolor: "Color del Texto",
hilitecolor: "Color del Fondo",
inserthorizontalrule: "Línea Horizontal",
createlink: "Insertar Enlace",
insertimage: "Insertar Imagen",
inserttable: "Insertar Tabla",
htmlmode: "Ver Documento en HTML",
popupeditor: "Ampliar Editor",
about: "Acerca del Editor",
showhelp: "Ayuda",
textindicator: "Estilo Actual",
undo: "Deshacer",
redo: "Rehacer",
cut: "Cortar selección",
copy: "Copiar selección",
paste: "Pegar desde el portapapeles"
},
tooltips: {
bold: "Negrita",
italic: "Cursiva",
underline: "Subrayado",
strikethrough: "Tachado",
subscript: "Sub?ndice",
superscript: "Super?ndice",
justifyleft: "Alinear a la Izquierda",
justifycenter: "Centrar",
justifyright: "Alinear a la Derecha",
justifyfull: "Justificar",
orderedlist: "Lista Ordenada",
unorderedlist: "Lista No Ordenada",
outdent: "Aumentar Sangr?a",
indent: "Disminuir Sangr?a",
forecolor: "Color del Texto",
hilitecolor: "Color del Fondo",
inserthorizontalrule: "L?nea Horizontal",
createlink: "Insertar Enlace",
insertimage: "Insertar Imagen",
inserttable: "Insertar Tabla",
htmlmode: "Ver Documento en HTML",
popupeditor: "Ampliar Editor",
about: "Acerca del Editor",
showhelp: "Ayuda",
textindicator: "Estilo Actual",
undo: "Deshacer",
redo: "Rehacer",
cut: "Cortar selecci?n",
copy: "Copiar selecci?n",
paste: "Pegar desde el portapapeles"
},
buttons: {
"ok": "Aceptar",
"cancel": "Cancelar"
},
buttons: {
"ok": "Aceptar",
"cancel": "Cancelar"
},
msg: {
"Path": "Ruta",
"TEXT_MODE": "Esta en modo TEXTO. Use el boton [<>] para cambiar a WYSIWIG",
}
msg: {
"Path": "Ruta",
"TEXT_MODE": "Esta en modo TEXTO. Use el boton [<>] para cambiar a WYSIWIG"
}
};

View File

@ -47,7 +47,7 @@ HTMLArea.I18N = {
undo: "Ongedaan maken",
redo: "Herhalen",
cut: "Knippen",
copy: "Kopiëren",
copy: "Kopi?ren",
paste: "Plakken",
lefttoright: "Tekstrichting links naar rechts",
righttoleft: "Tekstrichting rechts naar links"
@ -87,4 +87,3 @@ HTMLArea.I18N = {
"You must enter the URL where this link points to" : "Geef de URL in waar de link naar verwijst"
}
};

View File

@ -1,51 +1,77 @@
// I18N constants : Vietnamese
// LANG: "en", ENCODING: UTF-8
// Author: Nguyễn Đình Nam, <hncryptologist@yahoo.com>
// Modified 21/07/2004 by Phạm Mai Quân <pmquan@4vn.org>
HTMLArea.I18N = {
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "vn",
// the following should be the filename without .js extension
// it will be used for automatically load plugin language.
lang: "vn",
tooltips: {
bold: "Đậm",
italic: "Nghiêng",
underline: "Gạch Chân",
strikethrough: "Gạch Xóa",
subscript: "Viết Xuống Dưới",
superscript: "Viết Lên Trên",
justifyleft: "Căn Trái",
justifycenter: "Căn Giữa",
justifyright: "Căn Phải",
justifyfull: "Căn Đều",
orderedlist: "Danh Sách Có Thứ Tự",
unorderedlist: "Danh Sách Phi Thứ Tự",
outdent: "Lùi Ra Ngoài",
indent: "Thụt Vào Trong",
forecolor: "Màu Chữ",
backcolor: "Màu Nền",
horizontalrule: "Dòng Kẻ Ngang",
createlink: "Tạo Liên Kết",
insertimage: "Chèn Ảnh",
inserttable: "Chèn Bảng",
htmlmode: "Chế Độ Mã HTML",
popupeditor: "Phóng To Ô Soạn Thảo",
about: "Tự Giới Thiệu",
showhelp: "Giúp Đỡ",
textindicator: "Định Dạng Hiện Thời",
undo: "Undo",
redo: "Redo",
cut: "Cắt",
copy: "Copy",
paste: "Dán"
},
buttons: {
"ok": "OK",
"cancel": "Hủy"
},
msg: {
"Path": "Đường Dẫn",
"TEXT_MODE": "Bạn đang ở chế độ text. Sử dụng nút [<>] để chuyển lại chế độ WYSIWIG."
}
tooltips: {
bold: "Đậm",
italic: "Nghiêng",
underline: "Gạch Chân",
strikethrough: "Gạch Xóa",
subscript: "Viết Xuống Dưới",
superscript: "Viết Lên Trên",
justifyleft: "Căn Trái",
justifycenter: "Căn Giữa",
justifyright: "Căn Phải",
justifyfull: "Căn Đều",
insertorderedlist: "Danh Sách Có Thứ Tự (1, 2, 3)",
insertunorderedlist: "Danh Sách Phi Thứ Tự (Chấm đầu dòng)",
outdent: "Lùi Ra Ngoài",
indent: "Thụt Vào Trong",
forecolor: "Màu Chữ",
hilitecolor: "Màu Nền",
inserthorizontalrule: "Dòng Kẻ Ngang",
createlink: "Tạo Liên Kết",
insertimage: "Chèn Ảnh",
inserttable: "Chèn Bảng",
htmlmode: "Chế Độ Mã HTML",
popupeditor: "Phóng To Ô Soạn Thảo",
about: "Tự Giới Thiệu",
showhelp: "Giúp Đỡ",
textindicator: "Định Dạng Hiện Thời",
undo: "Hủy thao tác trước",
redo: "Lấy lại thao tác vừa bỏ",
cut: "Cắt",
copy: "Sao chép",
paste: "Dán",
lefttoright: "Viết từ trái sang phải",
righttoleft: "Viết từ phải sang trái"
},
buttons: {
"ok": "Đồng ý",
"cancel": "Hủy",
"IE-sucks-full-screen" :
// translate here
"Chế độ phóng to ô soạn thảo có thể gây lỗi với Internet Explorer vì một số lỗi của trình duyệt này," +
" vì thế chế độ này có thể sẽ không chạy. Hiển thị không đúng, lộn xộn, không có đầy đủ chức năng," +
" và cũng có thể làm trình duyệt của bạn bị tắt ngang. Nếu bạn đang sử dụng Windows 9x " +
"bạn có thể bị báo lỗi 'General Protection Fault' và máy tính của bạn buộc phải khởi động lại.\n\n" +
"Chúng tôi đã cảnh báo bạn. Nhấn nút 'Đồng ý' nếu bạn vẫn muốn sử dụng tính năng này."
},
msg: {
"Path": "Đường Dẫn",
"TEXT_MODE": "Bạn đang ở chế độ text. Sử dụng nút [<>] để chuyển lại chế độ WYSIWIG."
},
dialogs: {
"Cancel" : "Hủy",
"Insert/Modify Link" : "Thêm/Chỉnh sửa đường dẫn",
"New window (_blank)" : "Cửa sổ mới (_blank)",
"None (use implicit)" : "Không (sử dụng implicit)",
"OK" : "Đồng ý",
"Other" : "Khác",
"Same frame (_self)" : "Trên cùng khung (_self)",
"Target:" : "Nơi hiện thị:",
"Title (tooltip):" : "Tiêu đề (của hướng dẫn):",
"Top frame (_top)" : "Khung trên cùng (_top)",
"URL:" : "URL:",
"You must enter the URL where this link points to" : "Bạn phải điền địa chỉ (URL) mà đường dẫn sẽ liên kết tới"
}
};

View File

@ -63,6 +63,26 @@ ContextMenu.prototype.getContextMenu = function(target) {
tbo.buttonPress(editor, opcode);
};
function insertPara(after) {
var el = currentTarget;
var par = el.parentNode;
var p = editor._doc.createElement("p");
p.appendChild(editor._doc.createElement("br"));
par.insertBefore(p, after ? el.nextSibling : el);
var sel = editor._getSelection();
var range = editor._createRange(sel);
if (!HTMLArea.is_ie) {
sel.removeAllRanges();
range.selectNodeContents(p);
range.collapse(true);
sel.addRange(range);
} else {
range.moveToElementText(p);
range.collapse(true);
range.select();
}
};
for (; target; target = target.parentNode) {
var tag = target.tagName;
if (!tag)
@ -189,32 +209,41 @@ ContextMenu.prototype.getContextMenu = function(target) {
i18n["Create a link"],
config.btnList["createlink"][1] ]);
for (var i in elmenus)
for (var i = 0; i < elmenus.length; ++i)
menu.push(elmenus[i]);
menu.push(null,
[ i18n["Remove the"] + " &lt;" + currentTarget.tagName + "&gt; " + i18n["Element"],
function() {
if (confirm(i18n["Please confirm that you want to remove this element:"] + " " + currentTarget.tagName)) {
var el = currentTarget;
var p = el.parentNode;
p.removeChild(el);
if (HTMLArea.is_gecko) {
if (p.tagName.toLowerCase() == "td" && !p.hasChildNodes())
p.appendChild(editor._doc.createElement("br"));
editor.forceRedraw();
editor.focusEditor();
editor.updateToolbar();
if (table) {
var save_collapse = table.style.borderCollapse;
table.style.borderCollapse = "collapse";
table.style.borderCollapse = "separate";
table.style.borderCollapse = save_collapse;
if (!/html|body/i.test(currentTarget.tagName))
menu.push(null,
[ i18n["Remove the"] + " &lt;" + currentTarget.tagName + "&gt; " + i18n["Element"],
function() {
if (confirm(i18n["Please confirm that you want to remove this element:"] + " " +
currentTarget.tagName)) {
var el = currentTarget;
var p = el.parentNode;
p.removeChild(el);
if (HTMLArea.is_gecko) {
if (p.tagName.toLowerCase() == "td" && !p.hasChildNodes())
p.appendChild(editor._doc.createElement("br"));
editor.forceRedraw();
editor.focusEditor();
editor.updateToolbar();
if (table) {
var save_collapse = table.style.borderCollapse;
table.style.borderCollapse = "collapse";
table.style.borderCollapse = "separate";
table.style.borderCollapse = save_collapse;
}
}
}
}
},
i18n["Remove this node from the document"] ]);
},
i18n["Remove this node from the document"] ],
[ i18n["Insert paragraph before"],
function() { insertPara(false); },
i18n["Insert a paragraph before the current node"] ],
[ i18n["Insert paragraph after"],
function() { insertPara(true); },
i18n["Insert a paragraph after the current node"] ]
);
return menu;
};
@ -385,12 +414,8 @@ ContextMenu.prototype.popupMenu = function(ev) {
}
if (!HTMLArea.is_ie) {
// var dx = x + div.offsetWidth - window.innerWidth + 4;
// var dy = y + div.offsetHeight - window.innerHeight + 4;
var dx = x + div.offsetWidth - window.innerWidth - window.pageXOffset + 4;
var dy = y + div.offsetHeight - window.innerHeight - window.pageYOffset + 4;
var dx = x + div.offsetWidth - window.innerWidth + 4;
var dy = y + div.offsetHeight - window.innerHeight + 4;
if (dx > 0) x -= dx;
if (dy > 0) y -= dy;
div.style.left = x + "px";

View File

@ -40,6 +40,8 @@ ContextMenu.I18N = {
"Make link" : "Make lin_k...",
"Remove the" : "Remove the",
"Element" : "Element...",
"Insert paragraph before" : "Insert paragraph before",
"Insert paragraph after" : "Insert paragraph after",
// Other labels (tooltips and alert/confirm box messages)
@ -62,5 +64,7 @@ ContextMenu.I18N = {
"Insert a new column before the current one" : "Insert a new column before the current one",
"Insert a new column after the current one" : "Insert a new column after the current one",
"Delete the current column" : "Delete the current column",
"Create a link" : "Create a link"
"Create a link" : "Create a link",
"Insert a paragraph before the current node" : "Insert a paragraph before the current node",
"Insert a paragraph after the current node" : "Insert a paragraph after the current node"
};

View File

@ -24,7 +24,6 @@ $GLOBALS['phpgw_info']['flags'] = Array(
);
include('../../../../../../header.inc.php');
header('Content-type: text/javascript; charset='.$GLOBALS['phpgw']->translation->charset());
$GLOBALS['phpgw']->translation->add_app('htmlarea-ContextMenu');
// I18N constants

View File

@ -7,6 +7,7 @@ div.htmlarea-context-menu {
border: 1px solid #aca899;
padding: 2px;
background-color: #fff;
color: #000;
cursor: default;
z-index: 1000;
}

View File

@ -6,20 +6,20 @@
// This notice MUST stay intact for use (see license.txt).
function EnterParagraphs(editor, params) {
this.editor = editor;
// activate only if we're talking to Gecko
if (HTMLArea.is_gecko)
this.onKeyPress = this.__onKeyPress;
this.editor = editor;
// activate only if we're talking to Gecko
if (HTMLArea.is_gecko)
this.onKeyPress = this.__onKeyPress;
};
EnterParagraphs._pluginInfo = {
name : "EnterParagraphs",
version : "1.0",
developer : "Adam Wright",
developer_url : "http://blog.hipikat.org/",
sponsor : "The University of Western Australia",
sponsor_url : "http://www.uwa.edu.au/",
license : "htmlArea"
name : "EnterParagraphs",
version : "1.0",
developer : "Adam Wright",
developer_url : "http://blog.hipikat.org/",
sponsor : "The University of Western Australia",
sponsor_url : "http://www.uwa.edu.au/",
license : "htmlArea"
};
// An array of elements who, in html4, by default, have an inline display and can have children
@ -28,177 +28,177 @@ EnterParagraphs.prototype._html4_inlines_re = /^(a|abbr|acronym|b|bdo|big|cite|c
// Finds the first parent element of a given node whose display is probably not inline
EnterParagraphs.prototype.parentBlock = function(node) {
while (node.parentNode && (node.nodeType != 1 || this._html4_inlines_re.test(node.tagName)))
node = node.parentNode;
return node;
while (node.parentNode && (node.nodeType != 1 || this._html4_inlines_re.test(node.tagName)))
node = node.parentNode;
return node;
};
// Internal function for recursively itterating over a all nodes in a fragment
// If a callback function returns a non-null value, that is returned and the crawl is therefore broken
EnterParagraphs.prototype.walkNodeChildren = function(me, callback) {
if (me.firstChild) {
var myChild = me.firstChild;
var retVal;
while (myChild) {
if ((retVal = callback(this, myChild)) != null)
return retVal;
if ((retVal = this.walkNodeChildren(myChild, callback)) != null)
return retVal;
myChild = myChild.nextSibling;
}
}
if (me.firstChild) {
var myChild = me.firstChild;
var retVal;
while (myChild) {
if ((retVal = callback(this, myChild)) != null)
return retVal;
if ((retVal = this.walkNodeChildren(myChild, callback)) != null)
return retVal;
myChild = myChild.nextSibling;
}
}
};
// Callback function to be performed on each node in the hierarchy
// Sets flag to true if we find actual text or an element that's not usually displayed inline
EnterParagraphs.prototype._isFilling = function(self, node) {
if (node.nodeType == 1 && !self._html4_inlines_re.test(node.nodeName))
return true;
else if (node.nodeType == 3 && node.nodeValue != '')
return true;
return null;
//alert(node.nodeName);
if (node.nodeType == 1 && !self._html4_inlines_re.test(node.nodeName))
return true;
else if (node.nodeType == 3 && node.nodeValue != '')
return true;
return null;
//alert(node.nodeName);
};
// Inserts a node deeply on the left of a hierarchy of nodes
EnterParagraphs.prototype.insertDeepLeftText = function(target, toInsert) {
var falling = target;
while (falling.firstChild && falling.firstChild.nodeType == 1)
falling = falling.firstChild;
//var refNode = falling.firstChild ? falling.firstChild : null;
//falling.insertBefore(toInsert, refNode);
falling.innerHTML = toInsert;
var falling = target;
while (falling.firstChild && falling.firstChild.nodeType == 1)
falling = falling.firstChild;
//var refNode = falling.firstChild ? falling.firstChild : null;
//falling.insertBefore(toInsert, refNode);
falling.innerHTML = toInsert;
};
// Kind of like a macros, for a frequent query...
EnterParagraphs.prototype.isElem = function(node, type) {
return node.nodeName.toLowerCase() == type.toLowerCase();
return node.nodeName.toLowerCase() == type.toLowerCase();
};
// The onKeyPress even that does all the work - nicely breaks the line into paragraphs
EnterParagraphs.prototype.__onKeyPress = function(ev) {
if (ev.keyCode == 13 && !ev.shiftKey && this.editor._iframe.contentWindow.getSelection) {
if (ev.keyCode == 13 && !ev.shiftKey && this.editor._iframe.contentWindow.getSelection) {
var editor = this.editor;
var editor = this.editor;
// Get the selection and solid references to what we're dealing with chopping
var sel = editor._iframe.contentWindow.getSelection();
// Get the selection and solid references to what we're dealing with chopping
var sel = editor._iframe.contentWindow.getSelection();
// Set the start and end points such that they're going /forward/ through the document
var rngLeft = editor._doc.createRange(); var rngRight = editor._doc.createRange();
rngLeft.setStart(sel.anchorNode, sel.anchorOffset); rngRight.setStart(sel.focusNode, sel.focusOffset);
rngLeft.collapse(true); rngRight.collapse(true);
// Set the start and end points such that they're going /forward/ through the document
var rngLeft = editor._doc.createRange(); var rngRight = editor._doc.createRange();
rngLeft.setStart(sel.anchorNode, sel.anchorOffset); rngRight.setStart(sel.focusNode, sel.focusOffset);
rngLeft.collapse(true); rngRight.collapse(true);
var direct = rngLeft.compareBoundaryPoints(rngLeft.START_TO_END, rngRight) < 0;
var direct = rngLeft.compareBoundaryPoints(rngLeft.START_TO_END, rngRight) < 0;
var startNode = direct ? sel.anchorNode : sel.focusNode;
var startOffset = direct ? sel.anchorOffset : sel.focusOffset;
var endNode = direct ? sel.focusNode : sel.anchorNode;
var endOffset = direct ? sel.focusOffset : sel.anchorOffset;
var startNode = direct ? sel.anchorNode : sel.focusNode;
var startOffset = direct ? sel.anchorOffset : sel.focusOffset;
var endNode = direct ? sel.focusNode : sel.anchorNode;
var endOffset = direct ? sel.focusOffset : sel.anchorOffset;
// Find the parent blocks of nodes at either end, and their attributes if they're paragraphs
var startBlock = this.parentBlock(startNode); var endBlock = this.parentBlock(endNode);
var attrsLeft = new Array(); var attrsRight = new Array();
// Find the parent blocks of nodes at either end, and their attributes if they're paragraphs
var startBlock = this.parentBlock(startNode); var endBlock = this.parentBlock(endNode);
var attrsLeft = new Array(); var attrsRight = new Array();
// If a list, let the browser take over, if we're in a paragraph, gather it's attributes
if (this.isElem(startBlock, 'li') || this.isElem(endBlock, 'li'))
return;
// If a list, let the browser take over, if we're in a paragraph, gather it's attributes
if (this.isElem(startBlock, 'li') || this.isElem(endBlock, 'li'))
return;
if (this.isElem(startBlock, 'p')) {
for (var i = 0; i < startBlock.attributes.length; i++) {
attrsLeft[startBlock.attributes[i].nodeName] = startBlock.attributes[i].nodeValue;
}
}
if (this.isElem(endBlock, 'p')) {
for (var i = 0; i < endBlock.attributes.length; i++) {
// If we start and end within one paragraph, don't duplicate the 'id'
if (endBlock != startBlock || endBlock.attributes[i].nodeName.toLowerCase() != 'id')
attrsRight[endBlock.attributes[i].nodeName] = endBlock.attributes[i].nodeValue;
}
}
if (this.isElem(startBlock, 'p')) {
for (var i = 0; i < startBlock.attributes.length; i++) {
attrsLeft[startBlock.attributes[i].nodeName] = startBlock.attributes[i].nodeValue;
}
}
if (this.isElem(endBlock, 'p')) {
for (var i = 0; i < endBlock.attributes.length; i++) {
// If we start and end within one paragraph, don't duplicate the 'id'
if (endBlock != startBlock || endBlock.attributes[i].nodeName.toLowerCase() != 'id')
attrsRight[endBlock.attributes[i].nodeName] = endBlock.attributes[i].nodeValue;
}
}
// Look for where to start and end our chopping - within surrounding paragraphs
// if they exist, or at the edges of the containing block, otherwise
var startChop = startNode; var endChop = endNode;
// Look for where to start and end our chopping - within surrounding paragraphs
// if they exist, or at the edges of the containing block, otherwise
var startChop = startNode; var endChop = endNode;
while ((startChop.previousSibling && !this.isElem(startChop.previousSibling, 'p'))
|| (startChop.parentNode && startChop.parentNode != startBlock && startChop.parentNode.nodeType != 9))
startChop = startChop.previousSibling ? startChop.previousSibling : startChop.parentNode;
while ((startChop.previousSibling && !this.isElem(startChop.previousSibling, 'p'))
|| (startChop.parentNode && startChop.parentNode != startBlock && startChop.parentNode.nodeType != 9))
startChop = startChop.previousSibling ? startChop.previousSibling : startChop.parentNode;
while ((endChop.nextSibling && !this.isElem(endChop.nextSibling, 'p'))
|| (endChop.parentNode && endChop.parentNode != endBlock && endChop.parentNode.nodeType != 9))
endChop = endChop.nextSibling ? endChop.nextSibling : endChop.parentNode;
while ((endChop.nextSibling && !this.isElem(endChop.nextSibling, 'p'))
|| (endChop.parentNode && endChop.parentNode != endBlock && endChop.parentNode.nodeType != 9))
endChop = endChop.nextSibling ? endChop.nextSibling : endChop.parentNode;
// Set up new paragraphs
var pLeft = editor._doc.createElement('p'); var pRight = editor._doc.createElement('p');
// Set up new paragraphs
var pLeft = editor._doc.createElement('p'); var pRight = editor._doc.createElement('p');
for (var attrName in attrsLeft) {
var thisAttr = editor._doc.createAttribute(attrName);
thisAttr.value = attrsLeft[attrName];
pLeft.setAttributeNode(thisAttr);
}
for (var attrName in attrsRight) {
var thisAttr = editor._doc.createAttribute(attrName);
thisAttr.value = attrsRight[attrName];
pRight.setAttributeNode(thisAttr);
}
for (var attrName in attrsLeft) {
var thisAttr = editor._doc.createAttribute(attrName);
thisAttr.value = attrsLeft[attrName];
pLeft.setAttributeNode(thisAttr);
}
for (var attrName in attrsRight) {
var thisAttr = editor._doc.createAttribute(attrName);
thisAttr.value = attrsRight[attrName];
pRight.setAttributeNode(thisAttr);
}
// Get the ranges destined to be stuffed into new paragraphs
rngLeft.setStartBefore(startChop);
rngLeft.setEnd(startNode,startOffset);
pLeft.appendChild(rngLeft.cloneContents()); // Copy into pLeft
// Get the ranges destined to be stuffed into new paragraphs
rngLeft.setStartBefore(startChop);
rngLeft.setEnd(startNode,startOffset);
pLeft.appendChild(rngLeft.cloneContents()); // Copy into pLeft
rngRight.setEndAfter(endChop);
rngRight.setStart(endNode,endOffset);
pRight.appendChild(rngRight.cloneContents()); // Copy into pRight
rngRight.setEndAfter(endChop);
rngRight.setStart(endNode,endOffset);
pRight.appendChild(rngRight.cloneContents()); // Copy into pRight
// If either paragraph is empty, fill it with a nonbreakable space
var foundBlock = false;
foundBlock = this.walkNodeChildren(pLeft, this._isFilling);
if (foundBlock != true)
this.insertDeepLeftText(pLeft, '&nbsp;');
// If either paragraph is empty, fill it with a nonbreakable space
var foundBlock = false;
foundBlock = this.walkNodeChildren(pLeft, this._isFilling);
if (foundBlock != true)
this.insertDeepLeftText(pLeft, '&nbsp;');
foundBlock = false;
foundBlock = this.walkNodeChildren(pRight, this._isFilling);
if (foundBlock != true)
this.insertDeepLeftText(pRight, '&nbsp;');
foundBlock = false;
foundBlock = this.walkNodeChildren(pRight, this._isFilling);
if (foundBlock != true)
this.insertDeepLeftText(pRight, '&nbsp;');
// Get a range for everything to be replaced and replace it
var rngAround = editor._doc.createRange();
// Get a range for everything to be replaced and replace it
var rngAround = editor._doc.createRange();
if (!startChop.previousSibling && this.isElem(startChop.parentNode, 'p'))
rngAround.setStartBefore(startChop.parentNode);
else
rngAround.setStart(rngLeft.startContainer, rngLeft.startOffset);
if (!startChop.previousSibling && this.isElem(startChop.parentNode, 'p'))
rngAround.setStartBefore(startChop.parentNode);
else
rngAround.setStart(rngLeft.startContainer, rngLeft.startOffset);
if (!endChop.nextSibling && this.isElem(endChop.parentNode, 'p'))
rngAround.setEndAfter(endChop.parentNode);
else
rngAround.setEnd(rngRight.endContainer, rngRight.endOffset);
if (!endChop.nextSibling && this.isElem(endChop.parentNode, 'p'))
rngAround.setEndAfter(endChop.parentNode);
else
rngAround.setEnd(rngRight.endContainer, rngRight.endOffset);
rngAround.deleteContents();
rngAround.insertNode(pRight);
rngAround.insertNode(pLeft);
rngAround.deleteContents();
rngAround.insertNode(pRight);
rngAround.insertNode(pLeft);
// Set the selection to the start of the (second) new paragraph
if (pRight.firstChild) {
while (pRight.firstChild && this._html4_inlines_re.test(pRight.firstChild.nodeName))
pRight = pRight.firstChild;
// Slip into any inline tags
if (pRight.firstChild && pRight.firstChild.nodeType == 3)
pRight = pRight.firstChild; // and text, if they've got it
// Set the selection to the start of the (second) new paragraph
if (pRight.firstChild) {
while (pRight.firstChild && this._html4_inlines_re.test(pRight.firstChild.nodeName))
pRight = pRight.firstChild;
// Slip into any inline tags
if (pRight.firstChild && pRight.firstChild.nodeType == 3)
pRight = pRight.firstChild; // and text, if they've got it
var rngCaret = editor._doc.createRange();
rngCaret.setStart(pRight, 0);
rngCaret.collapse(true);
var rngCaret = editor._doc.createRange();
rngCaret.setStart(pRight, 0);
rngCaret.collapse(true);
sel = editor._iframe.contentWindow.getSelection();
sel.removeAllRanges();
sel.addRange(rngCaret);
}
sel = editor._iframe.contentWindow.getSelection();
sel.removeAllRanges();
sel.addRange(rngCaret);
}
// Stop the bubbling
HTMLArea._stopEvent(ev);
}
// Stop the bubbling
HTMLArea._stopEvent(ev);
}
};

View File

@ -49,6 +49,7 @@ FullPage.prototype.buttonPress = function(editor, id) {
var links = doc.getElementsByTagName("link");
var style1 = '';
var style2 = '';
var charset = '';
for (var i = links.length; --i >= 0;) {
var link = links[i];
if (/stylesheet/i.test(link.rel)) {
@ -58,6 +59,14 @@ FullPage.prototype.buttonPress = function(editor, id) {
style1 = link.href;
}
}
var metas = doc.getElementsByTagName("meta");
for (var i = metas.length; --i >= 0;) {
var meta = metas[i];
if (/content-type/i.test(meta.httpEquiv)) {
r = /^text\/html; *charset=(.*)$/i.exec(meta.content);
charset = r[1];
}
}
var title = doc.getElementsByTagName("title")[0];
title = title ? title.innerHTML : '';
var init = {
@ -67,7 +76,7 @@ FullPage.prototype.buttonPress = function(editor, id) {
f_body_fgcolor : HTMLArea._colorToRgb(doc.body.style.color),
f_base_style : style1,
f_alt_style : style2,
f_charset : charset,
editor : editor
};
editor._popupDialog("plugin://FullPage/docprop", function(params) {
@ -82,8 +91,11 @@ FullPage.prototype.setDocProp = function(params) {
var doc = this.editor._doc;
var head = doc.getElementsByTagName("head")[0];
var links = doc.getElementsByTagName("link");
var metas = doc.getElementsByTagName("meta");
var style1 = null;
var style2 = null;
var charset = null;
var charset_meta = null;
for (var i = links.length; --i >= 0;) {
var link = links[i];
if (/stylesheet/i.test(link.rel)) {
@ -93,12 +105,27 @@ FullPage.prototype.setDocProp = function(params) {
style1 = link;
}
}
for (var i = metas.length; --i >= 0;) {
var meta = metas[i];
if (/content-type/i.test(meta.httpEquiv)) {
r = /^text\/html; *charset=(.*)$/i.exec(meta.content);
charset = r[1];
charset_meta = meta;
}
}
function createLink(alt) {
var link = doc.createElement("link");
link.rel = alt ? "alternate stylesheet" : "stylesheet";
head.appendChild(link);
return link;
};
function createMeta(name, content) {
var meta = doc.createElement("meta");
meta.httpEquiv = name;
meta.content = content;
head.appendChild(meta);
return meta;
};
if (!style1 && params.f_base_style)
style1 = createLink(false);
@ -114,7 +141,14 @@ FullPage.prototype.setDocProp = function(params) {
else if (style2)
head.removeChild(style2);
for (var i in params) {
if (charset_meta) {
head.removeChild(charset_meta);
charset_meta = null;
}
if (!charset_meta && params.f_charset)
charset_meta = createMeta("Content-Type", "text/html; charset="+params.f_charset);
for (var i in params) {
var val = params[i];
switch (i) {
case "f_title":

View File

@ -24,7 +24,6 @@ $GLOBALS['phpgw_info']['flags'] = Array(
);
include('../../../../../../header.inc.php');
header('Content-type: text/javascript; charset='.$GLOBALS['phpgw']->translation->charset());
$GLOBALS['phpgw']->translation->add_app('htmlarea-FullPage');
// I18N for the FullPage plugin

View File

@ -16,7 +16,8 @@ window.resizeTo(400, 100);
f_body_bgcolor : true,
f_body_fgcolor : true,
f_base_style : true,
f_alt_style : true
f_alt_style : true,
f_charset : true
};
var editor = null;
@ -120,6 +121,17 @@ border-bottom: 1px solid black; letter-spacing: 2px;
<td class="label"><span>Text color:</span></td>
<td><input type="text" id="f_body_fgcolor" size="7" /></td>
</tr>
<tr>
<td class="label"><span>Character set:</span></td>
<td><select id="f_charset">
<option value=""></option>
<option value="utf-8">UTF-8 (recommended)</option>
<option value="windows-1251">cyrillic (WINDOWS-1251)</option>
<option value="koi8-r">cyrillic (KOI8-R)</option>
<option value="iso-8859-5">cyrillic (ISO-8859-5)</option>
<option value="iso-8859-1">western (ISO-8859-1)</option>
</select></td>
</tr>
</table>
<div id="buttons">

View File

@ -16,7 +16,7 @@ function HtmlTidy(editor) {
// register the toolbar buttons provided by this plugin
var toolbar = [];
for (var i in bl) {
for (var i = 0; i < bl.length; ++i) {
var btn = bl[i];
if (btn == "html-tidy") {
var id = "HT-html-tidy";

View File

@ -24,7 +24,6 @@ $GLOBALS['phpgw_info']['flags'] = Array(
);
include('../../../../../../header.inc.php');
header('Content-type: text/javascript; charset='.$GLOBALS['phpgw']->translation->charset());
$GLOBALS['phpgw']->translation->add_app('htmlarea-HtmlTidy');
// I18N constants

View File

@ -24,7 +24,6 @@ $GLOBALS['phpgw_info']['flags'] = Array(
);
include('../../../../../../header.inc.php');
header('Content-type: text/javascript; charset='.$GLOBALS['phpgw']->translation->charset());
$GLOBALS['phpgw']->translation->add_app('htmlarea-ListType');
// I18N constants

View File

@ -24,7 +24,6 @@ $GLOBALS['phpgw_info']['flags'] = Array(
);
include('../../../../../../header.inc.php');
header('Content-type: text/javascript; charset='.$GLOBALS['phpgw']->translation->charset());
$GLOBALS['phpgw']->translation->add_app('htmlarea-SpellChecker');
// I18N constants

View File

@ -126,7 +126,7 @@ function replaceAllClicked() {
}
*/
if (ok) {
for (var i in spans) {
for (var i = 0; i < spans.length; ++i) {
if (spans[i] != currentElement) {
replaceWord(spans[i]);
}
@ -156,7 +156,7 @@ function learnClicked() {
function internationalizeWindow() {
var types = ["div", "span", "button"];
for (var i in types) {
for (var i = 0; i < types.length; ++i) {
var tag = types[i];
var els = document.getElementsByTagName(tag);
for (var j = els.length; --j >= 0;) {
@ -237,7 +237,7 @@ function wordClicked(scroll) {
if (currentElement) {
var a = allWords[currentElement.__msh_origWord];
currentElement.className = currentElement.className.replace(/\s*HA-spellcheck-current\s*/g, " ");
for (var i in a) {
for (var i = 0; i < a.length; ++i) {
var el = a[i];
if (el != currentElement) {
el.className = el.className.replace(/\s*HA-spellcheck-same\s*/g, " ");
@ -247,7 +247,7 @@ function wordClicked(scroll) {
currentElement = this;
this.className += " HA-spellcheck-current";
var a = allWords[currentElement.__msh_origWord];
for (var i in a) {
for (var i = 0; i < a.length; ++i) {
var el = a[i];
if (el != currentElement) {
el.className += " HA-spellcheck-same";

View File

@ -18,7 +18,7 @@ function SpellChecker(editor) {
// register the toolbar buttons provided by this plugin
var toolbar = [];
for (var i in bl) {
for (var i = 0; i < bl.length; ++i) {
var btn = bl[i];
if (!btn) {
toolbar.push("separator");
@ -33,7 +33,7 @@ function SpellChecker(editor) {
}
}
for (var i in toolbar) {
for (var i = 0; i < toolbar.length; ++i) {
cfg.toolbar[0].push(toolbar[i]);
}
};

View File

@ -24,7 +24,6 @@ $GLOBALS['phpgw_info']['flags'] = Array(
);
include('../../../../../../header.inc.php');
header('Content-type: text/javascript; charset='.$GLOBALS['phpgw']->translation->charset());
$GLOBALS['phpgw']->translation->add_app('htmlarea-TableOperations');
// I18N constants

View File

@ -1,7 +1,7 @@
// I18N constants
// LANG: "en", ENCODING: UTF-8 | ISO-8859-1
// Author: Mihai Bazon, <mishoo@infoiasi.ro>
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
// translated into Norwegia: ses@online.no 11.11.03
// FOR TRANSLATORS:

View File

@ -24,7 +24,7 @@ function TableOperations(editor) {
// register the toolbar buttons provided by this plugin
var toolbar = ["linebreak"];
for (var i in bl) {
for (var i = 0; i < bl.length; ++i) {
var btn = bl[i];
if (!btn) {
toolbar.push("separator");
@ -65,7 +65,7 @@ TableOperations.prototype.getClosest = function(tagName) {
var ancestors = editor.getAllAncestors();
var ret = null;
tagName = ("" + tagName).toLowerCase();
for (var i in ancestors) {
for (var i = 0; i < ancestors.length; ++i) {
var el = ancestors[i];
if (el.tagName.toLowerCase() == tagName) {
ret = el;
@ -502,11 +502,17 @@ TableOperations.prototype.buttonPress = function(editor, button_id) {
var rows = td.parentNode.parentNode.rows;
var index = td.cellIndex;
for (var i = rows.length; --i >= 0;) {
/*
var tr = rows;
var otd = tr.insertCell(index + (/after/.test(button_id) ? 1 : 0));
otd.innerHTML = mozbr;
*/
var tr = rows[i];
var ref = tr.cells[index + (/after/.test(button_id) ? 1 : 0)];
var otd = editor._doc.createElement("td");
otd.innerHTML = mozbr;
tr.insertBefore(otd, ref);
}
editor.focusEditor();
break;
@ -868,7 +874,7 @@ TableOperations.createStyleLayoutFieldset = function(doc, editor, el) {
td.appendChild(select);
select.name = "f_st_float";
options = ["None", "Left", "Right"];
for (i in options) {
for (var i = 0; i < options.length; ++i) {
var Val = options[i];
var val = options[i].toLowerCase();
option = doc.createElement("option");
@ -923,7 +929,7 @@ TableOperations.createStyleLayoutFieldset = function(doc, editor, el) {
input.size = "1";
input.style.fontFamily = "monospace";
td.appendChild(input);
for (i in options) {
for (var i = 0; i < options.length; ++i) {
var Val = options[i];
var val = Val.toLowerCase();
option = doc.createElement("option");
@ -978,7 +984,7 @@ TableOperations.createStyleLayoutFieldset = function(doc, editor, el) {
select.style.marginLeft = "0.5em";
td.appendChild(select);
options = ["Top", "Middle", "Bottom", "Baseline"];
for (i in options) {
for (var i = 0; i < options.length; ++i) {
var Val = options[i];
var val = Val.toLowerCase();
option = doc.createElement("option");
@ -1070,7 +1076,7 @@ TableOperations.createStyleFieldset = function(doc, editor, el) {
// That is, "top right bottom left" -- we only consider the first
// value.
(currentBorderStyle.match(/([^\s]*)\s/)) && (currentBorderStyle = RegExp.$1);
for (i in options) {
for (var i in options) {
var val = options[i];
option = doc.createElement("option");
option.value = val;
@ -1080,7 +1086,7 @@ TableOperations.createStyleFieldset = function(doc, editor, el) {
}
select.style.marginRight = "0.5em";
function setBorderFieldsStatus(value) {
for (i in borderFields) {
for (var i = 0; i < borderFields.length; ++i) {
var el = borderFields[i];
el.style.visibility = value ? "hidden" : "visible";
if (!value && (el.tagName.toLowerCase() == "input")) {

View File

@ -24,7 +24,6 @@ $GLOBALS['phpgw_info']['flags'] = Array(
);
include('../../../../../../header.inc.php');
header('Content-type: text/javascript; charset='.$GLOBALS['phpgw']->translation->charset());
$GLOBALS['phpgw']->translation->add_app('htmlarea-SpellChecker');
// I18N for the FullPage plugin

View File

@ -1,111 +1,87 @@
<?php
/**************************************************************************\
* eGroupWare - UploadImage-plugin for htmlArea *
* http://www.eGroupWare.org *
* Written and (c) by Xiang Wei ZHUO <wei@zhuo.org> *
* Modified for eGW by and (c) by Pim Snel <pim@lingewoud.nl> *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; version 2 of the License. *
\**************************************************************************/
/**************************************************************************\
* eGroupWare - UploadImage-plugin for htmlArea *
* http://www.eGroupWare.org *
* Written and (c) by Xiang Wei ZHUO <wei@zhuo.org> *
* Modified for eGW by and (c) by Pim Snel <pim@lingewoud.nl> *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; version 2 of the License. *
\**************************************************************************/
/* $id$ */
/* $id$ */
// FIXME: remove imageMagick shit, we only use gdlib
// FIXME: autodetect safe_mode
// FIXME include header nicer
// FIXME: remove imageMagick shit, we only use gdlib
// FIXME: autodetect safe_mode
// FIXME set current app to the calling app
// FIXME include header nicer
$phpgw_flags = Array(
'currentapp' => 'home',
'noheader' => True,
'nonavbar' => True,
'noappheader' => True,
'noappfooter' => True,
'nofooter' => True
);
$phpgw_flags = Array(
'currentapp' => 'jinn',
'noheader' => True,
'nonavbar' => True,
'noappheader' => True,
'noappfooter' => True,
'nofooter' => True
);
$GLOBALS['phpgw_info']['flags'] = $phpgw_flags;
$GLOBALS['phpgw_info']['flags'] = $phpgw_flags;
if(@include('../../../../../../header.inc.php'))
{
// I know this is very ugly
}
else
{
@include('../../../../../../../header.inc.php');
}
if(@include('../../../../../../header.inc.php'))
{
// I know this is very ugly
}
else
{
@include('../../../../../../../header.inc.php');
}
$sessdata = $GLOBALS['phpgw']->session->appsession('UploadImage','phpgwapi');
$phpgw_flags['currentapp'] = $sessdata['app'] ? $sessdata['app'] : 'jinn';
define('IMAGE_CLASS', 'GD');
define('IMAGE_CLASS', 'GD');
//In safe mode, directory creation is not permitted.
$SAFE_MODE = false;
//In safe mode, directory creation is not permitted.
$SAFE_MODE = false;
$sessdata = $GLOBALS['phpgw']->session->appsession('UploadImage','phpgwapi');
switch ($phpgw_flags['currentapp'])
{
case 'jinn' :
$BASE_DIR = $sessdata[UploadImageBaseDir];
$BASE_URL = $sessdata[UploadImageBaseURL];
$MAX_HEIGHT = $sessdata[UploadImageMaxHeight];
$MAX_WIDTH = $sessdata[UploadImageMaxWidth];
// _debug_array($sessdata);
//die();
break;
case 'sitemgr' :
if(is_writeable($sessdata['upload_dir']))
{
$BASE_DIR = $sessdata['upload_dir'];
$BASE_URL = str_replace($GLOBALS['_SERVER']['DOCUMENT_ROOT'],'',$sessdata['upload_dir']);
}
else
{
echo '<p><b>Error</b></p>';
echo '<p>Upload directory does not exist, or is not writeable by webserver</p>';
echo $GLOBALS['egw_info']['user']['apps']['admin'] ?
'<a href="'. $GLOBALS['phpgw']->link('/index.php',
'menuaction=sitemgr.Common_UI.DisplayPrefs').'">Choose an other directory</a><br>
or make "'. $sessdata['upload_dir']. '" writeable by webserver' :
'Notify your Administrator to correct this Situation';
die();
}
default :
break;
}
$BASE_DIR = $sessdata[UploadImageBaseDir];
$BASE_URL = $sessdata[UploadImageBaseURL];
$MAX_HEIGHT = $sessdata[UploadImageMaxHeight];
$MAX_WIDTH = $sessdata[UploadImageMaxWidth];
if(!$MAX_HEIGHT) $MAX_HEIGHT = 10000;
if(!$MAX_WIDTH) $MAX_WIDTH = 10000;
if(!$MAX_HEIGHT) $MAX_HEIGHT = 10000;
if(!$MAX_WIDTH) $MAX_WIDTH = 10000;
// _debug_array($sessdata);
//die();
//After defining which library to use, if it is NetPBM or IM, you need to
//specify where the binary for the selected library are. And of course
//your server and PHP must be able to execute them (i.e. safe mode is OFF).
//If you have safe mode ON, or don't have the binaries, your choice is
//GD only. GD does not require the following definition.
//define('IMAGE_TRANSFORM_LIB_PATH', '/usr/bin/netpbm/');
//define('IMAGE_TRANSFORM_LIB_PATH', '"D:\\Program Files\\ImageMagick\\');
//After defining which library to use, if it is NetPBM or IM, you need to
//specify where the binary for the selected library are. And of course
//your server and PHP must be able to execute them (i.e. safe mode is OFF).
//If you have safe mode ON, or don't have the binaries, your choice is
//GD only. GD does not require the following definition.
//define('IMAGE_TRANSFORM_LIB_PATH', '/usr/bin/netpbm/');
//define('IMAGE_TRANSFORM_LIB_PATH', '"D:\\Program Files\\ImageMagick\\');
$BASE_ROOT = '';
$IMG_ROOT = $BASE_ROOT;
$BASE_ROOT = '';
$IMG_ROOT = $BASE_ROOT;
if(strrpos($BASE_DIR, '/')!= strlen($BASE_DIR)-1)
$BASE_DIR .= '/';
if(strrpos($BASE_DIR, '/')!= strlen($BASE_DIR)-1)
$BASE_DIR .= '/';
if(strrpos($BASE_URL, '/')!= strlen($BASE_URL)-1)
$BASE_URL .= '/';
if(strrpos($BASE_URL, '/')!= strlen($BASE_URL)-1)
$BASE_URL .= '/';
//Built in function of dirname is faulty
//It assumes that the directory nane can not contain a . (period)
function dir_name($dir)
{
$lastSlash = intval(strrpos($dir, '/'));
if($lastSlash == strlen($dir)-1){
return substr($dir, 0, $lastSlash);
}
else
return dirname($dir);
}
//Built in function of dirname is faulty
//It assumes that the directory nane can not contain a . (period)
function dir_name($dir)
{
$lastSlash = intval(strrpos($dir, '/'));
if($lastSlash == strlen($dir)-1){
return substr($dir, 0, $lastSlash);
}
else
return dirname($dir);
}
?>

View File

@ -191,7 +191,7 @@ PopupDiv.prototype.getForm = function() {
PopupDiv.prototype.callHandler = function() {
var tags = ["input", "textarea", "select"];
var params = new Object();
for (var ti in tags) {
for (var ti = tags.length; --ti >= 0;) {
var tag = tags[ti];
var els = this.content.getElementsByTagName(tag);
for (var j = 0; j < els.length; ++j) {

View File

@ -3,8 +3,9 @@
<head>
<title>Fullscreen HTMLArea</title>
<script type="text/javascript">
_editor_url = window.opener._editor_url;
_editor_url = window.opener._editor_url || '../';
_editor_lang = window.opener._editor_lang;
_editor_css = window.opener._editor_css;
var BASE = window.opener.document.baseURI || window.opener.document.URL;
var head = document.getElementsByTagName("head")[0];
var base = document.createElement("base");
@ -12,13 +13,15 @@
head.appendChild(base);
</script>
<script type="text/javascript" src="../htmlarea.js"></script>
<script type="text/javascript">
document.write('<scr' + 'ipt type="text/javascript" src="' + _editor_url + 'htmlarea.js"></scr' + 'ipt>');
</script>
<script type="text/javascript">
// load HTMLArea scripts that are present in the opener frame
var scripts = window.opener.HTMLArea._scripts;
for (var i = 4; i < scripts.length; ++i) {
document.write("<scr" + "ipt type='text/javascript' src='" + scripts[i] + "'></scr" + "ipt>");
for (var i = 3; i < scripts.length; ++i) {
//document.write("<scr" + "ipt type='text/javascript' src='" + scripts[i] + "'></scr" + "ipt>");
HTMLArea.loadScript(scripts[i]);
}
</script>
@ -33,7 +36,7 @@ var editor = null; // to be initialized later [ function init() ]
\* ---------------------------------------------------------------------- */
function _CloseOnEsc(ev) {
ev || (ev = window.event);
ev || (ev = window.event) || (ev = editor._iframe.contentWindow.event);
if (ev.keyCode == 27) {
// update_parent();
window.close();
@ -59,7 +62,7 @@ function resize_editor() { // resize editor to fix window
if (editor.config.statusBar) {
newHeight -= editor._statusBar.offsetHeight;
}
editor._textArea.style.height = editor._iframe.style.height = newHeight + "px";
editor._textArea.style.height = editor._iframe.style.height = newHeight - (HTMLArea.is_gecko ? 8 : 0) + "px";
}
/* ---------------------------------------------------------------------- *\
@ -83,7 +86,10 @@ function init() {
// register the plugins, if any
for (var i in parent_object.plugins) {
var plugin = parent_object.plugins[i];
editor.registerPlugin2(plugin.name, plugin.args);
try {
eval(plugin.name);
editor.registerPlugin2(plugin.name, plugin.args);
} catch(e) {};
}
// and restore the original toolbar
config.toolbar = parent_object.config.toolbar;
@ -125,7 +131,7 @@ function update_parent() {
</script>
<style type="text/css"> html, body { height: 100%; margin: 0px; border: 0px; background-color: buttonface; } </style>
</head>
<body scroll="no" onload="setTimeout(function(){init();}, 500)" onunload="update_parent()">
<body scroll="no" onload="HTMLArea.onload = init; HTMLArea.init();" onunload="update_parent()">
<form style="margin: 0px; border: 1px solid; border-color: threedshadow threedhighlight threedhighlight threedshadow;">
<textarea name="editor" id="editor" style="width:100%; height:300px">&nbsp;</textarea>
</form>

View File

@ -10,6 +10,8 @@
window.resizeTo(400, 100);
function Init() {
i18n = window.opener.HTMLArea.I18N.dialogs; // load the HTMLArea plugin and lang file
__dlg_translate(i18n);
__dlg_init();
document.getElementById("f_rows").focus();
};
@ -27,13 +29,13 @@ function onOK() {
return false;
}
}
var fields = ["f_rows", "f_cols", "f_width", "f_unit",
var fields = ["f_rows", "f_cols", "f_width", "f_unit", "f_fixed",
"f_align", "f_border", "f_spacing", "f_padding"];
var param = new Object();
for (var i in fields) {
var id = fields[i];
var el = document.getElementById(id);
param[id] = el.value;
param[id] = (el.type == "checkbox") ? el.checked : el.value;
}
__dlg_close(param);
return false;
@ -88,13 +90,6 @@ form { padding: 0px; margin: 0px; }
<tr>
<td style="width: 4em; text-align: right">Rows:</td>
<td><input type="text" name="rows" id="f_rows" size="5" title="Number of rows" value="2" /></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td style="width: 4em; text-align: right">Cols:</td>
<td><input type="text" name="cols" id="f_cols" size="5" title="Number of columns" value="4" /></td>
<td style="width: 4em; text-align: right">Width:</td>
<td><input type="text" name="width" id="f_width" size="5" title="Width of the table" value="100" /></td>
<td><select size="1" name="unit" id="f_unit" title="Width unit">
@ -103,7 +98,13 @@ form { padding: 0px; margin: 0px; }
<option value="em" >Em</option>
</select></td>
</tr>
<tr>
<td style="width: 4em; text-align: right">Cols:</td>
<td><input type="text" name="cols" id="f_cols" size="5" title="Number of columns" value="4" /></td>
<td style="text-align: right"><input type="checkbox" checked="checked" name="fixed" id="f_fixed" /></td>
<td colspan="2"><label for="f_fixed"
>Fixed width columns</label></td>
</tr>
</tbody>
</table>
@ -116,7 +117,7 @@ form { padding: 0px; margin: 0px; }
<div class="fl">Alignment:</div>
<select size="1" name="align" id="f_align"
title="Positioning of this image">
title="Positioning of this table">
<option value="" selected="1" >Not set</option>
<option value="left" >Left</option>
<option value="right" >Right</option>

View File

@ -26,7 +26,12 @@ function Init() {
__dlg_init();
var param = window.dialogArguments;
var target_select = document.getElementById("f_target");
var use_target = true;
if (param) {
if ( typeof param["f_usetarget"] != "undefined" ) {
use_target = param["f_usetarget"];
}
if ( typeof param["f_href"] != "undefined" ) {
document.getElementById("f_href").value = param["f_href"];
document.getElementById("f_title").value = param["f_title"];
comboSelectValue(target_select, param["f_target"]);
@ -37,6 +42,12 @@ function Init() {
target_select.appendChild(opt);
opt.selected = true;
}
}
}
if (! use_target) {
document.getElementById("f_target_label").style.visibility = "hidden";
document.getElementById("f_target").style.visibility = "hidden";
document.getElementById("f_target_other").style.visibility = "hidden";
}
var opt = document.createElement("option");
opt.value = "_other";
@ -112,7 +123,7 @@ border-bottom: 1px solid black; letter-spacing: 2px;
<body onload="Init()">
<div class="title">Insert/Modify Link</div>
<form>
<table border="0" style="width: 100%;">
<tr>
<td class="label">URL:</td>
@ -123,7 +134,7 @@ border-bottom: 1px solid black; letter-spacing: 2px;
<td><input type="text" id="f_title" style="width: 100%" /></td>
</tr>
<tr>
<td class="label">Target:</td>
<td class="label"><span id="f_target_label">Target:</span></td>
<td><select id="f_target">
<option value="">None (use implicit)</option>
<option value="_blank">New window (_blank)</option>
@ -136,9 +147,9 @@ border-bottom: 1px solid black; letter-spacing: 2px;
</table>
<div id="buttons">
<button type="button" name="ok" onclick="return onOK();">OK</button>
<button type="submit" name="ok" onclick="return onOK();">OK</button>
<button type="button" name="cancel" onclick="return onCancel();">Cancel</button>
</div>
</form>
</body>
</html>

View File

@ -53,12 +53,12 @@ function __dlg_init(bottom) {
// only if we call it twice we get the
// correct size.
window.addEventListener("unload", __dlg_onclose, true);
window.innerWidth = body.offsetWidth + 5;
window.innerHeight = body_height + 2;
// center on parent
var x = opener.screenX + (opener.outerWidth - window.outerWidth) / 2;
var y = opener.screenY + (opener.outerHeight - window.outerHeight) / 2;
window.moveTo(x, y);
window.innerWidth = body.offsetWidth + 5;
window.innerHeight = body_height + 2;
} else {
// window.dialogHeight = body.offsetHeight + 50 + "px";
// window.dialogWidth = body.offsetWidth + "px";
@ -76,8 +76,8 @@ function __dlg_init(bottom) {
};
function __dlg_translate(i18n) {
var types = ["span", "option", "td", "button", "div"];
for (var type in types) {
var types = ["input", "select", "legend", "span", "option", "td", "button", "div"];
for (var type = 0; type < types.length; ++type) {
var spans = document.getElementsByTagName(types[type]);
for (var i = spans.length; --i >= 0;) {
var span = spans[i];
@ -86,6 +86,11 @@ function __dlg_translate(i18n) {
if (txt)
span.firstChild.data = txt;
}
if (span.title) {
var txt = i18n[span.title];
if (txt)
span.title = txt;
}
}
}
var txt = i18n[document.title];

View File

@ -16,7 +16,7 @@ function PopupWin(editor, title, handler, initFunction) {
if (base && base.match(/(.*)\/([^\/]+)/)) {
base = RegExp.$1 + "/";
}
if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) {
if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url) && !/http:\/\//.test(_editor_url)) {
// _editor_url doesn't start with '/' which means it's relative
// FIXME: there's a problem here, it could be http:// which
// doesn't start with slash but it's not relative either.
@ -61,7 +61,7 @@ function PopupWin(editor, title, handler, initFunction) {
PopupWin.prototype.callHandler = function() {
var tags = ["input", "textarea", "select"];
var params = new Object();
for (var ti in tags) {
for (var ti = tags.length; --ti >= 0;) {
var tag = tags[ti];
var els = this.content.getElementsByTagName(tag);
for (var j = 0; j < els.length; ++j) {

View File

@ -1,4 +1,265 @@
2004-02-06 Mihai Bazon <mishoo@localhost.localdomain>
2005-03-07 Mihai Bazon <mihai_bazon@yahoo.com>
* skins/aqua/theme.css: *** empty log message ***
* release-notes.html: updated release notes
* calendar-setup.js:
use a better approach to initialize the calendar--don't call _init twice,
it's the most time consuming function in the calendar. Instead, determine
the date beforehand if possible and pass it to the calendar at constructor.
* calendar.js:
avoid keyboard operation when 'multiple dates' is set (very buggy for now)
* calendar.js:
fixed keyboard handling problems: now it works fine when "showsOtherMonths"
is passed; it also seems to be fine with disabled dates (won't normally
allow selection)--however this area is still likely to be buggy, i.e. in a
month that has all the dates disabled.
* calendar.js:
some trivial performance improvements in the _init function
Added Date.parseDate (old Calendar.prototype.parseDate now calls this one)
2005-03-05 Mihai Bazon <mihai_bazon@yahoo.com>
* release-notes.html: updated release notes
* dayinfo.html: *** empty log message ***
* calendar-setup.js:
bugfix--update an inputField even if flat calendar is selected
* calendar.js:
fixed bugs in parseDate function (if for some reason the input string is
totally broken, then check numbers for NaN and use values from the current
date instead)
* make-release.pl: copy the skins subdirectory and all skins
* index.html: added Aqua skin
* skins/aqua/active-bg.gif, skins/aqua/dark-bg.gif, skins/aqua/hover-bg.gif, skins/aqua/menuarrow.gif, skins/aqua/normal-bg.gif, skins/aqua/rowhover-bg.gif, skins/aqua/status-bg.gif, skins/aqua/theme.css, skins/aqua/title-bg.gif, skins/aqua/today-bg.gif:
in the future, skins will go to this directory, each in a separate subdir; for now there's only Aqua, an excellent new skin
* calendar.js: workaround IE bug, needed in the Aqua theme
don't hide select elements unless browser is IE or Opera
* lang/calendar-bg.js, lang/calendar-big5-utf8.js, lang/calendar-big5.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-utf8.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-de.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fi.js, lang/calendar-fr.js, lang/calendar-he-utf8.js, lang/calendar-hu.js, lang/calendar-it.js, lang/calendar-ko-utf8.js, lang/calendar-ko.js, lang/calendar-lt-utf8.js, lang/calendar-lt.js, lang/calendar-lv.js, lang/calendar-nl.js, lang/calendar-no.js, lang/calendar-pl-utf8.js, lang/calendar-pl.js, lang/calendar-pt.js, lang/calendar-ro.js, lang/calendar-ru.js, lang/calendar-ru_win_.js, lang/calendar-si.js, lang/calendar-sk.js, lang/calendar-sp.js, lang/calendar-sv.js, lang/calendar-zh.js, lang/cn_utf8.js:
updated urls, copyright notices
* doc/reference.tex: updated documentation
* calendar.js, index.html:
renamed the global variable to _dynarch_popupCalendar to avoid name clashes
* multiple-dates.html: start with an empty array
* calendar.js:
fixed bugs in the time selector (12:XX pm was wrongfully understood as 12:XX am)
* calendar.js:
using innerHTML instead of text nodes; works better in Safari and also makes
a smaller, cleaner code
2005-03-04 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
fixed a performance regression that occurred after adding support for multiple dates
fixed the time selection bug (now it keeps time correctly)
clicking today will close the calendar if "today" is already selected
* lang/cn_utf8.js: new translation
2005-02-17 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ar-utf8.zip: Added arabic translation
2004-10-19 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-zh.js: updated
2004-09-20 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-no.js: updated (Daniel Holmen)
2004-09-20 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-no.js: updated (Daniel Holmen)
2004-08-11 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-nl.js: updated language file (thanks to Arjen Duursma)
* lang/calendar-sp.js: updated (thanks to Rafael Velasco)
2004-07-21 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-br.js: updated
* calendar-setup.js: fixed bug (dateText)
2004-07-21 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-br.js: updated
* calendar-setup.js: fixed bug (dateText)
2004-07-04 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-lv.js:
added LV translation (thanks to Juris Valdovskis)
2004-06-25 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
fixed bug in IE (el.calendar.tooltips is null or not an object)
2004-06-24 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: fixed latex compilation
* index.html: linking other sample files
* calendar-setup.js, calendar.js, dayinfo.html:
ability to display day info (dateText parameter) + sample file
2004-06-23 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex, lang/calendar-bg.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-ko-utf8.js, lang/calendar-ko.js, lang/calendar-nl.js, lang/calendar-sv.js, README, calendar.js, index.html:
email address changed
2004-06-14 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-cs-utf8.js, lang/calendar-cs-win.js:
updated translations
* calendar-system.css: added z-index to drop downs
* lang/calendar-en.js:
first day of week can now be part of the language file
* lang/calendar-es.js:
updated language file (thanks to Servilio Afre Puentes)
* calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar-blue.css:
added z-index property to drop downs (fixes bug)
2004-06-13 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js: fixed bug (apply showOthers to flat calendars too)
2004-06-06 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js:
firstDay defaults to "null", in which case the value in the language file
will be used
* calendar.js:
firstDayOfWeek can now default to a value specified in the language definition file
* index.html: first day of week is now numeric
2004-06-02 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js: added date tooltip function
2004-05-28 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-br.js: updated (thanks to Marcos Pont)
* calendar-setup.js: fixed small bug
2004-05-01 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js: returns the calendar object
2004-04-28 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js:
patch to read the date value from the inputField, according to ifFormat (if
both are passed), for flat calendars. (thanks Colin T. Hill)
2004-04-20 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js, calendar.js, multiple-dates.html:
added support for multiple dates selection
* lang/calendar-nl.js:
updated Dutch translation, thanks to Jeroen Wolsink
* lang/calendar-big5-utf8.js, lang/calendar-big5.js:
Traditional Chinese language (thanks GaryFu)
2004-03-26 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js, lang/calendar-pt.js: updated
* lang/calendar-ru_win_.js, lang/calendar-ru.js:
updated, thanks to Sly Golovanov
2004-03-25 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js: updated (thanks to David Duret)
2004-03-24 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-da.js: updated (thanks to Michael Thingmand Henriksen)
2004-03-21 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ca.js: updated (thanks to David Valls)
2004-03-17 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-de.js: updated to UTF8 (thanks to Jack (tR))
2004-03-09 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-bg.js: Bulgarian translation
2004-03-08 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-he-utf8.js: Hebrew translation (thanks to Idan Sofer)
* lang/calendar-hu.js: updated (thanks to Istvan Karaszi)
2004-02-27 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-it.js: updated (thanks to Fabio Di Bernardini)
2004-02-25 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js: fix for Safari (thanks to Olivier Chirouze / XPWeb)
2004-02-22 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-al.js: Albanian language file
2004-02-17 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js: fixed
* lang/calendar-fr.js:
FR translation updated (thanks to SIMON Alexandre)
* lang/calendar-es.js: ES translation updated, thanks to David Gonzales
2004-02-10 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-pt.js:
updated Portugese translation, thanks to Elcio Ferreira
2004-02-09 Mihai Bazon <mihai_bazon@yahoo.com>
* TODO: updated
2004-02-06 Mihai Bazon <mihai_bazon@yahoo.com>
* README: describe the PHP files
* make-release.pl: includes php files
* make-release.pl: ChangeLog included in the distribution (if found)
@ -27,7 +288,7 @@
* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-tas.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
smaller fonts on days that are in neighbor months
2004-02-04 Mihai Bazon <mishoo@localhost.localdomain>
2004-02-04 Mihai Bazon <mihai_bazon@yahoo.com>
* index.html: first demo shows the "showOtherMonths" capability
@ -47,7 +308,7 @@
* calendar.php: fixed bug (pass numeric values as numbers)
2004-02-01 Mihai Bazon <mishoo@localhost.localdomain>
2004-02-01 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.php: added PHP wrapper
@ -55,7 +316,7 @@
* TODO: updated TODO list
2004-01-27 Mihai Bazon <mishoo@localhost.localdomain>
2004-01-27 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
Janusz Piwowarski sent over a patch for IE5 compatibility which is much more
@ -63,7 +324,7 @@
* lang/calendar-fi.js: updated
2004-01-15 Mihai Bazon <mishoo@localhost.localdomain>
2004-01-15 Mihai Bazon <mihai_bazon@yahoo.com>
* TODO: updated TODO list
@ -85,7 +346,7 @@
fixed parseDate routine (the NaN bug which occurred when there was a space
after the date and no time)
2004-01-14 Mihai Bazon <mishoo@localhost.localdomain>
2004-01-14 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-en.js: added "Time:"
@ -107,7 +368,7 @@
* lang/calendar-el.js:
updated Greek translation (thanks Alexandros Pappas)
2004-01-13 Mihai Bazon <mishoo@localhost.localdomain>
2004-01-13 Mihai Bazon <mihai_bazon@yahoo.com>
* index.html: added style blue2, using utf-8 instead of iso-8859-2
@ -120,32 +381,32 @@
* calendar-blue.css, calendar-blue2.css, calendar-brown.css, calendar-green.css, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css:
fixed IE text size problems
2004-01-08 Mihai Bazon <mishoo@localhost.localdomain>
2004-01-08 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-pl.js:
Polish translation updated to UTF-8 (thanks to Artur Filipiak)
2004-01-07 Mihai Bazon <mishoo@localhost.localdomain>
2004-01-07 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-si.js: updated (David Milost)
* lang/calendar-si.js: Slovenian translation (thanks to David Milost)
2003-12-21 Mihai Bazon <mishoo@localhost.localdomain>
2003-12-21 Mihai Bazon <mihai_bazon@yahoo.com>
* TODO: updated TODO list
* lang/calendar-de.js: German translation (thanks to Peter Strotmann)
2003-12-19 Mihai Bazon <mishoo@localhost.localdomain>
2003-12-19 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: Thank you, Ian Barrak
2003-12-18 Mihai Bazon <mishoo@localhost.localdomain>
2003-12-18 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: fixed documentation bug (thanks Mike)
2003-12-05 Mihai Bazon <mishoo@localhost.localdomain>
2003-12-05 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ko-utf8.js:
UTF8 version of the Korean language (hopefully correct)
@ -153,16 +414,16 @@
* lang/calendar-pl-utf8.js, lang/calendar-pl.js:
updated Polish translation (thanks to Janusz Piwowarski)
2003-12-04 Mihai Bazon <mishoo@localhost.localdomain>
2003-12-04 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js:
French translation updated (thanks to Angiras Rama)
2003-11-22 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-22 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-da.js: updated (thanks to Jesper M. Christensen)
2003-11-20 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-20 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-blue2.css, calendar-tas.css:
new styles (thanks to Wendall Mosemann for blue2, Mark Lynch for tas)
@ -172,19 +433,19 @@
* lang/calendar-sp.js: updated
2003-11-17 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-17 Mihai Bazon <mihai_bazon@yahoo.com>
* TODO: added TODO list
2003-11-14 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-14 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ko.js: Korean translation (thanks to Yourim Yi)
2003-11-12 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-12 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-jp.js: small bug fixed (thanks to TAHARA Yusei)
2003-11-10 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-10 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fr.js: translation updated, thanks to Florent Ramiere
@ -193,18 +454,18 @@
* index.html: fixed DOCTYPE
2003-11-07 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-07 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js:
fixed minor problem (maybe we're passing object reference instead of ID for
the flat calendar parent)
2003-11-06 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-06 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-fi.js:
added Finnish translation (thanks to Antti Tuppurainen)
2003-11-05 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-05 Mihai Bazon <mihai_bazon@yahoo.com>
* release-notes.html: fixed typo
@ -214,7 +475,7 @@
* release-notes.html: updated release notes (0.9.5)
2003-11-03 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-03 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-de.js:
updated German translation (thanks to Gerhard Neiner)
@ -228,18 +489,18 @@
* calendar.js:
fixed positioning problem when input field is inside scrolled divs
2003-11-01 Mihai Bazon <mishoo@localhost.localdomain>
2003-11-01 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-af.js: Afrikaan language (thanks to Derick Olivier)
2003-10-31 Mihai Bazon <mishoo@localhost.localdomain>
2003-10-31 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-it.js:
updated IT translation (thanks to Christian Blaser)
* lang/calendar-es.js: updated ES translation, thanks to Raul
2003-10-30 Mihai Bazon <mishoo@localhost.localdomain>
2003-10-30 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-hu.js: updated thanks to Istvan Karaszi
@ -251,7 +512,7 @@
* lang/calendar-ro.js: switched to utf-8
2003-10-29 Mihai Bazon <mishoo@localhost.localdomain>
2003-10-29 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-es.js:
updated translation, thanks to Jose Ma. Martinez Miralles
@ -281,7 +542,7 @@
* calendar.js:
A click on TODAY will not close the calendar, even in single-click mode
2003-10-28 Mihai Bazon <mishoo@localhost.localdomain>
2003-10-28 Mihai Bazon <mihai_bazon@yahoo.com>
* index.html: previous cal.html
@ -293,29 +554,29 @@
* doc/Calendar.setup.tex, simple-1.html:
doc updated for the onUpdate parameter to Calendar.setup
2003-10-26 Mihai Bazon <mishoo@localhost.localdomain>
2003-10-26 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js: fixed bug (correct display of the dropdown menus)
* doc/Calendar.setup.tex, doc/reference.tex, lang/calendar-de.js, lang/calendar-en.js, lang/calendar-ro.js, README, cal.html, calendar-blue.css, calendar-brown.css, calendar-green.css, calendar-setup.js, calendar-system.css, calendar-win2k-1.css, calendar-win2k-2.css, calendar-win2k-cold-1.css, calendar-win2k-cold-2.css, calendar.js, release-notes.html, simple-1.html, simple-3.html:
lots of changes for the 0.9.4 release (see the release-notes.html)
2003-10-15 Mihai Bazon <mishoo@localhost.localdomain>
2003-10-15 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex:
documentation updated for 0.9.4 (not yet finished though)
2003-10-07 Mihai Bazon <mishoo@localhost.localdomain>
2003-10-07 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js, doc/reference.tex, release-notes.html, README, cal.html, calendar-setup.js:
modified project website
2003-10-06 Mihai Bazon <mishoo@localhost.localdomain>
2003-10-06 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar-setup.js:
added some properties (onSelect, onClose, date) (thanks altblue)
2003-09-24 Mihai Bazon <mishoo@localhost.localdomain>
2003-09-24 Mihai Bazon <mihai_bazon@yahoo.com>
* simple-3.html: dateIsSpecial does not need the "date" argument ;-)
@ -324,33 +585,33 @@
* calendar.js, simple-3.html:
added year, month, day to getDateStatus() function
2003-09-24 Mihai Bazon <mishoo@localhost.localdomain>
2003-09-24 Mihai Bazon <mihai_bazon@yahoo.com>
* simple-3.html: example on how to use special dates
* calendar-setup.js, calendar.js, simple-1.html:
support for special dates (thanks fabio)
2003-09-17 Mihai Bazon <mishoo@localhost.localdomain>
2003-09-17 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: fixed error in section 3.
2003-08-01 Mihai Bazon <mishoo@localhost.localdomain>
2003-08-01 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-jp.js: added Japanese translation
2003-07-16 Mihai Bazon <mishoo@localhost.localdomain>
2003-07-16 Mihai Bazon <mihai_bazon@yahoo.com>
* simple-1.html: fixed problem with first example [IE,Opera]
2003-07-09 Mihai Bazon <mishoo@localhost.localdomain>
2003-07-09 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/Calendar.setup.tex: fixed typo (closing parenthesis)
* lang/calendar-de.js:
added German translation, thanks to Hartwig Weinkauf
2003-07-08 Mihai Bazon <mishoo@localhost.localdomain>
2003-07-08 Mihai Bazon <mihai_bazon@yahoo.com>
* cal.html: added link to release-notes
@ -368,7 +629,7 @@
* calendar.js: added semicolon to make the code "compressible"
2003-07-06 Mihai Bazon <mishoo@localhost.localdomain>
2003-07-06 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/reference.tex: spell checked
@ -378,7 +639,7 @@
* doc/html/reference.css: minor eye-candy tweaks
2003-07-05 Mihai Bazon <mishoo@localhost.localdomain>
2003-07-05 Mihai Bazon <mihai_bazon@yahoo.com>
* doc/html/Calendar.setup.html.tex, doc/html/makedoc.sh, doc/html/reference.css, doc/html/reference.t2p, doc/hyperref.cfg, doc/makedoc.sh, doc/reference.tex, doc/Calendar.setup.tex, doc/Calendar.setup.pdf.tex:
full documentation in LaTeX, for PDF and HTML formats
@ -398,7 +659,7 @@
* calendar-setup.html: removed: the documentation is unified
2003-07-03 Mihai Bazon <mishoo@localhost.localdomain>
2003-07-03 Mihai Bazon <mihai_bazon@yahoo.com>
* cal.html: some links to newly added files
@ -407,7 +668,7 @@
* lang/calendar-zh.js: added simplified chinese (thanks ATang)
2003-07-02 Mihai Bazon <mishoo@localhost.localdomain>
2003-07-02 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js: * "yy"-related... [small fix]
@ -419,12 +680,12 @@
* calendar.js: * fixed bug when in single click mode
* added alignment options to "showAtElement" member function
2003-06-25 Mihai Bazon <mishoo@localhost.localdomain>
2003-06-25 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-pt.js:
added portugese translation (thanks Nuno Barreto)
2003-06-24 Mihai Bazon <mishoo@localhost.localdomain>
2003-06-24 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
call user handler when the date was changed using the keyboard
@ -435,14 +696,14 @@
* lang/calendar-hr-utf8.js:
added croatian translation in utf8 (thanks Krunoslav Zubrinic)
2003-06-23 Mihai Bazon <mishoo@localhost.localdomain>
2003-06-23 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-hu.js: added hungarian translation
* lang/calendar-hr.js:
added croatian translation (thanks to Krunoslav Zubrinic)
2003-06-22 Mihai Bazon <mishoo@localhost.localdomain>
2003-06-22 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
* #723335 fixed (clicking TODAY will not select the today date if the
@ -457,30 +718,30 @@
calendar in single-click mode)
* bug #703814 fixed
2003-04-09 Mihai Bazon <mishoo@localhost.localdomain>
2003-04-09 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-tr.js: added turkish lang file
2003-03-19 Mihai Bazon <mishoo@localhost.localdomain>
2003-03-19 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-ru.js: russian translation added
* lang/calendar-no.js: norwegian translation added
2003-03-15 Mihai Bazon <mishoo@localhost.localdomain>
2003-03-15 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-no.js: norwegian translation
2003-03-12 Mihai Bazon <mishoo@localhost.localdomain>
2003-03-12 Mihai Bazon <mihai_bazon@yahoo.com>
* lang/calendar-pl.js: added polish translation
2003-03-11 Mihai Bazon <mishoo@localhost.localdomain>
2003-03-11 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js:
bugfix in parseDate (added base to parseInt, thanks Alan!)
2003-03-05 Mihai Bazon <mishoo@localhost.localdomain>
2003-03-05 Mihai Bazon <mihai_bazon@yahoo.com>
* calendar.js, lang/calendar-br.js, lang/calendar-ca.js, lang/calendar-cs-win.js, lang/calendar-da.js, lang/calendar-du.js, lang/calendar-el.js, lang/calendar-en.js, lang/calendar-es.js, lang/calendar-fr.js, lang/calendar-it.js, lang/calendar-nl.js, lang/calendar-ro.js, lang/calendar-sp.js, lang/calendar-sw.js:
New file.

View File

@ -1,7 +1,7 @@
The DHTML Calendar
-------------------
Author: Mihai Bazon, <mishoo@infoiasi.ro>
Author: Mihai Bazon, <mihai_bazon@yahoo.com>
http://dynarch.com/mishoo/
This program is free software published under the

View File

@ -3,8 +3,8 @@
div.calendar { position: relative; }
.calendar, .calendar table {
border: 0px solid #556;
font-size: 10pt;
border: 1px solid #556;
font-size: 11px;
color: #000;
cursor: default;
background: #eef;
@ -170,6 +170,7 @@ div.calendar { position: relative; }
background: #def;
color: #000;
font-size: 90%;
z-index: 100;
}
.calendar .combo .label,

View File

@ -171,6 +171,7 @@ div.calendar { position: relative; }
background: #def;
color: #000;
font-size: 90%;
z-index: 100;
}
.calendar .combo .label,

View File

@ -163,6 +163,7 @@ div.calendar { position: relative; }
background: #ffe;
color: #000;
font-size: 90%;
z-index: 100;
}
.calendar .combo .label,

View File

@ -167,6 +167,7 @@ div.calendar { position: relative; }
background: #efd;
color: #000;
font-size: 90%;
z-index: 100;
}
.calendar .combo .label,

View File

@ -35,19 +35,13 @@
* 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
* titleFormat | the format to show the month in the title, default '%B, %Y'
* 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.
* disableFirstDowChange| (true/false) disables manual change of first day of week
* 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)
* flatWeekCallback| gets called if a weeknumber get clicked, params are the cal-object and a date-object representing the start of the week
* flatWeekTTip | Tooltip for the weeknumber (shown only if flatWeekCallback is set)
* flatMonthCallback| gets called if a month (title) get clicked, params are the cal-object and a date-object representing the start of the month
* flatMonthTTip | Tooltip for the month (shown only if flatMonthCallback is set)
* 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]
@ -74,21 +68,16 @@ Calendar.setup = function (params) {
param_default("eventName", "click");
param_default("ifFormat", "%Y/%m/%d");
param_default("daFormat", "%Y/%m/%d");
param_default("titleFormat", "%B, %Y");
param_default("singleClick", true);
param_default("disableFunc", null);
param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined
param_default("firstDay", 0); // defaults to "Sunday" first
param_default("disableFirstDowChange", false);
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("flatWeekCallback",null);
param_default("flatWeekTTip", null);
param_default("flatmonthCallback",null);
param_default("flatmonthTTip", null);
param_default("onSelect", null);
param_default("onClose", null);
param_default("onUpdate", null);
@ -100,6 +89,7 @@ Calendar.setup = function (params) {
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) {
@ -107,7 +97,7 @@ Calendar.setup = function (params) {
params[tmp[i]] = document.getElementById(params[tmp[i]]);
}
}
if (!(params.flat || params.inputField || params.displayArea || params.button)) {
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;
}
@ -115,13 +105,6 @@ Calendar.setup = function (params) {
function onSelect(cal) {
var p = cal.params;
var update = (cal.dateClicked || p.electric);
if (update && p.flat) {
if (typeof p.flatCallback == "function")
p.flatCallback(cal);
else
alert("No flatCallback given -- doing nothing.");
return false;
}
if (update && p.inputField) {
p.inputField.value = cal.date.print(p.ifFormat);
if (typeof p.inputField.onchange == "function")
@ -129,10 +112,14 @@ Calendar.setup = function (params) {
}
if (update && p.displayArea)
p.displayArea.innerHTML = cal.date.print(p.daFormat);
if (update && p.singleClick && cal.dateClicked)
cal.callCloseHandler();
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) {
@ -143,13 +130,20 @@ Calendar.setup = function (params) {
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.showsOtherMonths = params.showOthers;
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;
@ -161,6 +155,8 @@ Calendar.setup = function (params) {
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,
@ -175,15 +171,23 @@ Calendar.setup = function (params) {
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.parseDate(dateEl.value || dateEl.innerHTML);
cal.refresh();
if (!params.position)
cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
@ -191,4 +195,6 @@ Calendar.setup = function (params) {
cal.showAt(params.position[0], params.position[1]);
return false;
};
return cal;
};

View File

@ -18,4 +18,4 @@
* 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("firstDay",0);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);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.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.flat){if(typeof p.flatCallback=="function")p.flatCallback(cal);else alert("No flatCallback given -- doing nothing.");return false;}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&&p.singleClick&&cal.dateClicked)cal.callCloseHandler();if(update&&typeof p.onUpdate=="function")p.onUpdate(cal);};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.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.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(!(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();}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.parseDate(dateEl.value||dateEl.innerHTML);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;};};
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&&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;};

View File

@ -190,6 +190,7 @@
color: MenuText;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,

View File

@ -177,6 +177,7 @@ progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#FFFFFF,
background: #ffe;
color: #000;
font-size: smaller;
z-index: 100;
}
.combo .label,

View File

@ -206,6 +206,7 @@
background: #e4e0d8;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,

View File

@ -206,6 +206,7 @@
background: #e4d8e0;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,

View File

@ -200,6 +200,7 @@
background: #d8e0e4;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,

View File

@ -206,6 +206,7 @@
background: #d8e4e0;
font-size: 90%;
padding: 1px;
z-index: 100;
}
.calendar .combo .label,

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,193 @@
body {
color: black;
/* background-color: #e5e5e5;*/
background-color: #ffffff;
/*background-color: beige;*/
margin-top: 2em;
margin-left: 8%;
margin-right: 8%;
}
h1,h2,h3,h4,h5,h6 {
margin-top: .5em;
}
.title {
font-size: 200%;
font-weight: normal;
}
.partheading {
font-size: 100%;
}
.chapterheading {
font-size: 100%;
}
.beginsection {
font-size: 110%;
}
.tiny {
font-size: 40%;
}
.scriptsize {
font-size: 60%;
}
.footnotesize {
font-size: 75%;
}
.small {
font-size: 90%;
}
.normalsize {
font-size: 100%;
}
.large {
font-size: 120%;
}
.largecap {
font-size: 150%;
}
.largeup {
font-size: 200%;
}
.huge {
font-size: 300%;
}
.hugecap {
font-size: 350%;
}
pre {
margin-left: 2em;
}
blockquote {
margin-left: 2em;
}
ol {
list-style-type: decimal;
}
ol ol {
list-style-type: lower-alpha;
}
ol ol ol {
list-style-type: lower-roman;
}
ol ol ol ol {
list-style-type: upper-alpha;
}
/*
.verbatim {
color: #4d0000;
}
*/
tt i {
font-family: serif;
}
.verbatim em {
font-family: serif;
}
.scheme em {
font-family: serif;
color: black;
}
.scheme {
color: brown;
}
.scheme .keyword {
color: #990000;
font-weight: bold;
}
.scheme .builtin {
color: #990000;
}
.scheme .variable {
color: navy;
}
.scheme .global {
color: purple;
}
.scheme .selfeval {
color: green;
}
.scheme .comment {
color: teal;
}
.schemeresponse {
color: green;
}
.navigation {
color: red;
text-align: right;
font-size: medium;
font-style: italic;
}
.disable {
/* color: #e5e5e5; */
color: gray;
}
.smallcaps {
font-size: 75%;
}
.smallprint {
color: gray;
font-size: 75%;
text-align: right;
}
/*
.smallprint hr {
text-align: left;
width: 40%;
}
*/
.footnoterule {
text-align: left;
width: 40%;
}
.colophon {
color: gray;
font-size: 80%;
text-align: right;
}
.colophon a {
color: gray;
}

File diff suppressed because it is too large Load Diff

View File

@ -6,11 +6,12 @@
<head>
<meta http-equiv="content-type" content="text/xml; charset=utf-8" />
<title>The Coolest DHTML Calendar - Online Demo</title>
<link rel="stylesheet" type="text/css" media="all" href="skins/aqua/theme.css" title="Aqua" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-blue.css" title="winter" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-blue2.css" title="blue" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-brown.css" title="summer" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-green.css" title="green" />
<link rel="stylesheet" type="text/css" media="all" href="calendar-win2k-1.css" title="win2k-1" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-win2k-1.css" title="win2k-1" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-win2k-2.css" title="win2k-2" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-win2k-cold-1.css" title="win2k-cold-1" />
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-win2k-cold-2.css" title="win2k-cold-2" />
@ -60,7 +61,7 @@ function selected(cal, date) {
function closeHandler(cal) {
cal.hide(); // hide the calendar
// cal.destroy();
calendar = null;
_dynarch_popupCalendar = null;
}
// This function shows the calendar under the element having the given id.
@ -68,12 +69,12 @@ function closeHandler(cal) {
// calendar if the click was outside.
function showCalendar(id, format, showsTime, showsOtherMonths) {
var el = document.getElementById(id);
if (calendar != null) {
if (_dynarch_popupCalendar != null) {
// we already have some calendar created
calendar.hide(); // so we hide it first.
_dynarch_popupCalendar.hide(); // so we hide it first.
} else {
// first-time call, create the calendar.
var cal = new Calendar(true, null, selected, closeHandler);
var cal = new Calendar(1, null, selected, closeHandler);
// uncomment the following line to hide the week numbers
// cal.weekNumbers = false;
if (typeof showsTime == "string") {
@ -83,18 +84,18 @@ function showCalendar(id, format, showsTime, showsOtherMonths) {
if (showsOtherMonths) {
cal.showsOtherMonths = true;
}
calendar = cal; // remember it in the global var
_dynarch_popupCalendar = cal; // remember it in the global var
cal.setRange(1900, 2070); // min/max year allowed.
cal.create();
}
calendar.setDateFormat(format); // set the specified date format
calendar.parseDate(el.value); // try to parse the text in field
calendar.sel = el; // inform it what input field we use
_dynarch_popupCalendar.setDateFormat(format); // set the specified date format
_dynarch_popupCalendar.parseDate(el.value); // try to parse the text in field
_dynarch_popupCalendar.sel = el; // inform it what input field we use
// the reference element that we pass to showAtElement is the button that
// triggers the calendar. In this example we align the calendar bottom-right
// to the button.
calendar.showAtElement(el.nextSibling, "Br"); // show the calendar
_dynarch_popupCalendar.showAtElement(el.nextSibling, "Br"); // show the calendar
return false;
}
@ -128,7 +129,7 @@ function showFlatCalendar() {
var parent = document.getElementById("display");
// construct a calendar giving only the "selected" handler.
var cal = new Calendar(true, null, flatSelected);
var cal = new Calendar(0, null, flatSelected);
// hide week numbers
cal.weekNumbers = false;
@ -163,13 +164,15 @@ padding: 0px 5px; cursor: default; font-size: 80%; }
</head>
<body onload="showFlatCalendar()">
<h2><a href="http://dynarch.com/mishoo/calendar.epl"
title="Visit the project website">jscalendar</a>-0.9.6
"Keep cool but don't freeze"</h2>
<h2><a href="http://www.dynarch.com/projects/calendar/"
title="Visit the project website">jscalendar</a>-1.0
"It is happening again"</h2>
<p>
<div style="float: right; border: 1px solid #b87; padding: 2px; font-size: 90%; background: #ffb;">
Theme:<br />
<a href="#" id="defaultTheme" onclick="return setActiveStyleSheet(this, 'Aqua');">Aqua</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'winter');">winter</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'blue');">blue</a>
@ -178,7 +181,7 @@ Theme:<br />
|
<a href="#" onclick="return setActiveStyleSheet(this, 'green');">green</a>
<br />
<a href="#" id="defaultTheme" onclick="return setActiveStyleSheet(this, 'win2k-1');">win2k-1</a>
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-1');">win2k-1</a>
|
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-2');">win2k-2</a>
|
@ -188,7 +191,7 @@ Theme:<br />
<br />
<a href="#" onclick="return setActiveStyleSheet(this, 'system');">system</a>
<script type="text/javascript">
setActiveStyleSheet(document.getElementById("defaultTheme"), "win2k-1");
setActiveStyleSheet(document.getElementById("defaultTheme"), "Aqua");
</script>
</div>
<a href="release-notes.html">Release notes</a>.
@ -196,12 +199,15 @@ setActiveStyleSheet(document.getElementById("defaultTheme"), "win2k-1");
Set it up in minutes:
<a href="simple-1.html">popup calendar</a>,
<a href="simple-2.html">flat calendar</a>.
Other samples:
<a href="simple-3.html">special days</a>,
<a href="dayinfo.html">day info</a>,
<a href="multiple-dates.html">multiple dates selection</a>
<br />
Documentation:
<a href="doc/html/reference.html">HTML</a>,
<a href="doc/reference.pdf">PDF</a>.
<br />
<b style="color: red">Donate! Keep me on it! Details on <a href="http://dynarch.com/mishoo/calendar.epl">the Calendar website</a>.</b>
</p>
<div style="padding-left:20px; font-size: 90%; font-style: italic;">
@ -259,18 +265,9 @@ double click
</form>
<p>This is release <b>0.9.6</b>. Works on MSIE/Win 5.0 or better (really),
Opera 7, Mozilla, Netscape 6.x, 7.0 and all other Gecko-s, Konqueror and
Safari.</p>
<p class="help">You can click on "Mo"/"Su" (first day name displayed) to
change the first day of week (Sunday/Monday) (since 0.8 this is also mapped
on the "-" button in the top-left corner). Use the navigation buttons
("&lt;&lt;", "&lt;", "Today", "&gt;", "&gt;&gt;") to move to the prev/next
year/month. Keep the mouse button pressed for a short time over one of
these buttons to get a menu for faster selection. You can drag the "status
bar" (that's where the tooltips appear) or title bar (that's where the
currently selected month/year shows up) to move the whole calendar.</p>
<p>This is release <b>1.0</b>. Works on MSIE/Win 5.0 or better (really),
Opera 7+, Mozilla, Firefox, Netscape 6.x, 7.0 and all other Gecko-s,
Konqueror and Safari.</p>
<h4>Keyboard navigation</h4>
@ -294,7 +291,7 @@ dates (only for popup calendars; does <em>not</em> work with Opera
</td>
<td style="padding: 5px; margin: 5px; border: 1px solid #984; background: #ed9; width: 15em;">
<td style="padding: 5px; margin: 5px; border: 1px solid #984; background: #ed9; width: 19em;">
<div style="background: #984; color: #fea; font-weight: bold; padding: 2px; text-align: center">
Flat calendar
@ -305,9 +302,9 @@ dates (only for popup calendars; does <em>not</em> work with Opera
<!-- the calendar will be inserted here -->
<div id="display" style="float: right; clear: both;"></div>
<div id="preview" style="font-size: 80%; text-align: center; padding: 2px"></div>
<div id="preview" style="font-size: 80%; text-align: center; padding: 2px">&nbsp;</div>
<p style="width: 12em"><small>
<p style="clear: both;"><small>
The example above uses the <code>setDisabledHandler()</code> member function
to setup a handler that would only enable days withing a range of 10 days,
forward or backward, from the current date.
@ -321,13 +318,13 @@ dates (only for popup calendars; does <em>not</em> work with Opera
</table>
<hr /><address>
&copy; <a href="http://dynarch.com">dynarch.com</a> 2002-2003 <br />
Author: <a href="http://dynarch.com/mishoo/">Mihai
&copy; <a href="http://www.dynarch.com/">dynarch.com</a> 2002-2005 <br />
Author: <a href="http://www.bazon.net/mishoo/">Mihai
Bazon</a><br /> Distributed under the <a
href="http://www.gnu.org/licenses/lgpl.html">GNU LGPL</a>.</address>
<p style="font-size: smaller">If you use this script on a public page it
would be nice if you would <a href="mailto:mishoo@infoiasi.ro">let me
<p style="font-size: smaller">If you use this script on a public page we
would love it if you would <a href="http://www.dynarch.com/contact.html">let us
know</a>.</p>
</body></html>

View File

@ -1,17 +1,45 @@
// ** I18N
// ** 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",
"Terça",
"Quarta",
"Quinta",
"Sexta",
"Sábado",
"Sado",
"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",
"Março",
"Abril",
"Maio",
"Junho",
@ -22,24 +50,59 @@ Calendar._MN = new Array
"Novembro",
"Dezembro");
// short month names
// [No changes using default values]
// tooltips
Calendar._TT = {};
Calendar._TT["TOGGLE"] = "Altera primeiro dia da semana";
Calendar._TT["PREV_YEAR"] = "Ano anterior(hold for menu)";
Calendar._TT["PREV_MONTH"] = "Mês anterior (hold for menu)";
Calendar._TT["GO_TODAY"] = "Hoje";
Calendar._TT["NEXT_MONTH"] = "Mês seguinte (hold for menu)";
Calendar._TT["NEXT_YEAR"] = "ano seguinte (hold for menu)";
Calendar._TT["SEL_DATE"] = "Seleciona uma data";
Calendar._TT["DRAG_TO_MOVE"] = "Arrasta calendário";
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)";
Calendar._TT["MON_FIRST"] = "Inicia na segunda-feira";
Calendar._TT["SUN_FIRST"] = "Inicia no domingo";
// 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"] = "dd-mm-y";
Calendar._TT["TT_DATE_FORMAT"] = "DD, dd de MM de y";
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:";

View File

@ -1,4 +1,15 @@
// ** 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",
@ -8,6 +19,31 @@ Calendar._DN = new Array
"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",
@ -22,24 +58,66 @@ Calendar._MN = new Array
"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["TOGGLE"] = "Canvia el primer dia de la setmana";
Calendar._TT["PREV_YEAR"] = "Any anterior (mantenir per a menu)";
Calendar._TT["PREV_MONTH"] = "Mes anterior (mantenir per a menu)";
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ó 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é el ratolí apretat en qualsevol dels anteriors per sel.lecció 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ó 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üent (mantenir per a menu)";
Calendar._TT["NEXT_YEAR"] = "Any següent (mantenir per a menu)";
Calendar._TT["SEL_DATE"] = "Seleccionar data";
Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar per a moure";
Calendar._TT["NEXT_MONTH"] = "Mes següent (Mantenir per menu)";
Calendar._TT["NEXT_YEAR"] = "Any següent (Mantenir per menu)";
Calendar._TT["SEL_DATE"] = "Sel.leccionar data";
Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar per moure";
Calendar._TT["PART_TODAY"] = " (avui)";
Calendar._TT["MON_FIRST"] = "Mostrar dilluns primer";
Calendar._TT["SUN_FIRST"] = "Mostrar diumenge primer";
Calendar._TT["CLOSE"] = "Tancar";
// 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"] = "dd-mm-yy";
Calendar._TT["TT_DATE_FORMAT"] = "D, M d";
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "sem";
Calendar._TT["WK"] = "st";
Calendar._TT["TIME"] = "Hora:";

View File

@ -3,16 +3,18 @@
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._DN3 = 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._MN3 = new Array('Led','Úno','Bøe','Dub','Kvì','Èrv','Èvc','Srp','Záø','Øíj','Lis','Pro');
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)";
@ -23,12 +25,41 @@ 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ž jako první Pondìlí";
Calendar._TT["SUN_FIRST"] = "Ukaž jako první Nedìli";
//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"] = "DD, 5.MM y";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "wk";
Calendar._TT["TIME"] = "Èas:";

View File

@ -1,26 +1,77 @@
// ** 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");
("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
("January",
"Februar",
"Marts",
"April",
"Maj",
"Juni",
"Juli",
"August",
"September",
"Oktober",
"November",
"December");
("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 = {};
@ -28,36 +79,45 @@ Calendar._TT["INFO"] = "Om Kalenderen";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"For den seneste version besøg: http://dynarch.com/mishoo/calendar.epl\n" +
"Distribueret under GNU LGPL. Se http://gnu.org/licenses/lgpl.html for detajler." +
"(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.";
"- 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.";
"- 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["TOGGLE"] = "Skift første ugedag";
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["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)";
Calendar._TT["MON_FIRST"] = "Vis mandag først";
Calendar._TT["SUN_FIRST"] = "Vis søndag først";
Calendar._TT["CLOSE"] = "Luk vinduet";
// 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"] = "dd-mm-yy";
Calendar._TT["TT_DATE_FORMAT"] = "%d. %b, %Y";
Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "wk";
Calendar._TT["WK"] = "Uge";
Calendar._TT["TIME"] = "Tid:";

View File

@ -1,18 +1,13 @@
// Author: Hartwig Weinkauf h_weinkauf@gmx.de
// <20>erarbeitet und fehlende Texte hinzugefgt von Gerhard Neinert (gerhard at neinert punkt de)
// Feel free to use / redistribute under the GNU LGPL.
// ** I18N
// short day names
Calendar._SDN = new Array
("So",
"Mo",
"Di",
"Mi",
"Do",
"Fr",
"Sa",
"So");
// 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
@ -25,8 +20,28 @@ Calendar._DN = new Array
"Samstag",
"Sonntag");
// short day names only use 2 letters instead of 3
Calendar._SDN_len = 2;
// 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
@ -49,7 +64,7 @@ Calendar._SMN = new Array
"Feb",
"M\u00e4r",
"Apr",
"Mai",
"May",
"Jun",
"Jul",
"Aug",
@ -60,41 +75,50 @@ Calendar._SMN = new Array
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "\u00DCber dieses Kalendarmodul";
Calendar._TT["ABOUT"] =
"DHTML Datum/Zeit Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Donwload neueste Version: http://dynarch.com/mishoo/calendar.epl\n" +
"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" +
"Datumsauswahl:\n" +
"- Jahr ausw\u00e4hlen mit \xab und \xbb\n" +
"- Monat ausw\u00e4hlen mit " + String.fromCharCode(0x2039) + " und " + String.fromCharCode(0x203a) + "\n" +
"- Fr Auswahl aus Liste Maustaste gedr\u00fcckt halten.";
"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 w\u00e4hlen:\n" +
"- Stunde/Minute weiter mit Mausklick\n" +
"- Stunde/Minute zurck mit Shift-Mausklick\n" +
"- oder f\u00fcr schnellere Auswahl nach links oder rechts ziehen.";
"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"] = "Jahr zur\u00fcck (halten -> Auswahlmen\u00fc)";
Calendar._TT["PREV_MONTH"] = "Monat zur\u00fcck (halten -> Auswahlmen\u00fc)";
Calendar._TT["GO_TODAY"] = "Gehe zum heutigen Datum";
Calendar._TT["NEXT_MONTH"] = "Monat vor (halten -> Auswahlmen\u00fc)";
Calendar._TT["NEXT_YEAR"] = "Jahr vor (halten -> Auswahlmen\u00fc)";
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"] = "Klicken und halten um zu verschieben";
Calendar._TT["PART_TODAY"] = " (heute)";
Calendar._TT["MON_FIRST"] = "Wochenanzeige mit Montag beginnen";
Calendar._TT["SUN_FIRST"] = "Wochenanzeige mit Sonntag beginnen";
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"] = "dd-mm-y";
Calendar._TT["TT_DATE_FORMAT"] = "Datum ausw\u00e4hlen";
Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "KW";
Calendar._TT["WK"] = "wk";
Calendar._TT["TIME"] = "Zeit:";

View File

@ -53,8 +53,8 @@ Calendar._TT["INFO"] = "Για το ημερολόγιο";
Calendar._TT["ABOUT"] =
"Επιλογέας ημερομηνίας/ώρας σε DHTML\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Για τελευταία έκδοση: http://dynarch.com/mishoo/calendar.epl\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" +

View File

@ -1,7 +1,7 @@
// ** I18N
// Calendar EN language
// Author: Mihai Bazon, <mishoo@infoiasi.ro>
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
// Encoding: any
// Distributed under the same terms as the calendar itself.
@ -43,6 +43,10 @@ Calendar._SDN = new Array
"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",
@ -79,8 +83,8 @@ Calendar._TT["INFO"] = "About the calendar";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"For latest version visit: http://dynarch.com/mishoo/calendar.epl\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" +

View File

@ -1,8 +1,10 @@
// ** I18N
// Calendar EN language
// Author: Mihai Bazon, <mishoo@infoiasi.ro>
// Encoding: any
// 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
@ -14,10 +16,10 @@ Calendar._DN = new Array
("Domingo",
"Lunes",
"Martes",
"Miircoles",
"Miércoles",
"Jueves",
"Viernes",
"Sabado",
"Sábado",
"Domingo");
// Please note that the following array of short day names (and the same goes
@ -37,12 +39,16 @@ Calendar._SDN = new Array
("Dom",
"Lun",
"Mar",
"Mii",
"Mié",
"Jue",
"Vie",
"Sab",
"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",
@ -79,36 +85,45 @@ Calendar._TT["INFO"] = "Acerca del calendario";
Calendar._TT["ABOUT"] =
"Selector DHTML de Fecha/Hora\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Para conseguir la zltima versisn visite: http://dynarch.com/mishoo/calendar.epl\n" +
"Distribuido bajo licencia GNU LGPL. Visite http://gnu.org/licenses/lgpl.html para mas detalles." +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"Para conseguir la última versió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" +
"Seleccisn de fecha:\n" +
"- Use los botones \xab, \xbb para seleccionar el aqo\n" +
"Selecció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 ratsn en cualquiera de estos botones para una seleccisn rapida.";
"- Mantenga pulsado el ratón en cualquiera de estos botones para una selección rápida.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Seleccisn de hora:\n" +
"Selección de hora:\n" +
"- Pulse en cualquiera de las partes de la hora para incrementarla\n" +
"- s pulse las mayzsculas mientras hace clic para decrementarla\n" +
"- s haga clic y arrastre el ratsn para una seleccisn mas rapida.";
"- o pulse las mayúsculas mientras hace clic para decrementarla\n" +
"- o haga clic y arrastre el ratón para una selección más rápida.";
Calendar._TT["PREV_YEAR"] = "Aqo anterior (mantener para menu)";
Calendar._TT["PREV_MONTH"] = "Mes anterior (mantener para menu)";
Calendar._TT["PREV_YEAR"] = "Año anterior (mantener para menú)";
Calendar._TT["PREV_MONTH"] = "Mes anterior (mantener para menú)";
Calendar._TT["GO_TODAY"] = "Ir a hoy";
Calendar._TT["NEXT_MONTH"] = "Mes siguiente (mantener para menu)";
Calendar._TT["NEXT_YEAR"] = "Aqo siguiente (mantener para menu)";
Calendar._TT["NEXT_MONTH"] = "Mes siguiente (mantener para menú)";
Calendar._TT["NEXT_YEAR"] = "Año siguiente (mantener para menú)";
Calendar._TT["SEL_DATE"] = "Seleccionar fecha";
Calendar._TT["DRAG_TO_MOVE"] = "Arrastrar para mover";
Calendar._TT["PART_TODAY"] = " (hoy)";
Calendar._TT["MON_FIRST"] = "Mostrar lunes primero";
Calendar._TT["SUN_FIRST"] = "Mostrar domingo primero";
// 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"] = "(Mayzscula-)Clic o arrastre para cambiar valor";
Calendar._TT["TIME_PART"] = "(Mayú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:";

View File

@ -63,8 +63,8 @@ Calendar._TT["INFO"] = "Tietoja kalenterista";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Uusin versio osoitteessa: http://dynarch.com/mishoo/calendar.epl\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" +

View File

@ -1,4 +1,17 @@
// ** 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",
@ -8,6 +21,31 @@ Calendar._DN = new Array
"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",
@ -21,15 +59,8 @@ Calendar._MN = new Array
"Octobre",
"Novembre",
"Décembre");
Calendar._SDN = new Array
("Lun",
"Mar",
"Mer",
"Jeu",
"Thu",
"Ven",
"Sam",
"Dim");
// short month names
Calendar._SMN = new Array
("Jan",
"Fev",
@ -46,41 +77,49 @@ Calendar._SMN = new Array
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "A propos du calendrier";
Calendar._TT["ABOUT"] =
"DHTML Date/Heure Selecteur\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Pour la derniere version visitez: http://dynarch.com/mishoo/calendar.epl\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é 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 un selection plus rapide";
"- Garder la souris sur n'importe quels boutons pour une selection plus rapide";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Selection de l\'heure:\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 un selection plus rapide";
"- ou clic et glisser-deplacer pour une selection plus rapide";
Calendar._TT["TOGGLE"] = "Changer le premier jour de la semaine";
Calendar._TT["PREV_YEAR"] = "Année préc. (maintenir pour menu)";
Calendar._TT["PREV_MONTH"] = "Mois préc. (maintenir pour menu)";
Calendar._TT["GO_TODAY"] = "Atteindre date du jour";
Calendar._TT["GO_TODAY"] = "Atteindre la date du jour";
Calendar._TT["NEXT_MONTH"] = "Mois suiv. (maintenir pour menu)";
Calendar._TT["NEXT_YEAR"] = "Année suiv. (maintenir pour menu)";
Calendar._TT["SEL_DATE"] = "Choisir une date";
Calendar._TT["SEL_DATE"] = "Sélectionner une date";
Calendar._TT["DRAG_TO_MOVE"] = "Déplacer";
Calendar._TT["PART_TODAY"] = " (Aujourd'hui)";
Calendar._TT["MON_FIRST"] = "Commencer par lundi";
Calendar._TT["SUN_FIRST"] = "Commencer par dimanche";
// 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 %e %B %Y";
Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "sem";
Calendar._TT["WK"] = "Sem.";
Calendar._TT["TIME"] = "Heure :";

View File

@ -1,4 +1,16 @@
// ** 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árnap",
"Hétfõ",
@ -8,6 +20,31 @@ Calendar._DN = new Array
"Péntek",
"Szombat",
"Vasá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ár",
"február",
@ -22,9 +59,41 @@ Calendar._MN = new Array
"november",
"december");
// short month names
Calendar._SMN = new Array
("jan",
"feb",
"már",
"ápr",
"máj",
"jún",
"júl",
"aug",
"sze",
"okt",
"nov",
"dec");
// tooltips
Calendar._TT = {};
Calendar._TT["TOGGLE"] = "A hét elsõ napjának beállítása";
Calendar._TT["INFO"] = "A kalendáriumról";
Calendar._TT["ABOUT"] =
"DHTML dátum/idõ kiválasztó\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"a legfrissebb verzió megtalálható: 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ás:\n" +
"- használja a \xab, \xbb gombokat az év kiválasztásához\n" +
"- használja a " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " gombokat a hónap kiválasztásához\n" +
"- tartsa lenyomva az egérgombot a gyors választáshoz.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Idõ választás:\n" +
"- kattintva növelheti az idõt\n" +
"- shift-tel kattintva csökkentheti\n" +
"- lenyomva tartva és húzva gyorsabban kiválaszthatja.";
Calendar._TT["PREV_YEAR"] = "Elõzõ év (tartsa nyomva a menühöz)";
Calendar._TT["PREV_MONTH"] = "Elõzõ hónap (tartsa nyomva a menühöz)";
Calendar._TT["GO_TODAY"] = "Mai napra ugrás";
@ -33,13 +102,23 @@ Calendar._TT["NEXT_YEAR"] = "K
Calendar._TT["SEL_DATE"] = "Válasszon dátumot";
Calendar._TT["DRAG_TO_MOVE"] = "Húzza a mozgatáshoz";
Calendar._TT["PART_TODAY"] = " (ma)";
Calendar._TT["MON_FIRST"] = "Hétfõ legyen a hét elsõ napja";
Calendar._TT["SUN_FIRST"] = "Vasárnap legyen a hét elsõ napja";
// 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õ 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ár";
Calendar._TT["TODAY"] = "Ma";
Calendar._TT["TIME_PART"] = "(Shift-)Klikk vagy húzás az érték változtatásához";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
Calendar._TT["TT_DATE_FORMAT"] = "M d, D";
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õ:";

View File

@ -1,13 +1,50 @@
// ** 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ì",
"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",
@ -16,7 +53,7 @@ Calendar._MN = new Array
"Maggio",
"Giugno",
"Luglio",
"Agosto",
"Augosto",
"Settembre",
"Ottobre",
"Novembre",
@ -39,41 +76,49 @@ Calendar._SMN = new Array
// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "a proposito del calendario";
Calendar._TT["INFO"] = "Informazioni sul calendario";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Per le ultime versioni vai a: http://dynarch.com/mishoo/calendar.epl\n" +
"Distribuito su licenza GNU LGPL. Vedi http://gnu.org/licenses/lgpl.html per i dettagli." +
"(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 della data:\n" +
"- Usa i bottoni \xab, \xbb per selezionare l'anno\n" +
"- Usa i bottoni " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per selezionare il mese\n" +
"- Utilizza il mouse per una selezione rapida.";
"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 dell'ora:\n" +
"- Clicca sull'ora visualizzata per aumentarla\n" +
"- o Shift-click per diminuirla\n" +
"- o click a trascina per la selezione rapida.";
"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["TOGGLE"] = "Modifica il primo giorno della settimana";
Calendar._TT["PREV_YEAR"] = "Anno prec. (tieni premuto per menu)";
Calendar._TT["PREV_MONTH"] = "Mese prec. (tieni premuto per menu)";
Calendar._TT["GO_TODAY"] = "Vai a oggi";
Calendar._TT["NEXT_MONTH"] = "Mese succ. (tieni premuto per menu)";
Calendar._TT["NEXT_YEAR"] = "Anno succ. (tieni premuto per menu)";
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 spostare";
Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostarlo";
Calendar._TT["PART_TODAY"] = " (oggi)";
Calendar._TT["MON_FIRST"] = "Parti da lunedì";
Calendar._TT["SUN_FIRST"] = "Parti da domenica";
// 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, %e %b ";
Calendar._TT["TT_DATE_FORMAT"] = "%a:%b:%e";
Calendar._TT["WK"] = "Setti";
Calendar._TT["WK"] = "set";
Calendar._TT["TIME"] = "Ora:";

View File

@ -1,7 +1,7 @@
// ** I18N
// Calendar EN language
// Author: Mihai Bazon, <mishoo@infoiasi.ro>
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
// Translation: Yourim Yi <yyi@yourim.net>
// Encoding: EUC-KR
// lang : ko
@ -82,9 +82,9 @@ Calendar._TT["INFO"] = "calendar 에 대해서";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"\n"+
"최신 버전을 받으시려면 http://dynarch.com/mishoo/calendar.epl 에 방문하세요\n" +
"최신 버전을 받으시려면 http://www.dynarch.com/projects/calendar/ 에 방문하세요\n" +
"\n"+
"GNU LGPL 라이센스로 배포됩니다. \n"+
"라이센스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." +

View File

@ -1,7 +1,7 @@
// ** I18N
// Calendar EN language
// Author: Mihai Bazon, <mishoo@infoiasi.ro>
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
// Translation: Yourim Yi <yyi@yourim.net>
// Encoding: EUC-KR
// lang : ko
@ -82,9 +82,9 @@ Calendar._TT["INFO"] = "calendar
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"\n"+
"최신 버전을 받으시려면 http://dynarch.com/mishoo/calendar.epl 에 방문하세요\n" +
"최신 버전을 받으시려면 http://www.dynarch.com/projects/calendar/ 에 방문하세요\n" +
"\n"+
"GNU LGPL 라이센스로 배포됩니다. \n"+
"라이센스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." +

View File

@ -79,8 +79,8 @@ Calendar._TT["INFO"] = "Apie kalendorių";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Naujausią versiją rasite: http://dynarch.com/mishoo/calendar.epl\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"Naujausią versiją rasite: http://www.dynarch.com/projects/calendar/\n" +
"Platinamas pagal GNU LGPL licenciją. Aplankykite http://gnu.org/licenses/lgpl.html" +
"\n\n" +
"Datos pasirinkimas:\n" +

View File

@ -79,8 +79,8 @@ Calendar._TT["INFO"] = "Apie kalendori
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Naujausià versijà rasite: http://dynarch.com/mishoo/calendar.epl\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"Naujausià versijà rasite: http://www.dynarch.com/projects/calendar/\n" +
"Platinamas pagal GNU LGPL licencijà. Aplankykite http://gnu.org/licenses/lgpl.html" +
"\n\n" +
"Datos pasirinkimas:\n" +

View File

@ -8,6 +8,9 @@ Calendar._DN = new Array
"Vrijdag",
"Zaterdag",
"Zondag");
Calendar._SDN_len = 2;
Calendar._MN = new Array
("Januari",
"Februari",
@ -24,7 +27,25 @@ Calendar._MN = new Array
// tooltips
Calendar._TT = {};
Calendar._TT["TOGGLE"] = "Selecteer de eerste week-dag";
Calendar._TT["INFO"] = "Info";
Calendar._TT["ABOUT"] =
"DHTML Datum/Tijd Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
"Ga voor de meest recente versie naar: http://www.dynarch.com/projects/calendar/\n" +
"Verspreid onder de GNU LGPL. Zie http://gnu.org/licenses/lgpl.html voor details." +
"\n\n" +
"Datum selectie:\n" +
"- Gebruik de \xab \xbb knoppen om een jaar te selecteren\n" +
"- Gebruik de " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " knoppen om een maand te selecteren\n" +
"- Houd de muis ingedrukt op de genoemde knoppen voor een snellere selectie.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Tijd selectie:\n" +
"- Klik op een willekeurig onderdeel van het tijd gedeelte om het te verhogen\n" +
"- of Shift-klik om het te verlagen\n" +
"- of klik en sleep voor een snellere selectie.";
//Calendar._TT["TOGGLE"] = "Selecteer de eerste week-dag";
Calendar._TT["PREV_YEAR"] = "Vorig jaar (ingedrukt voor menu)";
Calendar._TT["PREV_MONTH"] = "Vorige maand (ingedrukt voor menu)";
Calendar._TT["GO_TODAY"] = "Ga naar Vandaag";
@ -33,13 +54,20 @@ Calendar._TT["NEXT_YEAR"] = "Volgend jaar (ingedrukt voor menu)";
Calendar._TT["SEL_DATE"] = "Selecteer datum";
Calendar._TT["DRAG_TO_MOVE"] = "Klik en 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["MON_FIRST"] = "Toon Maandag eerst";
//Calendar._TT["SUN_FIRST"] = "Toon Zondag eerst";
Calendar._TT["DAY_FIRST"] = "Toon %s eerst";
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = "Sluiten";
Calendar._TT["TODAY"] = "Vandaag";
Calendar._TT["TODAY"] = "(vandaag)";
Calendar._TT["TIME_PART"] = "(Shift-)Klik of sleep om de waarde te veranderen";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
Calendar._TT["TT_DATE_FORMAT"] = "DD, d MM";
Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b %Y";
Calendar._TT["WK"] = "wk";
Calendar._TT["TIME"] = "Tijd:";

View File

@ -1,13 +1,49 @@
// ** I18N
// Calendar NO language
// Author: Daniel Holmen, <daniel.holmen@ciber.no>
// 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
("Søndag",
("Søndag",
"Mandag",
"Tirsdag",
"Onsdag",
"Torsdag",
"Fredag",
"Lørdag",
"Søndag");
"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",
@ -22,24 +58,57 @@ Calendar._MN = new Array
"November",
"Desember");
// short month names
Calendar._SMN = new Array
("Jan",
"Feb",
"Mar",
"Apr",
"Mai",
"Jun",
"Jul",
"Aug",
"Sep",
"Okt",
"Nov",
"Des");
// tooltips
Calendar._TT = {};
Calendar._TT["TOGGLE"] = "Skift første ukedag";
Calendar._TT["PREV_YEAR"] = "Et år tilbake (hold for meny)";
Calendar._TT["PREV_MONTH"] = "En måned tilbake (hold for meny)";
Calendar._TT["GO_TODAY"] = "Gå til i dag";
Calendar._TT["NEXT_MONTH"] = "En måned fram (hold for meny)";
Calendar._TT["NEXT_YEAR"] = "Et år fram (hold for meny)";
Calendar._TT["SEL_DATE"] = "Velg dag";
Calendar._TT["DRAG_TO_MOVE"] = "Dra vinduet";
Calendar._TT["PART_TODAY"] = " (i dag)";
Calendar._TT["MON_FIRST"] = "Vis mandag først";
Calendar._TT["SUN_FIRST"] = "Vis søndag først";
Calendar._TT["CLOSE"] = "Lukk vinduet";
Calendar._TT["TODAY"] = "I dag";
Calendar._TT["INFO"] = "Om kalenderen";
Calendar._TT["ABOUT"] =
"DHTML Dato-/Tidsvelger\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For nyeste versjon, gå til: http://www.dynarch.com/projects/calendar/\n" +
"Distribuert under GNU LGPL. Se http://gnu.org/licenses/lgpl.html for detaljer." +
"\n\n" +
"Datovalg:\n" +
"- Bruk knappene \xab og \xbb for å velge år\n" +
"- Bruk knappene " + String.fromCharCode(0x2039) + " og " + String.fromCharCode(0x203a) + " for å velge måned\n" +
"- Hold inne musknappen eller knappene over for raskere valg.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Tidsvalg:\n" +
"- Klikk på en av tidsdelene for å øke den\n" +
"- eller Shift-klikk for å senke verdien\n" +
"- eller klikk-og-dra for raskere valg..";
Calendar._TT["PREV_YEAR"] = "Forrige. år (hold for meny)";
Calendar._TT["PREV_MONTH"] = "Forrige. måned (hold for meny)";
Calendar._TT["GO_TODAY"] = "Gå til idag";
Calendar._TT["NEXT_MONTH"] = "Neste måned (hold for meny)";
Calendar._TT["NEXT_YEAR"] = "Neste år (hold for meny)";
Calendar._TT["SEL_DATE"] = "Velg dato";
Calendar._TT["DRAG_TO_MOVE"] = "Dra for å flytte";
Calendar._TT["PART_TODAY"] = " (idag)";
Calendar._TT["MON_FIRST"] = "Vis mandag først";
Calendar._TT["SUN_FIRST"] = "Vis søndag først";
Calendar._TT["CLOSE"] = "Lukk";
Calendar._TT["TODAY"] = "Idag";
Calendar._TT["TIME_PART"] = "(Shift-)Klikk eller dra for å endre verdi";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
Calendar._TT["TT_DATE_FORMAT"] = "D d. M, y";
Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = "wk";
Calendar._TT["WK"] = "uke";

View File

@ -57,8 +57,8 @@ Calendar._TT["INFO"] = "O kalendarzu";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Aby pobrać najnowszą wersję, odwiedź: http://dynarch.com/mishoo/calendar.epl\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"Aby pobrać najnowszą wersję, odwiedź: http://www.dynarch.com/projects/calendar/\n" +
"Dostępny na licencji GNU LGPL. Zobacz szczegóły na http://gnu.org/licenses/lgpl.html." +
"\n\n" +
"Wybór daty:\n" +

View File

@ -21,8 +21,8 @@ Calendar._TT["INFO"] = "O kalendarzu";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"For latest version visit: http://dynarch.com/mishoo/calendar.epl\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" +
"Wybór daty:\n" +

View File

@ -1,17 +1,53 @@
// ** I18N
// Calendar pt_BR language
// Author: Adalberto Machado, <betosm@terra.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",
"Terca",
"Quarta",
"Quinta",
"Sexta",
"Sábado",
"Sabado",
"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",
"Seg",
"Ter",
"Qua",
"Qui",
"Sex",
"Sab",
"Dom");
// full month names
Calendar._MN = new Array
("Janeiro",
"Fevereiro",
"Março",
"Marco",
"Abril",
"Maio",
"Junho",
@ -22,24 +58,66 @@ Calendar._MN = new Array
"Novembro",
"Dezembro");
// short month names
Calendar._SMN = new Array
("Jan",
"Fev",
"Mar",
"Abr",
"Mai",
"Jun",
"Jul",
"Ago",
"Set",
"Out",
"Nov",
"Dez");
// tooltips
Calendar._TT = {};
Calendar._TT["TOGGLE"] = "Trocar o primeiro dia da semana";
Calendar._TT["PREV_YEAR"] = "Ano Anterior (mantenha para menu)";
Calendar._TT["PREV_MONTH"] = "Mês Anterior (mantenha para menu)";
Calendar._TT["GO_TODAY"] = "Ir para hoje";
Calendar._TT["NEXT_MONTH"] = "Próximo Mês (mantenha para menu)";
Calendar._TT["NEXT_YEAR"] = "Próximo Ano (mantenha para menu)";
Calendar._TT["SEL_DATE"] = "Escolha Data";
Calendar._TT["INFO"] = "Sobre o calendario";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"Ultima versao visite: http://www.dynarch.com/projects/calendar/\n" +
"Distribuido sobre GNU LGPL. Veja http://gnu.org/licenses/lgpl.html para detalhes." +
"\n\n" +
"Selecao de data:\n" +
"- Use os botoes \xab, \xbb para selecionar o ano\n" +
"- Use os botoes " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mes\n" +
"- Segure o botao do mouse em qualquer um desses botoes para selecao rapida.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Selecao de hora:\n" +
"- Clique em qualquer parte da hora para incrementar\n" +
"- ou Shift-click para decrementar\n" +
"- ou clique e segure para selecao rapida.";
Calendar._TT["PREV_YEAR"] = "Ant. ano (segure para menu)";
Calendar._TT["PREV_MONTH"] = "Ant. mes (segure para menu)";
Calendar._TT["GO_TODAY"] = "Hoje";
Calendar._TT["NEXT_MONTH"] = "Prox. mes (segure para menu)";
Calendar._TT["NEXT_YEAR"] = "Prox. ano (segure para menu)";
Calendar._TT["SEL_DATE"] = "Selecione a data";
Calendar._TT["DRAG_TO_MOVE"] = "Arraste para mover";
Calendar._TT["PART_TODAY"] = " (hoje)";
Calendar._TT["MON_FIRST"] = "Mostrar Segunda primeiro";
Calendar._TT["SUN_FIRST"] = "Mostrar Domingo primeiro";
// 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"] = "Mostre %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-)Click ou arraste para mudar valor";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "a-mm-dd";
Calendar._TT["TT_DATE_FORMAT"] = "D, M d";
Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b";
Calendar._TT["WK"] = "sm";
Calendar._TT["TIME"] = "Hora:";

View File

@ -30,8 +30,8 @@ Calendar._TT["INFO"] = "Despre calendar";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Pentru ultima versiune vizitaţi: http://dynarch.com/mishoo/calendar.epl\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"Pentru ultima versiune vizitaţi: http://www.dynarch.com/projects/calendar/\n" +
"Distribuit sub GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Selecţia datei:\n" +

View File

@ -1,45 +1,123 @@
// ** I18N
// Calendar RU language
// Translation: Sly Golovanov, http://golovanov.net, <sly@golovanov.net>
// 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
("Âîñêðåñåíüå",
"Ïîíåäåëüíèê",
"Âòîðíèê",
"Ñðåäà",
"×åòâåðã",
"Ïÿòíèöà",
"Ñóááîòà",
"Âîñêðåñåíüå");
("воскресенье",
"понедельник",
"вторник",
"среда",
"четверг",
"пятница",
"суббота",
"воскресенье");
// 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["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["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"] = "(Shift-)клик или нажать и двигать";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
Calendar._TT["TT_DATE_FORMAT"] = "D, M d";
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%e %b, %a";
Calendar._TT["WK"] = "íåä";
Calendar._TT["WK"] = "нед";
Calendar._TT["TIME"] = "Время:";

View File

@ -59,8 +59,8 @@ Calendar._TT["INFO"] = "O koledarju";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Za zadnjo verzijo pojdine na naslov: http://dynarch.com/mishoo/calendar.epl\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"Za zadnjo verzijo pojdine na naslov: http://www.dynarch.com/projects/calendar/\n" +
"Distribuirano pod GNU LGPL. Poglejte http://gnu.org/licenses/lgpl.html za podrobnosti." +
"\n\n" +
"Izbor datuma:\n" +

View File

@ -64,8 +64,8 @@ Calendar._TT["INFO"] = "O kalendári";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" +
"Poslednú verziu nájdete na: http://dynarch.com/mishoo/calendar.epl\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" +
"Poslednú verziu nájdete na: http://www.dynarch.com/projects/calendar/\n" +
"Distribuované pod GNU LGPL. Viď http://gnu.org/licenses/lgpl.html pre detaily." +
"\n\n" +
"Výber dátumu:\n" +

View File

@ -1,4 +1,15 @@
// ** I18N
// Calendar SP language
// Author: Rafael Velasco <rvu_at_idecnet_dot_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
("Domingo",
"Lunes",
@ -8,6 +19,18 @@ Calendar._DN = new Array
"Viernes",
"Sabado",
"Domingo");
Calendar._SDN = new Array
("Dom",
"Lun",
"Mar",
"Mie",
"Jue",
"Vie",
"Sab",
"Dom");
// full month names
Calendar._MN = new Array
("Enero",
"Febrero",
@ -22,14 +45,29 @@ Calendar._MN = new Array
"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"] = "Información del Calendario";
Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"Nuevas versiones en: http://dynarch.com/mishoo/calendar.epl\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"Nuevas versiones en: http://www.dynarch.com/projects/calendar/\n" +
"Distribuida bajo licencia GNU LGPL. Para detalles vea http://gnu.org/licenses/lgpl.html ." +
"\n\n" +
"Selección de Fechas:\n" +
@ -42,7 +80,6 @@ Calendar._TT["ABOUT_TIME"] = "\n\n" +
"- o presione Shift-click para disminuirlo\n" +
"- o presione click y arrastre del ratón para una selección rapida.";
Calendar._TT["TOGGLE"] = "Primer dia de la semana";
Calendar._TT["PREV_YEAR"] = "Año anterior (Presione para menu)";
Calendar._TT["PREV_MONTH"] = "Mes Anterior (Presione para menu)";
Calendar._TT["GO_TODAY"] = "Ir a Hoy";
@ -51,13 +88,23 @@ Calendar._TT["NEXT_YEAR"] = "A
Calendar._TT["SEL_DATE"] = "Seleccione fecha";
Calendar._TT["DRAG_TO_MOVE"] = "Arrastre y mueva";
Calendar._TT["PART_TODAY"] = " (Hoy)";
Calendar._TT["MON_FIRST"] = "Lunes Primero";
Calendar._TT["SUN_FIRST"] = "Domingo Primero";
// 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"] = "Mostrar %s primero";
// 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"] = "(Shift-)Click o arrastra para cambar el valor";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-yy";
Calendar._TT["DEF_DATE_FORMAT"] = "%dd-%mm-%yy";
Calendar._TT["TT_DATE_FORMAT"] = "%A, %e de %B de %Y";
Calendar._TT["WK"] = "Smn";
Calendar._TT["WK"] = "Sm";
Calendar._TT["TIME"] = "Hora:";

View File

@ -1,7 +1,7 @@
// ** I18N
// Calendar SV language (Swedish, svenska)
// Author: Mihai Bazon, <mishoo@infoiasi.ro>
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
// Translation team: <sv@li.org>
// Translator: Leonard Norrgård <leonard.norrgard@refactor.fi>
// Last translator: Leonard Norrgård <leonard.norrgard@refactor.fi>
@ -58,8 +58,8 @@ Calendar._TT["INFO"] = "Om kalendern";
Calendar._TT["ABOUT"] =
"DHTML Datum/tid-väljare\n" +
"(c) dynarch.com 2002-2003\n" + // don't translate this this ;-)
"För senaste version gå till: http://dynarch.com/mishoo/calendar.epl\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"För senaste version gå till: http://www.dynarch.com/projects/calendar/\n" +
"Distribueras under GNU LGPL. Se http://gnu.org/licenses/lgpl.html för detaljer." +
"\n\n" +
"Val av datum:\n" +

View File

@ -1,4 +1,11 @@
// ** Translated by ATang ** I18N
// ** I18N
// Calendar ZH language
// Author: muziq, <muziq@sina.com>
// Encoding: GB2312 or GBK
// Distributed under the same terms as the calendar itself.
// full day names
Calendar._DN = new Array
("星期日",
"星期一",
@ -8,6 +15,31 @@ 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
("一月",
"二月",
@ -22,24 +54,66 @@ Calendar._MN = new Array
"十一月",
"十二月");
// short month names
Calendar._SMN = new Array
("一月",
"二月",
"三月",
"四月",
"五月",
"六月",
"七月",
"八月",
"九月",
"十月",
"十一月",
"十二月");
// tooltips
Calendar._TT = {};
Calendar._TT["TOGGLE"] = "切换周开始的一天";
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["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"] = "首先显示星期日";
// 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"] = "(Shift-)点击鼠标或拖动改变值";
// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
Calendar._TT["TT_DATE_FORMAT"] = "D, M d";
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%A, %b %e日";
Calendar._TT["WK"] = "周";
Calendar._TT["TIME"] = "时间:";

View File

@ -11,9 +11,110 @@
</head>
<body>
<div style="float: right; border: 1px solid #000; background: #fff; padding: 10px; ">
<a href="http://www.dynarch.com/projects/calendar/">The Coolest DHTML Calendar</a><br />
© <a href="http://www.dynarch.com/">Dynarch.com</a> 2002 and later.
</div>
<h1>jscalendar release notes</h1>
<p>This release compiled at Friday, 6 Feb 2004 (21:40).</p>
<p>This release compiled at Monday, 7 Mar 2005 (19:06).</p>
<h2>1.0</h2>
<ul>
<li>
Added support for multiple dates selection. In this mode the
calendar will allow the user to select more than one date, and
will maintain an array of selected dates that can be
investigated from your custom handlers. Sample in <a
href="multiple-dates.html">multiple-dates.html</a>.
</li>
<li>
Support for “day info”. Using this feature you can display
custom information for certain dates. Sample in <a
href="dayinfo.html">dayinfo.html</a>. Note that if the text
is really big the calendar layout might appear somehow broken;
this is something that should be easy to fix in the CSS file.
</li>
<li>
Clicking on “Today” will now close the calendar if the current
date is already selected.
</li>
<li>
The “first day of week” setting can now be defined in the
language file--after all, it is locale-specific. The new
parameter is “Calendar._FD”. Language files should be
updated, but the calendar will not complain nor fail to
function if the parameter is not present.
</li>
<li>
Some fixes to make the thing work in Safari. It now seems to
be properly supported, please let me know if you encounter any
problems.
</li>
<li>
New skin: Aqua theme, appropriate for MacOSX fan sites :-)
This theme is located in “skins/aqua/theme.css” (in the
future, all themes will go to this directory).
</li>
<li>
<b>Bug fixes.</b>
<ul>
<li>
Keyboard operation now functions normally when the
calendar is displaying days from adjacent months; it might
even work correctly for months containing disabled dates
:). This fix was originally developed under contract for
<a
href="http://www.zapatec.com/website/main/products/prod1/">The
Zapatec Calendar</a>. Zapatec kindly allowed us to
include the bugfixes back in the open source calendar.
</li>
<li>
Fixed the time selection bug: the previous version would
reset the time to current time when a new date was
clicked.
</li>
<li>
Parsing hours like "12:XX pm" would wrongfully replace
"pm" with "am"--fixed.
</li>
<li>
Fixed critical bugs in parseDate function that would
initialize the calendar with 'NaN' values in all cells if
the string to be parsed is not a valid date.
</li>
<li>
The golbal variable that we are using was renamed to
“_dynarch_popupCalendar” to minimize the risk of name
clashes. It's still difficult to get rid of it.
</li>
<li>
Added z-index property to drop-down menus style.
</li>
<li>
The calendar will update an input field even in flat mode,
if an input field was passed. Also, the “showOthers”
parameter will be effective in both popup and flat mode.
</li>
<li>
Others, probably.
</li>
</ul>
</li>
<li>
Documentation &amp; sample files updated.
</li>
</ul>
<h2>0.9.6</h2>

View File

@ -198,7 +198,9 @@ dd.getDivW = function(d_o)
{
return dd.Int(
dd.n4? (d_o.div? d_o.div.clip.width : 0)
: d_o.div? (d_o.div.offsetWidth || d_o.css.pixelWidth || d_o.css.width || 0)
: d_o.div? (d_o.div.offsetWidth || (d_o.css ? d_o.css.pixelWidth || d_o.css.width : 0))
: 0
);
};
@ -207,7 +209,7 @@ dd.getDivH = function(d_o)
{
return dd.Int(
dd.n4? (d_o.div? d_o.div.clip.height : 0)
: d_o.div? (d_o.div.offsetHeight || d_o.css.pixelHeight || d_o.css.height || 0)
: d_o.div? (d_o.div.offsetHeight || (d_o.css ? d_o.css.pixelHeight || d_o.css.height : 0))
: 0
);
};
@ -360,6 +362,7 @@ dd.addProps = function(d_o)
{
d_o.div = dd.getDiv(d_o.id);
if (d_o.div && typeof d_o.div.style != "undefined") d_o.css = d_o.div.style;
else d_o.css = {};
d_o.nimg = (dd.n4 && d_o.div)? d_o.div.document.images[0] : (document.images[d_o.id+'NImG'] || null);
if (!d_o.noalt && !dd.noalt)
{
@ -571,6 +574,7 @@ function DDObj(d_o, d_i)
else
{
if (!!(this.div = dd.getDiv(this.id)) && typeof this.div.style != "undefined") this.css = this.div.style;
else this.css = {};
dd.getWH(this);
if (this.div)
{

View File

@ -492,3 +492,4 @@ function tt_Hide()
tt_Init();

View File

@ -14,7 +14,7 @@
/* Basic information about this app */
$setup_info['phpgwapi']['name'] = 'phpgwapi';
$setup_info['phpgwapi']['title'] = 'phpgwapi';
$setup_info['phpgwapi']['version'] = '1.0.1.007';
$setup_info['phpgwapi']['version'] = '1.0.1.008';
$setup_info['phpgwapi']['versions']['current_header'] = '1.28';
$setup_info['phpgwapi']['enable'] = 3;
$setup_info['phpgwapi']['app_order'] = 1;

View File

@ -410,7 +410,9 @@
'mime_id' => array('type' => 'int','precision' => 4),
'owner_id' => array('type' => 'int','precision' => 4,'nullable' => False),
'createdby_id' => array('type' => 'int','precision' => 4),
'modifiedby_id' => array('type' => 'int','precision' => 4),
'created' => array('type' => 'timestamp','default' => '1970-01-01 00:00:00', 'nullable' => False),
'modified' => array('type' => 'timestamp', 'nullable' => true),
'size' => array('type' => 'int','precision' => 8),
'deleteable' => array('type' => 'char','precision' => 1,'default' => 'Y'),
'comment' => array('type' => 'varchar','precision' => 255),

View File

@ -368,4 +368,37 @@
$GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.007';
return $GLOBALS['setup_info']['phpgwapi']['currentver'];
}
$test[] = '1.0.1.007';
function phpgwapi_upgrade1_0_1_007()
{
//Creating cached values for modified and modifiedby_id
$GLOBALS['phpgw_setup']->oProc->AddColumn('phpgw_vfs2_files', 'modifiedby_id', array('type' => 'int','precision' => 4));
$GLOBALS['phpgw_setup']->oProc->AddColumn('phpgw_vfs2_files', 'modified', array('type' => 'timestamp', 'nullable' => true));
//Updating existing values
$sql = "SELECT max(modified) as mod, file_id, modifiedby_id from phpgw_vfs2_versioning group by file_id";
$GLOBALS['phpgw_setup']->oProc->m_odb->query($sql,__LINE__,__FILE__);
while ($GLOBALS['phpgw_setup']->oProc->m_odb->next_record())
{
$files_to_change[] = $GLOBALS['phpgw_setup']->oProc->m_odb->Record;
}
foreach ($files_to_change as $key => $val)
{
$GLOBALS['phpgw_setup']->oProc->m_odb->update('phpgw_vfs2_files',
array(
'modified' => $val['mod'],
'modifiedby_id' => $val['modifiedby_id']
),
array('file_id' => $val['file_id']),__LINE__,__FILE__
);
}
$GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.008';
return $GLOBALS['setup_info']['phpgwapi']['currentver'];
}
?>