diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-04-04 18:20:45 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-04-04 18:20:45 +0000 |
commit | f7d51412516533d058a1b9cd3d0762e6ea4c3247 (patch) | |
tree | 8d6c46f1b27c4ad66a2d0130c1c8f77f30981ad3 | |
parent | 8e11dac375fe23cba1f10789953a839cdd14d47c (diff) | |
download | redmine-f7d51412516533d058a1b9cd3d0762e6ea4c3247.tar.gz redmine-f7d51412516533d058a1b9cd3d0762e6ea4c3247.zip |
Added svn:eol-style native property for various files
git-svn-id: http://redmine.rubyforge.org/svn/trunk@419 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | lang/zh.yml | 862 | ||||
-rw-r--r-- | public/javascripts/application.js | 64 | ||||
-rw-r--r-- | public/javascripts/calendar/lang/calendar-de.js | 4 | ||||
-rw-r--r-- | public/javascripts/calendar/lang/calendar-fr.js | 4 | ||||
-rw-r--r-- | public/javascripts/calendar/lang/calendar-it.js | 254 | ||||
-rw-r--r-- | public/javascripts/calendar/lang/calendar-zh.js | 254 | ||||
-rw-r--r-- | public/javascripts/jstoolbar.js | 928 | ||||
-rw-r--r-- | public/javascripts/menu.js | 1112 | ||||
-rw-r--r-- | public/manual/en/html.css | 56 | ||||
-rw-r--r-- | public/manual/fr/html.css | 56 | ||||
-rw-r--r-- | public/stylesheets/application.css | 1264 | ||||
-rw-r--r-- | public/stylesheets/jstoolbar.css | 162 | ||||
-rw-r--r-- | public/stylesheets/print.css | 4 | ||||
-rw-r--r-- | public/stylesheets/scm.css | 72 |
14 files changed, 2548 insertions, 2548 deletions
diff --git a/lang/zh.yml b/lang/zh.yml index 5ffcb159b..6301b8235 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.<br />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.<br />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 c8a790472..a5d9de292 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<f.length; i++){
- Element.hide(f[i]);
- }
- var f = $$('div.tabs a');
- for(var i=0; i<f.length; i++){
- Element.removeClassName(f[i], "selected");
- }
- Element.show('tab-content-' + name);
- Element.addClassName('tab-' + name, "selected");
- return false;
+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<f.length; i++){ + Element.hide(f[i]); + } + var f = $$('div.tabs a'); + for(var i=0; i<f.length; i++){ + Element.removeClassName(f[i], "selected"); + } + Element.show('tab-content-' + name); + Element.addClassName('tab-' + name, "selected"); + return false; }
\ No newline at end of file diff --git a/public/javascripts/calendar/lang/calendar-de.js b/public/javascripts/calendar/lang/calendar-de.js index 59fb983bf..c320699ca 100644 --- a/public/javascripts/calendar/lang/calendar-de.js +++ b/public/javascripts/calendar/lang/calendar-de.js @@ -31,10 +31,10 @@ Calendar._DN = new Array // 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. -
+ // First day of the week. "0" means display Sunday first, "1" means display // Monday first, etc. -Calendar._FD = 1;
+Calendar._FD = 1; // short day names Calendar._SDN = new Array diff --git a/public/javascripts/calendar/lang/calendar-fr.js b/public/javascripts/calendar/lang/calendar-fr.js index fb0cb2380..128355a29 100644 --- a/public/javascripts/calendar/lang/calendar-fr.js +++ b/public/javascripts/calendar/lang/calendar-fr.js @@ -44,10 +44,10 @@ Calendar._SDN = new Array "Ven", "Sam", "Dim"); -
+ // First day of the week. "0" means display Sunday first, "1" means display // Monday first, etc. -Calendar._FD = 1;
+Calendar._FD = 1; // full month names Calendar._MN = new Array diff --git a/public/javascripts/calendar/lang/calendar-it.js b/public/javascripts/calendar/lang/calendar-it.js index d5315125f..fbc80c935 100644 --- a/public/javascripts/calendar/lang/calendar-it.js +++ b/public/javascripts/calendar/lang/calendar-it.js @@ -1,127 +1,127 @@ -// ** I18N
-
-// Calendar EN language
-// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible. We strongly believe that
-// Unicode is the answer to a real internationalized world. Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("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, <mihai_bazon@yahoo.com> +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("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 23f51bb94..ddb092bfa 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, <andywu.zh@gmail.com>
-// Encoding: any
-// Distributed under the same terms as the calendar itself.
-
-// For translators: please use UTF-8 if possible. We strongly believe that
-// Unicode is the answer to a real internationalized world. Also please
-// include your contact information in the header, as can be seen above.
-
-// full day names
-Calendar._DN = new Array
-("星期日",
- "星期一",
- "星期二",
- "星期三",
- "星期四",
- "星期五",
- "星期六",
- "星期日");
-
-// 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, <andywu.zh@gmail.com> +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("星期日", + "星期一", + "星期二", + "星期三", + "星期四", + "星期五", + "星期六", + "星期日"); + +// 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 a381c3c20..bfafcdd09 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 bf5612dd5..b3d3891be 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<arguments.length;i++)this[this.length]=arguments[i];};};
-
-//----------------------------------------------------------------------------
-// Code to determine the browser and version.
-//----------------------------------------------------------------------------
-
-function Browser() {
-
- var ua, s, i;
-
- this.isIE = false; // Internet Explorer
- this.isOP = false; // Opera
- this.isNS = false; // Netscape
- this.version = null;
- //-- debut ajout ci ----
- this.isIE5mac = false; // Internet Explorer 5 mac
- //-- fin ajout ci ----
-
- ua = navigator.userAgent;
-
- //-- debut ajout ci ----
- if (ua.indexOf("Opera")==-1 && ua.indexOf("MSIE 5")>-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<arguments.length;i++)this[this.length]=arguments[i];};}; + +//---------------------------------------------------------------------------- +// Code to determine the browser and version. +//---------------------------------------------------------------------------- + +function Browser() { + + var ua, s, i; + + this.isIE = false; // Internet Explorer + this.isOP = false; // Opera + this.isNS = false; // Netscape + this.version = null; + //-- debut ajout ci ---- + this.isIE5mac = false; // Internet Explorer 5 mac + //-- fin ajout ci ---- + + ua = navigator.userAgent; + + //-- debut ajout ci ---- + if (ua.indexOf("Opera")==-1 && ua.indexOf("MSIE 5")>-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 1c4e949f7..c5eb0ef96 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 1c4e949f7..c5eb0ef96 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 1233231f9..185cfa87e 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 cf51c48c7..37c3a2510 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 dad350842..bd5f006f2 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 4df3398e2..4a9655a52 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; +} |