Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
typo3
qfq
Commits
1d54e375
Commit
1d54e375
authored
Jan 30, 2019
by
Carsten Rose
Browse files
F7783: FormElement Code Annotation - first implementation - does not run.
parent
c6342699
Changes
2
Show whitespace changes
Inline
Side-by-side
extension/Source/core/AbstractBuildForm.php
View file @
1d54e375
...
...
@@ -3142,11 +3142,11 @@ abstract class AbstractBuildForm {
$html
=
$this
->
buildAnnotateGraphic
(
$formElement
,
$htmlFormElementName
,
$value
,
$json
,
$mode
);
break
;
case
FE_ANNOTATE_TYPE_
CODE
:
case
FE_ANNOTATE_TYPE_
TEXT
:
$html
=
$this
->
buildAnnotateCode
(
$formElement
,
$htmlFormElementName
,
$value
,
$json
,
$mode
);
break
;
default
:
throw
new
UserFormException
(
"Unkown "
.
FE_ANNOTATE_TYPE
.
"
type
: '"
.
$formElement
[
FE_ANNOTATE_TYPE
]
.
"'"
,
ERROR_UNKNOWN_MODE
);
throw
new
UserFormException
(
"Unkown "
.
FE_ANNOTATE_TYPE
.
": '"
.
$formElement
[
FE_ANNOTATE_TYPE
]
.
"'"
,
ERROR_UNKNOWN_MODE
);
}
return
$html
;
}
...
...
@@ -3164,37 +3164,38 @@ abstract class AbstractBuildForm {
private
function
buildAnnotateCode
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
//TODO: implement code annotation if there i s no file, but text, save in a specific column
if
(
$mode
==
FORM_LOAD
&&
!
empty
(
$formElement
[
FE_IMAGE_SOURCE
]))
{
if
(
!
is_readable
(
$formElement
[
FE_IMAGE_SOURCE
]))
{
throw
new
UserFormException
(
"Error reading file: "
.
$formElement
[
FE_IMAGE_SOURCE
],
ERROR_IO_READ_FILE
);
if
(
!
isset
(
$formElement
[
FE_TEXT_SOURCE
]))
{
throw
new
UserFormException
(
"Missing parameter '"
.
FE_TEXT_SOURCE
.
"'"
,
ERROR_IO_READ_FILE
);
}
if
(
$formElement
[
FE_TEXT_SOURCE
]
!=
''
&&
!
is_readable
(
$formElement
[
FE_TEXT_SOURCE
]))
{
throw
new
UserFormException
(
"Error reading file: "
.
$formElement
[
FE_TEXT_SOURCE
],
ERROR_IO_READ_FILE
);
}
if
(
!
empty
(
$value
)
&&
json_decode
(
$value
)
===
null
)
{
throw
new
UserFormException
(
"Annotate data: JSON structure not valid"
,
ERROR_BROKEN_JSON_STRUCTURE
);
}
Support
::
setIfNotSet
(
$formElement
,
FE_ANNOTATE_USER_UID
);
Support
::
setIfNotSet
(
$formElement
,
FE_ANNOTATE_USER_NAME
);
Support
::
setIfNotSet
(
$formElement
,
FE_ANNOTATE_USER_NAME
);
// <div class="codeCorrection" data-uid='{"uid": 1, "name": "Reginald Commenter", "avatar": "http://www"}' data-file="../javascript/src/CodeCorrection.js" data-target="codeCorrection-output1">
// </div>
// <input id="codeCorrection-output1" name="correction-data" type="hidden"
// value=
$jsonDataUid
=
json_encode
([
FE_ANNOTATE_USER_UID
=>
$formElement
[
FE_ANNOTATE_USER_UID
],
FE_ANNOTATE_USER_NAME
=>
$formElement
[
FE_ANNOTATE_USER_NAME
],
FE_ANNOTATE_USER_AVATAR
=>
$formElement
[
FE_ANNOTATE_USER_AVATAR
]]);
// value='{ ... }'>
$jsonDataUid
=
json_encode
([
'uid'
=>
$formElement
[
FE_ANNOTATE_USER_UID
]
,
'name'
=>
$formElement
[
FE_ANNOTATE_USER_NAME
]
,
'avatar'
=>
$formElement
[
FE_ANNOTATE_USER_AVATAR
]],
JSON_UNESCAPED_SLASHES
);
$attributeFabric
=
Support
::
doAttribute
(
'class'
,
ANNOTATE_TEXT_CSS_CLASS
);
$attributeFabric
.
=
Support
::
doAttribute
(
'data-uid'
,
$jsonDataUid
);
$attributeFabric
.
=
Support
::
doAttribute
(
'data-file'
,
$this
->
fileToSipUrl
(
$formElement
[
FE_IMAGE_SOURCE
]));
$attributeFabric
.
=
Support
::
doAttribute
(
'data-background-image'
,
$this
->
fileToSipUrl
(
$formElement
[
FE_IMAGE_SOURCE
]));
$attributeFabric
.
=
Support
::
doAttribute
(
'data-control-name'
,
$formElement
[
FE_HTML_ID
]);
$attributeFabric
.
=
Support
::
doAttribute
(
'data-buttons'
,
'typo3conf/ext/qfq/Resources/Public/Json/fabric.buttons.json'
);
$attributeFabric
.
=
Support
::
doAttribute
(
'data-emojis'
,
'typo3conf/ext/qfq/Resources/Public/Json/qfq.emoji.json'
);
$attributeFabric
.
=
Support
::
doAttribute
(
'data-fabric-color'
,
HelperFormElement
::
penColorToHex
(
$formElement
));
$attributeFabric
.
=
$this
->
getAttributeFeMode
(
$formElement
[
FE_MODE
]);
$htmlFabric
=
Support
::
wrapTag
(
'<div '
.
$attributeFabric
.
' >'
,
''
,
false
);
$attributeDiv
=
Support
::
doAttribute
(
'class'
,
ANNOTATE_TEXT_CSS_CLASS
);
// $attributeDiv .= Support::doAttribute('data-uid', $jsonDataUid, true,ESCAPE_WITH_BACKSLASH);
$attributeDiv
.
=
Support
::
doAttribute
(
'data-file'
,
$this
->
fileToSipUrl
(
$formElement
[
FE_TEXT_SOURCE
]));
$attributeDiv
.
=
Support
::
doAttribute
(
'data-target'
,
$formElement
[
FE_HTML_ID
]);
$attributeDiv
.
=
$this
->
getAttributeFeMode
(
$formElement
[
FE_MODE
]);
$htmlAnnotate
=
Support
::
wrapTag
(
'<div '
.
$attributeDiv
.
' data-uid=\''
.
$jsonDataUid
.
'\' >'
,
''
,
false
);
// $htmlAnnotate = Support::wrapTag('<div ' . $attributeDiv .'>', '', false);
$attributeInput
=
Support
::
doAttribute
(
'id'
,
$formElement
[
FE_HTML_ID
]);
$attributeInput
.
=
Support
::
doAttribute
(
'name'
,
$htmlFormElementName
);
...
...
@@ -3204,7 +3205,7 @@ abstract class AbstractBuildForm {
$htmlInput
=
Support
::
wrapTag
(
'<input '
.
$attributeInput
.
' >'
,
''
,
false
);
$html
=
$html
Fabric
.
$htmlInput
.
$this
->
getHelpBlock
();
$html
=
$html
Annotate
.
$htmlInput
.
$this
->
getHelpBlock
();
// $json = $this->getFormElementForJson($htmlFormElementName, $value, $formElement);
...
...
@@ -3226,8 +3227,12 @@ abstract class AbstractBuildForm {
*/
private
function
buildAnnotateGraphic
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
if
(
$mode
==
FORM_LOAD
&&
!
empty
(
$formElement
[
FE_IMAGE_SOURCE
]))
{
if
(
!
is_readable
(
$formElement
[
FE_IMAGE_SOURCE
]))
{
if
(
$mode
==
FORM_LOAD
)
{
if
(
!
isset
(
$formElement
[
FE_IMAGE_SOURCE
]))
{
throw
new
UserFormException
(
"Missing parameter '"
.
FE_IMAGE_SOURCE
.
"'"
,
ERROR_IO_READ_FILE
);
}
if
(
$formElement
[
FE_IMAGE_SOURCE
]
!=
''
&&
!
is_readable
(
$formElement
[
FE_IMAGE_SOURCE
]))
{
throw
new
UserFormException
(
"Error reading file: "
.
$formElement
[
FE_IMAGE_SOURCE
],
ERROR_IO_READ_FILE
);
}
}
...
...
@@ -3280,7 +3285,8 @@ abstract class AbstractBuildForm {
* @throws CodeException
* @throws UserFormException
*/
public
function
buildImageCut
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
public
function
buildImageCut
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
$htmlImage
=
''
;
if
(
$mode
==
FORM_LOAD
&&
!
empty
(
$formElement
[
FE_IMAGE_SOURCE
]))
{
...
...
@@ -3350,7 +3356,8 @@ abstract class AbstractBuildForm {
* @throws CodeException
* @throws UserFormException
*/
private
function
fileToSipUrl
(
$pathFileName
)
{
private
function
fileToSipUrl
(
$pathFileName
)
{
$param
[
DOWNLOAD_MODE
]
=
DOWNLOAD_MODE_FILE
;
$param
[
SIP_DOWNLOAD_PARAMETER
]
=
base64_encode
(
TOKEN_FILE
.
PARAM_TOKEN_DELIMITER
.
$pathFileName
);
...
...
@@ -3376,7 +3383,8 @@ abstract class AbstractBuildForm {
* @throws UserFormException
* @throws UserReportException
*/
public
function
buildDateTime
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
public
function
buildDateTime
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
$attribute
=
''
;
$placeholder
=
''
;
...
...
@@ -3498,7 +3506,8 @@ abstract class AbstractBuildForm {
* @throws CodeException
* @throws UserFormException
*/
public
function
buildDateJQW
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
public
function
buildDateJQW
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
$arrMinMax
=
null
;
// if ($formElement[FE_PLACEHOLDER] == '') {
...
...
@@ -3583,7 +3592,8 @@ abstract class AbstractBuildForm {
* @throws UserFormException
* @throws UserReportException
*/
public
function
buildEditor
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
public
function
buildEditor
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
$attribute
=
''
;
//TODO plugin autoresize nutzen um Editorgroesse anzugeben
...
...
@@ -3626,7 +3636,8 @@ abstract class AbstractBuildForm {
*
* @return array
*/
private
function
setEditorConfig
(
array
$formElement
,
$htmlFormElementName
)
{
private
function
setEditorConfig
(
array
$formElement
,
$htmlFormElementName
)
{
$flagMaxHeight
=
false
;
// plugins
...
...
@@ -3681,7 +3692,8 @@ abstract class AbstractBuildForm {
* @return string
* @throws \qfq\UserFormException
*/
private
function
getPrefixedElementsAsJSON
(
$prefix
,
array
$formElement
)
{
private
function
getPrefixedElementsAsJSON
(
$prefix
,
array
$formElement
)
{
$settings
=
array
();
// E.g.: $key = editor-plugins
...
...
@@ -3718,7 +3730,8 @@ abstract class AbstractBuildForm {
*
* @throws UserFormException
*/
public
function
buildGridJQW
(
array
$formElement
,
$htmlFormElementName
,
$value
,
$fake
,
$mode
=
FORM_LOAD
)
{
public
function
buildGridJQW
(
array
$formElement
,
$htmlFormElementName
,
$value
,
$fake
,
$mode
=
FORM_LOAD
)
{
// TODO: implement
throw
new
UserFormException
(
"Not implemented yet: buildGridJQW()"
,
ERROR_NOT_IMPLEMENTED
);
}
...
...
@@ -3736,7 +3749,8 @@ abstract class AbstractBuildForm {
* @throws CodeException
* @throws UserFormException
*/
public
function
buildNote
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
public
function
buildNote
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
$json
=
$this
->
getFormElementForJson
(
$htmlFormElementName
,
$value
,
$formElement
);
...
...
@@ -3756,7 +3770,8 @@ abstract class AbstractBuildForm {
*
* @return mixed
*/
public
function
buildPill
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
)
{
public
function
buildPill
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
)
{
return
$value
;
}
...
...
@@ -3779,7 +3794,8 @@ abstract class AbstractBuildForm {
* @throws \PhpOffice\PhpSpreadsheet\Reader\Exception
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
*/
public
function
buildFieldset
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
public
function
buildFieldset
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
$attribute
=
''
;
// save parent processed FE's
...
...
@@ -3823,7 +3839,8 @@ abstract class AbstractBuildForm {
*
* @return array
*/
private
function
fillFeSpecNativeCheckboxWithTgMax
(
array
$formElementArr
,
$tgMaxCopies
)
{
private
function
fillFeSpecNativeCheckboxWithTgMax
(
array
$formElementArr
,
$tgMaxCopies
)
{
foreach
(
$formElementArr
as
$key
=>
$formElement
)
{
if
(
$formElement
[
FE_TYPE
]
==
FE_TYPE_CHECKBOX
)
{
...
...
@@ -3854,7 +3871,8 @@ abstract class AbstractBuildForm {
* @throws \PhpOffice\PhpSpreadsheet\Reader\Exception
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
*/
public
function
buildTemplateGroup
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
public
function
buildTemplateGroup
(
array
$formElement
,
$htmlFormElementName
,
$value
,
array
&
$json
,
$mode
=
FORM_LOAD
)
{
$attribute
=
''
;
$html
=
''
;
...
...
@@ -3977,7 +3995,8 @@ EOT;
* @throws \PhpOffice\PhpSpreadsheet\Reader\Exception
* @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
*/
private
function
templateGroupCollectFilledElements
(
$max
,
$htmlDelete
,
array
&
$json
)
{
private
function
templateGroupCollectFilledElements
(
$max
,
$htmlDelete
,
array
&
$json
)
{
$record
=
$this
->
store
->
getStore
(
STORE_RECORD
);
// current values
if
(
$record
===
false
||
count
(
$record
)
===
0
)
{
...
...
@@ -4063,7 +4082,8 @@ EOT;
* @throws UserFormException
* @throws UserReportException
*/
private
function
templateGroupDoValue
()
{
private
function
templateGroupDoValue
()
{
// Fire 'value' statement
$tgMax
=
0
;
...
...
extension/Source/core/Constants.php
View file @
1d54e375
...
...
@@ -1076,7 +1076,7 @@ const FE_IMAGE_SOURCE = 'imageSource'; // Image source for a fabric element
const
FE_DEFAULT_PEN_COLOR
=
'defaultPenColor'
;
// Default pen color for a fabric element
const
FE_ANNOTATE_TYPE
=
'annotateType'
;
// Annotate type: graphic|code
const
FE_ANNOTATE_TYPE_GRAPHIC
=
'graphic'
;
const
FE_ANNOTATE_TYPE_
CODE
=
'code
'
;
const
FE_ANNOTATE_TYPE_
TEXT
=
'text
'
;
const
FE_ANNOTATE_USER_NAME
=
'annotateUserName'
;
const
FE_ANNOTATE_USER_UID
=
'annotateUserUid'
;
const
FE_ANNOTATE_USER_AVATAR
=
'annotateUserAvatar'
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a 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