initial commit
This commit is contained in:
commit
e2c51b0d22
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
Binary file not shown.
After Width: | Height: | Size: 905 B |
|
@ -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');
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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();
|
||||||
|
}
|
||||||
|
?>
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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(); }
|
||||||
|
});
|
|
@ -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;
|
||||||
|
}
|
|
@ -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"
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
?>
|
|
@ -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"
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
?>
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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(); }
|
||||||
|
}
|
|
@ -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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -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;}}}}
|
|
@ -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();}}
|
|
@ -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);});}}
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
};
|
|
@ -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;};
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
|
@ -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;
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -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;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
?>
|
File diff suppressed because one or more lines are too long
|
@ -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>
|
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -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; }
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 223 B |
|
@ -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>
|
|
@ -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";
|
|
@ -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:";
|
||||||
|
|
|
@ -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"] = "×àñ:";
|
|
@ -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:";
|
|
@ -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:";
|
|
@ -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:";
|
||||||
|
|
|
@ -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:";
|
|
@ -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:";
|
|
@ -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:";
|
|
@ -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:";
|
|
@ -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:";
|
|
@ -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";
|
|
@ -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"] = "εβδ";
|
||||||
|
|
|
@ -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:";
|
|
@ -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:";
|
|
@ -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";
|
|
@ -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 :";
|
|
@ -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"] = "שעה::";
|
|
@ -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";
|
Binary file not shown.
|
@ -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õ:";
|
|
@ -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:";
|
|
@ -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"] = "週";
|
|
@ -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"] = "주";
|
|
@ -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"] = "주";
|
|
@ -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";
|
|
@ -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";
|
|
@ -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:";
|
|
@ -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:";
|
|
@ -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";
|
|
@ -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";
|
|
@ -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";
|
|
@ -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:";
|
|
@ -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:";
|
|
@ -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"] = "Время:";
|
|
@ -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"] = "Âðåìÿ:";
|
|
@ -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";
|
|
@ -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ýž";
|
|
@ -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:";
|
|
@ -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";
|
|
@ -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";
|
|
@ -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