= form_for @changeset, Routes.image_path(@conn, :create), [multipart: true], fn f -> .dnp-warning h4 ' Read the a> href="/pages/rules" site rules ' and check our a> href="/dnp" do-not-post list p ' Don't post content the artist doesn't want here (or shared in general), strong including commercial content. p strong ' Please check it isn't already here with a href="/search/reverse" reverse search. / todo: extract this h4 Select an image .image-other #js-image-upload-previews p Upload a file from your computer, or provide a link to the page containing the image and click Fetch. .field = file_input f, :image, class: "input js-scraper" = error_tag f, :image = error_tag f, :image_size = error_tag f, :image_width = error_tag f, :image_height = error_tag f, :image_name = error_tag f, :image_mime_type = error_tag f, :image_duration = error_tag f, :image_orig_sha512_hash .field.field--inline = url_input f, :scraper_url, class: "input input--wide js-scraper", placeholder: "Link a deviantART page, a Tumblr post, or the image directly" button.button.button--separate-left#js-scraper-preview(type="button" title="Fetch the image at the specified URL" data-disable-with="Fetch" disabled) ' Fetch .field-error-js.hidden.js-scraper h4 About this image p 'The page(s) you found this image on. Images may have a maximum of span.js-max-source-count> 10 ' source URLs. Leave any sources you don't want to use blank. = inputs_for f, :sources, [as: "image[old_sources]"], fn fs -> = hidden_input fs, :source = inputs_for f, :sources, fn fs -> .field.js-image-source.field--inline.flex--no-wrap.flex--centered = text_input fs, :source, class: "input flex__grow js-source-url", placeholder: "Source URL" = error_tag fs, :source label.input--separate-left.flex__fixed.flex--centered a.js-source-remove href="#" i.fa.fa-trash> ' Delete .field button.button.js-image-add-source type="button" i.fa.fa-plus> ' Add source .field label for="image[tag_input]" ' Describe with strong> 3+ ' tags, including ratings and applicable artist tags = render PhilomenaWeb.TagView, "_tag_editor.html", f: f, name: :tag_input, type: :upload = error_tag f, :tag_input button.button.button--state-success.button--separate-left.button--bold id="tagsinput-save" type="button" title="This button saves the tags listed above to your browser, allowing you to retrieve them again by clicking the Load button" Save button.button.button--state-warning.button--separate-left.button--bold id="tagsinput-load" type="button" title="This button loads any saved tags from your browser" Load button.button.button--state-danger.button--separate-left.button--bold id="tagsinput-clear" type="button" title="This button will clear the list of tags above" Clear p You can mouse over tags below to view a description, and click to add. Short tag names can be used and will expand to full. .block.js-tagtable data-target="[name="image[tag_input]"]" = PhilomenaWeb.TagView.quick_tags(@conn) br .field .block .communication-edit__wrap = render PhilomenaWeb.MarkdownView, "_input.html", conn: @conn, f: f, action_icon: "pencil-alt", action_text: "Description", placeholder: "Describe this image in plain words - this should generally be info about the image that doesn't belong in the tags or source.", name: :description, class: "js-image-descr-input", required: false = render PhilomenaWeb.MarkdownView, "_anon_checkbox.html", conn: @conn, f: f, label: "Post anonymously" = render PhilomenaWeb.CaptchaView, "_captcha.html", name: "image", conn: @conn .actions = submit "Upload", class: "button input--separate-top", autocomplete: "off", data: [disable_with: "Please wait..."]