+
+
+
+ {{ __('Join Zoom meeting') }}
+
+
+
diff --git a/app/assets/stylesheets/framework/common.scss b/app/assets/stylesheets/framework/common.scss
index db09118ba15..1bd5043ed10 100644
--- a/app/assets/stylesheets/framework/common.scss
+++ b/app/assets/stylesheets/framework/common.scss
@@ -416,6 +416,7 @@ img.emoji {
.center { text-align: center; }
.block { display: block; }
.flex { display: flex; }
+.vertical-align-top { vertical-align: top; }
.vertical-align-middle { vertical-align: middle; }
.vertical-align-sub { vertical-align: sub; }
.flex-align-self-center { align-self: center; }
diff --git a/changelogs/unreleased/62966-embed-zoom-call-in-issue-mvc.yml b/changelogs/unreleased/62966-embed-zoom-call-in-issue-mvc.yml
new file mode 100644
index 00000000000..a41873f671e
--- /dev/null
+++ b/changelogs/unreleased/62966-embed-zoom-call-in-issue-mvc.yml
@@ -0,0 +1,5 @@
+---
+title: Add Join meeting button to issues with Zoom links
+merge_request: 29454
+author:
+type: added
diff --git a/locale/gitlab.pot b/locale/gitlab.pot
index ab7a62c52c5..1abc20a1736 100644
--- a/locale/gitlab.pot
+++ b/locale/gitlab.pot
@@ -5597,6 +5597,9 @@ msgstr ""
msgid "Job|with"
msgstr ""
+msgid "Join Zoom meeting"
+msgstr ""
+
msgid "Jul"
msgstr ""
diff --git a/package.json b/package.json
index 4f61c73698c..5571575f8e1 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,7 @@
"@babel/plugin-syntax-import-meta": "^7.2.0",
"@babel/preset-env": "^7.4.4",
"@gitlab/csslab": "^1.9.0",
- "@gitlab/svgs": "^1.63.0",
+ "@gitlab/svgs": "^1.64.0",
"@gitlab/ui": "^4.0.0",
"apollo-cache-inmemory": "^1.5.1",
"apollo-client": "^2.5.1",
diff --git a/spec/features/issues/user_creates_issue_spec.rb b/spec/features/issues/user_creates_issue_spec.rb
index 0f604db870f..2789d574156 100644
--- a/spec/features/issues/user_creates_issue_spec.rb
+++ b/spec/features/issues/user_creates_issue_spec.rb
@@ -92,6 +92,19 @@ describe "User creates issue" do
.and have_content(label_titles.first)
end
end
+
+ context "with Zoom link" do
+ it "adds Zoom button" do
+ issue_title = "Issue containing Zoom meeting link"
+ zoom_url = "https://gitlab.zoom.us/j/123456789"
+
+ fill_in("Title", with: issue_title)
+ fill_in("Description", with: zoom_url)
+ click_button("Submit issue")
+
+ expect(page).to have_link('Join Zoom meeting', href: zoom_url)
+ end
+ end
end
context "when signed in as user with special characters in their name" do
diff --git a/spec/frontend/issue_show/components/pinned_links_spec.js b/spec/frontend/issue_show/components/pinned_links_spec.js
new file mode 100644
index 00000000000..50041667a61
--- /dev/null
+++ b/spec/frontend/issue_show/components/pinned_links_spec.js
@@ -0,0 +1,91 @@
+import { shallowMount, createLocalVue } from '@vue/test-utils';
+import { GlLink } from '@gitlab/ui';
+import PinnedLinks from '~/issue_show/components/pinned_links.vue';
+
+const localVue = createLocalVue();
+
+const plainZoomUrl = 'https://zoom.us/j/123456789';
+const vanityZoomUrl = 'https://gitlab.zoom.us/j/123456789';
+const startZoomUrl = 'https://zoom.us/s/123456789';
+const personalZoomUrl = 'https://zoom.us/my/hunter-zoloman';
+const randomUrl = 'https://zoom.us.com';
+
+describe('PinnedLinks', () => {
+ let wrapper;
+
+ const link = {
+ get text() {
+ return wrapper.find(GlLink).text();
+ },
+ get href() {
+ return wrapper.find(GlLink).attributes('href');
+ },
+ };
+
+ const createComponent = props => {
+ wrapper = shallowMount(localVue.extend(PinnedLinks), {
+ localVue,
+ sync: false,
+ propsData: {
+ descriptionHtml: '',
+ ...props,
+ },
+ });
+ };
+
+ it('displays Zoom link', () => {
+ createComponent({
+ descriptionHtml: `