diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d00aaa39d..1a9aaaa2ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## Current ### Features +- [#1726](https://github.com/poanetwork/blockscout/pull/2071) - Updated styles for the new smart contract page. - [#2081](https://github.com/poanetwork/blockscout/pull/2081) - Tooltip for 'more' button, explorers logos added - [#1963](https://github.com/poanetwork/blockscout/pull/1963), [#1959](https://github.com/poanetwork/blockscout/pull/1959), [#1948](https://github.com/poanetwork/blockscout/pull/1948), [#1936](https://github.com/poanetwork/blockscout/pull/1936), [#1925](https://github.com/poanetwork/blockscout/pull/1925), [#1922](https://github.com/poanetwork/blockscout/pull/1922), [#1903](https://github.com/poanetwork/blockscout/pull/1903), [#1874](https://github.com/poanetwork/blockscout/pull/1874), [#1895](https://github.com/poanetwork/blockscout/pull/1895), [#2031](https://github.com/poanetwork/blockscout/pull/2031), [#2073](https://github.com/poanetwork/blockscout/pull/2073), [#2074](https://github.com/poanetwork/blockscout/pull/2074), - added new themes and logos for poa, eth, rinkeby, goerli, ropsten, kovan, sokol, xdai, etc, rsk and default theme - [#2010](https://github.com/poanetwork/blockscout/pull/2010) - added "block not found" and "tx not found pages" diff --git a/apps/block_scout_web/assets/css/_mixins.scss b/apps/block_scout_web/assets/css/_mixins.scss index ce91137876..a5c3836095 100644 --- a/apps/block_scout_web/assets/css/_mixins.scss +++ b/apps/block_scout_web/assets/css/_mixins.scss @@ -88,6 +88,7 @@ padding: 0 15px; text-decoration: none; transition: all 0.15s; + white-space: nowrap; width: fit-content; &:hover { @@ -135,6 +136,7 @@ padding: 0 15px; text-decoration: none; transition: all 0.15s; + white-space: nowrap; width: fit-content; &:hover { diff --git a/apps/block_scout_web/assets/css/app.scss b/apps/block_scout_web/assets/css/app.scss index 9a71ee173f..aaa234a5b3 100644 --- a/apps/block_scout_web/assets/css/app.scss +++ b/apps/block_scout_web/assets/css/app.scss @@ -123,6 +123,12 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts"; @import "components/verify_other_explorers"; @import "components/errors"; @import "components/log-search"; + + +@import "components/new_smart_contract"; +@import "components/radio_big"; +@import "components/btn_no_border"; + :export { dashboardBannerChartAxisFontColor: $dashboard-banner-chart-axis-font-color; dashboardLineColorMarket: $dashboard-line-color-market; diff --git a/apps/block_scout_web/assets/css/components/_btn_no_border.scss b/apps/block_scout_web/assets/css/components/_btn_no_border.scss new file mode 100644 index 0000000000..1876bc845f --- /dev/null +++ b/apps/block_scout_web/assets/css/components/_btn_no_border.scss @@ -0,0 +1,12 @@ +$btn-no-border-bg: #fff !default; +$btn-no-border-color: $primary !default; + +.btn-no-border { + @include btn-line($btn-no-border-bg, $btn-no-border-color); + + border-color: $btn-no-border-bg; + + &:hover { + border-color: $btn-no-border-color; + } +} diff --git a/apps/block_scout_web/assets/css/components/_form.scss b/apps/block_scout_web/assets/css/components/_form.scss index 6eae0badb6..5346afcb7c 100644 --- a/apps/block_scout_web/assets/css/components/_form.scss +++ b/apps/block_scout_web/assets/css/components/_form.scss @@ -5,6 +5,10 @@ $form-control-border-color: #e2e5ec !default; border-radius: 0; font-size: 14px; + &.border-rounded { + border-radius: 4px; + } + &.n-b-r { border-right: none; } diff --git a/apps/block_scout_web/assets/css/components/_new_smart_contract.scss b/apps/block_scout_web/assets/css/components/_new_smart_contract.scss new file mode 100644 index 0000000000..a07d9db86e --- /dev/null +++ b/apps/block_scout_web/assets/css/components/_new_smart_contract.scss @@ -0,0 +1,204 @@ +$new-smart-contract-container-tooltips-background-color: #fbfafc !default; +$new-smart-contract-tooltips-width: 300px; +$smart-contract-form-group-tooltip-color: #adb5bd !default; +$new-smart-contract-center-column-margin-right: 30px; + +.new-smart-contract-container { + background-color: #fff; + background-image: linear-gradient( + to bottom right, + #{$new-smart-contract-container-tooltips-background-color} 100%, + #{$new-smart-contract-container-tooltips-background-color} 100% + ); + background-position: 100% 0; + background-repeat: repeat-y; + background-size: #{$new-smart-contract-tooltips-width} 1px; + box-shadow: 0 0 25px 0 rgba(0, 0, 0, 0.15); + margin-bottom: 3rem; + padding: 50px 0 50px 22px; + + @include media-breakpoint-down(md) { + background-image: none; + padding-right: 22px; + } +} + +.smart-contract-title { + color: #333; + font-size: 18px; + font-weight: normal; + line-height: 1.2; + margin: 0 0 70px 0; + padding: 0; + text-align: left; + + @include media-breakpoint-down(md) { + margin-bottom: 30px; + } + + &.margin-bottom-md { + margin-bottom: 50px; + + @include media-breakpoint-down(md) { + margin-bottom: 15px; + } + } +} + +.smart-contract-form-group { + margin-bottom: 30px; + + @include media-breakpoint-down(md) { + margin-bottom: 20px; + } +} + +.form-radios-group { + display: flex; + justify-content: flex-start; + + .radio-big { + margin-right: 20px; + + &:last-child { + margin-right: 0; + } + } +} + +.smart-contract-form-group-inner-wrapper { + display: flex; + justify-content: space-between; + + @include media-breakpoint-down(md) { + flex-direction: column; + } + + > label { + color: #333; + flex-grow: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.7; + margin: 0; + padding-right: 15px; + text-align: left; + width: 200px; + + @include media-breakpoint-down(md) { + margin-bottom: 10px; + padding-right: 0; + width: auto; + } + } + + .center-column { + flex-grow: 1; + margin-right: $new-smart-contract-center-column-margin-right; + + @include media-breakpoint-down(md) { + margin: 0; + } + } + + textarea.form-control { + min-height: 98px; + } + + .form-error { + display: block; + font-size: 13px; + line-height: 1.2; + padding-top: 10px; + } + + .smart-contract-form-group-tooltip { + color: $smart-contract-form-group-tooltip-color; + flex-grow: 0; + flex-shrink: 0; + font-size: 12px; + font-weight: normal; + line-height: 1.5; + padding: 0 30px; + text-align: left; + width: #{$new-smart-contract-tooltips-width}; + + @include media-breakpoint-down(md) { + padding: 10px 0 0 0; + width: auto; + } + + &:empty { + @include media-breakpoint-down(md) { + display: none; + } + } + + a { + color: $smart-contract-form-group-tooltip-color; + text-decoration: underline; + + &:hover { + text-decoration: none; + } + } + } +} + +.tooltip-quote { + background: rgba(0, 0, 0, 0.08); + border-radius: 2px; + padding: 0 5px; +} + + +.add-contract-libraries-wrapper { + border-bottom: 1px solid $base-border-color; + margin-right: $new-smart-contract-center-column-margin-right + $new-smart-contract-tooltips-width; + padding-bottom: 30px; + + @include media-breakpoint-down(md) { + margin-right: 0; + } +} + +.smart-contract-form-buttons { + align-items: center; + border-top: 1px solid $base-border-color; + display: flex; + margin-right: $new-smart-contract-center-column-margin-right + $new-smart-contract-tooltips-width; + margin-top: -1px; + padding-top: 30px; + position: relative; + + @include media-breakpoint-down(md) { + margin-right: 0; + } + + [class*="btn-"] { + position: relative; + z-index: 1; + } + + .position-absolute { + &, + &:hover { + opacity: 1; + z-index: 12; + } + } +} + +.smart-contract-libraries-wrapper { + display: none; + padding-bottom: 30px; + padding-top: 30px; +} + +.contract-library-form-group { + display: none; + + &.active { + display: block; + } +} \ No newline at end of file diff --git a/apps/block_scout_web/assets/css/components/_radio_big.scss b/apps/block_scout_web/assets/css/components/_radio_big.scss new file mode 100644 index 0000000000..8ce71e6d5e --- /dev/null +++ b/apps/block_scout_web/assets/css/components/_radio_big.scss @@ -0,0 +1,55 @@ +$radio-big-color: $primary !default; +$radio-big-dimensions: 30px !default; + +.radio-big { + align-items: center; + display: flex; + position: relative; + + input[type="radio"] { + height: 100%; + opacity: 0; + position: absolute; + width: 100%; + z-index: 5; + + &:checked + .radio-icon::before { + background-color: $radio-big-color; + border-radius: 50%; + content: ""; + height: 12px; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%); + width: 12px; + } + + &:checked + .radio-icon { + border-color: $radio-big-color; + } + } + + .radio-icon { + border: 1px solid $base-border-color; + border-radius: 50%; + flex-grow: 0; + flex-shrink: 0; + height: $radio-big-dimensions; + margin: 0 10px 0 0; + position: relative; + width: $radio-big-dimensions; + z-index: 1; + } + + .radio-text { + color: #333; + font-size: 14px; + font-weight: normal; + line-height: 1.2; + margin: 0; + position: relative; + white-space: nowrap; + z-index: 1; + } +} \ No newline at end of file diff --git a/apps/block_scout_web/assets/js/app.js b/apps/block_scout_web/assets/js/app.js index 0893b8b4ae..f486eb2111 100644 --- a/apps/block_scout_web/assets/js/app.js +++ b/apps/block_scout_web/assets/js/app.js @@ -43,6 +43,7 @@ import './lib/market_history_chart' import './lib/pending_transactions_toggle' import './lib/pretty_json' import './lib/reload_button' +import './lib/smart_contract/new_smart_contract_form' import './lib/smart_contract/read_only_functions' import './lib/smart_contract/wei_ether_converter' import './lib/stop_propagation' diff --git a/apps/block_scout_web/assets/js/lib/smart_contract/new_smart_contract_form.js b/apps/block_scout_web/assets/js/lib/smart_contract/new_smart_contract_form.js new file mode 100644 index 0000000000..43419aeb9b --- /dev/null +++ b/apps/block_scout_web/assets/js/lib/smart_contract/new_smart_contract_form.js @@ -0,0 +1,28 @@ +import $ from 'jquery' + +$(function () { + $('.js-btn-add-contract-libraries').on('click', function () { + $('.js-smart-contract-libraries-wrapper').show() + $(this).hide() + }) + + $('.js-smart-contract-form-reset').on('click', function () { + $('.js-contract-library-form-group').removeClass('active') + $('.js-contract-library-form-group').first().addClass('active') + $('.js-smart-contract-libraries-wrapper').hide() + $('.js-btn-add-contract-libraries').show() + $('.js-add-contract-library-wrapper').show() + }) + + $('.js-btn-add-contract-library').on('click', function () { + let nextContractLibrary = $('.js-contract-library-form-group.active').next('.js-contract-library-form-group') + + if (nextContractLibrary) { + nextContractLibrary.addClass('active') + } + + if ($('.js-contract-library-form-group.active').length === $('.js-contract-library-form-group').length) { + $('.js-add-contract-library-wrapper').hide() + } + }) +}) diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification/new.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification/new.html.eex index e2969905cc..212264d445 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification/new.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/address_contract_verification/new.html.eex @@ -1,141 +1,256 @@ -
-
-
- -

<%= gettext "New Smart Contract" %>

+
+
+

<%= gettext "New Smart Contract Verification" %>

<%= form_for @changeset, address_verify_contract_path(@conn, :create, @conn.params["address_id"]), [], fn f -> %> -
- <%= label f, :address_hash, gettext("Contract Address") %> - <%= text_input f, :address_hash, class: "form-control", "aria-describedby": "contract-address-help-block", readonly: true %> - <%= error_tag f, :address_hash, id: "contract-address-help-block", class: "text-danger" %> +
+
+ <%= label f, :address_hash, gettext("Contract Address") %> +
+ <%= text_input f, :address_hash, class: "form-control border-rounded", "aria-describedby": "contract-address-help-block", readonly: true %> + <%= error_tag f, :address_hash, id: "contract-address-help-block", class: "text-danger form-error" %> +
+
The 0x address supplied on contract creation.
+
-
- <%= label f, :name, gettext("Contract Name") %> - <%= text_input f, :name, class: "form-control", "aria-describedby": "contract-name-help-block", "data-test": "contract_name" %> - <%= error_tag f, :name, id: "contract-name-help-block", class: "text-danger" %> +
+
+ <%= label f, :name, gettext("Contract Name") %> +
+ <%= text_input f, :name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block", "data-test": "contract_name" %> + <%= error_tag f, :name, id: "contract-name-help-block", class: "text-danger form-error" %> +
+
Must match the name specified in the code. For example, in contract MyContract {..} MyContract is the contract name.
+
-
- <%= label f, :compiler_version, gettext("Compiler") %> - <%= select f, :compiler_version, @compiler_versions, class: "form-control", selected: "latest", "aria-describedby": "compiler-help-block" %> - <%= error_tag f, :compiler_version, id: "compiler-help-block", class: "text-danger" %> +
+
+ <%= label f, :compiler_version, gettext("Compiler") %> +
+ <%= select f, :compiler_version, @compiler_versions, class: "form-control border-rounded", selected: "latest", "aria-describedby": "compiler-help-block" %> + <%= error_tag f, :compiler_version, id: "compiler-help-block", class: "text-danger form-error" %> +
+
The compiler version is specified in pragma solidity X.X.X. Use the compiler version rather than the nightly build. If using the Solidity compiler, run solc —version to check.
+
-
- <%= label :evm_version, :evm_version, gettext("EVM Version") %> - <%= select :evm_version, :evm_version, @evm_versions, class: "form-control", selected: "petersburg", "aria-describedby": "evm-version-help-block" %> +
+
+ <%= label :evm_version, :evm_version, gettext("EVM Version") %> +
+ <%= select :evm_version, :evm_version, @evm_versions, class: "form-control border-rounded", selected: "petersburg", "aria-describedby": "evm-version-help-block" %> +
+
The EVM version the contract is written for. If the bytecode does not match the version, we try to verify using the latest EVM version. EVM version details.
+
-
- <%= label f, "Optimization" %> - -
- <%= radio_button f, :optimization, false, checked: true, class: "form-check-input", "aria-describedby": "optimization-help-block" %> - <%= label :smart_contract_optimization, :false, gettext("No"), class: "form-check-label" %> +
+
+ <%= label f, "Optimization" %> +
+
+
+ <%= radio_button f, :optimization, false, checked: true, class: "form-check-input" %> +
+ <%= label :smart_contract_optimization, :false, gettext("No"), class: "radio-text" %> +
+
+ <%= radio_button f, :optimization, true, class: "form-check-input", "aria-describedby": "optimization-help-block" %> +
+ <%= label :smart_contract_optimization, :true, gettext("Yes"), class: "radio-text" %> +
+
+ <%= error_tag f, :optimization, id: "optimization-help-block", class: "text-danger form-error" %> +
+
If you enabled optimization during compilation, select yes.
+
-
- <%= radio_button f, :optimization, true, class: "form-check-input", "aria-describedby": "optimization-help-block" %> - <%= label :smart_contract_optimization, :true, gettext("Yes"), class: "form-check-label" %> +
+
+ <%= label f, :name, gettext("Optimization runs") %> +
+ <%= text_input :optimization, :runs, value: 200, class: "form-control border-rounded", "aria-describedby": "optimization-runs-help-block", "data-test": "optimization-runs" %> +
+
- - <%= error_tag f, :optimization, id: "optimization-help-block", class: "text-danger" %>
-
- <%= label f, :name, gettext("Optimization runs") %> - <%= text_input :optimization, :runs, value: 200, class: "form-control", "aria-describedby": "optimization-runs-help-block", "data-test": "optimization-runs" %> +
+
+ <%= label f, :contract_source_code, gettext("Enter the Solidity Contract Code") %> +
+ <%= textarea f, :contract_source_code, class: "form-control border-rounded monospace", rows: 3, "aria-describedby": "contract-source-code-help-block" %> + <%= error_tag f, :contract_source_code, id: "contract-source-code-help-block", class: "text-danger form-error", "data-test": "contract-source-code-error" %> +
+
We recommend using flattened code. This is necessary if your code utilizes a library or inherits dependencies. Use the POA solidity flattener or the truffle flattener.
+
-
- <%= label f, :contract_source_code, gettext("Enter the Solidity Contract Code below") %> - <%= textarea f, :contract_source_code, class: "form-control monospace", rows: 3, "aria-describedby": "contract-source-code-help-block" %> - <%= error_tag f, :contract_source_code, id: "contract-source-code-help-block", class: "text-danger", "data-test": "contract-source-code-error" %> +
+
+ <%= label f, :contructor_arguments, gettext("ABI-encoded Constructor Arguments (if required by the contract)") %> +
+ <%= textarea f, :constructor_arguments, class: "form-control border-rounded monospace", rows: 3, "aria-describedby": "contract-constructor-arguments-help-block" %> + <%= error_tag f, :constructor_arguments, id: "contract-constructor-arguments-help-block", class: "text-danger form-error", "data-test": "contract-constructor-arguments-error" %> +
+
Add arguments in ABI hex encoded form. Constructor arguments are written right to left, and will be found at the end of the input created bytecode. They may also be parsed here.
+
-
- <%= label f, :contructor_arguments, gettext("Enter constructor arguments if the contract had any") %> - <%= textarea f, :constructor_arguments, class: "form-control monospace", rows: 3, "aria-describedby": "contract-constructor-arguments-help-block" %> - <%= error_tag f, :constructor_arguments, id: "contract-constructor-arguments-help-block", class: "text-danger", "data-test": "contract-constructor-arguments-error" %> +
+ Add Contract Libraries
-

<%= gettext "Contract Libraries" %>

+
+

<%= gettext "Contract Libraries" %>

-
- <%= label :external_libraries, :library1, gettext("1 Library Name") %> - <%= text_input :external_libraries, :library1_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> -
+
+
+
+ <%= label :external_libraries, :library1, gettext("Library Name") %> +
+ <%= text_input :external_libraries, :library1_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
A library name called in the .sol file. Multiple libraries (up to 5) may be added for each contract. Click the Add Library button to add an additional one.
+
+
-
- <%= label :external_libraries, :library1, gettext("1 Library Address") %> - <%= text_input :external_libraries, :library1_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> -
+
+
+ <%= label :external_libraries, :library1, gettext("Library Address") %> +
+ <%= text_input :external_libraries, :library1_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
The 0x library address. This can be found in the generated json file or Truffle output (if using truffle).
+
+
+
-
- <%= label :external_libraries, :library2, gettext("2 Library Name") %> - <%= text_input :external_libraries, :library2_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> -
+
+
+
+ <%= label :external_libraries, :library2, gettext("Library Name") %> +
+ <%= text_input :external_libraries, :library2_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
+
+
-
- <%= label :external_libraries, :library2, gettext("2 Library Address") %> - <%= text_input :external_libraries, :library2_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> -
+
+
+ <%= label :external_libraries, :library2, gettext("Library Address") %> +
+ <%= text_input :external_libraries, :library2_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
+
+
+
-
- <%= label :external_libraries, :library3, gettext("3 Library Name") %> - <%= text_input :external_libraries, :library3_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> -
+
+
+
+ <%= label :external_libraries, :library3, gettext("Library Name") %> +
+ <%= text_input :external_libraries, :library3_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
+
+
-
- <%= label :external_libraries, :library3, gettext("3 Library Address") %> - <%= text_input :external_libraries, :library3_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> -
+
+
+ <%= label :external_libraries, :library3, gettext("Library Address") %> +
+ <%= text_input :external_libraries, :library3_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
+
+
+
-
- <%= label :external_libraries, :library4, gettext("4 Library Name") %> - <%= text_input :external_libraries, :library4_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> -
+
+
+
+ <%= label :external_libraries, :library4, gettext("Library Name") %> +
+ <%= text_input :external_libraries, :library4_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
+
+
-
- <%= label :external_libraries, :library4, gettext("4 Library Address") %> - <%= text_input :external_libraries, :library4_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> -
+
+
+ <%= label :external_libraries, :library4, gettext("Library Address") %> +
+ <%= text_input :external_libraries, :library4_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
+
+
+
-
- <%= label :external_libraries, :library5, gettext("5 Library Name") %> - <%= text_input :external_libraries, :library5_name, class: "form-control", "aria-describedby": "contract-name-help-block" %> -
+
+
+
+ <%= label :external_libraries, :library5, gettext("Library Name") %> +
+ <%= text_input :external_libraries, :library5_name, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
+
+
+ +
+
+ <%= label f, :library5, gettext("Library Address") %> +
+ <%= text_input f, :library5_address, class: "form-control border-rounded", "aria-describedby": "contract-name-help-block" %> +
+
+
+
+
-
- <%= label f, :library5, gettext("5 Library Address") %> - <%= text_input f, :library5_address, class: "form-control", "aria-describedby": "contract-name-help-block" %> +
+ Add Library +
- - <%= submit gettext("Verify & publish"), class: "button button-primary button-sm mr-2", "data-loading": "animation" %> - <%= reset gettext("Reset"), class: "button button-secondary button-sm mr-2" %> - <%= link( - gettext("Cancel"), - to: address_contract_path(@conn, :index, @conn.params["address_id"]), - class: "button button-sm") %> +
+ + <%= submit gettext("Verify & publish"), class: "btn-full-primary mr-2", "data-loading": "animation" %> + <%= reset gettext("Reset"), class: "btn-line mr-2 js-smart-contract-form-reset" %> + <%= + link( + gettext("Cancel"), + class: "btn-no-border", + to: address_contract_path(@conn, :index, @conn.params["address_id"]) + ) + %> +
<% end %>
-
+
diff --git a/apps/block_scout_web/priv/gettext/default.pot b/apps/block_scout_web/priv/gettext/default.pot index 2caf439866..32f3a95847 100644 --- a/apps/block_scout_web/priv/gettext/default.pot +++ b/apps/block_scout_web/priv/gettext/default.pot @@ -195,7 +195,7 @@ msgid "Blocks Validated" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:135 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:247 #: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:47 msgid "Cancel" msgstr "" @@ -223,7 +223,7 @@ msgid "Code" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:25 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:34 msgid "Compiler" msgstr "" @@ -261,7 +261,7 @@ msgid "Contract ABI" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:13 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:12 #: lib/block_scout_web/views/address_view.ex:97 msgid "Contract Address" msgstr "" @@ -284,7 +284,7 @@ msgid "Contract Creation" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:19 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:23 msgid "Contract Name" msgstr "" @@ -356,11 +356,6 @@ msgstr "" msgid "ETH" msgstr "" -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:57 -msgid "Enter the Solidity Contract Code below" -msgstr "" - #, elixir-format #: lib/block_scout_web/templates/address/_balance_card.html.eex:32 msgid "Error trying to fetch balances." @@ -563,12 +558,7 @@ msgid "Name" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:5 -msgid "New Smart Contract" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:40 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:61 msgid "No" msgstr "" @@ -659,7 +649,7 @@ msgid "Request URL" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:133 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:244 msgid "Reset" msgstr "" @@ -949,7 +939,7 @@ msgid "Verify & Publish" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:132 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:243 msgid "Verify & publish" msgstr "" @@ -999,7 +989,7 @@ msgid "Wei" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:45 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:66 msgid "Yes" msgstr "" @@ -1072,7 +1062,7 @@ msgid "Loading..." msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:130 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:241 msgid "Loading...." msgstr "" @@ -1435,57 +1425,7 @@ msgid "Genesis Block" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:76 -msgid "1 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:71 -msgid "1 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:86 -msgid "2 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:81 -msgid "2 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:96 -msgid "3 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:91 -msgid "3 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:106 -msgid "4 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:101 -msgid "4 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:116 -msgid "5 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:111 -msgid "5 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:68 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:112 msgid "Contract Libraries" msgstr "" @@ -1547,15 +1487,10 @@ msgid "Search by address, token symbol name, transaction hash, or block number" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:31 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:45 msgid "EVM Version" msgstr "" -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:63 -msgid "Enter constructor arguments if the contract had any" -msgstr "" - #, elixir-format #: lib/block_scout_web/templates/address_decompiled_contract/index.html.eex:16 msgid "Copy Decompiled Contract Code" @@ -1582,7 +1517,7 @@ msgid "Decompiler version" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:52 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:77 msgid "Optimization runs" msgstr "" @@ -1726,3 +1661,36 @@ msgstr "" #: lib/block_scout_web/templates/address_logs/index.html.eex:12 msgid "Topic" msgstr "" + +#, elixir-format +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:98 +msgid "ABI-encoded Constructor Arguments (if required by the contract)" +msgstr "" + +#, elixir-format +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:87 +msgid "Enter the Solidity Contract Code" +msgstr "" + +#, elixir-format +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:127 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:149 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:171 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:193 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:215 +msgid "Library Address" +msgstr "" + +#, elixir-format +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:117 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:139 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:161 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:183 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:205 +msgid "Library Name" +msgstr "" + +#, elixir-format +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:3 +msgid "New Smart Contract Verification" +msgstr "" diff --git a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po index 6bbaa0f4b7..4b1f45f10c 100644 --- a/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po +++ b/apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po @@ -195,7 +195,7 @@ msgid "Blocks Validated" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:135 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:247 #: lib/block_scout_web/templates/api_docs/_action_tile.html.eex:47 msgid "Cancel" msgstr "" @@ -223,7 +223,7 @@ msgid "Code" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:25 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:34 msgid "Compiler" msgstr "" @@ -261,7 +261,7 @@ msgid "Contract ABI" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:13 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:12 #: lib/block_scout_web/views/address_view.ex:97 msgid "Contract Address" msgstr "" @@ -284,7 +284,7 @@ msgid "Contract Creation" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:19 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:23 msgid "Contract Name" msgstr "" @@ -356,11 +356,6 @@ msgstr "" msgid "ETH" msgstr "" -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:57 -msgid "Enter the Solidity Contract Code below" -msgstr "" - #, elixir-format #: lib/block_scout_web/templates/address/_balance_card.html.eex:32 msgid "Error trying to fetch balances." @@ -563,12 +558,7 @@ msgid "Name" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:5 -msgid "New Smart Contract" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:40 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:61 msgid "No" msgstr "" @@ -659,7 +649,7 @@ msgid "Request URL" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:133 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:244 msgid "Reset" msgstr "" @@ -949,7 +939,7 @@ msgid "Verify & Publish" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:132 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:243 msgid "Verify & publish" msgstr "" @@ -999,7 +989,7 @@ msgid "Wei" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:45 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:66 msgid "Yes" msgstr "" @@ -1072,7 +1062,7 @@ msgid "Loading..." msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:130 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:241 msgid "Loading...." msgstr "" @@ -1435,57 +1425,7 @@ msgid "Genesis Block" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:76 -msgid "1 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:71 -msgid "1 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:86 -msgid "2 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:81 -msgid "2 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:96 -msgid "3 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:91 -msgid "3 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:106 -msgid "4 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:101 -msgid "4 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:116 -msgid "5 Library Address" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:111 -msgid "5 Library Name" -msgstr "" - -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:68 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:112 msgid "Contract Libraries" msgstr "" @@ -1547,15 +1487,10 @@ msgid "Search by address, token symbol name, transaction hash, or block number" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:31 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:45 msgid "EVM Version" msgstr "" -#, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:63 -msgid "Enter constructor arguments if the contract had any" -msgstr "" - #, elixir-format #: lib/block_scout_web/templates/address_decompiled_contract/index.html.eex:16 msgid "Copy Decompiled Contract Code" @@ -1582,7 +1517,7 @@ msgid "Decompiler version" msgstr "" #, elixir-format -#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:52 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:77 msgid "Optimization runs" msgstr "" @@ -1726,3 +1661,36 @@ msgstr "" #: lib/block_scout_web/templates/address_logs/index.html.eex:12 msgid "Topic" msgstr "" + +#, elixir-format +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:98 +msgid "ABI-encoded Constructor Arguments (if required by the contract)" +msgstr "" + +#, elixir-format, fuzzy +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:87 +msgid "Enter the Solidity Contract Code" +msgstr "" + +#, elixir-format, fuzzy +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:127 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:149 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:171 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:193 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:215 +msgid "Library Address" +msgstr "" + +#, elixir-format, fuzzy +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:117 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:139 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:161 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:183 +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:205 +msgid "Library Name" +msgstr "" + +#, elixir-format, fuzzy +#: lib/block_scout_web/templates/address_contract_verification/new.html.eex:3 +msgid "New Smart Contract Verification" +msgstr "" diff --git a/apps/block_scout_web/test/block_scout_web/features/pages/contract_verify_page.ex b/apps/block_scout_web/test/block_scout_web/features/pages/contract_verify_page.ex index 1b99acc47f..56c2621920 100644 --- a/apps/block_scout_web/test/block_scout_web/features/pages/contract_verify_page.ex +++ b/apps/block_scout_web/test/block_scout_web/features/pages/contract_verify_page.ex @@ -18,7 +18,7 @@ defmodule BlockScoutWeb.ContractVerifyPage do }) do session |> fill_in(css("[data-test='contract_name']"), with: contract_name) - |> fill_in(text_field("Enter the Solidity Contract Code below"), with: source_code) + |> fill_in(text_field("Enter the Solidity Contract Code"), with: source_code) case version do nil -> nil