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 4y 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 1mo ago

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

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity3

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity54

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

1867d 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

[bk2k/bootstrap-package

Bootstrap Package delivers a full configured frontend theme for TYPO3, based on the Bootstrap CSS Framework.

357891.4k72](/packages/bk2k-bootstrap-package)[yoast-seo-for-typo3/yoast_seo

Yoast SEO for TYPO3

521.6M9](/packages/yoast-seo-for-typo3-yoast-seo)[derhansen/sf_event_mgt

Configurable event management and registration extension based on ExtBase and Fluid

64313.9k6](/packages/derhansen-sf-event-mgt)[eliashaeussler/typo3-form-consent

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

1481.0k](/packages/eliashaeussler-typo3-form-consent)[brotkrueml/schema

Embedding schema.org vocabulary - API and view helpers for schema.org markup

33584.6k13](/packages/brotkrueml-schema)[ichhabrecht/mask-export

Export your mask elements as extension

45215.8k](/packages/ichhabrecht-mask-export)

PHPackages © 2026

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