Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
b24742b7ed
commit
7118851f02
1
Gemfile
1
Gemfile
|
@ -194,7 +194,6 @@ gem 'rouge', '~> 3.30.0'
|
|||
gem 'truncato', '~> 0.7.12'
|
||||
gem 'bootstrap_form', '~> 4.2.0'
|
||||
gem 'nokogiri', '~> 1.13.8'
|
||||
gem 'escape_utils', '~> 1.1'
|
||||
|
||||
# Calendar rendering
|
||||
gem 'icalendar'
|
||||
|
|
|
@ -1601,7 +1601,6 @@ DEPENDENCIES
|
|||
email_reply_trimmer (~> 0.1)
|
||||
email_spec (~> 2.2.0)
|
||||
error_tracking_open_api!
|
||||
escape_utils (~> 1.1)
|
||||
factory_bot_rails (~> 6.2.0)
|
||||
faraday (~> 1.0)
|
||||
faraday_middleware-aws-sigv4 (~> 0.3.0)
|
||||
|
|
|
@ -8,6 +8,7 @@ import { __ } from '~/locale';
|
|||
import {
|
||||
FILTERED_SEARCH_TERM,
|
||||
FILTER_ANY,
|
||||
TOKEN_TYPE_HEALTH,
|
||||
} from '~/vue_shared/components/filtered_search_bar/constants';
|
||||
import FilteredSearch from '~/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue';
|
||||
import { AssigneeFilterType } from '~/boards/constants';
|
||||
|
@ -55,6 +56,7 @@ export default {
|
|||
myReactionEmoji,
|
||||
releaseTag,
|
||||
confidential,
|
||||
healthStatus,
|
||||
} = this.filterParams;
|
||||
const filteredSearchValue = [];
|
||||
|
||||
|
@ -154,6 +156,13 @@ export default {
|
|||
});
|
||||
}
|
||||
|
||||
if (healthStatus) {
|
||||
filteredSearchValue.push({
|
||||
type: TOKEN_TYPE_HEALTH,
|
||||
value: { data: healthStatus, operator: '=' },
|
||||
});
|
||||
}
|
||||
|
||||
if (this.filterParams['not[authorUsername]']) {
|
||||
filteredSearchValue.push({
|
||||
type: 'author',
|
||||
|
@ -248,6 +257,7 @@ export default {
|
|||
iterationCadenceId,
|
||||
releaseTag,
|
||||
confidential,
|
||||
healthStatus,
|
||||
} = this.filterParams;
|
||||
let iteration = iterationId;
|
||||
let cadence = iterationCadenceId;
|
||||
|
@ -292,6 +302,7 @@ export default {
|
|||
my_reaction_emoji: myReactionEmoji,
|
||||
release_tag: releaseTag,
|
||||
confidential,
|
||||
[TOKEN_TYPE_HEALTH]: healthStatus,
|
||||
},
|
||||
(value) => {
|
||||
if (value || value === false) {
|
||||
|
@ -390,6 +401,9 @@ export default {
|
|||
case 'filtered-search-term':
|
||||
if (filter.value.data) plainText.push(filter.value.data);
|
||||
break;
|
||||
case TOKEN_TYPE_HEALTH:
|
||||
filterParams.healthStatus = filter.value.data;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -86,6 +86,7 @@ function mountBoardApp(el) {
|
|||
milestoneListsAvailable: parseBoolean(el.dataset.milestoneListsAvailable),
|
||||
assigneeListsAvailable: parseBoolean(el.dataset.assigneeListsAvailable),
|
||||
iterationListsAvailable: parseBoolean(el.dataset.iterationListsAvailable),
|
||||
healthStatusFeatureAvailable: parseBoolean(el.dataset.healthStatusFeatureAvailable),
|
||||
allowScopedLabels: parseBoolean(el.dataset.scopedLabels),
|
||||
swimlanesFeatureAvailable: gon.licensed_features?.swimlanes,
|
||||
multipleIssueBoardsAvailable: parseBoolean(el.dataset.multipleBoardsAvailable),
|
||||
|
|
|
@ -7,6 +7,7 @@ import {
|
|||
FILTER_UPCOMING,
|
||||
OPERATOR_IS,
|
||||
OPERATOR_IS_NOT,
|
||||
TOKEN_TYPE_HEALTH,
|
||||
} from '~/vue_shared/components/filtered_search_bar/constants';
|
||||
import {
|
||||
WORK_ITEM_TYPE_ENUM_INCIDENT,
|
||||
|
@ -148,7 +149,6 @@ export const TOKEN_TYPE_EPIC = 'epic_id';
|
|||
export const TOKEN_TYPE_WEIGHT = 'weight';
|
||||
export const TOKEN_TYPE_CONTACT = 'crm_contact';
|
||||
export const TOKEN_TYPE_ORGANIZATION = 'crm_organization';
|
||||
export const TOKEN_TYPE_HEALTH = 'health_status';
|
||||
|
||||
export const TYPE_TOKEN_TASK_OPTION = { icon: 'issue-type-task', title: 'task', value: 'task' };
|
||||
|
||||
|
|
|
@ -56,3 +56,9 @@ export const TOKEN_TITLE_MY_REACTION = __('My-Reaction');
|
|||
export const TOKEN_TITLE_ORGANIZATION = s__('Crm|Organization');
|
||||
export const TOKEN_TITLE_RELEASE = __('Release');
|
||||
export const TOKEN_TITLE_TYPE = __('Type');
|
||||
|
||||
// As health status gets reused between issue lists and boards
|
||||
// this is in the shared constants. Until we have not decoupled the EE filtered search bar
|
||||
// from the CE component, we need to keep this in the CE code.
|
||||
// https://gitlab.com/gitlab-org/gitlab/-/issues/377838
|
||||
export const TOKEN_TYPE_HEALTH = 'health_status';
|
||||
|
|
|
@ -3,14 +3,33 @@ require 'uri'
|
|||
|
||||
module Integrations
|
||||
class Harbor < Integration
|
||||
prop_accessor :url, :project_name, :username, :password
|
||||
|
||||
validates :url, public_url: true, presence: true, addressable_url: { allow_localhost: false, allow_local_network: false }, if: :activated?
|
||||
validates :project_name, presence: true, if: :activated?
|
||||
validates :username, presence: true, if: :activated?
|
||||
validates :password, format: { with: ::Ci::Maskable::REGEX }, if: :activated?
|
||||
|
||||
before_validation :reset_username_and_password
|
||||
field :url,
|
||||
title: -> { s_('HarborIntegration|Harbor URL') },
|
||||
placeholder: 'https://demo.goharbor.io',
|
||||
help: -> { s_('HarborIntegration|Base URL of the Harbor instance.') },
|
||||
exposes_secrets: true,
|
||||
required: true
|
||||
|
||||
field :project_name,
|
||||
title: -> { s_('HarborIntegration|Harbor project name') },
|
||||
help: -> { s_('HarborIntegration|The name of the project in Harbor.') }
|
||||
|
||||
field :username,
|
||||
title: -> { s_('HarborIntegration|Harbor username') },
|
||||
required: true
|
||||
|
||||
field :password,
|
||||
type: 'password',
|
||||
title: -> { s_('HarborIntegration|Harbor password') },
|
||||
help: -> { s_('HarborIntegration|Password for your Harbor username.') },
|
||||
non_empty_password_title: -> { s_('HarborIntegration|Enter new Harbor password') },
|
||||
non_empty_password_help: -> { s_('HarborIntegration|Leave blank to use your current password.') },
|
||||
required: true
|
||||
|
||||
def title
|
||||
'Harbor'
|
||||
|
@ -46,40 +65,6 @@ module Integrations
|
|||
client.ping
|
||||
end
|
||||
|
||||
def fields
|
||||
[
|
||||
{
|
||||
type: 'text',
|
||||
name: 'url',
|
||||
title: s_('HarborIntegration|Harbor URL'),
|
||||
placeholder: 'https://demo.goharbor.io',
|
||||
help: s_('HarborIntegration|Base URL of the Harbor instance.'),
|
||||
required: true
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
name: 'project_name',
|
||||
title: s_('HarborIntegration|Harbor project name'),
|
||||
help: s_('HarborIntegration|The name of the project in Harbor.')
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
name: 'username',
|
||||
title: s_('HarborIntegration|Harbor username'),
|
||||
required: true
|
||||
},
|
||||
{
|
||||
type: 'password',
|
||||
name: 'password',
|
||||
title: s_('HarborIntegration|Harbor password'),
|
||||
help: s_('HarborIntegration|Password for your Harbor username.'),
|
||||
non_empty_password_title: s_('HarborIntegration|Enter new Harbor password'),
|
||||
non_empty_password_help: s_('HarborIntegration|Leave blank to use your current password.'),
|
||||
required: true
|
||||
}
|
||||
]
|
||||
end
|
||||
|
||||
def ci_variables
|
||||
return [] unless activated?
|
||||
|
||||
|
@ -100,15 +85,5 @@ module Integrations
|
|||
def client
|
||||
@client ||= ::Gitlab::Harbor::Client.new(self)
|
||||
end
|
||||
|
||||
def reset_username_and_password
|
||||
if url_changed? && !password_touched?
|
||||
self.password = nil
|
||||
end
|
||||
|
||||
if url_changed? && !username_touched?
|
||||
self.username = nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -624,8 +624,9 @@ by authorized users.
|
|||
Use [`when: delayed`](../yaml/index.md#when) to execute scripts after a waiting period, or if you want to avoid
|
||||
jobs immediately entering the `pending` state.
|
||||
|
||||
You can set the period with `start_in` keyword. The value of `start_in` is an elapsed time in seconds, unless a unit is
|
||||
provided. `start_in` must be less than or equal to one week. Examples of valid values include:
|
||||
You can set the period with `start_in` keyword. The value of `start_in` is an elapsed time
|
||||
in seconds, unless a unit is provided. The minimum is one second, and the maximum is one week.
|
||||
Examples of valid values include:
|
||||
|
||||
- `'5'` (a value with no unit must be surrounded by single quotes)
|
||||
- `5 seconds`
|
||||
|
|
|
@ -27,42 +27,59 @@ GitLab Dedicated enables you to offload the operational overhead of managing the
|
|||
- Upgrades:
|
||||
- Monthly upgrades tracking one release behind the latest (n-1), with the latest security release.
|
||||
- Out of band security patches provided for high severity releases.
|
||||
- Backups: regular backups taken and tested.
|
||||
- Choice of cloud region: upon onboarding, choose the cloud region where you want to deploy your instance. Some AWS regions have limited features and as a result, we are not able to deploy production instances to those regions. See below for the [full list of regions](#aws-regions-not-supported) not currently supported.
|
||||
- Backups: Regular backups taken and tested.
|
||||
- Choice of cloud region: Upon onboarding, choose the cloud region where you want to deploy your instance. Some AWS regions have limited features and as a result, we are not able to deploy production instances to those regions. See below for the [full list of regions](#aws-regions-not-supported) not currently supported.
|
||||
- Security: Data encrypted at rest and in transit using latest encryption standards.
|
||||
- Application: Self-managed [Ultimate feature set](https://about.gitlab.com/pricing/self-managed/feature-comparison/) with the exception of the unsupported features [listed below](#features-not-available-at-launch).
|
||||
- Application: Self-managed [Ultimate feature set](https://about.gitlab.com/pricing/self-managed/feature-comparison/) with the exception of the unsupported features [listed below](#features-that-are-not-available).
|
||||
|
||||
## Features not available at launch
|
||||
## Features that are not available
|
||||
|
||||
Features that are not available but we plan to support in the future:
|
||||
### GitLab application features
|
||||
|
||||
- LDAP, Smartcard, Kerberos authentication
|
||||
- Custom domain
|
||||
The following GitLab application features are not available:
|
||||
|
||||
- LDAP, Smartcard, or Kerberos authentication
|
||||
- Multiple login providers
|
||||
- Advanced Search
|
||||
- Pages
|
||||
- GitLab-managed runners
|
||||
- FortiAuthenticator/FortiToken 2FA
|
||||
- GitLab Pages
|
||||
- FortiAuthenticator, or FortiToken 2FA
|
||||
- Reply-by email
|
||||
- Service Desk
|
||||
- Any feature not listed [above](#available-features) which needs to be configured outside of the web interface.
|
||||
- GitLab-managed runners
|
||||
- Any feature [not listed above](#available-features) which must be configured outside of the GitLab user interface.
|
||||
|
||||
Features that we do not plan to offer at all:
|
||||
The following features will not be supported:
|
||||
|
||||
- Mattermost
|
||||
- Server-side Git Hooks
|
||||
- Server-side Git hooks
|
||||
|
||||
### Dedicated service features
|
||||
|
||||
The following operational features are not available:
|
||||
|
||||
- Custom domains
|
||||
- Bring Your Own Key (BYOK) encryption
|
||||
- Multiple Geo secondaries (Geo replicas) beyond the secondary site included by default
|
||||
- Self-serve purchasing and configuration
|
||||
- Multiple login providers
|
||||
- Non-AWS cloud providers, such as GCP or Azure
|
||||
|
||||
### AWS regions not supported
|
||||
|
||||
The following AWS regions are not available at launch:
|
||||
The following AWS regions are not available:
|
||||
|
||||
- Jakarta (ap-southeast-3)
|
||||
- Bahrain (me-south-1)
|
||||
- Hong Kong (ap-east-1)
|
||||
- Cape Town (af-south-1)
|
||||
- Milan (eu-south-1)
|
||||
- Paris (eu-west-3)
|
||||
- Jakarta (`ap-southeast-3`)
|
||||
- Bahrain (`me-south-1`)
|
||||
- Hong Kong (`ap-east-1`)
|
||||
- Cape Town (`af-south-1`)
|
||||
- Milan (`eu-south-1`)
|
||||
- Paris (`eu-west-3`)
|
||||
- GovCloud
|
||||
|
||||
## Planned features
|
||||
|
||||
Learn more about the planned improvements to Dedicated on the public [direction page](https://about.gitlab.com/direction/saas-platforms/dedicated/).
|
||||
|
||||
## Contact us
|
||||
|
||||
Fill in the following form to contact us and learn more about this offering.
|
||||
|
|
|
@ -2012,75 +2012,75 @@
|
|||
06_15_00__inlines__textual_content__003:
|
||||
spec_txt_example_position: 673
|
||||
source_specification: commonmark
|
||||
07_01_00__gitlab_specific_markdown__footnotes__001:
|
||||
07_01_00__gitlab_official_specification_markdown__footnotes__001:
|
||||
spec_txt_example_position: 674
|
||||
source_specification: gitlab
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__001:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__001:
|
||||
spec_txt_example_position: 675
|
||||
source_specification: gitlab
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__002:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__002:
|
||||
spec_txt_example_position: 676
|
||||
source_specification: gitlab
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__003:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__003:
|
||||
spec_txt_example_position: 677
|
||||
source_specification: gitlab
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__004:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__004:
|
||||
spec_txt_example_position: 678
|
||||
source_specification: gitlab
|
||||
07_03_00__gitlab_specific_markdown__front_matter__001:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__001:
|
||||
spec_txt_example_position: 679
|
||||
source_specification: gitlab
|
||||
07_03_00__gitlab_specific_markdown__front_matter__002:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__002:
|
||||
spec_txt_example_position: 680
|
||||
source_specification: gitlab
|
||||
07_03_00__gitlab_specific_markdown__front_matter__003:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__003:
|
||||
spec_txt_example_position: 681
|
||||
source_specification: gitlab
|
||||
07_03_00__gitlab_specific_markdown__front_matter__004:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__004:
|
||||
spec_txt_example_position: 682
|
||||
source_specification: gitlab
|
||||
07_03_00__gitlab_specific_markdown__front_matter__005:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__005:
|
||||
spec_txt_example_position: 683
|
||||
source_specification: gitlab
|
||||
07_04_00__gitlab_specific_markdown__audio__001:
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__001:
|
||||
spec_txt_example_position: 684
|
||||
source_specification: gitlab
|
||||
07_04_00__gitlab_specific_markdown__audio__002:
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__002:
|
||||
spec_txt_example_position: 685
|
||||
source_specification: gitlab
|
||||
07_05_00__gitlab_specific_markdown__video__001:
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__003:
|
||||
spec_txt_example_position: 686
|
||||
source_specification: gitlab
|
||||
07_05_00__gitlab_specific_markdown__video__002:
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__004:
|
||||
spec_txt_example_position: 687
|
||||
source_specification: gitlab
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__001:
|
||||
08_01_00__gitlab_internal_extension_markdown__audio__001:
|
||||
spec_txt_example_position: 688
|
||||
source_specification: gitlab
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__002:
|
||||
08_01_00__gitlab_internal_extension_markdown__audio__002:
|
||||
spec_txt_example_position: 689
|
||||
source_specification: gitlab
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__003:
|
||||
08_02_00__gitlab_internal_extension_markdown__video__001:
|
||||
spec_txt_example_position: 690
|
||||
source_specification: gitlab
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__004:
|
||||
08_02_00__gitlab_internal_extension_markdown__video__002:
|
||||
spec_txt_example_position: 691
|
||||
source_specification: gitlab
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001:
|
||||
spec_txt_example_position: 692
|
||||
source_specification: gitlab
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002:
|
||||
spec_txt_example_position: 693
|
||||
source_specification: gitlab
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003:
|
||||
spec_txt_example_position: 694
|
||||
source_specification: gitlab
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004:
|
||||
spec_txt_example_position: 695
|
||||
source_specification: gitlab
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005:
|
||||
spec_txt_example_position: 696
|
||||
source_specification: gitlab
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006:
|
||||
spec_txt_example_position: 697
|
||||
source_specification: gitlab
|
||||
|
|
|
@ -7638,7 +7638,7 @@
|
|||
<p data-sourcepos="1:1-1:19" dir="auto">Multiple spaces</p>
|
||||
wysiwyg: |-
|
||||
<p>Multiple spaces</p>
|
||||
07_01_00__gitlab_specific_markdown__footnotes__001:
|
||||
07_01_00__gitlab_official_specification_markdown__footnotes__001:
|
||||
canonical: |
|
||||
<p>
|
||||
footnote reference tag
|
||||
|
@ -7671,7 +7671,7 @@
|
|||
wysiwyg: |-
|
||||
<p>footnote reference tag <sup identifier="fortytwo">fortytwo</sup></p>
|
||||
<div node="footnoteDefinition(paragraph("footnote text"))" htmlattributes="[object Object]"><p>footnote text</p></div>
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__001:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__001:
|
||||
canonical: |
|
||||
<ul>
|
||||
<li>
|
||||
|
@ -7687,7 +7687,7 @@
|
|||
</ul>
|
||||
wysiwyg: |-
|
||||
<ul start="1" parens="false" data-type="taskList"><li data-checked="false" data-type="taskItem"><label><input type="checkbox"><span></span></label><div><p>incomplete</p></div></li></ul>
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__002:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__002:
|
||||
canonical: |
|
||||
<ul>
|
||||
<li>
|
||||
|
@ -7703,7 +7703,7 @@
|
|||
</ul>
|
||||
wysiwyg: |-
|
||||
<ul start="1" parens="false" data-type="taskList"><li data-checked="true" data-type="taskItem"><label><input type="checkbox" checked="checked"><span></span></label><div><p>completed</p></div></li></ul>
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__003:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__003:
|
||||
canonical: |
|
||||
<ul>
|
||||
<li>
|
||||
|
@ -7720,9 +7720,7 @@
|
|||
<task-button></task-button><input type="checkbox" class="task-list-item-checkbox" data-inapplicable disabled> <s>inapplicable</s>
|
||||
</li>
|
||||
</ul>
|
||||
wysiwyg: |-
|
||||
<ul bullet="*"><li><p>[~] inapplicable</p></li></ul>
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__004:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__004:
|
||||
canonical: |
|
||||
<ul>
|
||||
<li>
|
||||
|
@ -7745,9 +7743,7 @@
|
|||
<p data-sourcepos="3:3-3:20">text in loose list</p>
|
||||
</li>
|
||||
</ul>
|
||||
wysiwyg: |-
|
||||
Inapplicable task list items not yet implemented for WYSYWIG
|
||||
07_03_00__gitlab_specific_markdown__front_matter__001:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__001:
|
||||
canonical: |
|
||||
<pre>
|
||||
<code>
|
||||
|
@ -7761,7 +7757,7 @@
|
|||
</div>
|
||||
wysiwyg: |-
|
||||
<pre language="yaml" class="content-editor-code-block undefined code highlight" isfrontmatter="true"><code>title: YAML front matter</code></pre>
|
||||
07_03_00__gitlab_specific_markdown__front_matter__002:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__002:
|
||||
canonical: |
|
||||
<pre>
|
||||
<code>
|
||||
|
@ -7775,7 +7771,7 @@
|
|||
</div>
|
||||
wysiwyg: |-
|
||||
<pre language="toml" class="content-editor-code-block undefined code highlight" isfrontmatter="true"><code>title: TOML front matter</code></pre>
|
||||
07_03_00__gitlab_specific_markdown__front_matter__003:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__003:
|
||||
canonical: |
|
||||
<pre>
|
||||
<code>
|
||||
|
@ -7795,7 +7791,7 @@
|
|||
<pre language="json" class="content-editor-code-block undefined code highlight" isfrontmatter="true"><code>{
|
||||
"title": "JSON front matter"
|
||||
}</code></pre>
|
||||
07_03_00__gitlab_specific_markdown__front_matter__004:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__004:
|
||||
canonical: |
|
||||
<p>text</p>
|
||||
<hr>
|
||||
|
@ -7809,7 +7805,7 @@
|
|||
<p>text</p>
|
||||
<hr>
|
||||
<h2>title: YAML front matter</h2>
|
||||
07_03_00__gitlab_specific_markdown__front_matter__005:
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__005:
|
||||
canonical: |
|
||||
<hr>
|
||||
<h2>title: YAML front matter</h2>
|
||||
|
@ -7820,37 +7816,7 @@
|
|||
wysiwyg: |-
|
||||
<hr>
|
||||
<h2>title: YAML front matter</h2>
|
||||
07_04_00__gitlab_specific_markdown__audio__001:
|
||||
canonical: |
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:33" dir="auto"><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio title"></audio><a href="audio.oga" target="_blank" rel="noopener noreferrer" title="Download 'audio title'">audio title</a></span></p>
|
||||
wysiwyg: |-
|
||||
<p><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio"></audio><a href="audio.oga">audio</a></span></p>
|
||||
07_04_00__gitlab_specific_markdown__audio__002:
|
||||
canonical: |
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
static: |-
|
||||
<p data-sourcepos="3:1-3:15" dir="auto"><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio title"></audio><a href="audio.oga" target="_blank" rel="noopener noreferrer" title="Download 'audio title'">audio title</a></span></p>
|
||||
wysiwyg: |-
|
||||
<pre>[audio]: audio.oga "audio title"</pre>
|
||||
<p><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio"></audio><a href="audio.oga">audio</a></span></p>
|
||||
07_05_00__gitlab_specific_markdown__video__001:
|
||||
canonical: |
|
||||
<p><video src="video.m4v" title="video title"></video></p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:33" dir="auto"><span class="media-container video-container"><video src="video.m4v" controls="true" data-setup="{}" data-title="video title" width="400" preload="metadata"></video><a href="video.m4v" target="_blank" rel="noopener noreferrer" title="Download 'video title'">video title</a></span></p>
|
||||
wysiwyg: |-
|
||||
<p><span class="media-container video-container"><video src="video.m4v" controls="true" data-setup="{}" data-title="video"></video><a href="video.m4v">video</a></span></p>
|
||||
07_05_00__gitlab_specific_markdown__video__002:
|
||||
canonical: |
|
||||
<p><video src="video.mov" title="video title"></video></p>
|
||||
static: |-
|
||||
<p data-sourcepos="3:1-3:15" dir="auto"><span class="media-container video-container"><video src="video.mov" controls="true" data-setup="{}" data-title="video title" width="400" preload="metadata"></video><a href="video.mov" target="_blank" rel="noopener noreferrer" title="Download 'video title'">video title</a></span></p>
|
||||
wysiwyg: |-
|
||||
<pre>[video]: video.mov "video title"</pre>
|
||||
<p><span class="media-container video-container"><video src="video.mov" controls="true" data-setup="{}" data-title="video"></video><a href="video.mov">video</a></span></p>
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__001:
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__001:
|
||||
canonical: |
|
||||
<nav>
|
||||
<ul>
|
||||
|
@ -7874,7 +7840,7 @@
|
|||
<div class="table-of-contents gl-border-1 gl-border-solid gl-text-center gl-border-gray-100 gl-mb-5">Table of contents</div>
|
||||
<h1>Heading 1</h1>
|
||||
<h2>Heading 2</h2>
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__002:
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__002:
|
||||
canonical: |
|
||||
<nav>
|
||||
<ul>
|
||||
|
@ -7898,7 +7864,7 @@
|
|||
<div class="table-of-contents gl-border-1 gl-border-solid gl-text-center gl-border-gray-100 gl-mb-5">Table of contents</div>
|
||||
<h1>Heading 1</h1>
|
||||
<h2>Heading 2</h2>
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__003:
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__003:
|
||||
canonical: |
|
||||
<p>[[<em>TOC</em>]]text</p>
|
||||
<p>text[TOC]</p>
|
||||
|
@ -7912,7 +7878,7 @@
|
|||
text</p>
|
||||
<p>text
|
||||
[TOC]</p>
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__004:
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__004:
|
||||
canonical: |
|
||||
<nav>
|
||||
<ul>
|
||||
|
@ -7927,45 +7893,63 @@
|
|||
wysiwyg: |-
|
||||
<div class="table-of-contents gl-border-1 gl-border-solid gl-text-center gl-border-gray-100 gl-mb-5">Table of contents</div>
|
||||
<h1>Heading 1</h1>
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001:
|
||||
08_01_00__gitlab_internal_extension_markdown__audio__001:
|
||||
canonical: |
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:33" dir="auto"><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio title"></audio><a href="audio.oga" target="_blank" rel="noopener noreferrer" title="Download 'audio title'">audio title</a></span></p>
|
||||
wysiwyg: |-
|
||||
<p><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio"></audio><a href="audio.oga">audio</a></span></p>
|
||||
08_01_00__gitlab_internal_extension_markdown__audio__002:
|
||||
canonical: |
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
static: |-
|
||||
<p data-sourcepos="3:1-3:15" dir="auto"><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio title"></audio><a href="audio.oga" target="_blank" rel="noopener noreferrer" title="Download 'audio title'">audio title</a></span></p>
|
||||
wysiwyg: |-
|
||||
<pre>[audio]: audio.oga "audio title"</pre>
|
||||
<p><span class="media-container audio-container"><audio src="audio.oga" controls="true" data-setup="{}" data-title="audio"></audio><a href="audio.oga">audio</a></span></p>
|
||||
08_02_00__gitlab_internal_extension_markdown__video__001:
|
||||
canonical: |
|
||||
<p><video src="video.m4v" title="video title"></video></p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:33" dir="auto"><span class="media-container video-container"><video src="video.m4v" controls="true" data-setup="{}" data-title="video title" width="400" preload="metadata"></video><a href="video.m4v" target="_blank" rel="noopener noreferrer" title="Download 'video title'">video title</a></span></p>
|
||||
wysiwyg: |-
|
||||
<p><span class="media-container video-container"><video src="video.m4v" controls="true" data-setup="{}" data-title="video"></video><a href="video.m4v">video</a></span></p>
|
||||
08_02_00__gitlab_internal_extension_markdown__video__002:
|
||||
canonical: |
|
||||
<p><video src="video.mov" title="video title"></video></p>
|
||||
static: |-
|
||||
<p data-sourcepos="3:1-3:15" dir="auto"><span class="media-container video-container"><video src="video.mov" controls="true" data-setup="{}" data-title="video title" width="400" preload="metadata"></video><a href="video.mov" target="_blank" rel="noopener noreferrer" title="Download 'video title'">video title</a></span></p>
|
||||
wysiwyg: |-
|
||||
<pre>[video]: video.mov "video title"</pre>
|
||||
<p><span class="media-container video-container"><video src="video.mov" controls="true" data-setup="{}" data-title="video"></video><a href="video.mov">video</a></span></p>
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001:
|
||||
canonical: |
|
||||
<p><a href="groups-test-file">groups-test-file</a></p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:45" dir="auto"><a href="/groups/glfm_group/-/uploads/groups-test-file" data-canonical-src="/uploads/groups-test-file" data-link="true" class="gfm">groups-test-file</a></p>
|
||||
wysiwyg: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002:
|
||||
canonical: |
|
||||
<p><a href="projects-test-file">projects-test-file</a></p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:40" dir="auto"><a href="/glfm_group/glfm_project/-/blob/master/projects-test-file">projects-test-file</a></p>
|
||||
wysiwyg: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003:
|
||||
canonical: |
|
||||
<p>This project snippet ID reference IS filtered: $88888</p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:53" dir="auto">This project snippet ID reference IS filtered: <a href="/glfm_group/glfm_project/-/snippets/88888" data-reference-type="snippet" data-original="$88888" data-link="false" data-link-reference="false" data-project="77777" data-snippet="88888" data-container="body" data-placement="top" title="glfm_project_snippet" class="gfm gfm-snippet has-tooltip">$88888</a></p>
|
||||
wysiwyg: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004:
|
||||
canonical: |
|
||||
<p>This personal snippet ID reference is not filtered: $99999</p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:58" dir="auto">This personal snippet ID reference is not filtered: $99999</p>
|
||||
wysiwyg: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005:
|
||||
canonical: |
|
||||
<p><a href="project-wikis-test-file">project-wikis-test-file</a></p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:50" dir="auto"><a href="/glfm_group/glfm_project/-/wikis/project-wikis-test-file" data-canonical-src="project-wikis-test-file">project-wikis-test-file</a></p>
|
||||
wysiwyg: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006:
|
||||
canonical: |
|
||||
<p><a href="group-wikis-test-file">group-wikis-test-file</a></p>
|
||||
static: |-
|
||||
<p data-sourcepos="1:1-1:46" dir="auto"><a href="/groups/glfm_group/-/wikis/group-wikis-test-file" data-canonical-src="group-wikis-test-file">group-wikis-test-file</a></p>
|
||||
wysiwyg: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
|
|
|
@ -2189,87 +2189,87 @@
|
|||
Foo χρῆν
|
||||
06_15_00__inlines__textual_content__003: |
|
||||
Multiple spaces
|
||||
07_01_00__gitlab_specific_markdown__footnotes__001: |
|
||||
07_01_00__gitlab_official_specification_markdown__footnotes__001: |
|
||||
footnote reference tag [^fortytwo]
|
||||
|
||||
[^fortytwo]: footnote text
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__001: |
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__001: |
|
||||
- [ ] incomplete
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__002: |
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__002: |
|
||||
- [x] completed
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__003: |
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__003: |
|
||||
- [~] inapplicable
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__004: |
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__004: |
|
||||
- [~] inapplicable
|
||||
|
||||
text in loose list
|
||||
07_03_00__gitlab_specific_markdown__front_matter__001: |
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__001: |
|
||||
---
|
||||
title: YAML front matter
|
||||
---
|
||||
07_03_00__gitlab_specific_markdown__front_matter__002: |
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__002: |
|
||||
+++
|
||||
title: TOML front matter
|
||||
+++
|
||||
07_03_00__gitlab_specific_markdown__front_matter__003: |
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__003: |
|
||||
;;;
|
||||
{
|
||||
"title": "JSON front matter"
|
||||
}
|
||||
;;;
|
||||
07_03_00__gitlab_specific_markdown__front_matter__004: |
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__004: |
|
||||
text
|
||||
|
||||
---
|
||||
title: YAML front matter
|
||||
---
|
||||
07_03_00__gitlab_specific_markdown__front_matter__005: |2
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__005: |2
|
||||
---
|
||||
title: YAML front matter
|
||||
---
|
||||
07_04_00__gitlab_specific_markdown__audio__001: |
|
||||
![audio](audio.oga "audio title")
|
||||
07_04_00__gitlab_specific_markdown__audio__002: |
|
||||
[audio]: audio.oga "audio title"
|
||||
|
||||
![audio][audio]
|
||||
07_05_00__gitlab_specific_markdown__video__001: |
|
||||
![video](video.m4v "video title")
|
||||
07_05_00__gitlab_specific_markdown__video__002: |
|
||||
[video]: video.mov "video title"
|
||||
|
||||
![video][video]
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__001: |
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__001: |
|
||||
[TOC]
|
||||
|
||||
# Heading 1
|
||||
|
||||
## Heading 2
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__002: |
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__002: |
|
||||
[[_TOC_]]
|
||||
|
||||
# Heading 1
|
||||
|
||||
## Heading 2
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__003: |
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__003: |
|
||||
[[_TOC_]]
|
||||
text
|
||||
|
||||
text
|
||||
[TOC]
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__004: |2
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__004: |2
|
||||
[[_TOC_]]
|
||||
|
||||
# Heading 1
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001: |
|
||||
08_01_00__gitlab_internal_extension_markdown__audio__001: |
|
||||
![audio](audio.oga "audio title")
|
||||
08_01_00__gitlab_internal_extension_markdown__audio__002: |
|
||||
[audio]: audio.oga "audio title"
|
||||
|
||||
![audio][audio]
|
||||
08_02_00__gitlab_internal_extension_markdown__video__001: |
|
||||
![video](video.m4v "video title")
|
||||
08_02_00__gitlab_internal_extension_markdown__video__002: |
|
||||
[video]: video.mov "video title"
|
||||
|
||||
![video][video]
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001: |
|
||||
[groups-test-file](/uploads/groups-test-file)
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002: |
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002: |
|
||||
[projects-test-file](projects-test-file)
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003: |
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003: |
|
||||
This project snippet ID reference IS filtered: $88888
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004: |
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004: |
|
||||
This personal snippet ID reference is not filtered: $99999
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005: |
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005: |
|
||||
[project-wikis-test-file](project-wikis-test-file)
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006: |
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006: |
|
||||
[group-wikis-test-file](group-wikis-test-file)
|
||||
|
|
|
@ -20561,7 +20561,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_01_00__gitlab_specific_markdown__footnotes__001: |-
|
||||
07_01_00__gitlab_official_specification_markdown__footnotes__001: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20601,7 +20601,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__001: |-
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__001: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20634,7 +20634,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__002: |-
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__002: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20667,11 +20667,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__003: |-
|
||||
Inapplicable task list items not yet implemented for WYSYWIG
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__004: |-
|
||||
Inapplicable task list items not yet implemented for WYSYWIG
|
||||
07_03_00__gitlab_specific_markdown__front_matter__001: |-
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__001: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20691,7 +20687,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_03_00__gitlab_specific_markdown__front_matter__002: |-
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__002: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20711,7 +20707,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_03_00__gitlab_specific_markdown__front_matter__003: |-
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__003: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20731,7 +20727,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_03_00__gitlab_specific_markdown__front_matter__004: |-
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__004: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20761,7 +20757,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_03_00__gitlab_specific_markdown__front_matter__005: |-
|
||||
07_03_00__gitlab_official_specification_markdown__front_matter__005: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20782,115 +20778,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_04_00__gitlab_specific_markdown__audio__001: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
{
|
||||
"type": "paragraph",
|
||||
"content": [
|
||||
{
|
||||
"type": "audio",
|
||||
"attrs": {
|
||||
"uploading": false,
|
||||
"src": "audio.oga",
|
||||
"canonicalSrc": "audio.oga",
|
||||
"alt": "audio"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
07_04_00__gitlab_specific_markdown__audio__002: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
{
|
||||
"type": "referenceDefinition",
|
||||
"attrs": {
|
||||
"identifier": "audio",
|
||||
"url": "audio.oga",
|
||||
"title": "audio title"
|
||||
},
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "[audio]: audio.oga \"audio title\""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "paragraph",
|
||||
"content": [
|
||||
{
|
||||
"type": "audio",
|
||||
"attrs": {
|
||||
"uploading": false,
|
||||
"src": "audio.oga",
|
||||
"canonicalSrc": "audio",
|
||||
"alt": "audio"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
07_05_00__gitlab_specific_markdown__video__001: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
{
|
||||
"type": "paragraph",
|
||||
"content": [
|
||||
{
|
||||
"type": "video",
|
||||
"attrs": {
|
||||
"uploading": false,
|
||||
"src": "video.m4v",
|
||||
"canonicalSrc": "video.m4v",
|
||||
"alt": "video"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
07_05_00__gitlab_specific_markdown__video__002: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
{
|
||||
"type": "referenceDefinition",
|
||||
"attrs": {
|
||||
"identifier": "video",
|
||||
"url": "video.mov",
|
||||
"title": "video title"
|
||||
},
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "[video]: video.mov \"video title\""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "paragraph",
|
||||
"content": [
|
||||
{
|
||||
"type": "video",
|
||||
"attrs": {
|
||||
"uploading": false,
|
||||
"src": "video.mov",
|
||||
"canonicalSrc": "video",
|
||||
"alt": "video"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__001: |-
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__001: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20923,7 +20811,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__002: |-
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__002: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20956,7 +20844,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__003: |-
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__003: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -20993,7 +20881,7 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
07_06_00__gitlab_specific_markdown__table_of_contents__004: |-
|
||||
07_04_00__gitlab_official_specification_markdown__table_of_contents__004: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
|
@ -21014,15 +20902,111 @@
|
|||
}
|
||||
]
|
||||
}
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006: |-
|
||||
Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__gitlab_internal_extension_markdown__audio__001: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
{
|
||||
"type": "paragraph",
|
||||
"content": [
|
||||
{
|
||||
"type": "audio",
|
||||
"attrs": {
|
||||
"uploading": false,
|
||||
"src": "audio.oga",
|
||||
"canonicalSrc": "audio.oga",
|
||||
"alt": "audio"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
08_01_00__gitlab_internal_extension_markdown__audio__002: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
{
|
||||
"type": "referenceDefinition",
|
||||
"attrs": {
|
||||
"identifier": "audio",
|
||||
"url": "audio.oga",
|
||||
"title": "audio title"
|
||||
},
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "[audio]: audio.oga \"audio title\""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "paragraph",
|
||||
"content": [
|
||||
{
|
||||
"type": "audio",
|
||||
"attrs": {
|
||||
"uploading": false,
|
||||
"src": "audio.oga",
|
||||
"canonicalSrc": "audio",
|
||||
"alt": "audio"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
08_02_00__gitlab_internal_extension_markdown__video__001: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
{
|
||||
"type": "paragraph",
|
||||
"content": [
|
||||
{
|
||||
"type": "video",
|
||||
"attrs": {
|
||||
"uploading": false,
|
||||
"src": "video.m4v",
|
||||
"canonicalSrc": "video.m4v",
|
||||
"alt": "video"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
08_02_00__gitlab_internal_extension_markdown__video__002: |-
|
||||
{
|
||||
"type": "doc",
|
||||
"content": [
|
||||
{
|
||||
"type": "referenceDefinition",
|
||||
"attrs": {
|
||||
"identifier": "video",
|
||||
"url": "video.mov",
|
||||
"title": "video title"
|
||||
},
|
||||
"content": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "[video]: video.mov \"video title\""
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "paragraph",
|
||||
"content": [
|
||||
{
|
||||
"type": "video",
|
||||
"attrs": {
|
||||
"uploading": false,
|
||||
"src": "video.mov",
|
||||
"canonicalSrc": "video",
|
||||
"alt": "video"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
---
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001:
|
||||
api_request_override_path: /groups/glfm_group/preview_markdown
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002:
|
||||
api_request_override_path: /glfm_group/glfm_project/preview_markdown
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003:
|
||||
api_request_override_path: /glfm_group/glfm_project/preview_markdown
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004:
|
||||
api_request_override_path: /-/snippets/preview_markdown
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005:
|
||||
api_request_override_path: /glfm_group/glfm_project/-/wikis/new_page/preview_markdown
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006:
|
||||
ee: true
|
||||
api_request_override_path: /groups/glfm_group/-/wikis/new_page/preview_markdown
|
||||
|
|
|
@ -12,49 +12,49 @@
|
|||
skip_running_snapshot_static_html_tests: false # NOT YET SUPPORTED
|
||||
skip_running_snapshot_wysiwyg_html_tests: false
|
||||
skip_running_snapshot_prosemirror_json_tests: false
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__003:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__003:
|
||||
skip_update_example_snapshot_html_wysiwyg: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
skip_update_example_snapshot_prosemirror_json: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
skip_running_conformance_wysiwyg_tests: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
skip_running_snapshot_wysiwyg_html_tests: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
skip_running_snapshot_prosemirror_json_tests: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
07_02_00__gitlab_specific_markdown__task_list_items__004:
|
||||
07_02_00__gitlab_official_specification_markdown__task_list_items__004:
|
||||
skip_update_example_snapshot_html_wysiwyg: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
skip_update_example_snapshot_prosemirror_json: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
skip_running_conformance_wysiwyg_tests: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
skip_running_snapshot_wysiwyg_html_tests: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
skip_running_snapshot_prosemirror_json_tests: Inapplicable task list items not yet implemented for WYSYWIG
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__001:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__001:
|
||||
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__002:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__002:
|
||||
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__003:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__003:
|
||||
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__004:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__004:
|
||||
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__005:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__005:
|
||||
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_wysiwyg_html_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_snapshot_prosemirror_json_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
08_01_00__examples_using_internal_extensions__markdown_preview_api_request_overrides__006:
|
||||
08_03_00__gitlab_internal_extension_markdown__markdown_preview_api_request_overrides__006:
|
||||
skip_update_example_snapshot_html_wysiwyg: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_update_example_snapshot_prosemirror_json: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
skip_running_conformance_wysiwyg_tests: Not yet implemented. See https://gitlab.com/gitlab-org/gitlab/-/merge_requests/92507#note_1068159236
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
# GitLab Internal Extension Markdown
|
||||
|
||||
## Audio
|
||||
|
||||
See
|
||||
[audio](https://docs.gitlab.com/ee/user/markdown.html#audio) in the GitLab Flavored Markdown documentation.
|
||||
|
||||
GLFM renders image elements as an audio player as long as the resource’s file extension is
|
||||
one of the following supported audio extensions `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`.
|
||||
Audio ignore the alternative text part of an image declaration.
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
![audio](audio.oga "audio title")
|
||||
.
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
````````````````````````````````
|
||||
|
||||
Reference definitions work audio as well:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[audio]: audio.oga "audio title"
|
||||
|
||||
![audio][audio]
|
||||
.
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
````````````````````````````````
|
||||
|
||||
## Video
|
||||
|
||||
See
|
||||
[videos](https://docs.gitlab.com/ee/user/markdown.html#videos) in the GitLab Flavored Markdown documentation.
|
||||
|
||||
GLFM renders image elements as a video player as long as the resource’s file extension is
|
||||
one of the following supported video extensions `.mp4`, `.m4v`, `.mov`, `.webm`, and `.ogv`.
|
||||
Videos ignore the alternative text part of an image declaration.
|
||||
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
![video](video.m4v "video title")
|
||||
.
|
||||
<p><video src="video.m4v" title="video title"></video></p>
|
||||
````````````````````````````````
|
||||
|
||||
Reference definitions work video as well:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[video]: video.mov "video title"
|
||||
|
||||
![video][video]
|
||||
.
|
||||
<p><video src="video.mov" title="video title"></video></p>
|
||||
````````````````````````````````
|
||||
|
||||
## Markdown Preview API Request Overrides
|
||||
|
||||
This section contains examples of all controllers which use `PreviewMarkdown` module
|
||||
and use different `markdown_context_params`. They exercise the various `preview_markdown`
|
||||
endpoints via `glfm_example_metadata.yml`.
|
||||
|
||||
|
||||
`preview_markdown` exercising `groups` API endpoint and `UploadLinkFilter`:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[groups-test-file](/uploads/groups-test-file)
|
||||
.
|
||||
<p><a href="groups-test-file">groups-test-file</a></p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising `projects` API endpoint and `RepositoryLinkFilter`:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[projects-test-file](projects-test-file)
|
||||
.
|
||||
<p><a href="projects-test-file">projects-test-file</a></p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising `projects` API endpoint and `SnippetReferenceFilter`:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
This project snippet ID reference IS filtered: $88888
|
||||
.
|
||||
<p>This project snippet ID reference IS filtered: $88888</p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising personal (non-project) `snippets` API endpoint. This is
|
||||
only used by the comment field on personal snippets. It has no unique custom markdown
|
||||
extension behavior, and specifically does not render snippet references via
|
||||
`SnippetReferenceFilter`, even if the ID is valid.
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
This personal snippet ID reference is not filtered: $99999
|
||||
.
|
||||
<p>This personal snippet ID reference is not filtered: $99999</p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising project `wikis` API endpoint and `WikiLinkFilter`:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[project-wikis-test-file](project-wikis-test-file)
|
||||
.
|
||||
<p><a href="project-wikis-test-file">project-wikis-test-file</a></p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising group `wikis` API endpoint and `WikiLinkFilter`. This example
|
||||
also requires an EE license enabling the `group_wikis` feature:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[group-wikis-test-file](group-wikis-test-file)
|
||||
.
|
||||
<p><a href="group-wikis-test-file">group-wikis-test-file</a></p>
|
||||
````````````````````````````````
|
|
@ -1,4 +1,4 @@
|
|||
# GitLab-Specific Markdown
|
||||
# GitLab Official Specification Markdown
|
||||
|
||||
Currently, only some of the GitLab-specific markdown features are
|
||||
listed in this section. We will eventually add all
|
||||
|
@ -200,57 +200,6 @@ title: YAML front matter
|
|||
<h2>title: YAML front matter</h2>
|
||||
````````````````````````````````
|
||||
|
||||
## Audio
|
||||
|
||||
See
|
||||
[audio](https://docs.gitlab.com/ee/user/markdown.html#audio) in the GitLab Flavored Markdown documentation.
|
||||
|
||||
GLFM renders image elements as an audio player as long as the resource’s file extension is
|
||||
one of the following supported audio extensions `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`.
|
||||
Audio ignore the alternative text part of an image declaration.
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
![audio](audio.oga "audio title")
|
||||
.
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
````````````````````````````````
|
||||
|
||||
Reference definitions work audio as well:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[audio]: audio.oga "audio title"
|
||||
|
||||
![audio][audio]
|
||||
.
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
````````````````````````````````
|
||||
|
||||
## Video
|
||||
|
||||
See
|
||||
[videos](https://docs.gitlab.com/ee/user/markdown.html#videos) in the GitLab Flavored Markdown documentation.
|
||||
|
||||
GLFM renders image elements as a video player as long as the resource’s file extension is
|
||||
one of the following supported video extensions `.mp4`, `.m4v`, `.mov`, `.webm`, and `.ogv`.
|
||||
Videos ignore the alternative text part of an image declaration.
|
||||
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
![video](video.m4v "video title")
|
||||
.
|
||||
<p><video src="video.m4v" title="video title"></video></p>
|
||||
````````````````````````````````
|
||||
|
||||
Reference definitions work video as well:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[video]: video.mov "video title"
|
||||
|
||||
![video][video]
|
||||
.
|
||||
<p><video src="video.mov" title="video title"></video></p>
|
||||
````````````````````````````````
|
||||
|
||||
## Table of contents
|
||||
|
||||
See
|
||||
|
@ -326,64 +275,3 @@ A table of contents can be indented with up to three spaces.
|
|||
</nav>
|
||||
<h1>Heading 1</h1>
|
||||
````````````````````````````````
|
||||
|
||||
# Examples Using Internal Extensions
|
||||
|
||||
## Markdown Preview API Request Overrides
|
||||
|
||||
This section contains examples of all controllers which use `PreviewMarkdown` module
|
||||
and use different `markdown_context_params`. They exercise the various `preview_markdown`
|
||||
endpoints via `glfm_example_metadata.yml`.
|
||||
|
||||
|
||||
`preview_markdown` exercising `groups` API endpoint and `UploadLinkFilter`:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[groups-test-file](/uploads/groups-test-file)
|
||||
.
|
||||
<p><a href="groups-test-file">groups-test-file</a></p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising `projects` API endpoint and `RepositoryLinkFilter`:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[projects-test-file](projects-test-file)
|
||||
.
|
||||
<p><a href="projects-test-file">projects-test-file</a></p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising `projects` API endpoint and `SnippetReferenceFilter`:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
This project snippet ID reference IS filtered: $88888
|
||||
.
|
||||
<p>This project snippet ID reference IS filtered: $88888</p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising personal (non-project) `snippets` API endpoint. This is
|
||||
only used by the comment field on personal snippets. It has no unique custom markdown
|
||||
extension behavior, and specifically does not render snippet references via
|
||||
`SnippetReferenceFilter`, even if the ID is valid.
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
This personal snippet ID reference is not filtered: $99999
|
||||
.
|
||||
<p>This personal snippet ID reference is not filtered: $99999</p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising project `wikis` API endpoint and `WikiLinkFilter`:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[project-wikis-test-file](project-wikis-test-file)
|
||||
.
|
||||
<p><a href="project-wikis-test-file">project-wikis-test-file</a></p>
|
||||
````````````````````````````````
|
||||
|
||||
`preview_markdown` exercising group `wikis` API endpoint and `WikiLinkFilter`. This example
|
||||
also requires an EE license enabling the `group_wikis` feature:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[group-wikis-test-file](group-wikis-test-file)
|
||||
.
|
||||
<p><a href="group-wikis-test-file">group-wikis-test-file</a></p>
|
||||
````````````````````````````````
|
|
@ -9600,7 +9600,7 @@ Multiple spaces
|
|||
````````````````````````````````
|
||||
|
||||
|
||||
# GitLab-Specific Markdown
|
||||
# GitLab Official Specification Markdown
|
||||
|
||||
Currently, only some of the GitLab-specific markdown features are
|
||||
listed in this section. We will eventually add all
|
||||
|
@ -9802,57 +9802,6 @@ title: YAML front matter
|
|||
<h2>title: YAML front matter</h2>
|
||||
````````````````````````````````
|
||||
|
||||
## Audio
|
||||
|
||||
See
|
||||
[audio](https://docs.gitlab.com/ee/user/markdown.html#audio) in the GitLab Flavored Markdown documentation.
|
||||
|
||||
GLFM renders image elements as an audio player as long as the resource’s file extension is
|
||||
one of the following supported audio extensions `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`.
|
||||
Audio ignore the alternative text part of an image declaration.
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
![audio](audio.oga "audio title")
|
||||
.
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
````````````````````````````````
|
||||
|
||||
Reference definitions work audio as well:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[audio]: audio.oga "audio title"
|
||||
|
||||
![audio][audio]
|
||||
.
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
````````````````````````````````
|
||||
|
||||
## Video
|
||||
|
||||
See
|
||||
[videos](https://docs.gitlab.com/ee/user/markdown.html#videos) in the GitLab Flavored Markdown documentation.
|
||||
|
||||
GLFM renders image elements as a video player as long as the resource’s file extension is
|
||||
one of the following supported video extensions `.mp4`, `.m4v`, `.mov`, `.webm`, and `.ogv`.
|
||||
Videos ignore the alternative text part of an image declaration.
|
||||
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
![video](video.m4v "video title")
|
||||
.
|
||||
<p><video src="video.m4v" title="video title"></video></p>
|
||||
````````````````````````````````
|
||||
|
||||
Reference definitions work video as well:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[video]: video.mov "video title"
|
||||
|
||||
![video][video]
|
||||
.
|
||||
<p><video src="video.mov" title="video title"></video></p>
|
||||
````````````````````````````````
|
||||
|
||||
## Table of contents
|
||||
|
||||
See
|
||||
|
@ -9929,7 +9878,58 @@ A table of contents can be indented with up to three spaces.
|
|||
<h1>Heading 1</h1>
|
||||
````````````````````````````````
|
||||
|
||||
# Examples Using Internal Extensions
|
||||
# GitLab Internal Extension Markdown
|
||||
|
||||
## Audio
|
||||
|
||||
See
|
||||
[audio](https://docs.gitlab.com/ee/user/markdown.html#audio) in the GitLab Flavored Markdown documentation.
|
||||
|
||||
GLFM renders image elements as an audio player as long as the resource’s file extension is
|
||||
one of the following supported audio extensions `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`.
|
||||
Audio ignore the alternative text part of an image declaration.
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
![audio](audio.oga "audio title")
|
||||
.
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
````````````````````````````````
|
||||
|
||||
Reference definitions work audio as well:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[audio]: audio.oga "audio title"
|
||||
|
||||
![audio][audio]
|
||||
.
|
||||
<p><audio src="audio.oga" title="audio title"></audio></p>
|
||||
````````````````````````````````
|
||||
|
||||
## Video
|
||||
|
||||
See
|
||||
[videos](https://docs.gitlab.com/ee/user/markdown.html#videos) in the GitLab Flavored Markdown documentation.
|
||||
|
||||
GLFM renders image elements as a video player as long as the resource’s file extension is
|
||||
one of the following supported video extensions `.mp4`, `.m4v`, `.mov`, `.webm`, and `.ogv`.
|
||||
Videos ignore the alternative text part of an image declaration.
|
||||
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
![video](video.m4v "video title")
|
||||
.
|
||||
<p><video src="video.m4v" title="video title"></video></p>
|
||||
````````````````````````````````
|
||||
|
||||
Reference definitions work video as well:
|
||||
|
||||
```````````````````````````````` example gitlab
|
||||
[video]: video.mov "video title"
|
||||
|
||||
![video][video]
|
||||
.
|
||||
<p><video src="video.mov" title="video title"></video></p>
|
||||
````````````````````````````````
|
||||
|
||||
## Markdown Preview API Request Overrides
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'cgi/util'
|
||||
|
||||
# Generated HTML is transformed back to GFM by app/assets/javascripts/behaviors/markdown/nodes/table_of_contents.js
|
||||
module Banzai
|
||||
module Filter
|
||||
|
@ -93,7 +95,7 @@ module Banzai
|
|||
def text
|
||||
return '' unless node
|
||||
|
||||
@text ||= EscapeUtils.escape_html(node.text)
|
||||
@text ||= CGI.escapeHTML(node.text)
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -513,6 +513,9 @@ msgid_plural "%{bold_start}%{count}%{bold_end} opened merge requests"
|
|||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
msgid "%{chartTitle} no data series"
|
||||
msgstr ""
|
||||
|
||||
msgid "%{code_open}Masked:%{code_close} Hidden in job logs. Must match masking requirements."
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -16,7 +16,9 @@ module Glfm
|
|||
# GitLab Flavored Markdown specification files
|
||||
specification_input_glfm_path = specification_path.join('input/gitlab_flavored_markdown')
|
||||
GLFM_INTRO_MD_PATH = specification_input_glfm_path.join('glfm_intro.md')
|
||||
GLFM_EXAMPLES_TXT_PATH = specification_input_glfm_path.join('glfm_canonical_examples.txt')
|
||||
GLFM_OFFICIAL_SPECIFICATION_EXAMPLES_MD_PATH =
|
||||
specification_input_glfm_path.join('glfm_official_specification_examples.md')
|
||||
GLFM_INTERNAL_EXTENSION_EXAMPLES_MD_PATH = specification_input_glfm_path.join('glfm_internal_extension_examples.md')
|
||||
GLFM_EXAMPLE_STATUS_YML_PATH = specification_input_glfm_path.join('glfm_example_status.yml')
|
||||
GLFM_EXAMPLE_METADATA_YML_PATH =
|
||||
specification_input_glfm_path.join('glfm_example_metadata.yml')
|
||||
|
|
|
@ -76,7 +76,7 @@ module Glfm
|
|||
glfm_spec_txt_lines = ghfm_spec_txt_lines.dup
|
||||
replace_header(glfm_spec_txt_lines)
|
||||
replace_intro_section(glfm_spec_txt_lines)
|
||||
insert_examples_txt(glfm_spec_txt_lines)
|
||||
insert_examples(glfm_spec_txt_lines)
|
||||
glfm_spec_txt_lines.join('')
|
||||
end
|
||||
|
||||
|
@ -103,9 +103,12 @@ module Glfm
|
|||
spec_txt_lines[ghfm_intro_header_begin_index, ghfm_intro_section_length] = glfm_intro_md_lines
|
||||
end
|
||||
|
||||
def insert_examples_txt(spec_txt_lines)
|
||||
glfm_examples_txt_lines = File.open(GLFM_EXAMPLES_TXT_PATH).readlines
|
||||
raise "Unable to read lines from #{GLFM_EXAMPLES_TXT_PATH}" if glfm_examples_txt_lines.empty?
|
||||
def insert_examples(spec_txt_lines)
|
||||
official_spec_lines = File.open(GLFM_OFFICIAL_SPECIFICATION_EXAMPLES_MD_PATH).readlines
|
||||
raise "Unable to read lines from #{GLFM_OFFICIAL_SPECIFICATION_EXAMPLES_MD_PATH}" if official_spec_lines.empty?
|
||||
|
||||
internal_extension_lines = File.open(GLFM_INTERNAL_EXTENSION_EXAMPLES_MD_PATH).readlines
|
||||
raise "Unable to read lines from #{GLFM_INTERNAL_EXTENSION_EXAMPLES_MD_PATH}" if internal_extension_lines.empty?
|
||||
|
||||
ghfm_end_tests_comment_index = spec_txt_lines.index do |line|
|
||||
line =~ END_TESTS_COMMENT_LINE_TEXT
|
||||
|
@ -113,7 +116,13 @@ module Glfm
|
|||
raise "Unable to locate 'END TESTS' comment line in #{GHFM_SPEC_MD_PATH}" if ghfm_end_tests_comment_index.nil?
|
||||
|
||||
# Insert the GLFM examples before the 'END TESTS' comment line
|
||||
spec_txt_lines[ghfm_end_tests_comment_index - 1] = ["\n", glfm_examples_txt_lines, "\n"].flatten
|
||||
spec_txt_lines[ghfm_end_tests_comment_index - 1] = [
|
||||
"\n",
|
||||
official_spec_lines,
|
||||
"\n",
|
||||
internal_extension_lines,
|
||||
"\n"
|
||||
].flatten
|
||||
|
||||
spec_txt_lines
|
||||
end
|
||||
|
|
|
@ -4,12 +4,13 @@ require 'spec_helper'
|
|||
|
||||
RSpec.describe 'Expand and collapse diffs', :js do
|
||||
let(:branch) { 'expand-collapse-diffs' }
|
||||
let(:project) { create(:project, :repository) }
|
||||
|
||||
let_it_be(:project) { create(:project, :repository) }
|
||||
let_it_be(:admin) { create(:admin) }
|
||||
|
||||
before do
|
||||
allow(Gitlab::CurrentSettings).to receive(:diff_max_patch_bytes).and_return(100.kilobytes)
|
||||
|
||||
admin = create(:admin)
|
||||
sign_in(admin)
|
||||
gitlab_enable_admin_mode_sign_in(admin)
|
||||
|
||||
|
|
|
@ -126,6 +126,7 @@ describe('BoardFilteredSearch', () => {
|
|||
{ type: 'weight', value: { data: '2', operator: '=' } },
|
||||
{ type: 'iteration', value: { data: 'Any&3', operator: '=' } },
|
||||
{ type: 'release', value: { data: 'v1.0.0', operator: '=' } },
|
||||
{ type: 'health_status', value: { data: 'onTrack', operator: '=' } },
|
||||
];
|
||||
jest.spyOn(urlUtility, 'updateHistory');
|
||||
findFilteredSearch().vm.$emit('onFilter', mockFilters);
|
||||
|
@ -134,7 +135,7 @@ describe('BoardFilteredSearch', () => {
|
|||
title: '',
|
||||
replace: true,
|
||||
url:
|
||||
'http://test.host/?author_username=root&label_name[]=label&label_name[]=label%262&assignee_username=root&milestone_title=New%20Milestone&iteration_id=Any&iteration_cadence_id=3&types=INCIDENT&weight=2&release_tag=v1.0.0',
|
||||
'http://test.host/?author_username=root&label_name[]=label&label_name[]=label%262&assignee_username=root&milestone_title=New%20Milestone&iteration_id=Any&iteration_cadence_id=3&types=INCIDENT&weight=2&release_tag=v1.0.0&health_status=onTrack',
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -160,7 +161,9 @@ describe('BoardFilteredSearch', () => {
|
|||
|
||||
describe('when url params are already set', () => {
|
||||
beforeEach(() => {
|
||||
createComponent({ initialFilterParams: { authorUsername: 'root', labelName: ['label'] } });
|
||||
createComponent({
|
||||
initialFilterParams: { authorUsername: 'root', labelName: ['label'], healthStatus: 'Any' },
|
||||
});
|
||||
|
||||
jest.spyOn(store, 'dispatch');
|
||||
});
|
||||
|
@ -169,6 +172,7 @@ describe('BoardFilteredSearch', () => {
|
|||
expect(findFilteredSearch().props('initialFilterValue')).toEqual([
|
||||
{ type: 'author', value: { data: 'root', operator: '=' } },
|
||||
{ type: 'label', value: { data: 'label', operator: '=' } },
|
||||
{ type: 'health_status', value: { data: 'Any', operator: '=' } },
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -7,7 +7,11 @@ RSpec.describe Integrations::Harbor do
|
|||
let(:project_name) { 'testproject' }
|
||||
let(:username) { 'harborusername' }
|
||||
let(:password) { 'harborpassword' }
|
||||
let(:harbor_integration) { create(:harbor_integration) }
|
||||
let(:harbor_integration) { build(:harbor_integration) }
|
||||
|
||||
it_behaves_like Integrations::ResetSecretFields do
|
||||
let(:integration) { described_class.new }
|
||||
end
|
||||
|
||||
describe "masked password" do
|
||||
subject { build(:harbor_integration) }
|
||||
|
@ -66,6 +70,8 @@ RSpec.describe Integrations::Harbor do
|
|||
end
|
||||
|
||||
context 'ci variables' do
|
||||
let(:harbor_integration) { create(:harbor_integration) }
|
||||
|
||||
it 'returns vars when harbor_integration is activated' do
|
||||
ci_vars = [
|
||||
{ key: 'HARBOR_URL', value: url },
|
||||
|
@ -94,66 +100,4 @@ RSpec.describe Integrations::Harbor do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'before_validation :reset_username_and_password' do
|
||||
context 'when username/password was previously set' do
|
||||
it 'resets username and password if url changed' do
|
||||
harbor_integration.url = 'https://anotherharbor.com'
|
||||
harbor_integration.valid?
|
||||
|
||||
expect(harbor_integration.password).to be_nil
|
||||
expect(harbor_integration.username).to be_nil
|
||||
end
|
||||
|
||||
it 'does not reset password if username changed' do
|
||||
harbor_integration.username = 'newusername'
|
||||
harbor_integration.valid?
|
||||
|
||||
expect(harbor_integration.password).to eq('harborpassword')
|
||||
end
|
||||
|
||||
it 'does not reset username if password changed' do
|
||||
harbor_integration.password = 'newpassword'
|
||||
harbor_integration.valid?
|
||||
|
||||
expect(harbor_integration.username).to eq('harborusername')
|
||||
end
|
||||
|
||||
it "does not reset password if new url is set together with password, even if it's the same password" do
|
||||
harbor_integration.url = 'https://anotherharbor.com'
|
||||
harbor_integration.password = 'harborpassword'
|
||||
harbor_integration.valid?
|
||||
|
||||
expect(harbor_integration.password).to eq('harborpassword')
|
||||
expect(harbor_integration.username).to be_nil
|
||||
expect(harbor_integration.url).to eq('https://anotherharbor.com')
|
||||
end
|
||||
|
||||
it "does not reset username if new url is set together with username, even if it's the same username" do
|
||||
harbor_integration.url = 'https://anotherharbor.com'
|
||||
harbor_integration.username = 'harborusername'
|
||||
harbor_integration.valid?
|
||||
|
||||
expect(harbor_integration.password).to be_nil
|
||||
expect(harbor_integration.username).to eq('harborusername')
|
||||
expect(harbor_integration.url).to eq('https://anotherharbor.com')
|
||||
end
|
||||
end
|
||||
|
||||
it 'saves password if new url is set together with password when no password was previously set' do
|
||||
harbor_integration.password = nil
|
||||
harbor_integration.username = nil
|
||||
|
||||
harbor_integration.url = 'https://anotherharbor.com'
|
||||
harbor_integration.password = 'newpassword'
|
||||
harbor_integration.username = 'newusername'
|
||||
harbor_integration.save!
|
||||
|
||||
expect(harbor_integration).to have_attributes(
|
||||
url: 'https://anotherharbor.com',
|
||||
password: 'newpassword',
|
||||
username: 'newusername'
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -16,8 +16,10 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
|
|||
|
||||
let(:glfm_intro_md_path) { described_class::GLFM_INTRO_MD_PATH }
|
||||
let(:glfm_intro_md_io) { StringIO.new(glfm_intro_md_contents) }
|
||||
let(:glfm_examples_txt_path) { described_class::GLFM_EXAMPLES_TXT_PATH }
|
||||
let(:glfm_examples_txt_io) { StringIO.new(glfm_examples_txt_contents) }
|
||||
let(:glfm_official_specification_examples_md_path) { described_class::GLFM_OFFICIAL_SPECIFICATION_EXAMPLES_MD_PATH }
|
||||
let(:glfm_official_specification_examples_md_io) { StringIO.new(glfm_official_specification_examples_md_contents) }
|
||||
let(:glfm_internal_extension_examples_md_path) { described_class::GLFM_INTERNAL_EXTENSION_EXAMPLES_MD_PATH }
|
||||
let(:glfm_internal_extension_examples_md_io) { StringIO.new(glfm_internal_extension_examples_md_contents) }
|
||||
let(:glfm_spec_txt_path) { described_class::GLFM_SPEC_TXT_PATH }
|
||||
let(:glfm_spec_txt_io) { StringIO.new }
|
||||
|
||||
|
@ -67,9 +69,17 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
|
|||
MARKDOWN
|
||||
end
|
||||
|
||||
let(:glfm_examples_txt_contents) do
|
||||
let(:glfm_official_specification_examples_md_contents) do
|
||||
<<~MARKDOWN
|
||||
# GitLab-Specific Section with Examples
|
||||
# Official Specification Section with Examples
|
||||
|
||||
Some examples.
|
||||
MARKDOWN
|
||||
end
|
||||
|
||||
let(:glfm_internal_extension_examples_md_contents) do
|
||||
<<~MARKDOWN
|
||||
# Internal Extension Section with Examples
|
||||
|
||||
Some examples.
|
||||
MARKDOWN
|
||||
|
@ -88,7 +98,12 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
|
|||
end
|
||||
allow(File).to receive(:open).with(ghfm_spec_md_path) { ghfm_spec_txt_local_io }
|
||||
allow(File).to receive(:open).with(glfm_intro_md_path) { glfm_intro_md_io }
|
||||
allow(File).to receive(:open).with(glfm_examples_txt_path) { glfm_examples_txt_io }
|
||||
allow(File).to receive(:open).with(glfm_official_specification_examples_md_path) do
|
||||
glfm_official_specification_examples_md_io
|
||||
end
|
||||
allow(File).to receive(:open).with(glfm_internal_extension_examples_md_path) do
|
||||
glfm_internal_extension_examples_md_io
|
||||
end
|
||||
allow(File).to receive(:open).with(glfm_spec_txt_path, 'w') { glfm_spec_txt_io }
|
||||
|
||||
# Prevent console output when running tests
|
||||
|
@ -179,11 +194,15 @@ RSpec.describe Glfm::UpdateSpecification, '#process' do
|
|||
expect(glfm_contents).to match(/#{Regexp.escape(glfm_intro_md_contents)}/m)
|
||||
end
|
||||
|
||||
it 'inserts the GitLab examples sections before the appendix section' do
|
||||
it 'inserts the GitLab official spec and internal extension examples sections before the appendix section' do
|
||||
expected = <<~MARKDOWN
|
||||
End of last GitHub examples section.
|
||||
|
||||
# GitLab-Specific Section with Examples
|
||||
# Official Specification Section with Examples
|
||||
|
||||
Some examples.
|
||||
|
||||
# Internal Extension Section with Examples
|
||||
|
||||
Some examples.
|
||||
|
||||
|
|
Loading…
Reference in New Issue