diff --git a/app/app/urls.py b/app/app/urls.py
index a8a7384b0b1..8afe60ea7b6 100644
--- a/app/app/urls.py
+++ b/app/app/urls.py
@@ -71,6 +71,7 @@
url(r'^explorer/?', dashboard.views.dashboard, name='explorer'),
# action URLs
+ re_path(r'^bounty/quickstart/?', dashboard.views.quickstart, name='quickstart'),
url(r'^bounty/new/?', dashboard.views.new_bounty, name='new_bounty'),
url(r'^funding/new/?', dashboard.views.new_bounty, name='new_funding'),
url(r'^new/?', dashboard.views.new_bounty, name='new_funding_short'),
@@ -153,6 +154,9 @@
url(r'^sync/get_issue_details?', dashboard.helpers.issue_details, name='helpers_issue_details'),
url(r'^sync/search_save?', dashboard.views.save_search, name='save_search'),
+ # modals
+ re_path(r'^modal/get_quickstart_video?', dashboard.views.get_quickstart_video, name='get_quickstart_video'),
+
# brochureware views
url(r'^about/?', retail.views.about, name='about'),
url(r'^mission/?', retail.views.mission, name='mission'),
diff --git a/app/assets/v2/css/base.css b/app/assets/v2/css/base.css
index 10a9c8f29ca..1a530aac526 100644
--- a/app/assets/v2/css/base.css
+++ b/app/assets/v2/css/base.css
@@ -524,21 +524,6 @@ input[type=text].loading {
background-size: 30px;
}
-.blocking_error {
- padding: 0 4em;
- text-align: center;
- margin: 100px auto;
- max-width: 100%;
-}
-
-.blocking_error img {
- max-width: 150px;
- filter: grayscale(80%);
- -moz-filter: grayscale(80%);
- -ms-filter: grayscale(80%);
- -o-filter: grayscale(80%);
-}
-
#no_metamask_error img {
filter: grayscale(100%);
-moz-filter: grayscale(100%);
@@ -552,6 +537,10 @@ input[type=text].loading {
padding: 0 2em;
}
+.submit_bounty #primary_form {
+ max-width: none;
+}
+
.submit_bounty .select2-search,
.fulfill_bounty .select2-search,
.submit_bounty .select2-results__option,
@@ -1168,6 +1157,26 @@ input.is-invalid {
background: #FAFAFA !important;
}
+.submit-notification {
+ color: #fff;
+ font-family: 'Muli', sans-serif;
+ font-size: 10px !important;
+ min-height: 100px;
+}
+
+.submit-notification h3 {
+ font-size: 20px !important;
+ text-transform: capitalize;
+}
+
+.submit-notification a {
+ color: #FFF;
+}
+
+.metamask-error {
+ background-color: #FF6700;
+}
+
@media (max-width: 1350px) {
.profile_details .tips li div.details {
width: 300px;
diff --git a/app/assets/v2/css/current_balance.css b/app/assets/v2/css/current_balance.css
index f38e08e8583..754bdda7f92 100644
--- a/app/assets/v2/css/current_balance.css
+++ b/app/assets/v2/css/current_balance.css
@@ -6,6 +6,10 @@
color: #000000;
}
+.submit_bounty #upper_left {
+ height: 100%;
+}
+
#upper_left i {
border-radius: 100%;
height: 30px;
diff --git a/app/assets/v2/css/quickstart.css b/app/assets/v2/css/quickstart.css
new file mode 100644
index 00000000000..25b505f8e04
--- /dev/null
+++ b/app/assets/v2/css/quickstart.css
@@ -0,0 +1,147 @@
+body.quickstart {
+ background: #f6f6f6;
+}
+
+.quickstart .title {
+ color: #0d0764;
+ letter-spacing: 0;
+}
+
+.quickstart .container-fluid.content {
+ margin-bottom: 13rem;
+}
+
+.quickstart h4.title {
+ font-size: 2.75rem;
+}
+
+.quickstart .dont-show {
+ text-align: right;
+ font-style: italic;
+ color: #4a4a4a;
+ width: 100%;
+}
+
+.quickstart .dont-show .checkbox_container .filter-label {
+ display: inline;
+}
+
+.quickstart ol,
+.quickstart ul {
+ padding: 0;
+}
+
+.quickstart .modal {
+ padding: 0;
+ line-height: 0;
+}
+
+.quickstart iframe {
+ width: 100%;
+ min-height: 450px;
+}
+
+
+.steps-container {
+ background-color: #fff;
+}
+
+.steps-container .image-container {
+ margin-top: 10rem;
+}
+
+.steps-container a {
+ color: #3e00ff;
+}
+
+.steps-list {
+ padding-left: 1.5rem !important;
+}
+
+.steps-list p {
+ font-size: 1.1rem;
+ color: #4a4a4a
+}
+
+.steps-list ol li {
+ color: #3d3d46;
+ list-style-type: none;
+ line-height: 2.5rem;
+ font-size: 1.1rem;
+}
+
+.steps-list .action-footer {
+ justify-content: space-between;
+}
+
+.action-footer .video-link {
+ width: 30%;
+}
+
+.action-footer .btn {
+ border-radius: 2px;
+ background-color: #0c0763;
+ border-color: #0c0763;
+}
+
+.tips-list {
+ border-left: #d7d7d7 2px solid;
+ padding-right: 0 !important;
+}
+
+.tips-list ul li {
+ font-size: 0.95rem !important;
+ line-height: 2rem !important;
+}
+
+.issuetypes-container {
+ background-color: #efefef;
+}
+
+.issuetypes-container .subheading {
+ width: 100%;
+ color: #15003e;
+ text-transform: none;
+ letter-spacing: 0;
+}
+
+.issuetypes-container h5 {
+ font-size: 1.1rem;
+ margin-top: 1rem;
+ flex: 1;
+ letter-spacing: 0;
+}
+
+.issuetypes-container p {
+ font-size: 0.9rem;
+ line-height: 0.9rem;
+}
+
+.notsuggested-container ol {
+ padding: 1rem 9rem;
+}
+
+.notsuggested-container ol li {
+ list-style: none;
+ display: flex;
+ padding: 1rem 0;
+}
+
+.notsuggested-container ol li span {
+ padding: 0rem 1rem;
+}
+
+.notsuggested-container .orange-text {
+ color: #ff7200;
+}
+
+@media screen and (max-width: 500px) {
+ iframe {
+ min-height: 200px;
+ }
+
+ .notsuggested-container ol {
+ padding: 1rem 0;
+ }
+
+}
\ No newline at end of file
diff --git a/app/assets/v2/images/Lightbulb.svg b/app/assets/v2/images/Lightbulb.svg
new file mode 100644
index 00000000000..c42c2aae8b4
--- /dev/null
+++ b/app/assets/v2/images/Lightbulb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/metamask-color.svg b/app/assets/v2/images/metamask-color.svg
new file mode 100644
index 00000000000..963c73efa67
--- /dev/null
+++ b/app/assets/v2/images/metamask-color.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/metamask.svg b/app/assets/v2/images/metamask.svg
index 66b1dd4a98c..11c26ffb8c0 100644
--- a/app/assets/v2/images/metamask.svg
+++ b/app/assets/v2/images/metamask.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
diff --git a/app/assets/v2/images/quickstart-box.svg b/app/assets/v2/images/quickstart-box.svg
new file mode 100644
index 00000000000..bb8090e7a91
--- /dev/null
+++ b/app/assets/v2/images/quickstart-box.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/quickstart-icons/bug-icon.svg b/app/assets/v2/images/quickstart-icons/bug-icon.svg
new file mode 100644
index 00000000000..131c46dfe75
--- /dev/null
+++ b/app/assets/v2/images/quickstart-icons/bug-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/quickstart-icons/design-icon.svg b/app/assets/v2/images/quickstart-icons/design-icon.svg
new file mode 100644
index 00000000000..4557bbe7fed
--- /dev/null
+++ b/app/assets/v2/images/quickstart-icons/design-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/quickstart-icons/documentation-icon.svg b/app/assets/v2/images/quickstart-icons/documentation-icon.svg
new file mode 100644
index 00000000000..47b1b17392e
--- /dev/null
+++ b/app/assets/v2/images/quickstart-icons/documentation-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/quickstart-icons/feature-icon.svg b/app/assets/v2/images/quickstart-icons/feature-icon.svg
new file mode 100644
index 00000000000..188ab58a5fd
--- /dev/null
+++ b/app/assets/v2/images/quickstart-icons/feature-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/quickstart-icons/list-icon.svg b/app/assets/v2/images/quickstart-icons/list-icon.svg
new file mode 100644
index 00000000000..f10014651f8
--- /dev/null
+++ b/app/assets/v2/images/quickstart-icons/list-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/quickstart-icons/newproduct-icon.svg b/app/assets/v2/images/quickstart-icons/newproduct-icon.svg
new file mode 100644
index 00000000000..070abccecc8
--- /dev/null
+++ b/app/assets/v2/images/quickstart-icons/newproduct-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/quickstart-icons/other-icon.svg b/app/assets/v2/images/quickstart-icons/other-icon.svg
new file mode 100644
index 00000000000..ca1e5fff7cb
--- /dev/null
+++ b/app/assets/v2/images/quickstart-icons/other-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/quickstart-icons/review-icon.svg b/app/assets/v2/images/quickstart-icons/review-icon.svg
new file mode 100644
index 00000000000..cd2065e0804
--- /dev/null
+++ b/app/assets/v2/images/quickstart-icons/review-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/images/quickstart-icons/upgrade-icon.svg b/app/assets/v2/images/quickstart-icons/upgrade-icon.svg
new file mode 100644
index 00000000000..c33cb239e68
--- /dev/null
+++ b/app/assets/v2/images/quickstart-icons/upgrade-icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/app/assets/v2/js/pages/new_bounty.js b/app/assets/v2/js/pages/new_bounty.js
index 4f5cdccc224..e4e76fffae2 100644
--- a/app/assets/v2/js/pages/new_bounty.js
+++ b/app/assets/v2/js/pages/new_bounty.js
@@ -2,6 +2,36 @@
/* eslint-disable nonblock-statement-body-position */
load_tokens();
+/* Check if quickstart page is to be shown */
+var localStorage;
+var quickstartURL = document.location.origin + '/bounty/quickstart';
+
+try {
+ localStorage = window.localStorage;
+} catch (e) {
+ localStorage = {};
+}
+
+if (localStorage['quickstart_dontshow'] !== 'true' &&
+ doShowQuickstart(document.referrer) &&
+ doShowQuickstart(document.URL)) {
+ window.location = quickstartURL;
+}
+
+function doShowQuickstart(url) {
+ var fundingURL = document.location.origin + '/funding/new\\?';
+ var bountyURL = document.location.origin + '/bounty/new\\?';
+ var blacklist = [ fundingURL, bountyURL, quickstartURL ];
+
+ for (var i = 0; i < blacklist.length; i++) {
+ if (url.match(blacklist[i])) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
// Wait until page is loaded, then run the function
$(document).ready(function() {
// Load sidebar radio buttons from localStorage
diff --git a/app/assets/v2/js/pages/quickstart.js b/app/assets/v2/js/pages/quickstart.js
new file mode 100644
index 00000000000..6a22607eace
--- /dev/null
+++ b/app/assets/v2/js/pages/quickstart.js
@@ -0,0 +1,29 @@
+var localStorage;
+
+try {
+ localStorage = window.localStorage;
+} catch (e) {
+ localStorage = {};
+}
+
+$(document).ready(function() {
+ $(document).on('click', '.show_video', function(e) {
+ e.preventDefault();
+ $('#video').remove();
+ var url = '/modal/get_quickstart_video';
+
+ setTimeout(function() {
+ $.get(url, function(newHTML) {
+ $(newHTML).appendTo('body').modal();
+ });
+ }, 300);
+ });
+
+ $(document).on('change', '#dontshow', function(e) {
+ if ($(this)[0].checked) {
+ localStorage['quickstart_dontshow'] = true;
+ } else {
+ localStorage['quickstart_dontshow'] = false;
+ }
+ });
+});
diff --git a/app/assets/v2/js/shared.js b/app/assets/v2/js/shared.js
index 4acd611f493..bda55a4c04f 100644
--- a/app/assets/v2/js/shared.js
+++ b/app/assets/v2/js/shared.js
@@ -570,19 +570,23 @@ var trigger_primary_form_web3_hooks = function() {
if (typeof web3 == 'undefined') {
$('#no_metamask_error').css('display', 'block');
$('#primary_form').addClass('hidden');
+ $('#no_issue_error').css('display', 'none');
mixpanel_track_once('No Metamask Error', params);
} else if (!web3.eth.coinbase) {
$('#unlock_metamask_error').css('display', 'block');
$('#primary_form').addClass('hidden');
+ $('#no_issue_error').css('display', 'none');
mixpanel_track_once('Unlock Metamask Error', params);
} else if (is_zero_balance_not_okay && document.balance == 0) {
$('#zero_balance_error').css('display', 'block');
$('#primary_form').addClass('hidden');
+ $('#no_issue_error').css('display', 'none');
mixpanel_track_once('Zero Balance Metamask Error', params);
} else {
$('#zero_balance_error').css('display', 'none');
$('#unlock_metamask_error').css('display', 'none');
$('#no_metamask_error').css('display', 'none');
+ $('#no_issue_error').css('display', 'block');
$('#primary_form').removeClass('hidden');
}
}
diff --git a/app/dashboard/templates/quickstart.html b/app/dashboard/templates/quickstart.html
new file mode 100644
index 00000000000..df277832570
--- /dev/null
+++ b/app/dashboard/templates/quickstart.html
@@ -0,0 +1,164 @@
+{% comment %}
+ Copyright (C) 2018 Gitcoin Core
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see
+ {% trans "Once confirmed on blockchain, your bounty is posted to Gitcoin! Wait for developers across the world to discover your bounty and start working on your issue." %} +
+ +{% trans "Have fun! Meet new people!" %}
+ {% trans "See Developer Guide" %} +{% trans "Build new product ideas or new features" %}
+{% trans "Iterate on the next set of features" %}
+{% trans "Find and fix bugs in your product" %}
+{% trans "Get help reviewing code" %}
+{% trans "Frameworks, migrations, batches" %}
+{% trans "Product documentation, set up instructions" %}
+{% trans "Architecture, flows, wireframes, designs" %}
+{% trans "Ideas, discussions, contests, consulting" %}
++