├── README.rdoc ├── Aptfile ├── CONTRIBUTING.md ├── test ├── mailers │ └── empty ├── models │ └── empty ├── controllers │ └── empty └── fixtures │ ├── files │ ├── 2006 │ │ └── 07 │ │ │ ├── 060719210727_archive.zip │ │ │ ├── 060719210727_changeset_iso8859-1.diff │ │ │ └── 060719210727_source.rb │ ├── 2010 │ │ ├── 11 │ │ │ └── 101123161450_testfile_1.png │ │ └── 12 │ │ │ └── 101223161450_testfile_2.png │ ├── 2019 │ │ └── 05 │ │ │ └── 190511141819_ecookbook-gantt.pdf │ ├── invalid-Shift_JIS.csv │ ├── japanese-utf-8.txt │ ├── hello.js │ ├── testfile.md │ ├── import_dates_ja.csv │ ├── testfile.textile │ ├── unclosed_quoted_field.csv │ ├── testfile.txt │ ├── configuration │ │ ├── empty.yml │ │ ├── default.yml │ │ ├── no_default.yml │ │ └── overrides.yml │ ├── iso8859-1.txt │ ├── import_iso8859-1.csv │ ├── import_dates.csv │ ├── import_issues_no_data_row.csv │ ├── import_subtasks.csv │ ├── import_subtasks_with_relations.csv │ ├── import_issues_auto_mapping.csv │ ├── import_time_entries.csv │ └── import_issues_with_relation_and_invalid_issues.csv │ ├── views │ └── _partial.html.erb │ ├── plugins │ ├── foo_plugin │ │ ├── assets │ │ │ └── stylesheets │ │ │ │ └── foo.css │ │ ├── app │ │ │ └── models │ │ │ │ └── foo.rb │ │ └── _foo_plugin_settings.html.erb │ ├── redmine_test_plugin_foo │ │ ├── config │ │ │ └── routes.rb │ │ └── app │ │ │ └── controllers │ │ │ └── plugin_articles_controller.rb │ ├── other_plugin │ │ └── _other_plugin_settings.html.erb │ └── redmine_test_plugin_bar │ │ ├── config │ │ └── routes.rb │ │ ├── app │ │ └── controllers │ │ │ └── bar_plugin_articles_controller.rb │ │ └── init.rb │ ├── asset_path │ └── foo │ │ ├── stylesheets │ │ ├── foo.css │ │ └── bar │ │ │ └── bar.css │ │ └── images │ │ ├── foo.svg │ │ └── baz │ │ └── baz.svg │ ├── custom_fields_projects.yml │ ├── encoding │ └── iso-8859-1.txt │ ├── repositories │ ├── cvs_repository.tar.gz │ ├── git_repository.tar.gz │ ├── bazaar_repository.tar.gz │ ├── mercurial_repository.hg │ ├── git_utf8_repository.tar.gz │ ├── filesystem_repository.tar.gz │ └── subversion_repository.dump.gz │ ├── groups_users.yml │ ├── themes │ └── foo_theme │ │ └── stylesheets │ │ └── application.css │ ├── mail_handler │ ├── ticket_with_localized_attributes.eml │ ├── ticket_with_localized_private_flag.eml │ ├── fullname_of_sender_as_utf8_encoded.eml │ ├── subject_japanese_1.eml │ ├── subject_japanese_2.eml │ ├── fullname_of_sender_in_parentheses.eml │ └── gmail-iso8859-2.eml │ ├── diffs │ ├── issue-13644-1.diff │ ├── issue-13644-2.diff │ ├── issue-13644-3.diff │ ├── issue-13644-4.diff │ └── issue-13644-5.diff │ ├── issue_relations.yml │ ├── wikis.yml │ └── tokens.yml ├── tmp ├── test │ └── empty └── thumbnails │ └── empty ├── public └── plugin_assets │ └── empty ├── .github └── PULL_REQUEST_TEMPLATE.md ├── .slugignore ├── lib ├── plugins │ ├── acts_as_tree │ │ ├── test │ │ │ ├── database.yml │ │ │ ├── schema.rb │ │ │ ├── abstract_unit.rb │ │ │ └── fixtures │ │ │ │ ├── mixin.rb │ │ │ │ └── mixins.yml │ │ └── init.rb │ └── gravatar │ │ ├── .gitignore │ │ ├── init.rb │ │ └── about.yml └── generators │ ├── redmine_plugin │ └── templates │ │ ├── README.rdoc │ │ ├── routes.rb │ │ ├── test_helper.rb.erb │ │ ├── en_rails_i18n.yml │ │ └── init.rb.erb │ ├── redmine_plugin_controller │ ├── templates │ │ ├── helper.rb.erb │ │ ├── view.html.erb │ │ ├── controller.rb.erb │ │ └── functional_test.rb.erb │ └── USAGE │ ├── redmine_plugin_model │ ├── templates │ │ ├── model.rb.erb │ │ └── unit_test.rb.erb │ └── USAGE │ └── redmine_plugin_migration │ ├── USAGE │ └── templates │ └── migration.rb.tt ├── themes ├── README └── ruby-lang │ └── images │ └── ruby-logo.png ├── files └── delete.me ├── log └── delete.me ├── plugins ├── README ├── redmineup_tags │ ├── Gemfile │ ├── assets │ │ └── images │ │ │ └── tag-icon.png │ ├── app │ │ └── views │ │ │ ├── tags │ │ │ ├── _select2_transformation_rules.html.erb │ │ │ └── _additional_assets.html.erb │ │ │ ├── issue_tags │ │ │ └── edit.js.erb │ │ │ └── issues │ │ │ └── _tags_sidebar.html.erb │ └── test │ │ └── fixtures │ │ └── tags.yml ├── redmica_s3 │ ├── Gemfile │ ├── .gitignore │ └── test │ │ └── test_helper.rb └── redmine_bugs_ruby_lang │ ├── Rakefile │ ├── lib │ ├── redmine_mailing_list_integration.rb │ └── redmine_mailing_list_integration │ │ └── receptors │ │ └── default_receptor.rb │ ├── assets │ ├── images │ │ └── mailing_list.png │ └── stylesheets │ │ └── mailing_list_integration.css │ ├── config │ └── routes.rb │ ├── .gitignore │ ├── db │ └── migrate │ │ └── 20190518145352_add_issues_lang.rb │ └── app │ ├── models │ └── based_on_mail.rb │ └── views │ └── mailing_lists │ └── new.html.erb ├── app ├── javascript │ ├── application.js │ └── controllers │ │ ├── index.js │ │ └── application.js ├── views │ ├── reactions │ │ ├── create.js.erb │ │ ├── destroy.js.erb │ │ └── _replace_button.js.erb │ ├── wiki │ │ ├── show.pdf.erb │ │ ├── export.pdf.erb │ │ ├── new.js.erb │ │ └── _content.html.erb │ ├── attachments │ │ ├── show.api.rsb │ │ ├── upload.api.rsb │ │ ├── file.html.erb │ │ ├── destroy.js.erb │ │ └── image.html.erb │ ├── issues │ │ ├── index.pdf.erb │ │ ├── show.pdf.erb │ │ ├── bulk_edit.js.erb │ │ ├── edit.html.erb │ │ ├── _sidebar.html.erb │ │ └── _action_menu_edit.html.erb │ ├── users │ │ ├── _memberships.html.erb │ │ ├── destroy_membership.js.erb │ │ └── _auto_watch_on.html.erb │ ├── groups │ │ ├── _memberships.html.erb │ │ ├── remove_user.js.erb │ │ ├── autocomplete_for_user.js.erb │ │ ├── destroy_membership.js.erb │ │ ├── edit.html.erb │ │ ├── new_users.js.erb │ │ ├── add_users.js.erb │ │ ├── _general.html.erb │ │ ├── new_users.html.erb │ │ └── index.api.rsb │ ├── mailer │ │ ├── register.text.erb │ │ ├── test_email.text.erb │ │ ├── register.html.erb │ │ ├── account_activated.text.erb │ │ ├── account_activation_request.text.erb │ │ ├── test_email.html.erb │ │ ├── account_activated.html.erb │ │ ├── document_added.text.erb │ │ ├── account_activation_request.html.erb │ │ ├── attachments_added.text.erb │ │ ├── news_comment_added.text.erb │ │ ├── attachments_added.html.erb │ │ ├── lost_password.text.erb │ │ ├── document_added.html.erb │ │ ├── news_comment_added.html.erb │ │ ├── lost_password.html.erb │ │ ├── security_notification.text.erb │ │ ├── wiki_content_added.text.erb │ │ ├── issue_add.html.erb │ │ ├── issue_add.text.erb │ │ ├── wiki_content_added.html.erb │ │ ├── settings_updated.text.erb │ │ └── wiki_content_updated.text.erb │ ├── imports │ │ ├── mapping.js.erb │ │ ├── _issues_mapping.js.erb │ │ ├── _users_mapping.js.erb │ │ ├── _time_entries_mapping.js.erb │ │ ├── _users_mapping.html.erb │ │ └── _issues_saved_objects.html.erb │ ├── timelog │ │ ├── _sidebar.html.erb │ │ ├── bulk_edit.js.erb │ │ ├── edit.js.erb │ │ ├── new.js.erb │ │ └── edit.html.erb │ ├── common │ │ ├── _image.html.erb │ │ ├── error_messages.api.rsb │ │ ├── _markup.html.erb │ │ ├── _no_preview.html.erb │ │ └── _preview.html.erb │ ├── repositories │ │ ├── remove_related_issue.js.erb │ │ ├── new.js.erb │ │ ├── new.html.erb │ │ └── edit.html.erb │ ├── admin │ │ ├── _menu.html.erb │ │ └── index.html.erb │ ├── watchers │ │ ├── autocomplete_for_user.html.erb │ │ ├── destroy.js.erb │ │ ├── append.js.erb │ │ ├── new.js.erb │ │ └── _set_watcher.js.erb │ ├── projects │ │ ├── _board.html.erb │ │ ├── _sidebar.html.erb │ │ ├── settings.html.erb │ │ ├── _edit.html.erb │ │ ├── bookmark.js.erb │ │ ├── autocomplete.js.erb │ │ └── new.html.erb │ ├── email_addresses │ │ ├── index.html.erb │ │ └── index.js.erb │ ├── account │ │ └── logout.html.erb │ ├── members │ │ ├── edit.html.erb │ │ ├── autocomplete.js.erb │ │ ├── destroy.js.erb │ │ ├── new.js.erb │ │ ├── edit.js.erb │ │ ├── update.js.erb │ │ └── new.html.erb │ ├── my │ │ ├── blocks │ │ │ ├── _news.html.erb │ │ │ ├── _calendar.html.erb │ │ │ ├── _documents.html.erb │ │ │ └── _activity.html.erb │ │ ├── remove_block.js.erb │ │ ├── update_page.js.erb │ │ ├── show_api_key.html.erb │ │ ├── add_block.js.erb │ │ └── show_api_key.js.erb │ ├── versions │ │ ├── status_by.js.erb │ │ ├── new.js.erb │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ └── create.js.erb │ ├── principal_memberships │ │ ├── edit.html.erb │ │ ├── destroy.js.erb │ │ ├── edit.js.erb │ │ └── new.html.erb │ ├── custom_fields │ │ ├── new.js.erb │ │ ├── formats │ │ │ ├── _attachment.html.erb │ │ │ ├── _bool.html.erb │ │ │ ├── _link.html.erb │ │ │ ├── _date.html.erb │ │ │ ├── _progressbar.html.erb │ │ │ └── _numeric.html.erb │ │ └── edit.html.erb │ ├── issue_categories │ │ ├── new.js.erb │ │ ├── _form.html.erb │ │ ├── create.js.erb │ │ ├── new.html.erb │ │ ├── show.api.rsb │ │ └── edit.html.erb │ ├── roles │ │ ├── index.api.rsb │ │ ├── edit.html.erb │ │ └── new.html.erb │ ├── issue_relations │ │ ├── destroy.js.erb │ │ ├── show.api.rsb │ │ ├── create.js.erb │ │ └── index.api.rsb │ ├── trackers │ │ ├── edit.html.erb │ │ └── new.html.erb │ ├── svg_icons │ │ └── index.html.erb │ ├── layouts │ │ ├── mailer.text.erb │ │ └── admin.html.erb │ ├── settings │ │ ├── edit.html.erb │ │ └── _api.html.erb │ ├── auth_sources │ │ └── _form.html.erb │ ├── boards │ │ ├── new.html.erb │ │ └── edit.html.erb │ ├── queries │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ └── index.api.rsb │ ├── documents │ │ ├── edit.html.erb │ │ └── new.html.erb │ ├── issue_statuses │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ └── index.api.rsb │ ├── workflows │ │ └── _action_menu.html.erb │ ├── sudo_mode │ │ └── new.js.erb │ ├── messages │ │ └── quote.js.erb │ ├── twofa │ │ └── _twofa_code_form.html.erb │ ├── doorkeeper │ │ ├── applications │ │ │ ├── new.html.erb │ │ │ └── edit.html.erb │ │ └── authorizations │ │ │ ├── error.html.erb │ │ │ └── show.html.erb │ └── reports │ │ └── issue_report_details.html.erb ├── assets │ ├── images │ │ ├── add.png │ │ ├── copy.png │ │ ├── edit.png │ │ ├── fav.png │ │ ├── feed.png │ │ ├── help.png │ │ ├── link.png │ │ ├── move.png │ │ ├── news.png │ │ ├── save.png │ │ ├── time.png │ │ ├── true.png │ │ ├── user.png │ │ ├── cancel.png │ │ ├── close.png │ │ ├── comment.png │ │ ├── delete.png │ │ ├── email.png │ │ ├── false.png │ │ ├── fav_off.png │ │ ├── favicon.ico │ │ ├── files │ │ │ ├── c.png │ │ │ ├── css.png │ │ │ ├── js.png │ │ │ ├── pdf.png │ │ │ ├── php.png │ │ │ ├── xml.png │ │ │ ├── zip.png │ │ │ ├── csharp.png │ │ │ ├── html.png │ │ │ ├── image.png │ │ │ ├── java.png │ │ │ ├── ruby.png │ │ │ ├── text.png │ │ │ └── default.png │ │ ├── folder.png │ │ ├── group.png │ │ ├── history.png │ │ ├── loading.gif │ │ ├── locked.png │ │ ├── message.png │ │ ├── package.png │ │ ├── plugin.png │ │ ├── reload.png │ │ ├── reorder.png │ │ ├── report.png │ │ ├── stats.png │ │ ├── ticket.png │ │ ├── unlock.png │ │ ├── warning.png │ │ ├── zoom_in.png │ │ ├── 3_bullets.png │ │ ├── anonymous.png │ │ ├── arrow_up.png │ │ ├── bullet_go.png │ │ ├── calendar.png │ │ ├── changeset.png │ │ ├── close_hl.png │ │ ├── comments.png │ │ ├── copy_link.png │ │ ├── document.png │ │ ├── download.png │ │ ├── duplicate.png │ │ ├── email_add.png │ │ ├── external.png │ │ ├── hourglass.png │ │ ├── lightning.png │ │ ├── magnifier.png │ │ ├── projects.png │ │ ├── sort_asc.png │ │ ├── sort_desc.png │ │ ├── tag_blue.png │ │ ├── task_done.png │ │ ├── task_late.png │ │ ├── task_todo.png │ │ ├── textfield.png │ │ ├── ticket_go.png │ │ ├── time_add.png │ │ ├── wiki_edit.png │ │ ├── zoom_out.png │ │ ├── arrow_down.png │ │ ├── arrow_left.png │ │ ├── arrow_right.png │ │ ├── attachment.png │ │ ├── bullet_add.png │ │ ├── bullet_black.png │ │ ├── bullet_blue.png │ │ ├── bullet_end.png │ │ ├── database_go.png │ │ ├── database_key.png │ │ ├── exclamation.png │ │ ├── folder_open.png │ │ ├── link_break.png │ │ ├── server_key.png │ │ ├── tag_blue_add.png │ │ ├── ticket_edit.png │ │ ├── ticket_note.png │ │ ├── toggle_check.png │ │ ├── transparent.png │ │ ├── bullet_delete.png │ │ ├── bullet_diamond.png │ │ ├── bullet_orange.png │ │ ├── bullet_purple.png │ │ ├── email_disabled.png │ │ ├── milestone_done.png │ │ ├── milestone_late.png │ │ ├── milestone_todo.png │ │ ├── project_marker.png │ │ ├── table_multiple.png │ │ ├── textfield_key.png │ │ ├── ticket_checked.png │ │ ├── version_marker.png │ │ ├── folder_open_add.png │ │ ├── jstoolbar │ │ │ ├── bt_bq.png │ │ │ ├── bt_code.png │ │ │ ├── bt_del.png │ │ │ ├── bt_em.png │ │ │ ├── bt_h1.png │ │ │ ├── bt_h2.png │ │ │ ├── bt_h3.png │ │ │ ├── bt_img.png │ │ │ ├── bt_ins.png │ │ │ ├── bt_link.png │ │ │ ├── bt_ol.png │ │ │ ├── bt_pre.png │ │ │ ├── bt_tl.png │ │ │ ├── bt_ul.png │ │ │ ├── bt_strong.png │ │ │ ├── bt_table.png │ │ │ ├── bt_bq_remove.png │ │ │ ├── bt_precode.png │ │ │ └── checklist.svg │ │ ├── tag_blue_delete.png │ │ ├── task_parent_end.png │ │ ├── text_list_bullets.png │ │ ├── bullet_toggle_minus.png │ │ ├── bullet_toggle_plus.png │ │ ├── folder_open_orange.png │ │ ├── chevron-right-idnt.svg │ │ ├── search.svg │ │ └── chevron-down.svg │ ├── fonts │ │ ├── NotoSans-Bold.woff2 │ │ ├── NotoSans-Italic.woff2 │ │ ├── NotoSans-Regular.woff2 │ │ └── NotoSans-BoldItalic.woff2 │ ├── themes │ │ └── classic │ │ │ └── images │ │ │ ├── home.png │ │ │ └── wrench.png │ └── stylesheets │ │ └── jquery │ │ └── images │ │ ├── ui-icons_444444_256x240.png │ │ ├── ui-icons_555555_256x240.png │ │ ├── ui-icons_777620_256x240.png │ │ ├── ui-icons_777777_256x240.png │ │ ├── ui-icons_cc0000_256x240.png │ │ └── ui-icons_ffffff_256x240.png └── jobs │ └── application_job.rb ├── .stylelintignore ├── bin ├── rake ├── importmap ├── bundle ├── rails └── about ├── extra └── sample_plugin │ ├── assets │ ├── stylesheets │ │ └── example.css │ └── images │ │ └── it_works.png │ ├── app │ └── views │ │ ├── my │ │ └── blocks │ │ │ └── _sample_block.html.erb │ │ ├── settings │ │ └── _sample_plugin_settings.html.erb │ │ └── example │ │ └── say_goodbye.html.erb │ └── config │ ├── locales │ ├── en.yml │ └── fr.yml │ └── routes.rb ├── config ├── initializers │ ├── 20-mime_types.rb │ ├── airbrake.rb │ ├── doorkeeper.rb │ └── good_job.rb ├── environments │ ├── test_pgsql.rb │ └── test_sqlite3.rb └── importmap.rb ├── db └── migrate │ ├── 20251016024310_drop_heart.rb │ ├── 20160529063352_add_roles_settings.rb │ ├── 105_build_projects_tree.rb │ ├── 20161220091118_add_index_on_issues_parent_id.rb │ ├── 20200826153401_add_twofa_scheme_to_user.rb │ ├── 20211213122102_remove_open_id_setting.rb │ ├── 20170723112801_rename_comments_to_content.rb │ ├── 20211213122100_remove_identity_url_from_users.rb │ ├── 20140903143914_add_password_changed_at_to_user.rb │ ├── 20190315102101_add_trackers_description.rb │ ├── 20210801145548_remove_bcc_recipients_setting.rb │ ├── 20161126094932_add_index_on_changesets_issues_issue_id.rb │ ├── 20210704125704_add_twofa_required_to_groups.rb │ ├── 20161002133421_add_index_on_member_roles_inherited_from.rb │ ├── 20170207050700_add_index_on_disk_filename_to_attachments.rb │ ├── 20241213003659_add_unique_index_to_projects_identifier.rb │ ├── 20090704172350_populate_users_type.rb │ ├── 20150528084820_add_roles_all_roles_managed.rb │ ├── 20220806215628_add_default_time_entry_activity_to_roles.rb │ ├── 20200826153402_add_totp_to_user.rb │ ├── 20121209123234_add_queries_type.rb │ ├── 053_add_changes_branch.rb │ ├── 20110401192910_add_index_to_users_type.rb │ ├── 20130713111657_add_queries_options.rb │ ├── 20150528093249_add_unique_index_on_roles_managed_roles.rb │ ├── 052_add_changes_revision.rb │ ├── 054_add_changesets_scmid.rb │ ├── 063_add_roles_permissions.rb │ ├── 20091220183727_add_index_to_settings_name.rb │ ├── 20110223180944_add_users_salt.rb │ ├── 20120731164049_add_boards_parent_id.rb │ ├── 20121209123358_update_queries_to_sti.rb │ ├── 20091017214308_add_missing_indexes_to_news.rb │ ├── 20120714122000_add_workflows_type.rb │ ├── 20180913072918_add_verify_peer_to_auth_sources.rb │ ├── 071_add_queries_column_names.rb │ ├── 083_add_messages_sticky.rb │ ├── 087_change_projects_description_to_text.rb │ ├── 108_add_identity_url_to_users.rb │ ├── 20090425161243_add_queries_group_by.rb │ ├── 20090503121510_drop_members_role_id.rb │ ├── 20091017213444_add_missing_indexes_to_tokens.rb │ ├── 20240213101801_add_queries_description.rb │ ├── 059_add_roles_assignable.rb │ ├── 080_add_users_type.rb │ ├── 082_add_messages_locked.rb │ ├── 20090614091200_fix_messages_sticky_null.rb │ ├── 20130215111127_add_issues_closed_on.rb │ ├── 037_add_project_identifier.rb │ ├── 061_add_roles_builtin.rb │ ├── 064_drop_permissions.rb │ ├── 069_add_issues_estimated_hours.rb │ ├── 20090323224724_add_type_to_enumerations.rb │ ├── 20120301153455_add_auth_sources_filter.rb │ ├── 20120707064544_add_auth_sources_timeout.rb │ ├── 20120714122100_update_workflows_to_sti.rb │ ├── 20190510070108_add_unique_id_to_import_items.rb │ ├── 051_add_project_status.rb │ ├── 089_add_attachments_description.rb │ ├── 100_add_changesets_user_id.rb │ ├── 20090312172426_add_queries_sort_criteria.rb │ ├── 20091017213757_add_missing_indexes_to_boards.rb │ ├── 20121026003537_populate_enumerations_position_name.rb │ ├── 20150113213955_add_email_addresses_user_id_index.rb │ ├── 057_add_versions_wiki_page_title.rb │ ├── 077_remove_issue_statuses_html_color.rb │ ├── 095_add_wiki_pages_parent_id.rb │ ├── 20091017213332_add_missing_indexes_to_documents.rb │ ├── 20131005100610_add_repositories_created_on.rb │ ├── 20131210180802_add_custom_fields_description.rb │ ├── 20161001122012_add_tracker_id_index_to_workflows.rb │ ├── 20170418090031_add_view_news_to_all_existing_roles.rb │ ├── 009_add_hide_mail_pref.rb │ ├── 074_add_auth_sources_tls.rb │ ├── 079_add_user_preferences_time_zone.rb │ ├── 20110511000000_add_repositories_extra_info.rb │ ├── 20120115143024_add_repositories_identifier.rb │ ├── 20131124175346_add_custom_fields_format_store.rb │ ├── 011_add_news_comments_count.rb │ ├── 088_add_custom_fields_default_value.rb │ ├── 102_add_custom_fields_editable.rb │ ├── 20091017212938_add_missing_indexes_to_repositories.rb │ ├── 20091017214440_add_missing_indexes_to_wiki_contents.rb │ ├── 20091017214720_add_missing_indexes_to_wiki_redirects.rb │ ├── 20100313171051_add_index_on_issues_nested_set.rb │ ├── 20120705074331_add_trackers_fields_bits.rb │ ├── 20121213084931_add_attachments_disk_directory.rb │ ├── 20170419144536_add_view_messages_to_all_existing_roles.rb │ ├── 20230818020734_add_status_description.rb │ ├── 031_add_repository_root_url.rb │ ├── 090_change_versions_name_limit.rb │ ├── 106_remove_projects_projects_count.rb │ ├── 044_set_language_length_to_five.rb │ ├── 086_add_custom_fields_searchable.rb │ ├── 093_add_wiki_pages_protected.rb │ ├── 20090704172358_add_member_roles_inherited_from.rb │ ├── 20091017213257_add_missing_indexes_to_auth_sources.rb │ ├── 20091017213835_add_missing_indexes_to_user_preferences.rb │ ├── 20110412065600_add_issues_is_private.rb │ ├── 20120127174243_add_custom_fields_multiple.rb │ ├── 20121026002032_add_enumerations_position_name.rb │ ├── 20151021185456_change_auth_sources_filter_to_text.rb │ ├── 023_add_tracker_is_in_roadmap.rb │ ├── 058_add_issue_categories_assigned_to_id.rb │ ├── 092_change_changes_from_revision_to_string.rb │ ├── 20091017213113_add_missing_indexes_to_enumerations.rb │ ├── 20091017214107_add_missing_indexes_to_custom_fields.rb │ ├── 20091017214519_add_missing_indexes_to_custom_values.rb │ ├── 20120115143100_add_repositories_is_default.rb │ ├── 20150528092912_create_roles_managed_roles.rb │ ├── 20210728131544_drop_is_in_chlog_column.rb │ ├── 20220224194639_delete_orphaned_time_entry_activities.rb │ ├── 20220714093010_add_journal_updated_by.rb │ ├── 038_add_custom_field_is_filter.rb │ ├── 073_add_enumerations_is_default.rb │ ├── 20120930112914_add_journals_private_notes.rb │ ├── 20250611092227_enable_pkce.rb │ ├── 20090318181151_extend_settings_name.rb │ ├── 20091017213642_add_missing_indexes_to_issue_categories.rb │ ├── 20130202090625_add_projects_inherit_members.rb │ ├── 20130729070143_add_users_must_change_passwd.rb │ ├── 048_allow_null_version_effective_date.rb │ ├── 060_change_changesets_committer_limit.rb │ ├── 065_add_settings_updated_on.rb │ ├── 075_add_members_mail_notification.rb │ ├── 084_change_auth_sources_account_limit.rb │ ├── 20090401231134_add_active_field_to_enumerations.rb │ ├── 20090406161854_add_parent_id_to_enumerations.rb │ ├── 20091108092559_add_versions_status.rb │ ├── 20151024082034_add_tokens_updated_on.rb │ ├── 20170302015225_change_attachments_digest_limit_to_64.rb │ ├── 036_add_changeset_commit_date.rb │ ├── 20091123212029_add_default_done_ratio_to_issue_status.rb │ ├── 20110228000000_add_repositories_log_encoding.rb │ ├── 20190620135549_change_roles_name_limit.rb │ ├── 104_add_projects_lft_and_rgt.rb │ ├── 20101114115359_change_projects_identifier_limit.rb │ ├── 20110224000000_add_repositories_path_encoding.rb │ ├── 20141109112308_add_roles_users_visibility.rb │ ├── 20241007144951_change_text_formatting_from_markdown_to_common_mark.rb │ ├── 070_change_attachments_content_type_limit.rb │ ├── 20091205124427_add_versions_sharing.rb │ ├── 20150730122735_create_import_items.rb │ ├── 20210705111300_add_projects_default_issue_query_id.rb │ ├── 020_add_role_position.rb │ ├── 094_change_projects_homepage_limit.rb │ ├── 20090214190337_add_watchers_user_id_type_index.rb │ ├── 20091220183509_add_lft_and_rgt_indexes_to_projects.rb │ ├── 20100129193813_update_mail_notification_values.rb │ ├── 20100221100219_add_index_on_changesets_scmid.rb │ ├── 20110408103312_add_roles_issues_visibility.rb │ ├── 20161010081600_change_journals_notes_limit.rb │ ├── 20220714093000_add_journal_updated_on.rb │ ├── 20241103150135_change_settings_value_limit.rb │ ├── 103_set_custom_fields_editable.rb │ ├── 20091017214015_add_missing_indexes_to_members.rb │ ├── 20091017214136_add_missing_indexes_to_queries.rb │ ├── 20150921204850_change_time_entries_comments_limit_to_1024.rb │ ├── 20221004172825_ensure_text_formatting_setting_is_stored_in_db.rb │ ├── 20140228130325_change_changesets_comments_limit.rb │ ├── 20161010081301_change_issues_description_limit.rb │ ├── 20190315094151_change_custom_values_value_limit.rb │ ├── 20250530185658_ensure_wiki_tablesort_setting_is_stored_in_db.rb │ ├── 021_add_tracker_position.rb │ ├── 055_add_repositories_type.rb │ ├── 066_add_custom_value_customized_index.rb │ ├── 20120205111326_change_users_login_limit.rb │ ├── 20150526183158_add_roles_time_entries_visibility.rb │ ├── 20231012112407_remove_mention_users_permission.rb │ ├── 005_issue_start_date.rb │ ├── 008_create_user_preferences.rb │ ├── 20090503121501_create_member_roles.rb │ └── 20090503121505_populate_member_roles.rb ├── docker-compose.yml ├── package.json ├── Procfile └── Rakefile /README.rdoc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Aptfile: -------------------------------------------------------------------------------- 1 | git 2 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/mailers/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/models/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tmp/test/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/controllers/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tmp/thumbnails/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/plugin_assets/empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.slugignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /test 3 | -------------------------------------------------------------------------------- /lib/plugins/acts_as_tree/test/database.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/plugins/acts_as_tree/test/schema.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/files/invalid-Shift_JIS.csv: -------------------------------------------------------------------------------- 1 | Ȁ -------------------------------------------------------------------------------- /lib/plugins/acts_as_tree/test/abstract_unit.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/plugins/acts_as_tree/test/fixtures/mixin.rb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/plugins/gravatar/.gitignore: -------------------------------------------------------------------------------- 1 | coverage 2 | -------------------------------------------------------------------------------- /test/fixtures/files/japanese-utf-8.txt: -------------------------------------------------------------------------------- 1 | 日本語 2 | -------------------------------------------------------------------------------- /themes/README: -------------------------------------------------------------------------------- 1 | Put your Redmine themes here. 2 | -------------------------------------------------------------------------------- /files/delete.me: -------------------------------------------------------------------------------- 1 | default directory for uploaded files -------------------------------------------------------------------------------- /lib/plugins/acts_as_tree/test/fixtures/mixins.yml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /log/delete.me: -------------------------------------------------------------------------------- 1 | default directory for log files 2 | -------------------------------------------------------------------------------- /plugins/README: -------------------------------------------------------------------------------- 1 | Put your Redmine plugins here. 2 | -------------------------------------------------------------------------------- /plugins/redmineup_tags/Gemfile: -------------------------------------------------------------------------------- 1 | gem 'redmineup' 2 | -------------------------------------------------------------------------------- /app/javascript/application.js: -------------------------------------------------------------------------------- 1 | import "controllers" 2 | -------------------------------------------------------------------------------- /plugins/redmica_s3/Gemfile: -------------------------------------------------------------------------------- 1 | gem 'aws-sdk-s3', '~> 1.0' 2 | -------------------------------------------------------------------------------- /test/fixtures/views/_partial.html.erb: -------------------------------------------------------------------------------- 1 | partial html 2 | -------------------------------------------------------------------------------- /.stylelintignore: -------------------------------------------------------------------------------- 1 | public/stylesheets/jquery/jquery-ui-*.css 2 | -------------------------------------------------------------------------------- /test/fixtures/plugins/foo_plugin/assets/stylesheets/foo.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/reactions/create.js.erb: -------------------------------------------------------------------------------- 1 | <%= render 'replace_button' %> 2 | -------------------------------------------------------------------------------- /test/fixtures/files/hello.js: -------------------------------------------------------------------------------- 1 | document.write('Hello, World!'); 2 | -------------------------------------------------------------------------------- /app/views/reactions/destroy.js.erb: -------------------------------------------------------------------------------- 1 | <%= render 'replace_button' %> 2 | -------------------------------------------------------------------------------- /app/views/wiki/show.pdf.erb: -------------------------------------------------------------------------------- 1 | <%= raw wiki_page_to_pdf(@page, @project) %> -------------------------------------------------------------------------------- /plugins/redmica_s3/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .swp 3 | Gemfile.lock 4 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/Rakefile: -------------------------------------------------------------------------------- 1 | require "bundler/gem_tasks" 2 | -------------------------------------------------------------------------------- /app/views/attachments/show.api.rsb: -------------------------------------------------------------------------------- 1 | render_api_attachment(@attachment, api) 2 | -------------------------------------------------------------------------------- /app/views/wiki/export.pdf.erb: -------------------------------------------------------------------------------- 1 | <%= raw wiki_pages_to_pdf(@pages, @project) %> -------------------------------------------------------------------------------- /app/views/issues/index.pdf.erb: -------------------------------------------------------------------------------- 1 | <%= raw issues_to_pdf(@issues, @project, @query) %> -------------------------------------------------------------------------------- /app/views/users/_memberships.html.erb: -------------------------------------------------------------------------------- 1 | <%= render_principal_memberships @user %> 2 | -------------------------------------------------------------------------------- /test/fixtures/files/testfile.md: -------------------------------------------------------------------------------- 1 | # Header 1 2 | ## Header 2 3 | ### Header 3 4 | -------------------------------------------------------------------------------- /app/views/groups/_memberships.html.erb: -------------------------------------------------------------------------------- 1 | <%= render_principal_memberships @group %> 2 | -------------------------------------------------------------------------------- /app/views/issues/show.pdf.erb: -------------------------------------------------------------------------------- 1 | <%= raw issue_to_pdf(@issue, :journals => @journals) %> -------------------------------------------------------------------------------- /app/views/mailer/register.text.erb: -------------------------------------------------------------------------------- 1 | <%= l(:mail_body_register) %> 2 | <%= @url %> 3 | -------------------------------------------------------------------------------- /app/views/imports/mapping.js.erb: -------------------------------------------------------------------------------- 1 | <%= render :partial => "#{import_partial_prefix}_mapping" %> 2 | -------------------------------------------------------------------------------- /app/views/timelog/_sidebar.html.erb: -------------------------------------------------------------------------------- 1 | <%= render_sidebar_queries(TimeEntryQuery, @project) %> 2 | -------------------------------------------------------------------------------- /test/fixtures/files/import_dates_ja.csv: -------------------------------------------------------------------------------- 1 | subject;start 2 | Date in %Y/%m/%d format;2019/05/28; 3 | -------------------------------------------------------------------------------- /test/fixtures/files/testfile.textile: -------------------------------------------------------------------------------- 1 | h1. Header 1 2 | 3 | h2. Header 2 4 | 5 | h3. Header 3 6 | -------------------------------------------------------------------------------- /test/fixtures/files/unclosed_quoted_field.csv: -------------------------------------------------------------------------------- 1 | subject;description 2 | foo;"Unclosed quoted field -------------------------------------------------------------------------------- /app/assets/images/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/add.png -------------------------------------------------------------------------------- /app/assets/images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/copy.png -------------------------------------------------------------------------------- /app/assets/images/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/edit.png -------------------------------------------------------------------------------- /app/assets/images/fav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/fav.png -------------------------------------------------------------------------------- /app/assets/images/feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/feed.png -------------------------------------------------------------------------------- /app/assets/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/help.png -------------------------------------------------------------------------------- /app/assets/images/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/link.png -------------------------------------------------------------------------------- /app/assets/images/move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/move.png -------------------------------------------------------------------------------- /app/assets/images/news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/news.png -------------------------------------------------------------------------------- /app/assets/images/save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/save.png -------------------------------------------------------------------------------- /app/assets/images/time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/time.png -------------------------------------------------------------------------------- /app/assets/images/true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/true.png -------------------------------------------------------------------------------- /app/assets/images/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/user.png -------------------------------------------------------------------------------- /app/views/common/_image.html.erb: -------------------------------------------------------------------------------- 1 | <%= image_tag path, :alt => alt, :class => 'filecontent image' %> 2 | -------------------------------------------------------------------------------- /app/views/repositories/remove_related_issue.js.erb: -------------------------------------------------------------------------------- 1 | $('#related-issue-<%= @issue.id %>').remove(); 2 | -------------------------------------------------------------------------------- /test/fixtures/files/testfile.txt: -------------------------------------------------------------------------------- 1 | this is a text file for upload tests 2 | with multiple lines 3 | -------------------------------------------------------------------------------- /app/assets/images/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/cancel.png -------------------------------------------------------------------------------- /app/assets/images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/close.png -------------------------------------------------------------------------------- /app/assets/images/comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/comment.png -------------------------------------------------------------------------------- /app/assets/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/delete.png -------------------------------------------------------------------------------- /app/assets/images/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/email.png -------------------------------------------------------------------------------- /app/assets/images/false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/false.png -------------------------------------------------------------------------------- /app/assets/images/fav_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/fav_off.png -------------------------------------------------------------------------------- /app/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/favicon.ico -------------------------------------------------------------------------------- /app/assets/images/files/c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/c.png -------------------------------------------------------------------------------- /app/assets/images/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/folder.png -------------------------------------------------------------------------------- /app/assets/images/group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/group.png -------------------------------------------------------------------------------- /app/assets/images/history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/history.png -------------------------------------------------------------------------------- /app/assets/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/loading.gif -------------------------------------------------------------------------------- /app/assets/images/locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/locked.png -------------------------------------------------------------------------------- /app/assets/images/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/message.png -------------------------------------------------------------------------------- /app/assets/images/package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/package.png -------------------------------------------------------------------------------- /app/assets/images/plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/plugin.png -------------------------------------------------------------------------------- /app/assets/images/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/reload.png -------------------------------------------------------------------------------- /app/assets/images/reorder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/reorder.png -------------------------------------------------------------------------------- /app/assets/images/report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/report.png -------------------------------------------------------------------------------- /app/assets/images/stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/stats.png -------------------------------------------------------------------------------- /app/assets/images/ticket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/ticket.png -------------------------------------------------------------------------------- /app/assets/images/unlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/unlock.png -------------------------------------------------------------------------------- /app/assets/images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/warning.png -------------------------------------------------------------------------------- /app/assets/images/zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/zoom_in.png -------------------------------------------------------------------------------- /app/views/admin/_menu.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= render_menu :admin_menu %> 3 |
4 | -------------------------------------------------------------------------------- /app/views/mailer/test_email.text.erb: -------------------------------------------------------------------------------- 1 | This is a test email sent by Redmine. 2 | Redmine URL: <%= @url %> 3 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin/templates/README.rdoc: -------------------------------------------------------------------------------- 1 | = <%= file_name %> 2 | 3 | Description goes here 4 | -------------------------------------------------------------------------------- /app/assets/images/3_bullets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/3_bullets.png -------------------------------------------------------------------------------- /app/assets/images/anonymous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/anonymous.png -------------------------------------------------------------------------------- /app/assets/images/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/arrow_up.png -------------------------------------------------------------------------------- /app/assets/images/bullet_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_go.png -------------------------------------------------------------------------------- /app/assets/images/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/calendar.png -------------------------------------------------------------------------------- /app/assets/images/changeset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/changeset.png -------------------------------------------------------------------------------- /app/assets/images/close_hl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/close_hl.png -------------------------------------------------------------------------------- /app/assets/images/comments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/comments.png -------------------------------------------------------------------------------- /app/assets/images/copy_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/copy_link.png -------------------------------------------------------------------------------- /app/assets/images/document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/document.png -------------------------------------------------------------------------------- /app/assets/images/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/download.png -------------------------------------------------------------------------------- /app/assets/images/duplicate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/duplicate.png -------------------------------------------------------------------------------- /app/assets/images/email_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/email_add.png -------------------------------------------------------------------------------- /app/assets/images/external.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/external.png -------------------------------------------------------------------------------- /app/assets/images/files/css.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/css.png -------------------------------------------------------------------------------- /app/assets/images/files/js.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/js.png -------------------------------------------------------------------------------- /app/assets/images/files/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/pdf.png -------------------------------------------------------------------------------- /app/assets/images/files/php.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/php.png -------------------------------------------------------------------------------- /app/assets/images/files/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/xml.png -------------------------------------------------------------------------------- /app/assets/images/files/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/zip.png -------------------------------------------------------------------------------- /app/assets/images/hourglass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/hourglass.png -------------------------------------------------------------------------------- /app/assets/images/lightning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/lightning.png -------------------------------------------------------------------------------- /app/assets/images/magnifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/magnifier.png -------------------------------------------------------------------------------- /app/assets/images/projects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/projects.png -------------------------------------------------------------------------------- /app/assets/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/sort_asc.png -------------------------------------------------------------------------------- /app/assets/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/sort_desc.png -------------------------------------------------------------------------------- /app/assets/images/tag_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/tag_blue.png -------------------------------------------------------------------------------- /app/assets/images/task_done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/task_done.png -------------------------------------------------------------------------------- /app/assets/images/task_late.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/task_late.png -------------------------------------------------------------------------------- /app/assets/images/task_todo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/task_todo.png -------------------------------------------------------------------------------- /app/assets/images/textfield.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/textfield.png -------------------------------------------------------------------------------- /app/assets/images/ticket_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/ticket_go.png -------------------------------------------------------------------------------- /app/assets/images/time_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/time_add.png -------------------------------------------------------------------------------- /app/assets/images/wiki_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/wiki_edit.png -------------------------------------------------------------------------------- /app/assets/images/zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/zoom_out.png -------------------------------------------------------------------------------- /app/views/mailer/register.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:mail_body_register) %>
2 | <%= link_to @url, @url %>

3 | -------------------------------------------------------------------------------- /test/fixtures/plugins/redmine_test_plugin_foo/config/routes.rb: -------------------------------------------------------------------------------- 1 | resources :plugin_articles, only: %i[index] 2 | -------------------------------------------------------------------------------- /app/assets/images/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/arrow_down.png -------------------------------------------------------------------------------- /app/assets/images/arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/arrow_left.png -------------------------------------------------------------------------------- /app/assets/images/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/arrow_right.png -------------------------------------------------------------------------------- /app/assets/images/attachment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/attachment.png -------------------------------------------------------------------------------- /app/assets/images/bullet_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_add.png -------------------------------------------------------------------------------- /app/assets/images/bullet_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_black.png -------------------------------------------------------------------------------- /app/assets/images/bullet_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_blue.png -------------------------------------------------------------------------------- /app/assets/images/bullet_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_end.png -------------------------------------------------------------------------------- /app/assets/images/database_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/database_go.png -------------------------------------------------------------------------------- /app/assets/images/database_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/database_key.png -------------------------------------------------------------------------------- /app/assets/images/exclamation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/exclamation.png -------------------------------------------------------------------------------- /app/assets/images/files/csharp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/csharp.png -------------------------------------------------------------------------------- /app/assets/images/files/html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/html.png -------------------------------------------------------------------------------- /app/assets/images/files/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/image.png -------------------------------------------------------------------------------- /app/assets/images/files/java.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/java.png -------------------------------------------------------------------------------- /app/assets/images/files/ruby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/ruby.png -------------------------------------------------------------------------------- /app/assets/images/files/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/text.png -------------------------------------------------------------------------------- /app/assets/images/folder_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/folder_open.png -------------------------------------------------------------------------------- /app/assets/images/link_break.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/link_break.png -------------------------------------------------------------------------------- /app/assets/images/server_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/server_key.png -------------------------------------------------------------------------------- /app/assets/images/tag_blue_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/tag_blue_add.png -------------------------------------------------------------------------------- /app/assets/images/ticket_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/ticket_edit.png -------------------------------------------------------------------------------- /app/assets/images/ticket_note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/ticket_note.png -------------------------------------------------------------------------------- /app/assets/images/toggle_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/toggle_check.png -------------------------------------------------------------------------------- /app/assets/images/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/transparent.png -------------------------------------------------------------------------------- /app/views/watchers/autocomplete_for_user.html.erb: -------------------------------------------------------------------------------- 1 | <%= principals_check_box_tags 'watcher[user_ids][]', @users %> 2 | -------------------------------------------------------------------------------- /bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require_relative '../config/boot' 3 | require 'rake' 4 | Rake.application.run 5 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_controller/templates/helper.rb.erb: -------------------------------------------------------------------------------- 1 | module <%= @controller_class %>Helper 2 | end 3 | -------------------------------------------------------------------------------- /test/fixtures/asset_path/foo/stylesheets/foo.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | background-image: url("../images/foo.svg"); 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/files/configuration/empty.yml: -------------------------------------------------------------------------------- 1 | default: 2 | 3 | production: 4 | 5 | development: 6 | 7 | test: 8 | -------------------------------------------------------------------------------- /test/fixtures/files/iso8859-1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/files/iso8859-1.txt -------------------------------------------------------------------------------- /app/assets/fonts/NotoSans-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/fonts/NotoSans-Bold.woff2 -------------------------------------------------------------------------------- /app/assets/images/bullet_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_delete.png -------------------------------------------------------------------------------- /app/assets/images/bullet_diamond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_diamond.png -------------------------------------------------------------------------------- /app/assets/images/bullet_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_orange.png -------------------------------------------------------------------------------- /app/assets/images/bullet_purple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_purple.png -------------------------------------------------------------------------------- /app/assets/images/email_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/email_disabled.png -------------------------------------------------------------------------------- /app/assets/images/files/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/files/default.png -------------------------------------------------------------------------------- /app/assets/images/milestone_done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/milestone_done.png -------------------------------------------------------------------------------- /app/assets/images/milestone_late.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/milestone_late.png -------------------------------------------------------------------------------- /app/assets/images/milestone_todo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/milestone_todo.png -------------------------------------------------------------------------------- /app/assets/images/project_marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/project_marker.png -------------------------------------------------------------------------------- /app/assets/images/table_multiple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/table_multiple.png -------------------------------------------------------------------------------- /app/assets/images/textfield_key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/textfield_key.png -------------------------------------------------------------------------------- /app/assets/images/ticket_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/ticket_checked.png -------------------------------------------------------------------------------- /app/assets/images/version_marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/version_marker.png -------------------------------------------------------------------------------- /app/views/projects/_board.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= render_project_hierarchy(@entries) %> 3 |
4 | -------------------------------------------------------------------------------- /bin/importmap: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | require_relative "../config/application" 4 | require "importmap/commands" 5 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/lib/redmine_mailing_list_integration.rb: -------------------------------------------------------------------------------- 1 | module RedmineMailingListIntegration 2 | end 3 | -------------------------------------------------------------------------------- /app/assets/fonts/NotoSans-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/fonts/NotoSans-Italic.woff2 -------------------------------------------------------------------------------- /app/assets/fonts/NotoSans-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/fonts/NotoSans-Regular.woff2 -------------------------------------------------------------------------------- /app/assets/images/folder_open_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/folder_open_add.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_bq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_bq.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_code.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_del.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_del.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_em.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_em.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_h1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_h1.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_h2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_h2.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_h3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_h3.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_img.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_ins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_ins.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_link.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_ol.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_ol.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_pre.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_tl.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_ul.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_ul.png -------------------------------------------------------------------------------- /app/assets/images/tag_blue_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/tag_blue_delete.png -------------------------------------------------------------------------------- /app/assets/images/task_parent_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/task_parent_end.png -------------------------------------------------------------------------------- /app/assets/images/text_list_bullets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/text_list_bullets.png -------------------------------------------------------------------------------- /app/views/attachments/upload.api.rsb: -------------------------------------------------------------------------------- 1 | api.upload do 2 | api.id @attachment.id 3 | api.token @attachment.token 4 | end 5 | -------------------------------------------------------------------------------- /app/views/email_addresses/index.html.erb: -------------------------------------------------------------------------------- 1 |

<%= @user.name %>

2 | <%= render :partial => 'email_addresses/index' %> 3 | -------------------------------------------------------------------------------- /extra/sample_plugin/assets/stylesheets/example.css: -------------------------------------------------------------------------------- 1 | .icon-example-works { background-image: url(../images/it_works.png); } 2 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin/templates/routes.rb: -------------------------------------------------------------------------------- 1 | # Plugin's routes 2 | # See: http://guides.rubyonrails.org/routing.html 3 | -------------------------------------------------------------------------------- /test/fixtures/asset_path/foo/stylesheets/bar/bar.css: -------------------------------------------------------------------------------- 1 | .foo { 2 | background-image: url("../../images/baz/baz.svg"); 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/custom_fields_projects.yml: -------------------------------------------------------------------------------- 1 | --- 2 | custom_fields_projects_001: 3 | custom_field_id: 9 4 | project_id: 1 5 | -------------------------------------------------------------------------------- /test/fixtures/encoding/iso-8859-1.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/encoding/iso-8859-1.txt -------------------------------------------------------------------------------- /test/fixtures/plugins/foo_plugin/app/models/foo.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | class Foo < ActiveRecord::Base 3 | end 4 | -------------------------------------------------------------------------------- /themes/ruby-lang/images/ruby-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/themes/ruby-lang/images/ruby-logo.png -------------------------------------------------------------------------------- /app/assets/images/bullet_toggle_minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_toggle_minus.png -------------------------------------------------------------------------------- /app/assets/images/bullet_toggle_plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/bullet_toggle_plus.png -------------------------------------------------------------------------------- /app/assets/images/folder_open_orange.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/folder_open_orange.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_strong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_strong.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_table.png -------------------------------------------------------------------------------- /app/assets/themes/classic/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/themes/classic/images/home.png -------------------------------------------------------------------------------- /app/views/account/logout.html.erb: -------------------------------------------------------------------------------- 1 | <%= form_tag(signout_path) do %> 2 |

<%= submit_tag l(:label_logout) %>

3 | <% end %> 4 | -------------------------------------------------------------------------------- /app/views/groups/remove_user.js.erb: -------------------------------------------------------------------------------- 1 | $('#tab-content-users').html('<%= escape_javascript(render :partial => 'groups/users') %>'); 2 | -------------------------------------------------------------------------------- /app/views/mailer/account_activated.text.erb: -------------------------------------------------------------------------------- 1 | <%= l(:notice_account_activated) %> 2 | <%= l(:label_login) %>: <%= @login_url %> 3 | -------------------------------------------------------------------------------- /config/initializers/20-mime_types.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_controller/templates/view.html.erb: -------------------------------------------------------------------------------- 1 |

<%= @controller_class %>Controller#<%= @action_name %>

2 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_model/templates/model.rb.erb: -------------------------------------------------------------------------------- 1 | class <%= @model_class %> < <%= parent_class_name.classify %> 2 | end 3 | -------------------------------------------------------------------------------- /test/fixtures/files/import_iso8859-1.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/files/import_iso8859-1.csv -------------------------------------------------------------------------------- /app/assets/fonts/NotoSans-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/fonts/NotoSans-BoldItalic.woff2 -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_bq_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_bq_remove.png -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/bt_precode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/images/jstoolbar/bt_precode.png -------------------------------------------------------------------------------- /app/assets/themes/classic/images/wrench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/themes/classic/images/wrench.png -------------------------------------------------------------------------------- /app/views/mailer/account_activation_request.text.erb: -------------------------------------------------------------------------------- 1 | <%= l(:mail_body_account_activation_request, @new_user.login) %> 2 | <%= @url %> 3 | -------------------------------------------------------------------------------- /app/views/mailer/test_email.html.erb: -------------------------------------------------------------------------------- 1 |

This is a test email sent by Redmine.
2 | Redmine URL: <%= link_to @url, @url %>

3 | -------------------------------------------------------------------------------- /app/views/members/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= title "#{@member.principal} - #{@member.project}" %> 2 | 3 | <%= render :partial => 'edit' %> 4 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin/templates/test_helper.rb.erb: -------------------------------------------------------------------------------- 1 | # Load the Redmine helper 2 | require_relative '../../../test/test_helper' 3 | -------------------------------------------------------------------------------- /app/views/groups/autocomplete_for_user.js.erb: -------------------------------------------------------------------------------- 1 | $('#users').html('<%= escape_javascript(render_principals_for_new_group_users(@group)) %>'); 2 | -------------------------------------------------------------------------------- /app/views/imports/_issues_mapping.js.erb: -------------------------------------------------------------------------------- 1 | $('#fields-mapping').html('<%= escape_javascript(render :partial => 'issues_fields_mapping') %>'); 2 | -------------------------------------------------------------------------------- /app/views/imports/_users_mapping.js.erb: -------------------------------------------------------------------------------- 1 | $('#fields-mapping').html('<%= escape_javascript(render :partial => 'users_fields_mapping') %>'); 2 | -------------------------------------------------------------------------------- /app/views/my/blocks/_news.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_news_latest)%>

2 | 3 | <%= render :partial => 'news/news', :collection => news %> 4 | -------------------------------------------------------------------------------- /app/views/versions/status_by.js.erb: -------------------------------------------------------------------------------- 1 | $('#status_by').html('<%= escape_javascript(render_issue_status_by(@version, params[:status_by])) %>'); 2 | -------------------------------------------------------------------------------- /extra/sample_plugin/assets/images/it_works.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/extra/sample_plugin/assets/images/it_works.png -------------------------------------------------------------------------------- /lib/generators/redmine_plugin/templates/en_rails_i18n.yml: -------------------------------------------------------------------------------- 1 | # English strings go here for Rails i18n 2 | en: 3 | # my_label: "My label" 4 | -------------------------------------------------------------------------------- /test/fixtures/files/configuration/default.yml: -------------------------------------------------------------------------------- 1 | default: 2 | somesetting: foo 3 | 4 | production: 5 | 6 | development: 7 | 8 | test: 9 | -------------------------------------------------------------------------------- /app/views/common/error_messages.api.rsb: -------------------------------------------------------------------------------- 1 | api.array :errors do 2 | @error_messages.each do |message| 3 | api.error message 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/views/issues/bulk_edit.js.erb: -------------------------------------------------------------------------------- 1 | $('#content').html('<%= escape_javascript(render :template => 'issues/bulk_edit', :formats => [:html]) %>'); 2 | -------------------------------------------------------------------------------- /app/views/repositories/new.js.erb: -------------------------------------------------------------------------------- 1 | $('#content').html('<%= escape_javascript(render :template => 'repositories/new', :formats => [:html]) %>'); 2 | -------------------------------------------------------------------------------- /app/views/timelog/bulk_edit.js.erb: -------------------------------------------------------------------------------- 1 | $('#content').html('<%= escape_javascript(render :template => 'timelog/bulk_edit', :formats => [:html]) %>'); 2 | -------------------------------------------------------------------------------- /plugins/redmineup_tags/assets/images/tag-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/plugins/redmineup_tags/assets/images/tag-icon.png -------------------------------------------------------------------------------- /test/fixtures/files/configuration/no_default.yml: -------------------------------------------------------------------------------- 1 | default: 2 | 3 | production: 4 | 5 | development: 6 | 7 | test: 8 | somesetting: foo 9 | -------------------------------------------------------------------------------- /test/fixtures/repositories/cvs_repository.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/repositories/cvs_repository.tar.gz -------------------------------------------------------------------------------- /test/fixtures/repositories/git_repository.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/repositories/git_repository.tar.gz -------------------------------------------------------------------------------- /app/views/groups/destroy_membership.js.erb: -------------------------------------------------------------------------------- 1 | $('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'groups/memberships') %>'); 2 | -------------------------------------------------------------------------------- /app/views/members/autocomplete.js.erb: -------------------------------------------------------------------------------- 1 | $('#principals_for_new_member').html('<%= escape_javascript(render_principals_for_new_members(@project)) %>'); 2 | -------------------------------------------------------------------------------- /app/views/users/destroy_membership.js.erb: -------------------------------------------------------------------------------- 1 | $('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'users/memberships') %>'); 2 | -------------------------------------------------------------------------------- /test/fixtures/repositories/bazaar_repository.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/repositories/bazaar_repository.tar.gz -------------------------------------------------------------------------------- /test/fixtures/repositories/mercurial_repository.hg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/repositories/mercurial_repository.hg -------------------------------------------------------------------------------- /app/views/groups/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l(:label_group_plural), groups_path], @group.name %> 2 | 3 | <%= render_tabs group_settings_tabs(@group) %> 4 | -------------------------------------------------------------------------------- /app/views/imports/_time_entries_mapping.js.erb: -------------------------------------------------------------------------------- 1 | $('#fields-mapping').html('<%= escape_javascript(render :partial => 'time_entries_fields_mapping') %>'); 2 | -------------------------------------------------------------------------------- /app/views/principal_memberships/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= title "#{@membership.principal} - #{@membership.project}" %> 2 | 3 | <%= render :partial => 'edit' %> 4 | -------------------------------------------------------------------------------- /app/views/projects/_sidebar.html.erb: -------------------------------------------------------------------------------- 1 | <%= render_sidebar_queries(ProjectQuery, @project) %> 2 | <%= call_hook(:view_projects_sidebar_queries_bottom) %> 3 | -------------------------------------------------------------------------------- /app/views/wiki/new.js.erb: -------------------------------------------------------------------------------- 1 | $('#ajax-modal').html('<%= escape_javascript(render :partial => 'wiki/new_modal') %>'); 2 | showModal('ajax-modal', '600px'); 3 | -------------------------------------------------------------------------------- /bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 4 | load Gem.bin_path('bundler', 'bundle') 5 | -------------------------------------------------------------------------------- /test/fixtures/files/2006/07/060719210727_archive.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/files/2006/07/060719210727_archive.zip -------------------------------------------------------------------------------- /test/fixtures/groups_users.yml: -------------------------------------------------------------------------------- 1 | --- 2 | groups_users_001: 3 | group_id: 10 4 | user_id: 8 5 | groups_users_002: 6 | group_id: 11 7 | user_id: 8 8 | -------------------------------------------------------------------------------- /test/fixtures/repositories/git_utf8_repository.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/repositories/git_utf8_repository.tar.gz -------------------------------------------------------------------------------- /app/views/custom_fields/new.js.erb: -------------------------------------------------------------------------------- 1 | $('#content').html('<%= escape_javascript(render :template => 'custom_fields/new', :layout => nil, :formats => [:html]) %>') 2 | -------------------------------------------------------------------------------- /app/views/mailer/account_activated.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:notice_account_activated) %>

2 |

<%= l(:label_login) %>: <%= link_to @login_url, @login_url %>

3 | -------------------------------------------------------------------------------- /app/views/mailer/document_added.text.erb: -------------------------------------------------------------------------------- 1 | <%= @document.title %> (<%= @document.category.name %>) 2 | <%= @document_url %> 3 | 4 | <%= @document.description %> 5 | -------------------------------------------------------------------------------- /app/views/members/destroy.js.erb: -------------------------------------------------------------------------------- 1 | $('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>'); 2 | hideOnLoad(); 3 | -------------------------------------------------------------------------------- /app/views/members/new.js.erb: -------------------------------------------------------------------------------- 1 | $('#ajax-modal').html('<%= escape_javascript(render :partial => 'members/new_modal') %>'); 2 | showModal('ajax-modal', '90%'); 3 | -------------------------------------------------------------------------------- /app/views/versions/new.js.erb: -------------------------------------------------------------------------------- 1 | $('#ajax-modal').html('<%= escape_javascript(render :partial => 'versions/new_modal') %>'); 2 | showModal('ajax-modal', '600px'); 3 | -------------------------------------------------------------------------------- /plugins/redmineup_tags/app/views/tags/_select2_transformation_rules.html.erb: -------------------------------------------------------------------------------- 1 | <%= transform_to_select2('issue_tags', url: auto_complete_redmine_tags_path) %> 2 | -------------------------------------------------------------------------------- /test/fixtures/files/2010/11/101123161450_testfile_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/files/2010/11/101123161450_testfile_1.png -------------------------------------------------------------------------------- /test/fixtures/files/2010/12/101223161450_testfile_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/files/2010/12/101223161450_testfile_2.png -------------------------------------------------------------------------------- /test/fixtures/repositories/filesystem_repository.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/repositories/filesystem_repository.tar.gz -------------------------------------------------------------------------------- /test/fixtures/repositories/subversion_repository.dump.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/repositories/subversion_repository.dump.gz -------------------------------------------------------------------------------- /test/fixtures/themes/foo_theme/stylesheets/application.css: -------------------------------------------------------------------------------- 1 | /* load the default Redmine stylesheet */ 2 | @import url(../../../stylesheets/application.css); 3 | -------------------------------------------------------------------------------- /app/views/attachments/file.html.erb: -------------------------------------------------------------------------------- 1 | <%= render :layout => 'layouts/file' do %> 2 |   3 | <%= render_file_content(@attachment, @content) %> 4 | <% end %> 5 | -------------------------------------------------------------------------------- /app/views/mailer/account_activation_request.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:mail_body_account_activation_request, h(@new_user.login)) %>

2 |

<%= link_to @url, @url %>

3 | -------------------------------------------------------------------------------- /app/views/my/blocks/_calendar.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_calendar) %>

2 | 3 | <%= render :partial => 'common/calendar', :locals => {:calendar => calendar } %> 4 | -------------------------------------------------------------------------------- /config/environments/test_pgsql.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Same as test.rb 4 | instance_eval File.read(File.join(File.dirname(__FILE__), 'test.rb')) 5 | -------------------------------------------------------------------------------- /app/views/groups/new_users.js.erb: -------------------------------------------------------------------------------- 1 | $('#ajax-modal').html('<%= escape_javascript(render :partial => 'groups/new_users_modal') %>'); 2 | showModal('ajax-modal', '700px'); 3 | -------------------------------------------------------------------------------- /app/views/projects/settings.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_settings)%>

2 | 3 | <%= render_tabs project_settings_tabs %> 4 | 5 | <% html_title(l(:label_settings)) -%> 6 | -------------------------------------------------------------------------------- /bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | APP_PATH = File.expand_path('../../config/application', __FILE__) 3 | require_relative '../config/boot' 4 | require 'rails/commands' 5 | -------------------------------------------------------------------------------- /config/environments/test_sqlite3.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Same as test.rb 4 | instance_eval File.read(File.join(File.dirname(__FILE__), 'test.rb')) 5 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/assets/images/mailing_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/plugins/redmine_bugs_ruby_lang/assets/images/mailing_list.png -------------------------------------------------------------------------------- /test/fixtures/asset_path/foo/images/foo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/fixtures/files/2019/05/190511141819_ecookbook-gantt.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/files/2019/05/190511141819_ecookbook-gantt.pdf -------------------------------------------------------------------------------- /app/assets/stylesheets/jquery/images/ui-icons_444444_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/stylesheets/jquery/images/ui-icons_444444_256x240.png -------------------------------------------------------------------------------- /app/assets/stylesheets/jquery/images/ui-icons_555555_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/stylesheets/jquery/images/ui-icons_555555_256x240.png -------------------------------------------------------------------------------- /app/assets/stylesheets/jquery/images/ui-icons_777620_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/stylesheets/jquery/images/ui-icons_777620_256x240.png -------------------------------------------------------------------------------- /app/assets/stylesheets/jquery/images/ui-icons_777777_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/stylesheets/jquery/images/ui-icons_777777_256x240.png -------------------------------------------------------------------------------- /app/assets/stylesheets/jquery/images/ui-icons_cc0000_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/stylesheets/jquery/images/ui-icons_cc0000_256x240.png -------------------------------------------------------------------------------- /app/assets/stylesheets/jquery/images/ui-icons_ffffff_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/app/assets/stylesheets/jquery/images/ui-icons_ffffff_256x240.png -------------------------------------------------------------------------------- /app/views/mailer/attachments_added.text.erb: -------------------------------------------------------------------------------- 1 | <%= @added_to %><% @attachments.each do |attachment | %> 2 | - <%= attachment.filename %><% end %> 3 | 4 | <%= @added_to_url %> 5 | -------------------------------------------------------------------------------- /app/views/my/remove_block.js.erb: -------------------------------------------------------------------------------- 1 | $("#block-<%= escape_javascript @block %>").remove(); 2 | $("#block-select").replaceWith("<%= escape_javascript block_select_tag(@user) %>"); 3 | -------------------------------------------------------------------------------- /db/migrate/20251016024310_drop_heart.rb: -------------------------------------------------------------------------------- 1 | class DropHeart < ActiveRecord::Migration[7.2] 2 | def change 3 | drop_table :hearts if table_exists?(:hearts) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/assets/stylesheets/mailing_list_integration.css: -------------------------------------------------------------------------------- 1 | #admin-menu a.mailing-lists { 2 | background-image: url(../images/mailing_list.png) 3 | } 4 | -------------------------------------------------------------------------------- /test/fixtures/asset_path/foo/images/baz/baz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/fixtures/files/configuration/overrides.yml: -------------------------------------------------------------------------------- 1 | default: 2 | somesetting: foo 3 | 4 | production: 5 | 6 | development: 7 | 8 | test: 9 | somesetting: bar 10 | -------------------------------------------------------------------------------- /test/fixtures/mail_handler/ticket_with_localized_attributes.eml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/mail_handler/ticket_with_localized_attributes.eml -------------------------------------------------------------------------------- /app/views/issue_categories/new.js.erb: -------------------------------------------------------------------------------- 1 | $('#ajax-modal').html('<%= escape_javascript(render :partial => 'issue_categories/new_modal') %>'); 2 | showModal('ajax-modal', '600px'); 3 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_model/USAGE: -------------------------------------------------------------------------------- 1 | Description: 2 | Generates a plugin model. 3 | 4 | Examples: 5 | bundle exec rails generate redmine_plugin_model meetings pool 6 | -------------------------------------------------------------------------------- /test/fixtures/files/2006/07/060719210727_changeset_iso8859-1.diff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/files/2006/07/060719210727_changeset_iso8859-1.diff -------------------------------------------------------------------------------- /test/fixtures/mail_handler/ticket_with_localized_private_flag.eml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ruby/b.r-l.o/ro-6-1/test/fixtures/mail_handler/ticket_with_localized_private_flag.eml -------------------------------------------------------------------------------- /test/fixtures/plugins/foo_plugin/_foo_plugin_settings.html.erb: -------------------------------------------------------------------------------- 1 |

<%= text_field_tag 'settings[sample_setting]', @settings['sample_setting'] %>

2 | -------------------------------------------------------------------------------- /app/views/mailer/news_comment_added.text.erb: -------------------------------------------------------------------------------- 1 | <%= @news.title %> 2 | <%= @news_url %> 3 | 4 | <%= l(:text_user_wrote, :value => @comment.author) %> 5 | 6 | <%= @comment.comments %> 7 | -------------------------------------------------------------------------------- /app/views/members/edit.js.erb: -------------------------------------------------------------------------------- 1 | $("#member-<%= @member.id %>-roles").hide(); 2 | $("#member-<%= @member.id %>-form").html("<%= escape_javascript(render :partial => "edit") %>"); 3 | 4 | -------------------------------------------------------------------------------- /app/views/roles/index.api.rsb: -------------------------------------------------------------------------------- 1 | api.array :roles do 2 | @roles.each do |role| 3 | api.role do 4 | api.id role.id 5 | api.name role.name 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /db/migrate/20160529063352_add_roles_settings.rb: -------------------------------------------------------------------------------- 1 | class AddRolesSettings < ActiveRecord::Migration[4.2] 2 | def change 3 | add_column :roles, :settings, :text 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/fixtures/files/import_dates.csv: -------------------------------------------------------------------------------- 1 | subject;start;due;custom 2 | Valid dates;10/07/2015;12/08/2015;14/07/2015 3 | Invalid start date;04/15/2015;; 4 | Invalid custom date;;;04/15/2015 5 | -------------------------------------------------------------------------------- /test/fixtures/plugins/other_plugin/_other_plugin_settings.html.erb: -------------------------------------------------------------------------------- 1 |

<%= text_field_tag 'settings[sample_setting]', @settings['sample_setting'] %>

2 | -------------------------------------------------------------------------------- /test/fixtures/plugins/redmine_test_plugin_bar/config/routes.rb: -------------------------------------------------------------------------------- 1 | # same path helper name with foo's 2 | get '/bar_plugin_articles', as: :plugin_articles, to: 'bar_plugin_articles#index' 3 | -------------------------------------------------------------------------------- /app/views/my/update_page.js.erb: -------------------------------------------------------------------------------- 1 | <% @updated_blocks.each do |block| %> 2 | $("#block-<%= block %>").replaceWith("<%= escape_javascript render_block(block.to_s, @user) %>"); 3 | <% end %> 4 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | db: 4 | image: postgres:11.13 5 | ports: 6 | - "5432:5432" 7 | environment: 8 | - POSTGRES_HOST_AUTH_METHOD=trust 9 | -------------------------------------------------------------------------------- /plugins/redmineup_tags/app/views/issue_tags/edit.js.erb: -------------------------------------------------------------------------------- 1 | $('#ajax-modal').html('<%= escape_javascript(render :partial => 'issue_tags/edit_modal') %>'); 2 | showModal('ajax-modal', '600px'); 3 | -------------------------------------------------------------------------------- /test/fixtures/files/import_issues_no_data_row.csv: -------------------------------------------------------------------------------- 1 | priority;Subject;start_date;parent;private;progress;custom;"target version";category;user;estimated_hours;tracker;status;database;cf_6; 2 | -------------------------------------------------------------------------------- /app/jobs/application_job.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class ApplicationJob < ActiveJob::Base 4 | include Redmine::JobWrapper 5 | 6 | around_enqueue :keep_current_user 7 | end 8 | -------------------------------------------------------------------------------- /app/views/issue_relations/destroy.js.erb: -------------------------------------------------------------------------------- 1 | $('#relation-<%= @relation.id %>').remove(); 2 | $(".issues-stat").replaceWith('<%= escape_javascript(render_relations_stats(@issue, @relations)) %>') 3 | -------------------------------------------------------------------------------- /db/migrate/105_build_projects_tree.rb: -------------------------------------------------------------------------------- 1 | class BuildProjectsTree < ActiveRecord::Migration[4.2] 2 | def self.up 3 | Project.rebuild_tree! 4 | end 5 | 6 | def self.down 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /db/migrate/20161220091118_add_index_on_issues_parent_id.rb: -------------------------------------------------------------------------------- 1 | class AddIndexOnIssuesParentId < ActiveRecord::Migration[4.2] 2 | def change 3 | add_index :issues, :parent_id 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/fixtures/diffs/issue-13644-1.diff: -------------------------------------------------------------------------------- 1 | --- a.txt 2013-04-05 14:19:39.000000000 +0900 2 | +++ b.txt 2013-04-05 14:19:51.000000000 +0900 3 | @@ -1,3 +1,3 @@ 4 | aaaa 5 | -日本 6 | +日本語 7 | bbbb 8 | -------------------------------------------------------------------------------- /test/fixtures/diffs/issue-13644-2.diff: -------------------------------------------------------------------------------- 1 | --- a.txt 2013-04-05 14:19:39.000000000 +0900 2 | +++ b.txt 2013-04-05 14:19:51.000000000 +0900 3 | @@ -1,3 +1,3 @@ 4 | aaaa 5 | -日本 6 | +にっぽん日本 7 | bbbb 8 | -------------------------------------------------------------------------------- /test/fixtures/diffs/issue-13644-3.diff: -------------------------------------------------------------------------------- 1 | --- a.txt 2013-07-27 06:03:49.133257759 +0900 2 | +++ b.txt 2013-07-27 06:03:58.791221118 +0900 3 | @@ -1,3 +1,3 @@ 4 | aaaa 5 | -日本記 6 | +日本娘 7 | bbbb 8 | -------------------------------------------------------------------------------- /test/fixtures/diffs/issue-13644-4.diff: -------------------------------------------------------------------------------- 1 | --- a.txt 2013-07-27 04:20:45.973229414 +0900 2 | +++ b.txt 2013-07-27 04:20:52.366228105 +0900 3 | @@ -1,3 +1,3 @@ 4 | aaaa 5 | -日本記 6 | +日本誘 7 | bbbb 8 | -------------------------------------------------------------------------------- /app/views/my/blocks/_documents.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_document_plural)%>

2 | 3 |
4 | <%= render :partial => 'documents/document', :collection => documents %> 5 |
-------------------------------------------------------------------------------- /app/views/principal_memberships/destroy.js.erb: -------------------------------------------------------------------------------- 1 | $('#tab-content-memberships').html('<%= escape_javascript(render :partial => 'principal_memberships/index', :locals => {:principal => @principal}) %>'); 2 | -------------------------------------------------------------------------------- /app/views/principal_memberships/edit.js.erb: -------------------------------------------------------------------------------- 1 | $("#member-<%= @membership.id %>-roles").hide(); 2 | $("#member-<%= @membership.id %>-form").html("<%= escape_javascript(render :partial => "edit") %>"); 3 | -------------------------------------------------------------------------------- /bin/about: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | ENV["RAILS_ENV"] ||= "production" 4 | require File.expand_path(File.dirname(__FILE__) + "/../config/environment") 5 | puts 6 | puts Redmine::Info.environment 7 | -------------------------------------------------------------------------------- /config/initializers/airbrake.rb: -------------------------------------------------------------------------------- 1 | Airbrake.configure do |config| 2 | config.project_id = ENV['AIRBRAKE_PROJECT_ID'] 3 | config.project_key = ENV['AIRBRAKE_API_KEY'] 4 | end if Rails.env.production? 5 | -------------------------------------------------------------------------------- /db/migrate/20200826153401_add_twofa_scheme_to_user.rb: -------------------------------------------------------------------------------- 1 | class AddTwofaSchemeToUser < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :users, :twofa_scheme, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20211213122102_remove_open_id_setting.rb: -------------------------------------------------------------------------------- 1 | class RemoveOpenIdSetting < ActiveRecord::Migration[6.1] 2 | def change 3 | Setting.where(:name => 'openid').delete_all 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /plugins/redmineup_tags/test/fixtures/tags.yml: -------------------------------------------------------------------------------- 1 | --- 2 | tag_1: 3 | id: 1 4 | name: first 5 | 6 | tag_2: 7 | id: 2 8 | name: second 9 | 10 | tag_3: 11 | id: 3 12 | name: third 13 | -------------------------------------------------------------------------------- /test/fixtures/diffs/issue-13644-5.diff: -------------------------------------------------------------------------------- 1 | --- a.txt 2013-07-27 05:52:11.415223830 +0900 2 | +++ b.txt 2013-07-27 05:52:18.249190358 +0900 3 | @@ -1,3 +1,3 @@ 4 | aaaa 5 | -日本記ok 6 | +日本誘ok 7 | bbbb 8 | -------------------------------------------------------------------------------- /app/views/mailer/attachments_added.html.erb: -------------------------------------------------------------------------------- 1 | <%= link_to @added_to, @added_to_url %>
2 | 3 | 6 | -------------------------------------------------------------------------------- /app/views/mailer/lost_password.text.erb: -------------------------------------------------------------------------------- 1 | <%= l(:mail_body_lost_password) %> 2 | <%= @url %> 3 | 4 | <%= l(:mail_body_lost_password_validity) %> 5 | 6 | <%= l(:field_login) %>: <%= @token.user.login %> 7 | -------------------------------------------------------------------------------- /db/migrate/20170723112801_rename_comments_to_content.rb: -------------------------------------------------------------------------------- 1 | class RenameCommentsToContent < ActiveRecord::Migration[5.1] 2 | def change 3 | rename_column :comments, :comments, :content 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /extra/sample_plugin/app/views/my/blocks/_sample_block.html.erb: -------------------------------------------------------------------------------- 1 |

Sample block

2 | 3 | You are <%= h(User.current) %> and this is a sample block for My Page added from a plugin. 4 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_migration/USAGE: -------------------------------------------------------------------------------- 1 | Description: 2 | Generates a plugin migration. 3 | 4 | Examples: 5 | bin/rails generate redmine_plugin_migration my_plugin add_new_column_to_table 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": {}, 3 | "devDependencies": { 4 | "stylelint": "^16.10.0" 5 | }, 6 | "engine": { 7 | "node": "20.9.0", 8 | "yarn": "1.22.19" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/views/common/_markup.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= Redmine::WikiFormatting.to_html(markup_text_formatting, Redmine::CodesetUtil.to_utf8_by_setting(markup_text)).html_safe %> 3 |
4 | -------------------------------------------------------------------------------- /app/views/mailer/document_added.html.erb: -------------------------------------------------------------------------------- 1 | <%= link_to(@document.title, @document_url) %> (<%= @document.category.name %>)
2 |
3 | <%= textilizable(@document, :description, :only_path => false) %> 4 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_controller/USAGE: -------------------------------------------------------------------------------- 1 | Description: 2 | Generates a plugin controller. 3 | 4 | Example: 5 | bundle exec rails generate redmine_plugin_controller meetings pools index show vote 6 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_migration/templates/migration.rb.tt: -------------------------------------------------------------------------------- 1 | class <%= @migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>] 2 | def change 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /test/fixtures/files/import_subtasks.csv: -------------------------------------------------------------------------------- 1 | row;tracker;subject;parent;simple relation;delayed relation 2 | 1;bug;Root;;; 3 | 2;bug;Child 1;1;1,4;1 2d 4 | 3;bug;Grand-child;4;4;4 -1d 5 | 4;bug;Child 2;1;1;1 1d 6 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | release: bundle exec rake db:migrate redmine:plugins:migrate RAILS_ENV=production 2 | web: bin/yjit bundle exec puma -C config/puma.rb 3 | worker: RUBYOPT=--yjit bundle exec good_job start --max-threads=5 4 | -------------------------------------------------------------------------------- /app/views/attachments/destroy.js.erb: -------------------------------------------------------------------------------- 1 | $('#attachments_<%= j params[:attachment_id] %>').closest('.attachments_form').find('.add_attachment').show(); 2 | $('#attachments_<%= j params[:attachment_id] %>').remove(); 3 | -------------------------------------------------------------------------------- /app/views/issues/edit.html.erb: -------------------------------------------------------------------------------- 1 |

<%= "#{@issue.tracker_was} ##{@issue.id}" %>

2 | 3 | <%= render :partial => 'edit' %> 4 | <% content_for :header_tags do %> 5 | <%= robot_exclusion_tag %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/members/update.js.erb: -------------------------------------------------------------------------------- 1 | $('#tab-content-members').html('<%= escape_javascript(render :partial => 'projects/settings/members') %>'); 2 | hideOnLoad(); 3 | $("#member-<%= @member.id %>").effect("highlight"); 4 | -------------------------------------------------------------------------------- /app/views/watchers/destroy.js.erb: -------------------------------------------------------------------------------- 1 | <% if @watchables.size == 1 %> 2 | <%= render(:partial => 'watchers/set_watcher', 3 | :locals => {:watched => @watchables, :user => User.current}) %> 4 | <% end %> 5 | -------------------------------------------------------------------------------- /db/migrate/20211213122100_remove_identity_url_from_users.rb: -------------------------------------------------------------------------------- 1 | class RemoveIdentityUrlFromUsers < ActiveRecord::Migration[6.1] 2 | def change 3 | remove_column :users, :identity_url, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/lib/redmine_mailing_list_integration/receptors/default_receptor.rb: -------------------------------------------------------------------------------- 1 | module RedmineMailingListIntegration 2 | module Receptors 3 | DefaultReceptor = DumbReceptor 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/views/my/show_api_key.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l :label_api_access_key %>

2 | 3 |
4 |
<%= @user.api_key %>
5 |
6 | 7 |

<%= link_to l(:button_back), action: 'account' %>

8 | -------------------------------------------------------------------------------- /app/views/projects/_edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= labelled_form_for @project, :html => {:multipart => true} do |f| %> 2 | <%= render :partial => 'form', :locals => { :f => f } %> 3 | <%= submit_tag l(:button_save) %> 4 | <% end %> 5 | -------------------------------------------------------------------------------- /db/migrate/20140903143914_add_password_changed_at_to_user.rb: -------------------------------------------------------------------------------- 1 | class AddPasswordChangedAtToUser < ActiveRecord::Migration[4.2] 2 | def change 3 | add_column :users, :passwd_changed_on, :datetime 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20190315102101_add_trackers_description.rb: -------------------------------------------------------------------------------- 1 | class AddTrackersDescription < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :trackers, :description, :string, :after => :name 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20210801145548_remove_bcc_recipients_setting.rb: -------------------------------------------------------------------------------- 1 | class RemoveBccRecipientsSetting < ActiveRecord::Migration[6.1] 2 | def change 3 | Setting.where(:name => 'bcc_recipients').delete_all 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /plugins/redmineup_tags/app/views/issues/_tags_sidebar.html.erb: -------------------------------------------------------------------------------- 1 | <% unless sidebar_tags.empty? -%> 2 | 6 | <% end -%> 7 | -------------------------------------------------------------------------------- /app/javascript/controllers/index.js: -------------------------------------------------------------------------------- 1 | import { application } from "controllers/application" 2 | import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading" 3 | eagerLoadControllersFrom("controllers", application) 4 | -------------------------------------------------------------------------------- /db/migrate/20161126094932_add_index_on_changesets_issues_issue_id.rb: -------------------------------------------------------------------------------- 1 | class AddIndexOnChangesetsIssuesIssueId < ActiveRecord::Migration[4.2] 2 | def change 3 | add_index :changesets_issues, :issue_id 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20210704125704_add_twofa_required_to_groups.rb: -------------------------------------------------------------------------------- 1 | class AddTwofaRequiredToGroups < ActiveRecord::Migration[6.1] 2 | def change 3 | add_column :users, :twofa_required, :boolean, default: false 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /lib/plugins/gravatar/init.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative 'lib/gravatar' 4 | Rails.application.reloader.to_prepare do 5 | ApplicationRecord.send :include, GravatarHelper::PublicMethods 6 | end 7 | -------------------------------------------------------------------------------- /app/views/trackers/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l(:label_tracker_plural), trackers_path], @tracker.name %> 2 | 3 | <%= labelled_form_for @tracker do |f| %> 4 | <%= render :partial => 'form', :locals => { :f => f } %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /db/migrate/20161002133421_add_index_on_member_roles_inherited_from.rb: -------------------------------------------------------------------------------- 1 | class AddIndexOnMemberRolesInheritedFrom < ActiveRecord::Migration[4.2] 2 | def change 3 | add_index :member_roles, :inherited_from 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20170207050700_add_index_on_disk_filename_to_attachments.rb: -------------------------------------------------------------------------------- 1 | class AddIndexOnDiskFilenameToAttachments < ActiveRecord::Migration[4.2] 2 | def change 3 | add_index :attachments, :disk_filename 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/views/svg_icons/index.html.erb: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /app/views/trackers/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l(:label_tracker_plural), trackers_path], l(:label_tracker_new) %> 2 | 3 | <%= labelled_form_for @tracker do |f| %> 4 | <%= render :partial => 'form', :locals => { :f => f } %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /db/migrate/20241213003659_add_unique_index_to_projects_identifier.rb: -------------------------------------------------------------------------------- 1 | class AddUniqueIndexToProjectsIdentifier < ActiveRecord::Migration[7.2] 2 | def change 3 | add_index :projects, :identifier, :unique => true 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /extra/sample_plugin/config/locales/en.yml: -------------------------------------------------------------------------------- 1 | # Sample plugin 2 | en: 3 | label_plugin_example: Sample Plugin 4 | label_meeting_plural: Meetings 5 | text_say_hello: Plugin say 'Hello' 6 | text_say_goodbye: Plugin say 'Good bye' 7 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_controller/templates/controller.rb.erb: -------------------------------------------------------------------------------- 1 | class <%= @controller_class %>Controller < ApplicationController 2 | <% actions.each do |action| -%> 3 | 4 | def <%= action %> 5 | end 6 | <% end -%> 7 | end 8 | -------------------------------------------------------------------------------- /test/fixtures/mail_handler/fullname_of_sender_as_utf8_encoded.eml: -------------------------------------------------------------------------------- 1 | From: =?utf-8?b?w4TDpCDDlsO2?= 2 | Subject: foo 3 | Content-Type: text/plain; charset=utf-8 4 | 5 | testing user creation with quoted From-header 6 | -------------------------------------------------------------------------------- /app/views/mailer/news_comment_added.html.erb: -------------------------------------------------------------------------------- 1 |

<%= link_to(@news.title, @news_url) %>

2 | 3 |

<%= l(:text_user_wrote, :value => h(@comment.author)) %>

4 | 5 | <%= textilizable @comment, :comments, :only_path => false %> 6 | -------------------------------------------------------------------------------- /app/views/watchers/append.js.erb: -------------------------------------------------------------------------------- 1 | <% @users.each do |user| %> 2 | $("#issue_watcher_user_ids_<%= user.id %>").remove(); 3 | <% end %> 4 | $('#watchers_inputs').append('<%= escape_javascript(watchers_checkboxes(nil, @users, true)) %>'); 5 | -------------------------------------------------------------------------------- /extra/sample_plugin/config/locales/fr.yml: -------------------------------------------------------------------------------- 1 | # Sample plugin 2 | fr: 3 | label_plugin_example: Plugin exemple 4 | label_meeting_plural: Meetings 5 | text_say_hello: Plugin dit 'Bonjour' 6 | text_say_goodbye: Plugin dit 'Au revoir' 7 | -------------------------------------------------------------------------------- /lib/plugins/acts_as_tree/init.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative 'lib/active_record/acts/tree' 4 | Rails.application.reloader.to_prepare do 5 | ApplicationRecord.send :include, ActiveRecord::Acts::Tree 6 | end 7 | -------------------------------------------------------------------------------- /test/fixtures/plugins/redmine_test_plugin_foo/app/controllers/plugin_articles_controller.rb: -------------------------------------------------------------------------------- 1 | class PluginArticlesController < ApplicationController 2 | def index 3 | render plain: "foo PluginArticlesController#index" 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/assets/images/chevron-right-idnt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/javascript/controllers/application.js: -------------------------------------------------------------------------------- 1 | import { Application } from '@hotwired/stimulus' 2 | 3 | const application = Application.start() 4 | 5 | application.debug = false 6 | window.Stimulus = application 7 | 8 | export { application } 9 | -------------------------------------------------------------------------------- /app/views/common/_no_preview.html.erb: -------------------------------------------------------------------------------- 1 |

2 | <% if download_link %> 3 | <%= t(:label_no_preview_alternative_html, link: download_link) %> 4 | <% else %> 5 | <%= l(:label_no_preview) %> 6 | <% end %> 7 |

8 | 9 | -------------------------------------------------------------------------------- /app/views/common/_preview.html.erb: -------------------------------------------------------------------------------- 1 | <% unless @text.blank? %> 2 | <%= textilizable @text, :attachments => @attachments, :object => @previewed %> 3 | <% else %> 4 |

<%= l(:label_nothing_to_preview) %>

5 | <% end %> -------------------------------------------------------------------------------- /app/views/groups/add_users.js.erb: -------------------------------------------------------------------------------- 1 | hideModal(); 2 | $('#tab-content-users').html('<%= escape_javascript(render :partial => 'groups/users') %>'); 3 | <% @users.each do |user| %> 4 | $('#user-<%= user.id %>').effect("highlight"); 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/layouts/mailer.text.erb: -------------------------------------------------------------------------------- 1 | <% if Setting.emails_header.present? -%> 2 | <%= Setting.emails_header %> 3 | <% end -%> 4 | <%= yield %> 5 | <% if Setting.emails_footer.present? -%> 6 | -- 7 | <%= Setting.emails_footer %> 8 | <% end -%> 9 | -------------------------------------------------------------------------------- /db/migrate/20090704172350_populate_users_type.rb: -------------------------------------------------------------------------------- 1 | class PopulateUsersType < ActiveRecord::Migration[4.2] 2 | def self.up 3 | Principal.where("type IS NULL").update_all("type = 'User'") 4 | end 5 | 6 | def self.down 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /db/migrate/20150528084820_add_roles_all_roles_managed.rb: -------------------------------------------------------------------------------- 1 | class AddRolesAllRolesManaged < ActiveRecord::Migration[4.2] 2 | def change 3 | add_column :roles, :all_roles_managed, :boolean, :default => true, :null => false 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20220806215628_add_default_time_entry_activity_to_roles.rb: -------------------------------------------------------------------------------- 1 | class AddDefaultTimeEntryActivityToRoles < ActiveRecord::Migration[6.1] 2 | def change 3 | add_column :roles, :default_time_entry_activity_id, :int 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/views/groups/_general.html.erb: -------------------------------------------------------------------------------- 1 | <%= labelled_form_for @group, :url => group_path(@group), :html => {:multipart => true} do |f| %> 2 | <%= render :partial => 'form', :locals => { :f => f } %> 3 | <%= submit_tag l(:button_save) %> 4 | <% end %> 5 | -------------------------------------------------------------------------------- /app/views/imports/_users_mapping.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= l(:label_fields_mapping) %> 3 |
4 | <%= render :partial => 'users_fields_mapping' %> 5 |
6 |
7 | -------------------------------------------------------------------------------- /app/views/mailer/lost_password.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:mail_body_lost_password) %>
2 | <%= link_to @url, @url %>

3 | 4 |

<%= l(:mail_body_lost_password_validity) %>

5 | 6 |

<%= l(:field_login) %>: <%= @token.user.login %>

7 | -------------------------------------------------------------------------------- /config/initializers/doorkeeper.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # rubocop:disable Lint/EmptyBlock 4 | Doorkeeper.configure do 5 | end 6 | 7 | Rails.application.config.to_prepare do 8 | end 9 | # rubocop:enable Lint/EmptyBlock 10 | -------------------------------------------------------------------------------- /db/migrate/20200826153402_add_totp_to_user.rb: -------------------------------------------------------------------------------- 1 | class AddTotpToUser < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :users, :twofa_totp_key, :string 4 | add_column :users, :twofa_totp_last_used_at, :integer 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/config/routes.rb: -------------------------------------------------------------------------------- 1 | Rails.application.routes.draw do 2 | resources :mailing_lists do 3 | resources :uses, controller: 'uses_of_mailing_list' 4 | end 5 | resources :mail_to_issue, only: [:new, :create] 6 | end 7 | -------------------------------------------------------------------------------- /test/fixtures/plugins/redmine_test_plugin_bar/app/controllers/bar_plugin_articles_controller.rb: -------------------------------------------------------------------------------- 1 | class BarPluginArticlesController < ApplicationController 2 | def index 3 | render plain: "bar BarPluginArticlesController#index" 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/views/roles/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l(:label_role_plural), roles_path], @role.name %> 2 | 3 | <%= labelled_form_for @role do |f| %> 4 | <%= render :partial => 'form', :locals => { :f => f } %> 5 | <%= submit_tag l(:button_save) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/settings/edit.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_settings) %>

2 | 3 | <%= render_settings_error @setting_errors %> 4 | 5 | <%= render_tabs administration_settings_tabs %> 6 | 7 | <% html_title(l(:label_settings), l(:label_administration)) -%> 8 | -------------------------------------------------------------------------------- /db/migrate/20121209123234_add_queries_type.rb: -------------------------------------------------------------------------------- 1 | class AddQueriesType < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :queries, :type, :string 4 | end 5 | 6 | def down 7 | remove_column :queries, :type 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/views/attachments/image.html.erb: -------------------------------------------------------------------------------- 1 | <%= render :layout => 'layouts/file' do %> 2 | <%= render :partial => 'common/image', :locals => {:path => download_named_attachment_path(@attachment, @attachment.filename), :alt => @attachment.filename} %> 3 | <% end %> 4 | -------------------------------------------------------------------------------- /app/views/auth_sources/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= error_messages_for 'auth_source' %> 2 | 3 |
4 |

<%= f.text_field :name, :required => true %>

5 |

<%= f.check_box :onthefly_register, :label => :field_onthefly %>

6 |
7 | -------------------------------------------------------------------------------- /app/views/issue_relations/show.api.rsb: -------------------------------------------------------------------------------- 1 | api.relation do 2 | api.id @relation.id 3 | api.issue_id @relation.issue_from_id 4 | api.issue_to_id @relation.issue_to_id 5 | api.relation_type @relation.relation_type 6 | api.delay @relation.delay 7 | end 8 | -------------------------------------------------------------------------------- /app/views/mailer/security_notification.text.erb: -------------------------------------------------------------------------------- 1 | <%= @message %> 2 | 3 | <%= @url || @title %> 4 | 5 | <%= l(:field_user) %>: <%= @sender.login %> 6 | <%= l(:field_remote_ip) %>: <%= @remote_ip %> 7 | <%= l(:label_date) %>: <%= format_time Time.now, true %> 8 | -------------------------------------------------------------------------------- /app/views/my/add_block.js.erb: -------------------------------------------------------------------------------- 1 | $("#block-<%= escape_javascript @block %>").remove(); 2 | $("#list-top").prepend("<%= escape_javascript render_blocks([@block], @user) %>"); 3 | $("#block-select").replaceWith("<%= escape_javascript block_select_tag(@user) %>"); 4 | -------------------------------------------------------------------------------- /app/views/roles/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l(:label_role_plural), roles_path], l(:label_role_new) %> 2 | 3 | <%= labelled_form_for @role do |f| %> 4 | <%= render :partial => 'form', :locals => { :f => f } %> 5 | <%= submit_tag l(:button_create) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /db/migrate/053_add_changes_branch.rb: -------------------------------------------------------------------------------- 1 | class AddChangesBranch < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :changes, :branch, :string 4 | end 5 | 6 | def self.down 7 | remove_column :changes, :branch 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20110401192910_add_index_to_users_type.rb: -------------------------------------------------------------------------------- 1 | class AddIndexToUsersType < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :users, :type 4 | end 5 | 6 | def self.down 7 | remove_index :users, :type 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /plugins/redmica_s3/test/test_helper.rb: -------------------------------------------------------------------------------- 1 | # Load the normal Rails helper 2 | require File.expand_path(File.dirname(__FILE__) + '/../../../../test/test_helper') 3 | 4 | # Ensure that we are using the temporary fixture path 5 | Engines::Testing.set_fixture_path 6 | -------------------------------------------------------------------------------- /app/views/versions/edit.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_version)%>

2 | 3 | <%= labelled_form_for @version, :html => {:multipart => true} do |f| %> 4 | <%= render :partial => 'form', :locals => { :f => f } %> 5 | <%= submit_tag l(:button_save) %> 6 | <% end %> 7 | 8 | -------------------------------------------------------------------------------- /db/migrate/20130713111657_add_queries_options.rb: -------------------------------------------------------------------------------- 1 | class AddQueriesOptions < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :queries, :options, :text 4 | end 5 | 6 | def down 7 | remove_column :queries, :options 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20150528093249_add_unique_index_on_roles_managed_roles.rb: -------------------------------------------------------------------------------- 1 | class AddUniqueIndexOnRolesManagedRoles < ActiveRecord::Migration[4.2] 2 | def change 3 | add_index :roles_managed_roles, [:role_id, :managed_role_id], :unique => true 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/views/boards/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_board_new) %>

2 | 3 | <%= labelled_form_for @board, :url => project_boards_path(@project) do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 | <%= submit_tag l(:button_create) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/custom_fields/formats/_attachment.html.erb: -------------------------------------------------------------------------------- 1 |

2 | <%= f.text_field :extensions_allowed, :size => 50, :label => :setting_attachment_extensions_allowed %> 3 | <%= l(:text_comma_separated) %> <%= l(:label_example) %>: txt, png 4 |

5 | -------------------------------------------------------------------------------- /app/views/issues/_sidebar.html.erb: -------------------------------------------------------------------------------- 1 | <%= call_hook(:view_issues_sidebar_issues_bottom) %> 2 | <%= call_hook(:view_issues_sidebar_planning_bottom) %> 3 | 4 | <%= render_sidebar_queries(IssueQuery, @project) %> 5 | <%= call_hook(:view_issues_sidebar_queries_bottom) %> 6 | -------------------------------------------------------------------------------- /app/views/projects/bookmark.js.erb: -------------------------------------------------------------------------------- 1 | $('#project-jump div.drdn-items.projects').html('<%= j render_projects_for_jump_box(projects_for_jump_box(User.current), selected: @project) %>'); 2 | $('.contextual a.icon.bookmark').replaceWith('<%= j bookmark_link @project %>'); 3 | -------------------------------------------------------------------------------- /db/migrate/052_add_changes_revision.rb: -------------------------------------------------------------------------------- 1 | class AddChangesRevision < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :changes, :revision, :string 4 | end 5 | 6 | def self.down 7 | remove_column :changes, :revision 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/054_add_changesets_scmid.rb: -------------------------------------------------------------------------------- 1 | class AddChangesetsScmid < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :changesets, :scmid, :string 4 | end 5 | 6 | def self.down 7 | remove_column :changesets, :scmid 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/063_add_roles_permissions.rb: -------------------------------------------------------------------------------- 1 | class AddRolesPermissions < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :roles, :permissions, :text 4 | end 5 | 6 | def self.down 7 | remove_column :roles, :permissions 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091220183727_add_index_to_settings_name.rb: -------------------------------------------------------------------------------- 1 | class AddIndexToSettingsName < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :settings, :name 4 | end 5 | 6 | def self.down 7 | remove_index :settings, :name 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20110223180944_add_users_salt.rb: -------------------------------------------------------------------------------- 1 | class AddUsersSalt < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :users, :salt, :string, :limit => 64 4 | end 5 | 6 | def self.down 7 | remove_column :users, :salt 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120731164049_add_boards_parent_id.rb: -------------------------------------------------------------------------------- 1 | class AddBoardsParentId < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :boards, :parent_id, :integer 4 | end 5 | 6 | def down 7 | remove_column :boards, :parent_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20121209123358_update_queries_to_sti.rb: -------------------------------------------------------------------------------- 1 | class UpdateQueriesToSti < ActiveRecord::Migration[4.2] 2 | def up 3 | ::Query.update_all :type => 'IssueQuery' 4 | end 5 | 6 | def down 7 | ::Query.update_all :type => nil 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/views/admin/index.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_administration)%>

2 | 3 |
4 | <%= render :partial => 'no_data' if @no_configuration_data %> 5 | <%= render :partial => 'menu' %> 6 |
7 | 8 | <% html_title(l(:label_administration)) -%> 9 | -------------------------------------------------------------------------------- /app/views/boards/edit.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_board) %>

2 | 3 | <%= labelled_form_for @board, :url => project_board_path(@project, @board) do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 | <%= submit_tag l(:button_save) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/email_addresses/index.js.erb: -------------------------------------------------------------------------------- 1 | $('#ajax-modal').html('<%= escape_javascript(render :partial => 'email_addresses/index') %>'); 2 | showModal('ajax-modal', '600px', '<%= escape_javascript l(:label_email_address_plural) %>'); 3 | $('#email_address_address').focus(); 4 | -------------------------------------------------------------------------------- /app/views/groups/new_users.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_user_new) %>

2 | 3 | <%= form_for(@group, :url => group_users_path(@group), :method => :post) do |f| %> 4 | <%= render :partial => 'new_users_form' %> 5 |

<%= submit_tag l(:button_add) %>

6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/mailer/wiki_content_added.text.erb: -------------------------------------------------------------------------------- 1 | <%= l(:mail_body_wiki_content_added, :id => h(@wiki_content.page.pretty_title), 2 | :author => h(@wiki_content.author)) %> 3 | <%= @wiki_content.comments %> 4 | 5 | <%= @wiki_content_url %> 6 | -------------------------------------------------------------------------------- /app/views/queries/edit.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_query) %>

2 | 3 | <%= form_tag(query_path(@query), :method => :put, :id => "query-form") do %> 4 | <%= render :partial => 'form', :locals => {:query => @query} %> 5 | <%= submit_tag l(:button_save) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /db/migrate/20091017214308_add_missing_indexes_to_news.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToNews < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :news, :author_id 4 | end 5 | 6 | def self.down 7 | remove_index :news, :author_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120714122000_add_workflows_type.rb: -------------------------------------------------------------------------------- 1 | class AddWorkflowsType < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :workflows, :type, :string, :limit => 30 4 | end 5 | 6 | def down 7 | remove_column :workflows, :type 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20180913072918_add_verify_peer_to_auth_sources.rb: -------------------------------------------------------------------------------- 1 | class AddVerifyPeerToAuthSources < ActiveRecord::Migration[5.2] 2 | def change 3 | change_table :auth_sources do |t| 4 | t.boolean :verify_peer, default: true, null: false 5 | end 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /db/migrate/071_add_queries_column_names.rb: -------------------------------------------------------------------------------- 1 | class AddQueriesColumnNames < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :queries, :column_names, :text 4 | end 5 | 6 | def self.down 7 | remove_column :queries, :column_names 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/083_add_messages_sticky.rb: -------------------------------------------------------------------------------- 1 | class AddMessagesSticky < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :messages, :sticky, :integer, :default => 0 4 | end 5 | 6 | def self.down 7 | remove_column :messages, :sticky 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/087_change_projects_description_to_text.rb: -------------------------------------------------------------------------------- 1 | class ChangeProjectsDescriptionToText < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :projects, :description, :text, :null => true, :default => nil 4 | end 5 | 6 | def self.down 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /db/migrate/108_add_identity_url_to_users.rb: -------------------------------------------------------------------------------- 1 | class AddIdentityUrlToUsers < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :users, :identity_url, :string 4 | end 5 | 6 | def self.down 7 | remove_column :users, :identity_url 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090425161243_add_queries_group_by.rb: -------------------------------------------------------------------------------- 1 | class AddQueriesGroupBy < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :queries, :group_by, :string 4 | end 5 | 6 | def self.down 7 | remove_column :queries, :group_by 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090503121510_drop_members_role_id.rb: -------------------------------------------------------------------------------- 1 | class DropMembersRoleId < ActiveRecord::Migration[4.2] 2 | def self.up 3 | remove_column :members, :role_id 4 | end 5 | 6 | def self.down 7 | raise ActiveRecord::IrreversibleMigration 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017213444_add_missing_indexes_to_tokens.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToTokens < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :tokens, :user_id 4 | end 5 | 6 | def self.down 7 | remove_index :tokens, :user_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20240213101801_add_queries_description.rb: -------------------------------------------------------------------------------- 1 | class AddQueriesDescription < ActiveRecord::Migration[7.1] 2 | def up 3 | add_column :queries, :description, :string 4 | end 5 | 6 | def down 7 | remove_column :queries, :description 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /extra/sample_plugin/app/views/settings/_sample_plugin_settings.html.erb: -------------------------------------------------------------------------------- 1 |

<%= text_field_tag 'settings[sample_setting]', @settings['sample_setting'] %>

2 | 3 |

<%= text_field_tag 'settings[foo]', @settings['foo'] %>

4 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_model/templates/unit_test.rb.erb: -------------------------------------------------------------------------------- 1 | require_relative '../test_helper' 2 | 3 | class <%= @model_class %>Test < ActiveSupport::TestCase 4 | 5 | # Replace this with your real tests. 6 | def test_truth 7 | assert true 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/.gitignore: -------------------------------------------------------------------------------- 1 | *.gem 2 | *.rbc 3 | .bundle 4 | .config 5 | .yardoc 6 | Gemfile.lock 7 | InstalledFiles 8 | _yardoc 9 | coverage 10 | doc/ 11 | lib/bundler/man 12 | pkg 13 | rdoc 14 | spec/reports 15 | test/tmp 16 | test/version_tmp 17 | tmp 18 | -------------------------------------------------------------------------------- /app/views/custom_fields/formats/_bool.html.erb: -------------------------------------------------------------------------------- 1 |

<%= f.select :default_value, [[]]+@custom_field.possible_values_options %>

2 |

<%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %>

3 |

<%= edit_tag_style_tag f, :include_radio => true %>

4 | -------------------------------------------------------------------------------- /app/views/custom_fields/formats/_link.html.erb: -------------------------------------------------------------------------------- 1 | <%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %> 2 |

<%= f.text_field :url_pattern, :size => 50, :label => :field_url %>

3 |

<%= f.text_field(:default_value) %>

4 | -------------------------------------------------------------------------------- /app/views/documents/edit.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_document)%>

2 | 3 | <%= labelled_form_for @document, :html => {:multipart => true} do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 |

<%= submit_tag l(:button_save) %>

6 | <% end %> 7 | 8 | 9 | -------------------------------------------------------------------------------- /db/migrate/059_add_roles_assignable.rb: -------------------------------------------------------------------------------- 1 | class AddRolesAssignable < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :roles, :assignable, :boolean, :default => true 4 | end 5 | 6 | def self.down 7 | remove_column :roles, :assignable 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/080_add_users_type.rb: -------------------------------------------------------------------------------- 1 | class AddUsersType < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :users, :type, :string 4 | User.update_all "type = 'User'" 5 | end 6 | 7 | def self.down 8 | remove_column :users, :type 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/082_add_messages_locked.rb: -------------------------------------------------------------------------------- 1 | class AddMessagesLocked < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :messages, :locked, :boolean, :default => false 4 | end 5 | 6 | def self.down 7 | remove_column :messages, :locked 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090614091200_fix_messages_sticky_null.rb: -------------------------------------------------------------------------------- 1 | class FixMessagesStickyNull < ActiveRecord::Migration[4.2] 2 | def self.up 3 | Message.where('sticky IS NULL').update_all('sticky = 0') 4 | end 5 | 6 | def self.down 7 | # nothing to do 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20130215111127_add_issues_closed_on.rb: -------------------------------------------------------------------------------- 1 | class AddIssuesClosedOn < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :issues, :closed_on, :datetime, :default => nil 4 | end 5 | 6 | def down 7 | remove_column :issues, :closed_on 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /test/fixtures/files/2006/07/060719210727_source.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # The Greeter class 4 | class Greeter 5 | def initialize(name) 6 | @name = name.capitalize 7 | end 8 | 9 | def salute 10 | puts "Hello #{@name}!" 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /test/fixtures/files/import_subtasks_with_relations.csv: -------------------------------------------------------------------------------- 1 | row;tracker;subject;start;due;parent;follows 2 | 1;bug;2nd Child;2020-01-12;2020-01-20;3;2 1d 3 | 2;bug;1st Child;2020-01-01;2020-01-10;3; 4 | 3;bug;Parent;2020-01-01;2020-01-31;; 5 | 4;bug;3rd Child;2020-01-22;2020-01-31;3;1 1d 6 | -------------------------------------------------------------------------------- /app/views/custom_fields/formats/_date.html.erb: -------------------------------------------------------------------------------- 1 |

<%= f.date_field(:default_value, :value => @custom_field.default_value, :size => 10) %>

2 | <%= calendar_for('custom_field_default_value') %> 3 |

<%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %>

4 | -------------------------------------------------------------------------------- /app/views/reactions/_replace_button.js.erb: -------------------------------------------------------------------------------- 1 | (() => { 2 | const button = $('[data-reaction-button-id=<%= reaction_id_for @object %>]'); 3 | 4 | removeHoverTooltips(button); 5 | button.html($('<%=j reaction_button @object %>').children()); 6 | setupHoverTooltips(button); 7 | })(); 8 | -------------------------------------------------------------------------------- /db/migrate/037_add_project_identifier.rb: -------------------------------------------------------------------------------- 1 | class AddProjectIdentifier < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :projects, :identifier, :string, :limit => 20 4 | end 5 | 6 | def self.down 7 | remove_column :projects, :identifier 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/061_add_roles_builtin.rb: -------------------------------------------------------------------------------- 1 | class AddRolesBuiltin < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :roles, :builtin, :integer, :default => 0, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :roles, :builtin 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/064_drop_permissions.rb: -------------------------------------------------------------------------------- 1 | class DropPermissions < ActiveRecord::Migration[4.2] 2 | def self.up 3 | drop_table :permissions 4 | drop_table :permissions_roles 5 | end 6 | 7 | def self.down 8 | raise ActiveRecord::IrreversibleMigration 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/069_add_issues_estimated_hours.rb: -------------------------------------------------------------------------------- 1 | class AddIssuesEstimatedHours < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :issues, :estimated_hours, :float 4 | end 5 | 6 | def self.down 7 | remove_column :issues, :estimated_hours 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090323224724_add_type_to_enumerations.rb: -------------------------------------------------------------------------------- 1 | class AddTypeToEnumerations < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :enumerations, :type, :string 4 | end 5 | 6 | def self.down 7 | remove_column :enumerations, :type 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120301153455_add_auth_sources_filter.rb: -------------------------------------------------------------------------------- 1 | class AddAuthSourcesFilter < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :auth_sources, :filter, :string 4 | end 5 | 6 | def self.down 7 | remove_column :auth_sources, :filter 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120707064544_add_auth_sources_timeout.rb: -------------------------------------------------------------------------------- 1 | class AddAuthSourcesTimeout < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :auth_sources, :timeout, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :auth_sources, :timeout 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120714122100_update_workflows_to_sti.rb: -------------------------------------------------------------------------------- 1 | class UpdateWorkflowsToSti < ActiveRecord::Migration[4.2] 2 | def up 3 | WorkflowRule.update_all "type = 'WorkflowTransition'" 4 | end 5 | 6 | def down 7 | WorkflowRule.update_all "type = NULL" 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20190510070108_add_unique_id_to_import_items.rb: -------------------------------------------------------------------------------- 1 | class AddUniqueIdToImportItems < ActiveRecord::Migration[5.2] 2 | def change 3 | change_table :import_items do |t| 4 | t.string "unique_id" 5 | t.index ["import_id", "unique_id"] 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /test/fixtures/issue_relations.yml: -------------------------------------------------------------------------------- 1 | issue_relation_001: 2 | id: 1 3 | issue_from_id: 10 4 | issue_to_id: 9 5 | relation_type: blocks 6 | delay: 7 | issue_relation_002: 8 | id: 2 9 | issue_from_id: 2 10 | issue_to_id: 3 11 | relation_type: relates 12 | delay: 13 | -------------------------------------------------------------------------------- /app/views/issue_statuses/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l(:label_issue_status_plural), issue_statuses_path], @issue_status.name %> 2 | 3 | <%= labelled_form_for @issue_status do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 | <%= submit_tag l(:button_save) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/mailer/issue_add.html.erb: -------------------------------------------------------------------------------- 1 | <%= l(:text_issue_added, :id => link_to("##{@issue.id}", @issue_url), :author => h(@issue.author)).html_safe %> 2 |
3 | <%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> 4 | -------------------------------------------------------------------------------- /app/views/my/show_api_key.js.erb: -------------------------------------------------------------------------------- 1 | $('#api-access-key').html('<%= escape_javascript @user.api_key %>').toggle(); 2 | 3 | if ($('#api-access-key').is(':visible')) { 4 | $('.api-key-actions .copy-api-key-link').show(); 5 | } else { 6 | $('.api-key-actions .copy-api-key-link').hide(); 7 | } 8 | -------------------------------------------------------------------------------- /db/migrate/051_add_project_status.rb: -------------------------------------------------------------------------------- 1 | class AddProjectStatus < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :projects, :status, :integer, :default => 1, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :projects, :status 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/089_add_attachments_description.rb: -------------------------------------------------------------------------------- 1 | class AddAttachmentsDescription < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :attachments, :description, :string 4 | end 5 | 6 | def self.down 7 | remove_column :attachments, :description 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/100_add_changesets_user_id.rb: -------------------------------------------------------------------------------- 1 | class AddChangesetsUserId < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :changesets, :user_id, :integer, :default => nil 4 | end 5 | 6 | def self.down 7 | remove_column :changesets, :user_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090312172426_add_queries_sort_criteria.rb: -------------------------------------------------------------------------------- 1 | class AddQueriesSortCriteria < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :queries, :sort_criteria, :text 4 | end 5 | 6 | def self.down 7 | remove_column :queries, :sort_criteria 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017213757_add_missing_indexes_to_boards.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToBoards < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :boards, :last_message_id 4 | end 5 | 6 | def self.down 7 | remove_index :boards, :last_message_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20121026003537_populate_enumerations_position_name.rb: -------------------------------------------------------------------------------- 1 | class PopulateEnumerationsPositionName < ActiveRecord::Migration[4.2] 2 | def up 3 | IssuePriority.compute_position_names 4 | end 5 | 6 | def down 7 | IssuePriority.clear_position_names 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20150113213955_add_email_addresses_user_id_index.rb: -------------------------------------------------------------------------------- 1 | class AddEmailAddressesUserIdIndex < ActiveRecord::Migration[4.2] 2 | def up 3 | add_index :email_addresses, :user_id 4 | end 5 | 6 | def down 7 | remove_index :email_addresses, :user_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /extra/sample_plugin/config/routes.rb: -------------------------------------------------------------------------------- 1 | # Plugin's routes 2 | # See: http://guides.rubyonrails.org/routing.html 3 | 4 | match 'projects/:id/hello', :to => 'example#say_hello', :via => 'get' 5 | match 'projects/:id/bye', :to => 'example#say_goodbye', :via => 'get' 6 | 7 | resources 'meetings' 8 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin_controller/templates/functional_test.rb.erb: -------------------------------------------------------------------------------- 1 | require_relative '../test_helper' 2 | 3 | class <%= @controller_class %>ControllerTest < ActionController::TestCase 4 | # Replace this with your real tests. 5 | def test_truth 6 | assert true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /lib/plugins/gravatar/about.yml: -------------------------------------------------------------------------------- 1 | author: Scott Woods, West Arete Computing 2 | summary: View helpers for displaying gravatars. 3 | homepage: http://github.com/woods/gravatar-plugin/ 4 | plugin: git://github.com/woods/gravatar-plugin.git 5 | license: MIT 6 | version: 0.1 7 | rails_version: 1.0+ 8 | -------------------------------------------------------------------------------- /plugins/redmineup_tags/app/views/tags/_additional_assets.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :header_tags do %> 2 | <%= stylesheet_link_tag(:redmine_tags, plugin: 'redmineup_tags') %> 3 | <%= javascript_include_tag(:redmine_tags, plugin: 'redmineup_tags') %> 4 | <%= select2_assets %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/mailer/issue_add.text.erb: -------------------------------------------------------------------------------- 1 | <%= l(:text_issue_added, :id => "##{@issue.id}", :author => @issue.author) %> 2 | 3 | ---------------------------------------- 4 | <%= render :partial => 'issue', :formats => [:text], :locals => { :issue => @issue, :user => @user, :issue_url => @issue_url } %> 5 | -------------------------------------------------------------------------------- /app/views/mailer/wiki_content_added.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:mail_body_wiki_content_added, :id => link_to(@wiki_content.page.pretty_title, @wiki_content_url), 2 | :author => h(@wiki_content.author)).html_safe %>
3 | <%= @wiki_content.comments %>

4 | -------------------------------------------------------------------------------- /app/views/repositories/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_repository_new) %>

2 | 3 | <%= labelled_form_for :repository, @repository, :url => project_repositories_path(@project), :html => {:id => 'repository-form'} do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/workflows/_action_menu.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= link_to sprite_icon('copy', l(:button_copy)), { :action => 'copy'}, :class => 'icon icon-copy' %> 3 | <%= link_to sprite_icon('summary', l(:field_summary)), { :action => 'index'}, :class => 'icon icon-summary' %> 4 |
5 | -------------------------------------------------------------------------------- /db/migrate/057_add_versions_wiki_page_title.rb: -------------------------------------------------------------------------------- 1 | class AddVersionsWikiPageTitle < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :versions, :wiki_page_title, :string 4 | end 5 | 6 | def self.down 7 | remove_column :versions, :wiki_page_title 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/077_remove_issue_statuses_html_color.rb: -------------------------------------------------------------------------------- 1 | class RemoveIssueStatusesHtmlColor < ActiveRecord::Migration[4.2] 2 | def self.up 3 | remove_column :issue_statuses, :html_color 4 | end 5 | 6 | def self.down 7 | raise ActiveRecord::IrreversibleMigration 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/095_add_wiki_pages_parent_id.rb: -------------------------------------------------------------------------------- 1 | class AddWikiPagesParentId < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :wiki_pages, :parent_id, :integer, :default => nil 4 | end 5 | 6 | def self.down 7 | remove_column :wiki_pages, :parent_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017213332_add_missing_indexes_to_documents.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToDocuments < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :documents, :category_id 4 | end 5 | 6 | def self.down 7 | remove_index :documents, :category_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20131005100610_add_repositories_created_on.rb: -------------------------------------------------------------------------------- 1 | class AddRepositoriesCreatedOn < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :repositories, :created_on, :timestamp 4 | end 5 | 6 | def down 7 | remove_column :repositories, :created_on 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20131210180802_add_custom_fields_description.rb: -------------------------------------------------------------------------------- 1 | class AddCustomFieldsDescription < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :custom_fields, :description, :text 4 | end 5 | 6 | def down 7 | remove_column :custom_fields, :description 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20161001122012_add_tracker_id_index_to_workflows.rb: -------------------------------------------------------------------------------- 1 | class AddTrackerIdIndexToWorkflows < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :workflows, :tracker_id 4 | end 5 | 6 | def self.down 7 | remove_index :workflows, :tracker_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20170418090031_add_view_news_to_all_existing_roles.rb: -------------------------------------------------------------------------------- 1 | class AddViewNewsToAllExistingRoles < ActiveRecord::Migration[4.2] 2 | def up 3 | Role.all.each { |role| role.add_permission! :view_news } 4 | end 5 | 6 | def down 7 | # nothing to revert 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/assets/images/jstoolbar/checklist.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/issue_statuses/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l(:label_issue_status_plural), issue_statuses_path], l(:label_issue_status_new) %> 2 | 3 | <%= labelled_form_for @issue_status do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 | <%= submit_tag l(:button_create) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /db/migrate/009_add_hide_mail_pref.rb: -------------------------------------------------------------------------------- 1 | class AddHideMailPref < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :user_preferences, :hide_mail, :boolean, :default => false 4 | end 5 | 6 | def self.down 7 | remove_column :user_preferences, :hide_mail 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/074_add_auth_sources_tls.rb: -------------------------------------------------------------------------------- 1 | class AddAuthSourcesTls < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :auth_sources, :tls, :boolean, :default => false, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :auth_sources, :tls 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/079_add_user_preferences_time_zone.rb: -------------------------------------------------------------------------------- 1 | class AddUserPreferencesTimeZone < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :user_preferences, :time_zone, :string 4 | end 5 | 6 | def self.down 7 | remove_column :user_preferences, :time_zone 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20110511000000_add_repositories_extra_info.rb: -------------------------------------------------------------------------------- 1 | class AddRepositoriesExtraInfo < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :repositories, :extra_info, :text 4 | end 5 | 6 | def self.down 7 | remove_column :repositories, :extra_info 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120115143024_add_repositories_identifier.rb: -------------------------------------------------------------------------------- 1 | class AddRepositoriesIdentifier < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :repositories, :identifier, :string 4 | end 5 | 6 | def self.down 7 | remove_column :repositories, :identifier 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20131124175346_add_custom_fields_format_store.rb: -------------------------------------------------------------------------------- 1 | class AddCustomFieldsFormatStore < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :custom_fields, :format_store, :text 4 | end 5 | 6 | def down 7 | remove_column :custom_fields, :format_store 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /extra/sample_plugin/app/views/example/say_goodbye.html.erb: -------------------------------------------------------------------------------- 1 |

Good Bye

2 | 3 |

<%= l(:text_say_goodbye) %>

4 | 5 | <% content_for :header_tags do %> 6 | <%= stylesheet_link_tag 'example', :plugin => 'sample_plugin', :media => "screen" %> 7 | <% end %> 8 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env rake 2 | # Add your own tasks in files placed in lib/tasks ending in .rake, 3 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 4 | 5 | require File.expand_path('../config/application', __FILE__) 6 | 7 | RedmineApp::Application.load_tasks 8 | -------------------------------------------------------------------------------- /app/views/layouts/admin.html.erb: -------------------------------------------------------------------------------- 1 | <% unless controller_name == 'admin' && action_name == 'index' %> 2 | <% content_for :sidebar do %> 3 |

<%=l(:label_administration)%>

4 | <%= render :partial => 'admin/menu' %> 5 | <% end %> 6 | <% end %> 7 | 8 | <%= render template: 'layouts/base' %> 9 | -------------------------------------------------------------------------------- /app/views/members/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_member_new) %>

2 | 3 | <%= form_for @member, :as => :membership, :url => project_memberships_path(@project), :method => :post do |f| %> 4 | <%= render :partial => 'new_form' %> 5 |

<%= submit_tag l(:button_add), :name => nil %>

6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/principal_memberships/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_add_projects) %>

2 | 3 | <%= form_for :membership, :url => user_memberships_path(@principal), :method => :post do |f| %> 4 | <%= render :partial => 'new_form' %> 5 |

<%= submit_tag l(:button_add), :name => nil %>

6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/repositories/edit.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_repository) %>

2 | 3 | <%= labelled_form_for :repository, @repository, :url => repository_path(@repository), :html => {:method => :put, :id => 'repository-form'} do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/sudo_mode/new.js.erb: -------------------------------------------------------------------------------- 1 | var sudo_modal = $('#sudo-modal').length ? $('#sudo-modal') : $("
", {id: "sudo-modal"}).appendTo($("body")); 2 | sudo_modal.hide().html('<%= escape_javascript render partial: 'sudo_mode/new_modal' %>'); 3 | showModal('sudo-modal', '400px'); 4 | $('#sudo_password').focus(); 5 | -------------------------------------------------------------------------------- /app/views/wiki/_content.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= textilizable content, :text, :attachments => content.page.attachments, 3 | :edit_section_links => (@sections_editable && {:controller => 'wiki', :action => 'edit', :project_id => @page.project, :id => @page.title}) %> 4 |
5 | -------------------------------------------------------------------------------- /db/migrate/011_add_news_comments_count.rb: -------------------------------------------------------------------------------- 1 | class AddNewsCommentsCount < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :news, :comments_count, :integer, :default => 0, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :news, :comments_count 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/088_add_custom_fields_default_value.rb: -------------------------------------------------------------------------------- 1 | class AddCustomFieldsDefaultValue < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :custom_fields, :default_value, :text 4 | end 5 | 6 | def self.down 7 | remove_column :custom_fields, :default_value 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/102_add_custom_fields_editable.rb: -------------------------------------------------------------------------------- 1 | class AddCustomFieldsEditable < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :custom_fields, :editable, :boolean, :default => true 4 | end 5 | 6 | def self.down 7 | remove_column :custom_fields, :editable 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017212938_add_missing_indexes_to_repositories.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToRepositories < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :repositories, :project_id 4 | end 5 | 6 | def self.down 7 | remove_index :repositories, :project_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017214440_add_missing_indexes_to_wiki_contents.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToWikiContents < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :wiki_contents, :author_id 4 | end 5 | 6 | def self.down 7 | remove_index :wiki_contents, :author_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017214720_add_missing_indexes_to_wiki_redirects.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToWikiRedirects < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :wiki_redirects, :wiki_id 4 | end 5 | 6 | def self.down 7 | remove_index :wiki_redirects, :wiki_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20100313171051_add_index_on_issues_nested_set.rb: -------------------------------------------------------------------------------- 1 | class AddIndexOnIssuesNestedSet < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :issues, [:root_id, :lft, :rgt] 4 | end 5 | 6 | def self.down 7 | remove_index :issues, [:root_id, :lft, :rgt] 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120705074331_add_trackers_fields_bits.rb: -------------------------------------------------------------------------------- 1 | class AddTrackersFieldsBits < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :trackers, :fields_bits, :integer, :default => 0 4 | end 5 | 6 | def self.down 7 | remove_column :trackers, :fields_bits 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20121213084931_add_attachments_disk_directory.rb: -------------------------------------------------------------------------------- 1 | class AddAttachmentsDiskDirectory < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :attachments, :disk_directory, :string 4 | end 5 | 6 | def down 7 | remove_column :attachments, :disk_directory 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20170419144536_add_view_messages_to_all_existing_roles.rb: -------------------------------------------------------------------------------- 1 | class AddViewMessagesToAllExistingRoles < ActiveRecord::Migration[4.2] 2 | def up 3 | Role.all.each { |role| role.add_permission! :view_messages } 4 | end 5 | 6 | def down 7 | # nothing to revert 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20230818020734_add_status_description.rb: -------------------------------------------------------------------------------- 1 | class AddStatusDescription < ActiveRecord::Migration[6.1] 2 | def up 3 | add_column :issue_statuses, :description, :string, :after => :name 4 | end 5 | 6 | def down 7 | remove_column :issue_statuses, :description 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/db/migrate/20190518145352_add_issues_lang.rb: -------------------------------------------------------------------------------- 1 | class AddIssuesLang < ActiveRecord::Migration[5.2] 2 | def up 3 | add_column :issues, :lang, :string, :limit => 8, :default => "en" 4 | end 5 | 6 | def down 7 | remove_column :issues, :lang 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/views/versions/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_version_new)%>

2 | 3 | <%= labelled_form_for @version, :url => project_versions_path(@project), :html => {:multipart => true} do |f| %> 4 | <%= render :partial => 'versions/form', :locals => { :f => f } %> 5 | <%= submit_tag l(:button_create) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/watchers/new.js.erb: -------------------------------------------------------------------------------- 1 | $('#ajax-modal').html( 2 | '<%= escape_javascript( 3 | render(:partial => 'watchers/new', 4 | :locals => {:watchables => @watchables, :users => @users}) 5 | ) %>'); 6 | showModal('ajax-modal', '400px'); 7 | $('#ajax-modal').addClass('new-watcher'); 8 | -------------------------------------------------------------------------------- /db/migrate/031_add_repository_root_url.rb: -------------------------------------------------------------------------------- 1 | class AddRepositoryRootUrl < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :repositories, :root_url, :string, :limit => 255, :default => "" 4 | end 5 | 6 | def self.down 7 | remove_column :repositories, :root_url 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/090_change_versions_name_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeVersionsNameLimit < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :versions, :name, :string, :limit => nil 4 | end 5 | 6 | def self.down 7 | change_column :versions, :name, :string, :limit => 30 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/106_remove_projects_projects_count.rb: -------------------------------------------------------------------------------- 1 | class RemoveProjectsProjectsCount < ActiveRecord::Migration[4.2] 2 | def self.up 3 | remove_column :projects, :projects_count 4 | end 5 | 6 | def self.down 7 | add_column :projects, :projects_count, :integer, :default => 0 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/app/models/based_on_mail.rb: -------------------------------------------------------------------------------- 1 | module BasedOnMail 2 | def originates_from_mail? 3 | if @originates_from_mail.nil? 4 | @originates_from_mail = true 5 | else 6 | @originates_from_mail 7 | end 8 | end 9 | attr_writer :originates_from_mail 10 | end 11 | -------------------------------------------------------------------------------- /app/views/documents/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_document_new)%>

2 | 3 | <%= labelled_form_for @document, :url => project_documents_path(@project), :html => {:multipart => true} do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 |

<%= submit_tag l(:button_create) %>

6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/issue_statuses/index.api.rsb: -------------------------------------------------------------------------------- 1 | api.array :issue_statuses do 2 | @issue_statuses.each do |status| 3 | api.issue_status do 4 | api.id status.id 5 | api.name status.name 6 | api.is_closed status.is_closed 7 | api.description status.description 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /app/views/timelog/edit.js.erb: -------------------------------------------------------------------------------- 1 | $('#time_entry_activity_id').html('<%= escape_javascript options_for_select(activity_collection_for_select_options(@time_entry), @time_entry.activity_id) %>'); 2 | $('#time_entry_issue').html('<%= escape_javascript link_to_issue(@time_entry.issue) if @time_entry.issue.try(:visible?) %>'); 3 | -------------------------------------------------------------------------------- /db/migrate/044_set_language_length_to_five.rb: -------------------------------------------------------------------------------- 1 | class SetLanguageLengthToFive < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :users, :language, :string, :limit => 5, :default => "" 4 | end 5 | 6 | def self.down 7 | raise ActiveRecord::IrreversibleMigration 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/086_add_custom_fields_searchable.rb: -------------------------------------------------------------------------------- 1 | class AddCustomFieldsSearchable < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :custom_fields, :searchable, :boolean, :default => false 4 | end 5 | 6 | def self.down 7 | remove_column :custom_fields, :searchable 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/093_add_wiki_pages_protected.rb: -------------------------------------------------------------------------------- 1 | class AddWikiPagesProtected < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :wiki_pages, :protected, :boolean, :default => false, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :wiki_pages, :protected 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090704172358_add_member_roles_inherited_from.rb: -------------------------------------------------------------------------------- 1 | class AddMemberRolesInheritedFrom < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :member_roles, :inherited_from, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :member_roles, :inherited_from 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017213257_add_missing_indexes_to_auth_sources.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToAuthSources < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :auth_sources, [:id, :type] 4 | end 5 | 6 | def self.down 7 | remove_index :auth_sources, :column => [:id, :type] 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017213835_add_missing_indexes_to_user_preferences.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToUserPreferences < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :user_preferences, :user_id 4 | end 5 | 6 | def self.down 7 | remove_index :user_preferences, :user_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20110412065600_add_issues_is_private.rb: -------------------------------------------------------------------------------- 1 | class AddIssuesIsPrivate < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :issues, :is_private, :boolean, :default => false, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :issues, :is_private 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120127174243_add_custom_fields_multiple.rb: -------------------------------------------------------------------------------- 1 | class AddCustomFieldsMultiple < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :custom_fields, :multiple, :boolean, :default => false 4 | end 5 | 6 | def self.down 7 | remove_column :custom_fields, :multiple 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20121026002032_add_enumerations_position_name.rb: -------------------------------------------------------------------------------- 1 | class AddEnumerationsPositionName < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :enumerations, :position_name, :string, :limit => 30 4 | end 5 | 6 | def down 7 | remove_column :enumerations, :position_name 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20151021185456_change_auth_sources_filter_to_text.rb: -------------------------------------------------------------------------------- 1 | class ChangeAuthSourcesFilterToText < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :auth_sources, :filter, :text 4 | end 5 | 6 | def self.down 7 | change_column :auth_sources, :filter, :string 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /test/fixtures/mail_handler/subject_japanese_1.eml: -------------------------------------------------------------------------------- 1 | From: John Smith 2 | To: "redmine@somenet.foo" 3 | Subject: =?iso-2022-jp?b?GyRCJUYlOSVIGyhCCg=?= 4 | Date: Fri, 1 Jun 2012 14:39:38 +0200 5 | Message-ID: <87C31D42249DD0489D1A1444E3232DD7019D6183@foo.bar> 6 | 7 | Fixture 8 | -------------------------------------------------------------------------------- /test/fixtures/mail_handler/subject_japanese_2.eml: -------------------------------------------------------------------------------- 1 | From: John Smith 2 | To: "redmine@somenet.foo" 3 | Subject: Re: =?iso-2022-jp?b?GyRCJUYlOSVIGyhCCg=?= 4 | Date: Fri, 1 Jun 2012 14:39:38 +0200 5 | Message-ID: <87C31D42249DD0489D1A1444E3232DD7019D6183@foo.bar> 6 | 7 | Fixture 8 | -------------------------------------------------------------------------------- /app/views/custom_fields/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= custom_field_title @custom_field %> 2 | 3 | <%= labelled_form_for :custom_field, @custom_field, :url => custom_field_path(@custom_field), :html => {:method => :put, :id => 'custom_field_form'} do |f| %> 4 | <%= render :partial => 'form', :locals => { :f => f } %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/settings/_api.html.erb: -------------------------------------------------------------------------------- 1 | <%= form_tag({:action => 'edit', :tab => 'api'}) do %> 2 | 3 |
4 |

<%= setting_check_box :rest_api_enabled %>

5 | 6 |

<%= setting_check_box :jsonp_enabled %>

7 |
8 | 9 | <%= submit_tag l(:button_save) %> 10 | <% end %> 11 | -------------------------------------------------------------------------------- /app/views/timelog/new.js.erb: -------------------------------------------------------------------------------- 1 | $('#time_entry_activity_id').html('<%= escape_javascript options_for_select(activity_collection_for_select_options(@time_entry), default_activity(@time_entry)) %>'); 2 | $('#time_entry_issue').html('<%= escape_javascript link_to_issue(@time_entry.issue) if @time_entry.issue.try(:visible?) %>'); 3 | -------------------------------------------------------------------------------- /config/initializers/good_job.rb: -------------------------------------------------------------------------------- 1 | # config/initializers/good_job.rb 2 | GoodJob::Engine.middleware.use(Rack::Auth::Basic) do |username, password| 3 | ActiveSupport::SecurityUtils.secure_compare(ENV["IMAP_USERNAME"], username) && 4 | ActiveSupport::SecurityUtils.secure_compare(ENV["IMAP_PASSWORD"], password) 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/023_add_tracker_is_in_roadmap.rb: -------------------------------------------------------------------------------- 1 | class AddTrackerIsInRoadmap < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :trackers, :is_in_roadmap, :boolean, :default => true, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :trackers, :is_in_roadmap 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/058_add_issue_categories_assigned_to_id.rb: -------------------------------------------------------------------------------- 1 | class AddIssueCategoriesAssignedToId < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :issue_categories, :assigned_to_id, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :issue_categories, :assigned_to_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/092_change_changes_from_revision_to_string.rb: -------------------------------------------------------------------------------- 1 | class ChangeChangesFromRevisionToString < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :changes, :from_revision, :string 4 | end 5 | 6 | def self.down 7 | change_column :changes, :from_revision, :integer 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017213113_add_missing_indexes_to_enumerations.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToEnumerations < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :enumerations, [:id, :type] 4 | end 5 | 6 | def self.down 7 | remove_index :enumerations, :column => [:id, :type] 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017214107_add_missing_indexes_to_custom_fields.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToCustomFields < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :custom_fields, [:id, :type] 4 | end 5 | 6 | def self.down 7 | remove_index :custom_fields, :column => [:id, :type] 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017214519_add_missing_indexes_to_custom_values.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToCustomValues < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :custom_values, :custom_field_id 4 | end 5 | 6 | def self.down 7 | remove_index :custom_values, :custom_field_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120115143100_add_repositories_is_default.rb: -------------------------------------------------------------------------------- 1 | class AddRepositoriesIsDefault < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :repositories, :is_default, :boolean, :default => false 4 | end 5 | 6 | def self.down 7 | remove_column :repositories, :is_default 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20150528092912_create_roles_managed_roles.rb: -------------------------------------------------------------------------------- 1 | class CreateRolesManagedRoles < ActiveRecord::Migration[4.2] 2 | def change 3 | create_table :roles_managed_roles, :id => false do |t| 4 | t.integer :role_id, :null => false 5 | t.integer :managed_role_id, :null => false 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /db/migrate/20210728131544_drop_is_in_chlog_column.rb: -------------------------------------------------------------------------------- 1 | class DropIsInChlogColumn < ActiveRecord::Migration[6.1] 2 | def self.up 3 | remove_column :trackers, :is_in_chlog 4 | end 5 | 6 | def self.down 7 | add_column :trackers, :is_in_chlog, :boolean, :default => true, :null => false 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20220224194639_delete_orphaned_time_entry_activities.rb: -------------------------------------------------------------------------------- 1 | class DeleteOrphanedTimeEntryActivities < ActiveRecord::Migration[6.1] 2 | def self.up 3 | TimeEntryActivity.where.missing(:project).where.not(project_id: nil).delete_all 4 | end 5 | 6 | def self.down 7 | # no-op 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20220714093010_add_journal_updated_by.rb: -------------------------------------------------------------------------------- 1 | class AddJournalUpdatedBy < ActiveRecord::Migration[5.2] 2 | def up 3 | add_column :journals, :updated_by_id, :integer, :default => nil, :after => :updated_on 4 | end 5 | 6 | def down 7 | remove_column :journals, :updated_by_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/views/users/_auto_watch_on.html.erb: -------------------------------------------------------------------------------- 1 | <%= labelled_fields_for :pref, @user.pref do |pref_fields| %> 2 | <%= pref_fields.collection_check_boxes :auto_watch_on, auto_watch_on_options, :last, :first, :checked => @user.pref.auto_watch_on do |b| %> 3 |

<%= b.check_box %> <%= b.label %>

4 | <% end %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /db/migrate/038_add_custom_field_is_filter.rb: -------------------------------------------------------------------------------- 1 | class AddCustomFieldIsFilter < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :custom_fields, :is_filter, :boolean, :null => false, :default => false 4 | end 5 | 6 | def self.down 7 | remove_column :custom_fields, :is_filter 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/073_add_enumerations_is_default.rb: -------------------------------------------------------------------------------- 1 | class AddEnumerationsIsDefault < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :enumerations, :is_default, :boolean, :default => false, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :enumerations, :is_default 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120930112914_add_journals_private_notes.rb: -------------------------------------------------------------------------------- 1 | class AddJournalsPrivateNotes < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :journals, :private_notes, :boolean, :default => false, :null => false 4 | end 5 | 6 | def down 7 | remove_column :journals, :private_notes 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20250611092227_enable_pkce.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | class EnablePkce < ActiveRecord::Migration[7.2] 4 | def change 5 | add_column :oauth_access_grants, :code_challenge, :string, null: true 6 | add_column :oauth_access_grants, :code_challenge_method, :string, null: true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /plugins/redmine_bugs_ruby_lang/app/views/mailing_lists/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_mailing_list_new)%>

2 | 3 | <%= labelled_form_for :mailing_list, @mailing_list, :url => mailing_lists_path do |f| %> 4 | <%= render :partial => 'form', :locals => { :f => f } %> 5 | <%= submit_tag l(:button_create) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /test/fixtures/wikis.yml: -------------------------------------------------------------------------------- 1 | --- 2 | wikis_001: 3 | status: 1 4 | start_page: CookBook documentation 5 | project_id: 1 6 | id: 1 7 | wikis_002: 8 | status: 1 9 | start_page: Start page 10 | project_id: 2 11 | id: 2 12 | wikis_005: 13 | status: 1 14 | start_page: Wiki 15 | project_id: 5 16 | id: 5 17 | -------------------------------------------------------------------------------- /app/views/issue_relations/create.js.erb: -------------------------------------------------------------------------------- 1 | $('#relations').html('<%= escape_javascript(render :partial => 'issues/relations') %>'); 2 | <% if @relation.errors.empty? %> 3 | $('#relation_delay').val(''); 4 | $('#relation_issue_to_id').val(''); 5 | <% end %> 6 | $('#new-relation-form').show(); 7 | $('#relation_issue_to_id').focus(); 8 | -------------------------------------------------------------------------------- /app/views/messages/quote.js.erb: -------------------------------------------------------------------------------- 1 | $('#message_subject').val("<%= raw escape_javascript(@subject) %>"); 2 | $('#message_content').val("<%= raw escape_javascript(@content) %>"); 3 | showAndScrollTo("reply", "message_content"); 4 | $('#message_content').scrollTop = $('#message_content').scrollHeight - $('#message_content').clientHeight; 5 | -------------------------------------------------------------------------------- /app/views/versions/create.js.erb: -------------------------------------------------------------------------------- 1 | hideModal(); 2 | <% select = content_tag('select', content_tag('option') + version_options_for_select(@project.shared_versions.open, @version), :id => 'issue_fixed_version_id', :name => 'issue[fixed_version_id]') %> 3 | $('#issue_fixed_version_id').replaceWith('<%= escape_javascript(select) %>'); 4 | -------------------------------------------------------------------------------- /db/migrate/20090318181151_extend_settings_name.rb: -------------------------------------------------------------------------------- 1 | class ExtendSettingsName < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :settings, :name, :string, :limit => 255, :default => '', :null => false 4 | end 5 | 6 | def self.down 7 | raise ActiveRecord::IrreversibleMigration 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091017213642_add_missing_indexes_to_issue_categories.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToIssueCategories < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :issue_categories, :assigned_to_id 4 | end 5 | 6 | def self.down 7 | remove_index :issue_categories, :assigned_to_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20130202090625_add_projects_inherit_members.rb: -------------------------------------------------------------------------------- 1 | class AddProjectsInheritMembers < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :projects, :inherit_members, :boolean, :default => false, :null => false 4 | end 5 | 6 | def down 7 | remove_column :projects, :inherit_members 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20130729070143_add_users_must_change_passwd.rb: -------------------------------------------------------------------------------- 1 | class AddUsersMustChangePasswd < ActiveRecord::Migration[4.2] 2 | def up 3 | add_column :users, :must_change_passwd, :boolean, :default => false, :null => false 4 | end 5 | 6 | def down 7 | remove_column :users, :must_change_passwd 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/views/custom_fields/formats/_progressbar.html.erb: -------------------------------------------------------------------------------- 1 |

2 | <%= f.select :ratio_interval, 3 | [5, 10].collect {|i| ["#{i} %", i]}, 4 | selected: f.object.new_record? ? Redmine::FieldFormat::ProgressbarFormat.default_ratio_interval : f.object.ratio_interval, 5 | required: true %> 6 |

7 | -------------------------------------------------------------------------------- /app/views/imports/_issues_saved_objects.html.erb: -------------------------------------------------------------------------------- 1 |
    2 | <% saved_objects.each do |issue| %> 3 |
  • <%= link_to_issue issue %>
  • 4 | <% end %> 5 |
6 | 7 |

<%= link_to l(:label_issue_view_all), issues_path(:set_filter => 1, :status_id => '*', :issue_id => saved_objects.map(&:id).join(',')) %>

8 | -------------------------------------------------------------------------------- /app/views/projects/autocomplete.js.erb: -------------------------------------------------------------------------------- 1 | <% 2 | s = '' 3 | if @projects.any? 4 | s = render_projects_for_jump_box(@projects, query: params[:q]) 5 | elsif params[:q].present? 6 | s = content_tag('span', l(:label_no_data)) 7 | end 8 | %> 9 | $('#project-jump .drdn-items.projects').html('<%= escape_javascript s %>'); 10 | -------------------------------------------------------------------------------- /app/views/projects/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= title l(:label_project_new) %> 2 | 3 | <%= labelled_form_for @project, :html => {:multipart => true} do |f| %> 4 | <%= render :partial => 'form', :locals => { :f => f } %> 5 | <%= submit_tag l(:button_create) %> 6 | <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> 7 | <% end %> 8 | -------------------------------------------------------------------------------- /app/views/watchers/_set_watcher.js.erb: -------------------------------------------------------------------------------- 1 | <% selector = ".#{watcher_css(watched)}" %> 2 | $("<%= selector %>").each(function(){$(this).replaceWith("<%= escape_javascript watcher_link(watched, user) %>")}); 3 | $('#watchers').html('<%= escape_javascript(render(:partial => 'watchers/watchers', :locals => {:watched => watched.first})) %>'); 4 | -------------------------------------------------------------------------------- /db/migrate/048_allow_null_version_effective_date.rb: -------------------------------------------------------------------------------- 1 | class AllowNullVersionEffectiveDate < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :versions, :effective_date, :date, :default => nil, :null => true 4 | end 5 | 6 | def self.down 7 | raise ActiveRecord::IrreversibleMigration 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/060_change_changesets_committer_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeChangesetsCommitterLimit < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :changesets, :committer, :string, :limit => nil 4 | end 5 | 6 | def self.down 7 | change_column :changesets, :committer, :string, :limit => 30 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/065_add_settings_updated_on.rb: -------------------------------------------------------------------------------- 1 | class AddSettingsUpdatedOn < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :settings, :updated_on, :timestamp 4 | # set updated_on 5 | Setting.all.each(&:save) 6 | end 7 | 8 | def self.down 9 | remove_column :settings, :updated_on 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/075_add_members_mail_notification.rb: -------------------------------------------------------------------------------- 1 | class AddMembersMailNotification < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :members, :mail_notification, :boolean, :default => false, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :members, :mail_notification 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/084_change_auth_sources_account_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeAuthSourcesAccountLimit < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :auth_sources, :account, :string, :limit => nil 4 | end 5 | 6 | def self.down 7 | change_column :auth_sources, :account, :string, :limit => 60 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090401231134_add_active_field_to_enumerations.rb: -------------------------------------------------------------------------------- 1 | class AddActiveFieldToEnumerations < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :enumerations, :active, :boolean, :default => true, :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :enumerations, :active 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090406161854_add_parent_id_to_enumerations.rb: -------------------------------------------------------------------------------- 1 | class AddParentIdToEnumerations < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :enumerations, :parent_id, :integer, :null => true, :default => nil 4 | end 5 | 6 | def self.down 7 | remove_column :enumerations, :parent_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091108092559_add_versions_status.rb: -------------------------------------------------------------------------------- 1 | class AddVersionsStatus < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :versions, :status, :string, :default => 'open' 4 | Version.update_all("status = 'open'") 5 | end 6 | 7 | def self.down 8 | remove_column :versions, :status 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/20151024082034_add_tokens_updated_on.rb: -------------------------------------------------------------------------------- 1 | class AddTokensUpdatedOn < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :tokens, :updated_on, :timestamp 4 | Token.update_all("updated_on = created_on") 5 | end 6 | 7 | def self.down 8 | remove_column :tokens, :updated_on 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/20170302015225_change_attachments_digest_limit_to_64.rb: -------------------------------------------------------------------------------- 1 | class ChangeAttachmentsDigestLimitTo64 < ActiveRecord::Migration[4.2] 2 | def up 3 | change_column :attachments, :digest, :string, limit: 64 4 | end 5 | 6 | def down 7 | change_column :attachments, :digest, :string, limit: 40 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/views/issue_categories/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= error_messages_for 'category' %> 2 | 3 |
4 |

<%= f.text_field :name, :size => 60, :required => true %>

5 |

<%= f.select :assigned_to_id, principals_options_for_select(@project.assignable_users, @category.assigned_to), :include_blank => true %>

6 |
7 | -------------------------------------------------------------------------------- /app/views/twofa/_twofa_code_form.html.erb: -------------------------------------------------------------------------------- 1 |
2 |

<%=l 'twofa_label_enter_otp' %>

3 |
4 |

5 | 6 | <%= text_field_tag :twofa_code, nil, autocomplete: 'one-time-code' -%> 7 |

8 |
9 |
10 | -------------------------------------------------------------------------------- /db/migrate/036_add_changeset_commit_date.rb: -------------------------------------------------------------------------------- 1 | class AddChangesetCommitDate < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :changesets, :commit_date, :date 4 | Changeset.update_all "commit_date = committed_on" 5 | end 6 | 7 | def self.down 8 | remove_column :changesets, :commit_date 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/20091123212029_add_default_done_ratio_to_issue_status.rb: -------------------------------------------------------------------------------- 1 | class AddDefaultDoneRatioToIssueStatus < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :issue_statuses, :default_done_ratio, :integer 4 | end 5 | 6 | def self.down 7 | remove_column :issue_statuses, :default_done_ratio 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20110228000000_add_repositories_log_encoding.rb: -------------------------------------------------------------------------------- 1 | class AddRepositoriesLogEncoding < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :repositories, :log_encoding, :string, :limit => 64, :default => nil 4 | end 5 | 6 | def self.down 7 | remove_column :repositories, :log_encoding 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20190620135549_change_roles_name_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeRolesNameLimit < ActiveRecord::Migration[5.2] 2 | def self.up 3 | change_column :roles, :name, :string, :limit => 255, :default => '' 4 | end 5 | 6 | def self.down 7 | change_column :roles, :name, :string, :limit => 30, :default => '' 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /lib/generators/redmine_plugin/templates/init.rb.erb: -------------------------------------------------------------------------------- 1 | Redmine::Plugin.register :<%= plugin_name %> do 2 | name '<%= plugin_pretty_name %> plugin' 3 | author 'Author name' 4 | description 'This is a plugin for Redmine' 5 | version '0.0.1' 6 | url 'http://example.com/path/to/plugin' 7 | author_url 'http://example.com/about' 8 | end 9 | -------------------------------------------------------------------------------- /test/fixtures/files/import_issues_auto_mapping.csv: -------------------------------------------------------------------------------- 1 | priority;Subject;start_date;parent;private;progress;custom;"target version";category;user;estimated_hours;tracker;status;database;cf_6;unique_id;"Is duplicate of" 2 | High;First;2015-07-08;;no;;PostgreSQL;;New category;dlopper;1;bug;new;"PostgreSQL, Oracle";2;1;4;"Column with empty header" 3 | -------------------------------------------------------------------------------- /test/fixtures/mail_handler/fullname_of_sender_in_parentheses.eml: -------------------------------------------------------------------------------- 1 | Return-Path: 2 | From: jdoe@example.net (John Doe) 3 | To: 4 | Subject: Name in parentheses 5 | Date: Sun, 03 Mar 2019 21:23:00 +0900 6 | Content-Type: text/plain; charset="utf-8" 7 | 8 | The author's full name is enclosed in parentheses. -------------------------------------------------------------------------------- /app/views/custom_fields/formats/_numeric.html.erb: -------------------------------------------------------------------------------- 1 | <%= render :partial => 'custom_fields/formats/regexp', :locals => {:f => f, :custom_field => custom_field} %> 2 |

<%= f.check_box :thousands_delimiter %>

3 |

<%= f.text_field(:default_value) %>

4 |

<%= f.text_field :url_pattern, :size => 50, :label => :label_link_values_to %>

5 | -------------------------------------------------------------------------------- /app/views/doorkeeper/applications/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l('label_oauth_application_plural'), oauth_applications_path], t('.title') %> 2 | 3 | <%= labelled_form_for @application, url: doorkeeper_submit_path(@application) do |f| %> 4 | <%= render :partial => 'form', :locals => { :f => f } %> 5 | <%= submit_tag l(:button_create) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/doorkeeper/authorizations/error.html.erb: -------------------------------------------------------------------------------- 1 |

<%= t('doorkeeper.authorizations.error.title') %>

2 | 3 |

<%= @pre_auth.error_response.body[:error_description] %>

4 |

<%= l(:button_back) %>

5 | 6 | <% html_title t('doorkeeper.authorizations.error.title') %> 7 | -------------------------------------------------------------------------------- /app/views/issue_categories/create.js.erb: -------------------------------------------------------------------------------- 1 | hideModal(); 2 | <% select = content_tag('select', content_tag('option') + options_from_collection_for_select(@project.issue_categories, 'id', 'name', @category.id), :id => 'issue_category_id', :name => 'issue[category_id]') %> 3 | $('#issue_category_id').replaceWith('<%= escape_javascript(select) %>'); 4 | -------------------------------------------------------------------------------- /app/views/my/blocks/_activity.html.erb: -------------------------------------------------------------------------------- 1 |

<%= link_to l(:label_activity), :controller => 'activities', 2 | :action => 'index', :id => nil, :user_id => User.current, 3 | :from => events_by_day.keys.first %>

4 | 5 | <%= render :partial => 'activities/activities', :locals => {:events_by_day => events_by_day} %> 6 | -------------------------------------------------------------------------------- /db/migrate/104_add_projects_lft_and_rgt.rb: -------------------------------------------------------------------------------- 1 | class AddProjectsLftAndRgt < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :projects, :lft, :integer 4 | add_column :projects, :rgt, :integer 5 | end 6 | 7 | def self.down 8 | remove_column :projects, :lft 9 | remove_column :projects, :rgt 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20101114115359_change_projects_identifier_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeProjectsIdentifierLimit < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :projects, :identifier, :string, :limit => nil 4 | end 5 | 6 | def self.down 7 | change_column :projects, :identifier, :string, :limit => 20 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20110224000000_add_repositories_path_encoding.rb: -------------------------------------------------------------------------------- 1 | class AddRepositoriesPathEncoding < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :repositories, :path_encoding, :string, :limit => 64, :default => nil 4 | end 5 | 6 | def self.down 7 | remove_column :repositories, :path_encoding 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20141109112308_add_roles_users_visibility.rb: -------------------------------------------------------------------------------- 1 | class AddRolesUsersVisibility < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :roles, :users_visibility, :string, :limit => 30, :default => 'all', :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :roles, :users_visibility 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20241007144951_change_text_formatting_from_markdown_to_common_mark.rb: -------------------------------------------------------------------------------- 1 | class ChangeTextFormattingFromMarkdownToCommonMark < ActiveRecord::Migration[7.2] 2 | def up 3 | Setting.find_by(name: 'text_formatting', value: 'markdown')&.update(value: 'common_mark') 4 | end 5 | 6 | def down 7 | # no-op 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/assets/images/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/doorkeeper/applications/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l('label_oauth_application_plural'), oauth_applications_path], @application.name %> 2 | 3 | <%= labelled_form_for @application, url: doorkeeper_submit_path(@application) do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 | <%= submit_tag l(:button_save) %> 6 | <% end %> 7 | -------------------------------------------------------------------------------- /app/views/queries/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_query_new) %>

2 | 3 | <%= form_tag(@project ? project_queries_path(@project) : queries_path, :id => "query-form") do %> 4 | <%= hidden_field_tag 'type', @query.class.name %> 5 | <%= render :partial => 'form', :locals => {:query => @query} %> 6 | <%= submit_tag l(:button_save) %> 7 | <% end %> 8 | -------------------------------------------------------------------------------- /config/importmap.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # Pin npm packages by running ./bin/importmap 4 | 5 | pin "application" 6 | pin "@hotwired/stimulus", to: "stimulus.min.js" 7 | pin "@hotwired/stimulus-loading", to: "stimulus-loading.js" 8 | pin "turndown" # @7.2.0 9 | pin_all_from "app/javascript/controllers", under: "controllers" 10 | -------------------------------------------------------------------------------- /db/migrate/070_change_attachments_content_type_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeAttachmentsContentTypeLimit < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :attachments, :content_type, :string, :limit => nil 4 | end 5 | 6 | def self.down 7 | change_column :attachments, :content_type, :string, :limit => 60 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091205124427_add_versions_sharing.rb: -------------------------------------------------------------------------------- 1 | class AddVersionsSharing < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :versions, :sharing, :string, :default => 'none', :null => false 4 | add_index :versions, :sharing 5 | end 6 | 7 | def self.down 8 | remove_column :versions, :sharing 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/20150730122735_create_import_items.rb: -------------------------------------------------------------------------------- 1 | class CreateImportItems < ActiveRecord::Migration[4.2] 2 | def change 3 | create_table :import_items do |t| 4 | t.integer :import_id, :null => false 5 | t.integer :position, :null => false 6 | t.integer :obj_id 7 | t.text :message 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/20210705111300_add_projects_default_issue_query_id.rb: -------------------------------------------------------------------------------- 1 | class AddProjectsDefaultIssueQueryId < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :projects, :default_issue_query_id, :integer, :default => nil 4 | end 5 | 6 | def self.down 7 | remove_column :projects, :default_issue_query_id 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /app/views/doorkeeper/authorizations/show.html.erb: -------------------------------------------------------------------------------- 1 | <%= title [l('label_oauth_authorized_application_plural'), oauth_authorized_applications_path] %> 2 | 3 |
<%= l(:label_information_plural) %> 4 |

5 | 6 | <%= params[:code] %> 7 |

8 |
9 | -------------------------------------------------------------------------------- /app/views/issues/_action_menu_edit.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= render :partial => 'action_menu' %> 3 | 4 |
5 | <% if @issue.editable? %> 6 | 10 | <% end %> 11 | -------------------------------------------------------------------------------- /db/migrate/020_add_role_position.rb: -------------------------------------------------------------------------------- 1 | class AddRolePosition < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :roles, :position, :integer, :default => 1 4 | Role.all.each_with_index {|role, i| role.update_attribute(:position, i+1)} 5 | end 6 | 7 | def self.down 8 | remove_column :roles, :position 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/094_change_projects_homepage_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeProjectsHomepageLimit < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :projects, :homepage, :string, :limit => nil, :default => '' 4 | end 5 | 6 | def self.down 7 | change_column :projects, :homepage, :string, :limit => 60, :default => '' 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20090214190337_add_watchers_user_id_type_index.rb: -------------------------------------------------------------------------------- 1 | class AddWatchersUserIdTypeIndex < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :watchers, [:user_id, :watchable_type], :name => :watchers_user_id_type 4 | end 5 | 6 | def self.down 7 | remove_index :watchers, :name => :watchers_user_id_type 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20091220183509_add_lft_and_rgt_indexes_to_projects.rb: -------------------------------------------------------------------------------- 1 | class AddLftAndRgtIndexesToProjects < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :projects, :lft 4 | add_index :projects, :rgt 5 | end 6 | 7 | def self.down 8 | remove_index :projects, :lft 9 | remove_index :projects, :rgt 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20100129193813_update_mail_notification_values.rb: -------------------------------------------------------------------------------- 1 | # Patch the data from a boolean change. 2 | class UpdateMailNotificationValues < ActiveRecord::Migration[4.2] 3 | def self.up 4 | # No-op 5 | # See 20100129193402_change_users_mail_notification_to_string.rb 6 | end 7 | 8 | def self.down 9 | # No-op 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20100221100219_add_index_on_changesets_scmid.rb: -------------------------------------------------------------------------------- 1 | class AddIndexOnChangesetsScmid < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :changesets, [:repository_id, :scmid], :name => :changesets_repos_scmid 4 | end 5 | 6 | def self.down 7 | remove_index :changesets, :name => :changesets_repos_scmid 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20110408103312_add_roles_issues_visibility.rb: -------------------------------------------------------------------------------- 1 | class AddRolesIssuesVisibility < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :roles, :issues_visibility, :string, :limit => 30, :default => 'default', :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :roles, :issues_visibility 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20161010081600_change_journals_notes_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeJournalsNotesLimit < ActiveRecord::Migration[4.2] 2 | def up 3 | if Redmine::Database.mysql? 4 | max_size = 16.megabytes 5 | change_column :journals, :notes, :text, :limit => max_size 6 | end 7 | end 8 | 9 | def down 10 | # no-op 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20220714093000_add_journal_updated_on.rb: -------------------------------------------------------------------------------- 1 | class AddJournalUpdatedOn < ActiveRecord::Migration[5.2] 2 | def up 3 | add_column :journals, :updated_on, :datetime, :after => :created_on 4 | Journal.update_all('updated_on = created_on') 5 | end 6 | 7 | def down 8 | remove_column :journals, :updated_on 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/20241103150135_change_settings_value_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeSettingsValueLimit < ActiveRecord::Migration[7.2] 2 | def up 3 | if Redmine::Database.mysql? 4 | max_size = 16.megabytes 5 | change_column :settings, :value, :text, :limit => max_size 6 | end 7 | end 8 | 9 | def down 10 | # no-op 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /app/views/groups/index.api.rsb: -------------------------------------------------------------------------------- 1 | api.array :groups do 2 | @groups.each do |group| 3 | api.group do 4 | api.id group.id 5 | api.name group.lastname 6 | api.builtin group.builtin_type if group.builtin_type 7 | 8 | render_api_custom_values group.visible_custom_field_values, api 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /app/views/issue_categories/new.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_issue_category_new)%>

2 | 3 | <%= labelled_form_for @category, :as => :issue_category, 4 | :url => project_issue_categories_path(@project) do |f| %> 5 | <%= render :partial => 'issue_categories/form', :locals => { :f => f } %> 6 | <%= submit_tag l(:button_create) %> 7 | <% end %> 8 | -------------------------------------------------------------------------------- /app/views/issue_categories/show.api.rsb: -------------------------------------------------------------------------------- 1 | api.issue_category do 2 | api.id @category.id 3 | api.project(:id => @category.project_id, :name => @category.project.name) unless @category.project.nil? 4 | api.name @category.name 5 | api.assigned_to(:id => @category.assigned_to_id, :name => @category.assigned_to.name) unless @category.assigned_to.nil? 6 | end 7 | -------------------------------------------------------------------------------- /app/views/timelog/edit.html.erb: -------------------------------------------------------------------------------- 1 |

<%= l(:label_spent_time) %>

2 | 3 | <%= labelled_form_for @time_entry, :url => time_entry_path(@time_entry), :html => {:multipart => true} do |f| %> 4 | <%= render :partial => 'form', :locals => {:f => f} %> 5 | <%= submit_tag l(:button_save) %> 6 | <%= cancel_button_tag_for_time_entry(@project) %> 7 | <% end %> 8 | -------------------------------------------------------------------------------- /db/migrate/103_set_custom_fields_editable.rb: -------------------------------------------------------------------------------- 1 | class SetCustomFieldsEditable < ActiveRecord::Migration[4.2] 2 | def self.up 3 | UserCustomField.update_all("editable = #{CustomField.connection.quoted_false}") 4 | end 5 | 6 | def self.down 7 | UserCustomField.update_all("editable = #{CustomField.connection.quoted_true}") 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /test/fixtures/files/import_time_entries.csv: -------------------------------------------------------------------------------- 1 | row;issue_id;date;hours;comment;activity;overtime;user 2 | 1;;2020-01-01;1;Some Design;Design;yes;jsmith@somenet.foo 3 | 2;;2020-01-02;2;Some Development;Development;yes;jsmith@somenet.foo 4 | 3;1;2020-01-03;3;Some QA;QA;no;dlopper@somenet.foo 5 | 4;2;2020-01-04;4;Some Inactivity;Inactive Activity;no;jsmith@somenet.foo 6 | -------------------------------------------------------------------------------- /app/assets/images/chevron-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/reports/issue_report_details.html.erb: -------------------------------------------------------------------------------- 1 |

<%= link_to l(:label_report_plural), project_issues_report_path(@project) %> »

2 | 3 |

<%=@report_title%>

4 | <%= render :partial => 'details', :locals => { :data => @data, :field_name => @field, :rows => @rows } %> 5 |
6 | <%= link_to l(:button_back), project_issues_report_path(@project) %> 7 | -------------------------------------------------------------------------------- /db/migrate/20091017214015_add_missing_indexes_to_members.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToMembers < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :members, :user_id 4 | add_index :members, :project_id 5 | end 6 | 7 | def self.down 8 | remove_index :members, :user_id 9 | remove_index :members, :project_id 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20091017214136_add_missing_indexes_to_queries.rb: -------------------------------------------------------------------------------- 1 | class AddMissingIndexesToQueries < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :queries, :project_id 4 | add_index :queries, :user_id 5 | end 6 | 7 | def self.down 8 | remove_index :queries, :project_id 9 | remove_index :queries, :user_id 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20150921204850_change_time_entries_comments_limit_to_1024.rb: -------------------------------------------------------------------------------- 1 | class ChangeTimeEntriesCommentsLimitTo1024 < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :time_entries, :comments, :string, :limit => 1024 4 | end 5 | 6 | def self.down 7 | change_column :time_entries, :comments, :string, :limit => 255 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20221004172825_ensure_text_formatting_setting_is_stored_in_db.rb: -------------------------------------------------------------------------------- 1 | class EnsureTextFormattingSettingIsStoredInDb < ActiveRecord::Migration[6.1] 2 | def change 3 | unless Setting.where(name: "text_formatting").exists? 4 | setting = Setting.new(:name => "text_formatting", :value => 'textile') 5 | setting.save! 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /test/fixtures/files/import_issues_with_relation_and_invalid_issues.csv: -------------------------------------------------------------------------------- 1 | row;tracker;subject;status;related to; 2 | 1;Feature request;Issue 1;New;; 3 | 2;Feature request;Issue 2;New;1; 4 | 3;Feature request;;New;;This issue failes to import 5 | 4;Feature request;Issue 4;New;3;This import failes to reate the relationsip - import hangs 6 | 5;Feature request;Issue 5;New;; 7 | -------------------------------------------------------------------------------- /app/views/issue_relations/index.api.rsb: -------------------------------------------------------------------------------- 1 | api.array :relations do 2 | @relations.each do |relation| 3 | api.relation do 4 | api.id relation.id 5 | api.issue_id relation.issue_from_id 6 | api.issue_to_id relation.issue_to_id 7 | api.relation_type relation.relation_type 8 | api.delay relation.delay 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /app/views/mailer/settings_updated.text.erb: -------------------------------------------------------------------------------- 1 | <%= l(:mail_body_settings_updated) %> 2 | 3 | <% @changes.each do |name| %> 4 | * <%= l("setting_#{name}") %> 5 | <% end %> 6 | 7 | <%= @url %> 8 | 9 | <%= l(:field_user) %>: <%= @sender.login %> 10 | <%= l(:field_remote_ip) %>: <%= @remote_ip %> 11 | <%= l(:label_date) %>: <%= format_time Time.now, true %> 12 | 13 | -------------------------------------------------------------------------------- /db/migrate/20140228130325_change_changesets_comments_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeChangesetsCommentsLimit < ActiveRecord::Migration[4.2] 2 | def up 3 | if Redmine::Database.mysql? 4 | max_size = 16.megabytes 5 | change_column :changesets, :comments, :text, :limit => max_size 6 | end 7 | end 8 | 9 | def down 10 | # no-op 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20161010081301_change_issues_description_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeIssuesDescriptionLimit < ActiveRecord::Migration[4.2] 2 | def up 3 | if Redmine::Database.mysql? 4 | max_size = 16.megabytes 5 | change_column :issues, :description, :text, :limit => max_size 6 | end 7 | end 8 | 9 | def down 10 | # no-op 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20190315094151_change_custom_values_value_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeCustomValuesValueLimit < ActiveRecord::Migration[5.2] 2 | def up 3 | if Redmine::Database.mysql? 4 | max_size = 16.megabytes 5 | change_column :custom_values, :value, :text, :limit => max_size 6 | end 7 | end 8 | 9 | def down 10 | # no-op 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20250530185658_ensure_wiki_tablesort_setting_is_stored_in_db.rb: -------------------------------------------------------------------------------- 1 | class EnsureWikiTablesortSettingIsStoredInDb < ActiveRecord::Migration[7.2] 2 | def change 3 | unless Setting.where(name: "wiki_tablesort_enabled").exists? 4 | setting = Setting.new(:name => "wiki_tablesort_enabled", :value => 1) 5 | setting.save! 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /test/fixtures/plugins/redmine_test_plugin_bar/init.rb: -------------------------------------------------------------------------------- 1 | Redmine::Plugin.register :redmine_test_plugin_bar do 2 | name 'Test plugin redmine_test_plugin_bar' 3 | author 'Author name' 4 | description 'This is a plugin for Redmine test' 5 | version '0.0.1' 6 | end 7 | 8 | Pathname(__dir__).glob("app/**/*.rb").sort.each do |path| 9 | require path 10 | end 11 | -------------------------------------------------------------------------------- /app/views/issue_categories/edit.html.erb: -------------------------------------------------------------------------------- 1 |

<%=l(:label_issue_category)%>

2 | 3 | <%= labelled_form_for @category, :as => :issue_category, 4 | :url => issue_category_path(@category), :html => {:method => :put} do |f| %> 5 | <%= render :partial => 'issue_categories/form', :locals => { :f => f } %> 6 | <%= submit_tag l(:button_save) %> 7 | <% end %> 8 | -------------------------------------------------------------------------------- /db/migrate/021_add_tracker_position.rb: -------------------------------------------------------------------------------- 1 | class AddTrackerPosition < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :trackers, :position, :integer, :default => 1 4 | Tracker.all.each_with_index {|tracker, i| tracker.update_attribute(:position, i+1)} 5 | end 6 | 7 | def self.down 8 | remove_column :trackers, :position 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/055_add_repositories_type.rb: -------------------------------------------------------------------------------- 1 | class AddRepositoriesType < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :repositories, :type, :string 4 | # Set class name for existing SVN repositories 5 | Repository.update_all "type = 'Subversion'" 6 | end 7 | 8 | def self.down 9 | remove_column :repositories, :type 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/066_add_custom_value_customized_index.rb: -------------------------------------------------------------------------------- 1 | class AddCustomValueCustomizedIndex < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_index :custom_values, [:customized_type, :customized_id], :name => :custom_values_customized 4 | end 5 | 6 | def self.down 7 | remove_index :custom_values, :name => :custom_values_customized 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20120205111326_change_users_login_limit.rb: -------------------------------------------------------------------------------- 1 | class ChangeUsersLoginLimit < ActiveRecord::Migration[4.2] 2 | def self.up 3 | change_column :users, :login, :string, :limit => nil, :default => '', :null => false 4 | end 5 | 6 | def self.down 7 | change_column :users, :login, :string, :limit => 30, :default => '', :null => false 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20150526183158_add_roles_time_entries_visibility.rb: -------------------------------------------------------------------------------- 1 | class AddRolesTimeEntriesVisibility < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :roles, :time_entries_visibility, :string, :limit => 30, :default => 'all', :null => false 4 | end 5 | 6 | def self.down 7 | remove_column :roles, :time_entries_visibility 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20231012112407_remove_mention_users_permission.rb: -------------------------------------------------------------------------------- 1 | class RemoveMentionUsersPermission < ActiveRecord::Migration[6.1] 2 | def up 3 | Role.reset_column_information 4 | Role.all.each do |r| 5 | r.remove_permission!(:mention_users) if r.has_permission?(:mention_users) 6 | end 7 | end 8 | 9 | def down 10 | # no-op 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /test/fixtures/mail_handler/gmail-iso8859-2.eml: -------------------------------------------------------------------------------- 1 | Date: Tue, 13 Aug 2013 10:56:04 +0700 2 | From: John Smith 3 | Subject: =?ISO-8859-2?Q?Nikad_vi=B9e?= 4 | To: redmine@somenet.foo 5 | Content-Type: text/plain; charset=ISO-8859-2 6 | Content-Transfer-Encoding: quoted-printable 7 | 8 | Na =B9triku se su=B9i =B9osi=E6. 9 | 10 | --=20 11 | =B9osi=E6 12 | -------------------------------------------------------------------------------- /test/fixtures/tokens.yml: -------------------------------------------------------------------------------- 1 | --- 2 | tokens_001: 3 | created_on: 2007-01-21 00:39:12 +01:00 4 | action: register 5 | id: 1 6 | value: DwMJ2yIxBNeAk26znMYzYmz5dAiIina0GFrPnGTM 7 | user_id: 1 8 | tokens_002: 9 | created_on: 2007-01-21 00:39:52 +01:00 10 | action: recovery 11 | id: 2 12 | value: sahYSIaoYrsZUef86sTHrLISdznW6ApF36h5WSnm 13 | user_id: 2 14 | -------------------------------------------------------------------------------- /app/views/mailer/wiki_content_updated.text.erb: -------------------------------------------------------------------------------- 1 | <%= l(:mail_body_wiki_content_updated, :id => h(@wiki_content.page.pretty_title), 2 | :author => h(@wiki_content.author)) %> 3 | <%= @wiki_content.comments %> 4 | 5 | <%= @wiki_content.page.pretty_title %>: 6 | <%= @wiki_content_url %> 7 | <%= l(:label_view_diff) %>: 8 | <%= @wiki_diff_url %> 9 | -------------------------------------------------------------------------------- /app/views/queries/index.api.rsb: -------------------------------------------------------------------------------- 1 | api.array :queries, api_meta(:total_count => @query_count, :offset => @offset, :limit => @limit) do 2 | @queries.each do |query| 3 | api.query do 4 | api.id query.id 5 | api.name query.name 6 | api.is_public query.is_public? 7 | api.project_id query.project_id 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/005_issue_start_date.rb: -------------------------------------------------------------------------------- 1 | class IssueStartDate < ActiveRecord::Migration[4.2] 2 | def self.up 3 | add_column :issues, :start_date, :date 4 | add_column :issues, :done_ratio, :integer, :default => 0, :null => false 5 | end 6 | 7 | def self.down 8 | remove_column :issues, :start_date 9 | remove_column :issues, :done_ratio 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/008_create_user_preferences.rb: -------------------------------------------------------------------------------- 1 | class CreateUserPreferences < ActiveRecord::Migration[4.2] 2 | def self.up 3 | create_table :user_preferences do |t| 4 | t.column "user_id", :integer, :default => 0, :null => false 5 | t.column "others", :text 6 | end 7 | end 8 | 9 | def self.down 10 | drop_table :user_preferences 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20090503121501_create_member_roles.rb: -------------------------------------------------------------------------------- 1 | class CreateMemberRoles < ActiveRecord::Migration[4.2] 2 | def self.up 3 | create_table :member_roles do |t| 4 | t.column :member_id, :integer, :null => false 5 | t.column :role_id, :integer, :null => false 6 | end 7 | end 8 | 9 | def self.down 10 | drop_table :member_roles 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20090503121505_populate_member_roles.rb: -------------------------------------------------------------------------------- 1 | class PopulateMemberRoles < ActiveRecord::Migration[4.2] 2 | def self.up 3 | MemberRole.delete_all 4 | Member.all.each do |member| 5 | MemberRole.insert!({:member_id => member.id, :role_id => member.role_id}) 6 | end 7 | end 8 | 9 | def self.down 10 | MemberRole.delete_all 11 | end 12 | end 13 | --------------------------------------------------------------------------------