PHPackages                             porthd/simpledataedit - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. porthd/simpledataedit

AbandonedTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

porthd/simpledataedit
=====================

Simple frontend-editing with TYPO3

v10.0.1(5y ago)03GPL-2.0-or-laterPHP

Since Apr 5Pushed 5y ago1 watchersCompare

[ Source](https://github.com/porthd/simpledataedit)[ Packagist](https://packagist.org/packages/porthd/simpledataedit)[ Docs](https://www.mobger.de/ns-simpledataedit-typo3-extension/show/desk/)[ RSS](/packages/porthd-simpledataedit/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (3)Versions (4)Used By (0)

TYPO3 extension "simpledataedit"
================================

[](#typo3-extension-simpledataedit)

#### Prologue auxiliary sentence for scribes

[](#prologue-auxiliary-sentence-for-scribes)

A good newspaper article outlines the following motto of information needs in the first paragraph/sentence:

- Who does what with whom/with what when, where and how?
- The why in the second paragraph, like the 2nd law of thermodynamics, is always a matter of belief?
- Anyone who asks the wrong questions will always get one thing for sure: wrong answers! ( *I hope I haven't answered too many wrong descriptive questions here.* ;-)

Who does what with whom/with what, when, where and how?
-------------------------------------------------------

[](#who-does-what-with-whomwith-what-when-where-and-how)

The extension saves simple text changes in editable areas of the front end of the website directly in the database via Ajax/JavasScript, if the editor is logged into the backend at the same time and if the integrator has provided for this in the templates. In this way, the editor can make simple text changes directly in the frontend and enjoy your WYSIWYG feelings.

From a technical point of view, the extension only defines the sealing off of a single field in a specific database at a specific record using a generalized AJAX process. A hash value for each data record ensures that the change is always based on the text just seen before. Several editors cannot unknowingly (!) Overwrite each other's texts.

How does the editor work?
-------------------------

[](#how-does-the-editor-work)

1. The editor logs into the backend of the website.
2. He opens the frontend view of the website in a second tab of the browser.
3. The editable areas are highlighted in color.
4. If he gets an error message, the editor has to reload the frontend in the browser.

### Technical requirements?

[](#technical-requirements)

- a modern browser

### What is not working?

[](#what-is-not-working)

From CRUDE (Create, Read, Update, Delete, Edit), only RUE is currently limited.

1. In multi-domain setups, the BE\_TYPO3\_USER cookies are only used in the current domain in which the editor has logged in. If you want to change something in domain B, you have to be logged into the backend via domain B.
2. Formalized fields of the backend such as RTE fields, date fields or data embedded in f: translate cannot yet (!) Be edited.
3. Changing relations (pictures, similar messages, ...) is currently not supported.
4. The creation or deletion of data records is not supported.
5. Changing data in attributes or empty, undisplayed data fields.

### What could happen in the future?

[](#what-could-happen-in-the-future)

I hope for the community on the following two points:

1. Formalized fields make the editing process more complex. This should be able to be done with new editor classes. The extension allows the definition and integration of `Editor` classes.
2. Changing relations requires special methods in the front end and a generalized process in the back end. This should be able to be done with new editor classes. The extension allows the definition and integration of `Editor` classes.
3. Changing data in attributes or empty, undisplayed data fields This should be able to be done with new editor classes. The extension allows the definition and integration of `Editor` classes.

The other two points require a slight rethink on the part of the developers.

1. The creation and deletion of data records is not supported.
2. The creation and deletion of new relations to existing data records is not supported.
3. The creation and deletion of new relations to new data records to be created is not supported.

Why is it necessary to rethink? (I'm inferring from myself to others.) In the TYPO3 backend, a data record is only created when it is explicitly saved. This allows the data record to be edited before saving. With the concept presented here, on the other hand, you have to create a default data record. You probably have to reload the page to see all editable fields available. So you have to think more deeply than before, which data an initial data record must contain and anchor this not only in the TCA but also in the model.

What does the integrator have to do
-----------------------------------

[](#what-does-the-integrator-have-to-do)

Currently only trimmable plain text fields are supported. The integrator only has to enter the corresponding data fields with the Viewhhelper Include ``.

### Is there a sample code for integrators?

[](#is-there-a-sample-code-for-integrators)

In order to enable a trouble-free test in a live system and a classic form of extension upload, the extension has its own backend layout. In order to be able to use this for the test, the exemplary TypoScript must also be integrated.

The backend layout defines a test column with the ColPos value (7387). After activating the test TypoScript of this extension, a test page in the column (7387) made the `header` field editable in a special template for the TYPO3` text-only` content element. (see code *simpledataedit/Resources/Private/Templates/FluidElements/Text.html* )

### Customize styles

[](#customize-styles)

The path to the JavaScript is in the settings of the extension and given to the styles.

What is the working principle of the extension? How is the workflow?
--------------------------------------------------------------------

[](#what-is-the-working-principle-of-the-extension-how-is-the-workflow)

The working principle is simple. The Viewhelper stores all data for frontend editing in the frontend. With font rendering, the JavaScript functions of the editors are also rendered and the basic JavaScript libraries for the Ajax process are integrated. As soon as you leave a changed field (focusout), the Ajax process is started and processed in a middleware.

In the event of an error, the Ajax process writes an error message with a note on redirection. if successful, the new hash value is returned.

Parameters of the view helper
-----------------------------

[](#parameters-of-the-view-helper)

The basic viewhelper attributes are also available in ``.

ParametersTypeDefaultfunctioneditorstring*mandatory*Identifier for adapted editor processor classpidint*mandatory*Page ID where the content item is displayed.rawstring*mandatory*This contains the raw data. It is the basis for the hash value.Field nameString*mandatory*Name of the field in the model. It may be absent if a custom process uses a self-defined get and update process to get the data.uidint*mandatory*Number of the UID that specifies the line in the model through the UID field. It may be absent if a custom process uses a self-defined get and update process to get the data.TypeInt2Name of the type of value (int = 1, str = 2, bool = 5) for the field in the model. It may be absent if a custom process uses a self-defined get and update process to get the data.TableString'tt\_content'Name of the model. It may be absent if a custom process uses a self-defined get and update process to get the data.identnamestring'uid'Name of the ident field with which the line is specified in the model. It may be absent if a custom process uses a self-defined get and update process to get the data.paramListstring"\[\]"A list of arguments for custom parsing processes, in array format. It is converted to a JSON stringRolesString*undef*The comma-separated list of user groups with their UID and/or their title).alwaysboolfalseAlways allow front-end editing for everyone. The allowance must be released in the expansion configurationWhat can developers do
----------------------

[](#what-can-developers-do)

### Create your own editor

[](#create-your-own-editor)

An editor class must provide the functions of the interface `CustomEditorInterface`. The parameters are transferred via a `CustomEditorInfo` class, which is derived from the interface `CustomEditorInfoInterface`. It is currently not possible to override the `CustomEditorInfo` with a separate class.

### Example for editor class

[](#example-for-editor-class)

see in the code *simpledataedit/Classes/Editor/PlainTextEditor.php*

### Installation of the editor class in its own extension

[](#installation-of-the-editor-class-in-its-own-extension)

If you have defined your class *MyVendor\\MyExtension\\Editor\\MyEditor*, this must of course still be made known to the system. Define the following code block in your `ext_localconf.php`:

```
  /**
     * define your own editor-class, if you have special elements
     */
    $whoAmI = 'whoAmI';  // if i use the name directly, PHPStorm remarks it with a warning ;-(
    $listOfCustomEditorClasses = [
        \MyVendor\MyExtension\Editor\MyEditor::$whoAmI() =>
            \MyVendor\MyExtension\Editor\MyEditor::class,
    ];
    \Porthd\Simpledataedit\Utilities\ConfigurationUtility::mergeCustomGlobals(
        $listOfCustomEditorClasses
    );

```

The static method ensures that your class name is entered in $GLOBALS\['TYPO3\_CONF\_VARS'\]\['EXTCONF'\]\['simpledataedit'\]\['editor'\]\['editor'\] \['your-whoAmI-name'\]. To avoid the likelihood of unwanted overwrites, your whoAmI name should contain your vewndor name.

To do
-----

[](#to-do)

1. Cache for referenced pages and records. ( a big problem)
2. I have not yet understood how to set cross-domain cookies. Or how to simply implement an OAuth process. I will gladly accept suggestions with code examples.
3. It would be desirable if Simpledataedit would support the following
    - Date and time in datetime format
    - Date and time in UNIX timestamp format (integer)
    - comma numbers
    - Editing of data integrated in translate fields.
4. Generalized queries for creating/deleting/changing simple relations
5. Generalized queries for creating/deleting/changing MM relations
6. Deleting relations and creating new default objects

###  Health Score

24

—

LowBetter than 31% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 88.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

2

Last Release

1913d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e827f5a4a4d3aeae2a1434f1a9bb17c9dc6160fa3cb74e52bf7d35197f6996a1?d=identicon)[porthd](/maintainers/porthd)

---

Top Contributors

[![Padina42](https://avatars.githubusercontent.com/u/8037773?v=4)](https://github.com/Padina42 "Padina42 (8 commits)")[![porthd](https://avatars.githubusercontent.com/u/68189354?v=4)](https://github.com/porthd "porthd (1 commits)")

---

Tags

editingfrontendTYPO3 CMSFeedit

### Embed Badge

![Health badge](/badges/porthd-simpledataedit/health.svg)

```
[![Health](https://phpackages.com/badges/porthd-simpledataedit/health.svg)](https://phpackages.com/packages/porthd-simpledataedit)
```

###  Alternatives

[yoast-seo-for-typo3/yoast_seo

Yoast SEO for TYPO3

511.7M9](/packages/yoast-seo-for-typo3-yoast-seo)[pagemachine/typo3-formlog

Form log for TYPO3

23238.6k8](/packages/pagemachine-typo3-formlog)[eliashaeussler/typo3-form-consent

Extension for TYPO3 CMS that adds double opt-in functionality to EXT:form

1595.5k](/packages/eliashaeussler-typo3-form-consent)[web-vision/wv_deepltranslate

DeepL Translate (CORE) - This extension provides option to translate content element, and TCA record texts to DeepL supported languages.

33304.0k](/packages/web-vision-wv-deepltranslate)[web-vision/deepltranslate-core

DeepL Translate (CORE) - This extension provides option to translate content element, and TCA record texts to DeepL supported languages.

33142.5k8](/packages/web-vision-deepltranslate-core)[typo3/cms-install

TYPO3 CMS Install Tool - The Install Tool is used for installation, upgrade, system administration and setup tasks.

1812.3M495](/packages/typo3-cms-install)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
