From f7d51412516533d058a1b9cd3d0762e6ea4c3247 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Wed, 4 Apr 2007 18:20:45 +0000 Subject: [PATCH] Added svn:eol-style native property for various files git-svn-id: http://redmine.rubyforge.org/svn/trunk@419 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lang/zh.yml | 862 +++++------ public/javascripts/application.js | 64 +- .../javascripts/calendar/lang/calendar-de.js | 4 +- .../javascripts/calendar/lang/calendar-fr.js | 4 +- .../javascripts/calendar/lang/calendar-it.js | 254 ++-- .../javascripts/calendar/lang/calendar-zh.js | 254 ++-- public/javascripts/jstoolbar.js | 928 ++++++------ public/javascripts/menu.js | 1112 +++++++-------- public/manual/en/html.css | 56 +- public/manual/fr/html.css | 56 +- public/stylesheets/application.css | 1264 ++++++++--------- public/stylesheets/jstoolbar.css | 162 +-- public/stylesheets/print.css | 4 +- public/stylesheets/scm.css | 72 +- 14 files changed, 2548 insertions(+), 2548 deletions(-) diff --git a/lang/zh.yml b/lang/zh.yml index 5ffcb159..6301b823 100644 --- a/lang/zh.yml +++ b/lang/zh.yml @@ -1,431 +1,431 @@ -# translated by andy wu -# email:andywu.zh@gmail.com - -_gloc_rule_default: '|n| n==1 ? "" : "_plural" ' - -actionview_datehelper_select_day_prefix: -actionview_datehelper_select_month_names: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月 -actionview_datehelper_select_month_names_abbr: 一,二,三,四,五,六,七,八,九,十,十一,十二 -actionview_datehelper_select_month_prefix: -actionview_datehelper_select_year_prefix: -actionview_datehelper_time_in_words_day: 1 天 -actionview_datehelper_time_in_words_day_plural: %d 天 -actionview_datehelper_time_in_words_hour_about: 约1小时 -actionview_datehelper_time_in_words_hour_about_plural: 约 %d 小时 -actionview_datehelper_time_in_words_hour_about_single: 约1小时 -actionview_datehelper_time_in_words_minute: 1分钟 -actionview_datehelper_time_in_words_minute_half: 半分钟 -actionview_datehelper_time_in_words_minute_less_than: 1分钟以内 -actionview_datehelper_time_in_words_minute_plural: %d 分钟 -actionview_datehelper_time_in_words_minute_single: 1分钟 -actionview_datehelper_time_in_words_second_less_than: 1秒以内 -actionview_datehelper_time_in_words_second_less_than_plural: %d 秒以内 -actionview_instancetag_blank_option: 请选择 - -activerecord_error_inclusion: 未包含在列表中 -activerecord_error_exclusion: 保留的 -activerecord_error_invalid: 无效的 -activerecord_error_confirmation: 和确认输入不匹配 -activerecord_error_accepted: 必需被接受 -activerecord_error_empty: 不能为空 -activerecord_error_blank: 不能是空格 -activerecord_error_too_long: 太长 -activerecord_error_too_short: 太短 -activerecord_error_wrong_length: 长度有问题 -activerecord_error_taken: has already been taken -activerecord_error_not_a_number: 不是数字 -activerecord_error_not_a_date: 不是有效的日期 -activerecord_error_greater_than_start_date: 必需大于开始日期 - -general_fmt_age: %d yr -general_fmt_age_plural: %d yrs -general_fmt_date: %%m/%%d/%%Y -general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p -general_fmt_datetime_short: %%b %%d, %%I:%%M %%p -general_fmt_time: %%I:%%M %%p -general_text_No: '否' -general_text_Yes: '是' -general_text_no: '否' -general_text_yes: '是' -general_lang_zh: 'Chinese (简体中文)' -general_csv_separator: ',' -general_csv_encoding: gb2312 -general_pdf_encoding: Big5 -general_day_names: 一,二,三,四,五,六,日 - -notice_account_updated: 帐户更新成功。 -notice_account_invalid_creditentials: 用户名或密码不正确 -notice_account_password_updated: 成功更新口令 -notice_account_wrong_password: 错误的口令 -notice_account_register_done: 帐户已创建成功 -notice_account_unknown_email: 未知用户 -notice_can_t_change_password: 该帐户使用了外部认证。无法更改口令。 -notice_account_lost_email_sent: 邮件已被发送,邮件中有关于选择新口令的指导 -notice_account_activated: 您的帐号已被激活。您现在可以登录了。 -notice_successful_create: 创建成功 -notice_successful_update: 更新成功 -notice_successful_delete: 删除成功 -notice_successful_connection: 连接成功 -notice_file_not_found: 您访问的页面不存在或已被删除。 -notice_locking_conflict: 数据已被另一个用户更新 -notice_scm_error: 在版本库中不存在该条目或修订 - -mail_subject_lost_password: 您的redMine口令 -mail_subject_register: redMine帐户激活 - -gui_validation_error: 1 个错误 -gui_validation_error_plural: %d 个错误 - -field_name: 名称 -field_description: 描述 -field_summary: 摘要 -field_is_required: 必填 -field_firstname: 名字 -field_lastname: 姓 -field_mail: 邮件地址 -field_filename: 文件 -field_filesize: 大小 -field_downloads: 下载次数 -field_author: 作者 -field_created_on: 创建于 -field_updated_on: 更新于 -field_field_format: 格式 -field_is_for_all: 应用于所有项目 -field_possible_values: 可能的值 -field_regexp: 正则表达式 -field_min_length: 最小长度 -field_max_length: 最大长度 -field_value: 值 -field_category: 分类 -field_title: 标题 -field_project: 项目 -field_issue: 任务 -field_status: 状态 -field_notes: 说明 -field_is_closed: 已关闭的任务 -field_is_default: 默认状态 -field_html_color: 颜色 -field_tracker: 跟踪 -field_subject: 主题 -field_due_date: 到期日 -field_assigned_to: 指派 -field_priority: 优先级 -field_fixed_version: 修订版本 -field_user: 用户 -field_role: 角色 -field_homepage: 主页 -field_is_public: 公开 -field_parent: 上级项目 -field_is_in_chlog: 在更新日志中显示任务 -field_is_in_roadmap: 在路线图中显示任务 -field_login: 登录名 -field_mail_notification: 邮件通知 -field_admin: 管理员 -field_last_login_on: 最后登录 -field_language: 语言 -field_effective_date: 日期 -field_password: 口令 -field_new_password: 新口令 -field_password_confirmation: 确认 -field_version: 版本 -field_type: 类别 -field_host: 主机 -field_port: 端口 -field_account: 帐号 -field_base_dn: Base DN -field_attr_login: 登录名属性 -field_attr_firstname: 名字属性 -field_attr_lastname: 姓属性 -field_attr_mail: 邮件属性 -field_onthefly: On-the-fly user creation -field_start_date: 开始 -field_done_ratio: %% 完成 -field_auth_source: 认证模式 -field_hide_mail: 隐藏我的邮件 -field_comment: 注释 -field_url: URL -field_start_page: 起始页 -field_subproject: 子项目 -field_hours: Hours -field_activity: 活动 -field_spent_on: 日期 -field_identifier: Identifier - -setting_app_title: 应用程序标题 -setting_app_subtitle: 应用程序子标题 -setting_welcome_text: 欢迎文字 -setting_default_language: 默认语言 -setting_login_required: 要求认证 -setting_self_registration: 允许自注册 -setting_attachment_max_size: 附件最大尺寸 -setting_issues_export_limit: Issues export limit -setting_mail_from: Emission mail address -setting_host_name: 主机名称 -setting_text_formatting: 文本格式 -setting_wiki_compression: Wiki history compression -setting_feeds_limit: Feed content limit -setting_autofetch_changesets: Autofetch SVN commits -setting_sys_api_enabled: Enable WS for repository management - -label_user: 用户 -label_user_plural: 用户列表 -label_user_new: 新建用户 -label_project: 项目 -label_project_new: 新建项目 -label_project_plural: 项目列表 -label_project_latest: 最近的项目列表 -label_issue: 任务 -label_issue_new: 新建任务 -label_issue_plural: 任务列表 -label_issue_view_all: 查看所有任务 -label_document: 文档 -label_document_new: 新建文档 -label_document_plural: 文档列表 -label_role: 角色 -label_role_plural: 角色列表 -label_role_new: 新建角色 -label_role_and_permissions: 角色和权限 -label_member: 成员 -label_member_new: 新建成员 -label_member_plural: 成员列表 -label_tracker: 跟踪标签 -label_tracker_plural: 跟踪标签列表 -label_tracker_new: 新建跟踪标签 -label_workflow: 工作流 -label_issue_status: 任务状态列表 -label_issue_status_plural: 任务状态列表 -label_issue_status_new: 新建任务状态列表 -label_issue_category: 任务类别 -label_issue_category_plural: 任务类别列表 -label_issue_category_new: 新建任务类别 -label_custom_field: 自定义字段 -label_custom_field_plural: 自定义字段列表 -label_custom_field_new: 新建自定义字段 -label_enumerations: 枚举列表 -label_enumeration_new: 新建枚举值 -label_information: 信息 -label_information_plural: 信息 -label_please_login: 请登录 -label_register: 注册 -label_password_lost: 忘记口令 -label_home: 主页 -label_my_page: 我的工作台 -label_my_account: 我的帐号 -label_my_projects: 我的项目列表 -label_administration: 管理 -label_login: 登录 -label_logout: 退出 -label_help: 帮助 -label_reported_issues: 已报告的问题 -label_assigned_to_me_issues: 分配给我的任务 -label_last_login: 最后登录 -label_last_updates: 最后更新 -label_last_updates_plural: %d 最后更新 -label_registered_on: 注册于 -label_activity: 活动 -label_new: 新建 -label_logged_as: 登录为 -label_environment: 环境 -label_authentication: 认证 -label_auth_source: 认证模式 -label_auth_source_new: 新建认证模式 -label_auth_source_plural: 认证模式列表 -label_subproject_plural: 子项目列表 -label_min_max_length: 最小 - 最大 长度 -label_list: list -label_date: Date -label_integer: Integer -label_boolean: Boolean -label_string: Text -label_text: Long text -label_attribute: 属性 -label_attribute_plural: 属性 -label_download: %d 个下载次数 -label_download_plural: %d 个下载次数 -label_no_data: 没有数据用于显示 -label_change_status: 改变状态 -label_history: 历史记录 -label_attachment: 文件 -label_attachment_new: 新建文件 -label_attachment_delete: 删除文件 -label_attachment_plural: 文件列表 -label_report: 报表 -label_report_plural: 报表列表 -label_news: 新闻 -label_news_new: 增加新闻 -label_news_plural: 新闻列表 -label_news_latest: 最近的新闻 -label_news_view_all: 查看所有新闻 -label_change_log: 更新日志 -label_settings: 配置 -label_overview: 概述 -label_version: 版本 -label_version_new: 新建版本 -label_version_plural: 版本列表 -label_confirmation: 确认 -label_export_to: 导出 -label_read: 读取... -label_public_projects: 公开的项目列表 -label_open_issues: 打开 -label_open_issues_plural: 打开 -label_closed_issues: 已关闭 -label_closed_issues_plural: 已关闭 -label_total: 合计 -label_permissions: 权限列表 -label_current_status: 当前状态 -label_new_statuses_allowed: New statuses allowed -label_all: 全部 -label_none: 无 -label_next: 下一个 -label_previous: 上一个 -label_used_by: 使用中 -label_details: 详情... -label_add_note: 添加说明 -label_per_page: 每面 -label_calendar: 日历 -label_months_from: months from -label_gantt: 甘特图(Gantt) -label_internal: 内部 -label_last_changes: 最近的 %d 次更改 -label_change_view_all: 查看所有更改 -label_personalize_page: 个性化定制本页 -label_comment: 注释 -label_comment_plural: 注释列表 -label_comment_add: 添加注释 -label_comment_added: 已加入注释 -label_comment_delete: 删除注释 -label_query: 自定义查询 -label_query_plural: 自定义查询列表 -label_query_new: 新建查询 -label_filter_add: 增加过滤器 -label_filter_plural: 过滤器列表 -label_equals: 等于 -label_not_equals: 不等于 -label_in_less_than: 剩余天数小于 -label_in_more_than: 剩余天数大于 -label_in: 剩余天数 -label_today: 今天 -label_less_than_ago: 之前天数少于 -label_more_than_ago: 之前天数大于 -label_ago: 之前天数 -label_contains: 包含 -label_not_contains: 不包含 -label_day_plural: 天数 -label_repository: SVN 版本库 -label_browse: 浏览 -label_modification: %d 个更新 -label_modification_plural: %d 个更新 -label_revision: 修订 -label_revision_plural: 修订 -label_added: 已增加 -label_modified: 已修改 -label_deleted: 已删除 -label_latest_revision: 最近的版本 -label_latest_revision_plural: 最近的版本列表 -label_view_revisions: 查看修订列表 -label_max_size: 最大尺寸 -label_on: 'on' -label_sort_highest: 置顶 -label_sort_higher: 上移 -label_sort_lower: 下移 -label_sort_lowest: 置底 -label_roadmap: 路线图 -label_roadmap_due_in: Due in -label_roadmap_no_issues: 该版本没有任务 -label_search: 查找 -label_result: %d 个结果 -label_result_plural: %d 个结果 -label_all_words: 所有单词 -label_wiki: Wiki -label_wiki_edit: Wiki edit -label_wiki_edit_plural: Wiki edits -label_page_index: 索引 -label_current_version: 当前版本 -label_preview: 预览 -label_feed_plural: Feeds -label_changes_details: 所有更改的详情 -label_issue_tracking: 任务跟踪 -label_spent_time: 耗时 -label_f_hour: %.2f 小时 -label_f_hour_plural: %.2f 小时 -label_time_tracking: 时间跟踪 -label_change_plural: 更改列表 -label_statistics: 统计 -label_commits_per_month: Commits per month -label_commits_per_author: Commits per author -label_view_diff: View differences -label_diff_inline: inline -label_diff_side_by_side: side by side -label_options: Options -label_copy_workflow_from: Copy workflow from - -button_login: 登录 -button_submit: 提交 -button_save: 保存 -button_check_all: 全选 -button_uncheck_all: 清除 -button_delete: 删除 -button_create: 创建 -button_test: 测试 -button_edit: 编辑 -button_add: 新增 -button_change: 修改 -button_apply: 应用 -button_clear: 清除 -button_lock: 锁定 -button_unlock: 解锁 -button_download: 下载 -button_list: 列表 -button_view: 查看 -button_move: 移动 -button_back: 返回 -button_cancel: 取消 -button_activate: 激活 -button_sort: 排序 -button_log_time: 登记工时 - -status_active: 激活 -status_registered: 已注册 -status_locked: 已锁定 - -text_select_mail_notifications: 选择需要发送邮件通知的动作。 -text_regexp_info: eg. ^[A-Z0-9]+$ -text_min_max_length_info: 0 表示没有限制 -text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗? -text_workflow_edit: 选择一个角色和跟踪标签来编辑这个工作流 -text_are_you_sure: 您确定? -text_journal_changed: 从 %s 更改为 %s -text_journal_set_to: 设置为 %s -text_journal_deleted: 已删除 -text_tip_task_begin_day: 开始于此 -text_tip_task_end_day: 在此结束 -text_tip_task_begin_end_day: 开始并结束于此 -text_project_identifier_info: 'Lower case letters (a-z), numbers and dashes allowed.
Once saved, the identifier can not be changed.' -text_caracters_maximum: %d characters maximum. -text_length_between: Length between %d and %d characters. - -default_role_manager: 管理员 -default_role_developper: 开发人员 -default_role_reporter: 报告人员 -default_tracker_bug: 问题 -default_tracker_feature: 功能 -default_tracker_support: 支持 -default_issue_status_new: 新建 -default_issue_status_assigned: 已分配 -default_issue_status_resolved: 已解决 -default_issue_status_feedback: 回复 -default_issue_status_closed: 已关闭 -default_issue_status_rejected: 已打回 -default_doc_category_user: 用户文档 -default_doc_category_tech: 技术文档 -default_priority_low: 低 -default_priority_normal: 普通 -default_priority_high: 高 -default_priority_urgent: 紧急 -default_priority_immediate: 立刻 -default_activity_design: 设计 -default_activity_development: 开发 - -enumeration_issue_priorities: 任务优先级 -enumeration_doc_categories: 文档类别 -enumeration_activities: Activities (time tracking) +# translated by andy wu +# email:andywu.zh@gmail.com + +_gloc_rule_default: '|n| n==1 ? "" : "_plural" ' + +actionview_datehelper_select_day_prefix: +actionview_datehelper_select_month_names: 一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月 +actionview_datehelper_select_month_names_abbr: 一,二,三,四,五,六,七,八,九,十,十一,十二 +actionview_datehelper_select_month_prefix: +actionview_datehelper_select_year_prefix: +actionview_datehelper_time_in_words_day: 1 天 +actionview_datehelper_time_in_words_day_plural: %d 天 +actionview_datehelper_time_in_words_hour_about: 约1小时 +actionview_datehelper_time_in_words_hour_about_plural: 约 %d 小时 +actionview_datehelper_time_in_words_hour_about_single: 约1小时 +actionview_datehelper_time_in_words_minute: 1分钟 +actionview_datehelper_time_in_words_minute_half: 半分钟 +actionview_datehelper_time_in_words_minute_less_than: 1分钟以内 +actionview_datehelper_time_in_words_minute_plural: %d 分钟 +actionview_datehelper_time_in_words_minute_single: 1分钟 +actionview_datehelper_time_in_words_second_less_than: 1秒以内 +actionview_datehelper_time_in_words_second_less_than_plural: %d 秒以内 +actionview_instancetag_blank_option: 请选择 + +activerecord_error_inclusion: 未包含在列表中 +activerecord_error_exclusion: 保留的 +activerecord_error_invalid: 无效的 +activerecord_error_confirmation: 和确认输入不匹配 +activerecord_error_accepted: 必需被接受 +activerecord_error_empty: 不能为空 +activerecord_error_blank: 不能是空格 +activerecord_error_too_long: 太长 +activerecord_error_too_short: 太短 +activerecord_error_wrong_length: 长度有问题 +activerecord_error_taken: has already been taken +activerecord_error_not_a_number: 不是数字 +activerecord_error_not_a_date: 不是有效的日期 +activerecord_error_greater_than_start_date: 必需大于开始日期 + +general_fmt_age: %d yr +general_fmt_age_plural: %d yrs +general_fmt_date: %%m/%%d/%%Y +general_fmt_datetime: %%m/%%d/%%Y %%I:%%M %%p +general_fmt_datetime_short: %%b %%d, %%I:%%M %%p +general_fmt_time: %%I:%%M %%p +general_text_No: '否' +general_text_Yes: '是' +general_text_no: '否' +general_text_yes: '是' +general_lang_zh: 'Chinese (简体中文)' +general_csv_separator: ',' +general_csv_encoding: gb2312 +general_pdf_encoding: Big5 +general_day_names: 一,二,三,四,五,六,日 + +notice_account_updated: 帐户更新成功。 +notice_account_invalid_creditentials: 用户名或密码不正确 +notice_account_password_updated: 成功更新口令 +notice_account_wrong_password: 错误的口令 +notice_account_register_done: 帐户已创建成功 +notice_account_unknown_email: 未知用户 +notice_can_t_change_password: 该帐户使用了外部认证。无法更改口令。 +notice_account_lost_email_sent: 邮件已被发送,邮件中有关于选择新口令的指导 +notice_account_activated: 您的帐号已被激活。您现在可以登录了。 +notice_successful_create: 创建成功 +notice_successful_update: 更新成功 +notice_successful_delete: 删除成功 +notice_successful_connection: 连接成功 +notice_file_not_found: 您访问的页面不存在或已被删除。 +notice_locking_conflict: 数据已被另一个用户更新 +notice_scm_error: 在版本库中不存在该条目或修订 + +mail_subject_lost_password: 您的redMine口令 +mail_subject_register: redMine帐户激活 + +gui_validation_error: 1 个错误 +gui_validation_error_plural: %d 个错误 + +field_name: 名称 +field_description: 描述 +field_summary: 摘要 +field_is_required: 必填 +field_firstname: 名字 +field_lastname: 姓 +field_mail: 邮件地址 +field_filename: 文件 +field_filesize: 大小 +field_downloads: 下载次数 +field_author: 作者 +field_created_on: 创建于 +field_updated_on: 更新于 +field_field_format: 格式 +field_is_for_all: 应用于所有项目 +field_possible_values: 可能的值 +field_regexp: 正则表达式 +field_min_length: 最小长度 +field_max_length: 最大长度 +field_value: 值 +field_category: 分类 +field_title: 标题 +field_project: 项目 +field_issue: 任务 +field_status: 状态 +field_notes: 说明 +field_is_closed: 已关闭的任务 +field_is_default: 默认状态 +field_html_color: 颜色 +field_tracker: 跟踪 +field_subject: 主题 +field_due_date: 到期日 +field_assigned_to: 指派 +field_priority: 优先级 +field_fixed_version: 修订版本 +field_user: 用户 +field_role: 角色 +field_homepage: 主页 +field_is_public: 公开 +field_parent: 上级项目 +field_is_in_chlog: 在更新日志中显示任务 +field_is_in_roadmap: 在路线图中显示任务 +field_login: 登录名 +field_mail_notification: 邮件通知 +field_admin: 管理员 +field_last_login_on: 最后登录 +field_language: 语言 +field_effective_date: 日期 +field_password: 口令 +field_new_password: 新口令 +field_password_confirmation: 确认 +field_version: 版本 +field_type: 类别 +field_host: 主机 +field_port: 端口 +field_account: 帐号 +field_base_dn: Base DN +field_attr_login: 登录名属性 +field_attr_firstname: 名字属性 +field_attr_lastname: 姓属性 +field_attr_mail: 邮件属性 +field_onthefly: On-the-fly user creation +field_start_date: 开始 +field_done_ratio: %% 完成 +field_auth_source: 认证模式 +field_hide_mail: 隐藏我的邮件 +field_comment: 注释 +field_url: URL +field_start_page: 起始页 +field_subproject: 子项目 +field_hours: Hours +field_activity: 活动 +field_spent_on: 日期 +field_identifier: Identifier + +setting_app_title: 应用程序标题 +setting_app_subtitle: 应用程序子标题 +setting_welcome_text: 欢迎文字 +setting_default_language: 默认语言 +setting_login_required: 要求认证 +setting_self_registration: 允许自注册 +setting_attachment_max_size: 附件最大尺寸 +setting_issues_export_limit: Issues export limit +setting_mail_from: Emission mail address +setting_host_name: 主机名称 +setting_text_formatting: 文本格式 +setting_wiki_compression: Wiki history compression +setting_feeds_limit: Feed content limit +setting_autofetch_changesets: Autofetch SVN commits +setting_sys_api_enabled: Enable WS for repository management + +label_user: 用户 +label_user_plural: 用户列表 +label_user_new: 新建用户 +label_project: 项目 +label_project_new: 新建项目 +label_project_plural: 项目列表 +label_project_latest: 最近的项目列表 +label_issue: 任务 +label_issue_new: 新建任务 +label_issue_plural: 任务列表 +label_issue_view_all: 查看所有任务 +label_document: 文档 +label_document_new: 新建文档 +label_document_plural: 文档列表 +label_role: 角色 +label_role_plural: 角色列表 +label_role_new: 新建角色 +label_role_and_permissions: 角色和权限 +label_member: 成员 +label_member_new: 新建成员 +label_member_plural: 成员列表 +label_tracker: 跟踪标签 +label_tracker_plural: 跟踪标签列表 +label_tracker_new: 新建跟踪标签 +label_workflow: 工作流 +label_issue_status: 任务状态列表 +label_issue_status_plural: 任务状态列表 +label_issue_status_new: 新建任务状态列表 +label_issue_category: 任务类别 +label_issue_category_plural: 任务类别列表 +label_issue_category_new: 新建任务类别 +label_custom_field: 自定义字段 +label_custom_field_plural: 自定义字段列表 +label_custom_field_new: 新建自定义字段 +label_enumerations: 枚举列表 +label_enumeration_new: 新建枚举值 +label_information: 信息 +label_information_plural: 信息 +label_please_login: 请登录 +label_register: 注册 +label_password_lost: 忘记口令 +label_home: 主页 +label_my_page: 我的工作台 +label_my_account: 我的帐号 +label_my_projects: 我的项目列表 +label_administration: 管理 +label_login: 登录 +label_logout: 退出 +label_help: 帮助 +label_reported_issues: 已报告的问题 +label_assigned_to_me_issues: 分配给我的任务 +label_last_login: 最后登录 +label_last_updates: 最后更新 +label_last_updates_plural: %d 最后更新 +label_registered_on: 注册于 +label_activity: 活动 +label_new: 新建 +label_logged_as: 登录为 +label_environment: 环境 +label_authentication: 认证 +label_auth_source: 认证模式 +label_auth_source_new: 新建认证模式 +label_auth_source_plural: 认证模式列表 +label_subproject_plural: 子项目列表 +label_min_max_length: 最小 - 最大 长度 +label_list: list +label_date: Date +label_integer: Integer +label_boolean: Boolean +label_string: Text +label_text: Long text +label_attribute: 属性 +label_attribute_plural: 属性 +label_download: %d 个下载次数 +label_download_plural: %d 个下载次数 +label_no_data: 没有数据用于显示 +label_change_status: 改变状态 +label_history: 历史记录 +label_attachment: 文件 +label_attachment_new: 新建文件 +label_attachment_delete: 删除文件 +label_attachment_plural: 文件列表 +label_report: 报表 +label_report_plural: 报表列表 +label_news: 新闻 +label_news_new: 增加新闻 +label_news_plural: 新闻列表 +label_news_latest: 最近的新闻 +label_news_view_all: 查看所有新闻 +label_change_log: 更新日志 +label_settings: 配置 +label_overview: 概述 +label_version: 版本 +label_version_new: 新建版本 +label_version_plural: 版本列表 +label_confirmation: 确认 +label_export_to: 导出 +label_read: 读取... +label_public_projects: 公开的项目列表 +label_open_issues: 打开 +label_open_issues_plural: 打开 +label_closed_issues: 已关闭 +label_closed_issues_plural: 已关闭 +label_total: 合计 +label_permissions: 权限列表 +label_current_status: 当前状态 +label_new_statuses_allowed: New statuses allowed +label_all: 全部 +label_none: 无 +label_next: 下一个 +label_previous: 上一个 +label_used_by: 使用中 +label_details: 详情... +label_add_note: 添加说明 +label_per_page: 每面 +label_calendar: 日历 +label_months_from: months from +label_gantt: 甘特图(Gantt) +label_internal: 内部 +label_last_changes: 最近的 %d 次更改 +label_change_view_all: 查看所有更改 +label_personalize_page: 个性化定制本页 +label_comment: 注释 +label_comment_plural: 注释列表 +label_comment_add: 添加注释 +label_comment_added: 已加入注释 +label_comment_delete: 删除注释 +label_query: 自定义查询 +label_query_plural: 自定义查询列表 +label_query_new: 新建查询 +label_filter_add: 增加过滤器 +label_filter_plural: 过滤器列表 +label_equals: 等于 +label_not_equals: 不等于 +label_in_less_than: 剩余天数小于 +label_in_more_than: 剩余天数大于 +label_in: 剩余天数 +label_today: 今天 +label_less_than_ago: 之前天数少于 +label_more_than_ago: 之前天数大于 +label_ago: 之前天数 +label_contains: 包含 +label_not_contains: 不包含 +label_day_plural: 天数 +label_repository: SVN 版本库 +label_browse: 浏览 +label_modification: %d 个更新 +label_modification_plural: %d 个更新 +label_revision: 修订 +label_revision_plural: 修订 +label_added: 已增加 +label_modified: 已修改 +label_deleted: 已删除 +label_latest_revision: 最近的版本 +label_latest_revision_plural: 最近的版本列表 +label_view_revisions: 查看修订列表 +label_max_size: 最大尺寸 +label_on: 'on' +label_sort_highest: 置顶 +label_sort_higher: 上移 +label_sort_lower: 下移 +label_sort_lowest: 置底 +label_roadmap: 路线图 +label_roadmap_due_in: Due in +label_roadmap_no_issues: 该版本没有任务 +label_search: 查找 +label_result: %d 个结果 +label_result_plural: %d 个结果 +label_all_words: 所有单词 +label_wiki: Wiki +label_wiki_edit: Wiki edit +label_wiki_edit_plural: Wiki edits +label_page_index: 索引 +label_current_version: 当前版本 +label_preview: 预览 +label_feed_plural: Feeds +label_changes_details: 所有更改的详情 +label_issue_tracking: 任务跟踪 +label_spent_time: 耗时 +label_f_hour: %.2f 小时 +label_f_hour_plural: %.2f 小时 +label_time_tracking: 时间跟踪 +label_change_plural: 更改列表 +label_statistics: 统计 +label_commits_per_month: Commits per month +label_commits_per_author: Commits per author +label_view_diff: View differences +label_diff_inline: inline +label_diff_side_by_side: side by side +label_options: Options +label_copy_workflow_from: Copy workflow from + +button_login: 登录 +button_submit: 提交 +button_save: 保存 +button_check_all: 全选 +button_uncheck_all: 清除 +button_delete: 删除 +button_create: 创建 +button_test: 测试 +button_edit: 编辑 +button_add: 新增 +button_change: 修改 +button_apply: 应用 +button_clear: 清除 +button_lock: 锁定 +button_unlock: 解锁 +button_download: 下载 +button_list: 列表 +button_view: 查看 +button_move: 移动 +button_back: 返回 +button_cancel: 取消 +button_activate: 激活 +button_sort: 排序 +button_log_time: 登记工时 + +status_active: 激活 +status_registered: 已注册 +status_locked: 已锁定 + +text_select_mail_notifications: 选择需要发送邮件通知的动作。 +text_regexp_info: eg. ^[A-Z0-9]+$ +text_min_max_length_info: 0 表示没有限制 +text_project_destroy_confirmation: 您确信要删除这个项目以及所有相关的数据吗? +text_workflow_edit: 选择一个角色和跟踪标签来编辑这个工作流 +text_are_you_sure: 您确定? +text_journal_changed: 从 %s 更改为 %s +text_journal_set_to: 设置为 %s +text_journal_deleted: 已删除 +text_tip_task_begin_day: 开始于此 +text_tip_task_end_day: 在此结束 +text_tip_task_begin_end_day: 开始并结束于此 +text_project_identifier_info: 'Lower case letters (a-z), numbers and dashes allowed.
Once saved, the identifier can not be changed.' +text_caracters_maximum: %d characters maximum. +text_length_between: Length between %d and %d characters. + +default_role_manager: 管理员 +default_role_developper: 开发人员 +default_role_reporter: 报告人员 +default_tracker_bug: 问题 +default_tracker_feature: 功能 +default_tracker_support: 支持 +default_issue_status_new: 新建 +default_issue_status_assigned: 已分配 +default_issue_status_resolved: 已解决 +default_issue_status_feedback: 回复 +default_issue_status_closed: 已关闭 +default_issue_status_rejected: 已打回 +default_doc_category_user: 用户文档 +default_doc_category_tech: 技术文档 +default_priority_low: 低 +default_priority_normal: 普通 +default_priority_high: 高 +default_priority_urgent: 紧急 +default_priority_immediate: 立刻 +default_activity_design: 设计 +default_activity_development: 开发 + +enumeration_issue_priorities: 任务优先级 +enumeration_doc_categories: 文档类别 +enumeration_activities: Activities (time tracking) diff --git a/public/javascripts/application.js b/public/javascripts/application.js index c8a79047..a5d9de29 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1,33 +1,33 @@ -function checkAll (id, checked) { - var el = document.getElementById(id); - for (var i = 0; i < el.elements.length; i++) { - if (el.elements[i].disabled==false) { - el.elements[i].checked = checked; - } - } -} - -function addFileField() { - var f = document.createElement("input"); - f.type = "file"; - f.name = "attachments[]"; - f.size = 30; - - p = document.getElementById("attachments_p"); - p.appendChild(document.createElement("br")); - p.appendChild(f); -} - -function showTab(name) { - var f = $$('div#content .tab-content'); - for(var i=0; i -// 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"); - -// 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 -("Gennaio", - "Febbraio", - "Marzo", - "Aprile", - "Maggio", - "Giugno", - "Luglio", - "Agosto", - "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 ;-) -"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"] = "Anno prec. (tieni premuto per menu)"; -Calendar._TT["PREV_MONTH"] = "Mese prec. (tieni premuto per menu)"; -Calendar._TT["GO_TODAY"] = "Oggi"; -Calendar._TT["NEXT_MONTH"] = "Mese succ. (tieni premuto per menu)"; -Calendar._TT["NEXT_YEAR"] = "Anno succ. (tieni premuto per menu)"; -Calendar._TT["SEL_DATE"] = "Seleziona data"; -Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostare"; -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 %s per primo"; - -// 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 modificare"; - -// date formats -Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; -Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; - -Calendar._TT["WK"] = "sett"; -Calendar._TT["TIME"] = "Ora:"; +// ** I18N + +// Calendar EN language +// Author: Mihai Bazon, +// 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"); + +// 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 +("Gennaio", + "Febbraio", + "Marzo", + "Aprile", + "Maggio", + "Giugno", + "Luglio", + "Agosto", + "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 ;-) +"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"] = "Anno prec. (tieni premuto per menu)"; +Calendar._TT["PREV_MONTH"] = "Mese prec. (tieni premuto per menu)"; +Calendar._TT["GO_TODAY"] = "Oggi"; +Calendar._TT["NEXT_MONTH"] = "Mese succ. (tieni premuto per menu)"; +Calendar._TT["NEXT_YEAR"] = "Anno succ. (tieni premuto per menu)"; +Calendar._TT["SEL_DATE"] = "Seleziona data"; +Calendar._TT["DRAG_TO_MOVE"] = "Trascina per spostare"; +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 %s per primo"; + +// 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 modificare"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; + +Calendar._TT["WK"] = "sett"; +Calendar._TT["TIME"] = "Ora:"; diff --git a/public/javascripts/calendar/lang/calendar-zh.js b/public/javascripts/calendar/lang/calendar-zh.js index 23f51bb9..ddb092bf 100644 --- a/public/javascripts/calendar/lang/calendar-zh.js +++ b/public/javascripts/calendar/lang/calendar-zh.js @@ -1,127 +1,127 @@ -// ** I18N - -// Calendar Chinese language -// Author: Andy Wu, -// 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 -("日", - "一", - "二", - "三", - "四", - "五", - "六", - "日"); - -// 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 -("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._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"] = "上年 (hold for menu)"; -Calendar._TT["PREV_MONTH"] = "上月 (hold for menu)"; -Calendar._TT["GO_TODAY"] = "回到今天"; -Calendar._TT["NEXT_MONTH"] = "下月 (hold for menu)"; -Calendar._TT["NEXT_YEAR"] = "下年 (hold for menu)"; -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"] = "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"] = "关闭"; -Calendar._TT["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:"; +// ** I18N + +// Calendar Chinese language +// Author: Andy Wu, +// 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 +("日", + "一", + "二", + "三", + "四", + "五", + "六", + "日"); + +// 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 +("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._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"] = "上年 (hold for menu)"; +Calendar._TT["PREV_MONTH"] = "上月 (hold for menu)"; +Calendar._TT["GO_TODAY"] = "回到今天"; +Calendar._TT["NEXT_MONTH"] = "下月 (hold for menu)"; +Calendar._TT["NEXT_YEAR"] = "下年 (hold for menu)"; +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"] = "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"] = "关闭"; +Calendar._TT["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:"; diff --git a/public/javascripts/jstoolbar.js b/public/javascripts/jstoolbar.js index a381c3c2..bfafcdd0 100644 --- a/public/javascripts/jstoolbar.js +++ b/public/javascripts/jstoolbar.js @@ -1,464 +1,464 @@ -/* ***** BEGIN LICENSE BLOCK ***** - * This file is part of DotClear. - * Copyright (c) 2005 Nicolas Martin & Olivier Meunier and contributors. All - * rights reserved. - * - * DotClear 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. - * - * DotClear 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 DotClear; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * ***** END LICENSE BLOCK ***** -*/ - -/* Modified by JP LANG for textile formatting */ - -function jsToolBar(textarea) { - if (!document.createElement) { return; } - - if (!textarea) { return; } - - if ((typeof(document["selection"]) == "undefined") - && (typeof(textarea["setSelectionRange"]) == "undefined")) { - return; - } - - this.textarea = textarea; - - this.editor = document.createElement('div'); - this.editor.className = 'jstEditor'; - - this.textarea.parentNode.insertBefore(this.editor,this.textarea); - this.editor.appendChild(this.textarea); - - this.toolbar = document.createElement("div"); - this.toolbar.className = 'jstElements'; - this.editor.parentNode.insertBefore(this.toolbar,this.editor); - - // Dragable resizing (only for gecko) - if (this.editor.addEventListener) - { - this.handle = document.createElement('div'); - this.handle.className = 'jstHandle'; - var dragStart = this.resizeDragStart; - var This = this; - this.handle.addEventListener('mousedown',function(event) { dragStart.call(This,event); },false); - // fix memory leak in Firefox (bug #241518) - window.addEventListener('unload',function() { - var del = This.handle.parentNode.removeChild(This.handle); - delete(This.handle); - },false); - - this.editor.parentNode.insertBefore(this.handle,this.editor.nextSibling); - } - - this.context = null; - this.toolNodes = {}; // lorsque la toolbar est dessinée , cet objet est garni - // de raccourcis vers les éléments DOM correspondants aux outils. -} - -function jsButton(title, fn, scope, className) { - this.title = title || null; - this.fn = fn || function(){}; - this.scope = scope || null; - this.className = className || null; -} -jsButton.prototype.draw = function() { - if (!this.scope) return null; - - var button = document.createElement('button'); - button.setAttribute('type','button'); - if (this.className) button.className = this.className; - button.title = this.title; - var span = document.createElement('span'); - span.appendChild(document.createTextNode(this.title)); - button.appendChild(span); - - if (this.icon != undefined) { - button.style.backgroundImage = 'url('+this.icon+')'; - } - if (typeof(this.fn) == 'function') { - var This = this; - button.onclick = function() { try { This.fn.apply(This.scope, arguments) } catch (e) {} return false; }; - } - return button; -} - -function jsSpace(id) { - this.id = id || null; - this.width = null; -} -jsSpace.prototype.draw = function() { - var span = document.createElement('span'); - if (this.id) span.id = this.id; - span.appendChild(document.createTextNode(String.fromCharCode(160))); - span.className = 'jstSpacer'; - if (this.width) span.style.marginRight = this.width+'px'; - - return span; -} - -function jsCombo(title, options, scope, fn, className) { - this.title = title || null; - this.options = options || null; - this.scope = scope || null; - this.fn = fn || function(){}; - this.className = className || null; -} -jsCombo.prototype.draw = function() { - if (!this.scope || !this.options) return null; - - var select = document.createElement('select'); - if (this.className) select.className = className; - select.title = this.title; - - for (var o in this.options) { - //var opt = this.options[o]; - var option = document.createElement('option'); - option.value = o; - option.appendChild(document.createTextNode(this.options[o])); - select.appendChild(option); - } - - var This = this; - select.onchange = function() { - try { - This.fn.call(This.scope, this.value); - } catch (e) { alert(e); } - - return false; - } - - return select; -} - - -jsToolBar.prototype = { - base_url: '', - mode: 'wiki', - elements: {}, - - getMode: function() { - return this.mode; - }, - - setMode: function(mode) { - this.mode = mode || 'wiki'; - }, - - switchMode: function(mode) { - mode = mode || 'wiki'; - this.draw(mode); - }, - - button: function(toolName) { - var tool = this.elements[toolName]; - if (typeof tool.fn[this.mode] != 'function') return null; - var b = new jsButton(tool.title, tool.fn[this.mode], this, 'jstb_'+toolName); - if (tool.icon != undefined) b.icon = tool.icon; - return b; - }, - space: function(toolName) { - var tool = new jsSpace(toolName) - if (this.elements[toolName].width !== undefined) - tool.width = this.elements[toolName].width; - return tool; - }, - combo: function(toolName) { - var tool = this.elements[toolName]; - var length = tool[this.mode].list.length; - - if (typeof tool[this.mode].fn != 'function' || length == 0) { - return null; - } else { - var options = {}; - for (var i=0; i < length; i++) { - var opt = tool[this.mode].list[i]; - options[opt] = tool.options[opt]; - } - return new jsCombo(tool.title, options, this, tool[this.mode].fn); - } - }, - draw: function(mode) { - this.setMode(mode); - - // Empty toolbar - while (this.toolbar.hasChildNodes()) { - this.toolbar.removeChild(this.toolbar.firstChild) - } - this.toolNodes = {}; // vide les raccourcis DOM/**/ - - // Draw toolbar elements - var b, tool, newTool; - - for (var i in this.elements) { - b = this.elements[i]; - - var disabled = - b.type == undefined || b.type == '' - || (b.disabled != undefined && b.disabled) - || (b.context != undefined && b.context != null && b.context != this.context); - - if (!disabled && typeof this[b.type] == 'function') { - tool = this[b.type](i); - if (tool) newTool = tool.draw(); - if (newTool) { - this.toolNodes[i] = newTool; //mémorise l'accès DOM pour usage éventuel ultérieur - this.toolbar.appendChild(newTool); - } - } - } - }, - - singleTag: function(stag,etag) { - stag = stag || null; - etag = etag || stag; - - if (!stag || !etag) { return; } - - this.encloseSelection(stag,etag); - }, - - encloseSelection: function(prefix, suffix, fn) { - this.textarea.focus(); - - prefix = prefix || ''; - suffix = suffix || ''; - - var start, end, sel, scrollPos, subst, res; - - if (typeof(document["selection"]) != "undefined") { - sel = document.selection.createRange().text; - } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { - start = this.textarea.selectionStart; - end = this.textarea.selectionEnd; - scrollPos = this.textarea.scrollTop; - sel = this.textarea.value.substring(start, end); - } - - if (sel.match(/ $/)) { // exclude ending space char, if any - sel = sel.substring(0, sel.length - 1); - suffix = suffix + " "; - } - - if (typeof(fn) == 'function') { - res = (sel) ? fn.call(this,sel) : fn(''); - } else { - res = (sel) ? sel : ''; - } - - subst = prefix + res + suffix; - - if (typeof(document["selection"]) != "undefined") { - var range = document.selection.createRange().text = subst; - this.textarea.caretPos -= suffix.length; - } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { - this.textarea.value = this.textarea.value.substring(0, start) + subst + - this.textarea.value.substring(end); - if (sel) { - this.textarea.setSelectionRange(start + subst.length, start + subst.length); - } else { - this.textarea.setSelectionRange(start + prefix.length, start + prefix.length); - } - this.textarea.scrollTop = scrollPos; - } - }, - - stripBaseURL: function(url) { - if (this.base_url != '') { - var pos = url.indexOf(this.base_url); - if (pos == 0) { - url = url.substr(this.base_url.length); - } - } - - return url; - } -}; - -/** Resizer --------------------------------------------------------- */ -jsToolBar.prototype.resizeSetStartH = function() { - this.dragStartH = this.textarea.offsetHeight + 0; -}; -jsToolBar.prototype.resizeDragStart = function(event) { - var This = this; - this.dragStartY = event.clientY; - this.resizeSetStartH(); - document.addEventListener('mousemove', this.dragMoveHdlr=function(event){This.resizeDragMove(event);}, false); - document.addEventListener('mouseup', this.dragStopHdlr=function(event){This.resizeDragStop(event);}, false); -}; - -jsToolBar.prototype.resizeDragMove = function(event) { - this.textarea.style.height = (this.dragStartH+event.clientY-this.dragStartY)+'px'; -}; - -jsToolBar.prototype.resizeDragStop = function(event) { - document.removeEventListener('mousemove', this.dragMoveHdlr, false); - document.removeEventListener('mouseup', this.dragStopHdlr, false); -}; - -// Elements definition ------------------------------------ - -// strong -jsToolBar.prototype.elements.strong = { - type: 'button', - title: 'Strong emphasis', - fn: { - wiki: function() { this.singleTag('*') } - } -} - -// em -jsToolBar.prototype.elements.em = { - type: 'button', - title: 'Emphasis', - fn: { - wiki: function() { this.singleTag("_") } - } -} - -// ins -jsToolBar.prototype.elements.ins = { - type: 'button', - title: 'Inserted', - fn: { - wiki: function() { this.singleTag('+') } - } -} - -// del -jsToolBar.prototype.elements.del = { - type: 'button', - title: 'Deleted', - fn: { - wiki: function() { this.singleTag('-') } - } -} - -// quote -jsToolBar.prototype.elements.quote = { - type: 'button', - title: 'Inline quote', - fn: { - wiki: function() { this.singleTag('??') } - } -} - -// code -jsToolBar.prototype.elements.code = { - type: 'button', - title: 'Code', - fn: { - wiki: function() { this.singleTag('@') } - } -} - -// spacer -jsToolBar.prototype.elements.space1 = {type: 'space'} - -// heading -jsToolBar.prototype.elements.heading = { - type: 'button', - title: 'Heading', - fn: { - wiki: function() { - this.encloseSelection('','',function(str) { - str = str.replace(/\r/g,''); - return 'h2. '+str.replace(/\n/g,"\n* "); - }); - } - } -} - -// br -//jsToolBar.prototype.elements.br = { -// type: 'button', -// title: 'Line break', -// fn: { -// wiki: function() { this.encloseSelection("%%%\n",'') } -// } -//} - -// spacer -jsToolBar.prototype.elements.space2 = {type: 'space'} - -// ul -jsToolBar.prototype.elements.ul = { - type: 'button', - title: 'Unordered list', - fn: { - wiki: function() { - this.encloseSelection('','',function(str) { - str = str.replace(/\r/g,''); - return '* '+str.replace(/\n/g,"\n* "); - }); - } - } -} - -// ol -jsToolBar.prototype.elements.ol = { - type: 'button', - title: 'Ordered list', - fn: { - wiki: function() { - this.encloseSelection('','',function(str) { - str = str.replace(/\r/g,''); - return '# '+str.replace(/\n/g,"\n# "); - }); - } - } -} - -// spacer -jsToolBar.prototype.elements.space3 = {type: 'space'} - -// link -/* -jsToolBar.prototype.elements.link = { - type: 'button', - title: 'Link', - fn: {}, - href_prompt: 'Please give page URL:', - hreflang_prompt: 'Language of this page:', - default_hreflang: '', - prompt: function(href,hreflang) { - href = href || ''; - hreflang = hreflang || this.elements.link.default_hreflang; - - href = window.prompt(this.elements.link.href_prompt,href); - if (!href) { return false; } - - hreflang = "" - - return { href: this.stripBaseURL(href), hreflang: hreflang }; - } -} - -jsToolBar.prototype.elements.link.fn.wiki = function() { - var link = this.elements.link.prompt.call(this); - if (link) { - var stag = '"'; - var etag = '":'+link.href; - this.encloseSelection(stag,etag); - } -}; -*/ -// link or wiki page -jsToolBar.prototype.elements.link = { - type: 'button', - title: 'Link', - fn: { - wiki: function() { this.encloseSelection("[[", "]]") } - } -} +/* ***** BEGIN LICENSE BLOCK ***** + * This file is part of DotClear. + * Copyright (c) 2005 Nicolas Martin & Olivier Meunier and contributors. All + * rights reserved. + * + * DotClear 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. + * + * DotClear 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 DotClear; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * ***** END LICENSE BLOCK ***** +*/ + +/* Modified by JP LANG for textile formatting */ + +function jsToolBar(textarea) { + if (!document.createElement) { return; } + + if (!textarea) { return; } + + if ((typeof(document["selection"]) == "undefined") + && (typeof(textarea["setSelectionRange"]) == "undefined")) { + return; + } + + this.textarea = textarea; + + this.editor = document.createElement('div'); + this.editor.className = 'jstEditor'; + + this.textarea.parentNode.insertBefore(this.editor,this.textarea); + this.editor.appendChild(this.textarea); + + this.toolbar = document.createElement("div"); + this.toolbar.className = 'jstElements'; + this.editor.parentNode.insertBefore(this.toolbar,this.editor); + + // Dragable resizing (only for gecko) + if (this.editor.addEventListener) + { + this.handle = document.createElement('div'); + this.handle.className = 'jstHandle'; + var dragStart = this.resizeDragStart; + var This = this; + this.handle.addEventListener('mousedown',function(event) { dragStart.call(This,event); },false); + // fix memory leak in Firefox (bug #241518) + window.addEventListener('unload',function() { + var del = This.handle.parentNode.removeChild(This.handle); + delete(This.handle); + },false); + + this.editor.parentNode.insertBefore(this.handle,this.editor.nextSibling); + } + + this.context = null; + this.toolNodes = {}; // lorsque la toolbar est dessinée , cet objet est garni + // de raccourcis vers les éléments DOM correspondants aux outils. +} + +function jsButton(title, fn, scope, className) { + this.title = title || null; + this.fn = fn || function(){}; + this.scope = scope || null; + this.className = className || null; +} +jsButton.prototype.draw = function() { + if (!this.scope) return null; + + var button = document.createElement('button'); + button.setAttribute('type','button'); + if (this.className) button.className = this.className; + button.title = this.title; + var span = document.createElement('span'); + span.appendChild(document.createTextNode(this.title)); + button.appendChild(span); + + if (this.icon != undefined) { + button.style.backgroundImage = 'url('+this.icon+')'; + } + if (typeof(this.fn) == 'function') { + var This = this; + button.onclick = function() { try { This.fn.apply(This.scope, arguments) } catch (e) {} return false; }; + } + return button; +} + +function jsSpace(id) { + this.id = id || null; + this.width = null; +} +jsSpace.prototype.draw = function() { + var span = document.createElement('span'); + if (this.id) span.id = this.id; + span.appendChild(document.createTextNode(String.fromCharCode(160))); + span.className = 'jstSpacer'; + if (this.width) span.style.marginRight = this.width+'px'; + + return span; +} + +function jsCombo(title, options, scope, fn, className) { + this.title = title || null; + this.options = options || null; + this.scope = scope || null; + this.fn = fn || function(){}; + this.className = className || null; +} +jsCombo.prototype.draw = function() { + if (!this.scope || !this.options) return null; + + var select = document.createElement('select'); + if (this.className) select.className = className; + select.title = this.title; + + for (var o in this.options) { + //var opt = this.options[o]; + var option = document.createElement('option'); + option.value = o; + option.appendChild(document.createTextNode(this.options[o])); + select.appendChild(option); + } + + var This = this; + select.onchange = function() { + try { + This.fn.call(This.scope, this.value); + } catch (e) { alert(e); } + + return false; + } + + return select; +} + + +jsToolBar.prototype = { + base_url: '', + mode: 'wiki', + elements: {}, + + getMode: function() { + return this.mode; + }, + + setMode: function(mode) { + this.mode = mode || 'wiki'; + }, + + switchMode: function(mode) { + mode = mode || 'wiki'; + this.draw(mode); + }, + + button: function(toolName) { + var tool = this.elements[toolName]; + if (typeof tool.fn[this.mode] != 'function') return null; + var b = new jsButton(tool.title, tool.fn[this.mode], this, 'jstb_'+toolName); + if (tool.icon != undefined) b.icon = tool.icon; + return b; + }, + space: function(toolName) { + var tool = new jsSpace(toolName) + if (this.elements[toolName].width !== undefined) + tool.width = this.elements[toolName].width; + return tool; + }, + combo: function(toolName) { + var tool = this.elements[toolName]; + var length = tool[this.mode].list.length; + + if (typeof tool[this.mode].fn != 'function' || length == 0) { + return null; + } else { + var options = {}; + for (var i=0; i < length; i++) { + var opt = tool[this.mode].list[i]; + options[opt] = tool.options[opt]; + } + return new jsCombo(tool.title, options, this, tool[this.mode].fn); + } + }, + draw: function(mode) { + this.setMode(mode); + + // Empty toolbar + while (this.toolbar.hasChildNodes()) { + this.toolbar.removeChild(this.toolbar.firstChild) + } + this.toolNodes = {}; // vide les raccourcis DOM/**/ + + // Draw toolbar elements + var b, tool, newTool; + + for (var i in this.elements) { + b = this.elements[i]; + + var disabled = + b.type == undefined || b.type == '' + || (b.disabled != undefined && b.disabled) + || (b.context != undefined && b.context != null && b.context != this.context); + + if (!disabled && typeof this[b.type] == 'function') { + tool = this[b.type](i); + if (tool) newTool = tool.draw(); + if (newTool) { + this.toolNodes[i] = newTool; //mémorise l'accès DOM pour usage éventuel ultérieur + this.toolbar.appendChild(newTool); + } + } + } + }, + + singleTag: function(stag,etag) { + stag = stag || null; + etag = etag || stag; + + if (!stag || !etag) { return; } + + this.encloseSelection(stag,etag); + }, + + encloseSelection: function(prefix, suffix, fn) { + this.textarea.focus(); + + prefix = prefix || ''; + suffix = suffix || ''; + + var start, end, sel, scrollPos, subst, res; + + if (typeof(document["selection"]) != "undefined") { + sel = document.selection.createRange().text; + } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { + start = this.textarea.selectionStart; + end = this.textarea.selectionEnd; + scrollPos = this.textarea.scrollTop; + sel = this.textarea.value.substring(start, end); + } + + if (sel.match(/ $/)) { // exclude ending space char, if any + sel = sel.substring(0, sel.length - 1); + suffix = suffix + " "; + } + + if (typeof(fn) == 'function') { + res = (sel) ? fn.call(this,sel) : fn(''); + } else { + res = (sel) ? sel : ''; + } + + subst = prefix + res + suffix; + + if (typeof(document["selection"]) != "undefined") { + var range = document.selection.createRange().text = subst; + this.textarea.caretPos -= suffix.length; + } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { + this.textarea.value = this.textarea.value.substring(0, start) + subst + + this.textarea.value.substring(end); + if (sel) { + this.textarea.setSelectionRange(start + subst.length, start + subst.length); + } else { + this.textarea.setSelectionRange(start + prefix.length, start + prefix.length); + } + this.textarea.scrollTop = scrollPos; + } + }, + + stripBaseURL: function(url) { + if (this.base_url != '') { + var pos = url.indexOf(this.base_url); + if (pos == 0) { + url = url.substr(this.base_url.length); + } + } + + return url; + } +}; + +/** Resizer +-------------------------------------------------------- */ +jsToolBar.prototype.resizeSetStartH = function() { + this.dragStartH = this.textarea.offsetHeight + 0; +}; +jsToolBar.prototype.resizeDragStart = function(event) { + var This = this; + this.dragStartY = event.clientY; + this.resizeSetStartH(); + document.addEventListener('mousemove', this.dragMoveHdlr=function(event){This.resizeDragMove(event);}, false); + document.addEventListener('mouseup', this.dragStopHdlr=function(event){This.resizeDragStop(event);}, false); +}; + +jsToolBar.prototype.resizeDragMove = function(event) { + this.textarea.style.height = (this.dragStartH+event.clientY-this.dragStartY)+'px'; +}; + +jsToolBar.prototype.resizeDragStop = function(event) { + document.removeEventListener('mousemove', this.dragMoveHdlr, false); + document.removeEventListener('mouseup', this.dragStopHdlr, false); +}; + +// Elements definition ------------------------------------ + +// strong +jsToolBar.prototype.elements.strong = { + type: 'button', + title: 'Strong emphasis', + fn: { + wiki: function() { this.singleTag('*') } + } +} + +// em +jsToolBar.prototype.elements.em = { + type: 'button', + title: 'Emphasis', + fn: { + wiki: function() { this.singleTag("_") } + } +} + +// ins +jsToolBar.prototype.elements.ins = { + type: 'button', + title: 'Inserted', + fn: { + wiki: function() { this.singleTag('+') } + } +} + +// del +jsToolBar.prototype.elements.del = { + type: 'button', + title: 'Deleted', + fn: { + wiki: function() { this.singleTag('-') } + } +} + +// quote +jsToolBar.prototype.elements.quote = { + type: 'button', + title: 'Inline quote', + fn: { + wiki: function() { this.singleTag('??') } + } +} + +// code +jsToolBar.prototype.elements.code = { + type: 'button', + title: 'Code', + fn: { + wiki: function() { this.singleTag('@') } + } +} + +// spacer +jsToolBar.prototype.elements.space1 = {type: 'space'} + +// heading +jsToolBar.prototype.elements.heading = { + type: 'button', + title: 'Heading', + fn: { + wiki: function() { + this.encloseSelection('','',function(str) { + str = str.replace(/\r/g,''); + return 'h2. '+str.replace(/\n/g,"\n* "); + }); + } + } +} + +// br +//jsToolBar.prototype.elements.br = { +// type: 'button', +// title: 'Line break', +// fn: { +// wiki: function() { this.encloseSelection("%%%\n",'') } +// } +//} + +// spacer +jsToolBar.prototype.elements.space2 = {type: 'space'} + +// ul +jsToolBar.prototype.elements.ul = { + type: 'button', + title: 'Unordered list', + fn: { + wiki: function() { + this.encloseSelection('','',function(str) { + str = str.replace(/\r/g,''); + return '* '+str.replace(/\n/g,"\n* "); + }); + } + } +} + +// ol +jsToolBar.prototype.elements.ol = { + type: 'button', + title: 'Ordered list', + fn: { + wiki: function() { + this.encloseSelection('','',function(str) { + str = str.replace(/\r/g,''); + return '# '+str.replace(/\n/g,"\n# "); + }); + } + } +} + +// spacer +jsToolBar.prototype.elements.space3 = {type: 'space'} + +// link +/* +jsToolBar.prototype.elements.link = { + type: 'button', + title: 'Link', + fn: {}, + href_prompt: 'Please give page URL:', + hreflang_prompt: 'Language of this page:', + default_hreflang: '', + prompt: function(href,hreflang) { + href = href || ''; + hreflang = hreflang || this.elements.link.default_hreflang; + + href = window.prompt(this.elements.link.href_prompt,href); + if (!href) { return false; } + + hreflang = "" + + return { href: this.stripBaseURL(href), hreflang: hreflang }; + } +} + +jsToolBar.prototype.elements.link.fn.wiki = function() { + var link = this.elements.link.prompt.call(this); + if (link) { + var stag = '"'; + var etag = '":'+link.href; + this.encloseSelection(stag,etag); + } +}; +*/ +// link or wiki page +jsToolBar.prototype.elements.link = { + type: 'button', + title: 'Link', + fn: { + wiki: function() { this.encloseSelection("[[", "]]") } + } +} diff --git a/public/javascripts/menu.js b/public/javascripts/menu.js index bf5612dd..b3d3891b 100644 --- a/public/javascripts/menu.js +++ b/public/javascripts/menu.js @@ -1,556 +1,556 @@ -//***************************************************************************** -// Do not remove this notice. -// -// Copyright 2000-2004 by Mike Hall. -// See http://www.brainjar.com for terms of use. -//***************************************************************************** - -//---------------------------------------------------------------------------- -// Emulation de la fonction push pour IE5.0 -//---------------------------------------------------------------------------- -if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0;i-1 && ua.indexOf("Mac")>-1) { - this.isIE5mac = true; - this.version = ""; - return; - } - //-- fin ajout ci ---- - - s = "Opera"; - if ((i = ua.indexOf(s)) >= 0) { - this.isOP = true; - this.version = parseFloat(ua.substr(i + s.length)); - return; - } - - s = "Netscape6/"; - if ((i = ua.indexOf(s)) >= 0) { - this.isNS = true; - this.version = parseFloat(ua.substr(i + s.length)); - return; - } - - // Treat any other "Gecko" browser as Netscape 6.1. - - s = "Gecko"; - if ((i = ua.indexOf(s)) >= 0) { - this.isNS = true; - this.version = 6.1; - return; - } - - s = "MSIE"; - if ((i = ua.indexOf(s))) { - this.isIE = true; - this.version = parseFloat(ua.substr(i + s.length)); - return; - } -} - -var browser = new Browser(); - -//---------------------------------------------------------------------------- -// Code for handling the menu bar and active button. -//---------------------------------------------------------------------------- - -var activeButton = null; - - -function buttonClick(event, menuId) { - - var button; - - // Get the target button element. - - if (browser.isIE) - button = window.event.srcElement; - else - button = event.currentTarget; - - // Blur focus from the link to remove that annoying outline. - - button.blur(); - - // Associate the named menu to this button if not already done. - // Additionally, initialize menu display. - - if (button.menu == null) { - button.menu = document.getElementById(menuId); - if (button.menu.isInitialized == null) - menuInit(button.menu); - } - - // Set mouseout event handler for the button, if not already done. - - if (button.onmouseout == null) - button.onmouseout = buttonOrMenuMouseout; - - // Exit if this button is the currently active one. - - if (button == activeButton) - return false; - - // Reset the currently active button, if any. - - if (activeButton != null) - resetButton(activeButton); - - // Activate this button, unless it was the currently active one. - - if (button != activeButton) { - depressButton(button); - activeButton = button; - } - else - activeButton = null; - - return false; -} - -function buttonMouseover(event, menuId) { - - var button; -//-- debut ajout ci ---- - if (!browser.isIE5mac) { - //-- fin ajout ci ---- - -//-- debut ajout ci ---- - cicacheselect(); -//-- fin ajout ci ---- - - // Activates this button's menu if no other is currently active. - - if (activeButton == null) { - buttonClick(event, menuId); - return; - } - - // Find the target button element. - - if (browser.isIE) - button = window.event.srcElement; - else - button = event.currentTarget; - - // If any other button menu is active, make this one active instead. - - if (activeButton != null && activeButton != button) - buttonClick(event, menuId); - //-- debut ajout ci ---- - } - //-- fin ajout ci ---- - -} - -function depressButton(button) { - - var x, y; - - // Update the button's style class to make it look like it's - // depressed. - - button.className += " menuButtonActive"; - - // Set mouseout event handler for the button, if not already done. - - if (button.onmouseout == null) - button.onmouseout = buttonOrMenuMouseout; - if (button.menu.onmouseout == null) - button.menu.onmouseout = buttonOrMenuMouseout; - - // Position the associated drop down menu under the button and - // show it. - - x = getPageOffsetLeft(button); - y = getPageOffsetTop(button) + button.offsetHeight - 1; - - // For IE, adjust position. - - if (browser.isIE) { - x += button.offsetParent.clientLeft; - y += button.offsetParent.clientTop; - } - - button.menu.style.left = x + "px"; - button.menu.style.top = y + "px";0 - button.menu.style.visibility = "visible"; -} - -function resetButton(button) { - - // Restore the button's style class. - - removeClassName(button, "menuButtonActive"); - - // Hide the button's menu, first closing any sub menus. - - if (button.menu != null) { - closeSubMenu(button.menu); - button.menu.style.visibility = "hidden"; - } -} - -//---------------------------------------------------------------------------- -// Code to handle the menus and sub menus. -//---------------------------------------------------------------------------- - -function menuMouseover(event) { - - var menu; - //-- debut ajout ci ---- - if (!browser.isIE5mac) { - //-- fin ajout ci ---- -//-- debut ajout ci ---- - cicacheselect(); -//-- fin ajout ci ---- - - // Find the target menu element. - if (browser.isIE) - menu = getContainerWith(window.event.srcElement, "DIV", "menu"); - else - menu = event.currentTarget; - - // Close any active sub menu. - - if (menu.activeItem != null) - closeSubMenu(menu); - //-- debut ajout ci ---- - } - //-- fin ajout ci ---- -} - -function menuItemMouseover(event, menuId) { - - var item, menu, x, y; -//-- debut ajout ci ---- - cicacheselect(); -//-- fin ajout ci ---- - - // Find the target item element and its parent menu element. - - if (browser.isIE) - item = getContainerWith(window.event.srcElement, "A", "menuItem"); - else - item = event.currentTarget; - menu = getContainerWith(item, "DIV", "menu"); - - // Close any active sub menu and mark this one as active. - - if (menu.activeItem != null) - closeSubMenu(menu); - menu.activeItem = item; - - // Highlight the item element. - - item.className += " menuItemHighlight"; - - // Initialize the sub menu, if not already done. - - if (item.subMenu == null) { - item.subMenu = document.getElementById(menuId); - if (item.subMenu.isInitialized == null) - menuInit(item.subMenu); - } - - // Set mouseout event handler for the sub menu, if not already done. - - if (item.subMenu.onmouseout == null) - item.subMenu.onmouseout = buttonOrMenuMouseout; - - // Get position for submenu based on the menu item. - - x = getPageOffsetLeft(item) + item.offsetWidth; - y = getPageOffsetTop(item); - - // Adjust position to fit in view. - - var maxX, maxY; - - if (browser.isIE) { - maxX = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) + - (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth : document.body.clientWidth); - maxY = Math.max(document.documentElement.scrollTop, document.body.scrollTop) + - (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight); - } - if (browser.isOP) { - maxX = document.documentElement.scrollLeft + window.innerWidth; - maxY = document.documentElement.scrollTop + window.innerHeight; - } - if (browser.isNS) { - maxX = window.scrollX + window.innerWidth; - maxY = window.scrollY + window.innerHeight; - } - maxX -= item.subMenu.offsetWidth; - maxY -= item.subMenu.offsetHeight; - - if (x > maxX) - x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth - + (menu.offsetWidth - item.offsetWidth)); - y = Math.max(0, Math.min(y, maxY)); - - // Position and show the sub menu. - - item.subMenu.style.left = x + "px"; - item.subMenu.style.top = y + "px"; - item.subMenu.style.visibility = "visible"; - - // Stop the event from bubbling. - - if (browser.isIE) - window.event.cancelBubble = true; - else - event.stopPropagation(); -} - -function closeSubMenu(menu) { - - if (menu == null || menu.activeItem == null) - return; - - // Recursively close any sub menus. - - if (menu.activeItem.subMenu != null) { - closeSubMenu(menu.activeItem.subMenu); - menu.activeItem.subMenu.style.visibility = "hidden"; - menu.activeItem.subMenu = null; - } - removeClassName(menu.activeItem, "menuItemHighlight"); - menu.activeItem = null; -} - - -function buttonOrMenuMouseout(event) { - - var el; - - // If there is no active button, exit. - - if (activeButton == null) - return; - - // Find the element the mouse is moving to. - - if (browser.isIE) - el = window.event.toElement; - else if (event.relatedTarget != null) - el = (event.relatedTarget.tagName ? event.relatedTarget : event.relatedTarget.parentNode); - - // If the element is not part of a menu, reset the active button. - - if (getContainerWith(el, "DIV", "menu") == null) { - resetButton(activeButton); - activeButton = null; -//-- debut ajout ci ---- - cimontreselect(); -//-- fin ajout ci ---- - } -} - - -//---------------------------------------------------------------------------- -// Code to initialize menus. -//---------------------------------------------------------------------------- - -function menuInit(menu) { - - var itemList, spanList; - var textEl, arrowEl; - var itemWidth; - var w, dw; - var i, j; - - // For IE, replace arrow characters. - - if (browser.isIE) { - menu.style.lineHeight = "2.5ex"; - spanList = menu.getElementsByTagName("SPAN"); - for (i = 0; i < spanList.length; i++) - if (hasClassName(spanList[i], "menuItemArrow")) { - spanList[i].style.fontFamily = "Webdings"; - spanList[i].firstChild.nodeValue = "4"; - } - } - - // Find the width of a menu item. - - itemList = menu.getElementsByTagName("A"); - if (itemList.length > 0) - itemWidth = itemList[0].offsetWidth; - else - return; - - // For items with arrows, add padding to item text to make the - // arrows flush right. - - for (i = 0; i < itemList.length; i++) { - spanList = itemList[i].getElementsByTagName("SPAN"); - textEl = null; - arrowEl = null; - for (j = 0; j < spanList.length; j++) { - if (hasClassName(spanList[j], "menuItemText")) - textEl = spanList[j]; - if (hasClassName(spanList[j], "menuItemArrow")) - arrowEl = spanList[j]; - } - if (textEl != null && arrowEl != null) { - textEl.style.paddingRight = (itemWidth - - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px"; - // For Opera, remove the negative right margin to fix a display bug. - if (browser.isOP) - arrowEl.style.marginRight = "0px"; - } - } - - // Fix IE hover problem by setting an explicit width on first item of - // the menu. - - if (browser.isIE) { - w = itemList[0].offsetWidth; - itemList[0].style.width = w + "px"; - dw = itemList[0].offsetWidth - w; - w -= dw; - itemList[0].style.width = w + "px"; - } - - // Mark menu as initialized. - - menu.isInitialized = true; -} - -//---------------------------------------------------------------------------- -// General utility functions. -//---------------------------------------------------------------------------- - -function getContainerWith(node, tagName, className) { - - // Starting with the given node, find the nearest containing element - // with the specified tag name and style class. - - while (node != null) { - if (node.tagName != null && node.tagName == tagName && - hasClassName(node, className)) - return node; - node = node.parentNode; - } - - return node; -} - -function hasClassName(el, name) { - - var i, list; - - // Return true if the given element currently has the given class - // name. - - list = el.className.split(" "); - for (i = 0; i < list.length; i++) - if (list[i] == name) - return true; - - return false; -} - -function removeClassName(el, name) { - - var i, curList, newList; - - if (el.className == null) - return; - - // Remove the given class name from the element's className property. - - newList = new Array(); - curList = el.className.split(" "); - for (i = 0; i < curList.length; i++) - if (curList[i] != name) - newList.push(curList[i]); - el.className = newList.join(" "); -} - -function getPageOffsetLeft(el) { - - var x; - - // Return the x coordinate of an element relative to the page. - - x = el.offsetLeft; - if (el.offsetParent != null) - x += getPageOffsetLeft(el.offsetParent); - - return x; -} - -function getPageOffsetTop(el) { - - var y; - - // Return the x coordinate of an element relative to the page. - - y = el.offsetTop; - if (el.offsetParent != null) - y += getPageOffsetTop(el.offsetParent); - - return y; -} - -//-- debut ajout ci ---- -function cicacheselect(){ - if (browser.isIE) { - oSelects = document.getElementsByTagName('SELECT'); - if (oSelects.length > 0) { - for (i = 0; i < oSelects.length; i++) { - oSlt = oSelects[i]; - if (oSlt.style.visibility != 'hidden') {oSlt.style.visibility = 'hidden';} - } - } - oSelects = document.getElementsByName('masquable'); - if (oSelects.length > 0) { - for (i = 0; i < oSelects.length; i++) { - oSlt = oSelects[i]; - if (oSlt.style.visibility != 'hidden') {oSlt.style.visibility = 'hidden';} - } - } - } -} - -function cimontreselect(){ - if (browser.isIE) { - oSelects = document.getElementsByTagName('SELECT'); - if (oSelects.length > 0) { - for (i = 0; i < oSelects.length; i++) { - oSlt = oSelects[i]; - if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';} - } - } - oSelects = document.getElementsByName('masquable'); - if (oSelects.length > 0) { - for (i = 0; i < oSelects.length; i++) { - oSlt = oSelects[i]; - if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';} - } - } - } -} - -//-- fin ajout ci ---- +//***************************************************************************** +// Do not remove this notice. +// +// Copyright 2000-2004 by Mike Hall. +// See http://www.brainjar.com for terms of use. +//***************************************************************************** + +//---------------------------------------------------------------------------- +// Emulation de la fonction push pour IE5.0 +//---------------------------------------------------------------------------- +if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0;i-1 && ua.indexOf("Mac")>-1) { + this.isIE5mac = true; + this.version = ""; + return; + } + //-- fin ajout ci ---- + + s = "Opera"; + if ((i = ua.indexOf(s)) >= 0) { + this.isOP = true; + this.version = parseFloat(ua.substr(i + s.length)); + return; + } + + s = "Netscape6/"; + if ((i = ua.indexOf(s)) >= 0) { + this.isNS = true; + this.version = parseFloat(ua.substr(i + s.length)); + return; + } + + // Treat any other "Gecko" browser as Netscape 6.1. + + s = "Gecko"; + if ((i = ua.indexOf(s)) >= 0) { + this.isNS = true; + this.version = 6.1; + return; + } + + s = "MSIE"; + if ((i = ua.indexOf(s))) { + this.isIE = true; + this.version = parseFloat(ua.substr(i + s.length)); + return; + } +} + +var browser = new Browser(); + +//---------------------------------------------------------------------------- +// Code for handling the menu bar and active button. +//---------------------------------------------------------------------------- + +var activeButton = null; + + +function buttonClick(event, menuId) { + + var button; + + // Get the target button element. + + if (browser.isIE) + button = window.event.srcElement; + else + button = event.currentTarget; + + // Blur focus from the link to remove that annoying outline. + + button.blur(); + + // Associate the named menu to this button if not already done. + // Additionally, initialize menu display. + + if (button.menu == null) { + button.menu = document.getElementById(menuId); + if (button.menu.isInitialized == null) + menuInit(button.menu); + } + + // Set mouseout event handler for the button, if not already done. + + if (button.onmouseout == null) + button.onmouseout = buttonOrMenuMouseout; + + // Exit if this button is the currently active one. + + if (button == activeButton) + return false; + + // Reset the currently active button, if any. + + if (activeButton != null) + resetButton(activeButton); + + // Activate this button, unless it was the currently active one. + + if (button != activeButton) { + depressButton(button); + activeButton = button; + } + else + activeButton = null; + + return false; +} + +function buttonMouseover(event, menuId) { + + var button; +//-- debut ajout ci ---- + if (!browser.isIE5mac) { + //-- fin ajout ci ---- + +//-- debut ajout ci ---- + cicacheselect(); +//-- fin ajout ci ---- + + // Activates this button's menu if no other is currently active. + + if (activeButton == null) { + buttonClick(event, menuId); + return; + } + + // Find the target button element. + + if (browser.isIE) + button = window.event.srcElement; + else + button = event.currentTarget; + + // If any other button menu is active, make this one active instead. + + if (activeButton != null && activeButton != button) + buttonClick(event, menuId); + //-- debut ajout ci ---- + } + //-- fin ajout ci ---- + +} + +function depressButton(button) { + + var x, y; + + // Update the button's style class to make it look like it's + // depressed. + + button.className += " menuButtonActive"; + + // Set mouseout event handler for the button, if not already done. + + if (button.onmouseout == null) + button.onmouseout = buttonOrMenuMouseout; + if (button.menu.onmouseout == null) + button.menu.onmouseout = buttonOrMenuMouseout; + + // Position the associated drop down menu under the button and + // show it. + + x = getPageOffsetLeft(button); + y = getPageOffsetTop(button) + button.offsetHeight - 1; + + // For IE, adjust position. + + if (browser.isIE) { + x += button.offsetParent.clientLeft; + y += button.offsetParent.clientTop; + } + + button.menu.style.left = x + "px"; + button.menu.style.top = y + "px";0 + button.menu.style.visibility = "visible"; +} + +function resetButton(button) { + + // Restore the button's style class. + + removeClassName(button, "menuButtonActive"); + + // Hide the button's menu, first closing any sub menus. + + if (button.menu != null) { + closeSubMenu(button.menu); + button.menu.style.visibility = "hidden"; + } +} + +//---------------------------------------------------------------------------- +// Code to handle the menus and sub menus. +//---------------------------------------------------------------------------- + +function menuMouseover(event) { + + var menu; + //-- debut ajout ci ---- + if (!browser.isIE5mac) { + //-- fin ajout ci ---- +//-- debut ajout ci ---- + cicacheselect(); +//-- fin ajout ci ---- + + // Find the target menu element. + if (browser.isIE) + menu = getContainerWith(window.event.srcElement, "DIV", "menu"); + else + menu = event.currentTarget; + + // Close any active sub menu. + + if (menu.activeItem != null) + closeSubMenu(menu); + //-- debut ajout ci ---- + } + //-- fin ajout ci ---- +} + +function menuItemMouseover(event, menuId) { + + var item, menu, x, y; +//-- debut ajout ci ---- + cicacheselect(); +//-- fin ajout ci ---- + + // Find the target item element and its parent menu element. + + if (browser.isIE) + item = getContainerWith(window.event.srcElement, "A", "menuItem"); + else + item = event.currentTarget; + menu = getContainerWith(item, "DIV", "menu"); + + // Close any active sub menu and mark this one as active. + + if (menu.activeItem != null) + closeSubMenu(menu); + menu.activeItem = item; + + // Highlight the item element. + + item.className += " menuItemHighlight"; + + // Initialize the sub menu, if not already done. + + if (item.subMenu == null) { + item.subMenu = document.getElementById(menuId); + if (item.subMenu.isInitialized == null) + menuInit(item.subMenu); + } + + // Set mouseout event handler for the sub menu, if not already done. + + if (item.subMenu.onmouseout == null) + item.subMenu.onmouseout = buttonOrMenuMouseout; + + // Get position for submenu based on the menu item. + + x = getPageOffsetLeft(item) + item.offsetWidth; + y = getPageOffsetTop(item); + + // Adjust position to fit in view. + + var maxX, maxY; + + if (browser.isIE) { + maxX = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) + + (document.documentElement.clientWidth != 0 ? document.documentElement.clientWidth : document.body.clientWidth); + maxY = Math.max(document.documentElement.scrollTop, document.body.scrollTop) + + (document.documentElement.clientHeight != 0 ? document.documentElement.clientHeight : document.body.clientHeight); + } + if (browser.isOP) { + maxX = document.documentElement.scrollLeft + window.innerWidth; + maxY = document.documentElement.scrollTop + window.innerHeight; + } + if (browser.isNS) { + maxX = window.scrollX + window.innerWidth; + maxY = window.scrollY + window.innerHeight; + } + maxX -= item.subMenu.offsetWidth; + maxY -= item.subMenu.offsetHeight; + + if (x > maxX) + x = Math.max(0, x - item.offsetWidth - item.subMenu.offsetWidth + + (menu.offsetWidth - item.offsetWidth)); + y = Math.max(0, Math.min(y, maxY)); + + // Position and show the sub menu. + + item.subMenu.style.left = x + "px"; + item.subMenu.style.top = y + "px"; + item.subMenu.style.visibility = "visible"; + + // Stop the event from bubbling. + + if (browser.isIE) + window.event.cancelBubble = true; + else + event.stopPropagation(); +} + +function closeSubMenu(menu) { + + if (menu == null || menu.activeItem == null) + return; + + // Recursively close any sub menus. + + if (menu.activeItem.subMenu != null) { + closeSubMenu(menu.activeItem.subMenu); + menu.activeItem.subMenu.style.visibility = "hidden"; + menu.activeItem.subMenu = null; + } + removeClassName(menu.activeItem, "menuItemHighlight"); + menu.activeItem = null; +} + + +function buttonOrMenuMouseout(event) { + + var el; + + // If there is no active button, exit. + + if (activeButton == null) + return; + + // Find the element the mouse is moving to. + + if (browser.isIE) + el = window.event.toElement; + else if (event.relatedTarget != null) + el = (event.relatedTarget.tagName ? event.relatedTarget : event.relatedTarget.parentNode); + + // If the element is not part of a menu, reset the active button. + + if (getContainerWith(el, "DIV", "menu") == null) { + resetButton(activeButton); + activeButton = null; +//-- debut ajout ci ---- + cimontreselect(); +//-- fin ajout ci ---- + } +} + + +//---------------------------------------------------------------------------- +// Code to initialize menus. +//---------------------------------------------------------------------------- + +function menuInit(menu) { + + var itemList, spanList; + var textEl, arrowEl; + var itemWidth; + var w, dw; + var i, j; + + // For IE, replace arrow characters. + + if (browser.isIE) { + menu.style.lineHeight = "2.5ex"; + spanList = menu.getElementsByTagName("SPAN"); + for (i = 0; i < spanList.length; i++) + if (hasClassName(spanList[i], "menuItemArrow")) { + spanList[i].style.fontFamily = "Webdings"; + spanList[i].firstChild.nodeValue = "4"; + } + } + + // Find the width of a menu item. + + itemList = menu.getElementsByTagName("A"); + if (itemList.length > 0) + itemWidth = itemList[0].offsetWidth; + else + return; + + // For items with arrows, add padding to item text to make the + // arrows flush right. + + for (i = 0; i < itemList.length; i++) { + spanList = itemList[i].getElementsByTagName("SPAN"); + textEl = null; + arrowEl = null; + for (j = 0; j < spanList.length; j++) { + if (hasClassName(spanList[j], "menuItemText")) + textEl = spanList[j]; + if (hasClassName(spanList[j], "menuItemArrow")) + arrowEl = spanList[j]; + } + if (textEl != null && arrowEl != null) { + textEl.style.paddingRight = (itemWidth + - (textEl.offsetWidth + arrowEl.offsetWidth)) + "px"; + // For Opera, remove the negative right margin to fix a display bug. + if (browser.isOP) + arrowEl.style.marginRight = "0px"; + } + } + + // Fix IE hover problem by setting an explicit width on first item of + // the menu. + + if (browser.isIE) { + w = itemList[0].offsetWidth; + itemList[0].style.width = w + "px"; + dw = itemList[0].offsetWidth - w; + w -= dw; + itemList[0].style.width = w + "px"; + } + + // Mark menu as initialized. + + menu.isInitialized = true; +} + +//---------------------------------------------------------------------------- +// General utility functions. +//---------------------------------------------------------------------------- + +function getContainerWith(node, tagName, className) { + + // Starting with the given node, find the nearest containing element + // with the specified tag name and style class. + + while (node != null) { + if (node.tagName != null && node.tagName == tagName && + hasClassName(node, className)) + return node; + node = node.parentNode; + } + + return node; +} + +function hasClassName(el, name) { + + var i, list; + + // Return true if the given element currently has the given class + // name. + + list = el.className.split(" "); + for (i = 0; i < list.length; i++) + if (list[i] == name) + return true; + + return false; +} + +function removeClassName(el, name) { + + var i, curList, newList; + + if (el.className == null) + return; + + // Remove the given class name from the element's className property. + + newList = new Array(); + curList = el.className.split(" "); + for (i = 0; i < curList.length; i++) + if (curList[i] != name) + newList.push(curList[i]); + el.className = newList.join(" "); +} + +function getPageOffsetLeft(el) { + + var x; + + // Return the x coordinate of an element relative to the page. + + x = el.offsetLeft; + if (el.offsetParent != null) + x += getPageOffsetLeft(el.offsetParent); + + return x; +} + +function getPageOffsetTop(el) { + + var y; + + // Return the x coordinate of an element relative to the page. + + y = el.offsetTop; + if (el.offsetParent != null) + y += getPageOffsetTop(el.offsetParent); + + return y; +} + +//-- debut ajout ci ---- +function cicacheselect(){ + if (browser.isIE) { + oSelects = document.getElementsByTagName('SELECT'); + if (oSelects.length > 0) { + for (i = 0; i < oSelects.length; i++) { + oSlt = oSelects[i]; + if (oSlt.style.visibility != 'hidden') {oSlt.style.visibility = 'hidden';} + } + } + oSelects = document.getElementsByName('masquable'); + if (oSelects.length > 0) { + for (i = 0; i < oSelects.length; i++) { + oSlt = oSelects[i]; + if (oSlt.style.visibility != 'hidden') {oSlt.style.visibility = 'hidden';} + } + } + } +} + +function cimontreselect(){ + if (browser.isIE) { + oSelects = document.getElementsByTagName('SELECT'); + if (oSelects.length > 0) { + for (i = 0; i < oSelects.length; i++) { + oSlt = oSelects[i]; + if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';} + } + } + oSelects = document.getElementsByName('masquable'); + if (oSelects.length > 0) { + for (i = 0; i < oSelects.length; i++) { + oSlt = oSelects[i]; + if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';} + } + } + } +} + +//-- fin ajout ci ---- diff --git a/public/manual/en/html.css b/public/manual/en/html.css index 1c4e949f..c5eb0ef9 100644 --- a/public/manual/en/html.css +++ b/public/manual/en/html.css @@ -1,39 +1,39 @@ body { - background: #FFFFFF; + background: #FFFFFF; font: 0.8em Verdana,Tahoma,Arial,sans-serif; } h1, h2, h3, h4, h5 { color: #800000; font-family: sans-serif; -} - -table { - font-size: 1em; } - -a{ -color:#467aa7; -font-weight:bold; -text-decoration:none; -background-color:inherit; -} - -a:hover{ - color: #800000; - text-decoration:underline; - background-color:inherit; -} - -a img{border:none;} - -.screenshot { - text-align: center; -} - -.guilabel { - font-weight: bold; -} + +table { + font-size: 1em; +} + +a{ +color:#467aa7; +font-weight:bold; +text-decoration:none; +background-color:inherit; +} + +a:hover{ + color: #800000; + text-decoration:underline; + background-color:inherit; +} + +a img{border:none;} + +.screenshot { + text-align: center; +} + +.guilabel { + font-weight: bold; +} span.term { font-weight: bold; diff --git a/public/manual/fr/html.css b/public/manual/fr/html.css index 1c4e949f..c5eb0ef9 100644 --- a/public/manual/fr/html.css +++ b/public/manual/fr/html.css @@ -1,39 +1,39 @@ body { - background: #FFFFFF; + background: #FFFFFF; font: 0.8em Verdana,Tahoma,Arial,sans-serif; } h1, h2, h3, h4, h5 { color: #800000; font-family: sans-serif; -} - -table { - font-size: 1em; } - -a{ -color:#467aa7; -font-weight:bold; -text-decoration:none; -background-color:inherit; -} - -a:hover{ - color: #800000; - text-decoration:underline; - background-color:inherit; -} - -a img{border:none;} - -.screenshot { - text-align: center; -} - -.guilabel { - font-weight: bold; -} + +table { + font-size: 1em; +} + +a{ +color:#467aa7; +font-weight:bold; +text-decoration:none; +background-color:inherit; +} + +a:hover{ + color: #800000; + text-decoration:underline; + background-color:inherit; +} + +a img{border:none;} + +.screenshot { + text-align: center; +} + +.guilabel { + font-weight: bold; +} span.term { font-weight: bold; diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 1233231f..185cfa87 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -1,632 +1,632 @@ -/* andreas08 - an open source xhtml/css website layout by Andreas Viklund - http://andreasviklund.com . Free to use in any way and for any purpose as long as the proper credits are given to the original designer. Version: 1.0, November 28, 2005 */ -/* Edited by Jean-Philippe Lang *> -/**************** Body and tag styles ****************/ - -#header * {margin:0; padding:0;} -p, ul, ol, li {margin:0; padding:0;} - -body{ -font:76% Verdana,Tahoma,Arial,sans-serif; -line-height:1.4em; -text-align:center; -color:#303030; -background:#e8eaec; -margin:0; -} - -a{color:#467aa7;font-weight:bold;text-decoration:none;background-color:inherit;} -a:hover{color:#2a5a8a; text-decoration:none; background-color:inherit;} -a img{border:none;} - -p{margin:0 0 1em 0;} -p form{margin-top:0; margin-bottom:20px;} - -img.left,img.center,img.right{padding:4px; border:1px solid #a0a0a0;} -img.left{float:left; margin:0 12px 5px 0;} -img.center{display:block; margin:0 auto 5px auto;} -img.right{float:right; margin:0 0 5px 12px;} - -/**************** Header and navigation styles ****************/ - -#container{ -width:100%; -min-width: 800px; -margin:0; -padding:0; -text-align:left; -background:#ffffff; -color:#303030; -} - -#header{ -height:4.5em; -margin:0; -background:#467aa7; -color:#ffffff; -margin-bottom:1px; -} - -#header h1{ -padding:10px 0 0 20px; -font-size:2em; -background-color:inherit; -color:#fff; -letter-spacing:-1px; -font-weight:bold; -font-family: Trebuchet MS,Georgia,"Times New Roman",serif; -} - -#header h2{ -margin:3px 0 0 40px; -font-size:1.5em; -background-color:inherit; -color:#f0f2f4; -letter-spacing:-1px; -font-weight:normal; -font-family: Trebuchet MS,Georgia,"Times New Roman",serif; -} - -#navigation{ -height:2.2em; -line-height:2.2em; -margin:0; -background:#578bb8; -color:#ffffff; -} - -#navigation li{ -float:left; -list-style-type:none; -border-right:1px solid #ffffff; -white-space:nowrap; -} - -#navigation li.right { - float:right; -list-style-type:none; -border-right:0; -border-left:1px solid #ffffff; -white-space:nowrap; -} - -#navigation li a{ -display:block; -padding:0px 10px 0px 22px; -font-size:0.8em; -font-weight:normal; -text-decoration:none; -background-color:inherit; -color: #ffffff; -} - -#navigation li.submenu {background:url(../images/arrow_down.png) 96% 80% no-repeat;} -#navigation li.submenu a {padding:0px 16px 0px 22px;} -* html #navigation a {width:1%;} - -#navigation .selected,#navigation a:hover{ -color:#ffffff; -text-decoration:none; -background-color: #80b0da; -} - -/**************** Icons *******************/ -.icon { -background-position: 0% 40%; -background-repeat: no-repeat; -padding-left: 20px; -padding-top: 2px; -padding-bottom: 3px; -vertical-align: middle; -} - -#navigation .icon { -background-position: 4px 50%; -} - -.icon22 { -background-position: 0% 40%; -background-repeat: no-repeat; -padding-left: 26px; -line-height: 22px; -vertical-align: middle; -} - -.icon-add { background-image: url(../images/add.png); } -.icon-edit { background-image: url(../images/edit.png); } -.icon-del { background-image: url(../images/delete.png); } -.icon-move { background-image: url(../images/move.png); } -.icon-save { background-image: url(../images/save.png); } -.icon-cancel { background-image: url(../images/cancel.png); } -.icon-pdf { background-image: url(../images/pdf.png); } -.icon-csv { background-image: url(../images/csv.png); } -.icon-html { background-image: url(../images/html.png); } -.icon-txt { background-image: url(../images/txt.png); } -.icon-file { background-image: url(../images/file.png); } -.icon-folder { background-image: url(../images/folder.png); } -.icon-package { background-image: url(../images/package.png); } -.icon-home { background-image: url(../images/home.png); } -.icon-user { background-image: url(../images/user.png); } -.icon-mypage { background-image: url(../images/user_page.png); } -.icon-admin { background-image: url(../images/admin.png); } -.icon-projects { background-image: url(../images/projects.png); } -.icon-logout { background-image: url(../images/logout.png); } -.icon-help { background-image: url(../images/help.png); } -.icon-attachment { background-image: url(../images/attachment.png); } -.icon-index { background-image: url(../images/index.png); } -.icon-history { background-image: url(../images/history.png); } -.icon-feed { background-image: url(../images/feed.png); } -.icon-time { background-image: url(../images/time.png); } -.icon-stats { background-image: url(../images/stats.png); } - -.icon22-projects { background-image: url(../images/22x22/projects.png); } -.icon22-users { background-image: url(../images/22x22/users.png); } -.icon22-tracker { background-image: url(../images/22x22/tracker.png); } -.icon22-role { background-image: url(../images/22x22/role.png); } -.icon22-workflow { background-image: url(../images/22x22/workflow.png); } -.icon22-options { background-image: url(../images/22x22/options.png); } -.icon22-notifications { background-image: url(../images/22x22/notifications.png); } -.icon22-authent { background-image: url(../images/22x22/authent.png); } -.icon22-info { background-image: url(../images/22x22/info.png); } -.icon22-comment { background-image: url(../images/22x22/comment.png); } -.icon22-package { background-image: url(../images/22x22/package.png); } -.icon22-settings { background-image: url(../images/22x22/settings.png); } - -/**************** Content styles ****************/ - -html>body #content { -height: auto; -min-height: 500px; -} - -#content{ -width: auto; -height:500px; -font-size:0.9em; -padding:20px 10px 10px 20px; -margin-left: 120px; -border-left: 1px dashed #c0c0c0; - -} - -#content h2, #content div.wiki h1 { -display:block; -margin:0 0 16px 0; -font-size:1.7em; -font-weight:normal; -letter-spacing:-1px; -color:#606060; -background-color:inherit; -font-family: Trebuchet MS,Georgia,"Times New Roman",serif; -} - -#content h2 a{font-weight:normal;} -#content h3{margin:0 0 12px 0; font-size:1.4em;color:#707070;font-family: Trebuchet MS,Georgia,"Times New Roman",serif;} -#content h4{font-size: 1em; margin-bottom: 12px; margin-top: 20px; font-weight: normal; border-bottom: dotted 1px #c0c0c0;} -#content a:hover,#subcontent a:hover{text-decoration:underline;} -#content ul,#content ol{margin:0 5px 16px 35px;} -#content dl{margin:0 5px 10px 25px;} -#content dt{font-weight:bold; margin-bottom:5px;} -#content dd{margin:0 0 10px 15px;} - -#content .tabs{height: 2.6em;} -#content .tabs ul{margin:0;} -#content .tabs ul li{ -float:left; -list-style-type:none; -white-space:nowrap; -margin-right:8px; -background:#fff; -} -#content .tabs ul li a{ -display:block; -font-size: 0.9em; -text-decoration:none; -line-height:1em; -padding:4px; -border: 1px solid #c0c0c0; -} - -#content .tabs ul li a.selected, #content .tabs ul li a:hover{ -background-color: #80b0da; -border: 1px solid #80b0da; -color: #fff; -text-decoration:none; -} - -/***********************************************/ - -form {display: inline;} -blockquote {padding-left: 6px; border-left: 2px solid #ccc;} -input, select {vertical-align: middle; margin-bottom: 4px;} - -input.button-small {font-size: 0.8em;} -textarea.wiki-edit { width: 99.5%; } -.select-small {font-size: 0.8em;} -label {font-weight: bold; font-size: 1em; color: #505050;} -fieldset {border:1px solid #c0c0c0; padding: 6px;} -legend {color: #505050;} -.required {color: #bb0000;} -.odd {background-color:#f6f7f8;} -.even {background-color: #fff;} -hr { border:0; border-top: dotted 1px #fff; border-bottom: dotted 1px #c0c0c0; } -table p {margin:0; padding:0;} - -.highlight { background-color: #FCFD8D;} - -div.square { - border: 1px solid #999; - float: left; - margin: .4em .5em 0 0; - overflow: hidden; - width: .6em; height: .6em; -} - -ul.documents { -list-style-type: none; -padding: 0; -margin: 0; -} - -ul.documents li { -background-image: url(../images/32x32/file.png); -background-repeat: no-repeat; -background-position: 0 1px; -padding-left: 36px; -margin-bottom: 10px; -margin-left: -37px; -} - -/********** Table used to display lists of things ***********/ - -table.list { - width:100%; - border-collapse: collapse; - border: 1px dotted #d0d0d0; - margin-bottom: 6px; -} - -table.with-cells td { - border: 1px solid #d7d7d7; -} - -table.list td { - padding:2px; -} - -table.list thead th { - text-align: center; - background: #eee; - border: 1px solid #d7d7d7; - color: #777; -} - -table.list tbody th { - font-weight: normal; - background: #eed; - border: 1px solid #d7d7d7; -} - -/********** Validation error messages *************/ -#errorExplanation { - width: 400px; - border: 0; - padding: 7px; - padding-bottom: 3px; - margin-bottom: 0px; -} - -#errorExplanation h2 { - text-align: left; - font-weight: bold; - padding: 5px 5px 10px 26px; - font-size: 1em; - margin: -7px; - background: url(../images/alert.png) no-repeat 6px 6px; -} - -#errorExplanation p { - color: #333; - margin-bottom: 0; - padding: 5px; -} - -#errorExplanation ul li { - font-size: 1em; - list-style: none; - margin-left: -16px; -} - -/*========== Drop down menu ==============*/ -div.menu { - background-color: #FFFFFF; - border-style: solid; - border-width: 1px; - border-color: #7F9DB9; - position: absolute; - top: 0px; - left: 0px; - padding: 0; - visibility: hidden; - z-index: 101; -} - -div.menu a.menuItem { - font-size: 10px; - font-weight: normal; - line-height: 2em; - color: #000000; - background-color: #FFFFFF; - cursor: default; - display: block; - padding: 0 1em; - margin: 0; - border: 0; - text-decoration: none; - white-space: nowrap; -} - -div.menu a.menuItem:hover, div.menu a.menuItemHighlight { - background-color: #80b0da; - color: #ffffff; -} - -div.menu a.menuItem span.menuItemText {} - -div.menu a.menuItem span.menuItemArrow { - margin-right: -.75em; -} - -/**************** Sidebar styles ****************/ - -#subcontent{ -position: absolute; -left: 0px; -width:110px; -padding:20px 20px 10px 5px; -} - -#subcontent h2{ -display:block; -margin:0 0 5px 0; -font-size:1.0em; -font-weight:bold; -text-align:left; -color:#606060; -background-color:inherit; -font-family: Trebuchet MS,Georgia,"Times New Roman",serif; -} - -#subcontent p{margin:0 0 16px 0; font-size:0.9em;} - -/**************** Menublock styles ****************/ - -.menublock{margin:0 0 20px 8px; font-size:0.8em;} -.menublock li{list-style:none; display:block; padding:1px; margin-bottom:0px;} -.menublock li a{font-weight:bold; text-decoration:none;} -.menublock li a:hover{text-decoration:none;} -.menublock li ul{margin:0; font-size:1em; font-weight:normal;} -.menublock li ul li{margin-bottom:0;} -.menublock li ul a{font-weight:normal;} - -/**************** Footer styles ****************/ - -#footer{ -clear:both; -padding:5px 0; -margin:0; -font-size:0.9em; -color:#f0f0f0; -background:#467aa7; -} - -#footer p{padding:0; margin:0; text-align:center;} -#footer a{color:#f0f0f0; background-color:inherit; font-weight:bold;} -#footer a:hover{color:#ffffff; background-color:inherit; text-decoration: underline;} - -/**************** Misc classes and styles ****************/ - -.splitcontentleft{float:left; width:49%;} -.splitcontentright{float:right; width:49%;} -.clear{clear:both;} -.small{font-size:0.8em;line-height:1.4em;padding:0 0 0 0;} -.hide{display:none;} -.textcenter{text-align:center;} -.textright{text-align:right;} -.important{color:#f02025; background-color:inherit; font-weight:bold;} - -.box{ -margin:0 0 20px 0; -padding:10px; -border:1px solid #c0c0c0; -background-color:#fafbfc; -color:#505050; -line-height:1.5em; -} - -a.close-icon { -display:block; -margin-top:3px; -overflow:hidden; -width:12px; -height:12px; -background-repeat: no-repeat; -cursor:pointer; -background-image:url('../images/close.png'); -} - -a.close-icon:hover { -background-image:url('../images/close_hl.png'); -} - -.rightbox{ -background: #fafbfc; -border: 1px solid #c0c0c0; -float: right; -padding: 8px; -position: relative; -margin: 0 5px 5px; -} - -.overlay{ -position: absolute; -margin-left:0; -z-index: 50; -} - -.layout-active { -background: #ECF3E1; -} - -.block-receiver { -border:1px dashed #c0c0c0; -margin-bottom: 20px; -padding: 15px 0 15px 0; -} - -.mypage-box { -margin:0 0 20px 0; -color:#505050; -line-height:1.5em; -} - -.handle { -cursor: move; -} - -.login { -width: 50%; -text-align: left; -} - -img.calendar-trigger { - cursor: pointer; - vertical-align: middle; - margin-left: 4px; -} - -#history p { - margin-left: 34px; -} - -.progress { - border: 1px solid #D7D7D7; - border-collapse: collapse; - border-spacing: 0pt; - empty-cells: show; - padding: 3px; - width: 40em; - text-align: center; -} - -.progress td { height: 1em; } -.progress .closed { background: #BAE0BA none repeat scroll 0%; } -.progress .open { background: #FFF none repeat scroll 0%; } - -/***** Contextual links div *****/ -.contextual { -float: right; -font-size: 0.8em; -line-height: 16px; -padding: 2px; -} - -.contextual select, .contextual input { -font-size: 1em; -} - -/***** Gantt chart *****/ -.gantt_hdr { - position:absolute; - top:0; - height:16px; - border-top: 1px solid #c0c0c0; - border-bottom: 1px solid #c0c0c0; - border-right: 1px solid #c0c0c0; - text-align: center; - overflow: hidden; -} - -.task { - position: absolute; - height:8px; - font-size:0.8em; - color:#888; - padding:0; - margin:0; - line-height:0.8em; -} - -.task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; } -.task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; } -.task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; } - -/***** Tooltips ******/ -.tooltip{position:relative;z-index:24;} -.tooltip:hover{z-index:25;color:#000;} -.tooltip span.tip{display: none; text-align:left;} - -div.tooltip:hover span.tip{ -display:block; -position:absolute; -top:12px; left:24px; width:270px; -border:1px solid #555; -background-color:#fff; -padding: 4px; -font-size: 0.8em; -color:#505050; -} - -/***** CSS FORM ******/ -.tabular p{ -margin: 0; -padding: 5px 0 8px 0; -padding-left: 180px; /*width of left column containing the label elements*/ -height: 1%; -} - -.tabular label{ -font-weight: bold; -float: left; -margin-left: -180px; /*width of left column*/ -width: 175px; /*width of labels. Should be smaller than left column to create some right -margin*/ -} - -.error { -color: #cc0000; -} - -#settings .tabular p{ padding-left: 250px; } -#settings .tabular label{ margin-left: -250px; width: 245px; } - -/*.threepxfix class below: -Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents. -to account for 3 pixel bug: http://www.positioniseverything.net/explorer/threepxtest.html -*/ - -* html .threepxfix{ -margin-left: 3px; -} - -/***** Wiki sections ****/ -#content div.wiki { font-size: 110%} - -#content div.wiki h2, div.wiki h3 { font-family: Trebuchet MS,Georgia,"Times New Roman",serif; color:#606060; } -#content div.wiki h2 { font-size: 1.4em;} -#content div.wiki h3 { font-size: 1.2em;} - -div.wiki table { - border: 1px solid #505050; - border-collapse: collapse; -} - -div.wiki table, div.wiki td { - border: 1px solid #bbb; - padding: 4px; -} - -div.wiki code { - font-size: 1.2em; -} - -#preview .preview { background: #fafbfc url(../images/draft.png); } +/* andreas08 - an open source xhtml/css website layout by Andreas Viklund - http://andreasviklund.com . Free to use in any way and for any purpose as long as the proper credits are given to the original designer. Version: 1.0, November 28, 2005 */ +/* Edited by Jean-Philippe Lang *> +/**************** Body and tag styles ****************/ + +#header * {margin:0; padding:0;} +p, ul, ol, li {margin:0; padding:0;} + +body{ +font:76% Verdana,Tahoma,Arial,sans-serif; +line-height:1.4em; +text-align:center; +color:#303030; +background:#e8eaec; +margin:0; +} + +a{color:#467aa7;font-weight:bold;text-decoration:none;background-color:inherit;} +a:hover{color:#2a5a8a; text-decoration:none; background-color:inherit;} +a img{border:none;} + +p{margin:0 0 1em 0;} +p form{margin-top:0; margin-bottom:20px;} + +img.left,img.center,img.right{padding:4px; border:1px solid #a0a0a0;} +img.left{float:left; margin:0 12px 5px 0;} +img.center{display:block; margin:0 auto 5px auto;} +img.right{float:right; margin:0 0 5px 12px;} + +/**************** Header and navigation styles ****************/ + +#container{ +width:100%; +min-width: 800px; +margin:0; +padding:0; +text-align:left; +background:#ffffff; +color:#303030; +} + +#header{ +height:4.5em; +margin:0; +background:#467aa7; +color:#ffffff; +margin-bottom:1px; +} + +#header h1{ +padding:10px 0 0 20px; +font-size:2em; +background-color:inherit; +color:#fff; +letter-spacing:-1px; +font-weight:bold; +font-family: Trebuchet MS,Georgia,"Times New Roman",serif; +} + +#header h2{ +margin:3px 0 0 40px; +font-size:1.5em; +background-color:inherit; +color:#f0f2f4; +letter-spacing:-1px; +font-weight:normal; +font-family: Trebuchet MS,Georgia,"Times New Roman",serif; +} + +#navigation{ +height:2.2em; +line-height:2.2em; +margin:0; +background:#578bb8; +color:#ffffff; +} + +#navigation li{ +float:left; +list-style-type:none; +border-right:1px solid #ffffff; +white-space:nowrap; +} + +#navigation li.right { + float:right; +list-style-type:none; +border-right:0; +border-left:1px solid #ffffff; +white-space:nowrap; +} + +#navigation li a{ +display:block; +padding:0px 10px 0px 22px; +font-size:0.8em; +font-weight:normal; +text-decoration:none; +background-color:inherit; +color: #ffffff; +} + +#navigation li.submenu {background:url(../images/arrow_down.png) 96% 80% no-repeat;} +#navigation li.submenu a {padding:0px 16px 0px 22px;} +* html #navigation a {width:1%;} + +#navigation .selected,#navigation a:hover{ +color:#ffffff; +text-decoration:none; +background-color: #80b0da; +} + +/**************** Icons *******************/ +.icon { +background-position: 0% 40%; +background-repeat: no-repeat; +padding-left: 20px; +padding-top: 2px; +padding-bottom: 3px; +vertical-align: middle; +} + +#navigation .icon { +background-position: 4px 50%; +} + +.icon22 { +background-position: 0% 40%; +background-repeat: no-repeat; +padding-left: 26px; +line-height: 22px; +vertical-align: middle; +} + +.icon-add { background-image: url(../images/add.png); } +.icon-edit { background-image: url(../images/edit.png); } +.icon-del { background-image: url(../images/delete.png); } +.icon-move { background-image: url(../images/move.png); } +.icon-save { background-image: url(../images/save.png); } +.icon-cancel { background-image: url(../images/cancel.png); } +.icon-pdf { background-image: url(../images/pdf.png); } +.icon-csv { background-image: url(../images/csv.png); } +.icon-html { background-image: url(../images/html.png); } +.icon-txt { background-image: url(../images/txt.png); } +.icon-file { background-image: url(../images/file.png); } +.icon-folder { background-image: url(../images/folder.png); } +.icon-package { background-image: url(../images/package.png); } +.icon-home { background-image: url(../images/home.png); } +.icon-user { background-image: url(../images/user.png); } +.icon-mypage { background-image: url(../images/user_page.png); } +.icon-admin { background-image: url(../images/admin.png); } +.icon-projects { background-image: url(../images/projects.png); } +.icon-logout { background-image: url(../images/logout.png); } +.icon-help { background-image: url(../images/help.png); } +.icon-attachment { background-image: url(../images/attachment.png); } +.icon-index { background-image: url(../images/index.png); } +.icon-history { background-image: url(../images/history.png); } +.icon-feed { background-image: url(../images/feed.png); } +.icon-time { background-image: url(../images/time.png); } +.icon-stats { background-image: url(../images/stats.png); } + +.icon22-projects { background-image: url(../images/22x22/projects.png); } +.icon22-users { background-image: url(../images/22x22/users.png); } +.icon22-tracker { background-image: url(../images/22x22/tracker.png); } +.icon22-role { background-image: url(../images/22x22/role.png); } +.icon22-workflow { background-image: url(../images/22x22/workflow.png); } +.icon22-options { background-image: url(../images/22x22/options.png); } +.icon22-notifications { background-image: url(../images/22x22/notifications.png); } +.icon22-authent { background-image: url(../images/22x22/authent.png); } +.icon22-info { background-image: url(../images/22x22/info.png); } +.icon22-comment { background-image: url(../images/22x22/comment.png); } +.icon22-package { background-image: url(../images/22x22/package.png); } +.icon22-settings { background-image: url(../images/22x22/settings.png); } + +/**************** Content styles ****************/ + +html>body #content { +height: auto; +min-height: 500px; +} + +#content{ +width: auto; +height:500px; +font-size:0.9em; +padding:20px 10px 10px 20px; +margin-left: 120px; +border-left: 1px dashed #c0c0c0; + +} + +#content h2, #content div.wiki h1 { +display:block; +margin:0 0 16px 0; +font-size:1.7em; +font-weight:normal; +letter-spacing:-1px; +color:#606060; +background-color:inherit; +font-family: Trebuchet MS,Georgia,"Times New Roman",serif; +} + +#content h2 a{font-weight:normal;} +#content h3{margin:0 0 12px 0; font-size:1.4em;color:#707070;font-family: Trebuchet MS,Georgia,"Times New Roman",serif;} +#content h4{font-size: 1em; margin-bottom: 12px; margin-top: 20px; font-weight: normal; border-bottom: dotted 1px #c0c0c0;} +#content a:hover,#subcontent a:hover{text-decoration:underline;} +#content ul,#content ol{margin:0 5px 16px 35px;} +#content dl{margin:0 5px 10px 25px;} +#content dt{font-weight:bold; margin-bottom:5px;} +#content dd{margin:0 0 10px 15px;} + +#content .tabs{height: 2.6em;} +#content .tabs ul{margin:0;} +#content .tabs ul li{ +float:left; +list-style-type:none; +white-space:nowrap; +margin-right:8px; +background:#fff; +} +#content .tabs ul li a{ +display:block; +font-size: 0.9em; +text-decoration:none; +line-height:1em; +padding:4px; +border: 1px solid #c0c0c0; +} + +#content .tabs ul li a.selected, #content .tabs ul li a:hover{ +background-color: #80b0da; +border: 1px solid #80b0da; +color: #fff; +text-decoration:none; +} + +/***********************************************/ + +form {display: inline;} +blockquote {padding-left: 6px; border-left: 2px solid #ccc;} +input, select {vertical-align: middle; margin-bottom: 4px;} + +input.button-small {font-size: 0.8em;} +textarea.wiki-edit { width: 99.5%; } +.select-small {font-size: 0.8em;} +label {font-weight: bold; font-size: 1em; color: #505050;} +fieldset {border:1px solid #c0c0c0; padding: 6px;} +legend {color: #505050;} +.required {color: #bb0000;} +.odd {background-color:#f6f7f8;} +.even {background-color: #fff;} +hr { border:0; border-top: dotted 1px #fff; border-bottom: dotted 1px #c0c0c0; } +table p {margin:0; padding:0;} + +.highlight { background-color: #FCFD8D;} + +div.square { + border: 1px solid #999; + float: left; + margin: .4em .5em 0 0; + overflow: hidden; + width: .6em; height: .6em; +} + +ul.documents { +list-style-type: none; +padding: 0; +margin: 0; +} + +ul.documents li { +background-image: url(../images/32x32/file.png); +background-repeat: no-repeat; +background-position: 0 1px; +padding-left: 36px; +margin-bottom: 10px; +margin-left: -37px; +} + +/********** Table used to display lists of things ***********/ + +table.list { + width:100%; + border-collapse: collapse; + border: 1px dotted #d0d0d0; + margin-bottom: 6px; +} + +table.with-cells td { + border: 1px solid #d7d7d7; +} + +table.list td { + padding:2px; +} + +table.list thead th { + text-align: center; + background: #eee; + border: 1px solid #d7d7d7; + color: #777; +} + +table.list tbody th { + font-weight: normal; + background: #eed; + border: 1px solid #d7d7d7; +} + +/********** Validation error messages *************/ +#errorExplanation { + width: 400px; + border: 0; + padding: 7px; + padding-bottom: 3px; + margin-bottom: 0px; +} + +#errorExplanation h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 10px 26px; + font-size: 1em; + margin: -7px; + background: url(../images/alert.png) no-repeat 6px 6px; +} + +#errorExplanation p { + color: #333; + margin-bottom: 0; + padding: 5px; +} + +#errorExplanation ul li { + font-size: 1em; + list-style: none; + margin-left: -16px; +} + +/*========== Drop down menu ==============*/ +div.menu { + background-color: #FFFFFF; + border-style: solid; + border-width: 1px; + border-color: #7F9DB9; + position: absolute; + top: 0px; + left: 0px; + padding: 0; + visibility: hidden; + z-index: 101; +} + +div.menu a.menuItem { + font-size: 10px; + font-weight: normal; + line-height: 2em; + color: #000000; + background-color: #FFFFFF; + cursor: default; + display: block; + padding: 0 1em; + margin: 0; + border: 0; + text-decoration: none; + white-space: nowrap; +} + +div.menu a.menuItem:hover, div.menu a.menuItemHighlight { + background-color: #80b0da; + color: #ffffff; +} + +div.menu a.menuItem span.menuItemText {} + +div.menu a.menuItem span.menuItemArrow { + margin-right: -.75em; +} + +/**************** Sidebar styles ****************/ + +#subcontent{ +position: absolute; +left: 0px; +width:110px; +padding:20px 20px 10px 5px; +} + +#subcontent h2{ +display:block; +margin:0 0 5px 0; +font-size:1.0em; +font-weight:bold; +text-align:left; +color:#606060; +background-color:inherit; +font-family: Trebuchet MS,Georgia,"Times New Roman",serif; +} + +#subcontent p{margin:0 0 16px 0; font-size:0.9em;} + +/**************** Menublock styles ****************/ + +.menublock{margin:0 0 20px 8px; font-size:0.8em;} +.menublock li{list-style:none; display:block; padding:1px; margin-bottom:0px;} +.menublock li a{font-weight:bold; text-decoration:none;} +.menublock li a:hover{text-decoration:none;} +.menublock li ul{margin:0; font-size:1em; font-weight:normal;} +.menublock li ul li{margin-bottom:0;} +.menublock li ul a{font-weight:normal;} + +/**************** Footer styles ****************/ + +#footer{ +clear:both; +padding:5px 0; +margin:0; +font-size:0.9em; +color:#f0f0f0; +background:#467aa7; +} + +#footer p{padding:0; margin:0; text-align:center;} +#footer a{color:#f0f0f0; background-color:inherit; font-weight:bold;} +#footer a:hover{color:#ffffff; background-color:inherit; text-decoration: underline;} + +/**************** Misc classes and styles ****************/ + +.splitcontentleft{float:left; width:49%;} +.splitcontentright{float:right; width:49%;} +.clear{clear:both;} +.small{font-size:0.8em;line-height:1.4em;padding:0 0 0 0;} +.hide{display:none;} +.textcenter{text-align:center;} +.textright{text-align:right;} +.important{color:#f02025; background-color:inherit; font-weight:bold;} + +.box{ +margin:0 0 20px 0; +padding:10px; +border:1px solid #c0c0c0; +background-color:#fafbfc; +color:#505050; +line-height:1.5em; +} + +a.close-icon { +display:block; +margin-top:3px; +overflow:hidden; +width:12px; +height:12px; +background-repeat: no-repeat; +cursor:pointer; +background-image:url('../images/close.png'); +} + +a.close-icon:hover { +background-image:url('../images/close_hl.png'); +} + +.rightbox{ +background: #fafbfc; +border: 1px solid #c0c0c0; +float: right; +padding: 8px; +position: relative; +margin: 0 5px 5px; +} + +.overlay{ +position: absolute; +margin-left:0; +z-index: 50; +} + +.layout-active { +background: #ECF3E1; +} + +.block-receiver { +border:1px dashed #c0c0c0; +margin-bottom: 20px; +padding: 15px 0 15px 0; +} + +.mypage-box { +margin:0 0 20px 0; +color:#505050; +line-height:1.5em; +} + +.handle { +cursor: move; +} + +.login { +width: 50%; +text-align: left; +} + +img.calendar-trigger { + cursor: pointer; + vertical-align: middle; + margin-left: 4px; +} + +#history p { + margin-left: 34px; +} + +.progress { + border: 1px solid #D7D7D7; + border-collapse: collapse; + border-spacing: 0pt; + empty-cells: show; + padding: 3px; + width: 40em; + text-align: center; +} + +.progress td { height: 1em; } +.progress .closed { background: #BAE0BA none repeat scroll 0%; } +.progress .open { background: #FFF none repeat scroll 0%; } + +/***** Contextual links div *****/ +.contextual { +float: right; +font-size: 0.8em; +line-height: 16px; +padding: 2px; +} + +.contextual select, .contextual input { +font-size: 1em; +} + +/***** Gantt chart *****/ +.gantt_hdr { + position:absolute; + top:0; + height:16px; + border-top: 1px solid #c0c0c0; + border-bottom: 1px solid #c0c0c0; + border-right: 1px solid #c0c0c0; + text-align: center; + overflow: hidden; +} + +.task { + position: absolute; + height:8px; + font-size:0.8em; + color:#888; + padding:0; + margin:0; + line-height:0.8em; +} + +.task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; } +.task_done { background:#66f url(../images/task_done.png); border: 1px solid #66f; } +.task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; } + +/***** Tooltips ******/ +.tooltip{position:relative;z-index:24;} +.tooltip:hover{z-index:25;color:#000;} +.tooltip span.tip{display: none; text-align:left;} + +div.tooltip:hover span.tip{ +display:block; +position:absolute; +top:12px; left:24px; width:270px; +border:1px solid #555; +background-color:#fff; +padding: 4px; +font-size: 0.8em; +color:#505050; +} + +/***** CSS FORM ******/ +.tabular p{ +margin: 0; +padding: 5px 0 8px 0; +padding-left: 180px; /*width of left column containing the label elements*/ +height: 1%; +} + +.tabular label{ +font-weight: bold; +float: left; +margin-left: -180px; /*width of left column*/ +width: 175px; /*width of labels. Should be smaller than left column to create some right +margin*/ +} + +.error { +color: #cc0000; +} + +#settings .tabular p{ padding-left: 250px; } +#settings .tabular label{ margin-left: -250px; width: 245px; } + +/*.threepxfix class below: +Targets IE6- ONLY. Adds 3 pixel indent for multi-line form contents. +to account for 3 pixel bug: http://www.positioniseverything.net/explorer/threepxtest.html +*/ + +* html .threepxfix{ +margin-left: 3px; +} + +/***** Wiki sections ****/ +#content div.wiki { font-size: 110%} + +#content div.wiki h2, div.wiki h3 { font-family: Trebuchet MS,Georgia,"Times New Roman",serif; color:#606060; } +#content div.wiki h2 { font-size: 1.4em;} +#content div.wiki h3 { font-size: 1.2em;} + +div.wiki table { + border: 1px solid #505050; + border-collapse: collapse; +} + +div.wiki table, div.wiki td { + border: 1px solid #bbb; + padding: 4px; +} + +div.wiki code { + font-size: 1.2em; +} + +#preview .preview { background: #fafbfc url(../images/draft.png); } diff --git a/public/stylesheets/jstoolbar.css b/public/stylesheets/jstoolbar.css index cf51c48c..37c3a251 100644 --- a/public/stylesheets/jstoolbar.css +++ b/public/stylesheets/jstoolbar.css @@ -1,81 +1,81 @@ -.jstEditor { - padding-left: 0px; -} -.jstEditor textarea, .jstEditor iframe { - margin: 0; -} - -.jstHandle { - height: 16px; - font-size: 0.1em; - cursor: s-resize; - /*background: transparent url(img/resizer.png) no-repeat 45% 50%;*/ -} - -.jstElements { - padding: 3px 3px; -} - -.jstElements button { - margin-right : 6px; - width : 24px; - height: 24px; - padding: 4px; - border-style: solid; - border-width: 1px; - border-color: #ddd; - background-color : #f7f7f7; - background-position : 50% 50%; - background-repeat: no-repeat; -} -.jstElements button:hover { - border-color : #000; -} -.jstElements button span { - display : none; -} -.jstElements span { - display : inline; -} - -.jstSpacer { - width : 0px; - font-size: 1px; - margin-right: 4px; -} - -/* Buttons --------------------------------------------------------- */ -.jstb_strong { - background-image: url(../images/jstoolbar/bt_strong.png); -} -.jstb_em { - background-image: url(../images/jstoolbar/bt_em.png); -} -.jstb_ins { - background-image: url(../images/jstoolbar/bt_ins.png); -} -.jstb_del { - background-image: url(../images/jstoolbar/bt_del.png); -} -.jstb_quote { - background-image: url(../images/jstoolbar/bt_quote.png); -} -.jstb_code { - background-image: url(../images/jstoolbar/bt_code.png); -} -.jstb_br { - background-image: url(../images/jstoolbar/bt_br.png); -} -.jstb_heading { - background-image: url(../images/jstoolbar/bt_heading.png); -} -.jstb_ul { - background-image: url(../images/jstoolbar/bt_ul.png); -} -.jstb_ol { - background-image: url(../images/jstoolbar/bt_ol.png); -} -.jstb_link { - background-image: url(../images/jstoolbar/bt_link.png); -} +.jstEditor { + padding-left: 0px; +} +.jstEditor textarea, .jstEditor iframe { + margin: 0; +} + +.jstHandle { + height: 16px; + font-size: 0.1em; + cursor: s-resize; + /*background: transparent url(img/resizer.png) no-repeat 45% 50%;*/ +} + +.jstElements { + padding: 3px 3px; +} + +.jstElements button { + margin-right : 6px; + width : 24px; + height: 24px; + padding: 4px; + border-style: solid; + border-width: 1px; + border-color: #ddd; + background-color : #f7f7f7; + background-position : 50% 50%; + background-repeat: no-repeat; +} +.jstElements button:hover { + border-color : #000; +} +.jstElements button span { + display : none; +} +.jstElements span { + display : inline; +} + +.jstSpacer { + width : 0px; + font-size: 1px; + margin-right: 4px; +} + +/* Buttons +-------------------------------------------------------- */ +.jstb_strong { + background-image: url(../images/jstoolbar/bt_strong.png); +} +.jstb_em { + background-image: url(../images/jstoolbar/bt_em.png); +} +.jstb_ins { + background-image: url(../images/jstoolbar/bt_ins.png); +} +.jstb_del { + background-image: url(../images/jstoolbar/bt_del.png); +} +.jstb_quote { + background-image: url(../images/jstoolbar/bt_quote.png); +} +.jstb_code { + background-image: url(../images/jstoolbar/bt_code.png); +} +.jstb_br { + background-image: url(../images/jstoolbar/bt_br.png); +} +.jstb_heading { + background-image: url(../images/jstoolbar/bt_heading.png); +} +.jstb_ul { + background-image: url(../images/jstoolbar/bt_ul.png); +} +.jstb_ol { + background-image: url(../images/jstoolbar/bt_ol.png); +} +.jstb_link { + background-image: url(../images/jstoolbar/bt_link.png); +} diff --git a/public/stylesheets/print.css b/public/stylesheets/print.css index dad35084..bd5f006f 100644 --- a/public/stylesheets/print.css +++ b/public/stylesheets/print.css @@ -1,3 +1,3 @@ -#header, #navigation, #subcontent, #footer { display:none; } -.menu { display:none; } +#header, #navigation, #subcontent, #footer { display:none; } +.menu { display:none; } .contextual, .rightbox { display:none; } \ No newline at end of file diff --git a/public/stylesheets/scm.css b/public/stylesheets/scm.css index 4df3398e..4a9655a5 100644 --- a/public/stylesheets/scm.css +++ b/public/stylesheets/scm.css @@ -1,36 +1,36 @@ - -div.action_M { background: #fd8 } -div.action_D { background: #f88 } -div.action_A { background: #bfb } - - -tr.spacing { - border: 1px solid #d7d7d7; -} - -.line-num { - border: 1px solid #d7d7d7; - font-size: 0.8em; - text-align: right; - width: 3em; - padding-right: 3px; -} - -.line-code { - font-family: "Courier New", monospace; - font-size: 1em; -} - -table.list thead th.list-filename { - background-color: #ddc; - font-weight: bolder; - text-align: left; -} - -.diff_out{ - background: #fdd; -} - -.diff_in{ - background: #dfd; -} + +div.action_M { background: #fd8 } +div.action_D { background: #f88 } +div.action_A { background: #bfb } + + +tr.spacing { + border: 1px solid #d7d7d7; +} + +.line-num { + border: 1px solid #d7d7d7; + font-size: 0.8em; + text-align: right; + width: 3em; + padding-right: 3px; +} + +.line-code { + font-family: "Courier New", monospace; + font-size: 1em; +} + +table.list thead th.list-filename { + background-color: #ddc; + font-weight: bolder; + text-align: left; +} + +.diff_out{ + background: #fdd; +} + +.diff_in{ + background: #dfd; +}