Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
typo3
qfq
Commits
fe7f67a9
Commit
fe7f67a9
authored
Feb 11, 2018
by
Carsten Rose
Browse files
Feature 5333 / Thumbnail: implemented for links.
parent
287859d8
Changes
3
Hide whitespace changes
Inline
Side-by-side
extension/Documentation/Manual.rst
View file @
fe7f67a9
...
...
@@ -4886,6 +4886,10 @@ Column: _link
+---+---+--------------+-----------------------------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
| |x |Check |C:[
<color>
] |C:green |Show checked with '
<color>
'. Colors: blue, gray, green, pink, red, yellow. Default Color: green. |
+---+---+--------------+-----------------------------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
| |x |Thumbnail |T:
<pathFilename>
|T:fileadmin/file.pdf |Creates a thumbnail on the fly. Size is specified via 'W'. See `column-thumbnail`_ |
+---+---+--------------+-----------------------------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
| | |Dimension |W:[width]x[height] |W:50x , W:x60 , W:50x60 |Defines the pixel size of thumbnail. See `column-thumbnail`_ |
+---+---+--------------+-----------------------------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
| | |URL Params |U:
<key1>
=
<value1>
[
&
<keyN>
=
<valueN>
]|U:a=value1
&
b=value2
&
c=... |Any number of additional Params. Links to forms: U:form=Person
&
r=1234. Used to create 'record delete'-links. |
+---+---+--------------+-----------------------------------+---------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
| | |Tooltip |o:
<text>
|o:More information here |Tooltip text |
...
...
@@ -5854,14 +5858,14 @@ or if the thumbnail dimension changes.
The
thumbnail
pathFilename
is
a
MD5
hash
of
the
pathFilename
plus
the
dimension
.
From
multi
page
files
like
PDFs
,
the
first
page
is
used
as
source
.
All
file
formats
,
which
GraphicsMagick
'convert'
(
http
://
www
.
graphicsmagick
.
org
/
formats
.
html
)
supports
,
can
be
From
multi
page
files
like
PDFs
,
the
first
page
is
used
.
All
file
formats
,
which
GraphicsMagick
'convert'
(
http
://
www
.
graphicsmagick
.
org
/
formats
.
html
)
supports
,
can
be
used
.
Office
file
formats
are
not
supported
.
Due
to
speed
and
quality
reasons
,
SVG
files
will
be
converted
by
inkscape
.
If
a
file
format
is
not
known
,
QFQ
tries
to
show
a
corresponding
file
type
image
provided
by
Typo3
-
such
an
image
ist
not
scaled
.
In
`
config
.
qfq
.
ini
`
_
the
exact
location
of
`
convert
`
and
`
inkscape
`
can
be
configured
(
optional
)
as
well
as
the
directory
names
for
the
thumbnails
.
names
for
the
cached
thumbnails
.
Dimension
'''''''''
...
...
@@ -5871,8 +5875,8 @@ GraphicsMagick support various settings to force the thumbnail size. See http://
Cleaning
''''''''
By default, the thumbnail directories are never cleaned. It'
s
a
good
idea
to
install
a
cronjob
which
purges
all
files
older
than
1
year
:
::
By default, the thumbnail directories are never cleaned. It'
s
a
good
idea
to
install
a
cronjob
which
purges
all
files
older
than
1
year
:
::
find
/
path
/
to
/
files
-type
f
-mtime
+
365
-delete
...
...
@@ -5888,7 +5892,7 @@ Thumbnail: secure
Mode '
secure
' is activated via enabling SIP (`s:1`, default). The thumbnail is saved under the path `thumbnailDirSecure`
as configured in `config.qfq.ini`_.
The secure path needs to be protected against direct file access by the webmaster / webserver configuration.
The secure path needs to be protected against direct file access by the webmaster / webserver configuration
too
.
QFQ returns a HTML '
img
'
-tag
:
::
...
...
extension/qfq/qfq/report/Link.php
View file @
fe7f67a9
...
...
@@ -95,6 +95,8 @@ const NAME_RIGHT = 'picturePositionRight';
const
NAME_ACTION_DELETE
=
'actionDelete'
;
const
NAME_EXTRA_CONTENT_WRAP
=
'extraContentWrap'
;
const
NAME_FILE
=
'file'
;
const
NAME_THUMBNAIL
=
'thumbnail'
;
const
NAME_THUMBNAIL_DIMENSION
=
'thumbnailDimension'
;
const
FINAL_HREF
=
'finalHref'
;
const
FINAL_ANCHOR
=
'finalAnchor'
;
...
...
@@ -103,6 +105,7 @@ const FINAL_SYMBOL = 'finalSymbol';
const
FINAL_TOOL_TIP
=
'finalToolTip'
;
const
FINAL_CLASS
=
'finalClass'
;
const
FINAL_QUESTION
=
'finalQuestion'
;
const
FINAL_THUMBNAIL
=
'finalThumbnail'
;
const
LINK_ANCHOR
=
'linkAnchor'
;
const
LINK_PICTURE
=
'linkPicture'
;
...
...
@@ -139,6 +142,11 @@ class Link {
*/
private
$store
=
null
;
/**
* @var Thumbnail
*/
private
$thumbnail
=
null
;
private
$phpUnit
;
private
$renderControl
=
array
();
// private $linkClassSelector = array(TOKEN_CLASS_INTERNAL => "internal ", TOKEN_CLASS_EXTERNAL => "external ");
...
...
@@ -199,6 +207,8 @@ class Link {
TOKEN_ACTION_DELETE
=>
NAME_ACTION_DELETE
,
TOKEN_FILE
=>
NAME_FILE
,
TOKEN_FILE_DEPRECATED
=>
NAME_FILE
,
TOKEN_THUMBNAIL
=>
NAME_THUMBNAIL
,
TOKEN_THUMBNAIL_DIMENSION
=>
NAME_THUMBNAIL_DIMENSION
,
];
// Used to find double definitions.
...
...
@@ -552,57 +562,6 @@ class Link {
return
$vars
;
}
/**
* Verify Empty values. If appropriate, set defaults, if not throw an exception.
*
* @param string $key
* @param string $value
*
* @return string
* @throws UserReportException
*/
private
function
checkForEmptyValue
(
$key
,
$value
)
{
if
(
$value
!==
''
)
{
return
$value
;
}
$value
=
''
;
switch
(
$key
)
{
case
TOKEN_URL
:
case
TOKEN_MAIL
:
case
TOKEN_GLYPH
:
throw
new
UserReportException
(
"Missing value for token '
$key
'"
,
ERROR_MISSING_VALUE
);
break
;
case
TOKEN_PAGE
:
$value
=
$this
->
store
->
getVar
(
TYPO3_PAGE_ID
,
STORE_TYPO3
);
// If no pageid|pagealias is defined, take current page
break
;
case
TOKEN_RIGHT
:
$value
=
'r'
;
break
;
case
TOKEN_ENCRYPTION
:
$value
=
'1'
;
break
;
case
TOKEN_SIP
:
$value
=
'1'
;
break
;
case
TOKEN_BOOTSTRAP_BUTTON
:
$value
=
'1'
;
break
;
case
TOKEN_QUESTION
:
$value
=
DEFAULT_QUESTION_TEXT
;
break
;
case
TOKEN_RENDER
:
$value
=
DEFAULT_RENDER_MODE
;
break
;
case
TOKEN_ACTION_DELETE
:
$value
=
DEFAULT_ACTION_DELETE
;
break
;
default
:
}
return
$value
;
}
/**
* Cleans and make existing the standard vars used every time to render a link.
*
...
...
@@ -648,6 +607,7 @@ class Link {
FINAL_TOOL_TIP
=>
''
,
FINAL_CLASS
=>
''
,
FINAL_QUESTION
=>
''
,
FINAL_THUMBNAIL
=>
''
,
];
}
...
...
@@ -748,6 +708,7 @@ class Link {
$vars
[
FINAL_TOOL_TIP
]
=
$this
->
doToolTip
(
$vars
);
$vars
[
FINAL_CLASS
]
=
$this
->
doCssClass
(
$vars
);
$vars
[
FINAL_SYMBOL
]
=
$this
->
doSymbol
(
$vars
);
$vars
[
FINAL_THUMBNAIL
]
=
$this
->
doThumbnail
(
$vars
);
$vars
[
FINAL_CONTENT
]
=
$this
->
doContent
(
$vars
);
// must be called after doSymbol()
$vars
[
FINAL_QUESTION
]
=
$this
->
doQuestion
(
$vars
);
$vars
[
FINAL_ANCHOR
]
=
$this
->
doAnchor
(
$vars
);
...
...
@@ -974,29 +935,42 @@ class Link {
}
/**
* Concat Text
and/or Image and or Glyph. $vars[NAME_RIGHT_PICTURE_POSITION]
*
Concat Text and/or Image and or Glyph.
Depending of $vars[NAME_RIGHT_PICTURE_POSITION], swap
p
the position,
* Concat Text
, Image, Glyph and/or Thumbnail.
* Depending of $vars[NAME_RIGHT_PICTURE_POSITION], swap the position,
*
* @param array $vars
*
* @return string
*/
private
function
doContent
(
array
$vars
)
{
$arr
=
array
();
$htmlImage
=
$vars
[
FINAL_SYMBOL
];
// Compose Image & Text
if
(
$htmlImage
===
''
)
{
$content
=
$vars
[
NAME_TEXT
];
}
elseif
(
$vars
[
NAME_TEXT
]
===
''
)
{
$content
=
$htmlImage
;
}
else
{
if
(
$vars
[
NAME_RIGHT
]
===
"l"
)
{
$content
=
implode
(
' '
,
[
$htmlImage
,
$vars
[
NAME_TEXT
]]);
}
else
{
$content
=
implode
(
' '
,
[
$vars
[
NAME_TEXT
],
$htmlImage
]);
$order
=
(
$vars
[
NAME_RIGHT
]
===
"l"
)
?
[
FINAL_SYMBOL
,
FINAL_THUMBNAIL
,
NAME_TEXT
]
:
[
NAME_TEXT
,
FINAL_THUMBNAIL
,
FINAL_SYMBOL
];
foreach
(
$order
as
$key
)
{
if
(
!
empty
(
$vars
[
$key
]))
{
$arr
[]
=
$vars
[
$key
];
}
}
$content
=
implode
(
' '
,
$arr
);
// Compose Image & Text
// if ($htmlImage === '') {
// $content = $vars[NAME_TEXT];
// } elseif ($vars[NAME_TEXT] === '') {
// $content = $htmlImage;
// } else {
// if ($vars[NAME_RIGHT] === "l") {
// $content = implode(' ', [$htmlImage, $vars[NAME_TEXT]]);
// } else {
// $content = implode(' ', [$vars[NAME_TEXT], $htmlImage]);
// }
// }
// if ($vars[NAME_RIGHT] === "l") {
// $content = implode(' ', [$htmlImage, $vars[NAME_TEXT]]);
// } else {
// $content = implode(' ', [$vars[NAME_TEXT], $htmlImage]);
// }
if
(
$vars
[
NAME_EXTRA_CONTENT_WRAP
]
!=
''
)
{
$content
=
Support
::
wrapTag
(
$vars
[
NAME_EXTRA_CONTENT_WRAP
],
$content
);
...
...
@@ -1078,6 +1052,34 @@ EOF;
return
$anchor
;
}
/**
*
*
* @param array $vars
*
* @return string
* @throws UserReportException
*/
private
function
doThumbnail
(
array
$vars
)
{
if
(
empty
(
$vars
[
NAME_THUMBNAIL
]))
{
return
''
;
}
$arr
=
array
();
$arr
[]
=
TOKEN_THUMBNAIL
.
':'
.
$vars
[
NAME_THUMBNAIL
];
$arr
[]
=
TOKEN_THUMBNAIL_DIMENSION
.
':'
.
$vars
[
NAME_THUMBNAIL_DIMENSION
];
$arr
[]
=
TOKEN_SIP
.
':'
.
$vars
[
NAME_SIP
];
$str
=
implode
(
'|'
,
$arr
);
if
(
$this
->
thumbnail
===
null
)
{
$this
->
thumbnail
=
new
Thumbnail
();
}
return
$this
->
thumbnail
->
getImageTag
(
$str
);
}
/**
* Get mode from table $this->renderControl, depending on $modeRender, $modeUrl, $modeText
*
...
...
extension/qfq/qfq/report/Thumbnail.php
View file @
fe7f67a9
...
...
@@ -4,6 +4,8 @@
* User: crose
* Date: 2/10/18
* Time: 3:14 PM
*
* See: doc/THUMBNAIL.md
*/
namespace
qfq
;
...
...
@@ -39,6 +41,13 @@ class Thumbnail {
}
/**
* Renders a thumbnail based on $str.
* $str: "T:<pathfilename source>|W:<dimension>|s:<0|1>"
*
* Argument 'T' is mandatory.
* Argument 'W' is optional. Defaults to 'W:150x'.
* Argument 's' is optional. Defaults to 's:1'
*
* @param string $str
* @return string
*
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment