initial commit
This commit is contained in:
commit
e2c51b0d22
25
README
Normal file
25
README
Normal file
@ -0,0 +1,25 @@
|
||||
The ComicPress Manager plugin works in conjunction with an installation of ComicPress,
|
||||
the Webcomic theme for WordPress. ComicPress Manager is intended to reduce the amount
|
||||
of work required to administer a site running ComicPress.
|
||||
|
||||
This is the 1.4 line. Only critical bugfixes should go here. All new development and
|
||||
cleanup work should go in the 1.5 line:
|
||||
|
||||
http://github.com/johnbintz/comicpress-manager-1.5/tree/master
|
||||
|
||||
Copyright 2008-2009 John Bintz
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
282
actions/comicpress_batch-processing.php
Normal file
282
actions/comicpress_batch-processing.php
Normal file
@ -0,0 +1,282 @@
|
||||
<?php
|
||||
|
||||
//harmonious @zip @hash
|
||||
|
||||
function cpm_action_batch_processing() {
|
||||
global $cpm_config;
|
||||
|
||||
$files_to_delete = array();
|
||||
$posts_to_delete = array();
|
||||
$thumbnails_to_regenerate = array();
|
||||
$files_to_redate = array();
|
||||
$posts_to_redate = array();
|
||||
$posts_to_generate = array();
|
||||
$posts_that_exist = array();
|
||||
|
||||
$posts_to_recategorize = array();
|
||||
|
||||
extract(cpm_normalize_storyline_structure());
|
||||
$comic_categories = array();
|
||||
foreach ($category_tree as $node) { $comic_categories[] = end(explode("/", $node)); }
|
||||
|
||||
$cpm_config->is_cpm_managing_posts = true;
|
||||
|
||||
foreach ($_POST as $field => $value) {
|
||||
if (($_POST['bulk-action'] != "-1") && ($_POST['bulk-action'] != "individual")) {
|
||||
$bulk_posts_updated = array();
|
||||
|
||||
if (preg_match("#^(file|post),([^\,]*),(.*)$#", $field, $matches) > 0) {
|
||||
list ($all, $type, $date, $id) = $matches;
|
||||
|
||||
if (isset($_POST["batch-${date}"])) {
|
||||
switch ($_POST['bulk-action']) {
|
||||
case "delete":
|
||||
switch ($type) {
|
||||
case "file":
|
||||
if (($result = cpm_match_id_to_file($id)) !== false) {
|
||||
$files_to_delete[] = $result;
|
||||
}
|
||||
break;
|
||||
case "post": $posts_to_delete[] = $id; break;
|
||||
}
|
||||
break;
|
||||
case "regen-thumbs":
|
||||
if ($type == "file") {
|
||||
if (($result = cpm_match_id_to_file($id)) !== false) {
|
||||
$thumbnails_to_regenerate[] = $result;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "edit":
|
||||
if ($type == "post") {
|
||||
foreach (array('hovertext' => 'bulk-hovertext',
|
||||
'transcript' => 'bulk-transcript') as $meta_name => $post_name) {
|
||||
if (isset($_POST[$post_name])) {
|
||||
update_post_meta($id, $meta_name, $_POST[$post_name]);
|
||||
}
|
||||
}
|
||||
|
||||
$post_categories = wp_get_post_categories($id);
|
||||
$did_change = false;
|
||||
|
||||
if (isset($_POST['bulk-storyline-in-comic-category'])) {
|
||||
foreach ($comic_categories as $category_id) {
|
||||
if (in_array($category_id, $_POST['bulk-storyline-in-comic-category'])) {
|
||||
if (!in_array($category_id, $post_categories)) {
|
||||
$did_change = true;
|
||||
$post_categories[] = $category_id;
|
||||
}
|
||||
} else {
|
||||
if (($index = array_search($category_id, $post_categories)) !== false) {
|
||||
$did_change = true;
|
||||
array_splice($post_categories, $index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($did_change) {
|
||||
wp_set_post_categories($id, $post_categories);
|
||||
}
|
||||
|
||||
$bulk_posts_updates[] = $id;
|
||||
}
|
||||
break;
|
||||
case "import":
|
||||
switch ($type) {
|
||||
case "file":
|
||||
if (($result = cpm_match_id_to_file($id)) !== false) {
|
||||
$posts_to_generate[] = $result;
|
||||
}
|
||||
break;
|
||||
case "post":
|
||||
$posts_that_exist[] = $date;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (preg_match('#^([0-9]+)-in-comic-category#', $field, $matches) > 0) {
|
||||
if (get_post($matches[1])) {
|
||||
$posts_to_recategorize[$matches[1]] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match("#^delete-file-(.*)$#", $field, $matches) > 0) {
|
||||
if (($result = cpm_match_id_to_file($matches[1])) !== false) {
|
||||
$files_to_delete[] = $result;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match("#^delete-post-(.*)$#", $field, $matches) > 0) {
|
||||
if (get_post($matches[1])) {
|
||||
$posts_to_delete[] = $matches[1];
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match('#^regen-(.*)$#', $field, $matches) > 0) {
|
||||
if (($result = cpm_match_id_to_file($matches[1])) !== false) {
|
||||
$thumbnails_to_regenerate[] = $result;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match("#^do-redate-file-(.*)$#", $field, $matches) > 0) {
|
||||
if (($result = cpm_match_id_to_file($matches[1])) !== false) {
|
||||
$files_to_redate[$result] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match("#^generate-post-(.*)$#", $field, $matches) > 0) {
|
||||
if (($result = cpm_match_id_to_file($matches[1])) !== false) {
|
||||
$posts_to_generate[] = $result;
|
||||
}
|
||||
}
|
||||
|
||||
if (preg_match("#^delete-post-(.*)$#", $field, $matches) > 0) {
|
||||
if (get_post($matches[1])) {
|
||||
$posts_to_redate[$matches[1]] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$did_generate_thumbs = array();
|
||||
|
||||
$ok_to_keep_uploading = true;
|
||||
$files_created_in_operation = array();
|
||||
|
||||
if (count($thumbnails_to_regenerate) > 0) {
|
||||
$thumbnails_written = array();
|
||||
$thumbnails_not_written = array();
|
||||
foreach ($thumbnails_to_regenerate as $file) {
|
||||
$comic_file = pathinfo($file, PATHINFO_BASENAME);
|
||||
$wrote_thumbnail = cpm_write_thumbnail($file, $comic_file, true);
|
||||
|
||||
if (!is_null($wrote_thumbnail)) {
|
||||
if (is_array($wrote_thumbnail)) {
|
||||
$files_created_in_operation = array_merge($files_created_in_operation, $wrote_thumbnail);
|
||||
|
||||
$thumbnails_written[] = $comic_file;
|
||||
} else {
|
||||
$thumbnails_not_written[] = $comic_file;
|
||||
}
|
||||
}
|
||||
if (function_exists('cpm_wpmu_is_over_storage_limit')) {
|
||||
if (cpm_wpmu_is_over_storage_limit()) { $ok_to_keep_uploading = false; break; }
|
||||
}
|
||||
}
|
||||
|
||||
if (count($thumbnails_written) > 0) {
|
||||
$cpm_config->messages[] = sprintf(__("<strong>The following thumbnails were written:</strong> %s", 'comicpress-manager'), implode(", ", $thumbnails_written));
|
||||
}
|
||||
|
||||
if (count($thumbnails_not_written) > 0) {
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>The following thumbnails were not written:</strong> %s", 'comicpress-manager'), implode(", ", $thumbnails_not_written));
|
||||
}
|
||||
}
|
||||
|
||||
if (count($bulk_posts_updates) > 0) {
|
||||
$cpm_config->messages[] = sprintf(__("<strong>The following posts were updated:</strong> %s", 'comicpress-manager'), implode(", ", $bulk_posts_updates));
|
||||
}
|
||||
|
||||
if (count($files_to_delete) > 0) {
|
||||
$comic_files_deleted = array();
|
||||
foreach ($files_to_delete as $file) {
|
||||
$comic_file = pathinfo($file, PATHINFO_BASENAME);
|
||||
$delete_targets = array($file);
|
||||
foreach ($cpm_config->thumbs_folder_writable as $type => $value) {
|
||||
$path = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties[$type . "_comic_folder"];
|
||||
if (($subdir = cpm_get_subcomic_directory()) !== false) {
|
||||
$path .= '/' . $subdir;
|
||||
}
|
||||
$path .= '/' . $comic_file;
|
||||
$delete_targets[] = $path;;
|
||||
}
|
||||
foreach ($delete_targets as $target) {
|
||||
if (file_exists($target)) {
|
||||
@unlink($target);
|
||||
}
|
||||
}
|
||||
$comic_files_deleted[] = $comic_file;
|
||||
}
|
||||
|
||||
$cpm_config->messages[] = sprintf(__("<strong>The following comic files and their associated thumbnails were deleted:</strong> %s", 'comicpress-manager'), implode(", ", $comic_files_deleted));
|
||||
}
|
||||
|
||||
if (count($posts_to_delete) > 0) {
|
||||
foreach ($posts_to_delete as $post) {
|
||||
wp_delete_post($post);
|
||||
}
|
||||
$cpm_config->messages[] = sprintf(__("<strong>The following posts were deleted:</strong> %s", 'comicpress-manager'), implode(", ", $posts_to_delete));
|
||||
}
|
||||
|
||||
$master_category = end(explode("/", reset($category_tree)));
|
||||
|
||||
foreach ($posts_to_generate as $file) {
|
||||
$ok = false;
|
||||
$comic_file = pathinfo($file, PATHINFO_BASENAME);
|
||||
if (($result = cpm_breakdown_comic_filename($comic_file)) !== false) {
|
||||
if (!in_array(date("Y-m-d", strtotime($result['date'])), $posts_that_exist)) {
|
||||
if (($post_hash = generate_post_hash($result['date'], $result['converted_title'])) !== false) {
|
||||
|
||||
$post_hash['post_category'] = array($master_category);
|
||||
$ok = !is_null($post_id = wp_insert_post($post_hash));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($ok) {
|
||||
$cpm_config->messages[] = sprintf(__('<strong>Created post %1$s for %2$s.</strong>', 'comicpress-manager'), $post_id, $comic_file);
|
||||
} else {
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>Could not create post for %s.</strong>", 'comicpress-manager'), $comic_file);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($posts_to_recategorize as $id => $requested_comic_categories) {
|
||||
if (!in_array($id, $posts_to_delete)) {
|
||||
$post_categories = wp_get_post_categories($id);
|
||||
$did_change = false;
|
||||
|
||||
foreach ($comic_categories as $category_id) {
|
||||
if (in_array($category_id, $requested_comic_categories)) {
|
||||
if (!in_array($category_id, $post_categories)) {
|
||||
$did_change = true;
|
||||
$post_categories[] = $category_id;
|
||||
}
|
||||
} else {
|
||||
if (($index = array_search($category_id, $post_categories)) !== false) {
|
||||
$did_change = true;
|
||||
array_splice($post_categories, $index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($did_change) {
|
||||
wp_set_post_categories($id, $post_categories);
|
||||
$cpm_config->messages[] = sprintf(__("<strong>Storyline for post %s updated.</strong>", 'comicpress-manager'), $id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$ok_to_keep_uploading) {
|
||||
$cpm_config->warnings = array($cpm_config->wpmu_disk_space_message);
|
||||
|
||||
foreach ($files_created_in_operation as $file) { @unlink($file); }
|
||||
}
|
||||
|
||||
$cpm_config->comic_files = cpm_read_comics_folder();
|
||||
}
|
||||
|
||||
function cpm_match_id_to_file($id) {
|
||||
global $cpm_config;
|
||||
|
||||
foreach ($cpm_config->comic_files as $file) {
|
||||
$filename = str_replace(".", "_", pathinfo($file, PATHINFO_BASENAME));
|
||||
if ($filename == $id) { return $file; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
?>
|
191
actions/comicpress_build-storyline-schema.php
Normal file
191
actions/comicpress_build-storyline-schema.php
Normal file
@ -0,0 +1,191 @@
|
||||
<?php
|
||||
|
||||
//harmonious @zip @hash
|
||||
|
||||
function cpm_action_build_storyline_schema() {
|
||||
global $cpm_config;
|
||||
|
||||
update_option('comicpress-enable-storyline-support', isset($_POST['enable-storyline-support']) ? 1 : 0);
|
||||
update_option('comicpress-storyline-show-top-category', isset($_POST['show-top-category']) ? 1 : 0);
|
||||
|
||||
if (isset($_POST['enable-storyline-support'])) {
|
||||
$cpm_config->is_cpm_modifying_categories = true;
|
||||
|
||||
$categories_to_create = array();
|
||||
$categories_to_rename = array();
|
||||
$category_ids_to_clean = array();
|
||||
|
||||
extract(cpm_get_all_comic_categories());
|
||||
|
||||
$comic_posts = cpm_query_posts();
|
||||
$comic_posts_by_category_id = array();
|
||||
foreach ($comic_posts as $post) {
|
||||
foreach (wp_get_post_categories($post->ID) as $category) {
|
||||
if (!isset($comic_posts_by_category_id[$category])) { $comic_posts_by_category_id[$category] = array(); }
|
||||
$comic_posts_by_category_id[$category][] = $post->ID;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($_POST as $field => $value) {
|
||||
$parts = explode("/", $field);
|
||||
if (($parts[0] == "0") && (count($parts) > 1)) {
|
||||
$category_id = end($parts);
|
||||
$category = get_category($category_id, ARRAY_A);
|
||||
if (!empty($category)) {
|
||||
if ($category['cat_name'] != $value) {
|
||||
$cpm_config->messages[] = sprintf(__('Category <strong>%1$s</strong> renamed to <strong>%2$s</strong>.', 'comicpress-manager'), $category['cat_name'], $value);
|
||||
$category['cat_name'] = $value;
|
||||
wp_update_category($category);
|
||||
|
||||
$category_ids_to_clean[] = $category_id;
|
||||
}
|
||||
} else {
|
||||
$categories_to_create[$field] = $value;
|
||||
}
|
||||
|
||||
if (($index = array_search($field, $category_tree)) !== false) {
|
||||
array_splice($category_tree, $index, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($_POST['original-categories'])) {
|
||||
foreach (explode(",", $_POST['original-categories']) as $node) {
|
||||
if (!isset($_POST[$node])) {
|
||||
$category_id = end(explode("/", $node));
|
||||
$category = get_category($category_id);
|
||||
$original_cat_name = $category->cat_name;
|
||||
|
||||
// ensure that we're not deleting a ComicPress category
|
||||
$ok = true;
|
||||
foreach (array('comiccat', 'blogcat') as $type) {
|
||||
if ($category_id == $cpm_config->properties[$type]) { $ok = false; }
|
||||
}
|
||||
|
||||
// ensure that the category truly is a child of the comic category
|
||||
if ($ok) {
|
||||
$category = get_category($category_id);
|
||||
$ok = false;
|
||||
|
||||
if (!is_wp_error($category)) {
|
||||
while (($category->parent != 0) && ($category->parent != $cpm_config->properties['comiccat'])) {
|
||||
$category = get_category($category->parent);
|
||||
}
|
||||
if ($category->parent == $cpm_config->properties['comiccat']) { $ok = true; }
|
||||
}
|
||||
}
|
||||
|
||||
if ($ok) {
|
||||
wp_delete_category($category_id);
|
||||
$category_ids_to_clean[] = $category_id;
|
||||
|
||||
$cpm_config->messages[] = sprintf(__('Category <strong>%s</strong> deleted.', 'comicpress-manager'), $original_cat_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uksort($categories_to_create, 'cpm_sort_category_keys_by_length');
|
||||
|
||||
$changed_field_ids = array();
|
||||
$removed_field_ids = array();
|
||||
|
||||
$target_category_ids = array();
|
||||
|
||||
foreach ($categories_to_create as $field => $value) {
|
||||
$original_field = $field;
|
||||
foreach ($changed_field_ids as $changed_field => $new_field) {
|
||||
if ((strpos($field, $changed_field) === 0) && (strlen($field) > strlen($changed_field))) {
|
||||
$field = str_replace($changed_field, $new_field, $field);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$parts = explode("/", $field);
|
||||
$target_id = array_pop($parts);
|
||||
$parent_id = array_pop($parts);
|
||||
|
||||
if (!category_exists($value)) {
|
||||
$category_id = wp_create_category($value, $parent_id);
|
||||
$category_ids_to_clean[] = $category_id;
|
||||
|
||||
array_push($parts, $parent_id);
|
||||
array_push($parts, $category_id);
|
||||
$changed_field_ids[$original_field] = implode("/", $parts);
|
||||
|
||||
$cpm_config->messages[] = sprintf(__('Category <strong>%s</strong> created.', 'comicpress-manager'), $value);
|
||||
} else {
|
||||
$cpm_config->warnings[] = sprintf(__("The category %s already exists. Please enter a new name.", 'comicpress-manager'), $value);
|
||||
$removed_field_ids[] = $field;
|
||||
}
|
||||
}
|
||||
|
||||
$order = array_diff(explode(",", $_POST['order']), $removed_field_ids);
|
||||
for ($i = 0; $i < count($order); ++$i) {
|
||||
if (isset($changed_field_ids[$order[$i]])) {
|
||||
$order[$i] = $changed_field_ids[$order[$i]];
|
||||
}
|
||||
}
|
||||
|
||||
// ensure we're writing sane data
|
||||
$new_order = array();
|
||||
$valid_comic_categories = array();
|
||||
foreach ($order as $node) {
|
||||
$parts = explode("/", $node);
|
||||
if (($parts[0] == "0") && (count($parts) > 1)) {
|
||||
$new_order[] = $node;
|
||||
$valid_comic_categories[] = end($parts);
|
||||
}
|
||||
}
|
||||
|
||||
$comic_categories_preserved = array();
|
||||
foreach ($comic_posts as $post) {
|
||||
$categories = wp_get_post_categories($post->ID);
|
||||
if (count(array_intersect($valid_comic_categories, $categories)) == 0) {
|
||||
$all_parent_categories = array();
|
||||
|
||||
foreach ($comic_posts_by_category_id as $category => $post_ids) {
|
||||
if (in_array($post->ID, $post_ids)) {
|
||||
foreach ($new_order as $node) {
|
||||
$parts = explode("/", $node);
|
||||
if ($category == end($parts)) {
|
||||
$parts = explode("/", $node);
|
||||
array_pop($parts);
|
||||
if (count($parts) > 1) { $all_parent_categories[] = implode("/", $parts); }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (count($all_parent_categories) > 0) {
|
||||
foreach ($all_parent_categories as $category_node) {
|
||||
if (in_array($category_node, $new_order)) {
|
||||
$categories[] = end(explode("/", $category_node));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$categories[] = $cpm_config->properties['comiccat'];
|
||||
}
|
||||
|
||||
wp_set_post_categories($post->ID, $categories);
|
||||
$comic_categories_preserved[] = $post->ID;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($comic_categories_preserved) > 0) {
|
||||
$cpm_config->messages[] = sprintf(__("The following orphaned comic posts were placed into their original category's parent: <strong>%s</strong>"), implode(", ", $comic_categories_preserved));
|
||||
}
|
||||
|
||||
$cpm_config->messages[] = __('Storyline structure saved.', 'comicpress-manager');
|
||||
update_option("comicpress-storyline-category-order", implode(",", $new_order));
|
||||
|
||||
clean_term_cache($category_ids_to_clean, 'category');
|
||||
wp_cache_flush();
|
||||
}
|
||||
}
|
||||
|
||||
function cpm_sort_category_keys_by_length($a, $b) {
|
||||
return strlen($a) - strlen($b);
|
||||
}
|
||||
|
||||
?>
|
180
actions/comicpress_change-dates.php
Normal file
180
actions/comicpress_change-dates.php
Normal file
@ -0,0 +1,180 @@
|
||||
<?php
|
||||
|
||||
//harmonious @zip @hash
|
||||
|
||||
function cpm_action_change_dates() {
|
||||
global $cpm_config;
|
||||
|
||||
$comic_posts_to_date_shift = array();
|
||||
$comic_files_to_date_shift = array();
|
||||
$comic_post_target_date_counts = array();
|
||||
|
||||
$wp_date_string_length = strlen(date("Y-m-d"));
|
||||
$cpm_date_string_length = strlen(date(CPM_DATE_FORMAT));
|
||||
|
||||
$cpm_config->is_cpm_managing_posts = true;
|
||||
|
||||
// find all comic files that will be shifted
|
||||
foreach ($cpm_config->comic_files as $comic_file) {
|
||||
$comic_filename = pathinfo($comic_file, PATHINFO_BASENAME);
|
||||
$filename_info = cpm_breakdown_comic_filename($comic_filename);
|
||||
$key = md5($comic_file);
|
||||
|
||||
if (isset($_POST['dates'][$key])) {
|
||||
if ($_POST['dates'][$key] != $filename_info['date']) {
|
||||
$timestamp = strtotime($_POST['dates'][$key]);
|
||||
if (($timestamp !== false) && ($timestamp !== -1)) {
|
||||
$target_date = date(CPM_DATE_FORMAT, $timestamp);
|
||||
|
||||
$new_comic_filename = $target_date . substr($comic_filename, $cpm_date_string_length);
|
||||
|
||||
$comic_posts_to_date_shift[strtotime($filename_info['date'])] = $timestamp;
|
||||
if (!isset($comic_post_target_date_counts[$timestamp])) {
|
||||
$comic_post_target_date_counts[$timestamp] = 0;
|
||||
}
|
||||
$comic_post_target_date_counts[$timestamp]++;
|
||||
|
||||
if (!isset($comic_files_to_date_shift[$timestamp])) {
|
||||
$comic_files_to_date_shift[$timestamp] = array($comic_filename, $new_comic_filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$comic_posts_to_change = array();
|
||||
|
||||
$all_posts = cpm_query_posts();
|
||||
|
||||
// get the target dates for all files to move
|
||||
if (count($comic_posts_to_date_shift) > 0) {
|
||||
foreach ($all_posts as $comic_post) {
|
||||
$post_date_day = substr($comic_post->post_date, 0, $wp_date_string_length);
|
||||
$post_date_day_timestamp = strtotime($post_date_day);
|
||||
if (isset($comic_posts_to_date_shift[$post_date_day_timestamp])) {
|
||||
if ($comic_post_target_date_counts[$comic_posts_to_date_shift[$post_date_day_timestamp]] == 1) {
|
||||
$new_post_date = date("Y-m-d", $comic_posts_to_date_shift[$post_date_day_timestamp]) . substr($comic_post->post_date, $wp_date_string_length);
|
||||
$comic_posts_to_change[$comic_post->ID] = array($comic_post, $new_post_date);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$final_post_day_counts = array();
|
||||
|
||||
// intersect all existing and potential new posts, counting how many
|
||||
// posts occur on each day
|
||||
foreach ($all_posts as $comic_post) {
|
||||
if (isset($comic_posts_to_change[$comic_post->ID])) {
|
||||
$date_to_use = $comic_posts_to_change[$comic_post->ID][1];
|
||||
} else {
|
||||
$date_to_use = $comic_post->post_date;
|
||||
}
|
||||
|
||||
$day_to_use = strtotime(substr($date_to_use, 0, $wp_date_string_length));
|
||||
if (!isset($final_post_day_counts[$day_to_use])) {
|
||||
$final_post_day_counts[$day_to_use] = 0;
|
||||
}
|
||||
$final_post_day_counts[$day_to_use]++;
|
||||
}
|
||||
|
||||
$posts_moved = array();
|
||||
|
||||
// move what can be moved
|
||||
foreach ($comic_posts_to_change as $id => $info) {
|
||||
list($comic_post, $new_post_date) = $info;
|
||||
$new_post_day = strtotime(substr($new_post_date, 0, $wp_date_string_length));
|
||||
if ($final_post_day_counts[$new_post_day] == 1) {
|
||||
$old_post_date = $comic_post->post_date;
|
||||
$comic_post->post_date = $new_post_date;
|
||||
$comic_post->post_date_gmt = get_gmt_from_date($new_post_date);
|
||||
wp_update_post($comic_post);
|
||||
$cpm_config->messages[] = sprintf(__('<strong>Post %1$s moved to %2$s.</strong>', 'comicpress-manager'), $id, date("Y-m-d", $new_post_day));
|
||||
$posts_moved[$new_post_day] = array($comic_post, $old_post_date);
|
||||
} else {
|
||||
$cpm_config->warnings[] = sprintf(__('<strong>Moving post %1$s to %2$s would cause two comic posts to exist on the same day.</strong> This is not allowed in the automated process.', 'comicpress-manager'), $id, date("Y-m-d", $new_post_day));
|
||||
}
|
||||
}
|
||||
|
||||
// try to move all the files, and roll back any changes to files and posts that fail
|
||||
foreach ($comic_post_target_date_counts as $target_date => $count) {
|
||||
if (!isset($final_post_day_counts[$target_date]) || ($final_post_day_counts[$target_date] == 1)) {
|
||||
if ($count > 1) {
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>You are moving two comics to the same date: %s.</strong> This is not allowed in the automated process.", 'comicpress-manager'), $target_date);
|
||||
} else {
|
||||
list($comic_filename, $new_comic_filename) = $comic_files_to_date_shift[$target_date];
|
||||
|
||||
$roll_back_change = false;
|
||||
|
||||
$calculate_do_move = array();
|
||||
|
||||
foreach (array(
|
||||
array(__('comic folder', 'comicpress-manager'), 'comic_folder', ""),
|
||||
array(__('RSS feed folder', 'comicpress-manager'), 'rss_comic_folder', "rss"),
|
||||
array(__('archive folder', 'comicpress-manager'), 'archive_comic_folder', "archive")) as $folder_info) {
|
||||
list ($name, $property, $type) = $folder_info;
|
||||
|
||||
$do_move = true;
|
||||
if ($type != "") {
|
||||
if ($cpm_config->separate_thumbs_folder_defined[$type]) {
|
||||
if ($cpm_config->thumbs_folder_writable[$type]) {
|
||||
$do_move = (cpm_option("${type}-generate-thumbnails") == 1);
|
||||
}
|
||||
}
|
||||
$calculate_do_move[$type] = $do_move;
|
||||
}
|
||||
|
||||
if ($do_move) {
|
||||
$path = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties[$property];
|
||||
if (!file_exists($path)) {
|
||||
$cpm_config->errors[] = sprintf(__('The %1$s <strong>%2$s</strong> does not exist.', 'comicpress-manager'), $name, $cpm_config->properties[$property]);
|
||||
|
||||
$roll_back_change = true;
|
||||
} else {
|
||||
if (file_exists($path . '/' . $comic_filename)) {
|
||||
if (@rename($path . '/' . $comic_filename, $path . '/' . $new_comic_filename)) {
|
||||
$cpm_config->messages[] = sprintf(__('<strong>Rename %1$s file %2$s to %3$s.</strong>', 'comicpress-manager'), $name, $comic_filename, $new_comic_filename);
|
||||
} else {
|
||||
$cpm_config->warnings[] = sprintf(__('<strong>The renaming of %1$s to %2$s failed.</strong> Check the permissions on %3$s', 'comicpress-manager'), $comic_filename, $new_comic_filename, $path);
|
||||
|
||||
$roll_back_change = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($roll_back_change) {
|
||||
foreach (array(
|
||||
array(__('comic folder', 'comicpress-manager'), 'comic_folder',""),
|
||||
array(__('RSS feed folder', 'comicpress-manager'), 'rss_comic_folder',"rss"),
|
||||
array(__('archive folder', 'comicpress-manager'), 'archive_comic_folder',"archive")) as $folder_info) {
|
||||
list ($name, $property) = $folder_info;
|
||||
|
||||
$do_move = isset($calculate_do_move[$type]) ? $calculate_do_move[$type] : true;
|
||||
|
||||
if ($do_move) {
|
||||
$path = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties[$property];
|
||||
if (file_exists($path . '/' . $new_comic_filename)) {
|
||||
@rename($path . '/' . $new_comic_filename, $path . '/' . $comic_filename);
|
||||
$cpm_config->messages[] = sprintf(__("<strong>Rolling back %s.</strong>", 'comicpress-manager'), $new_comic_filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($posts_moved[$target_date])) {
|
||||
list($comic_post, $old_post_date) = $posts_moved[$target_date];
|
||||
$comic_post->post_date = $old_post_date;
|
||||
$comic_post->post_date_gmt = get_gmt_from_date($old_post_date);
|
||||
wp_update_post($comic_post);
|
||||
$cpm_config->messages[] = sprintf(__('<strong>Rename error, rolling back post %1$s to %2$s.</strong>', 'comicpress-manager'), $comic_post->ID, $old_post_date);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$cpm_config->comic_files = cpm_read_comics_folder();
|
||||
}
|
||||
|
||||
?>
|
110
actions/comicpress_create-missing-posts.php
Normal file
110
actions/comicpress_create-missing-posts.php
Normal file
@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_create_missing_posts() {
|
||||
global $cpm_config;
|
||||
|
||||
$all_post_dates = array();
|
||||
foreach (cpm_query_posts() as $comic_post) {
|
||||
$all_post_dates[] = date(CPM_DATE_FORMAT, strtotime($comic_post->post_date));
|
||||
}
|
||||
$all_post_dates = array_unique($all_post_dates);
|
||||
$duplicate_posts_within_creation = array();
|
||||
|
||||
$posts_created = array();
|
||||
$thumbnails_written = array();
|
||||
$thumbnails_not_written = array();
|
||||
$invalid_filenames = array();
|
||||
$duplicate_posts = array();
|
||||
$new_thumbnails_not_needed = array();
|
||||
|
||||
$execution_time = ini_get("max_execution_time");
|
||||
$max_posts_imported = (int)($execution_time / 2);
|
||||
|
||||
$imported_post_count = 0;
|
||||
$safe_exit = false;
|
||||
|
||||
if (strtotime($_POST['time']) === false) {
|
||||
$cpm_config->warnings[] = sprintf(__('<strong>There was an error in the post time (%1$s)</strong>. The time is not parseable by strtotime().', 'comicpress-manager'), $_POST['time']);
|
||||
} else {
|
||||
foreach ($cpm_config->comic_files as $comic_file) {
|
||||
$comic_file = pathinfo($comic_file, PATHINFO_BASENAME);
|
||||
if (($result = cpm_breakdown_comic_filename($comic_file)) !== false) {
|
||||
extract($result, EXTR_PREFIX_ALL, 'filename');
|
||||
|
||||
$ok_to_create_post = !in_array($result['date'], $all_post_dates);
|
||||
$show_duplicate_post_message = false;
|
||||
$post_id = null;
|
||||
|
||||
if (isset($duplicate_posts_within_creation[$result['date']])) {
|
||||
$ok_to_create_post = false;
|
||||
$show_duplicate_post_message = true;
|
||||
$post_id = $duplicate_posts_within_creation[$result['date']];
|
||||
}
|
||||
|
||||
if ($ok_to_create_post) {
|
||||
if (isset($_POST['duplicate_check'])) {
|
||||
$ok_to_create_post = (($post_id = post_exists($post_title, $post_content, $post_date)) == 0);
|
||||
}
|
||||
} else {
|
||||
if (!isset($_POST['duplicate_check'])) {
|
||||
$ok_to_create_post = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ($ok_to_create_post) {
|
||||
if (($post_hash = generate_post_hash($filename_date, $filename_converted_title)) !== false) {
|
||||
if (!is_null($post_id = wp_insert_post($post_hash))) {
|
||||
$imported_post_count++;
|
||||
$posts_created[] = get_post($post_id, ARRAY_A);
|
||||
$date = date(CPM_DATE_FORMAT, strtotime($filename_date));
|
||||
$all_post_dates[] = $date;
|
||||
$duplicate_posts_within_creation[$date] = $post_id;
|
||||
|
||||
foreach (array('hovertext', 'transcript') as $field) {
|
||||
if (!empty($_POST["${field}-to-use"])) { update_post_meta($post_id, $field, $_POST["${field}-to-use"]); }
|
||||
}
|
||||
|
||||
if (isset($_POST['thumbnails'])) {
|
||||
$wrote_thumbnail = cpm_write_thumbnail($cpm_config->path . '/' . $comic_file, $comic_file);
|
||||
if (!is_null($wrote_thumbnail)) {
|
||||
if ($wrote_thumbnail) {
|
||||
$thumbnails_written[] = $comic_file;
|
||||
} else {
|
||||
$thumbnails_not_written[] = $comic_file;
|
||||
}
|
||||
} else {
|
||||
$new_thumbnails_not_needed[] = $comic_file;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$invalid_filenames[] = $comic_file;
|
||||
}
|
||||
} else {
|
||||
if ($show_duplicate_post_message) {
|
||||
$duplicate_posts[] = array(get_post($post_id, ARRAY_A), $comic_file);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($imported_post_count >= $max_posts_imported) {
|
||||
$safe_exit = true; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$cpm_config->import_safe_exit = $safe_exit;
|
||||
|
||||
if ($safe_exit) {
|
||||
$cpm_config->messages[] = __("<strong>Import safely exited before you ran out of execution time.</strong> Scroll down to continue creating missing posts.", 'comicpress-manager');
|
||||
}
|
||||
|
||||
if (count($posts_created) > 0) {
|
||||
cpm_display_operation_messages(compact('invalid_filenames', 'thumbnails_written',
|
||||
'thumbnails_not_written', 'posts_created',
|
||||
'duplicate_posts', 'new_thumbnails_not_needed'));
|
||||
} else {
|
||||
$cpm_config->messages[] = __("<strong>No new posts needed to be created.</strong>", 'comicpress-manager');
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
45
actions/comicpress_delete-comic-and-post.php
Normal file
45
actions/comicpress_delete-comic-and-post.php
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_delete_comic_and_post() {
|
||||
global $cpm_config;
|
||||
|
||||
$comic_file = pathinfo($_POST['comic'], PATHINFO_BASENAME);
|
||||
|
||||
if (file_exists($cpm_config->path . '/' . $comic_file)) {
|
||||
if (($result = cpm_breakdown_comic_filename($comic_file)) !== false) {
|
||||
extract($result, EXTR_PREFIX_ALL, 'filename');
|
||||
|
||||
$all_possible_posts = array();
|
||||
foreach (cpm_query_posts() as $comic_post) {
|
||||
if (date(CPM_DATE_FORMAT, strtotime($comic_post->post_date)) == $filename_date) {
|
||||
$all_possible_posts[] = $comic_post->ID;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($all_possible_posts) > 1) {
|
||||
$cpm_config->messages[] = sprintf(
|
||||
__('There are multiple posts (%1$s) with the date %2$s in the comic categories. Please manually delete the posts.', 'comicpress-manager'),
|
||||
implode(", ", $all_possible_posts),
|
||||
$filename_date
|
||||
);
|
||||
|
||||
} else {
|
||||
$delete_targets = array($cpm_config->path . '/' . $comic_file);
|
||||
foreach ($cpm_config->thumbs_folder_writable as $type => $value) {
|
||||
$delete_targets[] = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties[$type . "_comic_folder"] . '/' . $comic_file;
|
||||
}
|
||||
foreach ($delete_targets as $target) { @unlink($target); }
|
||||
|
||||
if (count($all_possible_posts) == 0) {
|
||||
$cpm_config->messages[] = sprintf(__("<strong>%s deleted.</strong> No matching posts found. Any associated thumbnails were also deleted.", 'comicpress-manager'), $comic_file);
|
||||
} else {
|
||||
wp_delete_post($all_possible_posts[0]);
|
||||
$cpm_config->messages[] = sprintf(__('<strong>%1$s and post %2$s deleted.</strong> Any associated thumbnails were also deleted.', 'comicpress-manager'), $comic_file, $all_possible_posts[0]);
|
||||
}
|
||||
$cpm_config->comic_files = cpm_read_comics_folder();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
52
actions/comicpress_do-first-run.php
Normal file
52
actions/comicpress_do-first-run.php
Normal file
@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_do_first_run() {
|
||||
global $cpm_config, $blog_id;
|
||||
|
||||
$dir_list = array(
|
||||
CPM_DOCUMENT_ROOT,
|
||||
CPM_DOCUMENT_ROOT . '/comics',
|
||||
CPM_DOCUMENT_ROOT . '/comics-rss',
|
||||
CPM_DOCUMENT_ROOT . '/comics-archive'
|
||||
);
|
||||
|
||||
//if ($is_wpmu = function_exists('get_site_option')) { $dir_list = cpm_wpmu_first_run_dir_list(); }
|
||||
|
||||
$any_made = false;
|
||||
$all_made = true;
|
||||
|
||||
foreach ($dir_list as $dir_to_make) {
|
||||
if (!file_exists($dir_to_make)) {
|
||||
$any_made = true;
|
||||
if (@mkdir($dir_to_make)) {
|
||||
if (!$is_wpmu) {
|
||||
$cpm_config->messages[] = sprintf(__("<strong>Directory created:</strong> %s", 'comicpress-manager'), $dir_to_make);
|
||||
}
|
||||
} else {
|
||||
$all_made = false;
|
||||
if (!$is_wpmu) {
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>Unable to create directory:</strong> %s", 'comicpress-manager'), $dir_to_make);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!$any_made) {
|
||||
$cpm_config->messages[] = __("<strong>All the directories were already found, nothing to do!</strong>", "comicpress-manager");
|
||||
}
|
||||
if ($is_wpmu) {
|
||||
if ($all_made) {
|
||||
$cpm_config->messages[] = sprintf(__("<strong>All directories created!</strong>", 'comicpress-manager'), $dir_to_make);
|
||||
cpm_wpmu_complete_first_run();
|
||||
} else {
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>Unable to create directories!</strong> Contact your administrator.", 'comicpress-manager'), $dir_to_make);
|
||||
}
|
||||
update_option("comicpress-manager-cpm-did-first-run", 1);
|
||||
}
|
||||
|
||||
$cpm_config->did_first_run = true;
|
||||
|
||||
cpm_read_information_and_check_config();
|
||||
}
|
||||
|
||||
?>
|
36
actions/comicpress_generate-thumbnails.php
Normal file
36
actions/comicpress_generate-thumbnails.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_generate_thumbnails() {
|
||||
global $cpm_config;
|
||||
|
||||
$ok_to_keep_uploading = true;
|
||||
$files_created_in_operation = array();
|
||||
|
||||
foreach ($_POST['comics'] as $comic) {
|
||||
$comic_file = stripslashes(pathinfo($comic, PATHINFO_BASENAME));
|
||||
|
||||
$wrote_thumbnail = cpm_write_thumbnail($cpm_config->path . '/' . $comic_file, $comic_file, true);
|
||||
|
||||
if (!is_null($wrote_thumbnail)) {
|
||||
if (is_array($wrote_thumbnail)) {
|
||||
$files_created_in_operation = array_merge($files_created_in_operation, $wrote_thumbnail);
|
||||
|
||||
$cpm_config->messages[] = sprintf(__("<strong>Wrote thumbnail for %s.</strong>", 'comicpress-manager'), $comic_file);
|
||||
} else {
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>Could not write thumbnail for %s.</strong> Check the permissions on the thumbnail directories.", 'comicpress-manager'), $comic_file);
|
||||
}
|
||||
}
|
||||
if (function_exists('cpm_wpmu_is_over_storage_limit')) {
|
||||
if (cpm_wpmu_is_over_storage_limit()) { $ok_to_keep_uploading = false; break; }
|
||||
}
|
||||
}
|
||||
|
||||
if (!$ok_to_keep_uploading) {
|
||||
$cpm_config->messages = array();
|
||||
$cpm_config->warnings = array($cpm_config->wpmu_disk_space_message);
|
||||
|
||||
foreach ($files_created_in_operation as $file) { @unlink($file); }
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
29
actions/comicpress_manage-subcomic.php
Normal file
29
actions/comicpress_manage-subcomic.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_manage_subcomic() {
|
||||
global $cpm_config;
|
||||
|
||||
$target_category_id = (int)$_POST['comic'];
|
||||
extract(cpm_normalize_storyline_structure());
|
||||
$final_category_id = false;
|
||||
$first = true;
|
||||
|
||||
foreach ($category_tree as $node) {
|
||||
$category = get_category(end(explode("/", $node)));
|
||||
if ($first) { $final_category_id = $category->term_id; }
|
||||
|
||||
if ($target_category_id == $category->term_id) {
|
||||
if (is_dir(CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties['comic_folder'] . '/' . $category->slug)) {
|
||||
$final_category_id = $category->term_id; break;
|
||||
}
|
||||
}
|
||||
$first = false;
|
||||
}
|
||||
|
||||
update_option('comicpress-manager-manage-subcomic', $final_category_id);
|
||||
cpm_read_information_and_check_config();
|
||||
|
||||
$cpm_config->messages[] = sprintf(__("Now managing <strong>%s</strong>.", 'comicpress-manager'), get_cat_name($final_category_id));
|
||||
}
|
||||
|
||||
?>
|
41
actions/comicpress_multiple-upload-file.php
Normal file
41
actions/comicpress_multiple-upload-file.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_multiple_upload_file() {
|
||||
global $cpm_config;
|
||||
|
||||
if (strtotime($_POST['time']) === false) {
|
||||
$cpm_config->warnings[] = sprintf(__('<strong>There was an error in the post time (%1$s)</strong>. The time is not parseable by strtotime().', 'comicpress-manager'), $_POST['time']);
|
||||
} else {
|
||||
$files_to_handle = array();
|
||||
|
||||
foreach ($_FILES as $name => $info) {
|
||||
if (strpos($name, "upload-") !== false) {
|
||||
if (is_uploaded_file($_FILES[$name]['tmp_name'])) {
|
||||
$files_to_handle[] = $name;
|
||||
} else {
|
||||
switch ($_FILES[$name]['error']) {
|
||||
case UPLOAD_ERR_INI_SIZE:
|
||||
case UPLOAD_ERR_FORM_SIZE:
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>The file %s was too large.</strong> The max allowed filesize for uploads to your server is %s.", 'comicpress-manager'), $_FILES[$name]['name'], ini_get('upload_max_filesize'));
|
||||
break;
|
||||
case UPLOAD_ERR_NO_FILE:
|
||||
break;
|
||||
default:
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>There was an error in uploading %s.</strong> The <a href='http://php.net/manual/en/features.file-upload.errors.php'>PHP upload error code</a> was %s.", 'comicpress-manager'), $_FILES[$name]['name'], $_FILES[$name]['error']);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (count($files_to_handle) > 0) {
|
||||
cpm_handle_file_uploads($files_to_handle);
|
||||
|
||||
$cpm_config->comic_files = cpm_read_comics_folder();
|
||||
} else {
|
||||
$cpm_config->warnings[] = __("<strong>You didn't upload any files!</strong>", 'comicpress-manager');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
24
actions/comicpress_restore-backup.php
Normal file
24
actions/comicpress_restore-backup.php
Normal file
@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_restore_backup() {
|
||||
global $cpm_config;
|
||||
|
||||
$config_dirname = dirname($cpm_config->config_filepath);
|
||||
if (is_numeric($_POST['backup-file-time'])) {
|
||||
if (file_exists($config_dirname . '/comicpress-config.php.' . $_POST['backup-file-time'])) {
|
||||
if ($cpm_config->can_write_config) {
|
||||
if (@copy($config_dirname . '/comicpress-config.php.' . $_POST['backup-file-time'],
|
||||
$config_dirname . '/comicpress-config.php') !== false) {
|
||||
|
||||
cpm_read_information_and_check_config();
|
||||
|
||||
$cpm_config->messages[] = sprintf(__("<strong>Restored %s</strong>. Check to make sure your site is functioning correctly.", 'comicpress-manager'), 'comicpress-config.php.' . $_POST['backup-file-time']);
|
||||
} else {
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>Could not restore %s</strong>. Check the permissions of your theme folder and try again.", 'comicpress-manager'), 'comicpress-config.php.' . $_POST['backup-file-time']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
11
actions/comicpress_skip-first-run.php
Normal file
11
actions/comicpress_skip-first-run.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_skip_first_run() {
|
||||
global $cpm_config;
|
||||
|
||||
$cpm_config->messages[] = __("<strong>No directories were created.</strong> You'll need to create directories on your own.", 'comicpress-manager');
|
||||
|
||||
cpm_read_information_and_check_config();
|
||||
}
|
||||
|
||||
?>
|
79
actions/comicpress_update-config.php
Normal file
79
actions/comicpress_update-config.php
Normal file
@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_update_config() {
|
||||
global $cpm_config;
|
||||
|
||||
$cpm_config->is_cpm_managing_posts = true;
|
||||
|
||||
$do_write = false;
|
||||
$use_default_file = false;
|
||||
|
||||
if ($cpm_config->config_method == "comicpress-config.php") {
|
||||
$do_write = !isset($_POST['just-show-config']);
|
||||
} else {
|
||||
$use_default_file = true;
|
||||
}
|
||||
|
||||
include(realpath(dirname(__FILE__)) . '/../cp_configuration_options.php');
|
||||
|
||||
$original_properties = $cpm_config->properties;
|
||||
|
||||
foreach ($comicpress_configuration_options as $field_info) {
|
||||
extract($field_info);
|
||||
|
||||
$config_id = (isset($field_info['variable_name'])) ? $field_info['variable_name'] : $field_info['id'];
|
||||
|
||||
switch ($type) {
|
||||
case "folder":
|
||||
$cpm_config->properties[$config_id] = $_POST[$_POST["folder-{$config_id}"] . "-" . $config_id];
|
||||
break;
|
||||
default:
|
||||
if (isset($_POST[$config_id])) {
|
||||
$cpm_config->properties[$config_id] = $_POST[$config_id];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//if (function_exists('get_site_option')) {
|
||||
// cpm_wpmu_save_options();
|
||||
// $cpm_config->is_wp_options = true;
|
||||
//}
|
||||
|
||||
if (!$cpm_config->is_wp_options) {
|
||||
if (!$do_write) {
|
||||
$file_output = write_comicpress_config_functions_php($cpm_config->config_filepath, true, $use_default_file);
|
||||
$cpm_config->properties = $original_properties;
|
||||
if ($use_default_file) {
|
||||
$cpm_config->messages[] = __("<strong>No comicpress-config.php file was found in your theme folder.</strong> Using default configuration file.", 'comicpress-manager');
|
||||
}
|
||||
$cpm_config->messages[] = __("<strong>Your configuration:</strong>", 'comicpress-manager') . "<pre class=\"code-block\">" . htmlentities($file_output) . "</pre>";
|
||||
} else {
|
||||
if (!is_null($cpm_config->config_filepath)) {
|
||||
if (is_array($file_output = write_comicpress_config_functions_php($cpm_config->config_filepath))) {
|
||||
$cpm_config->config_method = read_current_theme_comicpress_config();
|
||||
$cpm_config->path = get_comic_folder_path();
|
||||
$cpm_config->plugin_path = PLUGINDIR . '/' . plugin_basename(__FILE__);
|
||||
|
||||
cpm_read_information_and_check_config();
|
||||
|
||||
$backup_file = pathinfo($file_output[0], PATHINFO_BASENAME);
|
||||
|
||||
$cpm_config->messages[] = sprintf(__("<strong>Configuration updated and original config backed up to %s.</strong> Rename this file to comicpress-config.php if you are having problems.", 'comicpress-manager'), $backup_file);
|
||||
|
||||
} else {
|
||||
$relative_path = substr(realpath($cpm_config->config_filepath), CPM_STRLEN_REALPATH_DOCUMENT_ROOT);
|
||||
$cpm_config->warnings[] = sprintf(__("<strong>Configuration not updated</strong>, check the permissions of %s and the theme folder. They should be writable by the Webserver process. Alternatively, copy and paste the following code into your comicpress-config.php file:", 'comicpress-manager'), $relative_path) . "<pre class=\"code-block\">" . htmlentities($file_output) . "</pre>";
|
||||
|
||||
$cpm_config->properties = $original_properties;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cpm_read_information_and_check_config();
|
||||
|
||||
$cpm_config->messages[] = sprintf(__("<strong>Configuration updated in database.</strong>", 'comicpress-manager'), $backup_file);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
58
actions/comicpress_update-cpm-config.php
Normal file
58
actions/comicpress_update-cpm-config.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_update_cpm_config() {
|
||||
global $cpm_config;
|
||||
|
||||
include(realpath(dirname(__FILE__)) . '/../cpm_configuration_options.php');
|
||||
|
||||
$all_valid = true;
|
||||
$target_update_options = array();
|
||||
foreach ($configuration_options as $option_info) {
|
||||
$target_key = 'comicpress-manager-' . $option_info['id'];
|
||||
switch ($option_info['type']) {
|
||||
case "text":
|
||||
case "textarea":
|
||||
case "dropdown":
|
||||
if (isset($_POST[$option_info['id']])) {
|
||||
$validate_function_name = "cpm_validate_cpm_option_" . str_replace("-", "_", $option_info['id']);
|
||||
$ok = true;
|
||||
if (function_exists($validate_function_name)) {
|
||||
$ok = call_user_func($validate_function_name, $_POST[$option_info['id']]);
|
||||
}
|
||||
if ($ok) {
|
||||
$target_update_options[$target_key] = $_POST[$option_info['id']];
|
||||
} else {
|
||||
$all_valid = false;
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "checkbox":
|
||||
$target_update_options[$target_key] = (isset($_POST[$option_info['id']]) ? "1" : "0");
|
||||
break;
|
||||
case "categories":
|
||||
if (isset($_POST[$option_info['id']])) {
|
||||
$all_categories = implode(",", $_POST[$option_info['id']]);
|
||||
$target_update_options[$target_key] = $all_categories;
|
||||
} else {
|
||||
$target_update_options[$target_key] = "";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($all_valid) {
|
||||
cpm_read_information_and_check_config();
|
||||
|
||||
foreach ($target_update_options as $option => $value) { update_option($option, $value); }
|
||||
$cpm_config->messages[] = __("<strong>ComicPress Manager configuration updated.</strong>", 'comicpress-manager');
|
||||
} else {
|
||||
$cpm_config->warnings[] = __("<strong>You entered invalid data into your configuration.</strong> Configuration not updated.", 'comicpress-manager');
|
||||
}
|
||||
}
|
||||
|
||||
function cpm_validate_cpm_option_cpm_default_post_time($value) {
|
||||
return (strtotime("2008-01-01 {$value}") !== false);
|
||||
}
|
||||
|
||||
?>
|
38
actions/comicpress_write-comic-post.php
Normal file
38
actions/comicpress_write-comic-post.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
function cpm_action_write_comic_post() {
|
||||
global $cpm_config;
|
||||
|
||||
$files_to_handle = array();
|
||||
if (isset($_FILES['upload'])) {
|
||||
if (is_uploaded_file($_FILES['upload']['tmp_name'])) {
|
||||
$files_to_handle[] = 'upload';
|
||||
}
|
||||
}
|
||||
|
||||
if (count($files_to_handle) > 0) {
|
||||
list($posts_created, $duplicated_posts) = cpm_handle_file_uploads($files_to_handle);
|
||||
|
||||
if (count($posts_created) > 0) {
|
||||
if (count($posts_created) == 1) {
|
||||
?><script type="text/javascript">document.location.href = "post.php?action=edit&post=<?php echo $posts_created[0]['ID'] ?>";</script><?php
|
||||
} else {
|
||||
$cpm_config->warnings[] = __("<strong>More than one new post was generated!</strong> Please report this error.", 'comicpress-manager');
|
||||
}
|
||||
}
|
||||
|
||||
if (count($duplicated_posts) > 0) {
|
||||
if (count($duplicated_posts) == 1) {
|
||||
?><script type="text/javascript">document.location.href = "post.php?action=edit&post=<?php echo $duplicated_posts[0][0]['ID'] ?>";</script><?php
|
||||
} else {
|
||||
$cpm_config->warnings[] = __("<strong>More than one duplicate post was found!</strong> Please report this error.", 'comicpress-manager');
|
||||
}
|
||||
}
|
||||
|
||||
$cpm_config->warnings[] = __("<strong>No posts were created, and no duplicate posts could be found!</strong>", 'comicpress-manager');
|
||||
} else {
|
||||
$cpm_config->warnings[] = __("<strong>You didn't upload any files!</strong>", 'comicpress-manager');
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
BIN
comicpress-icon.png
Normal file
BIN
comicpress-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 905 B |
40
comicpress-manager.php
Normal file
40
comicpress-manager.php
Normal file
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
/*
|
||||
Plugin Name: ComicPress Manager
|
||||
Plugin URI: http://www.coswellproductions.com/wordpress/wordpress-plugins/
|
||||
Description: Manage the comics within a <a href="http://www.comicpress.org/">ComicPress</a> theme installation.
|
||||
Version: 1.4.5
|
||||
Author: John Bintz
|
||||
Author URI: http://www.coswellproductions.com/wordpress/
|
||||
|
||||
Copyright 2009 John Bintz (email : john@coswellproductions.com)
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* The loader for the rest of the plugin components.
|
||||
*/
|
||||
|
||||
// load the config, since you can do useful things with this in your theme
|
||||
require_once('comicpress_manager_config.php');
|
||||
|
||||
// only load the plugin code of we're in the administration part of WordPress.
|
||||
if (WP_ADMIN === true) {
|
||||
require_once('comicpress_manager_admin.php');
|
||||
}
|
||||
|
||||
?>
|
1574
comicpress-manager.pot
Normal file
1574
comicpress-manager.pot
Normal file
File diff suppressed because it is too large
Load Diff
2487
comicpress_manager_admin.php
Normal file
2487
comicpress_manager_admin.php
Normal file
File diff suppressed because it is too large
Load Diff
56
comicpress_manager_config.php
Normal file
56
comicpress_manager_config.php
Normal file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
// Select the level of access you want editors on your site to have.
|
||||
|
||||
$access_level = 10; // Administrator only
|
||||
//$access_level = 5; // Editors only
|
||||
//$access_level = 2; // Authors & Editors
|
||||
|
||||
define("CPM_SCALE_NONE", 0);
|
||||
define("CPM_SCALE_IMAGEMAGICK", 1);
|
||||
define("CPM_SCALE_GD", 2);
|
||||
|
||||
$result = get_option('comicpress-manager-cpm-date-format');
|
||||
if (!empty($result)) {
|
||||
define("CPM_DATE_FORMAT", $result);
|
||||
} else {
|
||||
define("CPM_DATE_FORMAT", "Y-m-d");
|
||||
}
|
||||
|
||||
// for Windows users, your permissions will automatically be set to 0777 (writable).
|
||||
// there is no easy way in PHP to modify permissions on an NTFS filesystem (and no
|
||||
// permissions to speak of on FAT32!)
|
||||
|
||||
if (strpos(PHP_OS, "WIN") !== false) {
|
||||
// for Windows users
|
||||
define("CPM_FILE_UPLOAD_CHMOD", 0777);
|
||||
} else {
|
||||
$result = get_option('comicpress-manager-cpm-upload-permissions');
|
||||
$chmod_to_use = 0664; // writable by owner and any group members (common)
|
||||
if (!empty($result)) {
|
||||
$requested_chmod_to_use = 0;
|
||||
$strlen_result = strlen($result);
|
||||
$is_ok = true;
|
||||
for ($i = 0; $i < $strlen_result; ++$i) {
|
||||
$char = $result{$strlen_result - 1 - $i};
|
||||
if (preg_match('#[0-7]#', $char) > 0) {
|
||||
$requested_chmod_to_use = $requested_chmod_to_use + ($char * pow(8, $i));
|
||||
} else {
|
||||
$is_ok = false;
|
||||
}
|
||||
}
|
||||
if ($is_ok) {
|
||||
$chmod_to_use = $requested_chmod_to_use;
|
||||
}
|
||||
}
|
||||
define("CPM_FILE_UPLOAD_CHMOD", $chmod_to_use);
|
||||
}
|
||||
|
||||
// CPM_DOCUMENT_ROOT override
|
||||
|
||||
$result = get_option("comicpress-manager-cpm-document-root");
|
||||
if (!empty($result)) {
|
||||
define('CPM_DOCUMENT_ROOT', untrailingslashit($result));
|
||||
}
|
||||
|
||||
?>
|
47
comicpress_manager_count_missing_entries.php
Normal file
47
comicpress_manager_count_missing_entries.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
global $blog_id;
|
||||
|
||||
if (!function_exists('add_action')) {
|
||||
require_once("../../../wp-config.php");
|
||||
}
|
||||
|
||||
if (WP_ADMIN) {
|
||||
require_once('comicpress_manager_config.php');
|
||||
require_once('comicpress_manager_library.php');
|
||||
|
||||
cpm_get_cpm_document_root();
|
||||
|
||||
$cpm_config = new ComicPressConfig();
|
||||
|
||||
cpm_read_information_and_check_config();
|
||||
|
||||
if (isset($_REQUEST['blog_id']) && function_exists('switch_to_blog')) {
|
||||
switch_to_blog((int)$_REQUEST['blog_id']);
|
||||
}
|
||||
|
||||
// TODO: handle different comic categories differently, this is still too geared
|
||||
// toward one blog/one comic...
|
||||
$all_post_dates = array();
|
||||
|
||||
foreach (cpm_query_posts() as $comic_post) {
|
||||
$all_post_dates[] = date(CPM_DATE_FORMAT, strtotime($comic_post->post_date));
|
||||
}
|
||||
$all_post_dates = array_unique($all_post_dates);
|
||||
|
||||
ob_start();
|
||||
$missing_comic_count = 0;
|
||||
foreach (cpm_read_comics_folder() as $comic_file) {
|
||||
$comic_file = pathinfo($comic_file, PATHINFO_BASENAME);
|
||||
if (($result = cpm_breakdown_comic_filename($comic_file)) !== false) {
|
||||
if (!in_array($result['date'], $all_post_dates)) {
|
||||
if (($post_hash = generate_post_hash($result['date'], $result['converted_title'])) !== false) {
|
||||
$missing_comic_count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
header("X-JSON: {missing_posts: ${missing_comic_count}}");
|
||||
ob_end_flush();
|
||||
}
|
||||
?>
|
763
comicpress_manager_library.php
Normal file
763
comicpress_manager_library.php
Normal file
@ -0,0 +1,763 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Functions that are tested by test_comicpress_manager.php live here,
|
||||
* to reduce the amount of WordPress simulation necessary for testing.
|
||||
*/
|
||||
|
||||
class ComicPressConfig {
|
||||
var $properties = array(
|
||||
// Leave these alone! These values should be read from your comicpress-config.php file.
|
||||
// If your values from comicpress-config.php are not being read, then something is wrong in your config.
|
||||
'comic_folder' => 'comics',
|
||||
'comiccat' => '1',
|
||||
'blogcat' => '2',
|
||||
'rss_comic_folder' => 'comics',
|
||||
'archive_comic_folder' => 'comics',
|
||||
'archive_comic_width' => '380',
|
||||
'rss_comic_width' => '380',
|
||||
'blog_postcount' => '10'
|
||||
);
|
||||
|
||||
var $warnings, $messages, $errors, $detailed_warnings, $show_config_editor;
|
||||
var $config_method, $config_filepath, $path, $plugin_path;
|
||||
var $comic_files, $blog_category_info, $comic_category_info;
|
||||
var $scale_method_cache, $identify_method_cache, $can_write_config;
|
||||
var $need_calendars = false;
|
||||
var $is_wp_options = false;
|
||||
|
||||
var $import_safe_exit = null;
|
||||
var $did_first_run;
|
||||
|
||||
var $is_cpm_managing_posts, $is_cpm_modifying_categories;
|
||||
var $wpmu_disk_space_message;
|
||||
|
||||
var $separate_thumbs_folder_defined = array('rss' => null, 'archive' => null);
|
||||
var $thumbs_folder_writable = array('rss' => null, 'archive' => null);
|
||||
var $allowed_extensions = array("gif", "jpg", "jpeg", "png");
|
||||
|
||||
function get_scale_method() {
|
||||
if (!isset($this->scale_method_cache)) {
|
||||
$this->scale_method_cache = CPM_SCALE_NONE;
|
||||
$result = @shell_exec("which convert") . @shell_exec("which identify");
|
||||
if (!empty($result)) {
|
||||
$this->scale_method_cache = CPM_SCALE_IMAGEMAGICK;
|
||||
} else {
|
||||
if (extension_loaded("gd")) {
|
||||
$this->scale_method_cache = CPM_SCALE_GD;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $this->scale_method_cache;
|
||||
}
|
||||
|
||||
function ComicPressConfig() {
|
||||
if (function_exists('cpm_wpmu_config_setup')) { cpm_wpmu_config_setup($this); }
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a ComicPress Manager option from WP Options.
|
||||
*/
|
||||
function cpm_option($name) { return get_option("comicpress-manager-${name}"); }
|
||||
|
||||
/**
|
||||
* Calculate the document root where comics are stored.
|
||||
*/
|
||||
function cpm_calculate_document_root() {
|
||||
global $cpm_attempted_document_roots;
|
||||
$cpm_attempted_document_roots = array();
|
||||
|
||||
$document_root = null;
|
||||
|
||||
$parsed_url = parse_url(get_option('home'));
|
||||
|
||||
$translated_script_filename = str_replace('\\', '/', $_SERVER['SCRIPT_FILENAME']);
|
||||
|
||||
foreach (array('SCRIPT_NAME', 'SCRIPT_URL') as $var_to_try) {
|
||||
$root_to_try = substr($translated_script_filename, 0, -strlen($_SERVER[$var_to_try])) . $parsed_url['path'];
|
||||
$cpm_attempted_document_roots[] = $root_to_try;
|
||||
|
||||
if (file_exists($root_to_try . '/index.php')) {
|
||||
$document_root = $root_to_try;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (is_null($document_root)) { $document_root = $_SERVER['DOCUMENT_ROOT'] . $parsed_url['path']; }
|
||||
|
||||
//if (function_exists('get_site_option')) {
|
||||
// $document_root = cpm_wpmu_modify_path($document_root);
|
||||
//}
|
||||
|
||||
return untrailingslashit($document_root);
|
||||
}
|
||||
|
||||
/**
|
||||
* Define the constants for the document root.
|
||||
*/
|
||||
function cpm_get_cpm_document_root() {
|
||||
if (!defined('CPM_DOCUMENT_ROOT')) {
|
||||
define('CPM_DOCUMENT_ROOT', cpm_calculate_document_root());
|
||||
define("CPM_STRLEN_REALPATH_DOCUMENT_ROOT", strlen(realpath(CPM_DOCUMENT_ROOT)));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Transform a date()-compatible string into a human-parseable string.
|
||||
* Useful for generating examples of date() usage.
|
||||
*/
|
||||
function cpm_transform_date_string($string, $replacements) {
|
||||
if (!is_array($replacements)) { return false; }
|
||||
if (!is_string($string)) { return false; }
|
||||
|
||||
$transformed_string = $string;
|
||||
foreach (array("Y", "m", "d") as $required_key) {
|
||||
if (!isset($replacements[$required_key])) { return false; }
|
||||
$transformed_string = preg_replace('#(?<![\\\])' . $required_key . '#', $replacements[$required_key], $transformed_string);
|
||||
}
|
||||
|
||||
$transformed_string = str_replace('\\', '', $transformed_string);
|
||||
return $transformed_string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate an example date string.
|
||||
*/
|
||||
function cpm_generate_example_date($example_date) {
|
||||
return cpm_transform_date_string($example_date, array('Y' => "YYYY", 'm' => "MM", 'd' => "DD"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the URI to a comic file.
|
||||
*/
|
||||
function cpm_build_comic_uri($filename, $base_dir = null) {
|
||||
if (!is_null($base_dir)) {
|
||||
if (strlen($filename) < strlen($base_dir)) { return false; }
|
||||
}
|
||||
if (($realpath_result = realpath($filename)) !== false) {
|
||||
$filename = $realpath_result;
|
||||
}
|
||||
if (!is_null($base_dir)) {
|
||||
$filename = substr($filename, strlen($base_dir));
|
||||
}
|
||||
$parts = explode('/', str_replace('\\', '/', $filename));
|
||||
if (count($parts) < 2) { return false; }
|
||||
|
||||
$parsed_url = parse_url(get_bloginfo('url'));
|
||||
$path = $parsed_url['path'];
|
||||
//if (function_exists('get_site_option')) { $path = cpm_wpmu_fix_admin_uri($path); }
|
||||
|
||||
$count = (cpm_get_subcomic_directory() !== false) ? 3 : 2;
|
||||
|
||||
return $path . '/' . implode('/', array_slice($parts, -$count, $count));
|
||||
}
|
||||
|
||||
/**
|
||||
* Breakdown the name of a comic file into a date and proper title.
|
||||
*/
|
||||
function cpm_breakdown_comic_filename($filename, $allow_override = false) {
|
||||
$pattern = CPM_DATE_FORMAT;
|
||||
if ($allow_override) {
|
||||
if (isset($_POST['upload-date-format']) && !empty($_POST['upload-date-format'])) { $pattern = $_POST['upload-date-format']; }
|
||||
}
|
||||
|
||||
$pattern = cpm_transform_date_string($pattern, array("Y" => '[0-9]{4,4}',
|
||||
"m" => '[0-9]{2,2}',
|
||||
"d" => '[0-9]{2,2}'));
|
||||
|
||||
if (preg_match("/^(${pattern})(.*)\.[^\.]+$/", $filename, $matches) > 0) {
|
||||
list($all, $date, $title) = $matches;
|
||||
|
||||
if (strtotime($date) === false) { return false; }
|
||||
$converted_title = ucwords(trim(preg_replace('/[\-\_]/', ' ', $title)));
|
||||
|
||||
return compact('date', 'title', 'converted_title');
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a hash for passing to wp_insert_post()
|
||||
* @param string $filename_date The post date.
|
||||
* @param string $filename_converted_title The title of the comic.
|
||||
* @return array The post information or false if the date is invalid.
|
||||
*/
|
||||
function generate_post_hash($filename_date, $filename_converted_title) {
|
||||
if (isset($_POST['time']) && !empty($_POST['time'])) {
|
||||
if (strtolower($_POST['time']) == "now") {
|
||||
$filename_date .= " " . strftime("%H:%M:%S");
|
||||
} else {
|
||||
$filename_date .= " " . $_POST['time'];
|
||||
}
|
||||
}
|
||||
if (($timestamp = strtotime($filename_date)) !== false) {
|
||||
if ($filename_converted_title == "") {
|
||||
$filename_converted_title = strftime("%m/%d/%Y", $timestamp);
|
||||
}
|
||||
|
||||
extract(cpm_normalize_storyline_structure());
|
||||
|
||||
$selected_categories = array();
|
||||
if (isset($_POST['in-comic-category'])) {
|
||||
foreach ($category_tree as $node) {
|
||||
$category_id = end(explode("/", $node));
|
||||
if (in_array($category_id, $_POST['in-comic-category'])) {
|
||||
$selected_categories[$category_id] = get_cat_name($category_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$category_name = implode(",", array_values($selected_categories));
|
||||
|
||||
$post_content = "";
|
||||
if (isset($_POST['content']) && !empty($_POST['content'])) {
|
||||
$post_content = $_POST['content'];
|
||||
$post_content = preg_replace('/\{date\}/', date('F j, Y', $timestamp), $post_content);
|
||||
$post_content = preg_replace('/\{title\}/', $filename_converted_title, $post_content);
|
||||
$post_content = preg_replace('/\{category\}/', $category_name, $post_content);
|
||||
}
|
||||
|
||||
$override_title = $_POST['override-title-to-use'];
|
||||
$tags = $_POST['tags'];
|
||||
if (get_magic_quotes_gpc()) {
|
||||
$override_title = stripslashes($override_title);
|
||||
$tags = stripslashes($tags);
|
||||
}
|
||||
|
||||
$post_title = !empty($override_title) ? $override_title : $filename_converted_title;
|
||||
$post_date = date('Y-m-d H:i:s', $timestamp);
|
||||
$post_date_gmt = get_gmt_from_date($post_date);
|
||||
$post_category = array_keys($selected_categories);
|
||||
|
||||
if (isset($_POST['additional-categories'])) {
|
||||
if (is_array($_POST['additional-categories'])) {
|
||||
$post_category = array_merge($post_category, array_intersect(get_all_category_ids(), $_POST['additional-categories']));
|
||||
}
|
||||
}
|
||||
|
||||
$publish_mode = ($timestamp > time()) ? "future" : "publish";
|
||||
$post_status = isset($_POST['publish']) ? $publish_mode : "draft";
|
||||
$tags_input = $tags;
|
||||
|
||||
return compact('post_content', 'post_title', 'post_date', 'post_date_gmt', 'post_category', 'post_status', 'tags_input');
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve posts from the WordPress database.
|
||||
*/
|
||||
function cpm_query_posts() {
|
||||
global $cpm_config;
|
||||
$query_posts_string = "posts_per_page=999999&post_status=draft,pending,future,inherit,publish&cat=";
|
||||
|
||||
$comic_categories = array();
|
||||
extract(cpm_get_all_comic_categories());
|
||||
foreach ($category_tree as $node) {
|
||||
$comic_categories[] = end(explode("/", $node));
|
||||
}
|
||||
|
||||
$query_posts_string .= implode(",", $comic_categories);
|
||||
|
||||
$result = query_posts($query_posts_string);
|
||||
if (empty($result)) { $result = array(); }
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the absolute filepath to the comic folder.
|
||||
*/
|
||||
function get_comic_folder_path() {
|
||||
global $cpm_config;
|
||||
|
||||
$output = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties['comic_folder'];
|
||||
|
||||
if (($subdir = cpm_get_subcomic_directory()) !== false) {
|
||||
$output .= '/' . $subdir;
|
||||
}
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
function cpm_get_subcomic_directory() {
|
||||
global $cpm_config;
|
||||
|
||||
if (function_exists('get_option')) {
|
||||
$result = get_option('comicpress-manager-manage-subcomic');
|
||||
if (!empty($result)) {
|
||||
if ($result != $cpm_config->properties['comiccat']) {
|
||||
if (($category= get_category($result)) !== false) {
|
||||
return $category->slug;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find all the valid comics in the comics folder.
|
||||
* If CPM_SKIP_CHECKS is enabled, comic file validity is not checked, improving speed.
|
||||
* @return array The list of valid comic files in the comic folder.
|
||||
*/
|
||||
function cpm_read_comics_folder() {
|
||||
global $cpm_config;
|
||||
|
||||
$glob_results = glob(get_comic_folder_path() . "/*");
|
||||
if ($glob_results === false) {
|
||||
//$cpm_config->messages[] = "FYI: glob({$cpm_config->path}/*) returned false. This can happen on some PHP installations if you have no files in your comic directory. This message will disappear once you upload a comic to your site.";
|
||||
return array();
|
||||
}
|
||||
|
||||
$filtered_glob_results = array();
|
||||
foreach ($glob_results as $result) {
|
||||
if (in_array(strtolower(pathinfo($result, PATHINFO_EXTENSION)), $cpm_config->allowed_extensions)) {
|
||||
$filtered_glob_results[] = $result;
|
||||
}
|
||||
}
|
||||
|
||||
if (cpm_option("cpm-skip-checks") == 1) {
|
||||
return $filtered_glob_results;
|
||||
} else {
|
||||
$files = array();
|
||||
foreach ($filtered_glob_results as $file) {
|
||||
if (cpm_breakdown_comic_filename(pathinfo($file, PATHINFO_BASENAME)) !== false) {
|
||||
$files[] = $file;
|
||||
}
|
||||
}
|
||||
return $files;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read information about the current installation.
|
||||
*/
|
||||
function cpm_read_information_and_check_config() {
|
||||
global $cpm_config, $cpm_attempted_document_roots, $blog_id;
|
||||
|
||||
$cpm_config->config_method = read_current_theme_comicpress_config();
|
||||
$cpm_config->config_filepath = get_functions_php_filepath();
|
||||
$cpm_config->can_write_config = can_write_comicpress_config($cpm_config->config_filepath);
|
||||
|
||||
$cpm_config->path = get_comic_folder_path();
|
||||
$cpm_config->plugin_path = PLUGINDIR . '/' . plugin_basename(__FILE__);
|
||||
|
||||
foreach (array_keys($cpm_config->separate_thumbs_folder_defined) as $type) {
|
||||
$cpm_config->separate_thumbs_folder_defined[$type] = ($cpm_config->properties['comic_folder'] != $cpm_config->properties[$type . '_comic_folder']);
|
||||
}
|
||||
|
||||
$cpm_config->errors = array();
|
||||
$cpm_config->warnings = array();
|
||||
$cpm_config->detailed_warnings = array();
|
||||
$cpm_config->messages = array();
|
||||
$cpm_config->show_config_editor = true;
|
||||
|
||||
$folders = array(
|
||||
array('comic folder', 'comic_folder', true, ""),
|
||||
array('RSS feed folder', 'rss_comic_folder', false, 'rss'),
|
||||
array('archive folder', 'archive_comic_folder', false, 'archive'));
|
||||
|
||||
foreach ($folders as $folder_info) {
|
||||
list ($name, $property, $is_fatal, $thumb_type) = $folder_info;
|
||||
if ($thumb_type != "") {
|
||||
$cpm_config->thumbs_folder_writable[$thumb_type] = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (cpm_option("cpm-skip-checks") == 1) {
|
||||
// if the user knows what they're doing, disabling all of the checks improves performance
|
||||
foreach ($folders as $folder_info) {
|
||||
list ($name, $property, $is_fatal, $thumb_type) = $folder_info;
|
||||
$path = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties[$property];
|
||||
if ($thumb_type != "") {
|
||||
$cpm_config->thumbs_folder_writable[$thumb_type] = true;
|
||||
}
|
||||
}
|
||||
$cpm_config->comic_category_info = get_object_vars(get_category($cpm_config->properties['comiccat']));
|
||||
$cpm_config->blog_category_info = get_object_vars(get_category($cpm_config->properties['blogcat']));
|
||||
$cpm_config->comic_files = cpm_read_comics_folder();
|
||||
} else {
|
||||
// quick check to see if the theme is ComicPress.
|
||||
// this needs to be made more robust.
|
||||
if (preg_match('/ComicPress/', get_current_theme()) == 0) {
|
||||
$cpm_config->detailed_warnings[] = __("The current theme isn't the ComicPress theme. If you've renamed the theme, ignore this warning.", 'comicpress-manager');
|
||||
}
|
||||
|
||||
$any_cpm_document_root_failures = false;
|
||||
|
||||
//if (!function_exists('get_site_option')) {
|
||||
// is the site root configured properly?
|
||||
if (!file_exists(CPM_DOCUMENT_ROOT)) {
|
||||
$cpm_config->errors[] = sprintf(__('The comics site root <strong>%s</strong> does not exist. Check your <a href="options-general.php">WordPress address and address settings</a>.', 'comicpress-manager'), CPM_DOCUMENT_ROOT);
|
||||
$any_cpm_document_root_failures = true;
|
||||
}
|
||||
|
||||
if (!file_exists(CPM_DOCUMENT_ROOT . '/index.php')) {
|
||||
$cpm_config->errors[] = sprintf(__('The comics site root <strong>%s</strong> does not contain a WordPress index.php file. Check your <a href="options-general.php">WordPress address and address settings</a>.', 'comicpress-manager'), CPM_DOCUMENT_ROOT);
|
||||
$any_cpm_document_root_failures = true;
|
||||
}
|
||||
//}
|
||||
|
||||
if ($any_cpm_document_root_failures) {
|
||||
$cpm_config->errors[] = print_r($cpm_attempted_document_roots, true);
|
||||
}
|
||||
|
||||
// folders that are the same as the comics folder won't be written to
|
||||
$all_the_same = array();
|
||||
foreach ($cpm_config->separate_thumbs_folder_defined as $type => $value) {
|
||||
if (!$value) { $all_the_same[] = $type; }
|
||||
}
|
||||
|
||||
if (count($all_the_same) > 0) {
|
||||
$cpm_config->detailed_warnings[] = sprintf(__("The <strong>%s</strong> folders and the comics folder are the same. You won't be able to generate thumbnails until you change these folders.", 'comicpress-manager'), implode(", ", $all_the_same));
|
||||
}
|
||||
|
||||
if (cpm_option('cpm-did-first-run') == 1) {
|
||||
// check the existence and writability of all image folders
|
||||
foreach ($folders as $folder_info) {
|
||||
list ($name, $property, $is_fatal, $thumb_type) = $folder_info;
|
||||
if (($thumb_type == "") || ($cpm_config->separate_thumbs_folder_defined[$thumb_type] == true)) {
|
||||
$path = CPM_DOCUMENT_ROOT . '/' . $cpm_config->properties[$property];
|
||||
if (!file_exists($path)) {
|
||||
$cpm_config->errors[] = sprintf(__('The %1$s <strong>%2$s</strong> does not exist. Did you create it within the <strong>%3$s</strong> folder?' , 'comicpress-manager'), $name, $cpm_config->properties[$property], CPM_DOCUMENT_ROOT);
|
||||
} else {
|
||||
do {
|
||||
$tmp_filename = "test-" . md5(rand());
|
||||
} while (file_exists($path . '/' . $tmp_filename));
|
||||
|
||||
$ok_to_warn = true;
|
||||
if ($thumb_type != "") {
|
||||
$ok_to_warn = (cpm_option("cpm-${thumb_type}-generate-thumbnails") == 1);
|
||||
}
|
||||
|
||||
if ($ok_to_warn) {
|
||||
if (!@touch($path . '/' . $tmp_filename)) {
|
||||
$message = sprintf(__('The %1$s <strong>%2$s</strong> is not writable by the Webserver.', 'comicpress-manager'), $name, $cpm_config->properties[$property]);
|
||||
if ($is_fatal) {
|
||||
$cpm_config->errors[] = $message;
|
||||
} else {
|
||||
$cpm_config->warnings[] = $message;
|
||||
}
|
||||
if ($thumb_type != "") {
|
||||
$cpm_config->thumbs_folder_writable[$thumb_type] = false;
|
||||
}
|
||||
} else {
|
||||
if (@stat($path . '/' . $tmp_filename) === false) {
|
||||
$cpm_config->errors[] = __('<strong>Files written to the %s directory by the Webserver cannot be read again!</strong> Are you using IIS7 with FastCGI?', $cpm_config->properties[$property]);
|
||||
if ($thumb_type != "") {
|
||||
$cpm_config->thumbs_folder_writable[$thumb_type] = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (is_null($cpm_config->thumbs_folder_writable[$thumb_type])) {
|
||||
@unlink($path . '/' . $tmp_filename);
|
||||
if ($thumb_type != "") {
|
||||
$cpm_config->thumbs_folder_writable[$thumb_type] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// to generate thumbnails, a supported image processor is needed
|
||||
if ($cpm_config->get_scale_method() == CPM_SCALE_NONE) {
|
||||
$cpm_config->detailed_warnings[] = __("No image resize methods are installed (GD or ImageMagick). You are unable to generate thumbnails automatically.", 'comicpress-manager');
|
||||
}
|
||||
|
||||
// are there enough categories created?
|
||||
if (count(get_all_category_ids()) < 2) {
|
||||
$cpm_config->errors[] = __("You need to define at least two categories, a blog category and a comics category, to use ComicPress. Visit <a href=\"categories.php\">Manage -> Categories</a> and create at least two categories, then return here to continue your configuration.", 'comicpress-manager');
|
||||
$cpm_config->show_config_editor = false;
|
||||
} else {
|
||||
// ensure the defined comic category exists
|
||||
if (is_null($cpm_config->properties['comiccat'])) {
|
||||
// all non-blog categories are comic categories
|
||||
$cpm_config->comic_category_info = array(
|
||||
'name' => __("All other categories", 'comicpress-manager'),
|
||||
);
|
||||
$cpm_config->properties['comiccat'] = array_diff(get_all_category_ids(), array($cpm_config->properties['blogcat']));
|
||||
|
||||
if (count($cpm_config->properties['comiccat']) == 1) {
|
||||
$cpm_config->properties['comiccat'] = $cpm_config->properties['comiccat'][0];
|
||||
$cpm_config->comic_category_info = get_object_vars(get_category($cpm_config->properties['comiccat']));
|
||||
}
|
||||
} else {
|
||||
if (!is_numeric($cpm_config->properties['comiccat'])) {
|
||||
// the property is non-numeric
|
||||
$cpm_config->errors[] = __("The comic category needs to be defined as a number, not an alphanumeric string.", 'comicpress-manager');
|
||||
} else {
|
||||
// one comic category is specified
|
||||
if (is_null($cpm_config->comic_category_info = get_category($cpm_config->properties['comiccat']))) {
|
||||
$cpm_config->errors[] = sprintf(__("The requested category ID for your comic, <strong>%s</strong>, doesn't exist!", 'comicpress-manager'), $cpm_config->properties['comiccat']);
|
||||
} else {
|
||||
$cpm_config->comic_category_info = get_object_vars($cpm_config->comic_category_info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ensure the defined blog category exists
|
||||
// TODO: multiple blog categories
|
||||
if (!is_numeric($cpm_config->properties['blogcat'])) {
|
||||
// the property is non-numeric
|
||||
$cpm_config->errors[] = __("The blog category needs to be defined as a number, not an alphanumeric string.", 'comicpress-manager');
|
||||
} else {
|
||||
if (is_null($cpm_config->blog_category_info = get_category($cpm_config->properties['blogcat']))) {
|
||||
$cpm_config->errors[] = sprintf(__("The requested category ID for your blog, <strong>%s</strong>, doesn't exist!", 'comicpress-manager'), $cpm_config->properties['blogcat']);
|
||||
} else {
|
||||
$cpm_config->blog_category_info = get_object_vars($cpm_config->blog_category_info);
|
||||
}
|
||||
|
||||
if (!is_array($cpm_config->properties['blogcat']) && !is_array($cpm_config->properties['comiccat'])) {
|
||||
if ($cpm_config->properties['blogcat'] == $cpm_config->properties['comiccat']) {
|
||||
$cpm_config->warnings[] = __("Your comic and blog categories are the same. This will cause browsing problems for visitors to your site.", 'comicpress-manager');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// a quick note if you have no comics uploaded.
|
||||
// could be a sign of something more serious.
|
||||
if (count($cpm_config->comic_files = cpm_read_comics_folder()) == 0) {
|
||||
$cpm_config->detailed_warnings[] = __("Your comics folder is empty!", 'comicpress-manager');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the ComicPress config from a file.
|
||||
*/
|
||||
function read_current_theme_comicpress_config() {
|
||||
global $cpm_config;
|
||||
|
||||
//if (function_exists('get_site_option')) {
|
||||
// cpm_wpmu_load_options();
|
||||
// return __("WordPress Options", 'comicpress-manager');
|
||||
//}
|
||||
|
||||
$current_theme_info = get_theme(get_current_theme());
|
||||
|
||||
$method = null;
|
||||
|
||||
$config_json_file = ABSPATH . '/' . $current_theme_info['Template Dir'] . '/config.json';
|
||||
|
||||
// harmonious json_decode
|
||||
if (function_exists("json_decode")) {
|
||||
if (file_exists($config_json_file)) {
|
||||
$config = json_decode(file_get_contents($config_json_file), true);
|
||||
|
||||
$cpm_config->properties = array_merge($cpm_config->properties, $config);
|
||||
$method = "config.json";
|
||||
}
|
||||
}
|
||||
//harmonious_end
|
||||
|
||||
if (is_null($method)) {
|
||||
if (!is_null($filepath = get_functions_php_filepath())) {
|
||||
read_comicpress_config_functions_php($filepath);
|
||||
$method = basename($filepath);
|
||||
}
|
||||
}
|
||||
|
||||
return $method;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the ComicPress config from a functions.php file.
|
||||
* Note: this isn't super-robust, but should cover basic use cases.
|
||||
*/
|
||||
function read_comicpress_config_functions_php($filepath) {
|
||||
global $cpm_config;
|
||||
|
||||
if (!file_exists($filepath)) { $cpm_config->warnings[] = "file not found: ${filepath}"; return; }
|
||||
|
||||
$file = file_get_contents($filepath);
|
||||
|
||||
$variable_values = array();
|
||||
|
||||
foreach (array_keys($cpm_config->properties) as $variable) {
|
||||
if (preg_match("#\\$${variable}\ *\=\ *([^\;]*)\;#", $file, $matches) > 0) {
|
||||
$variable_values[$variable] = preg_replace('#"#', '', $matches[1]);
|
||||
}
|
||||
}
|
||||
|
||||
$cpm_config->properties = array_merge($cpm_config->properties, $variable_values);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the path to the currently used config.
|
||||
*/
|
||||
function get_functions_php_filepath() {
|
||||
$template_files = glob(TEMPLATEPATH . '/*');
|
||||
if ($template_files === false) { $template_files = array(); }
|
||||
|
||||
foreach (array("comicpress-config.php", "functions.php") as $possible_file) {
|
||||
foreach ($template_files as $file) {
|
||||
if (pathinfo($file, PATHINFO_BASENAME) == $possible_file) {
|
||||
return $file;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* See if we can write to the config folder.
|
||||
*/
|
||||
function can_write_comicpress_config($filepath) {
|
||||
$perm_check_filename = $filepath . '-' . md5(rand());
|
||||
if (@touch($perm_check_filename) === true) {
|
||||
$move_check_filename = $perm_check_filename . '-' . md5(rand());
|
||||
if (@rename($perm_check_filename, $move_check_filename)) {
|
||||
@unlink($move_check_filename);
|
||||
return true;
|
||||
} else {
|
||||
@unlink($perm_check_filename);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function cpm_get_thumbnails_to_generate() {
|
||||
global $cpm_config;
|
||||
$thumbnails_to_generate = array();
|
||||
|
||||
if ($cpm_config->get_scale_method() != CPM_SCALE_NONE) {
|
||||
foreach ($cpm_config->thumbs_folder_writable as $type => $value) {
|
||||
if ($value) {
|
||||
if ($cpm_config->separate_thumbs_folder_defined[$type] !== false) {
|
||||
if (cpm_option("cpm-${type}-generate-thumbnails") == 1) {
|
||||
$thumbnails_to_generate[] = $type;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $thumbnails_to_generate;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a tree of the categories that are children of the comic category.
|
||||
*/
|
||||
function cpm_get_all_comic_categories() {
|
||||
global $cpm_config;
|
||||
|
||||
$max_id = 0;
|
||||
|
||||
foreach (get_all_category_ids() as $category_id) {
|
||||
$category = get_category($category_id);
|
||||
$category_tree[] = $category->parent . '/' . $category_id;
|
||||
$max_id = max($max_id, $category_id);
|
||||
}
|
||||
|
||||
do {
|
||||
$all_ok = true;
|
||||
for ($i = 0; $i < count($category_tree); ++$i) {
|
||||
$current_parts = explode("/", $category_tree[$i]);
|
||||
if (reset($current_parts) != 0) {
|
||||
|
||||
$all_ok = false;
|
||||
for ($j = 0; $j < count($category_tree); ++$j) {
|
||||
$j_parts = explode("/", $category_tree[$j]);
|
||||
|
||||
if (end($j_parts) == reset($current_parts)) {
|
||||
$category_tree[$i] = implode("/", array_merge($j_parts, array_slice($current_parts, 1)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} while (!$all_ok);
|
||||
|
||||
$new_category_tree = array();
|
||||
foreach ($category_tree as $node) {
|
||||
$parts = explode("/", $node);
|
||||
if ($parts[1] == $cpm_config->properties['comiccat']) { $new_category_tree[] = $node; }
|
||||
}
|
||||
$category_tree = $new_category_tree;
|
||||
|
||||
return compact('category_tree', 'max_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Normalize a storyline structure, merging it with category changes as necessary.
|
||||
* @return array A compact()ed array with the $max_id found and the $category_tree.
|
||||
*/
|
||||
function cpm_normalize_storyline_structure() {
|
||||
global $cpm_config;
|
||||
|
||||
extract(cpm_get_all_comic_categories());
|
||||
|
||||
do {
|
||||
$did_normalize = false;
|
||||
|
||||
// sort it by this order as best as possible
|
||||
if ($result = get_option("comicpress-storyline-category-order")) {
|
||||
$sorted_tree = explode(",", $result);
|
||||
|
||||
$new_sorted_tree = array();
|
||||
foreach ($sorted_tree as $node) {
|
||||
if (in_array($node, $category_tree)) {
|
||||
$new_sorted_tree[] = $node;
|
||||
} else {
|
||||
$did_normalize = true;
|
||||
}
|
||||
}
|
||||
$sorted_tree = $new_sorted_tree;
|
||||
|
||||
foreach ($category_tree as $node) {
|
||||
if (!in_array($node, $sorted_tree)) {
|
||||
// try to find the nearest sibling
|
||||
$parts = explode("/", $node);
|
||||
|
||||
while (count($parts) > 0) {
|
||||
array_pop($parts);
|
||||
$node_snippit = implode("/", $parts);
|
||||
$last_sibling = null;
|
||||
for ($i = 0; $i < count($sorted_tree); ++$i) {
|
||||
if (strpos($sorted_tree[$i], $node_snippit) === 0) {
|
||||
$last_sibling = $i;
|
||||
}
|
||||
}
|
||||
if (!is_null($last_sibling)) {
|
||||
$did_normalize = true;
|
||||
array_splice($sorted_tree, $last_sibling + 1, 0, $node);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$category_tree = $sorted_tree;
|
||||
} else {
|
||||
sort($category_tree);
|
||||
}
|
||||
if ($did_normalize || empty($result)) {
|
||||
update_option("comicpress-storyline-category-order", implode(",", $category_tree));
|
||||
}
|
||||
} while ($did_normalize);
|
||||
|
||||
return compact('category_tree', 'max_id');
|
||||
}
|
||||
|
||||
function cpm_short_size_string_to_bytes($string) {
|
||||
$max_bytes = trim($string);
|
||||
|
||||
$last = strtolower(substr($max_bytes, -1, 1));
|
||||
switch($last) {
|
||||
case 'g': $max_bytes *= 1024;
|
||||
case 'm': $max_bytes *= 1024;
|
||||
case 'k': $max_bytes *= 1024;
|
||||
}
|
||||
|
||||
return $max_bytes;
|
||||
}
|
||||
|
||||
?>
|
147
comicpress_script.js
Normal file
147
comicpress_script.js
Normal file
@ -0,0 +1,147 @@
|
||||
/**
|
||||
* hide/show the new post holder box depending on the status of the checkbox.
|
||||
*/
|
||||
function hide_show_checkbox_holder(which, reverse) {
|
||||
if (reverse !== true) { reverse = false; }
|
||||
if ($(which + '-checkbox').checked !== reverse) {
|
||||
$(which + '-holder').show();
|
||||
} else {
|
||||
$(which + '-holder').hide();
|
||||
}
|
||||
}
|
||||
|
||||
function setup_hide_show_checkbox_holder(which) {
|
||||
Event.observe(which + '-checkbox', 'click', function() { hide_show_checkbox_holder(which) });
|
||||
hide_show_checkbox_holder(which);
|
||||
}
|
||||
|
||||
function hide_show_div_on_checkbox(div, checkbox, flip_behavior) {
|
||||
if ($(checkbox) && $(div)) {
|
||||
ok = (flip_behavior) ? !$(checkbox).checked : $(checkbox).checked;
|
||||
(ok) ? $(div).show() : $(div).hide();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the preview image for deleting an image.
|
||||
*/
|
||||
function change_image_preview() {
|
||||
var which = $F('delete-comic-dropdown');
|
||||
$('image-preview').innerHTML = '<img src="' + which + '" width="420" />';
|
||||
}
|
||||
|
||||
var current_file_index = 0;
|
||||
var current_file_upload_count = 0;
|
||||
|
||||
var on_change_file_upload_count = null;
|
||||
|
||||
/**
|
||||
* Add a file upload field.
|
||||
*/
|
||||
function add_file_upload() {
|
||||
var field = "<div class=\"upload-holder\" id=\"upload-holder-" + current_file_index + "\">";
|
||||
field += messages['add_file_upload_file'] + "<input size=\"35\" type=\"file\" name=\"upload-" + current_file_index + "\" />";
|
||||
field += " [<a href=\"#\" onclick=\"remove_file_upload('" + current_file_index + "');\">" + messages['add_file_upload_remove'] + "</a>]";
|
||||
field += "</div>";
|
||||
Element.insert('multiple-file-upload', { bottom: field });
|
||||
current_file_index++;
|
||||
current_file_upload_count++;
|
||||
|
||||
if (on_change_file_upload_count) { on_change_file_upload_count(current_file_upload_count); }
|
||||
}
|
||||
|
||||
function remove_file_upload(which) {
|
||||
Element.remove('upload-holder-' + which);
|
||||
current_file_upload_count--;
|
||||
|
||||
if (on_change_file_upload_count) { on_change_file_upload_count(current_file_upload_count); }
|
||||
}
|
||||
|
||||
// page startup code
|
||||
Event.observe(window, 'load', function() {
|
||||
if ($('multiple-new-post-checkbox')) {
|
||||
setup_hide_show_checkbox_holder("multiple-new-post");
|
||||
add_file_upload();
|
||||
|
||||
hide_show_div_on_checkbox('override-title-holder', 'override-title');
|
||||
hide_show_div_on_checkbox('thumbnail-write-holder', 'no-thumbnails', true);
|
||||
}
|
||||
|
||||
if ($('upload-destination')) {
|
||||
var toggle_upload_destination_holder = function() {
|
||||
var show_upload_destination = true;
|
||||
if ($('overwrite-existing-file-selector-checkbox')) {
|
||||
show_upload_destination = !$('overwrite-existing-file-selector-checkbox').checked;
|
||||
}
|
||||
|
||||
if (show_upload_destination) {
|
||||
if ($('upload-destination').options[$('upload-destination').selectedIndex].value == "comic") {
|
||||
$('upload-destination-holder').show();
|
||||
} else {
|
||||
$('upload-destination-holder').hide();
|
||||
}
|
||||
} else {
|
||||
$('upload-destination-holder').hide();
|
||||
}
|
||||
};
|
||||
Event.observe('upload-destination', 'change', toggle_upload_destination_holder);
|
||||
toggle_upload_destination_holder();
|
||||
|
||||
on_change_file_upload_count = function(count) {
|
||||
if (count == 1) {
|
||||
Element.show('specify-date-holder');
|
||||
Element.show('overwrite-existing-holder');
|
||||
} else {
|
||||
Element.hide('specify-date-holder');
|
||||
Element.hide('overwrite-existing-holder');
|
||||
if ($('overwrite-existing-file-selector-checkbox')) {
|
||||
$('overwrite-existing-file-selector-checkbox').checked = false;
|
||||
}
|
||||
toggle_upload_destination_holder();
|
||||
}
|
||||
hide_show_checkbox_holder('overwrite-existing-file-selector');
|
||||
}
|
||||
|
||||
if ($('overwrite-existing-file-selector-checkbox')) {
|
||||
Event.observe('overwrite-existing-file-selector-checkbox', 'click', function() {
|
||||
hide_show_checkbox_holder('overwrite-existing-file-selector');
|
||||
toggle_upload_destination_holder();
|
||||
});
|
||||
}
|
||||
|
||||
if ($('overwrite-existing-file-selector-checkbox')) {
|
||||
hide_show_checkbox_holder('overwrite-existing-file-selector');
|
||||
}
|
||||
}
|
||||
|
||||
if ($('count-missing-posts-clicker')) {
|
||||
hide_show_div_on_checkbox('override-title-holder', 'override-title');
|
||||
hide_show_div_on_checkbox('thumbnail-write-holder', 'no-thumbnails', true);
|
||||
|
||||
Event.observe('count-missing-posts-clicker', 'click', function() {
|
||||
$('missing-posts-display').innerHTML = "..." + messages['count_missing_posts_counting'] + "...";
|
||||
|
||||
new Ajax.Request(ajax_request_uri,
|
||||
{
|
||||
method: 'post',
|
||||
parameters: {
|
||||
action: "count-missing-posts"
|
||||
},
|
||||
onSuccess: function(transport) {
|
||||
if (transport.responseText.match(/missing-posts>(.*)<\/missing-posts/)) {
|
||||
$('missing-posts-display').innerHTML = RegExp.$1;
|
||||
} else {
|
||||
$('missing-posts-display').innerHTML = messages['count_missing_posts_none_missing'];
|
||||
}
|
||||
},
|
||||
onFailure: function(transport) {
|
||||
$('missing-posts-display').innerHTML = messages['failure_in_counting_posts'];
|
||||
}
|
||||
}
|
||||
);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
if ($('image-preview')) { change_image_preview(); }
|
||||
});
|
298
comicpress_styles.css
Normal file
298
comicpress_styles.css
Normal file
@ -0,0 +1,298 @@
|
||||
div#cpm-container {
|
||||
padding: 10px;
|
||||
padding-bottom: 0;
|
||||
width: 955px
|
||||
}
|
||||
|
||||
div#cpm-container.no-sidebar {
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
div#cpm-container h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
div#cpm-container h2 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
div#cpm-container div h2 {
|
||||
padding-top: 0;
|
||||
font-size: 20px;
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif
|
||||
}
|
||||
|
||||
div#cpm-container h3 { margin-top: 0 }
|
||||
|
||||
div#cpm-container em { font-style: oblique }
|
||||
|
||||
div#cpm-container div#cpm-sidebar-column {
|
||||
float: left;
|
||||
display: inline;
|
||||
width: 320px;
|
||||
padding-top: 10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
div#cpm-container div#cpm-activity-column {
|
||||
float: left;
|
||||
display: inline;
|
||||
width: 625px;
|
||||
}
|
||||
|
||||
div#cpm-container div#cpm-activity-column.no-sidebar {
|
||||
margin-left: 0;
|
||||
float: none;
|
||||
display: block;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
div#cpm-container div#comicpress-details {
|
||||
border: solid #E3E3E3 1px;
|
||||
background-color: #f1f1f1;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
div#cpm-container div#comicpress-details ul {
|
||||
list-style-type: circle
|
||||
}
|
||||
|
||||
div#cpm-container div#comicpress-help {
|
||||
border: solid #464646 1px;
|
||||
background-color: #b0b0b0;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
padding: 10px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
div#cpm-container div#config-editor {
|
||||
border: solid #abc 1px;
|
||||
background-color: #fed;
|
||||
padding: 10px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
form#config-editor h3 {
|
||||
margin-bottom: 5px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
form#config-editor table.form-table {
|
||||
padding-bottom: 10px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
div#cpm-container div.activity-box {
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
div#cpm-container div.top-activity-box {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
div#cpm-container div#cpm-footer {
|
||||
color: #777;
|
||||
margin-top: 10px;
|
||||
text-align: left;
|
||||
clear: both;
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
div#cpm-footer-paypal {
|
||||
width: 100px;
|
||||
float: right;
|
||||
display: inline;
|
||||
text-align: right
|
||||
}
|
||||
|
||||
div#zip-upload-warning {
|
||||
border: solid red 1px;
|
||||
background-color: #dcc;
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
div#image-preview {
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
background-color: #777;
|
||||
border: solid black 2px
|
||||
}
|
||||
|
||||
div#editor-toolbar {
|
||||
text-align: right;
|
||||
overflow: hidden
|
||||
}
|
||||
|
||||
div#editor-toolbar a {
|
||||
padding: 5px;
|
||||
display: block;
|
||||
float: right;
|
||||
cursor: pointer;
|
||||
cursor: hand;
|
||||
}
|
||||
|
||||
div#editor-toolbar a.active {
|
||||
background-color: #CEE1EF
|
||||
}
|
||||
|
||||
form#config-editor input.update-config {
|
||||
clear: both;
|
||||
width: 295px;
|
||||
}
|
||||
|
||||
.form-title {
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
form span.form-title {
|
||||
width: 280px;
|
||||
display: block;
|
||||
position: absolute;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
form span.form-field {
|
||||
width: 200px;
|
||||
display: inline;
|
||||
margin-left: 290px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
table td {
|
||||
padding-bottom: 5px
|
||||
}
|
||||
|
||||
table input {
|
||||
font-size: 12px;
|
||||
border: solid black 1px;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
#cpm-container h2 { padding-right: 0; }
|
||||
|
||||
#comicpress-details h3 {
|
||||
color: #7f958a;
|
||||
border-bottom: 1px solid #acb;
|
||||
}
|
||||
|
||||
#comicpress-help h2 {
|
||||
color: #333333;
|
||||
border-color: #333333;
|
||||
}
|
||||
|
||||
#categories-table { border-top: solid #aaa 1px }
|
||||
|
||||
#categories-table th { padding: 0 10px }
|
||||
|
||||
#categories-table td { border-top: solid #ddd 1px; }
|
||||
|
||||
.code-block {
|
||||
background-color: white;
|
||||
border:solid black 2px;
|
||||
padding: 5px;
|
||||
overflow: auto;
|
||||
height: 300px;
|
||||
font-family: 'courier new';
|
||||
white-space: pre;
|
||||
display: block
|
||||
}
|
||||
|
||||
div.upload-holder {
|
||||
text-align: center;
|
||||
padding: 3px 0;
|
||||
border-top: solid #ddd 1px;
|
||||
}
|
||||
|
||||
div#cpm-messages, div#cpm-errors, div#cpm-warnings, div#import-count-information {
|
||||
padding: 5px;
|
||||
margin-bottom: 5px;
|
||||
border-width: 1px;
|
||||
border-style: solid
|
||||
}
|
||||
|
||||
div#cpm-messages, div#import-count-information {
|
||||
background-color: #ffe;
|
||||
border-color: #ddc;
|
||||
}
|
||||
|
||||
div#cpm-warnings {
|
||||
background-color: #fee;
|
||||
border-color: #dcc;
|
||||
}
|
||||
|
||||
div#cpm-errors {
|
||||
background-color: #330007;
|
||||
border-color: #a00;
|
||||
color: white
|
||||
}
|
||||
|
||||
div#import-count-information {
|
||||
text-align: center
|
||||
}
|
||||
|
||||
div#first-run-holder {
|
||||
border: solid #a77 1px;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
background-color: #fff0f0;
|
||||
padding: 5px;
|
||||
text-align: center;
|
||||
margin-top: 10px
|
||||
}
|
||||
|
||||
div#dashboard_quomicpress div.wrap {
|
||||
margin: 0
|
||||
}
|
||||
|
||||
div#dashboard_quomicpress div#cpm-container {
|
||||
padding: 0
|
||||
}
|
||||
|
||||
div#comicpress-latest-posts h3 {
|
||||
text-align: center;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
div#comicpress-latest-posts div.comic-found,
|
||||
div#comicpress-latest-posts div.comic-not-found {
|
||||
border-top: solid #aaa 1px;
|
||||
padding: 0 5px 5px;
|
||||
}
|
||||
|
||||
div#comicpress-latest-posts div.comic-not-found {
|
||||
background-color: #ffe0e0
|
||||
}
|
||||
|
||||
div#comicpress-latest-posts div.comic-not-found div.alert {
|
||||
border: solid #a00 2px;
|
||||
margin: 10px;
|
||||
padding: 10px;
|
||||
background-color: white;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
font-weight: bold
|
||||
}
|
||||
|
||||
tr.grey { background-color: #d4d4d4 }
|
||||
|
||||
table#status-table {
|
||||
width: 100%
|
||||
}
|
||||
|
||||
table#status-table td.comic {
|
||||
background-color: #f3f3f3;
|
||||
}
|
||||
|
||||
table#status-table td.post {
|
||||
background-color: #e0e0e0;
|
||||
}
|
68
cp_configuration_options.php
Normal file
68
cp_configuration_options.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
$comicpress_configuration_options = array(
|
||||
array(
|
||||
'id' => 'comiccat',
|
||||
'name' => 'Comic Category',
|
||||
'type' => 'category',
|
||||
'description' => 'The category ID of your comic category',
|
||||
'default' => 1
|
||||
),
|
||||
array(
|
||||
'id' => 'blogcat',
|
||||
'name' => 'Blog Category',
|
||||
'type' => 'category',
|
||||
'description' => 'The category ID of your blog category',
|
||||
'default' => 2
|
||||
),
|
||||
array(
|
||||
'id' => 'comics_path',
|
||||
'variable_name' => 'comic_folder',
|
||||
'name' => 'Comic Folder',
|
||||
'type' => 'folder',
|
||||
'description' => 'The folder your comics are located in',
|
||||
'default' => "comics",
|
||||
'no_wpmu' => true
|
||||
),
|
||||
array(
|
||||
'id' => 'comicsrss_path',
|
||||
'variable_name' => 'rss_comic_folder',
|
||||
'name' => 'RSS Comic Folder',
|
||||
'type' => 'folder',
|
||||
'description' => 'The folder your comics are located in for the RSS feed',
|
||||
'default' => "comics-rss",
|
||||
'no_wpmu' => true
|
||||
),
|
||||
array(
|
||||
'id' => 'comicsarchive_path',
|
||||
'variable_name' => 'archive_comic_folder',
|
||||
'name' => 'Archive Comic Folder',
|
||||
'type' => 'folder',
|
||||
'description' => 'The folder your comics are located in for the Archive pages',
|
||||
'default' => "comics-archive",
|
||||
'no_wpmu' => true
|
||||
),
|
||||
array(
|
||||
'id' => 'archive_comic_width',
|
||||
'name' => 'Archive Comic Width',
|
||||
'type' => 'integer',
|
||||
'description' => 'The width your comics will appear on archive or search results',
|
||||
'default' => "380"
|
||||
),
|
||||
array(
|
||||
'id' => 'rss_comic_width',
|
||||
'name' => 'RSS Comic Width',
|
||||
'type' => 'integer',
|
||||
'description' => 'The width your comics will appear in the RSS feed',
|
||||
'default' => "380"
|
||||
),
|
||||
array(
|
||||
'id' => 'blog_postcount',
|
||||
'name' => 'Blog Post Count',
|
||||
'type' => 'integer',
|
||||
'description' => 'The number of blog entries to appear on the home page',
|
||||
'default' => "10"
|
||||
),
|
||||
);
|
||||
|
||||
?>
|
158
cpm_configuration_options.php
Normal file
158
cpm_configuration_options.php
Normal file
@ -0,0 +1,158 @@
|
||||
<?php
|
||||
|
||||
// the list of all CPM configuration options that are saved to wp_options
|
||||
|
||||
$configuration_options = array(
|
||||
'Basic Configuration',
|
||||
array(
|
||||
'id' => 'cpm-default-post-time',
|
||||
'name' => "Default Post Time",
|
||||
'type' => 'text',
|
||||
'size' => 8,
|
||||
'default' => '12:00am',
|
||||
'message' => "Default time for comic posts to go live, cannot be blank. enter 'now' to always post at the current system time.",
|
||||
'not_blank' => true
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-default-post-content',
|
||||
'name' => "Default Post Content",
|
||||
'type' => 'textarea',
|
||||
'message' => "Default content for comic posts"
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-default-override-title',
|
||||
'name' => "Default Post Title",
|
||||
'type' => 'text',
|
||||
'size' => 40,
|
||||
'message' => "Default title for comic posts"
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-default-post-tags',
|
||||
'name' => "Default Post Tags",
|
||||
'type' => 'text',
|
||||
'size' => 40,
|
||||
'message' => "Default tags for comic posts"
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-default-comic-category-is-last-storyline',
|
||||
'name' => "Default Comic Category is Last Storyline Category",
|
||||
'type' => 'checkbox',
|
||||
'default' => "1",
|
||||
'message' => "If checked, the default comic cateogry for upload/import is the last category in the storyline"
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-default-additional-categories',
|
||||
'name' => "Default Additional Categories",
|
||||
'type' => 'categories',
|
||||
'message' => "Additional default categories for comic posts"
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-archive-generate-thumbnails',
|
||||
'name' => "Generate Archive Thumbnails?",
|
||||
'type' => 'checkbox',
|
||||
'default' => "1",
|
||||
'message' => "If checked and server is configured correctly, generate archive thumbnails"
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-rss-generate-thumbnails',
|
||||
'name' => "Generate RSS Thumbnails?",
|
||||
'type' => 'checkbox',
|
||||
'default' => "1",
|
||||
'message' => "If checked and server is configured correctly, generate RSS thumbnails"
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-thumbnail-quality',
|
||||
'name' => "Thumbnail Quality",
|
||||
'type' => 'text',
|
||||
'size' => 3,
|
||||
'default' => "80",
|
||||
'message' => "Quality of JPEG Thumbnails"
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-strip-icc-profiles',
|
||||
'name' => "Strip ICC Profiles",
|
||||
'type' => 'checkbox',
|
||||
'default' => "1",
|
||||
'message' => "Strip ICC profiles from uploaded images. ImageMagick only.",
|
||||
'imagemagick-only' => true
|
||||
),
|
||||
array(
|
||||
'id' => 'cpm-obfuscate-filenames-on-upload',
|
||||
'name' => "Obfuscate Filenames on Upload?",
|
||||
'type' => 'dropdown',
|
||||
'options' => "none:No obfuscation|append:Append code to title|replace:Replace title with code",
|
||||
'default' => "none",
|
||||
'message' => "add or replace the title of the image file with a random code to prevent nosy readers from looking ahead in your archive"
|
||||
),
|
||||
"Advanced Configuration",
|
||||
array(
|
||||
"id" => "cpm-skip-checks",
|
||||
"name" => "Skip Checks?",
|
||||
"type" => "checkbox",
|
||||
'default' => "1",
|
||||
"message" => "if you know your configuration is correct, enable this to improve performance. Enabling this also hides ComicPress version incompatibiity messages."
|
||||
),
|
||||
array(
|
||||
"id" => "cpm-edit-post-integrate",
|
||||
"name" => "Allow date change/deletions in Edit Post to affect associated comic files?",
|
||||
"type" => "checkbox",
|
||||
'default' => "1",
|
||||
"message" => "if checked, working in Edit Post will affect your comic files"
|
||||
),
|
||||
array(
|
||||
"id" => "cpm-sidebar-type",
|
||||
"name" => "ComicPress Manager Sidebar:",
|
||||
"type" => "dropdown",
|
||||
'options' => 'standard:ComicPress Status and Help|latest:Latest Comic Posts|none:No Sidebar',
|
||||
'default' => "standard",
|
||||
"message" => "change the ComicPress Manager sidebar to a different default view"
|
||||
),
|
||||
array(
|
||||
"id" => "cpm-date-format",
|
||||
"name" => "ComicPress Manager Date Format",
|
||||
"type" => "text",
|
||||
"size" => 12,
|
||||
'default' => "Y-m-d",
|
||||
"message" => "if you've hacked on ComicPress to support a different date format, change it here"
|
||||
),
|
||||
array(
|
||||
"id" => "cpm-perform-gd-check",
|
||||
"name" => "Check uploaded files using GD?",
|
||||
"type" => "checkbox",
|
||||
'default' => "1",
|
||||
"message" => "enable this to check if uploaded files are valid images using the GD library"
|
||||
),
|
||||
array(
|
||||
"id" => "cpm-enable-dashboard-rss-feed",
|
||||
"name" => "Enable the ComicPress RSS Feed on the Dashboard?",
|
||||
"type" => "checkbox",
|
||||
'default' => "1",
|
||||
"message" => "enable this to get the latest ComicPress news on your Dashboard"
|
||||
),
|
||||
array(
|
||||
"id" => "cpm-enable-quomicpress",
|
||||
"name" => "Enable the QuomicPress (Quick ComicPress) panel on the Dashboard?",
|
||||
"type" => "checkbox",
|
||||
'default' => "1",
|
||||
"message" => "enable this to use the QuomicPress (Quick ComicPress) posting box on your Dashboard"
|
||||
),
|
||||
array(
|
||||
"id" => "cpm-upload-permissions",
|
||||
"name" => "Unix chmod permissions to assign to uploaded files?",
|
||||
"type" => "text",
|
||||
"size" => 5,
|
||||
"strip-wpmu" => true,
|
||||
'default' => "664",
|
||||
"message" => "if you're on a Unix-like operating system, and need to have files uploaded with specific permissions, enter them in here. Windows systems always upload with chmod 777"
|
||||
),
|
||||
array(
|
||||
"id" => "cpm-document-root",
|
||||
"name" => "Specify a WordPress DOCUMENT_ROOT",
|
||||
"type" => "text",
|
||||
"strip-wpmu" => true,
|
||||
"size" => 30,
|
||||
"message" => "if ComicPress Manager isn't able to automatically find the path to your index.php file and comics folders, enter in the proper absolute path here"
|
||||
),
|
||||
);
|
||||
|
||||
?>
|
46
js/comicpress_dates.js
Normal file
46
js/comicpress_dates.js
Normal file
@ -0,0 +1,46 @@
|
||||
function pad(s, l) { s = "0000" + (s + ""); return s.substr(s.length - l, l); }
|
||||
|
||||
function get_date_string(date) {
|
||||
return date.getFullYear() + "-" + pad(date.getMonth() + 1, 2) + "-" + pad(date.getDate(), 2);
|
||||
}
|
||||
|
||||
function reschedule_posts(start) {
|
||||
var start_processing = false;
|
||||
var interval = null;
|
||||
var current_date = null;
|
||||
var current_interval = 0;
|
||||
for (var i = 0, l = comic_files_keys.length; i < l; ++i) {
|
||||
if (start_processing) {
|
||||
current_date += (interval[current_interval] * 86400 * 1000);
|
||||
current_interval = (current_interval + 1) % interval.length;
|
||||
|
||||
date_string = get_date_string(new Date(current_date));
|
||||
|
||||
$('dates[' + comic_files_keys[i] + ']').value = date_string;
|
||||
$('holder-' + comic_files_keys[i]).style.backgroundColor = "#ddd";
|
||||
}
|
||||
if (comic_files_keys[i] == start) {
|
||||
start_processing = true;
|
||||
interval = prompt(days_between_posts_message, "7");
|
||||
|
||||
if (interval !== null) {
|
||||
var all_valid = true;
|
||||
var parts = interval.split(",");
|
||||
for (var j = 0, jl = parts.length; j < jl; ++j) {
|
||||
if (!parts[j].toString().match(/^\d+$/)) { all_valid = false; break; }
|
||||
}
|
||||
|
||||
if (all_valid) {
|
||||
interval = parts;
|
||||
date_parts = $F('dates[' + comic_files_keys[i] + ']').split("-");
|
||||
current_date = Date.UTC(date_parts[0], date_parts[1] - 1, date_parts[2], 2) + 86400 * 1000;
|
||||
} else {
|
||||
alert(interval + " " + valid_interval_message);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
165
js/comicpress_script.js
Normal file
165
js/comicpress_script.js
Normal file
@ -0,0 +1,165 @@
|
||||
/**
|
||||
* hide/show the new post holder box depending on the status of the checkbox.
|
||||
*/
|
||||
function hide_show_checkbox_holder(which, reverse) {
|
||||
if (reverse !== true) { reverse = false; }
|
||||
($(which + '-checkbox').checked !== reverse) ? new Effect.Appear(which + '-holder') : new Effect.BlindUp(which + '-holder');
|
||||
}
|
||||
|
||||
function setup_hide_show_checkbox_holder(which) {
|
||||
Event.observe(which + '-checkbox', 'click', function() { hide_show_checkbox_holder(which) });
|
||||
hide_show_checkbox_holder(which);
|
||||
}
|
||||
|
||||
function hide_show_div_on_checkbox(div, checkbox, flip_behavior) {
|
||||
if ($(checkbox) && $(div)) {
|
||||
ok = (flip_behavior) ? !$(checkbox).checked : $(checkbox).checked;
|
||||
(ok) ? new Effect.Appear(div) : new Effect.BlindUp(div);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the preview image for deleting an image.
|
||||
*/
|
||||
function change_image_preview() {
|
||||
var which = $F('delete-comic-dropdown');
|
||||
$('image-preview').innerHTML = '<img src="' + which + '" width="420" />';
|
||||
}
|
||||
|
||||
var current_file_index = 0;
|
||||
var current_file_upload_count = 0;
|
||||
|
||||
var on_change_file_upload_count = null;
|
||||
|
||||
/**
|
||||
* Add a file upload field.
|
||||
*/
|
||||
function add_file_upload() {
|
||||
var field = "<div class=\"upload-holder\" id=\"upload-holder-" + current_file_index + "\">";
|
||||
field += messages['add_file_upload_file'] + "<input size=\"35\" type=\"file\" name=\"upload-" + current_file_index + "\" />";
|
||||
field += " [<a href=\"#\" onclick=\"remove_file_upload('" + current_file_index + "');\">" + messages['add_file_upload_remove'] + "</a>]";
|
||||
field += "</div>";
|
||||
Element.insert('multiple-file-upload', { bottom: field });
|
||||
current_file_index++;
|
||||
current_file_upload_count++;
|
||||
|
||||
if (on_change_file_upload_count) { on_change_file_upload_count(current_file_upload_count); }
|
||||
}
|
||||
|
||||
function remove_file_upload(which) {
|
||||
Element.remove('upload-holder-' + which);
|
||||
current_file_upload_count--;
|
||||
|
||||
if (on_change_file_upload_count) { on_change_file_upload_count(current_file_upload_count); }
|
||||
}
|
||||
|
||||
// page startup code
|
||||
function prepare_comicpress_manager() {
|
||||
if ($('multiple-new-post-checkbox')) {
|
||||
setup_hide_show_checkbox_holder("multiple-new-post");
|
||||
add_file_upload();
|
||||
|
||||
hide_show_div_on_checkbox('override-title-holder', 'override-title');
|
||||
hide_show_div_on_checkbox('thumbnail-write-holder', 'no-thumbnails', true);
|
||||
|
||||
var add_to_tags = function(href) {
|
||||
var all_tags = [];
|
||||
if (!$F('tags').empty()) {
|
||||
all_tags = $F('tags').replace(new RegExp("s*\,\s*"), ",").split(",");
|
||||
}
|
||||
|
||||
if (all_tags.indexOf(href.innerHTML) == -1) {
|
||||
all_tags.push(href.innerHTML);
|
||||
}
|
||||
|
||||
$('tags').value = all_tags.join(",");
|
||||
}
|
||||
|
||||
$$('a.tag').each(function(href) {
|
||||
Event.observe(href, 'click', function(e) {
|
||||
Event.stop(e);
|
||||
add_to_tags(href);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
var handle_show_rebuild_thumbnails = function(e) {
|
||||
(($F('overwrite-existing-file-choice') != "") && ($F('upload-destination') == "comic")) ? $('rebuild-thumbnails').show() : $('rebuild-thumbnails').hide();
|
||||
};
|
||||
|
||||
if ($('overwrite-existing-file-choice')) {
|
||||
Event.observe('overwrite-existing-file-choice', 'change', handle_show_rebuild_thumbnails);
|
||||
handle_show_rebuild_thumbnails();
|
||||
}
|
||||
|
||||
if ($('replace-comic-rebuild-thumbnails') && $('thumbnails')) {
|
||||
Event.observe($('replace-comic-rebuild-thumbnails'), 'click', function(e) {
|
||||
$('thumbnails').checked = $('replace-comic-rebuild-thumbnails').checked;
|
||||
});
|
||||
}
|
||||
|
||||
if ($('upload-destination')) {
|
||||
var toggle_upload_destination_holder = function() {
|
||||
if ($F('overwrite-existing-file-choice') == "") {
|
||||
if ($('upload-destination').options[$('upload-destination').selectedIndex].value == "comic") {
|
||||
new Effect.Appear('upload-destination-holder');
|
||||
} else {
|
||||
new Effect.BlindUp('upload-destination-holder');
|
||||
}
|
||||
} else {
|
||||
new Effect.BlindUp('upload-destination-holder');
|
||||
}
|
||||
handle_show_rebuild_thumbnails();
|
||||
};
|
||||
Event.observe('upload-destination', 'change', toggle_upload_destination_holder);
|
||||
toggle_upload_destination_holder();
|
||||
|
||||
on_change_file_upload_count = function(count) {
|
||||
if (count == 1) {
|
||||
new Effect.Appear('specify-date-holder');
|
||||
new Effect.Appear('overwrite-existing-holder');
|
||||
} else {
|
||||
new Effect.BlindUp('specify-date-holder');
|
||||
new Effect.BlindUp('overwrite-existing-holder');
|
||||
toggle_upload_destination_holder();
|
||||
}
|
||||
}
|
||||
|
||||
if ($('overwrite-existing-file-choice')) {
|
||||
Event.observe('overwrite-existing-file-choice', 'change', function() {
|
||||
toggle_upload_destination_holder();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if ($('count-missing-posts-clicker')) {
|
||||
hide_show_div_on_checkbox('override-title-holder', 'override-title');
|
||||
hide_show_div_on_checkbox('thumbnail-write-holder', 'no-thumbnails', true);
|
||||
|
||||
Event.observe('count-missing-posts-clicker', 'click', function() {
|
||||
$('missing-posts-display').innerHTML = "..." + messages['count_missing_posts_counting'] + "...";
|
||||
|
||||
new Ajax.Request(ajax_request_uri,
|
||||
{
|
||||
method: 'post',
|
||||
parameters: {
|
||||
action: "count-missing-posts"
|
||||
},
|
||||
onSuccess: function(transport) {
|
||||
if (transport.headerJSON) {
|
||||
$('missing-posts-display').innerHTML = transport.headerJSON.missing_posts;
|
||||
} else {
|
||||
$('missing-posts-display').innerHTML = messages['count_missing_posts_none_missing'];
|
||||
}
|
||||
},
|
||||
onFailure: function(transport) {
|
||||
$('missing-posts-display').innerHTML = messages['failure_in_counting_posts'];
|
||||
}
|
||||
}
|
||||
);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
if ($('image-preview')) { change_image_preview(); }
|
||||
}
|
63
js/comicpress_status.js
Normal file
63
js/comicpress_status.js
Normal file
@ -0,0 +1,63 @@
|
||||
var active_filters = {};
|
||||
|
||||
function toggle_filter(id) {
|
||||
if (active_filters[id] === undefined) { active_filters[id] = false; }
|
||||
active_filters[id] = !active_filters[id];
|
||||
|
||||
var any_filters_active = false;
|
||||
for (var key in active_filters) {
|
||||
if (active_filters[key] === true) {
|
||||
any_filters_active = true; break;
|
||||
}
|
||||
}
|
||||
|
||||
if (top.console && top.console.log) {
|
||||
top.console.log(active_filters);
|
||||
}
|
||||
|
||||
var rows = document.getElementsByClassName('data-row');
|
||||
for (var i = 0, il = rows.length; i < il; ++i) {
|
||||
if (any_filters_active) {
|
||||
var filter_active = false;
|
||||
for (var key in active_filters) {
|
||||
if (top.console && top.console.log) {
|
||||
top.console.log(key);
|
||||
}
|
||||
if (active_filters[key] === true) {
|
||||
if (rows[i].hasClassName(key)) {
|
||||
filter_active = true; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (top.console && top.console.log) {
|
||||
top.console.log(i + ": " + filter_active);
|
||||
}
|
||||
if (filter_active) {
|
||||
Element.show(rows[i]);
|
||||
} else {
|
||||
Element.hide(rows[i]);
|
||||
}
|
||||
} else {
|
||||
Element.show(rows[i]);
|
||||
}
|
||||
}
|
||||
|
||||
for (var key in active_filters) {
|
||||
var target = $(key);
|
||||
if (active_filters[key] === true) {
|
||||
if (!Element.hasClassName(target, 'enabled')) { Element.addClassName(target, 'enabled'); }
|
||||
} else {
|
||||
if (Element.hasClassName(target, 'enabled')) { Element.removeClassName(target, 'enabled'); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function setup_status_togglers() {
|
||||
var togglers = document.getElementsByClassName('toggler');
|
||||
for (var i = 0; i < togglers.length; ++i) {
|
||||
Event.observe(togglers[i], 'click', function(e) {
|
||||
var element = Event.element(e);
|
||||
toggle_filter(element.id);
|
||||
});
|
||||
}
|
||||
}
|
6
js/minified-comicpress_dates.js
Normal file
6
js/minified-comicpress_dates.js
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
function pad(s,l){s="0000"+(s+"");return s.substr(s.length-l,l);}
|
||||
function get_date_string(date){return date.getFullYear()+"-"+pad(date.getMonth()+1,2)+"-"+pad(date.getDate(),2);}
|
||||
function reschedule_posts(start){var start_processing=false;var interval=null;var current_date=null;var current_interval=0;for(var i=0,l=comic_files_keys.length;i<l;++i){if(start_processing){current_date+=(interval[current_interval]*86400*1000);current_interval=(current_interval+1)%interval.length;date_string=get_date_string(new Date(current_date));$('dates['+comic_files_keys[i]+']').value=date_string;$('holder-'+comic_files_keys[i]).style.backgroundColor="#ddd";}
|
||||
if(comic_files_keys[i]==start){start_processing=true;interval=prompt(days_between_posts_message,"7");if(interval!==null){var all_valid=true;var parts=interval.split(",");for(var j=0,jl=parts.length;j<jl;++j){if(!parts[j].toString().match(/^\d+$/)){all_valid=false;break;}}
|
||||
if(all_valid){interval=parts;date_parts=$F('dates['+comic_files_keys[i]+']').split("-");current_date=Date.UTC(date_parts[0],date_parts[1]-1,date_parts[2],2)+86400*1000;}else{alert(interval+" "+valid_interval_message);break;}}else{break;}}}}
|
19
js/minified-comicpress_script.js
Normal file
19
js/minified-comicpress_script.js
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
function hide_show_checkbox_holder(which,reverse){if(reverse!==true){reverse=false;}
|
||||
($(which+'-checkbox').checked!==reverse)?new Effect.Appear(which+'-holder'):new Effect.BlindUp(which+'-holder');}
|
||||
function setup_hide_show_checkbox_holder(which){Event.observe(which+'-checkbox','click',function(){hide_show_checkbox_holder(which)});hide_show_checkbox_holder(which);}
|
||||
function hide_show_div_on_checkbox(div,checkbox,flip_behavior){if($(checkbox)&&$(div)){ok=(flip_behavior)?!$(checkbox).checked:$(checkbox).checked;(ok)?new Effect.Appear(div):new Effect.BlindUp(div);}}
|
||||
function change_image_preview(){var which=$F('delete-comic-dropdown');$('image-preview').innerHTML='<img src="'+which+'" width="420" />';}
|
||||
var current_file_index=0;var current_file_upload_count=0;var on_change_file_upload_count=null;function add_file_upload(){var field="<div class=\"upload-holder\" id=\"upload-holder-"+current_file_index+"\">";field+=messages['add_file_upload_file']+"<input size=\"35\" type=\"file\" name=\"upload-"+current_file_index+"\" />";field+=" [<a href=\"#\" onclick=\"remove_file_upload('"+current_file_index+"');\">"+messages['add_file_upload_remove']+"</a>]";field+="</div>";Element.insert('multiple-file-upload',{bottom:field});current_file_index++;current_file_upload_count++;if(on_change_file_upload_count){on_change_file_upload_count(current_file_upload_count);}}
|
||||
function remove_file_upload(which){Element.remove('upload-holder-'+which);current_file_upload_count--;if(on_change_file_upload_count){on_change_file_upload_count(current_file_upload_count);}}
|
||||
function prepare_comicpress_manager(){if($('multiple-new-post-checkbox')){setup_hide_show_checkbox_holder("multiple-new-post");add_file_upload();hide_show_div_on_checkbox('override-title-holder','override-title');hide_show_div_on_checkbox('thumbnail-write-holder','no-thumbnails',true);var add_to_tags=function(href){var all_tags=[];if(!$F('tags').empty()){all_tags=$F('tags').replace(new RegExp("s*\,\s*"),",").split(",");}
|
||||
if(all_tags.indexOf(href.innerHTML)==-1){all_tags.push(href.innerHTML);}
|
||||
$('tags').value=all_tags.join(",");}
|
||||
$$('a.tag').each(function(href){Event.observe(href,'click',function(e){Event.stop(e);add_to_tags(href);});});}
|
||||
var handle_show_rebuild_thumbnails=function(e){(($F('overwrite-existing-file-choice')!="")&&($F('upload-destination')=="comic"))?$('rebuild-thumbnails').show():$('rebuild-thumbnails').hide();};if($('overwrite-existing-file-choice')){Event.observe('overwrite-existing-file-choice','change',handle_show_rebuild_thumbnails);handle_show_rebuild_thumbnails();}
|
||||
if($('replace-comic-rebuild-thumbnails')&&$('thumbnails')){Event.observe($('replace-comic-rebuild-thumbnails'),'click',function(e){$('thumbnails').checked=$('replace-comic-rebuild-thumbnails').checked;});}
|
||||
if($('upload-destination')){var toggle_upload_destination_holder=function(){if($F('overwrite-existing-file-choice')==""){if($('upload-destination').options[$('upload-destination').selectedIndex].value=="comic"){new Effect.Appear('upload-destination-holder');}else{new Effect.BlindUp('upload-destination-holder');}}else{new Effect.BlindUp('upload-destination-holder');}
|
||||
handle_show_rebuild_thumbnails();};Event.observe('upload-destination','change',toggle_upload_destination_holder);toggle_upload_destination_holder();on_change_file_upload_count=function(count){if(count==1){new Effect.Appear('specify-date-holder');new Effect.Appear('overwrite-existing-holder');}else{new Effect.BlindUp('specify-date-holder');new Effect.BlindUp('overwrite-existing-holder');toggle_upload_destination_holder();}}
|
||||
if($('overwrite-existing-file-choice')){Event.observe('overwrite-existing-file-choice','change',function(){toggle_upload_destination_holder();});}}
|
||||
if($('count-missing-posts-clicker')){hide_show_div_on_checkbox('override-title-holder','override-title');hide_show_div_on_checkbox('thumbnail-write-holder','no-thumbnails',true);Event.observe('count-missing-posts-clicker','click',function(){$('missing-posts-display').innerHTML="..."+messages['count_missing_posts_counting']+"...";new Ajax.Request(ajax_request_uri,{method:'post',parameters:{action:"count-missing-posts"},onSuccess:function(transport){if(transport.headerJSON){$('missing-posts-display').innerHTML=transport.headerJSON.missing_posts;}else{$('missing-posts-display').innerHTML=messages['count_missing_posts_none_missing'];}},onFailure:function(transport){$('missing-posts-display').innerHTML=messages['failure_in_counting_posts'];}});return false;});}
|
||||
if($('image-preview')){change_image_preview();}}
|
10
js/minified-comicpress_status.js
Normal file
10
js/minified-comicpress_status.js
Normal file
@ -0,0 +1,10 @@
|
||||
|
||||
var active_filters={};function toggle_filter(id){if(active_filters[id]===undefined){active_filters[id]=false;}
|
||||
active_filters[id]=!active_filters[id];var any_filters_active=false;for(var key in active_filters){if(active_filters[key]===true){any_filters_active=true;break;}}
|
||||
if(top.console&&top.console.log){top.console.log(active_filters);}
|
||||
var rows=document.getElementsByClassName('data-row');for(var i=0,il=rows.length;i<il;++i){if(any_filters_active){var filter_active=false;for(var key in active_filters){if(top.console&&top.console.log){top.console.log(key);}
|
||||
if(active_filters[key]===true){if(rows[i].hasClassName(key)){filter_active=true;break;}}}
|
||||
if(top.console&&top.console.log){top.console.log(i+": "+filter_active);}
|
||||
if(filter_active){Element.show(rows[i]);}else{Element.hide(rows[i]);}}else{Element.show(rows[i]);}}
|
||||
for(var key in active_filters){var target=$(key);if(active_filters[key]===true){if(!Element.hasClassName(target,'enabled')){Element.addClassName(target,'enabled');}}else{if(Element.hasClassName(target,'enabled')){Element.removeClassName(target,'enabled');}}}}
|
||||
function setup_status_togglers(){var togglers=document.getElementsByClassName('toggler');for(var i=0;i<togglers.length;++i){Event.observe(togglers[i],'click',function(e){var element=Event.element(e);toggle_filter(element.id);});}}
|
761
jscalendar-1.0/ChangeLog
Normal file
761
jscalendar-1.0/ChangeLog
Normal file
@ -0,0 +1,761 @@
|
||||
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)
|
||||
|
||||
* calendar.js, doc/reference.tex, index.html: switched to version 0.9.6
|
||||
|
||||
* doc/Calendar.setup.tex, doc/reference.tex: updated documentation
|
||||
|
||||
* release-notes.html: updated release notes
|
||||
|
||||
* calendar.js: Fixed bug: Feb/29 and year change now keeps Feb in view
|
||||
|
||||
* calendar.js: fixed the "ESC" problem (call the close handler)
|
||||
|
||||
* calendar.js: fixed day of year range (1 to 366 instead of 0 to 365)
|
||||
|
||||
* calendar.js: fixed week number calculations
|
||||
|
||||
* doc/reference.tex: fixed (date input format)
|
||||
|
||||
* calendar.php: removed comment
|
||||
|
||||
* 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, calendar.js:
|
||||
workaround for IE bug (you can't normally specify through CSS the style for
|
||||
an element having two classes or more; we had to change a classname)
|
||||
|
||||
* 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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* index.html: first demo shows the "showOtherMonths" capability
|
||||
|
||||
* calendar-setup.js: support new parameters in the calendar.
|
||||
added: firstDay, showOthers, cache.
|
||||
|
||||
* 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, calendar.js, lang/calendar-en.js, lang/calendar-ro.js:
|
||||
new parameters: firstDayOfWeek, showsOtherMonths; removed mondayFirst.
|
||||
This adds support for setting any day to be the first day of week (by just
|
||||
clicking the day name in the display); also, if showsOtherMonths is enabled
|
||||
then dates belonging to adjacent months that are in the current view will be
|
||||
displayed and the calendar will have a fixed height.
|
||||
|
||||
all themes updated.
|
||||
|
||||
* test.php: test for calendar.php
|
||||
|
||||
* calendar.php: fixed bug (pass numeric values as numbers)
|
||||
|
||||
2004-02-01 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* calendar.php: added PHP wrapper
|
||||
|
||||
* img.gif: icon updated
|
||||
|
||||
* TODO: updated TODO list
|
||||
|
||||
2004-01-27 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* calendar.js:
|
||||
Janusz Piwowarski sent over a patch for IE5 compatibility which is much more
|
||||
elegant than the atrocities that I had wrote :-D I'm gettin' old.. Thanks Janusz!
|
||||
|
||||
* lang/calendar-fi.js: updated
|
||||
|
||||
2004-01-15 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* TODO: updated TODO list
|
||||
|
||||
* calendar-setup.js: default align changed to "Br"
|
||||
|
||||
* doc/reference.tex: changed default value for "align"
|
||||
|
||||
* calendar-setup.js: calling onchange event handler, if available
|
||||
|
||||
* calendar-setup.js: added "position" option
|
||||
|
||||
* simple-1.html: demonstrates "step" option
|
||||
|
||||
* calendar-setup.js: added "step" option
|
||||
|
||||
* calendar.js: added yearStep config parameter
|
||||
|
||||
* calendar.js:
|
||||
fixed parseDate routine (the NaN bug which occurred when there was a space
|
||||
after the date and no time)
|
||||
|
||||
2004-01-14 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-en.js: added "Time:"
|
||||
|
||||
* test-position.html: test for the new position algorithm
|
||||
|
||||
* index.html: do not destroy() the calendar
|
||||
avoid bug in parseDate (%p must be separated by non-word characters)
|
||||
|
||||
* menuarrow2.gif: for calendar-blue2.css
|
||||
|
||||
* calendar-setup.js: honor "date" parameter if passed
|
||||
|
||||
* calendar.js: IE5 support is back
|
||||
performance improvements in IE6 (mouseover combo boxes)
|
||||
display "Time:" beside the clock area, if defined in the language file
|
||||
new positioning algorithm (try to keep the calendar in page)
|
||||
rewrote parseDate a little cleaner
|
||||
|
||||
* lang/calendar-el.js:
|
||||
updated Greek translation (thanks Alexandros Pappas)
|
||||
|
||||
2004-01-13 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* index.html: added style blue2, using utf-8 instead of iso-8859-2
|
||||
|
||||
* calendar.js: performance under IE (which sucks, by the way)
|
||||
|
||||
* doc/reference.tex: Sunny added to sponsor list
|
||||
|
||||
* doc/Calendar.setup.tex: documenting parameter 'electric'
|
||||
|
||||
* 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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-pl.js:
|
||||
Polish translation updated to UTF-8 (thanks to Artur Filipiak)
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* TODO: updated TODO list
|
||||
|
||||
* lang/calendar-de.js: German translation (thanks to Peter Strotmann)
|
||||
|
||||
2003-12-19 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* doc/reference.tex: Thank you, Ian Barrak
|
||||
|
||||
2003-12-18 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* doc/reference.tex: fixed documentation bug (thanks Mike)
|
||||
|
||||
2003-12-05 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-ko-utf8.js:
|
||||
UTF8 version of the Korean language (hopefully correct)
|
||||
|
||||
* lang/calendar-pl-utf8.js, lang/calendar-pl.js:
|
||||
updated Polish translation (thanks to Janusz Piwowarski)
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-da.js: updated (thanks to Jesper M. Christensen)
|
||||
|
||||
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)
|
||||
|
||||
* lang/calendar-lt-utf8.js, lang/calendar-lt.js:
|
||||
Lithuanian translation (thanks to Martynas Majeris)
|
||||
|
||||
* lang/calendar-sp.js: updated
|
||||
|
||||
2003-11-17 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* TODO: added TODO list
|
||||
|
||||
2003-11-14 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-ko.js: Korean translation (thanks to Yourim Yi)
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-fr.js: translation updated, thanks to Florent Ramiere
|
||||
|
||||
* calendar-setup.js:
|
||||
added new parameter: electric (if false then the field will not get updated on each move)
|
||||
|
||||
* index.html: fixed DOCTYPE
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-fi.js:
|
||||
added Finnish translation (thanks to Antti Tuppurainen)
|
||||
|
||||
2003-11-05 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* release-notes.html: fixed typo
|
||||
|
||||
* doc/reference.tex, index.html, calendar.js: 0.9.5
|
||||
|
||||
* README: fixed license statement
|
||||
|
||||
* release-notes.html: updated release notes (0.9.5)
|
||||
|
||||
2003-11-03 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-de.js:
|
||||
updated German translation (thanks to Gerhard Neiner)
|
||||
|
||||
* calendar-setup.js: fixed license statement
|
||||
|
||||
* calendar.js: whitespace
|
||||
|
||||
* calendar.js: fixed license statement
|
||||
|
||||
* calendar.js:
|
||||
fixed positioning problem when input field is inside scrolled divs
|
||||
|
||||
2003-11-01 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-af.js: Afrikaan language (thanks to Derick Olivier)
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-hu.js: updated thanks to Istvan Karaszi
|
||||
|
||||
* index.html, simple-1.html, simple-2.html, simple-3.html:
|
||||
switched to utf-8 all encodings
|
||||
|
||||
* lang/calendar-sk.js:
|
||||
added Slovak translation (thanks to Peter Valach)
|
||||
|
||||
* lang/calendar-ro.js: switched to utf-8
|
||||
|
||||
2003-10-29 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-es.js:
|
||||
updated translation, thanks to Jose Ma. Martinez Miralles
|
||||
|
||||
* doc/reference.tex:
|
||||
fixed the footnote problem (thanks Dominique de Waleffe for the tip)
|
||||
|
||||
* lang/calendar-ro.js: fixed typo
|
||||
|
||||
* lang/calendar-sv.js: oops, license should be LGPL
|
||||
|
||||
* lang/calendar-sw.js: new swedish translation is calendar-sv.js
|
||||
|
||||
* menuarrow.gif, menuarrow.png:
|
||||
oops, forgot little drop-down menu arrows
|
||||
|
||||
* lang/calendar-sv.js: swedish translation thanks to Leonard Norrgard
|
||||
|
||||
* index.html: oops, some other minor changes
|
||||
|
||||
* index.html, release-notes.html:
|
||||
latest changes in release-notes and index page for 0.9.4
|
||||
|
||||
* doc/reference.tex, calendar.js:
|
||||
added %s date format (# of seconds since Epoch)
|
||||
|
||||
* calendar.js:
|
||||
A click on TODAY will not close the calendar, even in single-click mode
|
||||
|
||||
2003-10-28 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* index.html: previous cal.html
|
||||
|
||||
* cal.html: moved to index.html
|
||||
|
||||
* README, cal.html, doc/reference.tex, lang/calendar-de.js, lang/calendar-en.js, lang/calendar-ro.js, release-notes.html:
|
||||
LGPL license, forever.
|
||||
|
||||
* doc/Calendar.setup.tex, simple-1.html:
|
||||
doc updated for the onUpdate parameter to Calendar.setup
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* doc/reference.tex:
|
||||
documentation updated for 0.9.4 (not yet finished though)
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* calendar-setup.js:
|
||||
added some properties (onSelect, onClose, date) (thanks altblue)
|
||||
|
||||
2003-09-24 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* simple-3.html: dateIsSpecial does not need the "date" argument ;-)
|
||||
|
||||
2003-09-24 fsoft <fsoft@mishoo>
|
||||
|
||||
* calendar.js, simple-3.html:
|
||||
added year, month, day to getDateStatus() function
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* doc/reference.tex: fixed error in section 3.
|
||||
|
||||
2003-08-01 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-jp.js: added Japanese translation
|
||||
|
||||
2003-07-16 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* simple-1.html: fixed problem with first example [IE,Opera]
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* cal.html: added link to release-notes
|
||||
|
||||
* release-notes.html: 0.9.3 release notes
|
||||
|
||||
* make-release.pl:
|
||||
Script to create distribution archive. It needs some additional packages:
|
||||
|
||||
- LaTeX
|
||||
- tex2page
|
||||
- jscrunch (JS compressor)
|
||||
|
||||
* doc/html/makedoc.sh, doc/html/reference.css, doc/reference.tex, doc/makedoc.sh:
|
||||
documentation updates...
|
||||
|
||||
* calendar.js: added semicolon to make the code "compressible"
|
||||
|
||||
2003-07-06 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* doc/reference.tex: spell checked
|
||||
|
||||
* doc/reference.tex: [minor] changed credits order
|
||||
|
||||
* doc/reference.tex: various improvements and additions
|
||||
|
||||
* doc/html/reference.css: minor eye-candy tweaks
|
||||
|
||||
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
|
||||
|
||||
* simple-2.html:
|
||||
added demonstration of flat calendar with Calendar.setup
|
||||
|
||||
* simple-1.html:
|
||||
modified some links, added link to documentation, added demonstration of
|
||||
disableFunc property
|
||||
|
||||
* calendar-setup.js: added the ability to create flat calendar too
|
||||
|
||||
* cal.html: added links to documentation and simple-[12].html pages
|
||||
|
||||
* README: up-to-date...
|
||||
|
||||
* calendar-setup.html: removed: the documentation is unified
|
||||
|
||||
2003-07-03 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* cal.html: some links to newly added files
|
||||
|
||||
* calendar-setup.html, calendar-setup.js, img.gif, simple-1.html:
|
||||
added some files to simplify calendar creation for non-(JS)-programmers
|
||||
|
||||
* lang/calendar-zh.js: added simplified chinese (thanks ATang)
|
||||
|
||||
2003-07-02 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* calendar.js: * "yy"-related... [small fix]
|
||||
|
||||
* calendar.js:
|
||||
* #721833 fixed (yy format will understand years prior to 29 as 20xx)
|
||||
|
||||
* calendar.js: * added refresh() function
|
||||
|
||||
* calendar.js: * fixed bug when in single click mode
|
||||
* added alignment options to "showAtElement" member function
|
||||
|
||||
2003-06-25 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-pt.js:
|
||||
added portugese translation (thanks Nuno Barreto)
|
||||
|
||||
2003-06-24 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* calendar.js:
|
||||
call user handler when the date was changed using the keyboard
|
||||
|
||||
* bugtest-hidden-selects.html:
|
||||
file to test bug with hidden select-s (thanks Ying Zhang for reporting and for this test file)
|
||||
|
||||
* lang/calendar-hr-utf8.js:
|
||||
added croatian translation in utf8 (thanks Krunoslav Zubrinic)
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* calendar.js:
|
||||
* #723335 fixed (clicking TODAY will not select the today date if the
|
||||
disabledHandler rejects it)
|
||||
|
||||
* cal.html: * new code for to work with fix for bug #703238
|
||||
* switch to new version
|
||||
|
||||
* calendar.js:
|
||||
* some patches to make code compatible with Opera 7 (well, almost compatible)
|
||||
* bug #703238 fixed (fix breaks compatibility with older code that uses
|
||||
calendar in single-click mode)
|
||||
* bug #703814 fixed
|
||||
|
||||
2003-04-09 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-tr.js: added turkish lang file
|
||||
|
||||
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 <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-no.js: norwegian translation
|
||||
|
||||
2003-03-12 Mihai Bazon <mihai_bazon@yahoo.com>
|
||||
|
||||
* lang/calendar-pl.js: added polish translation
|
||||
|
||||
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 <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.
|
||||
|
||||
* 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:
|
||||
moved to CVS at sourceforge.net
|
||||
release: 0.9.2 + new language packs
|
||||
|
||||
|
||||
* README, cal.html, calendar-blue.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:
|
||||
New file.
|
||||
|
||||
* README, cal.html, calendar-blue.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:
|
||||
moved to CVS at sourceforge.net
|
||||
release: 0.9.2 + new language packs
|
||||
|
||||
|
33
jscalendar-1.0/README
Normal file
33
jscalendar-1.0/README
Normal file
@ -0,0 +1,33 @@
|
||||
The DHTML Calendar
|
||||
-------------------
|
||||
|
||||
Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
http://dynarch.com/mishoo/
|
||||
|
||||
This program is free software published under the
|
||||
terms of the GNU Lesser General Public License.
|
||||
|
||||
For the entire license text please refer to
|
||||
http://www.gnu.org/licenses/lgpl.html
|
||||
|
||||
Contents
|
||||
---------
|
||||
|
||||
calendar.js -- the main program file
|
||||
lang/*.js -- internalization files
|
||||
*.css -- color themes
|
||||
cal.html -- example usage file
|
||||
doc/ -- documentation, in PDF and HTML
|
||||
simple-1.html -- quick setup examples [popup calendars]
|
||||
simple-2.html -- quick setup example for flat calendar
|
||||
calendar.php -- PHP wrapper
|
||||
test.php -- test file for the PHP wrapper
|
||||
|
||||
Homepage
|
||||
---------
|
||||
|
||||
For details and latest versions please refer to calendar
|
||||
homepage, located on my website:
|
||||
|
||||
http://dynarch.com/mishoo/calendar.epl
|
||||
|
108
jscalendar-1.0/bugtest-hidden-selects.html
Normal file
108
jscalendar-1.0/bugtest-hidden-selects.html
Normal file
@ -0,0 +1,108 @@
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ro" lang="ro">
|
||||
|
||||
<head>
|
||||
<title>Bug</title>
|
||||
<link rel="stylesheet" type="text/css" media="all" href="calendar-win2k-1.css" title="win2k-1" />
|
||||
|
||||
<!-- import the calendar script -->
|
||||
<script type="text/javascript" src="calendar.js"></script>
|
||||
|
||||
<!-- import the language module -->
|
||||
<script type="text/javascript" src="lang/calendar-en.js"></script>
|
||||
|
||||
<!-- helper script that uses the calendar -->
|
||||
<script type="text/javascript">
|
||||
// This function gets called when the end-user clicks on some date.
|
||||
function selected(cal, date) {
|
||||
cal.sel.value = date; // just update the date in the input field.
|
||||
if (cal.sel.id == "sel1" || cal.sel.id == "sel3")
|
||||
// if we add this call we close the calendar on single-click.
|
||||
// just to exemplify both cases, we are using this only for the 1st
|
||||
// and the 3rd field, while 2nd and 4th will still require double-click.
|
||||
cal.callCloseHandler();
|
||||
}
|
||||
|
||||
// And this gets called when the end-user clicks on the _selected_ date,
|
||||
// or clicks on the "Close" button. It just hides the calendar without
|
||||
// destroying it.
|
||||
function closeHandler(cal) {
|
||||
cal.hide(); // hide the calendar
|
||||
}
|
||||
|
||||
// This function shows the calendar under the element having the given id.
|
||||
// It takes care of catching "mousedown" signals on document and hiding the
|
||||
// calendar if the click was outside.
|
||||
function showCalendar(id, format) {
|
||||
var el = document.getElementById(id);
|
||||
if (calendar != null) {
|
||||
// we already have some calendar created
|
||||
calendar.hide(); // so we hide it first.
|
||||
} else {
|
||||
// first-time call, create the calendar.
|
||||
var cal = new Calendar(false, null, selected, closeHandler);
|
||||
// uncomment the following line to hide the week numbers
|
||||
// cal.weekNumbers = false;
|
||||
calendar = 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
|
||||
calendar.showAtElement(el); // show the calendar below it
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
var MINUTE = 60 * 1000;
|
||||
var HOUR = 60 * MINUTE;
|
||||
var DAY = 24 * HOUR;
|
||||
var WEEK = 7 * DAY;
|
||||
|
||||
// If this handler returns true then the "date" given as
|
||||
// parameter will be disabled. In this example we enable
|
||||
// only days within a range of 10 days from the current
|
||||
// date.
|
||||
// You can use the functions date.getFullYear() -- returns the year
|
||||
// as 4 digit number, date.getMonth() -- returns the month as 0..11,
|
||||
// and date.getDate() -- returns the date of the month as 1..31, to
|
||||
// make heavy calculations here. However, beware that this function
|
||||
// should be very fast, as it is called for each day in a month when
|
||||
// the calendar is (re)constructed.
|
||||
function isDisabled(date) {
|
||||
var today = new Date();
|
||||
return (Math.abs(date.getTime() - today.getTime()) / DAY) > 10;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<form>
|
||||
<b>Date:</b>
|
||||
<br>
|
||||
<input type="text" name="date1" id="sel1" size="30">
|
||||
<input type="button" value="..." onclick="return showCalendar('sel1', 'y-m-d');">
|
||||
<p>
|
||||
<br>
|
||||
<br><b>Visible <select>, hides and unhides as expected</b>
|
||||
<br>
|
||||
<select name="foo" multiple>
|
||||
<option value="1">can use the functions date.getFullYear() -- returns</option>
|
||||
<option value="2">4 digit number, date.getMonth() -- returns the month</option>
|
||||
<option value="3">heavy calculations here. However, beware that this</option>
|
||||
</select>
|
||||
|
||||
<p>
|
||||
<br><b>Hidden <select>, it should stay hidden (but doesn't)</b>
|
||||
<br>
|
||||
<select name="foo2" multiple style="visibility: hidden">
|
||||
<option value="1">this should</option>
|
||||
<option value="2">remain hidden right?</option>
|
||||
</select>
|
||||
|
||||
<p>
|
||||
<br><b>Hidden textbox below, it stays hidden as expected</b>
|
||||
<br>
|
||||
<input type="text" name="foo3" value="this stays hidden just fine" style="visibility: hidden">
|
||||
</form>
|
||||
</body></html>
|
232
jscalendar-1.0/calendar-blue.css
Normal file
232
jscalendar-1.0/calendar-blue.css
Normal file
@ -0,0 +1,232 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #556;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #eef;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #778 url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
color: #000;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
background: #778;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #bdf;
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #556;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #aaf;
|
||||
color: #000;
|
||||
border: 1px solid #04f;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #77c;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
color: #456;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #bbb;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #fbb;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #bdf;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #def;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #eef;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #def;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #cde;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #fff;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #556;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #fff;
|
||||
color: #445;
|
||||
border-top: 1px solid #556;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #aaf;
|
||||
border: 1px solid #04f;
|
||||
color: #000;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #77c;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #655;
|
||||
background: #def;
|
||||
color: #000;
|
||||
font-size: 90%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #acf;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
border-top: 1px solid #46a;
|
||||
border-bottom: 1px solid #46a;
|
||||
background: #eef;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #667;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
236
jscalendar-1.0/calendar-blue2.css
Normal file
236
jscalendar-1.0/calendar-blue2.css
Normal file
@ -0,0 +1,236 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #206A9B;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #F1F8FC;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #007ED1 url(menuarrow2.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
background: #000;
|
||||
color: #fff;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.calendar thead tr { /* Row <TR> containing navigation buttons */
|
||||
background: #007ED1;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #C7E1F3;
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #206A9B;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #34ABFA;
|
||||
color: #000;
|
||||
border: 1px solid #016DC5;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #006AA9;
|
||||
border: 1px solid #008AFF;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
color: #456;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #bbb;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #fbb;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #C7E1F3;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #def;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #F1F8FC;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #def;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #8FC4E8;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #cde;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #fff;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
color: #D50000;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #206A9B;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #000;
|
||||
color: #fff;
|
||||
border-top: 1px solid #206A9B;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #B8DAF0;
|
||||
border: 1px solid #178AEB;
|
||||
color: #000;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #006AA9;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #655;
|
||||
background: #def;
|
||||
color: #000;
|
||||
font-size: 90%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #34ABFA;
|
||||
border-top: 1px solid #46a;
|
||||
border-bottom: 1px solid #46a;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
border-top: 1px solid #46a;
|
||||
border-bottom: 1px solid #46a;
|
||||
background: #F1F8FC;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #E3F0F9;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #F1F8FC;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #267DB7;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: red;
|
||||
background-color: #000;
|
||||
color: #A5FF00;
|
||||
}
|
225
jscalendar-1.0/calendar-brown.css
Normal file
225
jscalendar-1.0/calendar-brown.css
Normal file
@ -0,0 +1,225 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #655;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #ffd;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #edc url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
background: #654;
|
||||
color: #fed;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
background: #edc;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #655;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #faa;
|
||||
color: #000;
|
||||
border: 1px solid #f40;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #c77;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #fed;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #bbb;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #fbb;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #fed;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #ddf;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #efe;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #ffe;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #ddc;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #fea;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { font-weight: bold; }
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #988;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
border-top: 1px solid #655;
|
||||
background: #dcb;
|
||||
color: #840;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #faa;
|
||||
border: 1px solid #f40;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #c77;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #655;
|
||||
background: #ffe;
|
||||
color: #000;
|
||||
font-size: 90%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #fc8;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
border-top: 1px solid #a64;
|
||||
border-bottom: 1px solid #a64;
|
||||
background: #fee;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #a88;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #fed;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #988;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #866;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
229
jscalendar-1.0/calendar-green.css
Normal file
229
jscalendar-1.0/calendar-green.css
Normal file
@ -0,0 +1,229 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #565;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #efe;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
background: #676;
|
||||
color: #fff;
|
||||
font-size: 90%;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #676 url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
padding: 2px;
|
||||
background: #250;
|
||||
color: #efa;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #565;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #afa;
|
||||
color: #000;
|
||||
border: 1px solid #084;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #7c7;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #dfb;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
color: #564;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #bbb;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #fbb;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #8a8;
|
||||
background: #dfb;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #dfd;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #efe;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #efd;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #dec;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #f8fff8;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #a66;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { font-weight: bold; color: #0a0; }
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #565;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
padding: 2px;
|
||||
background: #250;
|
||||
color: #efa;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #afa;
|
||||
border: 1px solid #084;
|
||||
color: #000;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #7c7;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #565;
|
||||
background: #efd;
|
||||
color: #000;
|
||||
font-size: 90%;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #af8;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
border-top: 1px solid #6a4;
|
||||
border-bottom: 1px solid #6a4;
|
||||
background: #efe;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #8a8;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #dfb;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #898;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #686;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
200
jscalendar-1.0/calendar-setup.js
Normal file
200
jscalendar-1.0/calendar-setup.js
Normal file
@ -0,0 +1,200 @@
|
||||
/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/
|
||||
* ---------------------------------------------------------------------------
|
||||
*
|
||||
* The DHTML Calendar
|
||||
*
|
||||
* Details and latest version at:
|
||||
* http://dynarch.com/mishoo/calendar.epl
|
||||
*
|
||||
* This script is distributed under the GNU Lesser General Public License.
|
||||
* Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
|
||||
*
|
||||
* This file defines helper functions for setting up the calendar. They are
|
||||
* intended to help non-programmers get a working calendar on their site
|
||||
* quickly. This script should not be seen as part of the calendar. It just
|
||||
* shows you what one can do with the calendar, while in the same time
|
||||
* providing a quick and simple method for setting it up. If you need
|
||||
* exhaustive customization of the calendar creation process feel free to
|
||||
* modify this code to suit your needs (this is recommended and much better
|
||||
* than modifying calendar.js itself).
|
||||
*/
|
||||
|
||||
// $Id: calendar-setup.js,v 1.25 2005/03/07 09:51:33 mishoo Exp $
|
||||
|
||||
/**
|
||||
* This function "patches" an input field (or other element) to use a calendar
|
||||
* widget for date selection.
|
||||
*
|
||||
* The "params" is a single object that can have the following properties:
|
||||
*
|
||||
* prop. name | description
|
||||
* -------------------------------------------------------------------------------------------------
|
||||
* inputField | the ID of an input field to store the date
|
||||
* displayArea | the ID of a DIV or other element to show the date
|
||||
* button | ID of a button or other element that will trigger the calendar
|
||||
* eventName | event that will trigger the calendar, without the "on" prefix (default: "click")
|
||||
* ifFormat | date format that will be stored in the input field
|
||||
* daFormat | the date format that will be used to display the date in displayArea
|
||||
* singleClick | (true/false) wether the calendar is in single click mode or not (default: true)
|
||||
* firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc.
|
||||
* align | alignment (default: "Br"); if you don't know what's this see the calendar documentation
|
||||
* range | array with 2 elements. Default: [1900, 2999] -- the range of years available
|
||||
* weekNumbers | (true/false) if it's true (default) the calendar will display week numbers
|
||||
* flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID
|
||||
* flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar)
|
||||
* disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar
|
||||
* onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay)
|
||||
* onClose | function that gets called when the calendar is closed. [default]
|
||||
* onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar.
|
||||
* date | the date that the calendar will be initially displayed to
|
||||
* showsTime | default: false; if true the calendar will include a time selector
|
||||
* timeFormat | the time format; can be "12" or "24", default is "12"
|
||||
* electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close
|
||||
* step | configures the step of the years in drop-down boxes; default: 2
|
||||
* position | configures the calendar absolute position; default: null
|
||||
* cache | if "true" (but default: "false") it will reuse the same calendar object, where possible
|
||||
* showOthers | if "true" (but default: "false") it will show days from other months too
|
||||
*
|
||||
* None of them is required, they all have default values. However, if you
|
||||
* pass none of "inputField", "displayArea" or "button" you'll get a warning
|
||||
* saying "nothing to setup".
|
||||
*/
|
||||
Calendar.setup = function (params) {
|
||||
function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } };
|
||||
|
||||
param_default("inputField", null);
|
||||
param_default("displayArea", null);
|
||||
param_default("button", null);
|
||||
param_default("eventName", "click");
|
||||
param_default("ifFormat", "%Y/%m/%d");
|
||||
param_default("daFormat", "%Y/%m/%d");
|
||||
param_default("singleClick", true);
|
||||
param_default("disableFunc", null);
|
||||
param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined
|
||||
param_default("dateText", null);
|
||||
param_default("firstDay", null);
|
||||
param_default("align", "Br");
|
||||
param_default("range", [1900, 2999]);
|
||||
param_default("weekNumbers", true);
|
||||
param_default("flat", null);
|
||||
param_default("flatCallback", null);
|
||||
param_default("onSelect", null);
|
||||
param_default("onClose", null);
|
||||
param_default("onUpdate", null);
|
||||
param_default("date", null);
|
||||
param_default("showsTime", false);
|
||||
param_default("timeFormat", "24");
|
||||
param_default("electric", true);
|
||||
param_default("step", 2);
|
||||
param_default("position", null);
|
||||
param_default("cache", false);
|
||||
param_default("showOthers", false);
|
||||
param_default("multiple", null);
|
||||
|
||||
var tmp = ["inputField", "displayArea", "button"];
|
||||
for (var i in tmp) {
|
||||
if (typeof params[tmp[i]] == "string") {
|
||||
params[tmp[i]] = document.getElementById(params[tmp[i]]);
|
||||
}
|
||||
}
|
||||
if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) {
|
||||
alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code");
|
||||
return false;
|
||||
}
|
||||
|
||||
function onSelect(cal) {
|
||||
var p = cal.params;
|
||||
var update = (cal.dateClicked || p.electric);
|
||||
if (update && p.inputField) {
|
||||
p.inputField.value = cal.date.print(p.ifFormat);
|
||||
if (typeof p.inputField.onchange == "function")
|
||||
p.inputField.onchange();
|
||||
}
|
||||
if (update && p.displayArea)
|
||||
p.displayArea.innerHTML = cal.date.print(p.daFormat);
|
||||
if (update && typeof p.onUpdate == "function")
|
||||
p.onUpdate(cal);
|
||||
if (update && p.flat) {
|
||||
if (typeof p.flatCallback == "function")
|
||||
p.flatCallback(cal);
|
||||
}
|
||||
if (update && p.singleClick && cal.dateClicked)
|
||||
cal.callCloseHandler();
|
||||
};
|
||||
|
||||
if (params.flat != null) {
|
||||
if (typeof params.flat == "string")
|
||||
params.flat = document.getElementById(params.flat);
|
||||
if (!params.flat) {
|
||||
alert("Calendar.setup:\n Flat specified but can't find parent.");
|
||||
return false;
|
||||
}
|
||||
var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect);
|
||||
cal.showsOtherMonths = params.showOthers;
|
||||
cal.showsTime = params.showsTime;
|
||||
cal.time24 = (params.timeFormat == "24");
|
||||
cal.params = params;
|
||||
cal.weekNumbers = params.weekNumbers;
|
||||
cal.setRange(params.range[0], params.range[1]);
|
||||
cal.setDateStatusHandler(params.dateStatusFunc);
|
||||
cal.getDateText = params.dateText;
|
||||
if (params.ifFormat) {
|
||||
cal.setDateFormat(params.ifFormat);
|
||||
}
|
||||
if (params.inputField && typeof params.inputField.value == "string") {
|
||||
cal.parseDate(params.inputField.value);
|
||||
}
|
||||
cal.create(params.flat);
|
||||
cal.show();
|
||||
return false;
|
||||
}
|
||||
|
||||
var triggerEl = params.button || params.displayArea || params.inputField;
|
||||
triggerEl["on" + params.eventName] = function() {
|
||||
var dateEl = params.inputField || params.displayArea;
|
||||
var dateFmt = params.inputField ? params.ifFormat : params.daFormat;
|
||||
var mustCreate = false;
|
||||
var cal = window.calendar;
|
||||
if (dateEl)
|
||||
params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt);
|
||||
if (!(cal && params.cache)) {
|
||||
window.calendar = cal = new Calendar(params.firstDay,
|
||||
params.date,
|
||||
params.onSelect || onSelect,
|
||||
params.onClose || function(cal) { cal.hide(); });
|
||||
cal.showsTime = params.showsTime;
|
||||
cal.time24 = (params.timeFormat == "24");
|
||||
cal.weekNumbers = params.weekNumbers;
|
||||
mustCreate = true;
|
||||
} else {
|
||||
if (params.date)
|
||||
cal.setDate(params.date);
|
||||
cal.hide();
|
||||
}
|
||||
if (params.multiple) {
|
||||
cal.multiple = {};
|
||||
for (var i = params.multiple.length; --i >= 0;) {
|
||||
var d = params.multiple[i];
|
||||
var ds = d.print("%Y%m%d");
|
||||
cal.multiple[ds] = d;
|
||||
}
|
||||
}
|
||||
cal.showsOtherMonths = params.showOthers;
|
||||
cal.yearStep = params.step;
|
||||
cal.setRange(params.range[0], params.range[1]);
|
||||
cal.params = params;
|
||||
cal.setDateStatusHandler(params.dateStatusFunc);
|
||||
cal.getDateText = params.dateText;
|
||||
cal.setDateFormat(dateFmt);
|
||||
if (mustCreate)
|
||||
cal.create();
|
||||
cal.refresh();
|
||||
if (!params.position)
|
||||
cal.showAtElement(params.button || params.displayArea || params.inputField, params.align);
|
||||
else
|
||||
cal.showAt(params.position[0], params.position[1]);
|
||||
return false;
|
||||
};
|
||||
|
||||
return cal;
|
||||
};
|
21
jscalendar-1.0/calendar-setup_stripped.js
Normal file
21
jscalendar-1.0/calendar-setup_stripped.js
Normal file
@ -0,0 +1,21 @@
|
||||
/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/
|
||||
* ---------------------------------------------------------------------------
|
||||
*
|
||||
* The DHTML Calendar
|
||||
*
|
||||
* Details and latest version at:
|
||||
* http://dynarch.com/mishoo/calendar.epl
|
||||
*
|
||||
* This script is distributed under the GNU Lesser General Public License.
|
||||
* Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
|
||||
*
|
||||
* This file defines helper functions for setting up the calendar. They are
|
||||
* intended to help non-programmers get a working calendar on their site
|
||||
* quickly. This script should not be seen as part of the calendar. It just
|
||||
* shows you what one can do with the calendar, while in the same time
|
||||
* providing a quick and simple method for setting it up. If you need
|
||||
* exhaustive customization of the calendar creation process feel free to
|
||||
* modify this code to suit your needs (this is recommended and much better
|
||||
* than modifying calendar.js itself).
|
||||
*/
|
||||
Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def;}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);var tmp=["inputField","displayArea","button"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){params[tmp[i]]=document.getElementById(params[tmp[i]]);}}if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button)){alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code");return false;}function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);if(typeof p.inputField.onchange=="function")p.inputField.onchange();}if(update&&p.displayArea)p.displayArea.innerHTML=cal.date.print(p.daFormat);if(update&&typeof p.onUpdate=="function")p.onUpdate(cal);if(update&&p.flat){if(typeof p.flatCallback=="function")p.flatCallback(cal);}if(update&&p.singleClick&&cal.dateClicked)cal.callCloseHandler();};if(params.flat!=null){if(typeof params.flat=="string")params.flat=document.getElementById(params.flat);if(!params.flat){alert("Calendar.setup:\n Flat specified but can't find parent.");return false;}var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.showsOtherMonths=params.showOthers;cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.params=params;cal.weekNumbers=params.weekNumbers;cal.setRange(params.range[0],params.range[1]);cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat);}if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value);}cal.create(params.flat);cal.show();return false;}var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl)params.date=Date.parseDate(dateEl.value||dateEl.innerHTML,dateFmt);if(!(cal&¶ms.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)cal.setDate(params.date);cal.hide();}if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d;}}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.refresh();if(!params.position)cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);else cal.showAt(params.position[0],params.position[1]);return false;};return cal;};
|
251
jscalendar-1.0/calendar-system.css
Normal file
251
jscalendar-1.0/calendar-system.css
Normal file
@ -0,0 +1,251 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border: 1px solid;
|
||||
border-color: #fff #000 #000 #fff;
|
||||
font-size: 11px;
|
||||
cursor: default;
|
||||
background: Window;
|
||||
color: WindowText;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border: 1px solid;
|
||||
border-color: #fff #000 #000 #fff;
|
||||
font-size: 11px;
|
||||
cursor: default;
|
||||
background: Window;
|
||||
color: WindowText;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border: 1px solid;
|
||||
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
|
||||
background: ButtonFace;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: ButtonFace url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: ActiveCaption;
|
||||
color: CaptionText;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid ButtonShadow;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: ButtonFace;
|
||||
color: ButtonText;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border: 2px solid;
|
||||
padding: 0px;
|
||||
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
border-width: 1px;
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid ButtonShadow;
|
||||
background: ButtonFace;
|
||||
color: ButtonText;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: Highlight;
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border: 1px solid;
|
||||
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
border: 1px solid;
|
||||
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
|
||||
padding: 2px 2px 0px 2px;
|
||||
background: ButtonFace;
|
||||
color: ButtonText;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody td.disabled { color: GrayText; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: ButtonFace;
|
||||
padding: 1px;
|
||||
border: 1px solid;
|
||||
border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow;
|
||||
color: ButtonText;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border: 1px solid;
|
||||
border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight;
|
||||
background: Menu;
|
||||
color: MenuText;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
padding: 0px;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: Highlight;
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid ButtonShadow;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: ButtonFace;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: Menu;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: Highlight;
|
||||
color: HighlightText;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
239
jscalendar-1.0/calendar-tas.css
Normal file
239
jscalendar-1.0/calendar-tas.css
Normal file
@ -0,0 +1,239 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
div.calendar { position: relative; }
|
||||
|
||||
.calendar, .calendar table {
|
||||
border: 1px solid #655;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #ffd;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center; /* They are the navigation buttons */
|
||||
padding: 2px; /* Make the buttons seem like they're pressing */
|
||||
color:#363636;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: #edc url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold; /* Pressing it will take you to the current date */
|
||||
text-align: center;
|
||||
background: #654;
|
||||
color: #363636;
|
||||
padding: 2px;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#dddccc);
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
/*background: #3B86A0;*/
|
||||
color: #363636;
|
||||
font-weight: bold;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff,EndColorStr=#3b86a0);
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #655;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
color: #363636;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#DDDCCC,EndColorStr=#FFFFFF);
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
background-color: #ffcc86;
|
||||
color: #000;
|
||||
border: 1px solid #b59345;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
background-color: #c77;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
background: #fed;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #fed;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #ddf;
|
||||
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #efe;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
background: #ffe;
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid #bbb;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
background: #ddc;
|
||||
padding: 2px 2px 0px 2px;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
border: 1px solid #000;
|
||||
padding: 1px 3px 1px 1px;
|
||||
background: #fea;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { font-weight: bold; }
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
text-align: center;
|
||||
background: #988;
|
||||
color: #000;
|
||||
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
border-top: 1px solid #655;
|
||||
background: #dcb;
|
||||
color: #363636;
|
||||
font-weight: bold;
|
||||
filter:
|
||||
progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#FFFFFF,EndColorStr=#DDDCCC);
|
||||
}
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
background: #faa;
|
||||
border: 1px solid #f40;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
background: #c77;
|
||||
padding: 2px 0px 0px 2px;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
width: 4em;
|
||||
cursor: default;
|
||||
border: 1px solid #655;
|
||||
background: #ffe;
|
||||
color: #000;
|
||||
font-size: smaller;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.combo .label,
|
||||
.combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.combo .hilite {
|
||||
background: #fc8;
|
||||
}
|
||||
|
||||
.combo .active {
|
||||
border-top: 1px solid #a64;
|
||||
border-bottom: 1px solid #a64;
|
||||
background: #fee;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #a88;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #fed;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #988;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #866;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
271
jscalendar-1.0/calendar-win2k-1.css
Normal file
271
jscalendar-1.0/calendar-win2k-1.css
Normal file
@ -0,0 +1,271 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #d4d0c8;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #d4d0c8;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #848078;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #000;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
padding: 0px;
|
||||
background-color: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
background-color: #c4c0b8;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #d4d0c8;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
padding: 2px 2px 0px 2px;
|
||||
background: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #f4f0e8;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #848078;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #e4e0d8;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
background: #e4e0d8;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
background: #c4c0b8;
|
||||
padding: 0px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #048;
|
||||
color: #fea;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #766;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
271
jscalendar-1.0/calendar-win2k-2.css
Normal file
271
jscalendar-1.0/calendar-win2k-2.css
Normal file
@ -0,0 +1,271 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #d4c8d0;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #d4c8d0;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #847880;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #000;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: #f4e8f0;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
padding: 0px;
|
||||
background-color: #e4d8e0;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
background-color: #c4b8c0;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #f4e8f0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #e4d8e0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #d4c8d0;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
padding: 2px 2px 0px 2px;
|
||||
background: #e4d8e0;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #f4e8f0;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #847880;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #e4d8e0;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
background: #e4d8e0;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
background: #d4c8d0;
|
||||
padding: 0px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #408;
|
||||
color: #fea;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #f4f0e8;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #766;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
265
jscalendar-1.0/calendar-win2k-cold-1.css
Normal file
265
jscalendar-1.0/calendar-win2k-cold-1.css
Normal file
@ -0,0 +1,265 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #c8d0d4;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #c8d0d4;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #788084;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #000;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: #e8f0f4;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
padding: 0px;
|
||||
background-color: #d8e0e4;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
background-color: #b8c0c4;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #e8f4f0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #c8d4d0;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border: 1px solid;
|
||||
border-color: #fff #000 #000 #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border: 1px solid;
|
||||
border-color: #000 #fff #fff #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
padding: 2px 2px 0px 2px;
|
||||
border: 1px solid;
|
||||
border-color: #000 #fff #fff #000;
|
||||
background: #d8e0e4;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #e8f0f4;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #788084;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #d8e0e4;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
background: #d8e0e4;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
background: #c8d0d4;
|
||||
padding: 0px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #048;
|
||||
color: #aef;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #e8f0f4;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #667;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
271
jscalendar-1.0/calendar-win2k-cold-2.css
Normal file
271
jscalendar-1.0/calendar-win2k-cold-2.css
Normal file
@ -0,0 +1,271 @@
|
||||
/* The main calendar widget. DIV containing a table. */
|
||||
|
||||
.calendar {
|
||||
position: relative;
|
||||
display: none;
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #c8d4d0;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
.calendar table {
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
font-size: 11px;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
background: #c8d4d0;
|
||||
font-family: tahoma,verdana,sans-serif;
|
||||
}
|
||||
|
||||
/* Header part -- contains navigation buttons and day names. */
|
||||
|
||||
.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar .nav {
|
||||
background: transparent url(menuarrow.gif) no-repeat 100% 100%;
|
||||
}
|
||||
|
||||
.calendar thead .title { /* This holds the current "month, year" */
|
||||
font-weight: bold;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #788480;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar thead .headrow { /* Row <TR> containing navigation buttons */
|
||||
}
|
||||
|
||||
.calendar thead .daynames { /* Row <TR> containing the day names */
|
||||
}
|
||||
|
||||
.calendar thead .name { /* Cells <TD> containing the day names */
|
||||
border-bottom: 1px solid #000;
|
||||
padding: 2px;
|
||||
text-align: center;
|
||||
background: #e8f4f0;
|
||||
}
|
||||
|
||||
.calendar thead .weekend { /* How a weekend day name shows in header */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar thead .hilite { /* How do the buttons in header appear when hover */
|
||||
border-top: 2px solid #fff;
|
||||
border-right: 2px solid #000;
|
||||
border-bottom: 2px solid #000;
|
||||
border-left: 2px solid #fff;
|
||||
padding: 0px;
|
||||
background-color: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar thead .active { /* Active (pressed) buttons in header */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
background-color: #b8c4c0;
|
||||
}
|
||||
|
||||
/* The body part -- contains all the days in month. */
|
||||
|
||||
.calendar tbody .day { /* Cells <TD> containing month days dates */
|
||||
width: 2em;
|
||||
text-align: right;
|
||||
padding: 2px 4px 2px 2px;
|
||||
}
|
||||
.calendar tbody .day.othermonth {
|
||||
font-size: 80%;
|
||||
color: #aaa;
|
||||
}
|
||||
.calendar tbody .day.othermonth.oweekend {
|
||||
color: #faa;
|
||||
}
|
||||
|
||||
.calendar table .wn {
|
||||
padding: 2px 3px 2px 2px;
|
||||
border-right: 1px solid #000;
|
||||
background: #e8f4f0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td {
|
||||
background: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar tbody .rowhilite td.wn {
|
||||
background: #c8d4d0;
|
||||
}
|
||||
|
||||
.calendar tbody td.hilite { /* Hovered cells <TD> */
|
||||
padding: 1px 3px 1px 1px;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
|
||||
.calendar tbody td.active { /* Active (pressed) cells <TD> */
|
||||
padding: 2px 2px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar tbody td.selected { /* Cell showing selected date */
|
||||
font-weight: bold;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
padding: 2px 2px 0px 2px;
|
||||
background: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar tbody td.weekend { /* Cells showing weekend days */
|
||||
color: #f00;
|
||||
}
|
||||
|
||||
.calendar tbody td.today { /* Cell showing today date */
|
||||
font-weight: bold;
|
||||
color: #00f;
|
||||
}
|
||||
|
||||
.calendar tbody .disabled { color: #999; }
|
||||
|
||||
.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* The footer part -- status bar and "Close" button */
|
||||
|
||||
.calendar tfoot .footrow { /* The <TR> in footer (only one right now) */
|
||||
}
|
||||
|
||||
.calendar tfoot .ttip { /* Tooltip (status bar) cell <TD> */
|
||||
background: #e8f4f0;
|
||||
padding: 1px;
|
||||
border: 1px solid #000;
|
||||
background: #788480;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar tfoot .hilite { /* Hover style for buttons in footer */
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 1px;
|
||||
background: #d8e4e0;
|
||||
}
|
||||
|
||||
.calendar tfoot .active { /* Active (pressed) style for buttons in footer */
|
||||
padding: 2px 0px 0px 2px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
/* Combo boxes (menus that display months/years for direct selection) */
|
||||
|
||||
.calendar .combo {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 4em;
|
||||
top: 0px;
|
||||
left: 0px;
|
||||
cursor: default;
|
||||
border-top: 1px solid #fff;
|
||||
border-right: 1px solid #000;
|
||||
border-bottom: 1px solid #000;
|
||||
border-left: 1px solid #fff;
|
||||
background: #d8e4e0;
|
||||
font-size: 90%;
|
||||
padding: 1px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.calendar .combo .label,
|
||||
.calendar .combo .label-IEfix {
|
||||
text-align: center;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
.calendar .combo .label-IEfix {
|
||||
width: 4em;
|
||||
}
|
||||
|
||||
.calendar .combo .active {
|
||||
background: #c8d4d0;
|
||||
padding: 0px;
|
||||
border-top: 1px solid #000;
|
||||
border-right: 1px solid #fff;
|
||||
border-bottom: 1px solid #fff;
|
||||
border-left: 1px solid #000;
|
||||
}
|
||||
|
||||
.calendar .combo .hilite {
|
||||
background: #048;
|
||||
color: #aef;
|
||||
}
|
||||
|
||||
.calendar td.time {
|
||||
border-top: 1px solid #000;
|
||||
padding: 1px 0px;
|
||||
text-align: center;
|
||||
background-color: #e8f0f4;
|
||||
}
|
||||
|
||||
.calendar td.time .hour,
|
||||
.calendar td.time .minute,
|
||||
.calendar td.time .ampm {
|
||||
padding: 0px 3px 0px 4px;
|
||||
border: 1px solid #889;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time .ampm {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.calendar td.time .colon {
|
||||
padding: 0px 2px 0px 3px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.calendar td.time span.hilite {
|
||||
border-color: #000;
|
||||
background-color: #667;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.calendar td.time span.active {
|
||||
border-color: #f00;
|
||||
background-color: #000;
|
||||
color: #0f0;
|
||||
}
|
1806
jscalendar-1.0/calendar.js
Normal file
1806
jscalendar-1.0/calendar.js
Normal file
File diff suppressed because it is too large
Load Diff
119
jscalendar-1.0/calendar.php
Normal file
119
jscalendar-1.0/calendar.php
Normal file
@ -0,0 +1,119 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* File: calendar.php | (c) dynarch.com 2004
|
||||
* Distributed as part of "The Coolest DHTML Calendar"
|
||||
* under the same terms.
|
||||
* -----------------------------------------------------------------
|
||||
* This file implements a simple PHP wrapper for the calendar. It
|
||||
* allows you to easily include all the calendar files and setup the
|
||||
* calendar by instantiating and calling a PHP object.
|
||||
*/
|
||||
|
||||
define('NEWLINE', "\n");
|
||||
|
||||
class DHTML_Calendar {
|
||||
var $calendar_lib_path;
|
||||
|
||||
var $calendar_file;
|
||||
var $calendar_lang_file;
|
||||
var $calendar_setup_file;
|
||||
var $calendar_theme_file;
|
||||
var $calendar_options;
|
||||
|
||||
function DHTML_Calendar($calendar_lib_path = '/calendar/',
|
||||
$lang = 'en',
|
||||
$theme = 'calendar-win2k-1',
|
||||
$stripped = true) {
|
||||
if ($stripped) {
|
||||
$this->calendar_file = 'calendar_stripped.js';
|
||||
$this->calendar_setup_file = 'calendar-setup_stripped.js';
|
||||
} else {
|
||||
$this->calendar_file = 'calendar.js';
|
||||
$this->calendar_setup_file = 'calendar-setup.js';
|
||||
}
|
||||
$this->calendar_lang_file = 'lang/calendar-' . $lang . '.js';
|
||||
$this->calendar_theme_file = $theme.'.css';
|
||||
$this->calendar_lib_path = preg_replace('/\/+$/', '/', $calendar_lib_path);
|
||||
$this->calendar_options = array('ifFormat' => '%Y/%m/%d',
|
||||
'daFormat' => '%Y/%m/%d');
|
||||
}
|
||||
|
||||
function set_option($name, $value) {
|
||||
$this->calendar_options[$name] = $value;
|
||||
}
|
||||
|
||||
function load_files() {
|
||||
echo $this->get_load_files_code();
|
||||
}
|
||||
|
||||
function get_load_files_code() {
|
||||
$code = ( '<link rel="stylesheet" type="text/css" media="all" href="' .
|
||||
$this->calendar_lib_path . $this->calendar_theme_file .
|
||||
'" />' . NEWLINE );
|
||||
$code .= ( '<script type="text/javascript" src="' .
|
||||
$this->calendar_lib_path . $this->calendar_file .
|
||||
'"></script>' . NEWLINE );
|
||||
$code .= ( '<script type="text/javascript" src="' .
|
||||
$this->calendar_lib_path . $this->calendar_lang_file .
|
||||
'"></script>' . NEWLINE );
|
||||
$code .= ( '<script type="text/javascript" src="' .
|
||||
$this->calendar_lib_path . $this->calendar_setup_file .
|
||||
'"></script>' );
|
||||
return $code;
|
||||
}
|
||||
|
||||
function _make_calendar($other_options = array()) {
|
||||
$js_options = $this->_make_js_hash(array_merge($this->calendar_options, $other_options));
|
||||
$code = ( '<script type="text/javascript">Calendar.setup({' .
|
||||
$js_options .
|
||||
'});</script>' );
|
||||
return $code;
|
||||
}
|
||||
|
||||
function make_input_field($cal_options = array(), $field_attributes = array()) {
|
||||
$id = $this->_gen_id();
|
||||
$attrstr = $this->_make_html_attr(array_merge($field_attributes,
|
||||
array('id' => $this->_field_id($id),
|
||||
'type' => 'text')));
|
||||
echo '<input ' . $attrstr .'/>';
|
||||
echo '<a href="#" id="'. $this->_trigger_id($id) . '">' .
|
||||
'<img align="middle" border="0" src="' . $this->calendar_lib_path . 'img.gif" alt="" /></a>';
|
||||
|
||||
$options = array_merge($cal_options,
|
||||
array('inputField' => $this->_field_id($id),
|
||||
'button' => $this->_trigger_id($id)));
|
||||
echo $this->_make_calendar($options);
|
||||
}
|
||||
|
||||
/// PRIVATE SECTION
|
||||
|
||||
function _field_id($id) { return 'f-calendar-field-' . $id; }
|
||||
function _trigger_id($id) { return 'f-calendar-trigger-' . $id; }
|
||||
function _gen_id() { static $id = 0; return ++$id; }
|
||||
|
||||
function _make_js_hash($array) {
|
||||
$jstr = '';
|
||||
reset($array);
|
||||
while (list($key, $val) = each($array)) {
|
||||
if (is_bool($val))
|
||||
$val = $val ? 'true' : 'false';
|
||||
else if (!is_numeric($val))
|
||||
$val = '"'.$val.'"';
|
||||
if ($jstr) $jstr .= ',';
|
||||
$jstr .= '"' . $key . '":' . $val;
|
||||
}
|
||||
return $jstr;
|
||||
}
|
||||
|
||||
function _make_html_attr($array) {
|
||||
$attrstr = '';
|
||||
reset($array);
|
||||
while (list($key, $val) = each($array)) {
|
||||
$attrstr .= $key . '="' . $val . '" ';
|
||||
}
|
||||
return $attrstr;
|
||||
}
|
||||
};
|
||||
|
||||
?>
|
14
jscalendar-1.0/calendar_stripped.js
Normal file
14
jscalendar-1.0/calendar_stripped.js
Normal file
File diff suppressed because one or more lines are too long
109
jscalendar-1.0/dayinfo.html
Normal file
109
jscalendar-1.0/dayinfo.html
Normal file
@ -0,0 +1,109 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
||||
<html> <head>
|
||||
<title>How to include additional info in day cells</title>
|
||||
<script type="text/javascript" src="calendar.js"></script>
|
||||
<script type="text/javascript" src="lang/calendar-en.js"></script>
|
||||
<script type="text/javascript" src="calendar-setup.js"></script>
|
||||
<script type="text/javascript">
|
||||
// define info for dates in this table:
|
||||
var dateInfo = {
|
||||
"20050308" : "Mishoo's birthday",
|
||||
"20050310" : "foo",
|
||||
"20050315" : "bar",
|
||||
"20050318" : "25$",
|
||||
"20050324" : "60$"
|
||||
};
|
||||
</script>
|
||||
<style type="text/css">
|
||||
@import url(calendar-win2k-1.css);
|
||||
.calendar .inf { font-size: 80%; color: #444; }
|
||||
.calendar .wn { font-weight: bold; vertical-align: top; }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>How to include additional info in day cells</h1>
|
||||
|
||||
<div id="flatcal" style="float: right"></div>
|
||||
|
||||
<script type="text/javascript">
|
||||
function getDateText(date, d) {
|
||||
var inf = dateInfo[date.print("%Y%m%d")];
|
||||
if (!inf) {
|
||||
return d + "<div class='inf'> </div>";
|
||||
} else {
|
||||
return d + "<div class='inf'>" + inf + "</div>";
|
||||
}
|
||||
};
|
||||
function flatCallback(cal) {
|
||||
if (cal.dateClicked) {
|
||||
// do something here
|
||||
window.status = "Selected: " + cal.date;
|
||||
var inf = dateInfo[cal.date.print("%Y%m%d")];
|
||||
if (inf) {
|
||||
window.status += ". Additional info: " + inf;
|
||||
}
|
||||
}
|
||||
};
|
||||
Calendar.setup({
|
||||
flat: "flatcal",
|
||||
dateText: getDateText,
|
||||
flatCallback: flatCallback
|
||||
});
|
||||
</script>
|
||||
|
||||
<p>The idea is simple:</p>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
<p>Define a callback that takes two parameters like this:</p>
|
||||
<pre>function getDateText(date, d)</pre>
|
||||
<p>
|
||||
This function will receive the date object as the first
|
||||
parameter and the current date number (1..31) as the second (you
|
||||
can get it as well by calling date.getDate() but since it's very
|
||||
probably useful I thought I'd pass it too so that we can avoid a
|
||||
function call).
|
||||
</p>
|
||||
<p>
|
||||
This function <em>must</em> return the text to be inserted in
|
||||
the cell of the passed date. That is, one should at least
|
||||
"return d;".
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
Pass the above function as the "dateText" parameter to
|
||||
Calendar.setup.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<p>
|
||||
The function could simply look like:
|
||||
</p>
|
||||
|
||||
<pre
|
||||
> function getDateText(date, d) {
|
||||
if (d == 12) {
|
||||
return "12th";
|
||||
} else if (d == 13) {
|
||||
return "bad luck";
|
||||
} /* ... etc ... */
|
||||
}</pre>
|
||||
|
||||
<p>
|
||||
but it's easy to imagine that this approach sucks. For a better
|
||||
way, see the source of this page and note the usage of an externally
|
||||
defined "dateText" object which maps "date" to "date info", also
|
||||
taking into account the year and month. This object can be easily
|
||||
generated from a database, and the getDateText function becomes
|
||||
extremely simple (and static).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Cheers!
|
||||
</p>
|
||||
|
||||
<hr />
|
||||
<address><a href="http://dynarch.com/mishoo/">mishoo</a></address>
|
||||
<!-- hhmts start --> Last modified: Sat Mar 5 17:18:06 EET 2005 <!-- hhmts end -->
|
||||
</body> </html>
|
BIN
jscalendar-1.0/doc/html/field-button.jpg
Normal file
BIN
jscalendar-1.0/doc/html/field-button.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
193
jscalendar-1.0/doc/html/reference-Z-S.css
Normal file
193
jscalendar-1.0/doc/html/reference-Z-S.css
Normal 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;
|
||||
}
|
||||
|
||||
|
34
jscalendar-1.0/doc/html/reference.css
Normal file
34
jscalendar-1.0/doc/html/reference.css
Normal file
@ -0,0 +1,34 @@
|
||||
html { margin: 0px; padding: 0px; background-color: #08f; color: #444; font-family: georgia,serif; }
|
||||
body { margin: 2em 8%; background-color: #fff; padding: 1em; border: 2px ridge #048; }
|
||||
|
||||
a:link, a:visited { text-decoration: none; color: #00f; }
|
||||
a:hover { color: #f00; text-decoration: underline; }
|
||||
a:active { color: #f84; }
|
||||
|
||||
h1, h2, h3, h4, h5, h6 { font-family: tahoma,verdana,sans-serif; }
|
||||
|
||||
h2, h3 { font-weight: normal; }
|
||||
|
||||
h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover { text-decoration: none; }
|
||||
|
||||
h1 { font-size: 170%; border: 2px ridge #048; letter-spacing: 2px; color: #000; margin-left: -2em; margin-right: -2em;
|
||||
background-color: #fff; padding: 2px 1em; background-color: #def; }
|
||||
h2 { font-size: 140%; color: #222; }
|
||||
h3 { font-size: 120%; color: #444; }
|
||||
|
||||
h1.title { font-size: 300%; font-family: georgia,serif; font-weight: normal; color: #846; letter-spacing: -1px;
|
||||
border: none;
|
||||
padding: none;
|
||||
background-color: #fff;
|
||||
border-bottom: 3px double #624; padding-bottom: 2px; margin-left: 8%; margin-right: 8%; }
|
||||
|
||||
.colophon { padding-top: 2em; color: #999; font-size: 90%; font-family: georgia,"times new roman",serif; }
|
||||
.colophon a:link, .colophon a:visited { color: #755; }
|
||||
.colophon a:hover { color: #422; text-decoration: underline; }
|
||||
|
||||
.footnote { font-size: 90%; font-style: italic; font-family: georgia,"times new roman",serif; margin: 0px 3em; }
|
||||
.footnote sup { font-size: 120%; padding: 0px 0.3em; position: relative; top: -0.2em; }
|
||||
|
||||
.small { font-size: 90%; }
|
||||
|
||||
.verbatim { background-color: #eee; padding: 0.2em 1em; border: 1px solid #aaa; }
|
1738
jscalendar-1.0/doc/html/reference.html
Normal file
1738
jscalendar-1.0/doc/html/reference.html
Normal file
File diff suppressed because it is too large
Load Diff
BIN
jscalendar-1.0/doc/reference.pdf
Normal file
BIN
jscalendar-1.0/doc/reference.pdf
Normal file
Binary file not shown.
BIN
jscalendar-1.0/img.gif
Normal file
BIN
jscalendar-1.0/img.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 223 B |
330
jscalendar-1.0/index.html
Normal file
330
jscalendar-1.0/index.html
Normal file
@ -0,0 +1,330 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<!-- $Id: index.html,v 1.15 2005/03/05 14:38:10 mishoo Exp $ -->
|
||||
|
||||
<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="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" />
|
||||
<link rel="alternate stylesheet" type="text/css" media="all" href="calendar-system.css" title="system" />
|
||||
|
||||
<!-- import the calendar script -->
|
||||
<script type="text/javascript" src="calendar.js"></script>
|
||||
|
||||
<!-- import the language module -->
|
||||
<script type="text/javascript" src="lang/calendar-en.js"></script>
|
||||
|
||||
<!-- other languages might be available in the lang directory; please check
|
||||
your distribution archive. -->
|
||||
|
||||
<!-- helper script that uses the calendar -->
|
||||
<script type="text/javascript">
|
||||
|
||||
var oldLink = null;
|
||||
// code to change the active stylesheet
|
||||
function setActiveStyleSheet(link, title) {
|
||||
var i, a, main;
|
||||
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
|
||||
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
|
||||
a.disabled = true;
|
||||
if(a.getAttribute("title") == title) a.disabled = false;
|
||||
}
|
||||
}
|
||||
if (oldLink) oldLink.style.fontWeight = 'normal';
|
||||
oldLink = link;
|
||||
link.style.fontWeight = 'bold';
|
||||
return false;
|
||||
}
|
||||
|
||||
// This function gets called when the end-user clicks on some date.
|
||||
function selected(cal, date) {
|
||||
cal.sel.value = date; // just update the date in the input field.
|
||||
if (cal.dateClicked && (cal.sel.id == "sel1" || cal.sel.id == "sel3"))
|
||||
// if we add this call we close the calendar on single-click.
|
||||
// just to exemplify both cases, we are using this only for the 1st
|
||||
// and the 3rd field, while 2nd and 4th will still require double-click.
|
||||
cal.callCloseHandler();
|
||||
}
|
||||
|
||||
// And this gets called when the end-user clicks on the _selected_ date,
|
||||
// or clicks on the "Close" button. It just hides the calendar without
|
||||
// destroying it.
|
||||
function closeHandler(cal) {
|
||||
cal.hide(); // hide the calendar
|
||||
// cal.destroy();
|
||||
_dynarch_popupCalendar = null;
|
||||
}
|
||||
|
||||
// This function shows the calendar under the element having the given id.
|
||||
// It takes care of catching "mousedown" signals on document and hiding the
|
||||
// calendar if the click was outside.
|
||||
function showCalendar(id, format, showsTime, showsOtherMonths) {
|
||||
var el = document.getElementById(id);
|
||||
if (_dynarch_popupCalendar != null) {
|
||||
// we already have some calendar created
|
||||
_dynarch_popupCalendar.hide(); // so we hide it first.
|
||||
} else {
|
||||
// first-time call, create the calendar.
|
||||
var cal = new Calendar(1, null, selected, closeHandler);
|
||||
// uncomment the following line to hide the week numbers
|
||||
// cal.weekNumbers = false;
|
||||
if (typeof showsTime == "string") {
|
||||
cal.showsTime = true;
|
||||
cal.time24 = (showsTime == "24");
|
||||
}
|
||||
if (showsOtherMonths) {
|
||||
cal.showsOtherMonths = true;
|
||||
}
|
||||
_dynarch_popupCalendar = cal; // remember it in the global var
|
||||
cal.setRange(1900, 2070); // min/max year allowed.
|
||||
cal.create();
|
||||
}
|
||||
_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.
|
||||
_dynarch_popupCalendar.showAtElement(el.nextSibling, "Br"); // show the calendar
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
var MINUTE = 60 * 1000;
|
||||
var HOUR = 60 * MINUTE;
|
||||
var DAY = 24 * HOUR;
|
||||
var WEEK = 7 * DAY;
|
||||
|
||||
// If this handler returns true then the "date" given as
|
||||
// parameter will be disabled. In this example we enable
|
||||
// only days within a range of 10 days from the current
|
||||
// date.
|
||||
// You can use the functions date.getFullYear() -- returns the year
|
||||
// as 4 digit number, date.getMonth() -- returns the month as 0..11,
|
||||
// and date.getDate() -- returns the date of the month as 1..31, to
|
||||
// make heavy calculations here. However, beware that this function
|
||||
// should be very fast, as it is called for each day in a month when
|
||||
// the calendar is (re)constructed.
|
||||
function isDisabled(date) {
|
||||
var today = new Date();
|
||||
return (Math.abs(date.getTime() - today.getTime()) / DAY) > 10;
|
||||
}
|
||||
|
||||
function flatSelected(cal, date) {
|
||||
var el = document.getElementById("preview");
|
||||
el.innerHTML = date;
|
||||
}
|
||||
|
||||
function showFlatCalendar() {
|
||||
var parent = document.getElementById("display");
|
||||
|
||||
// construct a calendar giving only the "selected" handler.
|
||||
var cal = new Calendar(0, null, flatSelected);
|
||||
|
||||
// hide week numbers
|
||||
cal.weekNumbers = false;
|
||||
|
||||
// We want some dates to be disabled; see function isDisabled above
|
||||
cal.setDisabledHandler(isDisabled);
|
||||
cal.setDateFormat("%A, %B %e");
|
||||
|
||||
// this call must be the last as it might use data initialized above; if
|
||||
// we specify a parent, as opposite to the "showCalendar" function above,
|
||||
// then we create a flat calendar -- not popup. Hidden, though, but...
|
||||
cal.create(parent);
|
||||
|
||||
// ... we can show it here.
|
||||
cal.show();
|
||||
}
|
||||
</script>
|
||||
|
||||
<style type="text/css">
|
||||
.ex { font-weight: bold; background: #fed; color: #080 }
|
||||
.help { color: #080; font-style: italic; }
|
||||
body { background: #fea; font: 10pt tahoma,verdana,sans-serif; }
|
||||
table { font: 13px verdana,tahoma,sans-serif; }
|
||||
a { color: #00f; }
|
||||
a:visited { color: #00f; }
|
||||
a:hover { color: #f00; background: #fefaf0; }
|
||||
a:active { color: #08f; }
|
||||
.key { border: 1px solid #000; background: #fff; color: #008;
|
||||
padding: 0px 5px; cursor: default; font-size: 80%; }
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body onload="showFlatCalendar()">
|
||||
|
||||
<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>
|
||||
|
|
||||
<a href="#" onclick="return setActiveStyleSheet(this, 'summer');">summer</a>
|
||||
|
|
||||
<a href="#" onclick="return setActiveStyleSheet(this, 'green');">green</a>
|
||||
<br />
|
||||
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-1');">win2k-1</a>
|
||||
|
|
||||
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-2');">win2k-2</a>
|
||||
|
|
||||
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-cold-1');">win2k-cold-1</a>
|
||||
|
|
||||
<a href="#" onclick="return setActiveStyleSheet(this, 'win2k-cold-2');">win2k-cold-2</a>
|
||||
<br />
|
||||
<a href="#" onclick="return setActiveStyleSheet(this, 'system');">system</a>
|
||||
<script type="text/javascript">
|
||||
setActiveStyleSheet(document.getElementById("defaultTheme"), "Aqua");
|
||||
</script>
|
||||
</div>
|
||||
<a href="release-notes.html">Release notes</a>.
|
||||
<br />
|
||||
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 />
|
||||
</p>
|
||||
|
||||
<div style="padding-left:20px; font-size: 90%; font-style: italic;">
|
||||
|
||||
</div>
|
||||
|
||||
<table style="width: 100%">
|
||||
<tr valign="top">
|
||||
<td style="background: #ffa; padding: 5px; border: 1px solid #995;">
|
||||
|
||||
<form action="#">
|
||||
<div style="background: #995; color: #ffa; font-weight: bold; padding: 2px;">
|
||||
Popup examples
|
||||
</div>
|
||||
|
||||
<br />
|
||||
|
||||
<b>Date #1:</b> <input type="text" name="date1" id="sel1" size="30"
|
||||
><input type="reset" value=" ... "
|
||||
onclick="return showCalendar('sel1', '%Y-%m-%d [%W] %H:%M', '24', true);"> %Y-%m-%d [%W] %H:%M -- single
|
||||
click<br />
|
||||
|
||||
<b>Date #2:</b> <input type="text" name="date2" id="sel2" size="30"
|
||||
><input type="reset" value=" ... "
|
||||
onclick="return showCalendar('sel2', '%a, %b %e, %Y [%I:%M %p]', '12');"> %a, %b %e, %Y [%I:%M %p]
|
||||
-- double click
|
||||
|
||||
<br /><br />
|
||||
<!--
|
||||
if you remove this comment and leave the following HTML code
|
||||
you will see a horrible effect, in all supported browsers (IE and Mozilla).
|
||||
-->
|
||||
<SELECT multiple size="4" name="component-select">
|
||||
<OPTION selected value="Component_1_a">Component_1</OPTION>
|
||||
<OPTION selected value="Component_1_b">Component_2</OPTION>
|
||||
<OPTION>Component_3</OPTION>
|
||||
<OPTION>Component_4</OPTION>
|
||||
<OPTION>Component_5</OPTION>
|
||||
<OPTION>Component_6</OPTION>
|
||||
<OPTION>Component_7</OPTION>
|
||||
</SELECT>
|
||||
this select should hide when the calendar is above it.
|
||||
<br /><br />
|
||||
|
||||
<b>Date #3:</b> <input type="text" name="date3" id="sel3" size="30"
|
||||
><input type="reset" value=" ... "
|
||||
onclick="return showCalendar('sel3', '%d/%m/%Y');"> %d/%m/%Y
|
||||
-- single click
|
||||
<br />
|
||||
|
||||
<b>Date #4:</b> <input type="text" name="date4" id="sel4" size="30"
|
||||
><input type="reset" value=" ... "
|
||||
onclick="return showCalendar('sel4', '%A, %B %e, %Y');"> %A, %B %e, %Y --
|
||||
double click
|
||||
|
||||
</form>
|
||||
|
||||
<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>
|
||||
|
||||
<p>Starting with version 0.9.2, you can also use the keyboard to select
|
||||
dates (only for popup calendars; does <em>not</em> work with Opera
|
||||
7 or Konqueror/Safari). The following keys are available:</p>
|
||||
|
||||
<ul>
|
||||
|
||||
<li><span class="key">←</span> , <span class="key">→</span> ,
|
||||
<span class="key">↑</span> , <span class="key">↓</span> -- select date</li>
|
||||
<li><span class="key">CTRL</span> + <span class="key">←</span> ,
|
||||
<span class="key">→</span> -- select month</li>
|
||||
<li><span class="key">CTRL</span> + <span class="key">↑</span> ,
|
||||
<span class="key">↓</span> -- select year</li>
|
||||
<li><span class="key">SPACE</span> -- go to <em>today</em> date</li>
|
||||
<li><span class="key">ENTER</span> -- accept the currently selected date</li>
|
||||
<li><span class="key">ESC</span> -- cancel selection</li>
|
||||
|
||||
</ul>
|
||||
|
||||
</td>
|
||||
|
||||
<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
|
||||
</div>
|
||||
|
||||
<p style="width: 12em"><small>A non-popup version will appear below as soon
|
||||
as the page is loaded. Note that it doesn't show the week number.</small></p>
|
||||
|
||||
<!-- 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>
|
||||
|
||||
<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.
|
||||
</small></p>
|
||||
|
||||
</div>
|
||||
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<hr /><address>
|
||||
© <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 we
|
||||
would love it if you would <a href="http://www.dynarch.com/contact.html">let us
|
||||
know</a>.</p>
|
||||
|
||||
</body></html>
|
39
jscalendar-1.0/lang/calendar-af.js
Normal file
39
jscalendar-1.0/lang/calendar-af.js
Normal file
@ -0,0 +1,39 @@
|
||||
// ** I18N Afrikaans
|
||||
Calendar._DN = new Array
|
||||
("Sondag",
|
||||
"Maandag",
|
||||
"Dinsdag",
|
||||
"Woensdag",
|
||||
"Donderdag",
|
||||
"Vrydag",
|
||||
"Saterdag",
|
||||
"Sondag");
|
||||
Calendar._MN = new Array
|
||||
("Januarie",
|
||||
"Februarie",
|
||||
"Maart",
|
||||
"April",
|
||||
"Mei",
|
||||
"Junie",
|
||||
"Julie",
|
||||
"Augustus",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"Desember");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["TOGGLE"] = "Verander eerste dag van die week";
|
||||
Calendar._TT["PREV_YEAR"] = "Vorige jaar (hou vir keuselys)";
|
||||
Calendar._TT["PREV_MONTH"] = "Vorige maand (hou vir keuselys)";
|
||||
Calendar._TT["GO_TODAY"] = "Gaan na vandag";
|
||||
Calendar._TT["NEXT_MONTH"] = "Volgende maand (hou vir keuselys)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Volgende jaar (hou vir keuselys)";
|
||||
Calendar._TT["SEL_DATE"] = "Kies datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te skuif";
|
||||
Calendar._TT["PART_TODAY"] = " (vandag)";
|
||||
Calendar._TT["MON_FIRST"] = "Vertoon Maandag eerste";
|
||||
Calendar._TT["SUN_FIRST"] = "Display Sunday first";
|
||||
Calendar._TT["CLOSE"] = "Close";
|
||||
Calendar._TT["TODAY"] = "Today";
|
101
jscalendar-1.0/lang/calendar-al.js
Normal file
101
jscalendar-1.0/lang/calendar-al.js
Normal file
@ -0,0 +1,101 @@
|
||||
// Calendar ALBANIAN language
|
||||
//author Rigels Gordani rige@hotmail.com
|
||||
|
||||
// ditet
|
||||
Calendar._DN = new Array
|
||||
("E Diele",
|
||||
"E Hene",
|
||||
"E Marte",
|
||||
"E Merkure",
|
||||
"E Enjte",
|
||||
"E Premte",
|
||||
"E Shtune",
|
||||
"E Diele");
|
||||
|
||||
//ditet shkurt
|
||||
Calendar._SDN = new Array
|
||||
("Die",
|
||||
"Hen",
|
||||
"Mar",
|
||||
"Mer",
|
||||
"Enj",
|
||||
"Pre",
|
||||
"Sht",
|
||||
"Die");
|
||||
|
||||
// muajt
|
||||
Calendar._MN = new Array
|
||||
("Janar",
|
||||
"Shkurt",
|
||||
"Mars",
|
||||
"Prill",
|
||||
"Maj",
|
||||
"Qeshor",
|
||||
"Korrik",
|
||||
"Gusht",
|
||||
"Shtator",
|
||||
"Tetor",
|
||||
"Nentor",
|
||||
"Dhjetor");
|
||||
|
||||
// muajte shkurt
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Shk",
|
||||
"Mar",
|
||||
"Pri",
|
||||
"Maj",
|
||||
"Qes",
|
||||
"Kor",
|
||||
"Gus",
|
||||
"Sht",
|
||||
"Tet",
|
||||
"Nen",
|
||||
"Dhj");
|
||||
|
||||
// ndihmesa
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Per kalendarin";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"Zgjedhes i ores/dates ne DHTML \n" +
|
||||
"\n\n" +"Zgjedhja e Dates:\n" +
|
||||
"- Perdor butonat \xab, \xbb per te zgjedhur vitin\n" +
|
||||
"- Perdor butonat" + String.fromCharCode(0x2039) + ", " +
|
||||
String.fromCharCode(0x203a) +
|
||||
" per te zgjedhur muajin\n" +
|
||||
"- Mbani shtypur butonin e mousit per nje zgjedje me te shpejte.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Zgjedhja e kohes:\n" +
|
||||
"- Kliko tek ndonje nga pjeset e ores per ta rritur ate\n" +
|
||||
"- ose kliko me Shift per ta zvogeluar ate\n" +
|
||||
"- ose cliko dhe terhiq per zgjedhje me te shpejte.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Viti i shkuar (prit per menune)";
|
||||
Calendar._TT["PREV_MONTH"] = "Muaji i shkuar (prit per menune)";
|
||||
Calendar._TT["GO_TODAY"] = "Sot";
|
||||
Calendar._TT["NEXT_MONTH"] = "Muaji i ardhshem (prit per menune)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Viti i ardhshem (prit per menune)";
|
||||
Calendar._TT["SEL_DATE"] = "Zgjidh daten";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Terhiqe per te levizur";
|
||||
Calendar._TT["PART_TODAY"] = " (sot)";
|
||||
|
||||
// "%s" eshte dita e pare e javes
|
||||
// %s do te zevendesohet me emrin e dite
|
||||
Calendar._TT["DAY_FIRST"] = "Trego te %s te paren";
|
||||
|
||||
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Mbyll";
|
||||
Calendar._TT["TODAY"] = "Sot";
|
||||
Calendar._TT["TIME_PART"] = "Kliko me (Shift-)ose terhiqe per te ndryshuar
|
||||
vleren";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "Java";
|
||||
Calendar._TT["TIME"] = "Koha:";
|
||||
|
124
jscalendar-1.0/lang/calendar-bg.js
Normal file
124
jscalendar-1.0/lang/calendar-bg.js
Normal file
@ -0,0 +1,124 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar BG language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Translator: Valentin Sheiretsky, <valio@valio.eu.org>
|
||||
// Encoding: Windows-1251
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Íåäåëÿ",
|
||||
"Ïîíåäåëíèê",
|
||||
"Âòîðíèê",
|
||||
"Ñðÿäà",
|
||||
"×åòâúðòúê",
|
||||
"Ïåòúê",
|
||||
"Ñúáîòà",
|
||||
"Íåäåëÿ");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Íåä",
|
||||
"Ïîí",
|
||||
"Âòî",
|
||||
"Ñðÿ",
|
||||
"×åò",
|
||||
"Ïåò",
|
||||
"Ñúá",
|
||||
"Íåä");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("ßíóàðè",
|
||||
"Ôåâðóàðè",
|
||||
"Ìàðò",
|
||||
"Àïðèë",
|
||||
"Ìàé",
|
||||
"Þíè",
|
||||
"Þëè",
|
||||
"Àâãóñò",
|
||||
"Ñåïòåìâðè",
|
||||
"Îêòîìâðè",
|
||||
"Íîåìâðè",
|
||||
"Äåêåìâðè");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("ßíó",
|
||||
"Ôåâ",
|
||||
"Ìàð",
|
||||
"Àïð",
|
||||
"Ìàé",
|
||||
"Þíè",
|
||||
"Þëè",
|
||||
"Àâã",
|
||||
"Ñåï",
|
||||
"Îêò",
|
||||
"Íîå",
|
||||
"Äåê");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Èíôîðìàöèÿ çà êàëåíäàðà";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Date selection:\n" +
|
||||
"- Use the \xab, \xbb buttons to select year\n" +
|
||||
"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
|
||||
"- Hold mouse button on any of the above buttons for faster selection.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Time selection:\n" +
|
||||
"- Click on any of the time parts to increase it\n" +
|
||||
"- or Shift-click to decrease it\n" +
|
||||
"- or click and drag for faster selection.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Ïðåäíà ãîäèíà (çàäðúæòå çà ìåíþ)";
|
||||
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-)Click èëè drag çà äà ïðîìåíèòå ñòîéíîñòòà";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%A - %e %B %Y";
|
||||
|
||||
Calendar._TT["WK"] = "Ñåäì";
|
||||
Calendar._TT["TIME"] = "×àñ:";
|
123
jscalendar-1.0/lang/calendar-big5-utf8.js
Normal file
123
jscalendar-1.0/lang/calendar-big5-utf8.js
Normal file
@ -0,0 +1,123 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar big5-utf8 language
|
||||
// Author: Gary Fu, <gary@garyfu.idv.tw>
|
||||
// Encoding: utf8
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("星期日",
|
||||
"星期一",
|
||||
"星期二",
|
||||
"星期三",
|
||||
"星期四",
|
||||
"星期五",
|
||||
"星期六",
|
||||
"星期日");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("日",
|
||||
"一",
|
||||
"二",
|
||||
"三",
|
||||
"四",
|
||||
"五",
|
||||
"六",
|
||||
"日");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "關於";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"日期選擇方法:\n" +
|
||||
"- 使用 \xab, \xbb 按鈕可選擇年份\n" +
|
||||
"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕可選擇月份\n" +
|
||||
"- 按住上面的按鈕可以加快選取";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"時間選擇方法:\n" +
|
||||
"- 點擊任何的時間部份可增加其值\n" +
|
||||
"- 同時按Shift鍵再點擊可減少其值\n" +
|
||||
"- 點擊並拖曳可加快改變的值";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "上一年 (按住選單)";
|
||||
Calendar._TT["PREV_MONTH"] = "下一年 (按住選單)";
|
||||
Calendar._TT["GO_TODAY"] = "到今日";
|
||||
Calendar._TT["NEXT_MONTH"] = "上一月 (按住選單)";
|
||||
Calendar._TT["NEXT_YEAR"] = "下一月 (按住選單)";
|
||||
Calendar._TT["SEL_DATE"] = "選擇日期";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
|
||||
Calendar._TT["PART_TODAY"] = " (今日)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "將 %s 顯示在前";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "關閉";
|
||||
Calendar._TT["TODAY"] = "今日";
|
||||
Calendar._TT["TIME_PART"] = "點擊or拖曳可改變時間(同時按Shift為減)";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "週";
|
||||
Calendar._TT["TIME"] = "Time:";
|
123
jscalendar-1.0/lang/calendar-big5.js
Normal file
123
jscalendar-1.0/lang/calendar-big5.js
Normal file
@ -0,0 +1,123 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar big5 language
|
||||
// Author: Gary Fu, <gary@garyfu.idv.tw>
|
||||
// Encoding: big5
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("星期日",
|
||||
"星期一",
|
||||
"星期二",
|
||||
"星期三",
|
||||
"星期四",
|
||||
"星期五",
|
||||
"星期六",
|
||||
"星期日");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("日",
|
||||
"一",
|
||||
"二",
|
||||
"三",
|
||||
"四",
|
||||
"五",
|
||||
"六",
|
||||
"日");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "關於";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"日期選擇方法:\n" +
|
||||
"- 使用 \xab, \xbb 按鈕可選擇年份\n" +
|
||||
"- 使用 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按鈕可選擇月份\n" +
|
||||
"- 按住上面的按鈕可以加快選取";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"時間選擇方法:\n" +
|
||||
"- 點擊任何的時間部份可增加其值\n" +
|
||||
"- 同時按Shift鍵再點擊可減少其值\n" +
|
||||
"- 點擊並拖曳可加快改變的值";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "上一年 (按住選單)";
|
||||
Calendar._TT["PREV_MONTH"] = "下一年 (按住選單)";
|
||||
Calendar._TT["GO_TODAY"] = "到今日";
|
||||
Calendar._TT["NEXT_MONTH"] = "上一月 (按住選單)";
|
||||
Calendar._TT["NEXT_YEAR"] = "下一月 (按住選單)";
|
||||
Calendar._TT["SEL_DATE"] = "選擇日期";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "拖曳";
|
||||
Calendar._TT["PART_TODAY"] = " (今日)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "將 %s 顯示在前";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "關閉";
|
||||
Calendar._TT["TODAY"] = "今日";
|
||||
Calendar._TT["TIME_PART"] = "點擊or拖曳可改變時間(同時按Shift為減)";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "週";
|
||||
Calendar._TT["TIME"] = "Time:";
|
108
jscalendar-1.0/lang/calendar-br.js
Normal file
108
jscalendar-1.0/lang/calendar-br.js
Normal file
@ -0,0 +1,108 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar pt-BR language
|
||||
// Author: Fernando Dourado, <fernando.dourado@ig.com.br>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Domingo",
|
||||
"Segunda",
|
||||
"Terça",
|
||||
"Quarta",
|
||||
"Quinta",
|
||||
"Sexta",
|
||||
"Sabádo",
|
||||
"Domingo");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
// [No changes using default values]
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Janeiro",
|
||||
"Fevereiro",
|
||||
"Março",
|
||||
"Abril",
|
||||
"Maio",
|
||||
"Junho",
|
||||
"Julho",
|
||||
"Agosto",
|
||||
"Setembro",
|
||||
"Outubro",
|
||||
"Novembro",
|
||||
"Dezembro");
|
||||
|
||||
// short month names
|
||||
// [No changes using default values]
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Sobre o calendário";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Translate to portuguese Brazil (pt-BR) by Fernando Dourado (fernando.dourado@ig.com.br)\n" +
|
||||
"Tradução para o português Brasil (pt-BR) por Fernando Dourado (fernando.dourado@ig.com.br)" +
|
||||
"\n\n" +
|
||||
"Selecionar data:\n" +
|
||||
"- Use as teclas \xab, \xbb para selecionar o ano\n" +
|
||||
"- Use as teclas " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para selecionar o mês\n" +
|
||||
"- Clique e segure com o mouse em qualquer botão para selecionar rapidamente.";
|
||||
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selecionar hora:\n" +
|
||||
"- Clique em qualquer uma das partes da hora para aumentar\n" +
|
||||
"- ou Shift-clique para diminuir\n" +
|
||||
"- ou clique e arraste para selecionar rapidamente.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Ano anterior (clique e segure para menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Mês anterior (clique e segure para menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Ir para a data atual";
|
||||
Calendar._TT["NEXT_MONTH"] = "Próximo mês (clique e segure para menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Próximo ano (clique e segure para menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Selecione uma data";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Clique e segure para mover";
|
||||
Calendar._TT["PART_TODAY"] = " (hoje)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Exibir %s primeiro";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Fechar";
|
||||
Calendar._TT["TODAY"] = "Hoje";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Clique ou arraste para mudar o valor";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%d de %B de %Y";
|
||||
|
||||
Calendar._TT["WK"] = "sem";
|
||||
Calendar._TT["TIME"] = "Hora:";
|
||||
|
123
jscalendar-1.0/lang/calendar-ca.js
Normal file
123
jscalendar-1.0/lang/calendar-ca.js
Normal file
@ -0,0 +1,123 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar CA language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Diumenge",
|
||||
"Dilluns",
|
||||
"Dimarts",
|
||||
"Dimecres",
|
||||
"Dijous",
|
||||
"Divendres",
|
||||
"Dissabte",
|
||||
"Diumenge");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Diu",
|
||||
"Dil",
|
||||
"Dmt",
|
||||
"Dmc",
|
||||
"Dij",
|
||||
"Div",
|
||||
"Dis",
|
||||
"Diu");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Gener",
|
||||
"Febrer",
|
||||
"Març",
|
||||
"Abril",
|
||||
"Maig",
|
||||
"Juny",
|
||||
"Juliol",
|
||||
"Agost",
|
||||
"Setembre",
|
||||
"Octubre",
|
||||
"Novembre",
|
||||
"Desembre");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Gen",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Abr",
|
||||
"Mai",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Ago",
|
||||
"Set",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Des");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Sobre el calendari";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Selector de Data/Hora\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Sel.lecció 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 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)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Mostra %s primer";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Tanca";
|
||||
Calendar._TT["TODAY"] = "Avui";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Click a arrastra per canviar el valor";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "st";
|
||||
Calendar._TT["TIME"] = "Hora:";
|
65
jscalendar-1.0/lang/calendar-cs-utf8.js
Normal file
65
jscalendar-1.0/lang/calendar-cs-utf8.js
Normal file
@ -0,0 +1,65 @@
|
||||
/*
|
||||
calendar-cs-win.js
|
||||
language: Czech
|
||||
encoding: windows-1250
|
||||
author: Lubos Jerabek (xnet@seznam.cz)
|
||||
Jan Uhlir (espinosa@centrum.cz)
|
||||
*/
|
||||
|
||||
// ** I18N
|
||||
Calendar._DN = new Array('Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota','Neděle');
|
||||
Calendar._SDN = new Array('Ne','Po','Út','St','Čt','Pá','So','Ne');
|
||||
Calendar._MN = new Array('Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec');
|
||||
Calendar._SMN = new Array('Led','Úno','Bře','Dub','Kvě','Črv','Čvc','Srp','Zář','Říj','Lis','Pro');
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "O komponentě kalendář";
|
||||
Calendar._TT["TOGGLE"] = "Změna prvního dne v týdnu";
|
||||
Calendar._TT["PREV_YEAR"] = "Předchozí rok (přidrž pro menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Předchozí měsíc (přidrž pro menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Dnešní datum";
|
||||
Calendar._TT["NEXT_MONTH"] = "Další měsíc (přidrž pro menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Další rok (přidrž pro menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Vyber datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Chyť a táhni, pro přesun";
|
||||
Calendar._TT["PART_TODAY"] = " (dnes)";
|
||||
Calendar._TT["MON_FIRST"] = "Ukaž jako první Pondělí";
|
||||
//Calendar._TT["SUN_FIRST"] = "Ukaž jako první Neděli";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Výběr datumu:\n" +
|
||||
"- Use the \xab, \xbb buttons to select year\n" +
|
||||
"- Použijte tlačítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výběru měsíce\n" +
|
||||
"- Podržte tlačítko myši na jakémkoliv z těch tlačítek pro rychlejší výběr.";
|
||||
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Výběr času:\n" +
|
||||
"- Klikněte na jakoukoliv z částí výběru času pro zvýšení.\n" +
|
||||
"- nebo Shift-click pro snížení\n" +
|
||||
"- nebo klikněte a táhněte pro rychlejší výběr.";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Zavřít";
|
||||
Calendar._TT["TODAY"] = "Dnes";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro změnu hodnoty";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "Čas:";
|
65
jscalendar-1.0/lang/calendar-cs-win.js
Normal file
65
jscalendar-1.0/lang/calendar-cs-win.js
Normal file
@ -0,0 +1,65 @@
|
||||
/*
|
||||
calendar-cs-win.js
|
||||
language: Czech
|
||||
encoding: windows-1250
|
||||
author: Lubos Jerabek (xnet@seznam.cz)
|
||||
Jan Uhlir (espinosa@centrum.cz)
|
||||
*/
|
||||
|
||||
// ** I18N
|
||||
Calendar._DN = new Array('Nedìle','Pondìlí','Úterý','Støeda','Ètvrtek','Pátek','Sobota','Nedìle');
|
||||
Calendar._SDN = new Array('Ne','Po','Út','St','Èt','Pá','So','Ne');
|
||||
Calendar._MN = new Array('Leden','Únor','Bøezen','Duben','Kvìten','Èerven','Èervenec','Srpen','Záøí','Øíjen','Listopad','Prosinec');
|
||||
Calendar._SMN = new Array('Led','Úno','Bøe','Dub','Kvì','Èrv','Èvc','Srp','Záø','Øíj','Lis','Pro');
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "O komponentì kalendáø";
|
||||
Calendar._TT["TOGGLE"] = "Zmìna prvního dne v týdnu";
|
||||
Calendar._TT["PREV_YEAR"] = "Pøedchozí rok (pøidrž pro menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Pøedchozí mìsíc (pøidrž pro menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Dnešní datum";
|
||||
Calendar._TT["NEXT_MONTH"] = "Další mìsíc (pøidrž pro menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Další rok (pøidrž pro menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Vyber datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Chy<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["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Výbìr datumu:\n" +
|
||||
"- Use the \xab, \xbb buttons to select year\n" +
|
||||
"- Použijte tlaèítka " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " k výbìru mìsíce\n" +
|
||||
"- Podržte tlaèítko myši na jakémkoliv z tìch tlaèítek pro rychlejší výbìr.";
|
||||
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Výbìr èasu:\n" +
|
||||
"- Kliknìte na jakoukoliv z èástí výbìru èasu pro zvýšení.\n" +
|
||||
"- nebo Shift-click pro snížení\n" +
|
||||
"- nebo kliknìte a táhnìte pro rychlejší výbìr.";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Zobraz %s první";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Zavøít";
|
||||
Calendar._TT["TODAY"] = "Dnes";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Klikni nebo táhni pro zmìnu hodnoty";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "d.m.yy";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "Èas:";
|
123
jscalendar-1.0/lang/calendar-da.js
Normal file
123
jscalendar-1.0/lang/calendar-da.js
Normal file
@ -0,0 +1,123 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar DA language
|
||||
// Author: Michael Thingmand Henriksen, <michael (a) thingmand dot dk>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Søndag",
|
||||
"Mandag",
|
||||
"Tirsdag",
|
||||
"Onsdag",
|
||||
"Torsdag",
|
||||
"Fredag",
|
||||
"Lørdag",
|
||||
"Søndag");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Søn",
|
||||
"Man",
|
||||
"Tir",
|
||||
"Ons",
|
||||
"Tor",
|
||||
"Fre",
|
||||
"Lør",
|
||||
"Søn");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Januar",
|
||||
"Februar",
|
||||
"Marts",
|
||||
"April",
|
||||
"Maj",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"August",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"December");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"Maj",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Okt",
|
||||
"Nov",
|
||||
"Dec");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Om Kalenderen";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For den seneste version besøg: http://www.dynarch.com/projects/calendar/\n"; +
|
||||
"Distribueret under GNU LGPL. Se http://gnu.org/licenses/lgpl.html for detajler." +
|
||||
"\n\n" +
|
||||
"Valg af dato:\n" +
|
||||
"- Brug \xab, \xbb knapperne for at vælge år\n" +
|
||||
"- Brug " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " knapperne for at vælge måned\n" +
|
||||
"- Hold knappen på musen nede på knapperne ovenfor for hurtigere valg.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Valg af tid:\n" +
|
||||
"- Klik på en vilkårlig del for større værdi\n" +
|
||||
"- eller Shift-klik for for mindre værdi\n" +
|
||||
"- eller klik og træk for hurtigere valg.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Ét år tilbage (hold for menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Én måned tilbage (hold for menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Gå til i dag";
|
||||
Calendar._TT["NEXT_MONTH"] = "Én måned frem (hold for menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Ét år frem (hold for menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Vælg dag";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Træk vinduet";
|
||||
Calendar._TT["PART_TODAY"] = " (i dag)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Vis %s først";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Luk";
|
||||
Calendar._TT["TODAY"] = "I dag";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)klik eller træk for at ændre værdi";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "Uge";
|
||||
Calendar._TT["TIME"] = "Tid:";
|
124
jscalendar-1.0/lang/calendar-de.js
Normal file
124
jscalendar-1.0/lang/calendar-de.js
Normal file
@ -0,0 +1,124 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar DE language
|
||||
// Author: Jack (tR), <jack@jtr.de>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Sonntag",
|
||||
"Montag",
|
||||
"Dienstag",
|
||||
"Mittwoch",
|
||||
"Donnerstag",
|
||||
"Freitag",
|
||||
"Samstag",
|
||||
"Sonntag");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("So",
|
||||
"Mo",
|
||||
"Di",
|
||||
"Mi",
|
||||
"Do",
|
||||
"Fr",
|
||||
"Sa",
|
||||
"So");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Januar",
|
||||
"Februar",
|
||||
"M\u00e4rz",
|
||||
"April",
|
||||
"Mai",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"August",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"Dezember");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Feb",
|
||||
"M\u00e4r",
|
||||
"Apr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Okt",
|
||||
"Nov",
|
||||
"Dez");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "\u00DCber dieses Kalendarmodul";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Datum ausw\u00e4hlen:\n" +
|
||||
"- Benutzen Sie die \xab, \xbb Buttons um das Jahr zu w\u00e4hlen\n" +
|
||||
"- Benutzen Sie die " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " Buttons um den Monat zu w\u00e4hlen\n" +
|
||||
"- F\u00fcr eine Schnellauswahl halten Sie die Maustaste \u00fcber diesen Buttons fest.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Zeit ausw\u00e4hlen:\n" +
|
||||
"- Klicken Sie auf die Teile der Uhrzeit, um diese zu erh\u00F6hen\n" +
|
||||
"- oder klicken Sie mit festgehaltener Shift-Taste um diese zu verringern\n" +
|
||||
"- oder klicken und festhalten f\u00fcr Schnellauswahl.";
|
||||
|
||||
Calendar._TT["TOGGLE"] = "Ersten Tag der Woche w\u00e4hlen";
|
||||
Calendar._TT["PREV_YEAR"] = "Voriges Jahr (Festhalten f\u00fcr Schnellauswahl)";
|
||||
Calendar._TT["PREV_MONTH"] = "Voriger Monat (Festhalten f\u00fcr Schnellauswahl)";
|
||||
Calendar._TT["GO_TODAY"] = "Heute ausw\u00e4hlen";
|
||||
Calendar._TT["NEXT_MONTH"] = "N\u00e4chst. Monat (Festhalten f\u00fcr Schnellauswahl)";
|
||||
Calendar._TT["NEXT_YEAR"] = "N\u00e4chst. Jahr (Festhalten f\u00fcr Schnellauswahl)";
|
||||
Calendar._TT["SEL_DATE"] = "Datum ausw\u00e4hlen";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Zum Bewegen festhalten";
|
||||
Calendar._TT["PART_TODAY"] = " (Heute)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Woche beginnt mit %s ";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Schlie\u00dfen";
|
||||
Calendar._TT["TODAY"] = "Heute";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Klick oder Festhalten und Ziehen um den Wert zu \u00e4ndern";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "Zeit:";
|
45
jscalendar-1.0/lang/calendar-du.js
Normal file
45
jscalendar-1.0/lang/calendar-du.js
Normal file
@ -0,0 +1,45 @@
|
||||
// ** I18N
|
||||
Calendar._DN = new Array
|
||||
("Zondag",
|
||||
"Maandag",
|
||||
"Dinsdag",
|
||||
"Woensdag",
|
||||
"Donderdag",
|
||||
"Vrijdag",
|
||||
"Zaterdag",
|
||||
"Zondag");
|
||||
Calendar._MN = new Array
|
||||
("Januari",
|
||||
"Februari",
|
||||
"Maart",
|
||||
"April",
|
||||
"Mei",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"Augustus",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"December");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["TOGGLE"] = "Toggle startdag van de week";
|
||||
Calendar._TT["PREV_YEAR"] = "Vorig jaar (indrukken voor menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Vorige month (indrukken voor menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Naar Vandaag";
|
||||
Calendar._TT["NEXT_MONTH"] = "Volgende Maand (indrukken voor menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Volgend jaar (indrukken voor menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Selecteer datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Sleep om te verplaatsen";
|
||||
Calendar._TT["PART_TODAY"] = " (vandaag)";
|
||||
Calendar._TT["MON_FIRST"] = "Toon Maandag eerst";
|
||||
Calendar._TT["SUN_FIRST"] = "Toon Zondag eerst";
|
||||
Calendar._TT["CLOSE"] = "Sluiten";
|
||||
Calendar._TT["TODAY"] = "Vandaag";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "D, M d";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
89
jscalendar-1.0/lang/calendar-el.js
Normal file
89
jscalendar-1.0/lang/calendar-el.js
Normal file
@ -0,0 +1,89 @@
|
||||
// ** I18N
|
||||
Calendar._DN = new Array
|
||||
("Κυριακή",
|
||||
"Δευτέρα",
|
||||
"Τρίτη",
|
||||
"Τετάρτη",
|
||||
"Πέμπτη",
|
||||
"Παρασκευή",
|
||||
"Σάββατο",
|
||||
"Κυριακή");
|
||||
|
||||
Calendar._SDN = new Array
|
||||
("Κυ",
|
||||
"Δε",
|
||||
"Tρ",
|
||||
"Τε",
|
||||
"Πε",
|
||||
"Πα",
|
||||
"Σα",
|
||||
"Κυ");
|
||||
|
||||
Calendar._MN = new Array
|
||||
("Ιανουάριος",
|
||||
"Φεβρουάριος",
|
||||
"Μάρτιος",
|
||||
"Απρίλιος",
|
||||
"Μάϊος",
|
||||
"Ιούνιος",
|
||||
"Ιούλιος",
|
||||
"Αύγουστος",
|
||||
"Σεπτέμβριος",
|
||||
"Οκτώβριος",
|
||||
"Νοέμβριος",
|
||||
"Δεκέμβριος");
|
||||
|
||||
Calendar._SMN = new Array
|
||||
("Ιαν",
|
||||
"Φεβ",
|
||||
"Μαρ",
|
||||
"Απρ",
|
||||
"Μαι",
|
||||
"Ιουν",
|
||||
"Ιουλ",
|
||||
"Αυγ",
|
||||
"Σεπ",
|
||||
"Οκτ",
|
||||
"Νοε",
|
||||
"Δεκ");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Για το ημερολόγιο";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"Επιλογέας ημερομηνίας/ώρας σε DHTML\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Για τελευταία έκδοση: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Επιλογή ημερομηνίας:\n" +
|
||||
"- Χρησιμοποιείστε τα κουμπιά \xab, \xbb για επιλογή έτους\n" +
|
||||
"- Χρησιμοποιείστε τα κουμπιά " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " για επιλογή μήνα\n" +
|
||||
"- Κρατήστε κουμπί ποντικού πατημένο στα παραπάνω κουμπιά για πιο γρήγορη επιλογή.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Επιλογή ώρας:\n" +
|
||||
"- Κάντε κλικ σε ένα από τα μέρη της ώρας για αύξηση\n" +
|
||||
"- ή Shift-κλικ για μείωση\n" +
|
||||
"- ή κλικ και μετακίνηση για πιο γρήγορη επιλογή.";
|
||||
Calendar._TT["TOGGLE"] = "Μπάρα πρώτης ημέρας της εβδομάδας";
|
||||
Calendar._TT["PREV_YEAR"] = "Προηγ. έτος (κρατήστε για το μενού)";
|
||||
Calendar._TT["PREV_MONTH"] = "Προηγ. μήνας (κρατήστε για το μενού)";
|
||||
Calendar._TT["GO_TODAY"] = "Σήμερα";
|
||||
Calendar._TT["NEXT_MONTH"] = "Επόμενος μήνας (κρατήστε για το μενού)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Επόμενο έτος (κρατήστε για το μενού)";
|
||||
Calendar._TT["SEL_DATE"] = "Επιλέξτε ημερομηνία";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Σύρτε για να μετακινήσετε";
|
||||
Calendar._TT["PART_TODAY"] = " (σήμερα)";
|
||||
Calendar._TT["MON_FIRST"] = "Εμφάνιση Δευτέρας πρώτα";
|
||||
Calendar._TT["SUN_FIRST"] = "Εμφάνιση Κυριακής πρώτα";
|
||||
Calendar._TT["CLOSE"] = "Κλείσιμο";
|
||||
Calendar._TT["TODAY"] = "Σήμερα";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)κλικ ή μετακίνηση για αλλαγή";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "D, d M";
|
||||
|
||||
Calendar._TT["WK"] = "εβδ";
|
||||
|
127
jscalendar-1.0/lang/calendar-en.js
Normal file
127
jscalendar-1.0/lang/calendar-en.js
Normal file
@ -0,0 +1,127 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Sunday",
|
||||
"Monday",
|
||||
"Tuesday",
|
||||
"Wednesday",
|
||||
"Thursday",
|
||||
"Friday",
|
||||
"Saturday",
|
||||
"Sunday");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Sun",
|
||||
"Mon",
|
||||
"Tue",
|
||||
"Wed",
|
||||
"Thu",
|
||||
"Fri",
|
||||
"Sat",
|
||||
"Sun");
|
||||
|
||||
// First day of the week. "0" means display Sunday first, "1" means display
|
||||
// Monday first, etc.
|
||||
Calendar._FD = 0;
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("January",
|
||||
"February",
|
||||
"March",
|
||||
"April",
|
||||
"May",
|
||||
"June",
|
||||
"July",
|
||||
"August",
|
||||
"September",
|
||||
"October",
|
||||
"November",
|
||||
"December");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dec");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "About the calendar";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"Date selection:\n" +
|
||||
"- Use the \xab, \xbb buttons to select year\n" +
|
||||
"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
|
||||
"- Hold mouse button on any of the above buttons for faster selection.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Time selection:\n" +
|
||||
"- Click on any of the time parts to increase it\n" +
|
||||
"- or Shift-click to decrease it\n" +
|
||||
"- or click and drag for faster selection.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Go Today";
|
||||
Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Select date";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
|
||||
Calendar._TT["PART_TODAY"] = " (today)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Display %s first";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Close";
|
||||
Calendar._TT["TODAY"] = "Today";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "Time:";
|
129
jscalendar-1.0/lang/calendar-es.js
Normal file
129
jscalendar-1.0/lang/calendar-es.js
Normal file
@ -0,0 +1,129 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar ES (spanish) language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Updater: Servilio Afre Puentes <servilios@yahoo.com>
|
||||
// Updated: 2004-06-03
|
||||
// Encoding: utf-8
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Domingo",
|
||||
"Lunes",
|
||||
"Martes",
|
||||
"Miércoles",
|
||||
"Jueves",
|
||||
"Viernes",
|
||||
"Sábado",
|
||||
"Domingo");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Dom",
|
||||
"Lun",
|
||||
"Mar",
|
||||
"Mié",
|
||||
"Jue",
|
||||
"Vie",
|
||||
"Sáb",
|
||||
"Dom");
|
||||
|
||||
// First day of the week. "0" means display Sunday first, "1" means display
|
||||
// Monday first, etc.
|
||||
Calendar._FD = 1;
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Enero",
|
||||
"Febrero",
|
||||
"Marzo",
|
||||
"Abril",
|
||||
"Mayo",
|
||||
"Junio",
|
||||
"Julio",
|
||||
"Agosto",
|
||||
"Septiembre",
|
||||
"Octubre",
|
||||
"Noviembre",
|
||||
"Diciembre");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Ene",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Abr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Ago",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dic");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Acerca del calendario";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"Selector DHTML de Fecha/Hora\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Para conseguir la ú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" +
|
||||
"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 ratón en cualquiera de estos botones para una selección rápida.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selección de hora:\n" +
|
||||
"- Pulse en cualquiera de las partes de la hora para incrementarla\n" +
|
||||
"- 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"] = "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 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)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Hacer %s primer día de la semana";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Cerrar";
|
||||
Calendar._TT["TODAY"] = "Hoy";
|
||||
Calendar._TT["TIME_PART"] = "(Mayú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:";
|
98
jscalendar-1.0/lang/calendar-fi.js
Normal file
98
jscalendar-1.0/lang/calendar-fi.js
Normal file
@ -0,0 +1,98 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar FI language (Finnish, Suomi)
|
||||
// Author: Jarno Käyhkö, <gambler@phnet.fi>
|
||||
// Encoding: UTF-8
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Sunnuntai",
|
||||
"Maanantai",
|
||||
"Tiistai",
|
||||
"Keskiviikko",
|
||||
"Torstai",
|
||||
"Perjantai",
|
||||
"Lauantai",
|
||||
"Sunnuntai");
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Su",
|
||||
"Ma",
|
||||
"Ti",
|
||||
"Ke",
|
||||
"To",
|
||||
"Pe",
|
||||
"La",
|
||||
"Su");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Tammikuu",
|
||||
"Helmikuu",
|
||||
"Maaliskuu",
|
||||
"Huhtikuu",
|
||||
"Toukokuu",
|
||||
"Kesäkuu",
|
||||
"Heinäkuu",
|
||||
"Elokuu",
|
||||
"Syyskuu",
|
||||
"Lokakuu",
|
||||
"Marraskuu",
|
||||
"Joulukuu");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Tam",
|
||||
"Hel",
|
||||
"Maa",
|
||||
"Huh",
|
||||
"Tou",
|
||||
"Kes",
|
||||
"Hei",
|
||||
"Elo",
|
||||
"Syy",
|
||||
"Lok",
|
||||
"Mar",
|
||||
"Jou");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Tietoja kalenterista";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Uusin versio osoitteessa: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Julkaistu GNU LGPL lisenssin alaisuudessa. Lisätietoja osoitteessa http://gnu.org/licenses/lgpl.html" +
|
||||
"\n\n" +
|
||||
"Päivämäärä valinta:\n" +
|
||||
"- Käytä \xab, \xbb painikkeita valitaksesi vuosi\n" +
|
||||
"- Käytä " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " painikkeita valitaksesi kuukausi\n" +
|
||||
"- Pitämällä hiiren painiketta minkä tahansa yllä olevan painikkeen kohdalla, saat näkyviin valikon nopeampaan siirtymiseen.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Ajan valinta:\n" +
|
||||
"- Klikkaa kellonajan numeroita lisätäksesi aikaa\n" +
|
||||
"- tai pitämällä Shift-näppäintä pohjassa saat aikaa taaksepäin\n" +
|
||||
"- tai klikkaa ja pidä hiiren painike pohjassa sekä liikuta hiirtä muuttaaksesi aikaa nopeasti eteen- ja taaksepäin.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Edell. vuosi (paina hetki, näet valikon)";
|
||||
Calendar._TT["PREV_MONTH"] = "Edell. kuukausi (paina hetki, näet valikon)";
|
||||
Calendar._TT["GO_TODAY"] = "Siirry tähän päivään";
|
||||
Calendar._TT["NEXT_MONTH"] = "Seur. kuukausi (paina hetki, näet valikon)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Seur. vuosi (paina hetki, näet valikon)";
|
||||
Calendar._TT["SEL_DATE"] = "Valitse päivämäärä";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Siirrä kalenterin paikkaa";
|
||||
Calendar._TT["PART_TODAY"] = " (tänään)";
|
||||
Calendar._TT["MON_FIRST"] = "Näytä maanantai ensimmäisenä";
|
||||
Calendar._TT["SUN_FIRST"] = "Näytä sunnuntai ensimmäisenä";
|
||||
Calendar._TT["CLOSE"] = "Sulje";
|
||||
Calendar._TT["TODAY"] = "Tänään";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-) Klikkaa tai liikuta muuttaaksesi aikaa";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%d.%m.%Y";
|
||||
|
||||
Calendar._TT["WK"] = "Vko";
|
125
jscalendar-1.0/lang/calendar-fr.js
Normal file
125
jscalendar-1.0/lang/calendar-fr.js
Normal file
@ -0,0 +1,125 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// Translator: David Duret, <pilgrim@mala-template.net> from previous french version
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Dimanche",
|
||||
"Lundi",
|
||||
"Mardi",
|
||||
"Mercredi",
|
||||
"Jeudi",
|
||||
"Vendredi",
|
||||
"Samedi",
|
||||
"Dimanche");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Dim",
|
||||
"Lun",
|
||||
"Mar",
|
||||
"Mar",
|
||||
"Jeu",
|
||||
"Ven",
|
||||
"Sam",
|
||||
"Dim");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Janvier",
|
||||
"Février",
|
||||
"Mars",
|
||||
"Avril",
|
||||
"Mai",
|
||||
"Juin",
|
||||
"Juillet",
|
||||
"Août",
|
||||
"Septembre",
|
||||
"Octobre",
|
||||
"Novembre",
|
||||
"Décembre");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Fev",
|
||||
"Mar",
|
||||
"Avr",
|
||||
"Mai",
|
||||
"Juin",
|
||||
"Juil",
|
||||
"Aout",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dec");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "A propos du calendrier";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Heure Selecteur\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Pour la derniere version visitez : http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distribué par GNU LGPL. Voir http://gnu.org/licenses/lgpl.html pour les details." +
|
||||
"\n\n" +
|
||||
"Selection de la date :\n" +
|
||||
"- Utiliser les bouttons \xab, \xbb pour selectionner l\'annee\n" +
|
||||
"- Utiliser les bouttons " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pour selectionner les mois\n" +
|
||||
"- Garder la souris sur n'importe quels boutons pour une selection plus rapide";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selection de l\'heure :\n" +
|
||||
"- Cliquer sur heures ou minutes pour incrementer\n" +
|
||||
"- ou Maj-clic pour decrementer\n" +
|
||||
"- ou clic et glisser-deplacer pour une selection plus rapide";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Année préc. (maintenir pour menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Mois préc. (maintenir pour menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Atteindre la date du jour";
|
||||
Calendar._TT["NEXT_MONTH"] = "Mois suiv. (maintenir pour menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Année suiv. (maintenir pour menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Sélectionner une date";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Déplacer";
|
||||
Calendar._TT["PART_TODAY"] = " (Aujourd'hui)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Afficher %s en premier";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Fermer";
|
||||
Calendar._TT["TODAY"] = "Aujourd'hui";
|
||||
Calendar._TT["TIME_PART"] = "(Maj-)Clic ou glisser pour modifier la valeur";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d/%m/%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "Sem.";
|
||||
Calendar._TT["TIME"] = "Heure :";
|
123
jscalendar-1.0/lang/calendar-he-utf8.js
Normal file
123
jscalendar-1.0/lang/calendar-he-utf8.js
Normal file
@ -0,0 +1,123 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Idan Sofer, <idan@idanso.dyndns.org>
|
||||
// Encoding: UTF-8
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("ראשון",
|
||||
"שני",
|
||||
"שלישי",
|
||||
"רביעי",
|
||||
"חמישי",
|
||||
"שישי",
|
||||
"שבת",
|
||||
"ראשון");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("א",
|
||||
"ב",
|
||||
"ג",
|
||||
"ד",
|
||||
"ה",
|
||||
"ו",
|
||||
"ש",
|
||||
"א");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("ינואר",
|
||||
"פברואר",
|
||||
"מרץ",
|
||||
"אפריל",
|
||||
"מאי",
|
||||
"יוני",
|
||||
"יולי",
|
||||
"אוגוסט",
|
||||
"ספטמבר",
|
||||
"אוקטובר",
|
||||
"נובמבר",
|
||||
"דצמבר");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("ינא",
|
||||
"פבר",
|
||||
"מרץ",
|
||||
"אפר",
|
||||
"מאי",
|
||||
"יונ",
|
||||
"יול",
|
||||
"אוג",
|
||||
"ספט",
|
||||
"אוק",
|
||||
"נוב",
|
||||
"דצמ");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "אודות השנתון";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"בחרן תאריך/שעה DHTML\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"הגירסא האחרונה זמינה ב: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"מופץ תחת זיכיון ה GNU LGPL. עיין ב http://gnu.org/licenses/lgpl.html לפרטים נוספים." +
|
||||
"\n\n" +
|
||||
בחירת תאריך:\n" +
|
||||
"- השתמש בכפתורים \xab, \xbb לבחירת שנה\n" +
|
||||
"- השתמש בכפתורים " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " לבחירת חודש\n" +
|
||||
"- החזק העכבר לחוץ מעל הכפתורים המוזכרים לעיל לבחירה מהירה יותר.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"בחירת זמן:\n" +
|
||||
"- לחץ על כל אחד מחלקי הזמן כדי להוסיף\n" +
|
||||
"- או shift בשילוב עם לחיצה כדי להחסיר\n" +
|
||||
"- או לחץ וגרור לפעולה מהירה יותר.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "שנה קודמת - החזק לקבלת תפריט";
|
||||
Calendar._TT["PREV_MONTH"] = "חודש קודם - החזק לקבלת תפריט";
|
||||
Calendar._TT["GO_TODAY"] = "עבור להיום";
|
||||
Calendar._TT["NEXT_MONTH"] = "חודש הבא - החזק לתפריט";
|
||||
Calendar._TT["NEXT_YEAR"] = "שנה הבאה - החזק לתפריט";
|
||||
Calendar._TT["SEL_DATE"] = "בחר תאריך";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "גרור להזזה";
|
||||
Calendar._TT["PART_TODAY"] = " )היום(";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "הצג %s קודם";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "סגור";
|
||||
Calendar._TT["TODAY"] = "היום";
|
||||
Calendar._TT["TIME_PART"] = "(שיפט-)לחץ וגרור כדי לשנות ערך";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "שעה::";
|
49
jscalendar-1.0/lang/calendar-hr-utf8.js
Normal file
49
jscalendar-1.0/lang/calendar-hr-utf8.js
Normal file
@ -0,0 +1,49 @@
|
||||
/* Croatian language file for the DHTML Calendar version 0.9.2
|
||||
* Author Krunoslav Zubrinic <krunoslav.zubrinic@vip.hr>, June 2003.
|
||||
* Feel free to use this script under the terms of the GNU Lesser General
|
||||
* Public License, as long as you do not remove or alter this notice.
|
||||
*/
|
||||
Calendar._DN = new Array
|
||||
("Nedjelja",
|
||||
"Ponedjeljak",
|
||||
"Utorak",
|
||||
"Srijeda",
|
||||
"Četvrtak",
|
||||
"Petak",
|
||||
"Subota",
|
||||
"Nedjelja");
|
||||
Calendar._MN = new Array
|
||||
("Siječanj",
|
||||
"Veljača",
|
||||
"Ožujak",
|
||||
"Travanj",
|
||||
"Svibanj",
|
||||
"Lipanj",
|
||||
"Srpanj",
|
||||
"Kolovoz",
|
||||
"Rujan",
|
||||
"Listopad",
|
||||
"Studeni",
|
||||
"Prosinac");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["TOGGLE"] = "Promjeni dan s kojim počinje tjedan";
|
||||
Calendar._TT["PREV_YEAR"] = "Prethodna godina (dugi pritisak za meni)";
|
||||
Calendar._TT["PREV_MONTH"] = "Prethodni mjesec (dugi pritisak za meni)";
|
||||
Calendar._TT["GO_TODAY"] = "Idi na tekući dan";
|
||||
Calendar._TT["NEXT_MONTH"] = "Slijedeći mjesec (dugi pritisak za meni)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Slijedeća godina (dugi pritisak za meni)";
|
||||
Calendar._TT["SEL_DATE"] = "Izaberite datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Pritisni i povuci za promjenu pozicije";
|
||||
Calendar._TT["PART_TODAY"] = " (today)";
|
||||
Calendar._TT["MON_FIRST"] = "Prikaži ponedjeljak kao prvi dan";
|
||||
Calendar._TT["SUN_FIRST"] = "Prikaži nedjelju kao prvi dan";
|
||||
Calendar._TT["CLOSE"] = "Zatvori";
|
||||
Calendar._TT["TODAY"] = "Danas";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "DD, dd.mm.y";
|
||||
|
||||
Calendar._TT["WK"] = "Tje";
|
BIN
jscalendar-1.0/lang/calendar-hr.js
Normal file
BIN
jscalendar-1.0/lang/calendar-hr.js
Normal file
Binary file not shown.
124
jscalendar-1.0/lang/calendar-hu.js
Normal file
124
jscalendar-1.0/lang/calendar-hu.js
Normal file
@ -0,0 +1,124 @@
|
||||
// ** 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õ",
|
||||
"Kedd",
|
||||
"Szerda",
|
||||
"Csütörtök",
|
||||
"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",
|
||||
"március",
|
||||
"április",
|
||||
"május",
|
||||
"június",
|
||||
"július",
|
||||
"augusztus",
|
||||
"szeptember",
|
||||
"október",
|
||||
"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["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";
|
||||
Calendar._TT["NEXT_MONTH"] = "Köv. hónap (tartsa nyomva a menühöz)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Köv. év (tartsa nyomva a menühöz)";
|
||||
Calendar._TT["SEL_DATE"] = "Válasszon dátumot";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Húzza a mozgatáshoz";
|
||||
Calendar._TT["PART_TODAY"] = " (ma)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "%s legyen a hét elsõ 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-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%b %e, %a";
|
||||
|
||||
Calendar._TT["WK"] = "hét";
|
||||
Calendar._TT["TIME"] = "idõ:";
|
124
jscalendar-1.0/lang/calendar-it.js
Normal file
124
jscalendar-1.0/lang/calendar-it.js
Normal file
@ -0,0 +1,124 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Translator: Fabio Di Bernardini, <altraqua@email.it>
|
||||
// Encoding: any
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Domenica",
|
||||
"Lunedì",
|
||||
"Martedì",
|
||||
"Mercoledì",
|
||||
"Giovedì",
|
||||
"Venerdì",
|
||||
"Sabato",
|
||||
"Domenica");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Dom",
|
||||
"Lun",
|
||||
"Mar",
|
||||
"Mer",
|
||||
"Gio",
|
||||
"Ven",
|
||||
"Sab",
|
||||
"Dom");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Gennaio",
|
||||
"Febbraio",
|
||||
"Marzo",
|
||||
"Aprile",
|
||||
"Maggio",
|
||||
"Giugno",
|
||||
"Luglio",
|
||||
"Augosto",
|
||||
"Settembre",
|
||||
"Ottobre",
|
||||
"Novembre",
|
||||
"Dicembre");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Gen",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"Mag",
|
||||
"Giu",
|
||||
"Lug",
|
||||
"Ago",
|
||||
"Set",
|
||||
"Ott",
|
||||
"Nov",
|
||||
"Dic");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Informazioni sul calendario";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"Per gli aggiornamenti: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distribuito sotto licenza GNU LGPL. Vedi http://gnu.org/licenses/lgpl.html per i dettagli." +
|
||||
"\n\n" +
|
||||
"Selezione data:\n" +
|
||||
"- Usa \xab, \xbb per selezionare l'anno\n" +
|
||||
"- Usa " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per i mesi\n" +
|
||||
"- Tieni premuto a lungo il mouse per accedere alle funzioni di selezione veloce.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selezione orario:\n" +
|
||||
"- Clicca sul numero per incrementarlo\n" +
|
||||
"- o Shift+click per decrementarlo\n" +
|
||||
"- o click e sinistra o destra per variarlo.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Anno prec.(clicca a lungo per il menù)";
|
||||
Calendar._TT["PREV_MONTH"] = "Mese prec. (clicca a lungo per il menù)";
|
||||
Calendar._TT["GO_TODAY"] = "Oggi";
|
||||
Calendar._TT["NEXT_MONTH"] = "Pross. mese (clicca a lungo per il menù)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Pross. anno (clicca a lungo per il menù)";
|
||||
Calendar._TT["SEL_DATE"] = "Seleziona data";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostarlo";
|
||||
Calendar._TT["PART_TODAY"] = " (oggi)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "Mostra prima %s";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Chiudi";
|
||||
Calendar._TT["TODAY"] = "Oggi";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Click o trascina per cambiare il valore";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a:%b:%e";
|
||||
|
||||
Calendar._TT["WK"] = "set";
|
||||
Calendar._TT["TIME"] = "Ora:";
|
45
jscalendar-1.0/lang/calendar-jp.js
Normal file
45
jscalendar-1.0/lang/calendar-jp.js
Normal file
@ -0,0 +1,45 @@
|
||||
// ** I18N
|
||||
Calendar._DN = new Array
|
||||
("日",
|
||||
"月",
|
||||
"火",
|
||||
"水",
|
||||
"木",
|
||||
"金",
|
||||
"土",
|
||||
"日");
|
||||
Calendar._MN = new Array
|
||||
("1月",
|
||||
"2月",
|
||||
"3月",
|
||||
"4月",
|
||||
"5月",
|
||||
"6月",
|
||||
"7月",
|
||||
"8月",
|
||||
"9月",
|
||||
"10月",
|
||||
"11月",
|
||||
"12月");
|
||||
|
||||
// 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"] = "今日";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "y-mm-dd";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%m月 %d日 (%a)";
|
||||
|
||||
Calendar._TT["WK"] = "週";
|
120
jscalendar-1.0/lang/calendar-ko-utf8.js
Normal file
120
jscalendar-1.0/lang/calendar-ko-utf8.js
Normal file
@ -0,0 +1,120 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Translation: Yourim Yi <yyi@yourim.net>
|
||||
// Encoding: EUC-KR
|
||||
// lang : ko
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
|
||||
Calendar._DN = new Array
|
||||
("일요일",
|
||||
"월요일",
|
||||
"화요일",
|
||||
"수요일",
|
||||
"목요일",
|
||||
"금요일",
|
||||
"토요일",
|
||||
"일요일");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("일",
|
||||
"월",
|
||||
"화",
|
||||
"수",
|
||||
"목",
|
||||
"금",
|
||||
"토",
|
||||
"일");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("1월",
|
||||
"2월",
|
||||
"3월",
|
||||
"4월",
|
||||
"5월",
|
||||
"6월",
|
||||
"7월",
|
||||
"8월",
|
||||
"9월",
|
||||
"10월",
|
||||
"11월",
|
||||
"12월");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9",
|
||||
"10",
|
||||
"11",
|
||||
"12");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "calendar 에 대해서";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"\n"+
|
||||
"최신 버전을 받으시려면 http://www.dynarch.com/projects/calendar/ 에 방문하세요\n" +
|
||||
"\n"+
|
||||
"GNU LGPL 라이센스로 배포됩니다. \n"+
|
||||
"라이센스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." +
|
||||
"\n\n" +
|
||||
"날짜 선택:\n" +
|
||||
"- 연도를 선택하려면 \xab, \xbb 버튼을 사용합니다\n" +
|
||||
"- 달을 선택하려면 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 버튼을 누르세요\n" +
|
||||
"- 계속 누르고 있으면 위 값들을 빠르게 선택하실 수 있습니다.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"시간 선택:\n" +
|
||||
"- 마우스로 누르면 시간이 증가합니다\n" +
|
||||
"- Shift 키와 함께 누르면 감소합니다\n" +
|
||||
"- 누른 상태에서 마우스를 움직이면 좀 더 빠르게 값이 변합니다.\n";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "지난 해 (길게 누르면 목록)";
|
||||
Calendar._TT["PREV_MONTH"] = "지난 달 (길게 누르면 목록)";
|
||||
Calendar._TT["GO_TODAY"] = "오늘 날짜로";
|
||||
Calendar._TT["NEXT_MONTH"] = "다음 달 (길게 누르면 목록)";
|
||||
Calendar._TT["NEXT_YEAR"] = "다음 해 (길게 누르면 목록)";
|
||||
Calendar._TT["SEL_DATE"] = "날짜를 선택하세요";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "마우스 드래그로 이동 하세요";
|
||||
Calendar._TT["PART_TODAY"] = " (오늘)";
|
||||
Calendar._TT["MON_FIRST"] = "월요일을 한 주의 시작 요일로";
|
||||
Calendar._TT["SUN_FIRST"] = "일요일을 한 주의 시작 요일로";
|
||||
Calendar._TT["CLOSE"] = "닫기";
|
||||
Calendar._TT["TODAY"] = "오늘";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)클릭 또는 드래그 하세요";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
|
||||
|
||||
Calendar._TT["WK"] = "주";
|
120
jscalendar-1.0/lang/calendar-ko.js
Normal file
120
jscalendar-1.0/lang/calendar-ko.js
Normal file
@ -0,0 +1,120 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar EN language
|
||||
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
|
||||
// Translation: Yourim Yi <yyi@yourim.net>
|
||||
// Encoding: EUC-KR
|
||||
// lang : ko
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// For translators: please use UTF-8 if possible. We strongly believe that
|
||||
// Unicode is the answer to a real internationalized world. Also please
|
||||
// include your contact information in the header, as can be seen above.
|
||||
|
||||
// full day names
|
||||
|
||||
Calendar._DN = new Array
|
||||
("일요일",
|
||||
"월요일",
|
||||
"화요일",
|
||||
"수요일",
|
||||
"목요일",
|
||||
"금요일",
|
||||
"토요일",
|
||||
"일요일");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("일",
|
||||
"월",
|
||||
"화",
|
||||
"수",
|
||||
"목",
|
||||
"금",
|
||||
"토",
|
||||
"일");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("1월",
|
||||
"2월",
|
||||
"3월",
|
||||
"4월",
|
||||
"5월",
|
||||
"6월",
|
||||
"7월",
|
||||
"8월",
|
||||
"9월",
|
||||
"10월",
|
||||
"11월",
|
||||
"12월");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9",
|
||||
"10",
|
||||
"11",
|
||||
"12");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "calendar 에 대해서";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"\n"+
|
||||
"최신 버전을 받으시려면 http://www.dynarch.com/projects/calendar/ 에 방문하세요\n" +
|
||||
"\n"+
|
||||
"GNU LGPL 라이센스로 배포됩니다. \n"+
|
||||
"라이센스에 대한 자세한 내용은 http://gnu.org/licenses/lgpl.html 을 읽으세요." +
|
||||
"\n\n" +
|
||||
"날짜 선택:\n" +
|
||||
"- 연도를 선택하려면 \xab, \xbb 버튼을 사용합니다\n" +
|
||||
"- 달을 선택하려면 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 버튼을 누르세요\n" +
|
||||
"- 계속 누르고 있으면 위 값들을 빠르게 선택하실 수 있습니다.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"시간 선택:\n" +
|
||||
"- 마우스로 누르면 시간이 증가합니다\n" +
|
||||
"- Shift 키와 함께 누르면 감소합니다\n" +
|
||||
"- 누른 상태에서 마우스를 움직이면 좀 더 빠르게 값이 변합니다.\n";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "지난 해 (길게 누르면 목록)";
|
||||
Calendar._TT["PREV_MONTH"] = "지난 달 (길게 누르면 목록)";
|
||||
Calendar._TT["GO_TODAY"] = "오늘 날짜로";
|
||||
Calendar._TT["NEXT_MONTH"] = "다음 달 (길게 누르면 목록)";
|
||||
Calendar._TT["NEXT_YEAR"] = "다음 해 (길게 누르면 목록)";
|
||||
Calendar._TT["SEL_DATE"] = "날짜를 선택하세요";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "마우스 드래그로 이동 하세요";
|
||||
Calendar._TT["PART_TODAY"] = " (오늘)";
|
||||
Calendar._TT["MON_FIRST"] = "월요일을 한 주의 시작 요일로";
|
||||
Calendar._TT["SUN_FIRST"] = "일요일을 한 주의 시작 요일로";
|
||||
Calendar._TT["CLOSE"] = "닫기";
|
||||
Calendar._TT["TODAY"] = "오늘";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)클릭 또는 드래그 하세요";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%b/%e [%a]";
|
||||
|
||||
Calendar._TT["WK"] = "주";
|
114
jscalendar-1.0/lang/calendar-lt-utf8.js
Normal file
114
jscalendar-1.0/lang/calendar-lt-utf8.js
Normal file
@ -0,0 +1,114 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar LT language
|
||||
// Author: Martynas Majeris, <martynas@solmetra.lt>
|
||||
// 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
|
||||
("Sekmadienis",
|
||||
"Pirmadienis",
|
||||
"Antradienis",
|
||||
"Trečiadienis",
|
||||
"Ketvirtadienis",
|
||||
"Pentadienis",
|
||||
"Šeštadienis",
|
||||
"Sekmadienis");
|
||||
|
||||
// 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
|
||||
("Sek",
|
||||
"Pir",
|
||||
"Ant",
|
||||
"Tre",
|
||||
"Ket",
|
||||
"Pen",
|
||||
"Šeš",
|
||||
"Sek");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Sausis",
|
||||
"Vasaris",
|
||||
"Kovas",
|
||||
"Balandis",
|
||||
"Gegužė",
|
||||
"Birželis",
|
||||
"Liepa",
|
||||
"Rugpjūtis",
|
||||
"Rugsėjis",
|
||||
"Spalis",
|
||||
"Lapkritis",
|
||||
"Gruodis");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Sau",
|
||||
"Vas",
|
||||
"Kov",
|
||||
"Bal",
|
||||
"Geg",
|
||||
"Bir",
|
||||
"Lie",
|
||||
"Rgp",
|
||||
"Rgs",
|
||||
"Spa",
|
||||
"Lap",
|
||||
"Gru");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Apie kalendorių";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\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" +
|
||||
"- Metų pasirinkimas: \xab, \xbb\n" +
|
||||
"- Mėnesio pasirinkimas: " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
|
||||
"- Nuspauskite ir laikykite pelės klavišą greitesniam pasirinkimui.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Laiko pasirinkimas:\n" +
|
||||
"- Spustelkite ant valandų arba minučių - skaičius padidės vienetu.\n" +
|
||||
"- Jei spausite kartu su Shift, skaičius sumažės.\n" +
|
||||
"- Greitam pasirinkimui spustelkite ir pajudinkite pelę.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Ankstesni metai (laikykite, jei norite meniu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Ankstesnis mėnuo (laikykite, jei norite meniu)";
|
||||
Calendar._TT["GO_TODAY"] = "Pasirinkti šiandieną";
|
||||
Calendar._TT["NEXT_MONTH"] = "Kitas mėnuo (laikykite, jei norite meniu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Kiti metai (laikykite, jei norite meniu)";
|
||||
Calendar._TT["SEL_DATE"] = "Pasirinkite datą";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Tempkite";
|
||||
Calendar._TT["PART_TODAY"] = " (šiandien)";
|
||||
Calendar._TT["MON_FIRST"] = "Pirma savaitės diena - pirmadienis";
|
||||
Calendar._TT["SUN_FIRST"] = "Pirma savaitės diena - sekmadienis";
|
||||
Calendar._TT["CLOSE"] = "Uždaryti";
|
||||
Calendar._TT["TODAY"] = "Šiandien";
|
||||
Calendar._TT["TIME_PART"] = "Spustelkite arba tempkite jei norite pakeisti";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%A, %Y-%m-%d";
|
||||
|
||||
Calendar._TT["WK"] = "sav";
|
114
jscalendar-1.0/lang/calendar-lt.js
Normal file
114
jscalendar-1.0/lang/calendar-lt.js
Normal file
@ -0,0 +1,114 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar LT language
|
||||
// Author: Martynas Majeris, <martynas@solmetra.lt>
|
||||
// Encoding: Windows-1257
|
||||
// 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
|
||||
("Sekmadienis",
|
||||
"Pirmadienis",
|
||||
"Antradienis",
|
||||
"Treèiadienis",
|
||||
"Ketvirtadienis",
|
||||
"Pentadienis",
|
||||
"Ðeðtadienis",
|
||||
"Sekmadienis");
|
||||
|
||||
// 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
|
||||
("Sek",
|
||||
"Pir",
|
||||
"Ant",
|
||||
"Tre",
|
||||
"Ket",
|
||||
"Pen",
|
||||
"Ðeð",
|
||||
"Sek");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Sausis",
|
||||
"Vasaris",
|
||||
"Kovas",
|
||||
"Balandis",
|
||||
"Geguþë",
|
||||
"Birþelis",
|
||||
"Liepa",
|
||||
"Rugpjûtis",
|
||||
"Rugsëjis",
|
||||
"Spalis",
|
||||
"Lapkritis",
|
||||
"Gruodis");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Sau",
|
||||
"Vas",
|
||||
"Kov",
|
||||
"Bal",
|
||||
"Geg",
|
||||
"Bir",
|
||||
"Lie",
|
||||
"Rgp",
|
||||
"Rgs",
|
||||
"Spa",
|
||||
"Lap",
|
||||
"Gru");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Apie kalendoriø";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\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" +
|
||||
"- Metø pasirinkimas: \xab, \xbb\n" +
|
||||
"- Mënesio pasirinkimas: " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
|
||||
"- Nuspauskite ir laikykite pelës klaviðà greitesniam pasirinkimui.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Laiko pasirinkimas:\n" +
|
||||
"- Spustelkite ant valandø arba minuèiø - skaièus padidës vienetu.\n" +
|
||||
"- Jei spausite kartu su Shift, skaièius sumaþës.\n" +
|
||||
"- Greitam pasirinkimui spustelkite ir pajudinkite pelæ.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Ankstesni metai (laikykite, jei norite meniu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Ankstesnis mënuo (laikykite, jei norite meniu)";
|
||||
Calendar._TT["GO_TODAY"] = "Pasirinkti ðiandienà";
|
||||
Calendar._TT["NEXT_MONTH"] = "Kitas mënuo (laikykite, jei norite meniu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Kiti metai (laikykite, jei norite meniu)";
|
||||
Calendar._TT["SEL_DATE"] = "Pasirinkite datà";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Tempkite";
|
||||
Calendar._TT["PART_TODAY"] = " (ðiandien)";
|
||||
Calendar._TT["MON_FIRST"] = "Pirma savaitës diena - pirmadienis";
|
||||
Calendar._TT["SUN_FIRST"] = "Pirma savaitës diena - sekmadienis";
|
||||
Calendar._TT["CLOSE"] = "Uþdaryti";
|
||||
Calendar._TT["TODAY"] = "Ðiandien";
|
||||
Calendar._TT["TIME_PART"] = "Spustelkite arba tempkite jei norite pakeisti";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%A, %Y-%m-%d";
|
||||
|
||||
Calendar._TT["WK"] = "sav";
|
123
jscalendar-1.0/lang/calendar-lv.js
Normal file
123
jscalendar-1.0/lang/calendar-lv.js
Normal file
@ -0,0 +1,123 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar LV language
|
||||
// Author: Juris Valdovskis, <juris@dc.lv>
|
||||
// Encoding: cp1257
|
||||
// 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
|
||||
("Svçtdiena",
|
||||
"Pirmdiena",
|
||||
"Otrdiena",
|
||||
"Treðdiena",
|
||||
"Ceturdiena",
|
||||
"Piektdiena",
|
||||
"Sestdiena",
|
||||
"Svçtdiena");
|
||||
|
||||
// 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
|
||||
("Sv",
|
||||
"Pr",
|
||||
"Ot",
|
||||
"Tr",
|
||||
"Ce",
|
||||
"Pk",
|
||||
"Se",
|
||||
"Sv");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Janvâris",
|
||||
"Februâris",
|
||||
"Marts",
|
||||
"Aprîlis",
|
||||
"Maijs",
|
||||
"Jûnijs",
|
||||
"Jûlijs",
|
||||
"Augusts",
|
||||
"Septembris",
|
||||
"Oktobris",
|
||||
"Novembris",
|
||||
"Decembris");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"Mai",
|
||||
"Jûn",
|
||||
"Jûl",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Okt",
|
||||
"Nov",
|
||||
"Dec");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Par kalendâru";
|
||||
|
||||
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" +
|
||||
"Datuma izvçle:\n" +
|
||||
"- Izmanto \xab, \xbb pogas, lai izvçlçtos gadu\n" +
|
||||
"- Izmanto " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "pogas, lai izvçlçtos mçnesi\n" +
|
||||
"- Turi nospiestu peles pogu uz jebkuru no augstâk minçtajâm pogâm, lai paâtrinâtu izvçli.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Laika izvçle:\n" +
|
||||
"- Uzklikðíini uz jebkuru no laika daïâm, lai palielinâtu to\n" +
|
||||
"- vai Shift-klikðíis, lai samazinâtu to\n" +
|
||||
"- vai noklikðíini un velc uz attiecîgo virzienu lai mainîtu âtrâk.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Iepr. gads (turi izvçlnei)";
|
||||
Calendar._TT["PREV_MONTH"] = "Iepr. mçnesis (turi izvçlnei)";
|
||||
Calendar._TT["GO_TODAY"] = "Ðodien";
|
||||
Calendar._TT["NEXT_MONTH"] = "Nâkoðais mçnesis (turi izvçlnei)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Nâkoðais gads (turi izvçlnei)";
|
||||
Calendar._TT["SEL_DATE"] = "Izvçlies datumu";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Velc, lai pârvietotu";
|
||||
Calendar._TT["PART_TODAY"] = " (ðodien)";
|
||||
|
||||
// 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"] = "Attçlot %s kâ pirmo";
|
||||
|
||||
// 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"] = "1,7";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Aizvçrt";
|
||||
Calendar._TT["TODAY"] = "Ðodien";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Klikðíis vai pârvieto, lai mainîtu";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
||||
Calendar._TT["TIME"] = "Laiks:";
|
73
jscalendar-1.0/lang/calendar-nl.js
Normal file
73
jscalendar-1.0/lang/calendar-nl.js
Normal file
@ -0,0 +1,73 @@
|
||||
// ** I18N
|
||||
Calendar._DN = new Array
|
||||
("Zondag",
|
||||
"Maandag",
|
||||
"Dinsdag",
|
||||
"Woensdag",
|
||||
"Donderdag",
|
||||
"Vrijdag",
|
||||
"Zaterdag",
|
||||
"Zondag");
|
||||
|
||||
Calendar._SDN_len = 2;
|
||||
|
||||
Calendar._MN = new Array
|
||||
("Januari",
|
||||
"Februari",
|
||||
"Maart",
|
||||
"April",
|
||||
"Mei",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"Augustus",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"December");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
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";
|
||||
Calendar._TT["NEXT_MONTH"] = "Volgende maand (ingedrukt voor menu)";
|
||||
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["DAY_FIRST"] = "Toon %s eerst";
|
||||
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "Sluiten";
|
||||
Calendar._TT["TODAY"] = "(vandaag)";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Klik of sleep om de waarde te veranderen";
|
||||
|
||||
// date formats
|
||||
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:";
|
114
jscalendar-1.0/lang/calendar-no.js
Normal file
114
jscalendar-1.0/lang/calendar-no.js
Normal file
@ -0,0 +1,114 @@
|
||||
// ** 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",
|
||||
"Mandag",
|
||||
"Tirsdag",
|
||||
"Onsdag",
|
||||
"Torsdag",
|
||||
"Fredag",
|
||||
"Lørdag",
|
||||
"Søndag");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Søn",
|
||||
"Man",
|
||||
"Tir",
|
||||
"Ons",
|
||||
"Tor",
|
||||
"Fre",
|
||||
"Lør",
|
||||
"Søn");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Januar",
|
||||
"Februar",
|
||||
"Mars",
|
||||
"April",
|
||||
"Mai",
|
||||
"Juni",
|
||||
"Juli",
|
||||
"August",
|
||||
"September",
|
||||
"Oktober",
|
||||
"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["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"] = "%d.%m.%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "uke";
|
93
jscalendar-1.0/lang/calendar-pl-utf8.js
Normal file
93
jscalendar-1.0/lang/calendar-pl-utf8.js
Normal file
@ -0,0 +1,93 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar PL language
|
||||
// Author: Dariusz Pietrzak, <eyck@ghost.anime.pl>
|
||||
// Author: Janusz Piwowarski, <jpiw@go2.pl>
|
||||
// Encoding: utf-8
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
Calendar._DN = new Array
|
||||
("Niedziela",
|
||||
"Poniedziałek",
|
||||
"Wtorek",
|
||||
"Środa",
|
||||
"Czwartek",
|
||||
"Piątek",
|
||||
"Sobota",
|
||||
"Niedziela");
|
||||
Calendar._SDN = new Array
|
||||
("Nie",
|
||||
"Pn",
|
||||
"Wt",
|
||||
"Śr",
|
||||
"Cz",
|
||||
"Pt",
|
||||
"So",
|
||||
"Nie");
|
||||
Calendar._MN = new Array
|
||||
("Styczeń",
|
||||
"Luty",
|
||||
"Marzec",
|
||||
"Kwiecień",
|
||||
"Maj",
|
||||
"Czerwiec",
|
||||
"Lipiec",
|
||||
"Sierpień",
|
||||
"Wrzesień",
|
||||
"Październik",
|
||||
"Listopad",
|
||||
"Grudzień");
|
||||
Calendar._SMN = new Array
|
||||
("Sty",
|
||||
"Lut",
|
||||
"Mar",
|
||||
"Kwi",
|
||||
"Maj",
|
||||
"Cze",
|
||||
"Lip",
|
||||
"Sie",
|
||||
"Wrz",
|
||||
"Paź",
|
||||
"Lis",
|
||||
"Gru");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "O kalendarzu";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\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" +
|
||||
"- Użyj przycisków \xab, \xbb by wybrać rok\n" +
|
||||
"- Użyj przycisków " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " by wybrać miesiąc\n" +
|
||||
"- Przytrzymaj klawisz myszy nad jednym z powyższych przycisków dla szybszego wyboru.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Wybór czasu:\n" +
|
||||
"- Kliknij na jednym z pól czasu by zwiększyć jego wartość\n" +
|
||||
"- lub kliknij trzymając Shift by zmiejszyć jego wartość\n" +
|
||||
"- lub kliknij i przeciągnij dla szybszego wyboru.";
|
||||
|
||||
//Calendar._TT["TOGGLE"] = "Zmień pierwszy dzień tygodnia";
|
||||
Calendar._TT["PREV_YEAR"] = "Poprzedni rok (przytrzymaj dla menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Poprzedni miesiąc (przytrzymaj dla menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Idź do dzisiaj";
|
||||
Calendar._TT["NEXT_MONTH"] = "Następny miesiąc (przytrzymaj dla menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Następny rok (przytrzymaj dla menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Wybierz datę";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Przeciągnij by przesunąć";
|
||||
Calendar._TT["PART_TODAY"] = " (dzisiaj)";
|
||||
Calendar._TT["MON_FIRST"] = "Wyświetl poniedziałek jako pierwszy";
|
||||
Calendar._TT["SUN_FIRST"] = "Wyświetl niedzielę jako pierwszą";
|
||||
Calendar._TT["CLOSE"] = "Zamknij";
|
||||
Calendar._TT["TODAY"] = "Dzisiaj";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Kliknij lub przeciągnij by zmienić wartość";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%e %B, %A";
|
||||
|
||||
Calendar._TT["WK"] = "ty";
|
56
jscalendar-1.0/lang/calendar-pl.js
Normal file
56
jscalendar-1.0/lang/calendar-pl.js
Normal file
@ -0,0 +1,56 @@
|
||||
// ** I18N
|
||||
// Calendar PL language
|
||||
// Author: Artur Filipiak, <imagen@poczta.fm>
|
||||
// January, 2004
|
||||
// Encoding: UTF-8
|
||||
Calendar._DN = new Array
|
||||
("Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela");
|
||||
|
||||
Calendar._SDN = new Array
|
||||
("N", "Pn", "Wt", "Śr", "Cz", "Pt", "So", "N");
|
||||
|
||||
Calendar._MN = new Array
|
||||
("Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec", "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień");
|
||||
|
||||
Calendar._SMN = new Array
|
||||
("Sty", "Lut", "Mar", "Kwi", "Maj", "Cze", "Lip", "Sie", "Wrz", "Paź", "Lis", "Gru");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "O kalendarzu";
|
||||
|
||||
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" +
|
||||
"Wybór daty:\n" +
|
||||
"- aby wybrać rok użyj przycisków \xab, \xbb\n" +
|
||||
"- aby wybrać miesiąc użyj przycisków " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + "\n" +
|
||||
"- aby przyspieszyć wybór przytrzymaj wciśnięty przycisk myszy nad ww. przyciskami.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Wybór czasu:\n" +
|
||||
"- aby zwiększyć wartość kliknij na dowolnym elemencie selekcji czasu\n" +
|
||||
"- aby zmniejszyć wartość użyj dodatkowo klawisza Shift\n" +
|
||||
"- możesz również poruszać myszkę w lewo i prawo wraz z wciśniętym lewym klawiszem.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Poprz. rok (przytrzymaj dla menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Poprz. miesiąc (przytrzymaj dla menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Pokaż dziś";
|
||||
Calendar._TT["NEXT_MONTH"] = "Nast. miesiąc (przytrzymaj dla menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Nast. rok (przytrzymaj dla menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Wybierz datę";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Przesuń okienko";
|
||||
Calendar._TT["PART_TODAY"] = " (dziś)";
|
||||
Calendar._TT["MON_FIRST"] = "Pokaż Poniedziałek jako pierwszy";
|
||||
Calendar._TT["SUN_FIRST"] = "Pokaż Niedzielę jako pierwszą";
|
||||
Calendar._TT["CLOSE"] = "Zamknij";
|
||||
Calendar._TT["TODAY"] = "Dziś";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)klik | drag, aby zmienić wartość";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y.%m.%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "wk";
|
123
jscalendar-1.0/lang/calendar-pt.js
Normal file
123
jscalendar-1.0/lang/calendar-pt.js
Normal file
@ -0,0 +1,123 @@
|
||||
// ** 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",
|
||||
"Terca",
|
||||
"Quarta",
|
||||
"Quinta",
|
||||
"Sexta",
|
||||
"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",
|
||||
"Marco",
|
||||
"Abril",
|
||||
"Maio",
|
||||
"Junho",
|
||||
"Julho",
|
||||
"Agosto",
|
||||
"Setembro",
|
||||
"Outubro",
|
||||
"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["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)";
|
||||
|
||||
// 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"] = "%d/%m/%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b";
|
||||
|
||||
Calendar._TT["WK"] = "sm";
|
||||
Calendar._TT["TIME"] = "Hora:";
|
66
jscalendar-1.0/lang/calendar-ro.js
Normal file
66
jscalendar-1.0/lang/calendar-ro.js
Normal file
@ -0,0 +1,66 @@
|
||||
// ** I18N
|
||||
Calendar._DN = new Array
|
||||
("Duminică",
|
||||
"Luni",
|
||||
"Marţi",
|
||||
"Miercuri",
|
||||
"Joi",
|
||||
"Vineri",
|
||||
"Sâmbătă",
|
||||
"Duminică");
|
||||
Calendar._SDN_len = 2;
|
||||
Calendar._MN = new Array
|
||||
("Ianuarie",
|
||||
"Februarie",
|
||||
"Martie",
|
||||
"Aprilie",
|
||||
"Mai",
|
||||
"Iunie",
|
||||
"Iulie",
|
||||
"August",
|
||||
"Septembrie",
|
||||
"Octombrie",
|
||||
"Noiembrie",
|
||||
"Decembrie");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
|
||||
Calendar._TT["INFO"] = "Despre calendar";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\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" +
|
||||
"- Folosiţi butoanele \xab, \xbb pentru a selecta anul\n" +
|
||||
"- Folosiţi butoanele " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pentru a selecta luna\n" +
|
||||
"- Tineţi butonul mouse-ului apăsat pentru selecţie mai rapidă.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selecţia orei:\n" +
|
||||
"- Click pe ora sau minut pentru a mări valoarea cu 1\n" +
|
||||
"- Sau Shift-Click pentru a micşora valoarea cu 1\n" +
|
||||
"- Sau Click şi drag pentru a selecta mai repede.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Anul precedent (lung pt menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Luna precedentă (lung pt menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Data de azi";
|
||||
Calendar._TT["NEXT_MONTH"] = "Luna următoare (lung pt menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Anul următor (lung pt menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Selectează data";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Trage pentru a mişca";
|
||||
Calendar._TT["PART_TODAY"] = " (astăzi)";
|
||||
Calendar._TT["DAY_FIRST"] = "Afişează %s prima zi";
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
Calendar._TT["CLOSE"] = "Închide";
|
||||
Calendar._TT["TODAY"] = "Astăzi";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)Click sau drag pentru a selecta";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%A, %d %B";
|
||||
|
||||
Calendar._TT["WK"] = "spt";
|
||||
Calendar._TT["TIME"] = "Ora:";
|
123
jscalendar-1.0/lang/calendar-ru.js
Normal file
123
jscalendar-1.0/lang/calendar-ru.js
Normal file
@ -0,0 +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["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-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%e %b, %a";
|
||||
|
||||
Calendar._TT["WK"] = "нед";
|
||||
Calendar._TT["TIME"] = "Время:";
|
123
jscalendar-1.0/lang/calendar-ru_win_.js
Normal file
123
jscalendar-1.0/lang/calendar-ru_win_.js
Normal file
@ -0,0 +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["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-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%e %b, %a";
|
||||
|
||||
Calendar._TT["WK"] = "íåä";
|
||||
Calendar._TT["TIME"] = "Âðåìÿ:";
|
94
jscalendar-1.0/lang/calendar-si.js
Normal file
94
jscalendar-1.0/lang/calendar-si.js
Normal file
@ -0,0 +1,94 @@
|
||||
/* Slovenian language file for the DHTML Calendar version 0.9.2
|
||||
* Author David Milost <mercy@volja.net>, January 2004.
|
||||
* Feel free to use this script under the terms of the GNU Lesser General
|
||||
* Public License, as long as you do not remove or alter this notice.
|
||||
*/
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("Nedelja",
|
||||
"Ponedeljek",
|
||||
"Torek",
|
||||
"Sreda",
|
||||
"Četrtek",
|
||||
"Petek",
|
||||
"Sobota",
|
||||
"Nedelja");
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Ned",
|
||||
"Pon",
|
||||
"Tor",
|
||||
"Sre",
|
||||
"Čet",
|
||||
"Pet",
|
||||
"Sob",
|
||||
"Ned");
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"Maj",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Avg",
|
||||
"Sep",
|
||||
"Okt",
|
||||
"Nov",
|
||||
"Dec");
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Januar",
|
||||
"Februar",
|
||||
"Marec",
|
||||
"April",
|
||||
"Maj",
|
||||
"Junij",
|
||||
"Julij",
|
||||
"Avgust",
|
||||
"September",
|
||||
"Oktober",
|
||||
"November",
|
||||
"December");
|
||||
|
||||
// tooltips
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "O koledarju";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\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" +
|
||||
"- Uporabite \xab, \xbb gumbe za izbor leta\n" +
|
||||
"- Uporabite " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " gumbe za izbor meseca\n" +
|
||||
"- Zadržite klik na kateremkoli od zgornjih gumbov za hiter izbor.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Izbor ćasa:\n" +
|
||||
"- Kliknite na katerikoli del ćasa za poveć. le-tega\n" +
|
||||
"- ali Shift-click za zmanj. le-tega\n" +
|
||||
"- ali kliknite in povlecite za hiter izbor.";
|
||||
|
||||
Calendar._TT["TOGGLE"] = "Spremeni dan s katerim se prićne teden";
|
||||
Calendar._TT["PREV_YEAR"] = "Predhodnje leto (dolg klik za meni)";
|
||||
Calendar._TT["PREV_MONTH"] = "Predhodnji mesec (dolg klik za meni)";
|
||||
Calendar._TT["GO_TODAY"] = "Pojdi na tekoći dan";
|
||||
Calendar._TT["NEXT_MONTH"] = "Naslednji mesec (dolg klik za meni)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Naslednje leto (dolg klik za meni)";
|
||||
Calendar._TT["SEL_DATE"] = "Izberite datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Pritisni in povleci za spremembo pozicije";
|
||||
Calendar._TT["PART_TODAY"] = " (danes)";
|
||||
Calendar._TT["MON_FIRST"] = "Prikaži ponedeljek kot prvi dan";
|
||||
Calendar._TT["SUN_FIRST"] = "Prikaži nedeljo kot prvi dan";
|
||||
Calendar._TT["CLOSE"] = "Zapri";
|
||||
Calendar._TT["TODAY"] = "Danes";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
|
||||
|
||||
Calendar._TT["WK"] = "Ted";
|
99
jscalendar-1.0/lang/calendar-sk.js
Normal file
99
jscalendar-1.0/lang/calendar-sk.js
Normal file
@ -0,0 +1,99 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar SK language
|
||||
// Author: Peter Valach (pvalach@gmx.net)
|
||||
// Encoding: utf-8
|
||||
// Last update: 2003/10/29
|
||||
// Distributed under the same terms as the calendar itself.
|
||||
|
||||
// full day names
|
||||
Calendar._DN = new Array
|
||||
("NedeÄľa",
|
||||
"Pondelok",
|
||||
"Utorok",
|
||||
"Streda",
|
||||
"Ĺ tvrtok",
|
||||
"Piatok",
|
||||
"Sobota",
|
||||
"NedeÄľa");
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("Ned",
|
||||
"Pon",
|
||||
"Uto",
|
||||
"Str",
|
||||
"Ĺ tv",
|
||||
"Pia",
|
||||
"Sob",
|
||||
"Ned");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Január",
|
||||
"Február",
|
||||
"Marec",
|
||||
"AprĂl",
|
||||
"Máj",
|
||||
"JĂşn",
|
||||
"JĂşl",
|
||||
"August",
|
||||
"September",
|
||||
"OktĂłber",
|
||||
"November",
|
||||
"December");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Jan",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"Máj",
|
||||
"JĂşn",
|
||||
"JĂşl",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Okt",
|
||||
"Nov",
|
||||
"Dec");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "O kalendári";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\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" +
|
||||
"- Použite tlačidlá \xab, \xbb pre výber roku\n" +
|
||||
"- Použite tlačidlá " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " pre výber mesiaca\n" +
|
||||
"- Ak ktorĂ©koÄľvek z tĂ˝chto tlaÄŤidiel podrĹľĂte dlhšie, zobrazĂ sa rĂ˝chly vĂ˝ber.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Výber času:\n" +
|
||||
"- Kliknutie na niektorú položku času ju zvýši\n" +
|
||||
"- Shift-klik ju znĂĹľi\n" +
|
||||
"- Ak podrĹľĂte tlaÄŤĂtko stlaÄŤenĂ©, posĂşvanĂm menĂte hodnotu.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Predošlý rok (podržte pre menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Predošlý mesiac (podržte pre menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Prejsť na dnešok";
|
||||
Calendar._TT["NEXT_MONTH"] = "Nasl. mesiac (podrĹľte pre menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Nasl. rok (podrĹľte pre menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Zvoľte dátum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "PodrĹľanĂm tlaÄŤĂtka zmenĂte polohu";
|
||||
Calendar._TT["PART_TODAY"] = " (dnes)";
|
||||
Calendar._TT["MON_FIRST"] = "ZobraziĹĄ pondelok ako prvĂ˝";
|
||||
Calendar._TT["SUN_FIRST"] = "ZobraziĹĄ nedeÄľu ako prvĂş";
|
||||
Calendar._TT["CLOSE"] = "ZavrieĹĄ";
|
||||
Calendar._TT["TODAY"] = "Dnes";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)klik/ĹĄahanie zmenĂ hodnotu";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "$d. %m. %Y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b";
|
||||
|
||||
Calendar._TT["WK"] = "týž";
|
110
jscalendar-1.0/lang/calendar-sp.js
Normal file
110
jscalendar-1.0/lang/calendar-sp.js
Normal file
@ -0,0 +1,110 @@
|
||||
// ** 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",
|
||||
"Martes",
|
||||
"Miercoles",
|
||||
"Jueves",
|
||||
"Viernes",
|
||||
"Sabado",
|
||||
"Domingo");
|
||||
|
||||
Calendar._SDN = new Array
|
||||
("Dom",
|
||||
"Lun",
|
||||
"Mar",
|
||||
"Mie",
|
||||
"Jue",
|
||||
"Vie",
|
||||
"Sab",
|
||||
"Dom");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("Enero",
|
||||
"Febrero",
|
||||
"Marzo",
|
||||
"Abril",
|
||||
"Mayo",
|
||||
"Junio",
|
||||
"Julio",
|
||||
"Agosto",
|
||||
"Septiembre",
|
||||
"Octubre",
|
||||
"Noviembre",
|
||||
"Diciembre");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("Ene",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Abr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Ago",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dic");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Información del Calendario";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\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" +
|
||||
"- Use \xab, \xbb para seleccionar el año\n" +
|
||||
"- Use " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " para seleccionar el mes\n" +
|
||||
"- Mantenga presionado el botón del ratón en cualquiera de las opciones superiores para un acceso rapido .";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Selección del Reloj:\n" +
|
||||
"- Seleccione la hora para cambiar el reloj\n" +
|
||||
"- o presione Shift-click para disminuirlo\n" +
|
||||
"- o presione click y arrastre del ratón para una selección rapida.";
|
||||
|
||||
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";
|
||||
Calendar._TT["NEXT_MONTH"] = "Mes Siguiente (Presione para menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Año Siguiente (Presione para menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Seleccione fecha";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Arrastre y mueva";
|
||||
Calendar._TT["PART_TODAY"] = " (Hoy)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "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["TT_DATE_FORMAT"] = "%A, %e de %B de %Y";
|
||||
|
||||
Calendar._TT["WK"] = "Sm";
|
||||
Calendar._TT["TIME"] = "Hora:";
|
93
jscalendar-1.0/lang/calendar-sv.js
Normal file
93
jscalendar-1.0/lang/calendar-sv.js
Normal file
@ -0,0 +1,93 @@
|
||||
// ** I18N
|
||||
|
||||
// Calendar SV language (Swedish, svenska)
|
||||
// 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>
|
||||
// Encoding: iso-latin-1
|
||||
// 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",
|
||||
"måndag",
|
||||
"tisdag",
|
||||
"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.
|
||||
Calendar._SDN_len = 2;
|
||||
Calendar._SMN_len = 3;
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("januari",
|
||||
"februari",
|
||||
"mars",
|
||||
"april",
|
||||
"maj",
|
||||
"juni",
|
||||
"juli",
|
||||
"augusti",
|
||||
"september",
|
||||
"oktober",
|
||||
"november",
|
||||
"december");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "Om kalendern";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Datum/tid-väljare\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" +
|
||||
"- Använd knapparna \xab, \xbb för att välja år\n" +
|
||||
"- Använd knapparna " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " för att välja månad\n" +
|
||||
"- Håll musknappen nedtryckt på någon av ovanstående knappar för snabbare val.";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"Val av tid:\n" +
|
||||
"- Klicka på en del av tiden för att öka den delen\n" +
|
||||
"- eller skift-klicka för att minska den\n" +
|
||||
"- eller klicka och drag för snabbare val.";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "Föregående år (håll för menu)";
|
||||
Calendar._TT["PREV_MONTH"] = "Föregående månad (håll för menu)";
|
||||
Calendar._TT["GO_TODAY"] = "Gå till dagens datum";
|
||||
Calendar._TT["NEXT_MONTH"] = "Följande månad (håll för menu)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Följande år (håll för menu)";
|
||||
Calendar._TT["SEL_DATE"] = "Välj datum";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Drag för att flytta";
|
||||
Calendar._TT["PART_TODAY"] = " (idag)";
|
||||
Calendar._TT["MON_FIRST"] = "Visa måndag först";
|
||||
Calendar._TT["SUN_FIRST"] = "Visa söndag först";
|
||||
Calendar._TT["CLOSE"] = "Stäng";
|
||||
Calendar._TT["TODAY"] = "Idag";
|
||||
Calendar._TT["TIME_PART"] = "(Skift-)klicka eller drag för att ändra tid";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%A %d %b %Y";
|
||||
|
||||
Calendar._TT["WK"] = "vecka";
|
58
jscalendar-1.0/lang/calendar-tr.js
Normal file
58
jscalendar-1.0/lang/calendar-tr.js
Normal file
@ -0,0 +1,58 @@
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Turkish Translation by Nuri AKMAN
|
||||
// Location: Ankara/TURKEY
|
||||
// e-mail : nuriakman@hotmail.com
|
||||
// Date : April, 9 2003
|
||||
//
|
||||
// Note: if Turkish Characters does not shown on you screen
|
||||
// please include falowing line your html code:
|
||||
//
|
||||
// <meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ** I18N
|
||||
Calendar._DN = new Array
|
||||
("Pazar",
|
||||
"Pazartesi",
|
||||
"Salı",
|
||||
"Çarşamba",
|
||||
"Perşembe",
|
||||
"Cuma",
|
||||
"Cumartesi",
|
||||
"Pazar");
|
||||
Calendar._MN = new Array
|
||||
("Ocak",
|
||||
"Şubat",
|
||||
"Mart",
|
||||
"Nisan",
|
||||
"Mayıs",
|
||||
"Haziran",
|
||||
"Temmuz",
|
||||
"Ağustos",
|
||||
"Eylül",
|
||||
"Ekim",
|
||||
"Kasım",
|
||||
"Aralık");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["TOGGLE"] = "Haftanın ilk gününü kaydır";
|
||||
Calendar._TT["PREV_YEAR"] = "Önceki Yıl (Menü için basılı tutunuz)";
|
||||
Calendar._TT["PREV_MONTH"] = "Önceki Ay (Menü için basılı tutunuz)";
|
||||
Calendar._TT["GO_TODAY"] = "Bugün'e git";
|
||||
Calendar._TT["NEXT_MONTH"] = "Sonraki Ay (Menü için basılı tutunuz)";
|
||||
Calendar._TT["NEXT_YEAR"] = "Sonraki Yıl (Menü için basılı tutunuz)";
|
||||
Calendar._TT["SEL_DATE"] = "Tarih seçiniz";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "Taşımak için sürükleyiniz";
|
||||
Calendar._TT["PART_TODAY"] = " (bugün)";
|
||||
Calendar._TT["MON_FIRST"] = "Takvim Pazartesi gününden başlasın";
|
||||
Calendar._TT["SUN_FIRST"] = "Takvim Pazar gününden başlasın";
|
||||
Calendar._TT["CLOSE"] = "Kapat";
|
||||
Calendar._TT["TODAY"] = "Bugün";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "dd-mm-y";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "d MM y, DD";
|
||||
|
||||
Calendar._TT["WK"] = "Hafta";
|
119
jscalendar-1.0/lang/calendar-zh.js
Normal file
119
jscalendar-1.0/lang/calendar-zh.js
Normal file
@ -0,0 +1,119 @@
|
||||
// ** 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
|
||||
("星期日",
|
||||
"星期一",
|
||||
"星期二",
|
||||
"星期三",
|
||||
"星期四",
|
||||
"星期五",
|
||||
"星期六",
|
||||
"星期日");
|
||||
|
||||
// Please note that the following array of short day names (and the same goes
|
||||
// for short month names, _SMN) isn't absolutely necessary. We give it here
|
||||
// for exemplification on how one can customize the short day names, but if
|
||||
// they are simply the first N letters of the full name you can simply say:
|
||||
//
|
||||
// Calendar._SDN_len = N; // short day name length
|
||||
// Calendar._SMN_len = N; // short month name length
|
||||
//
|
||||
// If N = 3 then this is not needed either since we assume a value of 3 if not
|
||||
// present, to be compatible with translation files that were written before
|
||||
// this feature.
|
||||
|
||||
// short day names
|
||||
Calendar._SDN = new Array
|
||||
("日",
|
||||
"一",
|
||||
"二",
|
||||
"三",
|
||||
"四",
|
||||
"五",
|
||||
"六",
|
||||
"日");
|
||||
|
||||
// full month names
|
||||
Calendar._MN = new Array
|
||||
("一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月");
|
||||
|
||||
// short month names
|
||||
Calendar._SMN = new Array
|
||||
("一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月",
|
||||
"七月",
|
||||
"八月",
|
||||
"九月",
|
||||
"十月",
|
||||
"十一月",
|
||||
"十二月");
|
||||
|
||||
// tooltips
|
||||
Calendar._TT = {};
|
||||
Calendar._TT["INFO"] = "帮助";
|
||||
|
||||
Calendar._TT["ABOUT"] =
|
||||
"DHTML Date/Time Selector\n" +
|
||||
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
|
||||
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
|
||||
"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." +
|
||||
"\n\n" +
|
||||
"选择日期:\n" +
|
||||
"- 点击 \xab, \xbb 按钮选择年份\n" +
|
||||
"- 点击 " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " 按钮选择月份\n" +
|
||||
"- 长按以上按钮可从菜单中快速选择年份或月份";
|
||||
Calendar._TT["ABOUT_TIME"] = "\n\n" +
|
||||
"选择时间:\n" +
|
||||
"- 点击小时或分钟可使改数值加一\n" +
|
||||
"- 按住Shift键点击小时或分钟可使改数值减一\n" +
|
||||
"- 点击拖动鼠标可进行快速选择";
|
||||
|
||||
Calendar._TT["PREV_YEAR"] = "上一年 (按住出菜单)";
|
||||
Calendar._TT["PREV_MONTH"] = "上一月 (按住出菜单)";
|
||||
Calendar._TT["GO_TODAY"] = "转到今日";
|
||||
Calendar._TT["NEXT_MONTH"] = "下一月 (按住出菜单)";
|
||||
Calendar._TT["NEXT_YEAR"] = "下一年 (按住出菜单)";
|
||||
Calendar._TT["SEL_DATE"] = "选择日期";
|
||||
Calendar._TT["DRAG_TO_MOVE"] = "拖动";
|
||||
Calendar._TT["PART_TODAY"] = " (今日)";
|
||||
|
||||
// the following is to inform that "%s" is to be the first day of week
|
||||
// %s will be replaced with the day name.
|
||||
Calendar._TT["DAY_FIRST"] = "最左边显示%s";
|
||||
|
||||
// This may be locale-dependent. It specifies the week-end days, as an array
|
||||
// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1
|
||||
// means Monday, etc.
|
||||
Calendar._TT["WEEKEND"] = "0,6";
|
||||
|
||||
Calendar._TT["CLOSE"] = "关闭";
|
||||
Calendar._TT["TODAY"] = "今日";
|
||||
Calendar._TT["TIME_PART"] = "(Shift-)点击鼠标或拖动改变值";
|
||||
|
||||
// date formats
|
||||
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
|
||||
Calendar._TT["TT_DATE_FORMAT"] = "%A, %b %e日";
|
||||
|
||||
Calendar._TT["WK"] = "周";
|
||||
Calendar._TT["TIME"] = "时间:";
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user