diff --git a/frontend/package.json b/frontend/package.json index 0d505ce731..97ffe75246 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,6 +30,7 @@ "react-i18next": "^10.12.2", "react-mentions": "^3.0.2", "react-moment": "^0.7.9", + "react-qr-code": "^1.0.5", "react-responsive": "^6.1.2", "react-select": "^2.4.1", "reactstrap": "^6.4.0", diff --git a/frontend/src/components/btn-qr-code.js b/frontend/src/components/btn-qr-code.js new file mode 100644 index 0000000000..71c93937ea --- /dev/null +++ b/frontend/src/components/btn-qr-code.js @@ -0,0 +1,47 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import QRCode from 'react-qr-code'; +import { Button, Popover, PopoverBody } from 'reactstrap'; +import { gettext } from '../utils/constants'; + +import '../css/btn-qr-code.css'; + +const propTypes = { + link: PropTypes.string.isRequired +}; + +class ButtonQR extends React.Component { + constructor(props) { + super(props); + this.state = { + isPopoverOpen: false + }; + + this.btnID = 'btn-' + Math.random().toString().substr(2,5); + } + + togglePopover = () => { + this.setState({ + isPopoverOpen: !this.state.isPopoverOpen + }); + } + + render() { + const { link } = this.props; + const { isPopoverOpen } = this.state; + return ( +
+ + + + +

{gettext('Scan the QR code to view the shared content directly')}

+
+
+
+ ); + } +} + +ButtonQR.propTypes = propTypes; +export default ButtonQR; diff --git a/frontend/src/components/dialog/generate-share-link.js b/frontend/src/components/dialog/generate-share-link.js index 15df216fd2..0cde7f8f29 100644 --- a/frontend/src/components/dialog/generate-share-link.js +++ b/frontend/src/components/dialog/generate-share-link.js @@ -12,6 +12,7 @@ import toaster from '../toast'; import Loading from '../loading'; import SendLink from '../send-link'; import DateTimePicker from '../date-and-time-picker'; +import SharedLink from '../shared-link'; const propTypes = { itemPath: PropTypes.string.isRequired, @@ -370,23 +371,23 @@ class GenerateShareLink extends React.Component {
{gettext('Link:')}
-
- {sharedLinkInfo.link}{' '} - {sharedLinkInfo.is_expired ? - ({gettext('Expired')}) : - - } +
+
{!sharedLinkInfo.is_dir && sharedLinkInfo.permissions.can_download &&( //just for file
{gettext('Direct Download Link:')}
-
- {sharedLinkInfo.link}?dl=1{' '} - {sharedLinkInfo.is_expired ? - ({gettext('Expired')}) : - - } +
+
)} diff --git a/frontend/src/components/dialog/generate-upload-link.js b/frontend/src/components/dialog/generate-upload-link.js index 0a91826aa0..50da663a97 100644 --- a/frontend/src/components/dialog/generate-upload-link.js +++ b/frontend/src/components/dialog/generate-upload-link.js @@ -10,6 +10,7 @@ import UploadLink from '../../models/upload-link'; import toaster from '../toast'; import SendLink from '../send-link'; import DateTimePicker from '../date-and-time-picker'; +import SharedLink from '../shared-link'; const propTypes = { itemPath: PropTypes.string.isRequired, @@ -264,9 +265,12 @@ class GenerateUploadLink extends React.Component {
{gettext('Upload Link:')}
-
- {sharedUploadInfo.link} - +
+
{sharedUploadInfo.expire_date && ( diff --git a/frontend/src/components/shared-link.js b/frontend/src/components/shared-link.js new file mode 100644 index 0000000000..2fb185eea6 --- /dev/null +++ b/frontend/src/components/shared-link.js @@ -0,0 +1,36 @@ +import React, { Fragment } from 'react'; +import PropTypes from 'prop-types'; +import { Button, Input, InputGroup, InputGroupAddon } from 'reactstrap'; +import { gettext } from '../utils/constants'; +import ButtonQR from './btn-qr-code'; + +const propTypes = { + link: PropTypes.string.isRequired, + linkExpired: PropTypes.bool.isRequired, + copyLink: PropTypes.func.isRequired +}; + +// for 'share link' & 'upload link' +class SharedLink extends React.Component { + + render() { + const { link, linkExpired, copyLink } = this.props; + return ( + +
+ + + + + + + +
+ {linkExpired &&

({gettext('Expired')})

} +
+ ); + } +} + +SharedLink.propTypes = propTypes; +export default SharedLink; diff --git a/frontend/src/css/btn-qr-code.css b/frontend/src/css/btn-qr-code.css new file mode 100644 index 0000000000..4b58a8b890 --- /dev/null +++ b/frontend/src/css/btn-qr-code.css @@ -0,0 +1,6 @@ +.btn-qr-code-icon { + font-size: 1.5rem; + line-height: 1; + font-weight: normal; + padding: 0.375rem; +} diff --git a/media/css/sf_font3/iconfont.css b/media/css/sf_font3/iconfont.css index d2f432917f..80a84e9122 100644 --- a/media/css/sf_font3/iconfont.css +++ b/media/css/sf_font3/iconfont.css @@ -1,10 +1,10 @@ @font-face {font-family: "sf3-font"; - src: url('iconfont.eot?t=1608001670426'); /* IE9 */ - src: url('iconfont.eot?t=1608001670426#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), - url('iconfont.woff?t=1608001670426') format('woff'), - url('iconfont.ttf?t=1608001670426') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ - url('iconfont.svg?t=1608001670426#sf3-font') format('svg'); /* iOS 4.1- */ + src: url('iconfont.eot?t=1611200069054'); /* IE9 */ + src: url('iconfont.eot?t=1611200069054#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), + url('iconfont.woff?t=1611200069054') format('woff'), + url('iconfont.ttf?t=1611200069054') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ + url('iconfont.svg?t=1611200069054#sf3-font') format('svg'); /* iOS 4.1- */ } .sf3-font { @@ -15,6 +15,10 @@ -moz-osx-font-smoothing: grayscale; } +.sf3-font-qr-code:before { + content: "\e716"; +} + .sf3-font-share-from-other-servers:before { content: "\e70f"; } diff --git a/media/css/sf_font3/iconfont.eot b/media/css/sf_font3/iconfont.eot index 68fead9060..2aa77daaa6 100644 Binary files a/media/css/sf_font3/iconfont.eot and b/media/css/sf_font3/iconfont.eot differ diff --git a/media/css/sf_font3/iconfont.js b/media/css/sf_font3/iconfont.js index b598b1d934..da135190b6 100644 --- a/media/css/sf_font3/iconfont.js +++ b/media/css/sf_font3/iconfont.js @@ -1 +1 @@ -!function(c){var t,l,e,o,h,s,i='',v=(v=document.getElementsByTagName("script"))[v.length-1].getAttribute("data-injectcss");if(v&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function n(){h||(h=!0,e())}t=function(){var c,t,l,e;(e=document.createElement("div")).innerHTML=i,i=null,(l=e.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",c=l,(t=document.body).firstChild?(e=c,(l=t.firstChild).parentNode.insertBefore(e,l)):t.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),t()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(e=t,o=c.document,h=!1,(s=function(){try{o.documentElement.doScroll("left")}catch(c){return void setTimeout(s,50)}n()})(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,n())})}(window); \ No newline at end of file +!function(c){var t,h,l,e,o,v,s='',i=(i=document.getElementsByTagName("script"))[i.length-1].getAttribute("data-injectcss");if(i&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function m(){o||(o=!0,l())}t=function(){var c,t,h,l;(l=document.createElement("div")).innerHTML=s,s=null,(h=l.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",c=h,(t=document.body).firstChild?(l=c,(h=t.firstChild).parentNode.insertBefore(l,h)):t.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(l=t,e=c.document,o=!1,(v=function(){try{e.documentElement.doScroll("left")}catch(c){return void setTimeout(v,50)}m()})(),e.onreadystatechange=function(){"complete"==e.readyState&&(e.onreadystatechange=null,m())})}(window); \ No newline at end of file diff --git a/media/css/sf_font3/iconfont.svg b/media/css/sf_font3/iconfont.svg index 64cf84ae25..4392ca95e9 100644 --- a/media/css/sf_font3/iconfont.svg +++ b/media/css/sf_font3/iconfont.svg @@ -20,7 +20,10 @@ Created by iconfont /> - + + + + diff --git a/media/css/sf_font3/iconfont.ttf b/media/css/sf_font3/iconfont.ttf index 9eda7b5c5b..817a43775d 100644 Binary files a/media/css/sf_font3/iconfont.ttf and b/media/css/sf_font3/iconfont.ttf differ diff --git a/media/css/sf_font3/iconfont.woff b/media/css/sf_font3/iconfont.woff index a427aa242c..88a672f6a7 100644 Binary files a/media/css/sf_font3/iconfont.woff and b/media/css/sf_font3/iconfont.woff differ diff --git a/media/css/sf_font3/iconfont.woff2 b/media/css/sf_font3/iconfont.woff2 index 463d1856bc..09463ba459 100644 Binary files a/media/css/sf_font3/iconfont.woff2 and b/media/css/sf_font3/iconfont.woff2 differ